From 33cc97022c22336d56b8875d041b55877199e9e7 Mon Sep 17 00:00:00 2001 From: Cyril Brulebois Date: Mon, 20 Jun 2011 01:53:48 +0200 Subject: Import upstream release 1.11.2 --- AUTHORS | 1 + ChangeLog | 47876 ++----------------- ChangeLog.pre-1.10 | 44510 +++++++++++++++++ NEWS | 48 + README | 2 +- boilerplate/cairo-boilerplate-pdf.c | 6 +- boilerplate/cairo-boilerplate-ps.c | 6 +- boilerplate/cairo-boilerplate-svg.c | 6 +- boilerplate/cairo-boilerplate-xcb.c | 100 +- boilerplate/cairo-boilerplate.h | 3 +- build/Makefile.am.gtk-doc | 11 +- build/configure.ac.features | 1 - build/configure.ac.warnings | 4 +- cairo-version.h | 2 +- configure | 197 +- configure.ac | 23 +- doc/public/Makefile.am | 1 - doc/public/Makefile.in | 512 +- doc/public/cairo-sections.txt | 14 + doc/public/html/bindings-patterns.html | 13 + doc/public/html/bindings-streams.html | 2 +- doc/public/html/cairo-Error-handling.html | 9 + doc/public/html/cairo-Image-Surfaces.html | 6 + doc/public/html/cairo-PNG-Support.html | 9 + doc/public/html/cairo-Paths.html | 19 +- doc/public/html/cairo-PostScript-Surfaces.html | 37 +- doc/public/html/cairo-Quartz-Surfaces.html | 8 + doc/public/html/cairo-Recording-Surfaces.html | 2 +- doc/public/html/cairo-Version-Information.html | 4 +- doc/public/html/cairo-Win32-Surfaces.html | 9 +- doc/public/html/cairo-cairo-device-t.html | 8 +- doc/public/html/cairo-cairo-font-face-t.html | 11 +- doc/public/html/cairo-cairo-font-options-t.html | 6 +- doc/public/html/cairo-cairo-pattern-t.html | 874 +- doc/public/html/cairo-cairo-surface-t.html | 22 +- doc/public/html/cairo-cairo-t.html | 10 +- doc/public/html/cairo.devhelp | 18 +- doc/public/html/cairo.devhelp2 | 20 +- doc/public/html/index-all.html | 28 + doc/public/html/index.html | 2 +- doc/public/html/index.sgml | 16 + doc/public/language-bindings.xml | 15 +- doc/public/tmpl/cairo-font-face.sgml | 2 + doc/public/tmpl/cairo-font-options.sgml | 2 + doc/public/tmpl/cairo-ft.sgml | 2 + doc/public/tmpl/cairo-image.sgml | 2 + doc/public/tmpl/cairo-matrix.sgml | 2 + doc/public/tmpl/cairo-paths.sgml | 2 + doc/public/tmpl/cairo-pattern.sgml | 146 + doc/public/tmpl/cairo-pdf.sgml | 2 + doc/public/tmpl/cairo-png.sgml | 2 + doc/public/tmpl/cairo-ps.sgml | 2 + doc/public/tmpl/cairo-quartz-fonts.sgml | 2 + doc/public/tmpl/cairo-quartz.sgml | 2 + doc/public/tmpl/cairo-recording.sgml | 2 - doc/public/tmpl/cairo-scaled-font.sgml | 2 + doc/public/tmpl/cairo-status.sgml | 3 + doc/public/tmpl/cairo-surface.sgml | 9 + doc/public/tmpl/cairo-svg.sgml | 2 + doc/public/tmpl/cairo-text.sgml | 2 + doc/public/tmpl/cairo-transforms.sgml | 2 + doc/public/tmpl/cairo-types.sgml | 2 + doc/public/tmpl/cairo-user-fonts.sgml | 2 + doc/public/tmpl/cairo-version.sgml | 2 + doc/public/tmpl/cairo-win32-fonts.sgml | 2 + doc/public/tmpl/cairo-win32.sgml | 2 + doc/public/tmpl/cairo-xlib-xrender.sgml | 2 + doc/public/tmpl/cairo-xlib.sgml | 2 + doc/public/tmpl/cairo.sgml | 2 + doc/public/version.xml | 2 +- doc/public/xml/api-index-1.12.xml | 22 + doc/public/xml/api-index-full.xml | 14 + doc/public/xml/cairo-device.xml | 8 +- doc/public/xml/cairo-font-face.xml | 11 +- doc/public/xml/cairo-font-options.xml | 6 +- doc/public/xml/cairo-image.xml | 6 + doc/public/xml/cairo-paths.xml | 19 +- doc/public/xml/cairo-pattern.xml | 691 +- doc/public/xml/cairo-png.xml | 9 + doc/public/xml/cairo-ps.xml | 37 +- doc/public/xml/cairo-quartz.xml | 8 + doc/public/xml/cairo-recording.xml | 2 +- doc/public/xml/cairo-status.xml | 9 + doc/public/xml/cairo-surface.xml | 19 +- doc/public/xml/cairo-win32.xml | 9 +- doc/public/xml/cairo.xml | 10 +- perf/cairo-perf-trace.c | 5 + perf/cairo-perf.h | 1 + src/Makefile.am | 2 - src/Makefile.in | 736 +- src/Makefile.sources | 22 +- src/cairo-arc.c | 11 +- src/cairo-array.c | 129 +- src/cairo-bentley-ottmann.c | 3 +- src/cairo-box-private.h | 75 + src/cairo-cff-subset.c | 788 +- src/cairo-clip.c | 29 +- src/cairo-debug.c | 5 +- src/cairo-device.c | 1 + src/cairo-egl-context.c | 6 + src/cairo-font-face.c | 6 +- src/cairo-font-options.c | 51 +- src/cairo-ft-font.c | 29 +- src/cairo-gl-composite.c | 280 +- src/cairo-gl-device.c | 105 +- src/cairo-gl-dispatch-private.h | 99 + src/cairo-gl-dispatch.c | 145 + src/cairo-gl-ext-def-private.h | 99 + src/cairo-gl-gradient-private.h | 5 +- src/cairo-gl-gradient.c | 14 +- src/cairo-gl-info.c | 71 + src/cairo-gl-private.h | 101 +- src/cairo-gl-shaders.c | 475 +- src/cairo-gl-surface.c | 27 +- src/cairo-glx-context.c | 7 + src/cairo-gstate-private.h | 5 +- src/cairo-gstate.c | 77 +- src/cairo-image-surface.c | 318 +- src/cairo-matrix.c | 315 +- src/cairo-mesh-pattern-rasterizer.c | 937 + src/cairo-misc.c | 2 + src/cairo-mutex-list-private.h | 4 + src/cairo-path-bounds.c | 251 +- src/cairo-path-fill.c | 116 +- src/cairo-path-fixed-private.h | 50 +- src/cairo-path-fixed.c | 553 +- src/cairo-path-in-fill.c | 3 +- src/cairo-path-stroke.c | 15 +- src/cairo-path.c | 22 - src/cairo-pattern.c | 2523 +- src/cairo-pdf-operators-private.h | 1 + src/cairo-pdf-operators.c | 268 +- src/cairo-pdf-shading-private.h | 99 + src/cairo-pdf-shading.c | 277 + src/cairo-pdf-surface-private.h | 3 + src/cairo-pdf-surface.c | 1247 +- src/cairo-png.c | 8 + src/cairo-polygon.c | 105 +- src/cairo-ps-surface.c | 502 +- src/cairo-qt-surface.cpp | 39 +- src/cairo-quartz-font.c | 39 +- src/cairo-quartz-private.h | 22 +- src/cairo-quartz-surface.c | 2253 +- src/cairo-recording-surface.c | 48 +- src/cairo-rectangle.c | 57 +- src/cairo-region.c | 1 + src/cairo-scaled-font-subsets-private.h | 80 +- src/cairo-scaled-font-subsets.c | 369 +- src/cairo-scaled-font.c | 15 +- src/cairo-script-surface.c | 120 +- src/cairo-skia-surface.cpp | 9 +- src/cairo-spans.c | 2 + src/cairo-surface-fallback.c | 12 +- src/cairo-surface-wrapper.c | 12 - src/cairo-surface.c | 272 +- src/cairo-svg-surface.c | 48 +- src/cairo-tee-surface.c | 3 - src/cairo-truetype-subset-private.h | 13 + src/cairo-truetype-subset.c | 199 +- src/cairo-type1-fallback.c | 32 +- src/cairo-type1-glyph-names.c | 410 + src/cairo-type1-subset.c | 225 +- src/cairo-types-private.h | 79 +- src/cairo-vg-surface.c | 20 +- src/cairo-wgl-context.c | 9 +- src/cairo-win32-font.c | 195 +- src/cairo-win32-printing-surface.c | 172 +- src/cairo-win32-private.h | 11 + src/cairo-win32-surface.c | 64 +- src/cairo-xcb-connection-core.c | 336 +- src/cairo-xcb-connection-render.c | 716 +- src/cairo-xcb-connection-shm.c | 103 +- src/cairo-xcb-connection.c | 50 +- src/cairo-xcb-private.h | 27 +- src/cairo-xcb-screen.c | 4 + src/cairo-xcb-shm.c | 114 +- src/cairo-xcb-surface-core.c | 36 +- src/cairo-xcb-surface-render.c | 674 +- src/cairo-xcb-surface.c | 69 +- src/cairo-xlib-screen.c | 1 + src/cairo-xlib-surface.c | 150 +- src/cairo-xml-surface.c | 17 +- src/cairo.c | 93 +- src/cairo.h | 105 +- src/cairoint.h | 263 +- src/drm/cairo-drm-i915-shader.c | 28 +- src/drm/cairo-drm-i915-surface.c | 12 +- src/drm/cairo-drm-i965-shader.c | 28 +- src/drm/cairo-drm-i965-surface.c | 12 +- src/drm/cairo-drm-intel-private.h | 10 - src/drm/cairo-drm-intel.c | 210 +- src/glew/GL/glew.h | 12255 ----- src/glew/GL/glxew.h | 1399 - src/glew/LICENSE.txt | 73 - src/glew/glew.c | 12189 ----- test/Makefile.am | 169 +- test/Makefile.in | 628 +- test/Makefile.sources | 18 +- test/Makefile.win32 | 13 +- test/README | 2 +- test/a1-bug.quartz.xfail.png | Bin 0 -> 3195 bytes test/a1-image-sample.quartz.xfail.png | Bin 972 -> 0 bytes test/a1-mask-sample.quartz.xfail.png | Bin 972 -> 0 bytes test/a1-rasterisation-rectangles.quartz.xfail.png | Bin 0 -> 2583 bytes test/a1-rasterisation-triangles.quartz.xfail.png | Bin 0 -> 2583 bytes test/a8-clear.quartz.ref.png | Bin 0 -> 244 bytes test/aliasing.quartz.ref.png | Bin 0 -> 108801 bytes test/arc-infinite-loop.c | 61 + test/arc-infinite-loop.ref.png | Bin 0 -> 96 bytes test/arc-looping-dash.c | 77 + test/arc-looping-dash.image16.ref.png | Bin 0 -> 450 bytes test/arc-looping-dash.ps.ref.png | Bin 0 -> 377 bytes test/arc-looping-dash.quartz.ref.png | Bin 0 -> 470 bytes test/arc-looping-dash.ref.png | Bin 0 -> 464 bytes test/cairo-test-constructors.c | 36 +- test/cairo-test-runner.c | 13 + test/clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin 3366 -> 3382 bytes test/clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2941 bytes test/clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin 3366 -> 3382 bytes test/clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2941 bytes test/clip-operator.pdf.argb32.ref.png | Bin 9437 -> 8792 bytes test/clip-operator.pdf.rgb24.ref.png | Bin 5391 -> 4683 bytes test/clip-operator.quartz.argb32.ref.png | Bin 9586 -> 9672 bytes test/clip-operator.quartz.rgb24.ref.png | Bin 4104 -> 4343 bytes test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 3362 -> 3290 bytes test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2840 bytes test/extended-blend-alpha.quartz.argb32.ref.png | Bin 0 -> 9729 bytes test/extended-blend-alpha.quartz.rgb24.ref.png | Bin 0 -> 5598 bytes test/extended-blend.quartz.argb32.ref.png | Bin 0 -> 4284 bytes test/extended-blend.quartz.rgb24.ref.png | Bin 0 -> 3965 bytes test/fallback-resolution.c | 30 +- test/fallback-resolution.ppi144x144.ps.ref.png | Bin 0 -> 5911 bytes test/fallback-resolution.ppi144x144.ref.png | Bin 0 -> 8697 bytes test/fallback-resolution.ppi144x72.ps.ref.png | Bin 0 -> 7206 bytes test/fallback-resolution.ppi144x72.ref.png | Bin 0 -> 8445 bytes test/fallback-resolution.ppi150x150.ref.png | Bin 8058 -> 0 bytes test/fallback-resolution.ppi150x72.ref.png | Bin 8303 -> 0 bytes test/fallback-resolution.ppi288x288.pdf.ref.png | Bin 0 -> 8681 bytes test/fallback-resolution.ppi288x288.ps.ref.png | Bin 0 -> 4450 bytes test/fallback-resolution.ppi288x288.svg.ref.png | Bin 0 -> 5771 bytes test/fallback-resolution.ppi288x72.ps.ref.png | Bin 0 -> 6444 bytes test/fallback-resolution.ppi288x72.ref.png | Bin 0 -> 7166 bytes test/fallback-resolution.ppi300x300.ref.png | Bin 5639 -> 0 bytes test/fallback-resolution.ppi300x72.ref.png | Bin 7014 -> 0 bytes test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 14092 -> 0 bytes test/fallback-resolution.ppi37.5x72.ref.png | Bin 12906 -> 0 bytes test/fallback-resolution.ppi576x576.pdf.ref.png | Bin 0 -> 8732 bytes test/fallback-resolution.ppi576x576.ps.ref.png | Bin 0 -> 3448 bytes test/fallback-resolution.ppi576x576.svg.ref.png | Bin 0 -> 4317 bytes test/fallback-resolution.ppi576x72.ps.ref.png | Bin 0 -> 5992 bytes test/fallback-resolution.ppi576x72.ref.png | Bin 0 -> 6432 bytes test/fallback-resolution.ppi600x600.ref.png | Bin 4090 -> 0 bytes test/fallback-resolution.ppi600x72.ref.png | Bin 6326 -> 0 bytes test/fallback-resolution.ppi72x144.ps.ref.png | Bin 0 -> 7270 bytes test/fallback-resolution.ppi72x144.ref.png | Bin 0 -> 8677 bytes test/fallback-resolution.ppi72x150.ref.png | Bin 8061 -> 0 bytes test/fallback-resolution.ppi72x288.ps.ref.png | Bin 0 -> 6616 bytes test/fallback-resolution.ppi72x288.ref.png | Bin 0 -> 7231 bytes test/fallback-resolution.ppi72x300.ref.png | Bin 6911 -> 0 bytes test/fallback-resolution.ppi72x37.5.ref.png | Bin 13167 -> 0 bytes test/fallback-resolution.ppi72x576.ps.ref.png | Bin 0 -> 6349 bytes test/fallback-resolution.ppi72x576.ref.png | Bin 0 -> 6523 bytes test/fallback-resolution.ppi72x600.ref.png | Bin 6214 -> 0 bytes test/fallback-resolution.ppi72x72.ref.png | Bin 8416 -> 8510 bytes test/fallback-resolution.ppi72x75.ref.png | Bin 10620 -> 0 bytes test/fallback-resolution.ppi75x72.ref.png | Bin 10119 -> 0 bytes test/fallback-resolution.ppi75x75.ref.png | Bin 12127 -> 0 bytes test/filter-nearest-offset.quartz.xfail.png | Bin 2130 -> 0 bytes test/filter-nearest-transformed.quartz.xfail.png | Bin 534 -> 349 bytes test/ft-show-glyphs-positioning.pdf.ref.png | Bin 3133 -> 3117 bytes test/get-path-extents.c | 3 +- test/group-state.c | 96 + test/huge-linear.c | 2 +- test/huge-linear.image16.ref.png | Bin 1542 -> 1542 bytes test/huge-linear.pdf.ref.png | Bin 1577 -> 1586 bytes test/huge-linear.quartz.ref.png | Bin 0 -> 15230 bytes test/huge-radial.c | 2 +- test/index.html | 42 + test/large-source-roi.c | 4 +- test/linear-gradient-large.quartz.ref.png | Bin 0 -> 4074 bytes test/linear-gradient-large.ref.png | Bin 4079 -> 4076 bytes test/linear-gradient-subset.quartz.ref.png | Bin 887 -> 852 bytes test/linear-gradient.quartz.ref.png | Bin 1060 -> 951 bytes test/make-html.pl | 303 - test/mask.quartz.argb32.ref.png | Bin 10575 -> 10669 bytes test/mesh-pattern-accuracy.c | 99 + test/mesh-pattern-accuracy.image16.ref.png | Bin 0 -> 7209 bytes test/mesh-pattern-accuracy.ref.png | Bin 0 -> 8086 bytes test/mesh-pattern-conical.c | 135 + test/mesh-pattern-conical.image16.ref.png | Bin 0 -> 6141 bytes test/mesh-pattern-conical.ref.png | Bin 0 -> 8655 bytes test/mesh-pattern-control-points.c | 114 + test/mesh-pattern-control-points.image16.ref.png | Bin 0 -> 7178 bytes test/mesh-pattern-control-points.ref.png | Bin 0 -> 10665 bytes test/mesh-pattern-fold.c | 82 + test/mesh-pattern-fold.image16.ref.png | Bin 0 -> 22913 bytes test/mesh-pattern-fold.ref.png | Bin 0 -> 52980 bytes test/mesh-pattern-overlap.c | 76 + test/mesh-pattern-overlap.image16.ref.png | Bin 0 -> 5933 bytes test/mesh-pattern-overlap.ref.png | Bin 0 -> 9129 bytes test/mesh-pattern-transformed.c | 107 + test/mesh-pattern-transformed.image16.ref.png | Bin 0 -> 9778 bytes test/mesh-pattern-transformed.ref.png | Bin 0 -> 14463 bytes test/mesh-pattern.c | 94 + test/mesh-pattern.image16.ref.png | Bin 0 -> 12199 bytes test/mesh-pattern.ref.png | Bin 0 -> 19566 bytes test/operator-alpha-alpha.c | 4 +- test/operator-source.quartz.argb32.ref.png | Bin 4754 -> 4936 bytes test/operator-source.quartz.rgb24.ref.png | Bin 3535 -> 3771 bytes test/overlapping-glyphs.quartz.argb32.ref.png | Bin 0 -> 2824 bytes test/overlapping-glyphs.quartz.rgb24.ref.png | Bin 0 -> 1711 bytes test/partial-clip-text.quartz.ref.png | Bin 0 -> 174 bytes test/pattern-get-type.c | 7 +- test/pattern-getters.c | 82 + test/ps-eps.c | 338 +- test/ps-eps.ref.png | Bin 0 -> 4584 bytes test/pthread-same-source.quartz.xfail.png | Bin 957 -> 961 bytes test/pthread-show-text.quartz.ref.png | Bin 42996 -> 43005 bytes test/push-group-color.ps2.ref.png | Bin 0 -> 2863 bytes test/radial-gradient-extend.ps3.ref.png | Bin 0 -> 458 bytes test/radial-gradient-mask-source.argb32.ref.png | Bin 116311 -> 145713 bytes test/radial-gradient-mask-source.c | 111 - test/radial-gradient-mask-source.image16.ref.png | Bin 82800 -> 109925 bytes ...dial-gradient-mask-source.quartz.argb32.ref.png | Bin 0 -> 171002 bytes ...adial-gradient-mask-source.quartz.rgb24.ref.png | Bin 0 -> 179120 bytes test/radial-gradient-mask-source.rgb24.ref.png | Bin 129093 -> 150945 bytes ...radial-gradient-mask-source.xlib.argb32.ref.png | Bin 0 -> 145801 bytes .../radial-gradient-mask-source.xlib.rgb24.ref.png | Bin 0 -> 150362 bytes test/radial-gradient-mask.argb32.ref.png | Bin 116311 -> 0 bytes test/radial-gradient-mask.c | 110 - test/radial-gradient-mask.image16.ref.png | Bin 82800 -> 204585 bytes test/radial-gradient-mask.quartz.ref.png | Bin 0 -> 296910 bytes test/radial-gradient-mask.ref.png | Bin 0 -> 286065 bytes test/radial-gradient-mask.rgb24.ref.png | Bin 129093 -> 0 bytes test/radial-gradient-one-stop.argb32.ref.png | Bin 1392 -> 0 bytes test/radial-gradient-one-stop.c | 107 - test/radial-gradient-one-stop.quartz.ref.png | Bin 0 -> 6316 bytes test/radial-gradient-one-stop.ref.png | Bin 0 -> 6306 bytes test/radial-gradient-one-stop.rgb24.ref.png | Bin 1153 -> 0 bytes test/radial-gradient-source.argb32.ref.png | Bin 272428 -> 408848 bytes test/radial-gradient-source.c | 115 - test/radial-gradient-source.image16.ref.png | Bin 132037 -> 169796 bytes test/radial-gradient-source.pdf.argb32.ref.png | Bin 235290 -> 0 bytes test/radial-gradient-source.quartz.argb32.ref.png | Bin 0 -> 439222 bytes test/radial-gradient-source.quartz.rgb24.ref.png | Bin 0 -> 279249 bytes test/radial-gradient-source.rgb24.ref.png | Bin 193364 -> 263908 bytes test/radial-gradient.c | 248 +- test/radial-gradient.image16.ref.png | Bin 202415 -> 256686 bytes test/radial-gradient.pdf.ref.png | Bin 280944 -> 0 bytes test/radial-gradient.quartz.ref.png | Bin 0 -> 389140 bytes test/radial-gradient.ref.png | Bin 280971 -> 382283 bytes test/radial-gradient.svg.xfail.png | Bin 264425 -> 0 bytes test/rotate-image-surface-paint.quartz.ref.png | Bin 356 -> 223 bytes test/scale-offset-image.quartz.ref.png | Bin 9054 -> 8977 bytes test/scale-offset-similar.quartz.ref.png | Bin 9054 -> 8977 bytes test/smask-mask.quartz.ref.png | Bin 3357 -> 3191 bytes test/smask-paint.quartz.ref.png | Bin 3499 -> 3311 bytes test/smask.quartz.ref.png | Bin 4067 -> 4031 bytes .../surface-pattern-operator.quartz.argb32.ref.png | Bin 0 -> 5721 bytes ...urface-pattern-operator.quartz.argb32.xfail.png | Bin 5917 -> 0 bytes test/surface-pattern-operator.quartz.rgb24.ref.png | Bin 0 -> 2429 bytes ...surface-pattern-operator.quartz.rgb24.xfail.png | Bin 2546 -> 0 bytes test/testtable.js | 426 + test/trap-clip.quartz.argb32.ref.png | Bin 6060 -> 6115 bytes test/trap-clip.quartz.rgb24.ref.png | Bin 5694 -> 5801 bytes test/unbounded-operator.quartz.argb32.ref.png | Bin 0 -> 3509 bytes test/unbounded-operator.quartz.rgb24.ref.png | Bin 0 -> 1657 bytes test/white-in-noop.c | 52 + test/white-in-noop.ref.png | Bin 0 -> 95 bytes test/xcb-stress-cache.c | 118 + test/xcb-stress-cache.ref.png | Bin 0 -> 97 bytes test/xcomposite-projection.quartz.ref.png | Bin 639 -> 926 bytes util/cairo-gobject/cairo-gobject-enums.c | 2 + util/cairo-script/cairo-script-operators.c | 201 + util/cairo-trace/trace.c | 1 + 375 files changed, 65712 insertions(+), 78807 deletions(-) create mode 100644 ChangeLog.pre-1.10 create mode 100644 doc/public/xml/api-index-1.12.xml create mode 100644 src/cairo-box-private.h create mode 100644 src/cairo-gl-dispatch-private.h create mode 100644 src/cairo-gl-dispatch.c create mode 100644 src/cairo-gl-ext-def-private.h create mode 100644 src/cairo-gl-info.c create mode 100644 src/cairo-mesh-pattern-rasterizer.c create mode 100644 src/cairo-pdf-shading-private.h create mode 100644 src/cairo-pdf-shading.c create mode 100644 src/cairo-type1-glyph-names.c delete mode 100644 src/glew/GL/glew.h delete mode 100644 src/glew/GL/glxew.h delete mode 100644 src/glew/LICENSE.txt delete mode 100644 src/glew/glew.c create mode 100644 test/a1-bug.quartz.xfail.png delete mode 100644 test/a1-image-sample.quartz.xfail.png delete mode 100644 test/a1-mask-sample.quartz.xfail.png create mode 100644 test/a1-rasterisation-rectangles.quartz.xfail.png create mode 100644 test/a1-rasterisation-triangles.quartz.xfail.png create mode 100644 test/a8-clear.quartz.ref.png create mode 100644 test/aliasing.quartz.ref.png create mode 100644 test/arc-infinite-loop.c create mode 100644 test/arc-infinite-loop.ref.png create mode 100644 test/arc-looping-dash.c create mode 100644 test/arc-looping-dash.image16.ref.png create mode 100644 test/arc-looping-dash.ps.ref.png create mode 100644 test/arc-looping-dash.quartz.ref.png create mode 100644 test/arc-looping-dash.ref.png create mode 100644 test/extended-blend-alpha.quartz.argb32.ref.png create mode 100644 test/extended-blend-alpha.quartz.rgb24.ref.png create mode 100644 test/extended-blend.quartz.argb32.ref.png create mode 100644 test/extended-blend.quartz.rgb24.ref.png create mode 100644 test/fallback-resolution.ppi144x144.ps.ref.png create mode 100644 test/fallback-resolution.ppi144x144.ref.png create mode 100644 test/fallback-resolution.ppi144x72.ps.ref.png create mode 100644 test/fallback-resolution.ppi144x72.ref.png delete mode 100644 test/fallback-resolution.ppi150x150.ref.png delete mode 100644 test/fallback-resolution.ppi150x72.ref.png create mode 100644 test/fallback-resolution.ppi288x288.pdf.ref.png create mode 100644 test/fallback-resolution.ppi288x288.ps.ref.png create mode 100644 test/fallback-resolution.ppi288x288.svg.ref.png create mode 100644 test/fallback-resolution.ppi288x72.ps.ref.png create mode 100644 test/fallback-resolution.ppi288x72.ref.png delete mode 100644 test/fallback-resolution.ppi300x300.ref.png delete mode 100644 test/fallback-resolution.ppi300x72.ref.png delete mode 100644 test/fallback-resolution.ppi37.5x37.5.ref.png delete mode 100644 test/fallback-resolution.ppi37.5x72.ref.png create mode 100644 test/fallback-resolution.ppi576x576.pdf.ref.png create mode 100644 test/fallback-resolution.ppi576x576.ps.ref.png create mode 100644 test/fallback-resolution.ppi576x576.svg.ref.png create mode 100644 test/fallback-resolution.ppi576x72.ps.ref.png create mode 100644 test/fallback-resolution.ppi576x72.ref.png delete mode 100644 test/fallback-resolution.ppi600x600.ref.png delete mode 100644 test/fallback-resolution.ppi600x72.ref.png create mode 100644 test/fallback-resolution.ppi72x144.ps.ref.png create mode 100644 test/fallback-resolution.ppi72x144.ref.png delete mode 100644 test/fallback-resolution.ppi72x150.ref.png create mode 100644 test/fallback-resolution.ppi72x288.ps.ref.png create mode 100644 test/fallback-resolution.ppi72x288.ref.png delete mode 100644 test/fallback-resolution.ppi72x300.ref.png delete mode 100644 test/fallback-resolution.ppi72x37.5.ref.png create mode 100644 test/fallback-resolution.ppi72x576.ps.ref.png create mode 100644 test/fallback-resolution.ppi72x576.ref.png delete mode 100644 test/fallback-resolution.ppi72x600.ref.png delete mode 100644 test/fallback-resolution.ppi72x75.ref.png delete mode 100644 test/fallback-resolution.ppi75x72.ref.png delete mode 100644 test/fallback-resolution.ppi75x75.ref.png delete mode 100644 test/filter-nearest-offset.quartz.xfail.png create mode 100644 test/group-state.c create mode 100644 test/huge-linear.quartz.ref.png create mode 100644 test/index.html create mode 100644 test/linear-gradient-large.quartz.ref.png delete mode 100755 test/make-html.pl create mode 100644 test/mesh-pattern-accuracy.c create mode 100644 test/mesh-pattern-accuracy.image16.ref.png create mode 100644 test/mesh-pattern-accuracy.ref.png create mode 100644 test/mesh-pattern-conical.c create mode 100644 test/mesh-pattern-conical.image16.ref.png create mode 100644 test/mesh-pattern-conical.ref.png create mode 100644 test/mesh-pattern-control-points.c create mode 100644 test/mesh-pattern-control-points.image16.ref.png create mode 100644 test/mesh-pattern-control-points.ref.png create mode 100644 test/mesh-pattern-fold.c create mode 100644 test/mesh-pattern-fold.image16.ref.png create mode 100644 test/mesh-pattern-fold.ref.png create mode 100644 test/mesh-pattern-overlap.c create mode 100644 test/mesh-pattern-overlap.image16.ref.png create mode 100644 test/mesh-pattern-overlap.ref.png create mode 100644 test/mesh-pattern-transformed.c create mode 100644 test/mesh-pattern-transformed.image16.ref.png create mode 100644 test/mesh-pattern-transformed.ref.png create mode 100644 test/mesh-pattern.c create mode 100644 test/mesh-pattern.image16.ref.png create mode 100644 test/mesh-pattern.ref.png create mode 100644 test/overlapping-glyphs.quartz.argb32.ref.png create mode 100644 test/overlapping-glyphs.quartz.rgb24.ref.png create mode 100644 test/partial-clip-text.quartz.ref.png create mode 100644 test/ps-eps.ref.png create mode 100644 test/push-group-color.ps2.ref.png create mode 100644 test/radial-gradient-extend.ps3.ref.png delete mode 100644 test/radial-gradient-mask-source.c create mode 100644 test/radial-gradient-mask-source.quartz.argb32.ref.png create mode 100644 test/radial-gradient-mask-source.quartz.rgb24.ref.png create mode 100644 test/radial-gradient-mask-source.xlib.argb32.ref.png create mode 100644 test/radial-gradient-mask-source.xlib.rgb24.ref.png delete mode 100644 test/radial-gradient-mask.argb32.ref.png delete mode 100644 test/radial-gradient-mask.c create mode 100644 test/radial-gradient-mask.quartz.ref.png create mode 100644 test/radial-gradient-mask.ref.png delete mode 100644 test/radial-gradient-mask.rgb24.ref.png delete mode 100644 test/radial-gradient-one-stop.argb32.ref.png delete mode 100644 test/radial-gradient-one-stop.c create mode 100644 test/radial-gradient-one-stop.quartz.ref.png create mode 100644 test/radial-gradient-one-stop.ref.png delete mode 100644 test/radial-gradient-one-stop.rgb24.ref.png delete mode 100644 test/radial-gradient-source.c delete mode 100644 test/radial-gradient-source.pdf.argb32.ref.png create mode 100644 test/radial-gradient-source.quartz.argb32.ref.png create mode 100644 test/radial-gradient-source.quartz.rgb24.ref.png delete mode 100644 test/radial-gradient.pdf.ref.png create mode 100644 test/radial-gradient.quartz.ref.png delete mode 100644 test/radial-gradient.svg.xfail.png create mode 100644 test/surface-pattern-operator.quartz.argb32.ref.png delete mode 100644 test/surface-pattern-operator.quartz.argb32.xfail.png create mode 100644 test/surface-pattern-operator.quartz.rgb24.ref.png delete mode 100644 test/surface-pattern-operator.quartz.rgb24.xfail.png create mode 100644 test/testtable.js create mode 100644 test/unbounded-operator.quartz.argb32.ref.png create mode 100644 test/unbounded-operator.quartz.rgb24.ref.png create mode 100644 test/white-in-noop.c create mode 100644 test/white-in-noop.ref.png create mode 100644 test/xcb-stress-cache.c create mode 100644 test/xcb-stress-cache.ref.png diff --git a/AUTHORS b/AUTHORS index 45509f8..3c26f75 100644 --- a/AUTHORS +++ b/AUTHORS @@ -82,6 +82,7 @@ Calum Robinson Quartz backend Pavel Roskin Several cleanups to eliminate warnings Tim Rowley Quartz/ATSUI fixes, X server workarounds, win32 glyph path support, test case to expose gradient regression Soeren Sandmann Lots of MMX love for pixman compositing +Uli Schlachter Some more XCB fixes Torsten Schönfeld Build fixes Jamey Sharp Surface/font backend virtualization, XCB backend Jason Dorje Short Build fixes and bug fixes diff --git a/ChangeLog b/ChangeLog index 10a0b43..ac3f53e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,45141 +1,5563 @@ # Generated by configure. Do not edit. -commit 4938e11ffe11781e4e294092807ebc67f362eac6 +commit ac9ee388faf3c8c5df502f6cc7b039f043154954 Author: Chris Wilson -Date: Sat Dec 25 13:25:14 2010 +0000 +Date: Sun Jan 23 16:32:13 2011 +0000 - version: Bump for 1.10.2 release + version: Bump for 1.11.2 snapshot cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit de464ea7781707984a1e1d5f98a8ff23c5ee18ed +commit 7e75e2d14afe295bb100849b081e9c568f3f1260 Author: Chris Wilson -Date: Sat Dec 25 13:24:37 2010 +0000 +Date: Sun Jan 23 16:31:40 2011 +0000 - NEWS: Add entry for 1.10.2 + NEWS: 1.11.2 snapshot - NEWS | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 59 insertions(+), 0 deletions(-) + NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 48 insertions(+), 0 deletions(-) -commit 888eeb187f542b96e722725f616720038e700b84 +commit d6dc6e8e396506d5160266dda6575ddfce671c2d +Merge: 6c65168 c84730d Author: Chris Wilson -Date: Sat Dec 25 10:19:38 2010 +0000 +Date: Sun Jan 23 16:05:01 2011 +0000 - Add a KNOWN_ISSUES file to track WONTFIX(?) bugs + Merge branch '1.10' into tmp + + Synchronize stable bug-fixes with development snapshot + + Conflicts: + cairo-version.h + src/cairo-path-bounds.c + src/cairo-pdf-surface.c + test/get-path-extents.c - KNOWN_ISSUES | 10 ++++++++++ - Makefile.am | 1 + - 2 files changed, 11 insertions(+), 0 deletions(-) +commit 6c65168dcfd969bd1d6aade3cd33f679e2314dea +Author: Chris Wilson +Date: Sun Jan 23 15:46:32 2011 +0000 -commit a27e3bc6d08feeac8e4ee5315a0ad974efee0ee9 -Author: Koji Otani -Date: Wed Nov 17 00:07:03 2010 +1030 + Makefile: add missing cairo-box-private.h - PS: fix embedding of grayscale jpegs + src/Makefile.sources | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 6f4318869cf551f4ed349459b7afd50e4b10941c +Author: Chris Wilson +Date: Sun Jan 23 13:29:51 2011 +0000 + + xcb: Prefer RenderFillRectangles to perform the deferred clear - https://bugs.freedesktop.org/show_bug.cgi?id=31632 - (cherry picked from commit 653ceb517fe756b042a3cf8322a36cbfe71ddbd8) + Signed-off-by: Chris Wilson - src/cairo-ps-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) + src/cairo-xcb-surface-render.c | 22 ++++++++++++++++------ + 1 files changed, 16 insertions(+), 6 deletions(-) -commit 4aabff8f6740e2027febd97c1863f7ba5a46cb92 -Author: Andrea Canciani -Date: Tue Dec 14 17:56:00 2010 +0100 +commit bef8b28300ab1f9b46db9d54b072f6f9318dca30 +Author: Chris Wilson +Date: Sun Jan 23 12:28:06 2011 +0000 - path-bounder: Update current point after curve_to op + xcb: Apply a clip region for compositing many-pixel-aligned-boxes - Even if the curve_to is completely within the current extents box, the - current point needs to be updated because the shape of following ops - depends on the position of the current point. + Based on a patch by Uli Schlachter. - Fixes bug-extents. + Uli found that the "fast-path" for compositing pixel-aligned boxes did + not live up to its name; using multiple Composite is many times slower, + because of the extra protocol and driver overheads, than specifying a + clip region and a single Composite. + + Signed-off-by: Chris Wilson - src/cairo-path-bounds.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-xcb-surface-render.c | 124 ++++++++++++++++++++++----------------- + 1 files changed, 70 insertions(+), 54 deletions(-) -commit 5996652364efa4fb4ae6c984ddf6ddad8868782b +commit ff9e962165905f9b3477e125de227c69aebf9510 Author: Andrea Canciani -Date: Tue Dec 14 20:15:28 2010 +0100 +Date: Wed Jan 19 23:22:31 2011 +0100 - test: Add bug-extents + gstate: Remove unused code - Add a test for the computation of approximate extents used by most - backends to esimate the region affected by drawing operations. + _cairo_gstate_redirect_target asserts that this surface is NULL + immediately before destroying it. If the code is compiled with + assertions disabled and the assert would be false, it is now safer + because instead of an invalid access it will only memleak. - Based on: - http://lists.cairographics.org/archives/cairo/2010-December/021331.html + _cairo_gstate_get_parent_target () is not used anymore in + cairo_pop_group () and the related code can be removed. + + _cairo_gstate_is_redirected () has never been used. + + The comment about the clipping is misleading, because the clip is + translated as expected since fb7f7c2f27f0823d7702f960204d6e638d697624. - test/Makefile.am | 5 +++ - test/Makefile.sources | 1 + - test/bug-extents.c | 59 ++++++++++++++++++++++++++++++++++++++ - test/bug-extents.image16.ref.png | Bin 0 -> 7576 bytes - test/bug-extents.ps.ref.png | Bin 0 -> 5844 bytes - test/bug-extents.quartz.ref.png | Bin 0 -> 9310 bytes - test/bug-extents.ref.png | Bin 0 -> 9162 bytes - test/bug-extents.xlib.ref.png | Bin 0 -> 9234 bytes - 8 files changed, 65 insertions(+), 0 deletions(-) + src/cairo-gstate-private.h | 6 ------ + src/cairo-gstate.c | 33 --------------------------------- + 2 files changed, 0 insertions(+), 39 deletions(-) -commit f832ff7f22499bfa8e907f9fb059d56857d11e68 +commit 5d95ae924ed15200a17d240d8f0744c74df7c61b Author: Andrea Canciani -Date: Sun Nov 28 16:58:20 2010 +0100 +Date: Thu Jan 20 01:44:29 2011 +0100 - test: Fix ref images + gstate: Set an error status when restoring a push_group - The corners of the boxes in these ref images were not correct. + cairo_push_group (cr) followed by cairo_restore (cr) should put cr in + an error status of CAIRO_STATUS_INVALID_RESTORE. + + Fixes group-state. - test/clip-stroke.image16.ref.png | Bin 1308 -> 1305 bytes - test/clip-stroke.ref.png | Bin 1442 -> 1447 bytes - test/clipped-group.image16.ref.png | Bin 281 -> 270 bytes - test/clipped-group.ref.png | Bin 289 -> 289 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) + src/cairo-gstate-private.h | 3 +++ + src/cairo-gstate.c | 16 ++++++++++++++++ + src/cairo.c | 26 +++++++++++--------------- + 3 files changed, 30 insertions(+), 15 deletions(-) -commit ff35af3fd73e59ea29b1a322c833f7dd24b0b8bc +commit e0b741de9006a02acd9b05c8fae52f6b7f775163 Author: Andrea Canciani -Date: Sun Nov 28 14:32:51 2010 +0100 +Date: Tue Jan 18 14:48:15 2011 +0100 - image: Fix compositing of unaligned boxes - - The input of _fill_unaligned_boxes is (supposed to be) composed only - of disjoint rectangles, that can safely be passed to the rectilinear - span converter, but this function artificially introduces intersecting - rectangles when drawing non-aligned boxes. + test: Add group-state - Using non-intersecting rectangles is easy and makes the code correct. + The interaction between the group and the state API is currently + untested and buggy. This test tries to use them incorrectly and check + that cairo notices the problem and marks the cr object with an error + status. + + test/Makefile.sources | 1 + + test/group-state.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 97 insertions(+), 0 deletions(-) + +commit b51520628de73d5f560720c20987e5be5440edb0 +Author: Andrea Canciani +Date: Sat Jan 22 11:56:37 2011 +0100 + + clip: Improve _cairo_clip_contains_* - Fixes rectilinear-grid. + _cairo_clip_contains_rectangle() considered a NULL clip empty instead + of containing everything. - Reviewed-by: Uli Schlachter + _cairo_clip_contains_rectangle() checks for NULL clips, so we don't + have to check for them in _cairo_clip_contains_extents(). - src/cairo-image-surface.c | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) + src/cairo-clip.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) -commit 7b29f1d5d85ebb7e92e9759692233c80a4687a07 -Author: Andrea Canciani -Date: Fri Nov 26 17:55:35 2010 +0100 +commit 47d14586f5d56b2c926a2ddbca6cfbd284c3b3f1 +Author: Mats Palmgren +Date: Fri Jan 21 09:52:19 2011 +0100 - test: Add rectilinear-grid + win32: Improve error logging - The rectilinear scan converter assumes disjoint rects as input, but - cairo-image passes intersecting rectangles to it. + On win32 stderr is fully buffered, so fflush() should be called after + each error to ensure it is printed to the console. - This test shows that image and any backends passing through it for the - rasterization (fallbacks, vector backends whose renderer is - cairo-based) fail in compute the corners of intersecting rectangles - correctly. + There is no need to use fwprintf if the format string can be + represented as char*. + + See https://bugs.freedesktop.org/show_bug.cgi?id=33319 - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/rectilinear-grid.c | 78 +++++++++++++++++++++++++++++++++ - test/rectilinear-grid.image16.ref.png | Bin 0 -> 638 bytes - test/rectilinear-grid.ref.png | Bin 0 -> 569 bytes - 5 files changed, 81 insertions(+), 0 deletions(-) + src/cairo-win32-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) -commit 9ec51baa779a30041ea944643d4d0b8333bb759b -Author: Adrian Johnson -Date: Fri Nov 26 21:41:17 2010 +1030 +commit 72a9d49a530456e7002675235333885c70580abb +Author: Andrea Canciani +Date: Wed Jan 19 15:04:49 2011 +0100 - PDF: Add missing clipper_reset - (cherry picked from commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf) + Bump pixman requirements to 0.20.2 for radial gradients + + Pixman has PDF-like radial gradients since 0.20.0, but the + implementation of the tangent circles case was not correct. This has + been fixed in 0.20.2, along with some invalid operations fixes. - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + README | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit 841a2df7359e2b491aed7ed8c043cce669357ae3 -Author: Markus Stange -Date: Fri Nov 5 09:23:44 2010 +0100 +commit 67cfb20bd0908b73efc208b3c5ca0d027f858864 +Author: Andrea Canciani +Date: Wed Jan 19 14:35:46 2011 +0100 - Fix type of _cairo_memory_stream_destroy parameter + test: Workaround pixman limits in large-source-roi - In 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 - _cairo_memory_stream_destroy was changed to take an unsigned long - instead of unsigned int, and the two callsites in cairo-gl-shaders.c - weren't updated. + Since 1cc750ed92a936d84b47cac696aaffd226e1c02e pixman won't perform + the compositing if it can't prove that this the computations it has to + perform will fit within the size of the variables it uses. + + It looks like in this case it cannot prove that no overflow will + happen unless surface_width <= 30582. Instead of this size (discovered + by bisection), a safer looking 30000 was chosen. It should still + trigger the problems the original test was looking for, because + backends which support 30000xheight surfaces will likely support + 32767xheight as well. - src/cairo-gl-shaders.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + test/large-source-roi.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) -commit b6a97499c71af60a3f15d131d51eb53fb21b48ff +commit b8e7bfdff0478f0515ea470b32fc15ca081d637e Author: Andrea Canciani -Date: Tue Oct 5 10:36:38 2010 +0200 +Date: Thu Jan 6 17:40:05 2011 +0100 - xcb: Do not return value in void function + quartz: Respect pattern filter settings - Sun Studio Compiler complains: - "cairo-xcb-surface.c", line 585: void function cannot return value - even if the returned value is void. - Some minor code restructuring removes the issue. + CAIRO_FILTER_FAST and CAIRO_FILTER_NEAREST both map to nearest + neighbor filtering, whereas all other filter modes are names for + bilinear filtering. + + Additionally, translations matrices are transformed into integer + translations when possible (i.e. when they are used on an nearest + neighbor filtered surface pattern), which makes Quartz behave as + cairo-image for these simple transformations. + + Fixes a1-image-sample, a1-mask-sample, filter-nearest-offset. + + Improves the output of filter-nearest-transformed and + rotate-image-surface-paint. They are not blurry anymore, but they are + different from the reference images because of different in/out rules + between Quartz and cairo-image. - src/cairo-xcb-surface.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) + src/cairo-quartz-surface.c | 166 ++++++++++++++++++++++++++++---------------- + 1 files changed, 105 insertions(+), 61 deletions(-) -commit e71588c80d5c6112fa9f7c6ea369d90f9284199f +commit 45da39dda729be4c61c92d30e9373282941000fa Author: Andrea Canciani -Date: Sun Oct 24 16:40:53 2010 +0200 +Date: Fri Jan 7 18:00:37 2011 +0100 - test: Add romedalen images copyright information + quartz: Avoid using private APIs - romedalen.png and romedalen.jpg have been bundled into the test - suite without an explicit copyright notice. + CGContextSetCTM() is not part of the public API and can easily be + replaced by CGContextConcatCTM()-ing an appropriate matrix. - test/COPYING | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 50 ++++++++++++++++++++++++------------------- + 1 files changed, 28 insertions(+), 22 deletions(-) -commit 2b3d8de11a536d668084ea6d2bf295da1d1cdc11 +commit ca9068839bf28f914a5066d7846f4d4b95fee4a2 Author: Andrea Canciani -Date: Sat Oct 16 22:51:28 2010 +0200 +Date: Wed Jan 5 16:12:34 2011 +0100 - Fix degenerate arcs + quartz: Use CGLayer to implement unbounded operators - Make sure that degenerate arcs become a move_to-line_to sequence - instead of just a move_to. + Quartz operators are not unbounded, but it is possible to implement + unbounded operators by using a temporary destination. - Fixes get-path-extents. + Fixes clip-stroke-unbounded, clip-fill-nz-unbounded, + clip-fill-eo-unbounded, clip-operator, operator-alpha-alpha, + overlapping-glyphs, surface-pattern-operator, unbounded-operator. - src/cairo-arc.c | 4 ++++ - src/cairo.c | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 663 +++++++++++++++++++------------------------- + 1 files changed, 281 insertions(+), 382 deletions(-) -commit fafca7ace250e3f4f9c60584f0ddff187c690068 -Author: Joerg Sonnenberger -Date: Tue Oct 12 22:07:37 2010 +0200 +commit d7e3637af2ce31c35281c87c4ca064322de0d948 +Author: Andrea Canciani +Date: Sat Jan 1 23:16:11 2011 +0100 - LD_PRELOAD is supported on DragonFly. + quartz: Cleanup extents computation + + All the draw operations use the same code to compute the gradient + parameter range. It can be moved to the function which sets up the + source. - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 45 ++++++++++++++----------------------------- + 1 files changed, 15 insertions(+), 30 deletions(-) -commit c20d55eb1c1eb1c6f51a21c7eb205ba4c2c125e8 -Author: Erik Zeek -Date: Thu Nov 4 17:57:03 2010 +0100 +commit aa2fb0c05fefeea97a2d72f882a6b2c40d98af39 +Author: Andrea Canciani +Date: Sat Jan 1 22:36:45 2011 +0100 - Fix build on gentoo + quartz: Do not use opaque patterns as masks - The problem is probably caused by a change in the behavior of autoconf - (2.67). + When an opaque surface is used as a mask, Quartz converts it to + greyscale and uses the result as an alpha value. Cairo expects the + mask operation to ignore the color components and only use the alpha + of the pattern. - See http://bugs.gentoo.org/336329 + The expected behavior can be achieved by drawing the mask on a + temporary surface with an alpha channel. + + Fixes clear-source. - configure.ac | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-quartz-surface.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) -commit 8ef5161da307361e20dad68df74512c5afcbb012 +commit 7d89d69c494bb438ca1caddf1a2226a48297e4b6 Author: Andrea Canciani -Date: Sat Nov 6 15:46:48 2010 +0100 +Date: Wed Jan 5 12:15:06 2011 +0100 - configure: Correct reporting of tee backend + quartz: Make huge domain handling more stable - Since 9f33f8453b4949cfdc63169d3acd7238f89379c2 tee is not compiled in - anymore by default. Reporting it as always enabled is misleading. + Quartz cannot correctly handle arbitrary domains. Falling back is + needed to get correct results on very large (in parameter space) + gradients. + + For PAD extended gradients, limiting the domain to (at most) [-0.5, + 1.5] is sufficient to guarantee that it will correctly sample the + extreme stops and improves the accuracy (over having a much bigger + domain). + + Fixes radial-gradient, radial-gradient-mask, radial-gradient-source, + radial-gradient-mask-source, radial-gradient-one-stop. + + Improves the quality of the linear gradients in linear-gradient, + linear-gradient-subset, mask, operator-source, trap-clip. - build/configure.ac.features | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 20 ++++++++++++++++---- + 1 files changed, 16 insertions(+), 4 deletions(-) -commit a6b503961b7ffd6a0725ad7d98ec1c46e2f15f25 +commit 4874dab984fe73ae687b354aff45b879e1de9db2 Author: Andrea Canciani -Date: Mon Nov 22 23:41:33 2010 +0100 +Date: Sat Jan 1 22:57:27 2011 +0100 - ps: Fix painting + quartz: Use standard stack allocation size - Painting of some pattern was broken because the paint operation was - implemented as a fill to a rect containing the clip, but this rect was - not transformed as appropriate (using the cairo_to_ps matrix). - PDF simply fills the whole surface rect, so we implement the same - behavior in PS. + Make cairo-quartz respect the convention that stack-allocated data + structures use the size computed by CAIRO_STACK_ARRAY_LENGTH (). - Fixes clip-group-shapes-circles, clip-stroke, linear-gradient-extend, - linear-gradient-one-stop, radial-gradient-one-stop. + Additionally this increases the size of the dash and glyph arrays, + making dynamic memory allocation less likely. - src/cairo-ps-surface.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) + src/cairo-quartz-surface.c | 24 ++++++++---------------- + 1 files changed, 8 insertions(+), 16 deletions(-) -commit b8347e33539402ef64d652bc0f67522e4d02d51c -Author: Adrian Johnson -Date: Sun Nov 21 00:37:29 2010 +1030 +commit 5a1e590b122d99ad91ba104b8fc68e8adaa2d6cd +Author: Andrea Canciani +Date: Sat Jan 8 00:56:38 2011 +0100 + + test: Update quartz ref images + + The following commits fix and/or improve the output of some tests. + Updating the ref images before fixing the code allows to check that + the fix is correct and makes it easy to find out which tests are fixed + by each commit. + + test/Makefile.am | 24 +++++++++++++++---- + test/a1-bug.quartz.xfail.png | Bin 0 -> 3195 bytes + test/a1-image-sample.quartz.xfail.png | Bin 972 -> 0 bytes + test/a1-mask-sample.quartz.xfail.png | Bin 972 -> 0 bytes + test/a1-rasterisation-rectangles.quartz.xfail.png | Bin 0 -> 2583 bytes + test/a1-rasterisation-triangles.quartz.xfail.png | Bin 0 -> 2583 bytes + test/a8-clear.quartz.ref.png | Bin 0 -> 244 bytes + test/aliasing.quartz.ref.png | Bin 0 -> 108801 bytes + test/clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin 3366 -> 3382 bytes + test/clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2941 bytes + test/clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin 3366 -> 3382 bytes + test/clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2941 bytes + test/clip-operator.quartz.argb32.ref.png | Bin 14959 -> 9672 bytes + test/clip-operator.quartz.rgb24.ref.png | Bin 8835 -> 4343 bytes + test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 3362 -> 3290 bytes + test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 3061 -> 2840 bytes + test/filter-nearest-offset.quartz.xfail.png | Bin 2130 -> 0 bytes + test/filter-nearest-transformed.quartz.xfail.png | Bin 534 -> 349 bytes + test/linear-gradient-subset.quartz.ref.png | Bin 994 -> 852 bytes + test/linear-gradient.quartz.ref.png | Bin 1073 -> 951 bytes + test/mask.quartz.argb32.ref.png | Bin 11136 -> 10669 bytes + test/operator-source.quartz.argb32.ref.png | Bin 5499 -> 4936 bytes + test/operator-source.quartz.rgb24.ref.png | Bin 4345 -> 3771 bytes + test/overlapping-glyphs.quartz.argb32.ref.png | Bin 0 -> 2824 bytes + test/overlapping-glyphs.quartz.rgb24.ref.png | Bin 0 -> 1711 bytes + test/partial-clip-text.quartz.ref.png | Bin 0 -> 174 bytes + test/pthread-same-source.quartz.xfail.png | Bin 957 -> 961 bytes + test/pthread-show-text.quartz.ref.png | Bin 42996 -> 43005 bytes + ...dial-gradient-mask-source.quartz.argb32.ref.png | Bin 0 -> 171002 bytes + ...adial-gradient-mask-source.quartz.rgb24.ref.png | Bin 0 -> 179120 bytes + test/radial-gradient-mask.quartz.ref.png | Bin 0 -> 296910 bytes + test/radial-gradient-one-stop.quartz.ref.png | Bin 0 -> 6316 bytes + test/radial-gradient-source.quartz.argb32.ref.png | Bin 0 -> 439222 bytes + test/radial-gradient-source.quartz.rgb24.ref.png | Bin 0 -> 279249 bytes + test/radial-gradient.quartz.ref.png | Bin 0 -> 389140 bytes + test/rotate-image-surface-paint.quartz.ref.png | Bin 356 -> 223 bytes + test/scale-offset-image.quartz.ref.png | Bin 9054 -> 8977 bytes + test/scale-offset-similar.quartz.ref.png | Bin 9054 -> 8977 bytes + .../surface-pattern-operator.quartz.argb32.ref.png | Bin 0 -> 5721 bytes + ...urface-pattern-operator.quartz.argb32.xfail.png | Bin 5917 -> 0 bytes + test/surface-pattern-operator.quartz.rgb24.ref.png | Bin 0 -> 2429 bytes + ...surface-pattern-operator.quartz.rgb24.xfail.png | Bin 2546 -> 0 bytes + test/trap-clip.quartz.argb32.ref.png | Bin 6926 -> 6115 bytes + test/trap-clip.quartz.rgb24.ref.png | Bin 6503 -> 5801 bytes + test/unbounded-operator.quartz.argb32.ref.png | Bin 0 -> 3509 bytes + test/unbounded-operator.quartz.rgb24.ref.png | Bin 0 -> 1657 bytes + test/xcomposite-projection.quartz.ref.png | Bin 639 -> 926 bytes + 47 files changed, 19 insertions(+), 5 deletions(-) + +commit 2e75bf5a25cc5b7fd33702e2b1474f94caeab158 +Author: Andrea Canciani +Date: Wed Jan 5 16:00:37 2011 +0100 - PS: Fix regression - incorrect EPS bounding box + test: Fix operator-alpha-alpha - https://bugs.freedesktop.org/show_bug.cgi?id=24688 - (cherry picked from commit bb4055dac6a937b3412170a332b5effe4bbeff7d) + The test is checking the compositing of color-alpha sources although + it was meant to check the compositing of alpha-only sources on + alpha-only destinations. + + This commit fixes the code to respect the test description. - src/cairo-analysis-surface.c | 40 ++++++++++------------------------------ - 1 files changed, 10 insertions(+), 30 deletions(-) + test/operator-alpha-alpha.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit cfff4f30a0eaa29b817cb32616c2da5a27921332 -Author: Adrian Johnson -Date: Sat Nov 20 23:54:00 2010 +1030 +commit 45505fc5fb14d774c8e13bdca6ca6f75d4b2f9df +Author: Andrea Canciani +Date: Fri Jan 14 12:51:54 2011 +0100 - PS: Fix regression - missing page content in EPS output + Add a results.tar.gz target to the test Makefile - https://bugs.freedesktop.org/show_bug.cgi?id=24688 - (cherry picked from commit d3746448d78fcedf8f8f9a7d0fca47f1bd6a5b67) + Sometimes it is useful to be able to package the result of a run of + the testsuite. This new target creates an archive containing the html + page and at least all the files it links to. + + The archive might contain some unneeded images. - src/cairo-ps-surface.c | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) + test/Makefile.am | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) -commit ed87ddddb3994f126e0f2d18fa23da6bc5ed579e -Author: Adrian Johnson -Date: Sat Nov 20 00:50:04 2010 +1030 +commit 8c031c029d45d65dac22be9a809cc43f4449d41e +Author: Andrea Canciani +Date: Mon Jan 3 16:41:34 2011 +0100 - PS/PDF: Fix regression when changing page size to a larger size + pdf,ps,quartz: Use correct tolerance for gradient domain computation - https://bugs.freedesktop.org/show_bug.cgi?id=24691 - (cherry picked from commit e7c5f470436220668e50201d775a9fec47162a67) + The tolerance argument of _cairo_gradient_pattern_box_to_parameter () + is in pattern space, so to have it constant in device space, it should + depend on the pattern matrix. + + In ps and pdf the fallback resolution alone is not meaningful. The + resolution/fallback_resolution ratio should be used instead. - src/cairo-paginated-surface.c | 28 ++++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 10 ++++++++-- - src/cairo-ps-surface.c | 6 ++++++ - 3 files changed, 42 insertions(+), 2 deletions(-) + src/cairo-pattern.c | 3 ++- + src/cairo-pdf-surface.c | 10 +++++++--- + src/cairo-ps-surface.c | 10 +++++++--- + src/cairo-quartz-surface.c | 12 +++++++++--- + 4 files changed, 25 insertions(+), 10 deletions(-) -commit ccff76433e1cd068e5534d0ab633c27b0faf47d2 -Author: Adrian Johnson -Date: Wed Nov 10 20:09:53 2010 +1030 +commit 78eade13b196d43a46d84b53e2e0f6cdf27de877 +Author: Andrea Canciani +Date: Tue Jan 4 22:14:46 2011 +0100 - PDF: Restrict ActualText to PDF version >= 1.5 + gl: Don't ignore offset for gradient sources - The use of ActualText in a marked content sequence is a PDF 1.5 - feature. + _cairo_gl_operand_init() has parameters to specify an offset for the + source and another for the destination. - A 'use_actual_text' flag linked to the PDF version has already been - implemented in pdf-operators but for some reason this flag had not - been used to control the use of ActualText. - (cherry picked from commit 3afd7cd031ab9097e37c3e89d86ec41d015fdeb8) + _cairo_gl_gradient_operand_init() incorrectly assumed that the two + offsets were identical. + + Fixes mask, radial-gradient-mask-source. - src/cairo-pdf-operators.c | 31 ++++++++++++++++++------------- - 1 files changed, 18 insertions(+), 13 deletions(-) + src/cairo-gl-composite.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) -commit e0967ff83c24aaf6d6b3a93a627872820be9012b -Author: Adrian Johnson -Date: Sat Nov 6 21:15:30 2010 +1030 +commit 49171fb53474531a22fcd98882f97bdbf9a4d521 +Author: Andrea Canciani +Date: Tue Jan 4 13:17:57 2011 +0100 - Fix type1-fallback bbox - (cherry picked from commit 74873c82242e9c124b69e05d0f8abdf78983d62d) + gl: Update radial gradient implementation + + Cairo assumes that radial gradients are drawn as defined in ISO3200 + since b661bc871220fd67d673c44a8e3cb305812d8c38. + + To implement them in GLSL, three different shaders are required: + - tangent circles (a=0 in the parameter equation) + - none-extended gradient (solutions outside [0,1] must be ignored) + - extended gradient + + Moreover, texcoords are used instead of gl_FragCoord, to fix the + flipping as per 31e116f084d0ff073bed9d0e9c1c6ca1e5db4843. + + Fixes huge-radial, radial-gradient, radial-gradient-extend, + radial-gradient-mask, radial-gradient-source. - src/cairo-type1-fallback.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-gl-composite.c | 219 ++++++++++++++++++++++------------------------ + src/cairo-gl-private.h | 21 ++--- + src/cairo-gl-shaders.c | 115 +++++++++++++++++------- + 3 files changed, 193 insertions(+), 162 deletions(-) -commit 1413a44f64982e5196ca338c7cee5dfe19cd4b40 -Author: Adrian Johnson -Date: Sat Nov 6 18:44:54 2010 +1030 +commit 922bbd432011728304fe5647467545a52b9ab9b0 +Author: Robert O'Callahan +Date: Tue Jan 18 13:52:21 2011 +0100 - configure.ac.features: s/Meta/Recording/ - (cherry picked from commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e) + tee: Do not apply two times the master device transform + + cairo_tee_surface_create copies the device transform from 'master' to + the new surface. This is wrong since all the cairo_surface_wrapper + functions apply master's device transform themselves. + + Reviewed-by: Benjamin Otte - build/configure.ac.features | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-tee-surface.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) -commit e9bb70d2dee4ef7a54e3971f09a08df30c2b5287 -Author: Jeff Muizelaar -Date: Fri Nov 5 11:40:00 2010 -0400 +commit b0e1c837acea2d6a78d5e5b1a011b1d43354b3ac +Author: Andrea Canciani +Date: Fri Jan 7 13:27:27 2011 +0200 - Fix degenerate vertical path bounds. + gl: Ensure that gl surface resizes are properly applied - 6b77567b6ef28710c7707ab82c7fa95c810152d1 made vertical - path bounds with no area return extents of 0,0. This fixes - the problem by not assuming degenerate path bounds are 0,0 + If a gl surface is resized (with cairo_gl_surface_set_size()) while being the + current target, the resize does not take effect until the target changes to a + different surface and back to the original one. This patch allows a gl_context + to track when the current target surface has been changed and ensures that a + resize always take effect the next time a resized surface is used as the target. - src/cairo-path-bounds.c | 4 +++- - test/get-path-extents.c | 40 ++++++++++++++++++++++++++++++++-------- - 2 files changed, 35 insertions(+), 9 deletions(-) + src/cairo-gl-device.c | 3 ++- + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 8 ++++++-- + 3 files changed, 9 insertions(+), 3 deletions(-) -commit 91a6fe64236985d30f5794d760698deafd9e6511 -Author: Andrea Canciani -Date: Mon Nov 1 21:15:07 2010 +0100 +commit 45331fe87c319a899fc3cb661dc842fd815282d6 +Author: Alexandros Frantzis +Date: Fri Jan 7 13:01:19 2011 +0200 - image: Use correct size for allocation - - In 06e9caf86199e8261a07db6d4774628fa147728d the type of the variables - was changed, but the type used to compute the allocation size was not. + gl: Fix condition that prevents setting the size of window surfaces - Fixes a crash in user-font-mask (test-fallback backend). - (cherry picked from commit c7027c9d89d9a13d6cbc1727fc8513c908878db9) + A typo in cairo_gl_surface_set_size() prevents resizing of window surfaces + while incorrectly allows resizing of texture-backed surfaces. - src/cairo-image-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 83259f6ed60e00d0c25ca81c9ff9adfc017ebf5f -Author: Benjamin Otte -Date: Thu Oct 28 13:57:05 2010 +0200 +commit 55c57a5b3d5700db05cc19d8e6107ef4addc0b76 +Author: Andrea Canciani +Date: Wed Jan 12 23:21:02 2011 +0100 - build: Don't build cairo-fdr when the tee surface is off + mesh: Do not declare min and max functions + + Using the names "min" and "max" is likely to cause collisions. Instead + of them, use the MIN and MAX macros provided by cairoint.h + + Reviewed-by: Uli Schlachter - util/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-mesh-pattern-rasterizer.c | 56 +++++++++++++++------------------- + 1 files changed, 25 insertions(+), 31 deletions(-) -commit efc2440526c609338d68354ddf38031d1fa7c2c4 -Author: Adrian Johnson -Date: Thu Oct 28 21:21:00 2010 +1030 +commit e6e0161b7e54854422b84f934c9610c5b8114a0b +Author: Andrea Canciani +Date: Mon Jan 17 23:09:27 2011 +0100 - PDF: Don't use the currently set color after a 'Q' operator + xcb: Add a short comment to the Picture cache - https://bugs.freedesktop.org/show_bug.cgi?id=31140 - (cherry picked from commit e23bcfd4300870034f07b1ecd1bb4d2ac95d9785) + When we create a temporary cairo_xcb_picture_t, we want to be able to + reuse it, but we don't want the Picture to be alive forever to eat up + resources when it is not being used anymore. + + When a surface pattern is about to be used for compositing, if it has + a cairo_xcb_picture_t snapshot, the latter is just reused. Otherwise a + new cairo_xcb_picture_t with the same content is created and attached + as a snapshot to the surface. + + To keep the resource usage bounded we keep a per-screen cache of + cairo_xcb_picture_t. When the cache is full, a random entry is evicted + and we detach this snapshot from the surface that it is a snapshot + for. It will be immediately destroyed if nothing else holds a + reference to it. Otherwise it will be charged against the holder of + the reference, so it won't count anymore in the resources occupied by + the cache elements. This makes sure that the cached surface isn't + kept alive indefinitely because of caching. + + Based on a patch by Uli Schlachter. - src/cairo-pdf-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-xcb-screen.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) -commit f47830dbbc34c7068ccdd8f7f9042e8734c9e408 -Author: Adrian Johnson -Date: Sun Oct 24 11:32:41 2010 +1030 +commit 7f83b4e949b85fc604e9a7841c566eebd0aa1452 +Author: Uli Schlachter +Date: Mon Jan 17 18:38:16 2011 +0100 - Type 1 subset: Fix glyph advance + xcb: Don't finish snapshots when they are detached - https://bugs.freedesktop.org/show_bug.cgi?id=31062 - (cherry picked from commit 6dc0b19adb6da690ad5944623081b9cdb42de066) + Some code might own a reference to the snapshot when it is + detached. For this reason, we shouldn't finish the snapshot except + when its reference count drops to zero. + + This avoids destroying source patterns which get evicted from the + cache while acquiring the mask. + + Fixes xcb-stress-cache. + + Big "thank you" to Andrea Canciani for helping in figuring this one out. + + Signed-off-by: Uli Schlachter - src/cairo-type1-subset.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) + src/cairo-xcb-surface-render.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit f747ea81fb91239690b1785bce9ed29cb58c9098 -Author: Adrian Johnson -Date: Thu Oct 14 19:28:13 2010 +1030 +commit 44095f3dde22b2c379902e56adc47408b630c5e7 +Author: Uli Schlachter +Date: Sun Jan 16 20:52:01 2011 +0100 - PDF: Fix regression in EXTEND_NONE gradients + Add a test case for a bug in the xcb backend - The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern() - must be identical to the test in - _cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will - reference a smask that does not exist. + This was found via cairo-perf-micro which sometimes triggered this bug in its + mask-similar_image-* test. - The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can - draw EXTEND_NONE gradients with opaque color stops without requiring a - smask. - (cherry picked from commit 7a17ef31760c49b81fd2890814f5b2aeb8c6b3a3) + Signed-off-by: Uli Schlachter - src/cairo-pdf-surface.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/xcb-stress-cache.c | 118 +++++++++++++++++++++++++++++++++++++++++ + test/xcb-stress-cache.ref.png | Bin 0 -> 97 bytes + 4 files changed, 120 insertions(+), 0 deletions(-) -commit 7450a3c8a7843334d6e16af3ecef88915b5d9f26 -Author: Adrian Johnson -Date: Fri Oct 1 19:18:28 2010 +0930 +commit 01799bf0523d11e1bdb239caa265ce40cdcdfafa +Author: Andrea Canciani +Date: Mon Jan 17 10:25:30 2011 +0100 - pdf-operators: fix bug that was causing unnecessary repositioning of text + Fix optimization of white IN dest compositing - This optimizes the output to increase the maximum amount of text that - is emitted with a single Tj operator. - (cherry picked from commit 165a14b5646d582781d119874f549ec9a02d7f53) + The optimization of any opaque color IN an alpha-only surface is a + noop (it multiplies the alpha of each pixel of the destination by 1). + The same does not apply to colored destinations, because IN replaces + the original color with the color of the source. + + Fixes white-in-noop. - src/cairo-pdf-operators-private.h | 1 + - src/cairo-pdf-operators.c | 7 ++++++- - 2 files changed, 7 insertions(+), 1 deletions(-) + src/cairo-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) -commit 43c93f2b101f534f8aa4213403af3281fcdc17fb -Author: Adrian Johnson -Date: Fri Oct 1 17:41:28 2010 +0930 +commit 9e6d8ff86c9a8584ba25c78b1c4f3d50dba03e08 +Author: Andrea Canciani +Date: Mon Jan 17 12:17:30 2011 +0100 - Fix font metrics in PDF Type 1 fonts - - edcefa87 introduced a bug in the Type 1 font metrics in PDF files. - (cherry picked from commit 3f817dcfd39ffdb73ac694fd90a47d9d3a42af74) + test: Add missing ref image to REFERENCE_IMAGES - src/cairo-type1-subset.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) + test/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 66ace8cd33c0ebe88972f0c4d5c0effeacb1cea3 -Author: Chris Wilson -Date: Wed Sep 29 13:46:02 2010 +0100 +commit 2af0b0f5dae88469113e5b10ccd8405f041bf109 +Author: Andrea Canciani +Date: Mon Jan 17 10:21:06 2011 +0100 - image: The a8 in-place span compositing is only valid for SOURCE - - Fixes test/a8-clear. + test: Add white-in-noop - Reported-by: Jeremy Moles - Signed-off-by: Chris Wilson + Exercise an incorrect optimization in cairo-surface.c. It replaces + with a noop any region-based fill with solid white source and an IN + operator. - src/cairo-image-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) + test/Makefile.sources | 1 + + test/white-in-noop.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ + test/white-in-noop.ref.png | Bin 0 -> 95 bytes + 3 files changed, 53 insertions(+), 0 deletions(-) -commit 05faebd5845c68005f5b96428952faae5a67208f -Author: Chris Wilson -Date: Wed Sep 29 13:23:24 2010 +0100 +commit a35180714798ace2299aad531e2eacfa7968f16e +Author: Maarten Bosmans +Date: Tue Dec 28 13:32:27 2010 +0100 - test: Add a8-clear + doc: Fix some broken references and gtk-doc warnings - Reported-by: Jeremy Moles - Signed-off-by: Chris Wilson + The gtk-doc comments contain some typos and are missing some escaping. - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/a8-clear.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ - test/a8-clear.ref.png | Bin 0 -> 271 bytes - 4 files changed, 66 insertions(+), 0 deletions(-) + doc/public/cairo-sections.txt | 1 + + doc/public/language-bindings.xml | 2 +- + src/cairo-clip.c | 2 +- + src/cairo-font-face.c | 6 ++-- + src/cairo-font-options.c | 2 +- + src/cairo-pattern.c | 6 +++- + src/cairo-ps-surface.c | 39 ++++++++++++++++++----------------- + src/cairo-recording-surface.c | 10 ++++---- + src/cairo-surface.c | 2 +- + src/cairo-win32-printing-surface.c | 2 +- + src/cairo.c | 27 +++++++++++++----------- + src/cairo.h | 33 ++++++++++++++++------------- + 12 files changed, 71 insertions(+), 61 deletions(-) -commit ac6fd51fe4e500973e0939983d00aa81c8acf556 -Author: Chris Wilson -Date: Wed Sep 29 13:25:08 2010 +0100 +commit 32241cde01a2a095f04c0b110067d4c1571f9cbd +Author: Andrea Canciani +Date: Sun Jan 16 18:40:42 2011 +0100 - image: Silence a compile warning + doc: Add links to flush() and mark_dirty() in direct access functions - cairo-image-surface.c: In function ‘_cairo_image_reset_static_data’: - cairo-image-surface.c:1006: warning: old-style function definition + cairo_image_get_data() and other direct access functions are often + misused by applications because they don't call cairo_surface_flush() + and/or cairo_surface_mark_dirty() around the code which accesses the + surface data directly. - Signed-off-by: Chris Wilson + Although this information is already available in the description of + the cairo_surface_t type, adding a reminder about it in the direct + access functions should make it easier to use them correctly. - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-image-surface.c | 5 +++++ + src/cairo-quartz-surface.c | 7 +++++++ + src/cairo-win32-surface.c | 6 ++++++ + 3 files changed, 18 insertions(+), 0 deletions(-) -commit 75e2b7c7b52be6663fac05925b9b4cc5f3b42f9f -Author: Tim Janik -Date: Thu Sep 23 13:55:11 2010 +0200 +commit 01c66d34c387a2d2b9114a9fccc7491ad7ff1315 +Author: Maarten Bosmans +Date: Tue Dec 28 11:34:02 2010 +0100 - cairo: docu fix for cairo_set_source_surface + doc: Add a remark about toy status of the PNG API + + The PNG API is just a toy API whose main purpose is to make it easy to + write minimal examples of cairo features or testcases for bugs. For + these purposes there is no need to tune the output PNG file or to + provide additional information in optional PNG chuncks, but real + applications need to do that quite often. The documentation now points + out what is the correct procedure to write image data to a file. - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-png.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) -commit 4cf5260e99e3e7588e45ee179c57b75588b95987 -Author: Kouhei Sutou -Date: Sun Sep 12 10:36:27 2010 +0900 +commit 14afb69d3dc889715451cab6f54ec6ce73b431dd +Author: Andrea Canciani +Date: Fri Jan 7 00:19:55 2011 +0100 - xml: fix a typo to correct the indentation after + xlib: Handle a wider range of glyph positions - Signed-off-by: Kouhei Sutou + Backport the change from 588dead005d69c022245ff017f53ff403b50e9db to + Xlib. - src/cairo-xml-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-xlib-surface.c | 44 ++++++++++++++++++++++---------------------- + 1 files changed, 22 insertions(+), 22 deletions(-) -commit 0f070bd5ff9ad17b90852e8a7ba102c6b4b050f6 -Author: Tomáš Chvátal -Date: Sat Sep 11 22:55:23 2010 +0200 +commit 588dead005d69c022245ff017f53ff403b50e9db +Author: Andrea Canciani +Date: Wed Dec 22 11:30:45 2010 +0100 - Fix posix calls in configure.ac test code. + xcb: Handle a wider range of glyph positions - Fixes https://bugs.gentoo.org/show_bug.cgi?id=336779 + _can_composite_glyphs() checks that the position of each glyph can be + represented as a 16-bit offset from the destination origin. - Signed-off-by: Tomáš Chvátal + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=31897 - configure.ac | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-xcb-surface-render.c | 26 +++++++++----------------- + 1 files changed, 9 insertions(+), 17 deletions(-) -commit f59771051badc2ea708437c5faa27d0895f787d6 -Author: Chris Wilson -Date: Wed Aug 18 08:48:36 2010 +0100 +commit 10bae9d9ce5ece5bc5b4a929e791d9906a6b24b5 +Author: Andrea Canciani +Date: Wed Dec 22 00:24:59 2010 +0100 - drm: Add missing header file for tarball + xcb: Stricter glyph validation + + To ensure that we can correctly issue the glyph operation, glyph size + must fit in an XCB request and its position must be within the + representable range (16-bit offset). - src/Makefile.sources | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) + src/cairo-xcb-surface-render.c | 102 ++++++++++++++++++++++++++++++---------- + 1 files changed, 77 insertions(+), 25 deletions(-) -commit 8fca990be7fca609e834703e60dd888c13fc637f -Author: Chris Wilson -Date: Fri Sep 10 13:35:11 2010 +0100 +commit c3f9a0cf473f3ef9fd89b2a9738e1ce61fd0b6cc +Author: Andrea Canciani +Date: Wed Dec 22 00:21:19 2010 +0100 - cairo: Remove trailing comma from cairo_device_t + xcb: Correct handling of index 0 glyphs - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30115 - Reported-by: Murray Cumming + Glyph caches (with direct glyph index matching) cannot be completely + initialized with zeroes, otherwise the code will incorrectly believe + that the lookup for the 0-index glyph has already been performed. - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-xcb-surface-render.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) -commit 291876ad3477330143bbb814ea72c658dc8ca584 -Author: Andrea Canciani -Date: Thu Sep 9 22:53:38 2010 +0200 +commit a87001c0631da31f9caccdd99f31739c6e85a4e9 +Author: Uli Schlachter +Date: Tue Jan 4 12:39:12 2011 +0100 - test: do not leak resources + xcb: Fix premature pixmap free in boilerplate cleanup - Silence some leak reports by check-valgrind. + A xcb surface has to be finished before the associated drawable can be freed or + there will be X11 errors when the surface is later finished or used again. + + Signed-off-by: Uli Schlachter - test/subsurface-outside-target.c | 1 + + boilerplate/cairo-boilerplate-xcb.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 8fda4ab1cc7f60196b232d194c33e592ecdec9b5 -Author: Andrea Canciani -Date: Thu Aug 26 11:15:46 2010 +0200 +commit 673c44d3e85e31d6411598706dc025cd474b7dcf +Author: Uli Schlachter +Date: Tue Jan 4 12:36:42 2011 +0100 - image: add _cairo_image_reset_static_data + xcb: Check the check for errors in boilerplate - Image has static caches which needs to be reset to make - cairo_debug_reset_static_data behave as expected. - Silences a bunch of leak reports by check-valgrind. + We have to make sure we received all errors that the X server sent out before we + can be sure there are none. To do so, we just have to send some request and wait + for its reply, because that guarantees that the replies/errors to all previous + requests were received. - Reviewed-by: Chris Wilson + _cairo_boilerplate_xcb_synchronize doesn't need this, because the GetImage + request already makes sure we received everything. + + Signed-off-by: Uli Schlachter - src/cairo-debug.c | 2 ++ - src/cairo-image-surface.c | 42 ++++++++++++++++++++++++++++++++++-------- - src/cairoint.h | 3 +++ - 3 files changed, 39 insertions(+), 8 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) -commit ca775cbf5a7245092cabdda43db9d06e96613ff4 -Author: Andrea Canciani -Date: Thu Aug 26 11:13:51 2010 +0200 +commit 51626ed2eed1abd7c540160988017c101da28952 +Author: Uli Schlachter +Date: Tue Jan 4 12:33:28 2011 +0100 - test: do not leak resources + xcb: Check harder for X11 errors in boilerplate - Silence two leak reports by check-valgrind. + This commit makes the boilerplate code check for errors from the X server before + disconnecting and during synchronize. This should make sure no errors are ever + lost and silently ignored. - Reviewed-by: Chris Wilson + Signed-off-by: Uli Schlachter - test/linear-gradient-large.c | 1 + - test/nil-surface.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 74 ++++++++++++++++++++++------------- + 1 files changed, 47 insertions(+), 27 deletions(-) -commit 2b6c4c2a64c585cb815089e83719e00b1cfc985f -Author: Carlos Garcia Campos -Date: Thu Sep 9 11:28:03 2010 +0200 +commit f8277dfdaf60ebb1d6c60780cff559497780b5b6 +Author: Uli Schlachter +Date: Tue Jan 4 13:05:03 2011 +0100 - recording: Document CAIRO_HAS_RECORDING_SURFACE macro + xcb: Only print the first error and ignore subsequent ones + + It is quite likely that following errors are caused by the previous ones. To + avoid flooding users we now silently discard all the errors and events after the + first one. + + Signed-off-by: Uli Schlachter - src/cairo-recording-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) -commit d8f88cf3f97af6771a4d77bf81e1025eb7bcfd1d -Author: Carlos Garcia Campos -Date: Thu Sep 9 11:00:42 2010 +0200 +commit 8a65279ee1a5b7170bad552691ce5f96ef6cd8bd +Author: Uli Schlachter +Date: Tue Jan 4 12:29:11 2011 +0100 - recording: Fix cairo_recording_surface_create() doc comments + xcb: Add a define for some magic number - The name of the parameters in the docs should match the name of the - function parameters. Added also return value docs. + In X11, errors look like events with response_type == 0. Using a define looks + better than just a "trust me!". + + Signed-off-by: Uli Schlachter - src/cairo-recording-surface.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 737880260f1895667baf25bcc6814052e6a6a027 -Author: Carlos Garcia Campos -Date: Thu Sep 9 10:57:13 2010 +0200 - - recording: Add section doc comments - - src/cairo-recording-surface.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 1ddc1bfa01e4c17001504c886bc5fb97625f5861 -Author: Carlos Garcia Campos -Date: Thu Sep 9 10:54:50 2010 +0200 - - doc: Add section for recording surface - - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 7 +++++++ - 2 files changed, 8 insertions(+), 0 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) -commit a48eccbf77874e00a57ab7f1ab96ed0f359b3963 -Author: Chris Wilson -Date: Tue Sep 7 13:58:29 2010 +0100 +commit 8957e506321c4dc1ca59c8a88012801509b0d338 +Author: Uli Schlachter +Date: Tue Jan 4 12:27:33 2011 +0100 - configure: Fix typo "(requires both --enable-xcb)" + xcb: Handle events in boilerplate + + Cairo shouldn't cause any events during a test run. Verify this by explicitly + handling events, too. + + Signed-off-by: Uli Schlachter - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) -commit faeb6caaeba76c9797db0cd917bff4f102512d59 -Author: Chris Wilson -Date: Mon Sep 6 18:40:27 2010 +0100 +commit f0bb3a29b36f85973ba678b19c5bf057f18506ed +Author: Andrea Canciani +Date: Mon Jan 3 20:12:07 2011 +0100 - version: 1.10.1 open for bugfixing + pattern: Remove unused _cairo_pattern_size function + + 'git log -S_cairo_pattern_size' only finds the commit + a856371bef496da0e84226f4fd2fc3cb72e955ac, in which this function was + added, thus it looks like it has never been used. - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-pattern.c | 39 --------------------------------------- + src/cairoint.h | 3 --- + 2 files changed, 0 insertions(+), 42 deletions(-) -commit cb0bc64c16b3a38cbf0c622830c18ac9ea6e2ffe -Author: Chris Wilson -Date: Mon Sep 6 17:15:51 2010 +0100 +commit e5f54bb9f34a463cd10240451dd5d29a735c4506 +Author: Uli Schlachter +Date: Sat Dec 25 14:46:43 2010 +0100 - version: 1.10.0 *release* + XCB: Make sure SHM memory isn't reused too early + + This commit delays the return of a SHM area to the free pool. When + _cairo_xcb_shm_info_destroy is called, it now adds the cairo_xcb_shm_info_t to a + list of pending memory areas and sends a GetInputFocus request to the server. - /me faints with excitement. + This cairo_xcb_shm_info_t is only really freed when the GetInputFocus request + completes. To avoid unnecessarily waiting for the X server, we check via + xcb_poll_for_reply for the reply which returns immediately if the reply isn't + received yet. + + This commits fixes a race where the shared memory area is reused before the X + server finished reading data from it. This does NOT fix races where cairo draws + something new to the same cairo_xcb_shm_info_t while the X server still reads + from it. However, there doesn't seem to exist any code currently where the shm + info isn't immediately destroyed after it was used. + + This commit fixes the following tests for xcb-render-0.0 if SHM is enabled: + + joins mask mask-transformed-image push-group push-group-color radial-gradient + radil-gradient-mask radial-gradient-mask-source radial-gradient-one-stop + radial-gradient-source smask smask-mask smask-paint + + This also fixes mesh-pattern-transformed for all the xcb boilerplate "backends". + + Signed-off-by: Uli Schlachter - cairo-version.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-xcb-connection.c | 11 ++++++ + src/cairo-xcb-private.h | 6 +++ + src/cairo-xcb-shm.c | 75 +++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 88 insertions(+), 4 deletions(-) -commit 87fad104645c481ab027afbc9fa45c54cacbc9a7 -Author: Chris Wilson -Date: Mon Sep 6 17:14:41 2010 +0100 +commit 6b4e07d1430c704fc976edf63c27c46f16a8751f +Author: Uli Schlachter +Date: Sat Dec 25 14:47:29 2010 +0100 - NEWS: Sum up 2 years of development for 1.10.0 in 60 lines + Switch the order of two functions in the C file + + The following commit adds a call to _cairo_xcb_shm_info_destroy to some function + in-between, but it also renames it and does some other changes to this. Thus, + move this function first to make the diff easier to read. :) + + Signed-off-by: Uli Schlachter - NEWS | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 61 insertions(+), 0 deletions(-) + src/cairo-xcb-shm.c | 68 +++++++++++++++++++++++++------------------------- + 1 files changed, 34 insertions(+), 34 deletions(-) -commit 04623ef9df7274d411a3b7f03129bf43e53e7086 -Author: Chris Wilson -Date: Mon Sep 6 13:15:55 2010 +0100 +commit 30b961f895f924ceb65574f15ecbe0ff1948c8aa +Author: Uli Schlachter +Date: Sat Dec 25 14:17:33 2010 +0100 - test: Add subsurface-outside-target refs to REFERENCE_IMAGES + Remove an unused field from cairo_xcb_shm_info_t + + Signed-off-by: Uli Schlachter - test/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-xcb-connection-shm.c | 10 ++++------ + src/cairo-xcb-private.h | 3 +-- + src/cairo-xcb-surface-core.c | 19 +++++++++---------- + src/cairo-xcb-surface-render.c | 19 +++++++++---------- + src/cairo-xcb-surface.c | 21 ++++++++++----------- + 5 files changed, 33 insertions(+), 39 deletions(-) -commit d5b2c2a12ebea33f4d108d4deec2e9111c8c7e12 -Author: Chris Wilson -Date: Mon Sep 6 13:10:08 2010 +0100 +commit c72c7aa6d69ed4a08bde62f12b34907c7cce8bce +Author: Andrea Canciani +Date: Sun Jan 2 19:32:26 2011 +0100 - test: Rename clip-fill-*-unbounded.image16 ref to match REFERENCE_IMAGES + matrix: Fix warnings about documentation by 'make check' + + 'make check' complains about the syntax of the documentation: the + space between the function name and the parenthesis is not allowed. - test/clip-fill-eo-unbounded.image16.ref.png | Bin 0 -> 2887 bytes - test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes - test/clip-fill-nz-unbounded.image16.ref.png | Bin 0 -> 2887 bytes - test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) + src/cairo-matrix.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit cab9682f9dc4c99dcd51ddb66abd756e2ac7a63c -Author: Chris Wilson -Date: Mon Sep 6 12:24:47 2010 +0100 +commit 200e147322a7a17dec91ad5f678a07fdfaf38de2 +Author: Andrea Canciani +Date: Fri Dec 17 11:04:53 2010 +0100 - check: Ignore the documentation errors. + pattern: Use double precision for gradient extreme objects - Currently it is complaining about having documentation for - unconfigured sections, ignore it for now. + Using double precision for gradient extreme objects ensures that they + are preserved as specified when constructing the gradient pattern. + + Fixes huge-linear, huge-radial. + + Fixes part of https://bugs.freedesktop.org/show_bug.cgi?id=32215 - doc/public/check-doc-coverage.sh | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) + src/cairo-gl-composite.c | 20 ++-- + src/cairo-pattern.c | 211 +++++++++++++++++------------------- + src/cairo-qt-surface.cpp | 38 +++---- + src/cairo-script-surface.c | 18 ++-- + src/cairo-skia-surface.cpp | 8 +- + src/cairo-svg-surface.c | 40 +++----- + src/cairo-types-private.h | 10 +- + src/cairo-vg-surface.c | 18 ++-- + src/cairo-win32-printing-surface.c | 8 +- + src/cairo-xml-surface.c | 14 +-- + src/drm/cairo-drm-i915-shader.c | 28 +++--- + src/drm/cairo-drm-i965-shader.c | 28 +++--- + 12 files changed, 205 insertions(+), 236 deletions(-) -commit 8127f1f5d52bb716dbd70efe096894f2a542f4a9 -Author: Chris Wilson -Date: Mon Sep 6 12:24:14 2010 +0100 +commit 6472864b2c424c0dfe4ff4e76eff8dfb896e60e8 +Author: Andrea Canciani +Date: Thu Dec 16 23:07:30 2010 +0100 - Bump pixman requirements to 0.18.4 for assorted fixes. + test: Huge means more than MAX_INT + + Cairo makes it possible to create gradients whose extreme objects are + defined with double precision coordinates, but it internally + represents them with 24.8 fixed point precision. + + This shows that coordinates that don't fit the valid range are + mishandled and don't even trigger an error status. - README | 2 +- - configure.ac | 2 +- + test/huge-linear.c | 2 +- + test/huge-radial.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) -commit 21a2f90cdef3d592c1d1614852fe3929ed2aa765 -Author: Chris Wilson -Date: Thu Sep 2 13:19:26 2010 +0100 +commit 38dce5d14473e1106c8ea7a67b9be0f400d442a2 +Author: Andrea Canciani +Date: Fri Dec 17 11:03:03 2010 +0100 - check: Make the actual error stand out + pattern: Factor out pattern rescaling + + The same code was duplicated (incorrectly and with some minor + differences) in pattern, image, xlib and xcb. + + _cairo_gradient_pattern_max_val() abstracts that code in a function + that can be used whenever a gradients extremes need to be rescaled to + fit within a given range. + + Fixes huge-linear, huge-radial. + + Fixes part of https://bugs.freedesktop.org/show_bug.cgi?id=32215 - doc/public/check-doc-coverage.sh | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + src/cairo-image-surface.c | 64 +++------------- + src/cairo-pattern.c | 156 +++++++++++++++++++++++++--------------- + src/cairo-xcb-surface-render.c | 75 +++++++------------- + src/cairo-xlib-surface.c | 64 ++++------------- + src/cairoint.h | 6 ++ + 5 files changed, 156 insertions(+), 209 deletions(-) -commit 8258532794d0579f6c1b825b8cfb9c8f7ced4369 -Author: Chris Wilson -Date: Thu Sep 2 13:15:07 2010 +0100 +commit 7b188f852ef502306c8bd0a72ee3857b5f29e724 +Author: Andrea Canciani +Date: Thu Dec 16 22:39:09 2010 +0100 - Reduce the cairo_device_type_t to only hold the used entries. + test: Make huge-* test gradients not within pixed_fixed_t range - This should help clarify the documentation by not mentioning non-existent - devices and prevent any assumed coupling between surface-type values and - devices. + Cairo represents gradients coordinate with 24.8 fixed point precision, + but pixman uses 16.16 fixed point coordinates. + + This shows that cairo is currently unable to handle gradients with + coordinates which are valid for cairo but not for pixman. - src/cairo.h | 49 +++++------------------------- - util/cairo-gobject/cairo-gobject-enums.c | 24 ++------------ - 2 files changed, 12 insertions(+), 61 deletions(-) + test/huge-linear.c | 2 +- + test/huge-linear.image16.ref.png | Bin 1542 -> 1542 bytes + test/huge-radial.c | 2 +- + 3 files changed, 2 insertions(+), 2 deletions(-) -commit e3afbc1875d618c6d7e893971372be8f9889fc8b -Author: Chris Wilson -Date: Thu Sep 2 13:07:53 2010 +0100 +commit 51594d9787905618de608a367c3a5fc0544c52e3 +Author: Andrea Canciani +Date: Fri Dec 17 11:04:41 2010 +0100 - check: Fix for link-time-optimisation + matrix: Cairo matrix to pixman transform/offset conversion + + Xlib, XCB and image use the same code to convert a cairo_matrix_t to a + backend-specific transform. + + The code did not handle correctly some matrices, thus a new function + that performs the conversion in a more generic way was added and used + in the backends instead of fixing the repeated code. + + Fixes part of https://bugs.freedesktop.org/show_bug.cgi?id=32215 - src/check-def.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-image-surface.c | 164 ++++++--------------- + src/cairo-matrix.c | 315 +++++++++++++++++++++++++++++++--------- + src/cairo-pattern.c | 25 ++- + src/cairo-xcb-surface-render.c | 75 +--------- + src/cairo-xlib-surface.c | 35 +++-- + src/cairoint.h | 19 ++- + 6 files changed, 357 insertions(+), 276 deletions(-) -commit a9e055ff481303428cd9684dca826bc3f5d868c5 -Author: M Joonas Pihlaja -Date: Thu Sep 2 14:51:30 2010 +0100 +commit ada6057b8ccab133909b127850c41abb3216a842 +Author: Andrea Canciani +Date: Fri Dec 31 13:01:50 2010 +0100 + + test: New radial-gradient tests + + The old radial gradient tests were actually drawing the same gradients + with different operators (OVER/SOURCE) and operations (paint/mask). + + It is possible to refactor them to share the gradient construction + code. This makes it easy to change the gradient shape in all of them + to test more interesting combinations. + + Instead of testing 16 generic positions we are now testing just 7 + cases, which correspond to every possible combination of the relative + size and position of the two circles defining the gradient. In + particular we are now testing a constant radius gradient and gradients + with tangent circles. + + test/Makefile.am | 25 +-- + test/Makefile.sources | 4 - + test/radial-gradient-mask-source.argb32.ref.png | Bin 105572 -> 145713 bytes + test/radial-gradient-mask-source.c | 111 --------- + test/radial-gradient-mask-source.image16.ref.png | Bin 76287 -> 109925 bytes + ...adial-gradient-mask-source.pdf.argb32.xfail.png | Bin 90399 -> 0 bytes + ...radial-gradient-mask-source.pdf.rgb24.xfail.png | Bin 103447 -> 0 bytes + ...dial-gradient-mask-source.quartz.argb32.ref.png | Bin 112421 -> 0 bytes + ...adial-gradient-mask-source.quartz.rgb24.ref.png | Bin 120173 -> 0 bytes + test/radial-gradient-mask-source.rgb24.ref.png | Bin 115808 -> 150945 bytes + ...radial-gradient-mask-source.xlib.argb32.ref.png | Bin 0 -> 145801 bytes + .../radial-gradient-mask-source.xlib.rgb24.ref.png | Bin 0 -> 150362 bytes + test/radial-gradient-mask.argb32.ref.png | Bin 105572 -> 0 bytes + test/radial-gradient-mask.c | 110 --------- + test/radial-gradient-mask.image16.ref.png | Bin 76287 -> 204585 bytes + test/radial-gradient-mask.pdf.argb32.xfail.png | Bin 90399 -> 0 bytes + test/radial-gradient-mask.pdf.rgb24.xfail.png | Bin 103447 -> 0 bytes + test/radial-gradient-mask.quartz.argb32.ref.png | Bin 112421 -> 0 bytes + test/radial-gradient-mask.quartz.rgb24.ref.png | Bin 120173 -> 0 bytes + test/radial-gradient-mask.ref.png | Bin 0 -> 286065 bytes + test/radial-gradient-mask.rgb24.ref.png | Bin 115808 -> 0 bytes + test/radial-gradient-one-stop.argb32.ref.png | Bin 1575 -> 0 bytes + test/radial-gradient-one-stop.c | 107 --------- + test/radial-gradient-one-stop.ps3.argb32.ref.png | Bin 1444 -> 0 bytes + test/radial-gradient-one-stop.ps3.rgb24.ref.png | Bin 1314 -> 0 bytes + test/radial-gradient-one-stop.ref.png | Bin 0 -> 6306 bytes + test/radial-gradient-one-stop.rgb24.ref.png | Bin 1307 -> 0 bytes + test/radial-gradient-source.argb32.ref.png | Bin 251063 -> 408848 bytes + test/radial-gradient-source.c | 115 --------- + test/radial-gradient-source.image16.ref.png | Bin 119942 -> 169796 bytes + test/radial-gradient-source.pdf.argb32.xfail.png | Bin 192993 -> 0 bytes + test/radial-gradient-source.pdf.rgb24.xfail.png | Bin 165642 -> 0 bytes + test/radial-gradient-source.quartz.argb32.ref.png | Bin 264308 -> 0 bytes + test/radial-gradient-source.quartz.rgb24.ref.png | Bin 180829 -> 0 bytes + test/radial-gradient-source.rgb24.ref.png | Bin 179609 -> 263908 bytes + test/radial-gradient.c | 248 ++++++++++++++++---- + test/radial-gradient.image16.ref.png | Bin 188481 -> 256686 bytes + test/radial-gradient.pdf.xfail.png | Bin 211493 -> 0 bytes + test/radial-gradient.quartz.ref.png | Bin 248130 -> 0 bytes + test/radial-gradient.ref.png | Bin 262931 -> 382283 bytes + test/radial-gradient.svg.xfail.png | Bin 264425 -> 0 bytes + 41 files changed, 200 insertions(+), 520 deletions(-) + +commit b4aa01f72f98d71bded5f6fa3eaf3d12ad30eb2c +Author: Andrea Canciani +Date: Thu Dec 16 22:46:50 2010 +0100 - freelist: Separate freelist inlines from the datatype in headers. - - The cairo-freelist-private.h header has a number of static inline - functions which call hidden functions in libcairo. This poses - a problem on Solaris where the native compiler compiles inline - functions whether they are used or not, thereby adding the - link time requirements on hidden functions from whatever code - that includes cairo-freelist-private.h. Unfortunately the - boilerplate code includes cairo-private headers and indirectly - the freelist header, so linking the boilerplate helper library - fails on Solaris. + pattern: Make functions not used elsewhere static - This patch separates the structure definitions from the function - prototypes and static inlines in cairo-freelist-private.h by moving - the datatypes to a new cairo-freelist-type-private.h. + _cairo_pattern_init_linear() and _cairo_pattern_init_radial() are only + called from within cairo-pattern.c - src/Makefile.sources | 1 + - src/cairo-freelist-private.h | 28 +------------------ - src/cairo-freelist-type-private.h | 54 +++++++++++++++++++++++++++++++++++++ - src/cairo-xlib-display.c | 2 +- - src/cairo-xlib-private.h | 2 +- - 5 files changed, 58 insertions(+), 29 deletions(-) + src/cairo-pattern.c | 4 ++-- + src/cairoint.h | 9 --------- + 2 files changed, 2 insertions(+), 11 deletions(-) -commit f5632d641c44a143386ca3b413e90ed3b1a85f89 -Author: M Joonas Pihlaja -Date: Thu Sep 2 13:55:55 2010 +0300 +commit b0aef7202d40f3f45b8914e8bd0edfcc6e5112ad +Author: Andrea Canciani +Date: Fri Dec 17 10:44:41 2010 +0100 - build: Remove stray backslash. + pattern: Use cairo_color_stop_t when hashing gradient stops - A stray backslash bwetween two assignment lines apparently - invokes a GNU make extension for conditional assignments. - This patch fixes the build when using the native Solaris make. + Since 18b48a6ebc044c07f08bafd0abcb68c595c5746c the color of each + gradient stop is stored in a cairo_color_stop_t, but + _cairo_gradient_color_stops_hash() was not updated accordingly. - src/Makefile.sources | 2 +- + src/cairo-pattern.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit 3a8b8fcc2a8a48cef49211c45723862f9fa8db23 -Author: Benjamin Otte -Date: Wed Sep 1 21:14:40 2010 +0200 +commit 0501777598cf8fc4e8668e9121eac6b389591f22 +Author: Andrea Canciani +Date: Fri Dec 17 11:02:02 2010 +0100 - gobject: Fix header defines + pattern: Remove unused 'opaque' variable + + opaque is never read, thus it can be removed. - util/cairo-gobject/cairo-gobject.h | 64 ++++++++++++++++++------------------ - 1 files changed, 32 insertions(+), 32 deletions(-) + src/cairo-pattern.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) -commit 54a651564cdd2510d0a66f6720c4a45733ff3285 -Author: Benjamin Otte -Date: Wed Sep 1 18:47:16 2010 +0200 +commit 5d5d24c6a26cbabfc25067f0ea885f5705c4987c +Author: Andrea Canciani +Date: Thu Dec 23 11:44:09 2010 +0100 - build: Work around caching not reevaluating uncached variables + doc: Add documentation for the mesh API - This is a somewhat crude hack to ensure that GOBJECT_CFLAGS/LIBS are - properly cached. + The documentation content is in the comments of the functions. - configure.ac | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) + doc/public/cairo-sections.txt | 13 +++++++++++++ + doc/public/language-bindings.xml | 13 +++++++++++++ + 2 files changed, 26 insertions(+), 0 deletions(-) -commit 28ba78a9716f3c105cdfb5f7519f2435dd9cb271 -Author: Benjamin Otte -Date: Wed Sep 1 18:46:46 2010 +0200 +commit a8344f98e7f4d463c85629d00420f2c8433aff9f +Author: Adrian Johnson +Date: Fri Dec 24 16:43:53 2010 +0100 + + test: Add tests for mesh patterns + + mesh-pattern tests a mesh pattern with non-opaque two overlapping + patches. + + mesh-pattern-accuracy tests the accuracy of the color computed in each + point of a patch. It can point out defects in rasterizers which rely + on mesh subdivision only use the mesh shape instead of both shape and + color to decide when the tensor-product patches can be approximated + with Gouraud-shaded triangles. + + mesh-pattern-conical is an example of how a conical gradient can be + approximated with a mesh pattern. + + mesh-pattern-control-points tests a mesh pattern with control points + in non-default position to verify that their position affects the + color as expected. + + mesh-pattern-fold tests a mesh pattern with a patch which folds along + both sides. + + mesh-pattern-overlap tests a mesh pattern with a patch which folds + along just one side. + + mesh-pattern-transformed tests a mesh pattern with non-identity + transform matrix. + + test/Makefile.am | 14 +++ + test/Makefile.sources | 7 + + test/mesh-pattern-accuracy.c | 99 ++++++++++++++++ + test/mesh-pattern-accuracy.image16.ref.png | Bin 0 -> 7209 bytes + test/mesh-pattern-accuracy.ref.png | Bin 0 -> 8086 bytes + test/mesh-pattern-conical.c | 135 ++++++++++++++++++++++ + test/mesh-pattern-conical.image16.ref.png | Bin 0 -> 6141 bytes + test/mesh-pattern-conical.ref.png | Bin 0 -> 8655 bytes + test/mesh-pattern-control-points.c | 114 ++++++++++++++++++ + test/mesh-pattern-control-points.image16.ref.png | Bin 0 -> 7178 bytes + test/mesh-pattern-control-points.ref.png | Bin 0 -> 10665 bytes + test/mesh-pattern-fold.c | 82 +++++++++++++ + test/mesh-pattern-fold.image16.ref.png | Bin 0 -> 22913 bytes + test/mesh-pattern-fold.ref.png | Bin 0 -> 52980 bytes + test/mesh-pattern-overlap.c | 76 ++++++++++++ + test/mesh-pattern-overlap.image16.ref.png | Bin 0 -> 5933 bytes + test/mesh-pattern-overlap.ref.png | Bin 0 -> 9129 bytes + test/mesh-pattern-transformed.c | 107 +++++++++++++++++ + test/mesh-pattern-transformed.image16.ref.png | Bin 0 -> 9778 bytes + test/mesh-pattern-transformed.ref.png | Bin 0 -> 14463 bytes + test/mesh-pattern.c | 94 +++++++++++++++ + test/mesh-pattern.image16.ref.png | Bin 0 -> 12199 bytes + test/mesh-pattern.ref.png | Bin 0 -> 19566 bytes + 23 files changed, 728 insertions(+), 0 deletions(-) + +commit b164187ff6e8e643428165370dd53f9ac5f87bb3 +Author: Andrea Canciani +Date: Fri Dec 24 16:43:23 2010 +0100 - gobject: Fix pkgconfig file variable + test: Extend pattern-get-type and pattern-getters for mesh patterns - I confused % and $. I blame it on spec files. + Add testing for mesh patterns to pattern-get-type and pattern-getters. - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + test/pattern-get-type.c | 7 +++- + test/pattern-getters.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 88 insertions(+), 1 deletions(-) -commit 61a1835e40d0b6d786951143779077d16ed2486e -Author: Benjamin Otte -Date: Wed Sep 1 03:17:12 2010 +0200 +commit 96426fdf0154a9438595541a3b86d328ef730075 +Author: Andrea Canciani +Date: Tue Dec 21 11:20:50 2010 +0100 - subsurface: Fix acquire_source_surface for out-of-bounds surfaces + script: Add support for mesh patterns - See subsurface-outside-target test. + Extend CairoScript with operators based on the mesh pattern API. - src/cairo-surface-subsurface.c | 41 ++++++++++++++++++++++----------------- - 1 files changed, 23 insertions(+), 18 deletions(-) + src/cairo-script-surface.c | 85 ++++++++++++ + util/cairo-script/cairo-script-operators.c | 201 ++++++++++++++++++++++++++++ + 2 files changed, 286 insertions(+), 0 deletions(-) -commit f54c51e75c7abe872127d559e029bf4383439bca -Author: Benjamin Otte -Date: Wed Sep 1 02:10:51 2010 +0200 +commit c243f3ac9c451e0c203c820a80fb869bbec4c06d +Author: Adrian Johnson +Date: Thu Dec 9 11:01:46 2010 +0100 - test: Add subsurface-outside-target + pattern: Add public mesh pattern API - This test defines the behavior of subsurfaces when they are created to - be bigger than their target. + Add public funcions to create and define mesh patterns and getters to + examine their definition. - test/Makefile.sources | 1 + - test/subsurface-outside-target.argb32.ref.png | Bin 0 -> 2063 bytes - test/subsurface-outside-target.c | 178 +++++++++++++++++++++++++ - test/subsurface-outside-target.rgb24.ref.png | Bin 0 -> 1648 bytes - 4 files changed, 179 insertions(+), 0 deletions(-) + src/cairo-pattern.c | 1004 ++++++++++++++++++++++++++++++++++++++++++++++++++- + src/cairo.h | 62 ++++ + src/cairoint.h | 4 + + 3 files changed, 1069 insertions(+), 1 deletions(-) -commit 6eab5ee10c111cf87dcf62e3f639f44cfd1e5cf6 -Author: Maarten Bosmans -Date: Sat Aug 28 13:39:21 2010 +0200 +commit 30636206b0e2d50834cf75148cef351b8e49a52e +Author: Adrian Johnson +Date: Wed Nov 17 18:45:22 2010 +0100 - build: prefer libpng14 over older versions + pdf,ps: Add native mesh pattern support + + PS and PDF have native support for mesh patterns, but they have encode + mesh points and colors in an appropriate binary stream. - Also move libpng to the front of the list, so that the default - version of the system is first checked. + cairo_pdf_shading_* functions implement the encoding, which is the + same for PDF and PS. - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/Makefile.sources | 4 +- + src/cairo-pdf-shading-private.h | 99 ++++++++++++++ + src/cairo-pdf-shading.c | 277 +++++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 153 +++++++++++++++++++++- + src/cairo-ps-surface.c | 84 ++++++++++++ + 5 files changed, 614 insertions(+), 3 deletions(-) -commit 9f98ec6eb915204d59820cf57d32f347f9933517 -Author: M Joonas Pihlaja -Date: Sun Aug 29 00:05:51 2010 +0300 +commit 8df122cb4bc7348025a74a890e9082073553d557 +Author: Andrea Canciani +Date: Fri Dec 24 20:36:23 2010 +0100 - device: Refer the user to per-backend docs about devices. + Add mesh gradient rasterizer - The exact semantics of the device API can't be spelled out - out in the device API docs since the effects are so tied - to the specific backend. To use a particular device in - practice the user should refer to the backend docs. + Add an implementation of a fast and reasonably accurate + non-antialiased mesh gradient rasterizer. - src/cairo-device.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) + src/Makefile.sources | 1 + + src/cairo-image-surface.c | 25 + + src/cairo-mesh-pattern-rasterizer.c | 943 +++++++++++++++++++++++++++++++++++ + src/cairo-pattern.c | 54 ++ + src/cairoint.h | 12 + + 5 files changed, 1035 insertions(+), 0 deletions(-) -commit b0f65054b810d432238ff4986bee3f63e1fc46df -Author: M Joonas Pihlaja -Date: Sun Aug 29 00:03:07 2010 +0300 +commit f3c34887bd59377f003e790a4039a3074ca01f7d +Author: Andrea Canciani +Date: Tue Dec 7 18:21:35 2010 +0100 - subsurface: Add a note to the docs about usage restrictions. + gstate: Disallow incomplete mesh gradient sources - Make our assumptions about constructed subsurfaces explicit - while we work out the correct semantics for the edge cases. + Mesh gradients are constructed using multiple commands, bracketed by + explicit begin/end pairs. Using a mesh gradient inside a begin/end + pair is not allowed. - src/cairo-surface-subsurface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) + src/cairo-gstate.c | 44 ++++++++++++++++++++++++++++++++------------ + 1 files changed, 32 insertions(+), 12 deletions(-) -commit 92fe2d370d120f4d9bc95e92209d1c1cec7e900b -Author: Benjamin Otte -Date: Sat Aug 28 17:12:45 2010 +0200 +commit ed24deaa2eaefb5e11ff900d4466474592f66d33 +Author: Adrian Johnson +Date: Thu Dec 9 10:34:31 2010 +0100 + + mesh: Add mesh pattern type and enum values + + Add the mesh pattern type and an error status to be used to report an + incorrect construction of the pattern. + + Update the backends to make them ready to handle the new pattern type, + even if it cannot be created yet. + + src/cairo-device.c | 1 + + src/cairo-gl-composite.c | 1 + + src/cairo-misc.c | 2 + + src/cairo-pattern.c | 208 +++++++++++++++++++++++++++++- + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 + + src/cairo-surface.c | 1 + + src/cairo-svg-surface.c | 6 + + src/cairo-types-private.h | 46 +++++++ + src/cairo-win32-printing-surface.c | 3 + + src/cairo-xcb-surface-core.c | 1 + + src/cairo-xcb-surface-render.c | 3 +- + src/cairo-xlib-surface.c | 1 + + src/cairo.h | 9 +- + src/cairoint.h | 7 + + util/cairo-gobject/cairo-gobject-enums.c | 2 + + util/cairo-trace/trace.c | 1 + + 17 files changed, 292 insertions(+), 3 deletions(-) + +commit 19b840a9044f873657f0c0dbb3ccf82a13d43888 +Author: Andrea Canciani +Date: Wed Nov 17 14:56:08 2010 +0100 - surface-offset: Use right variable in mask + Keep makefiles in alphabetical order - Use source/mask instead of their copies. The copies only get initialized - if we actually need to translate things. + Recording surfaces were at first called meta surfaces. When the name + was changed, makefiles were not updated to keep alphabetical order. - src/cairo-surface-offset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/Makefile.sources | 4 ++-- + test/Makefile.am | 28 ++++++++++++++-------------- + test/Makefile.sources | 2 +- + 3 files changed, 17 insertions(+), 17 deletions(-) -commit df4b23ff74f3d22fb306f59cdba4dce6b0857cd2 -Author: M Joonas Pihlaja -Date: Fri Aug 27 20:26:06 2010 +0300 +commit 8f598dd69d3f98da8a59cbd87640aedf22473290 +Author: Andrea Canciani +Date: Fri Jul 23 08:20:52 2010 +0200 - subsurface: Fix crash when acquiring a source image. + quartz: Use native PDF blend modes - The code is passing in the extra info received from - the target surface's acquire_source() method to - _cairo_surface_get_extents() rather than the acquired - source surface itself. + Quartz supports PDF blend modes since 10.4 and exposes Porter-Duff + compositing operators through the public API since 10.5. - src/cairo-surface-subsurface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 238 +++++++++++++---------- + test/Makefile.am | 4 + + test/extended-blend-alpha.quartz.argb32.ref.png | Bin 0 -> 9729 bytes + test/extended-blend-alpha.quartz.rgb24.ref.png | Bin 0 -> 5598 bytes + test/extended-blend.quartz.argb32.ref.png | Bin 0 -> 4284 bytes + test/extended-blend.quartz.rgb24.ref.png | Bin 0 -> 3965 bytes + 6 files changed, 142 insertions(+), 100 deletions(-) -commit 2d146867dc4d4e17da2fd1e4776f62aaa999d90f +commit fabbc16253c68234b881af25abf734ba786d234f Author: Andrea Canciani -Date: Thu Aug 26 14:50:34 2010 +0200 +Date: Thu Dec 30 19:32:30 2010 +0100 - subsurface: Correct cloning condition + quartz: Don't dynamically load unused functions - 72644c6df2c2da1d77ca10a755dbb44bbd960c0d was using the wrong (inverted) - condition to check if the subsurface extents are contained in the - target extents. + Remove an unused variable. - src/cairo-surface-subsurface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) + src/cairo-quartz-surface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) -commit 72644c6df2c2da1d77ca10a755dbb44bbd960c0d +commit 1bc7d948c73397c453526f6e66b3f72668ce2910 Author: Andrea Canciani -Date: Thu Aug 26 14:24:17 2010 +0200 +Date: Wed Jun 23 17:34:13 2010 +0200 - subsurface: Avoid invalid accesses + quartz: Clean up dynamically loaded functions - Whenever subsurface extents are not contained in the target extents, - using the source image given by the target (with origin corrected by - using an appropriate offset in the data pointer) is not a valid - operation. Fallback to cloning in that case. + README indicates MacOSX 10.4 as a requirement for quartz and we are + directly using some functions that have been added to the public + CoreGraphics API in 10.4. + + rop 10.3-specific workarounds and link to 10.4 API functions instead + of loading them at runtime. - src/cairo-surface-subsurface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 62 ++++++++++---------------------------------- + 1 files changed, 14 insertions(+), 48 deletions(-) -commit df4465bdd11e25a1ed942bc0fc8e7dc5d43f951f -Author: Andrea Canciani -Date: Thu Aug 26 14:23:04 2010 +0200 +commit 7f68461e0b64fefc002920cc23f5617a9084f1cb +Author: Uli Schlachter +Date: Sun Dec 26 11:04:30 2010 +0100 - subsurface: Silence compiler warnings + Detach snapshots after flushing in cairo_surface_finish() - Commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 introduced two - unused variable warnings. + Flushing a surface can attach snapshots to it, thus we have to detach + the snapshots after the flush, to make sure they aren't leaked. + + Signed-off-by: Uli Schlachter - src/cairo-surface-subsurface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) + src/cairo-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) -commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 -Author: Benjamin Otte -Date: Thu Aug 26 13:55:02 2010 +0200 +commit 59ac884c607c024d0608cf7dec52509d9e9e328e +Author: Uli Schlachter +Date: Sat Dec 25 23:39:21 2010 +0100 - subsurface: Don't clip size to target size + Verify that surfaces leak no snapshots + + Finished surfaces should own no snapshots, because finished surfaces + can't be used as sources, thus their snapshots would never be used. - This clipping would modify the origin of the subsurface and then the - creator has no easy way to figure this out. + When free'ing the surface in cairo_surface_destroy(), it should have + no snapshots, or they will be leaked. + + Signed-off-by: Uli Schlachter - src/cairo-surface-subsurface.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) + src/cairo-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) -commit 174fb5f16f93887e2f319edd5b46efae3e7e93ad -Author: Benjamin Otte -Date: Thu Aug 26 13:21:04 2010 +0200 +commit c84730d88983623dddd6b9980d82648b7297444d +Author: Chris Wilson +Date: Sat Dec 25 23:04:47 2010 +0000 - subsurface: Don't apply device transform twice for source/mask + version: Post release version bump - src/cairo-surface-offset.c | 12 ------------ - 1 files changed, 0 insertions(+), 12 deletions(-) + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit e79acf47a57b60c83d1f9491aac354161986b29b -Author: Benjamin Otte -Date: Thu Aug 26 12:54:25 2010 +0200 - - subsurface: Make CAIRO_SURFACE_TYPE_SUBSURFACE public - - src/cairo-analysis-surface.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-script-surface.c | 2 +- - src/cairo-surface-subsurface.c | 4 ++-- - src/cairo-types-private.h | 3 +-- - src/cairo-xcb-surface-render.c | 4 ++-- - src/cairo-xlib-surface.c | 2 +- - src/cairo.h | 7 ++++++- - src/drm/cairo-drm-i915-shader.c | 6 +++--- - src/drm/cairo-drm-i965-shader.c | 6 +++--- - 12 files changed, 25 insertions(+), 21 deletions(-) - -commit 40459dacb52587cc784faf2635e54797d3989408 -Author: Benjamin Otte -Date: Thu Aug 26 11:45:28 2010 +0200 +commit a4ae7d59be2e545afc30c35b2235b89860e2003a +Author: Chris Wilson +Date: Sat Dec 25 09:39:08 2010 +0000 - subsurface: Don't crash when the device transform isn't integer + gl: Enable PLT symbol hiding for dispatch entries - Apply the transform before rounding to integer coordinates, so we can - handle doubles easily. + Signed-off-by: Chris Wilson - src/cairo-surface-subsurface.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) + src/cairo-gl-dispatch-private.h | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) -commit e19b213e84ab8b8ead5e0c700e5b906590e22aa1 -Author: Benjamin Otte -Date: Thu Aug 26 11:18:29 2010 +0200 +commit 109fcb39502239ff87c70cc99f2baea6e46b36a5 +Author: Uli Schlachter +Date: Sat Dec 4 16:36:28 2010 +0100 - subsurface: Make subsurfaces their own type + XCB: Stop taking the xcb socket + + This makes the xcb backend use the auto-generated xcb API instead of + hand-writing each request. This should also improve parallelism with non-cairo + threads that use the same xcb connection. + + Big thanks to Andrea Canciani for taking a look at this and finding lots of good + improvements (especially finding xcb_send_request was great). + + cairo-perf-trace and cairo-perf-diff-files between master + (6732dbf2992891be4b1f08b14a5c449fd08b637c) and this change: + + $ ./cairo-perf-diff-files ../master_perf ../xcb_no_socket_perf + old: master_perf + new: xcb_no_socket_perf + Speedups + ======== + xcb-rgba evolution-0 23558.86 (23558.86 0.00%) -> 19338.78 (19338.78 0.00%): 1.22x speedup + ▎ + xcb-rgba poppler-bug-12266-0 98.43 (98.43 0.00%) -> 82.36 (82.36 0.00%): 1.20x speedup + ▎ + xcb-rgba gnome-terminal-vim-0 5518.08 (5518.08 0.00%) -> 4905.92 (4905.92 0.00%): 1.12x speedup + ▏ + xcb-rgba gnome-terminal-20090601-0 45648.46 (45648.46 0.00%) -> 41231.25 (41231.25 0.00%): 1.11x speedup + ▏ + xcb-rgba evolution-20090607-0 71643.69 (71643.69 0.00%) -> 66314.95 (66314.95 0.00%): 1.08x speedup + ▏ + xcb-rgba poppler-0 3501.69 (3501.69 0.00%) -> 3322.26 (3322.26 0.00%): 1.05x speedup + + Slowdowns + ========= + xcb-rgba gnome-system-monitor-0 7500.01 (7500.01 0.00%) -> 7923.70 (7923.70 0.00%): 1.06x slowdown - Do not try to hide being a subsurface. - This would cause confusion when users where calling surface-type - specific getters on subsurfaces. + xcb-rgba swfdec-youtube-full-0 26409.89 (26409.89 0.00%) -> 28430.76 (28430.76 0.00%): 1.08x slowdown + ▏ + xcb-rgba gnome-system-monitor-20090821-0 34801.61 (34801.61 0.00%) -> 37891.14 (37891.14 0.00%): 1.09x slowdown - FIXME: We still need public API to access a subsurface's target though. + Signed-off-by: Uli Schlachter - src/cairo-surface-subsurface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) + src/cairo-xcb-connection-core.c | 336 ++++-------------- + src/cairo-xcb-connection-render.c | 716 +++---------------------------------- + src/cairo-xcb-connection-shm.c | 105 +----- + src/cairo-xcb-connection.c | 41 --- + src/cairo-xcb-private.h | 22 +- + src/cairo-xcb-shm.c | 3 +- + src/cairo-xcb-surface-core.c | 16 +- + src/cairo-xcb-surface-render.c | 28 +-- + src/cairo-xcb-surface.c | 30 +-- + 9 files changed, 125 insertions(+), 1172 deletions(-) -commit e65bf64c4a6e2c7ff673449b8459b3150e438e21 -Author: Benjamin Otte -Date: Thu Aug 26 11:17:06 2010 +0200 +commit cf0a4ed862d93b7e6d7d26942cfe98a50beccd4c +Author: Uli Schlachter +Date: Mon Nov 29 19:11:26 2010 +0100 - subsurface: Properly account for device offsets in the target + xcb: Remove a wrong optimization + + Clear surfaces with an alpha channel are already replaced with a + transparent color in gstate, so this code was never hit. + + Clear surfaces without an alpha channel, can be replaced with solid + black only if the surface pattern has an extend other than + CAIRO_EXTEND_NONE. + + Fixes the clear-source test for xcb. + + Signed-off-by: Uli Schlachter + Reviewed-by: Andrea Canciani - src/cairo-surface-subsurface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) + src/cairo-xcb-surface-render.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) -commit 8e9c4ea5890a4df3f463e592dc3aa429bb423608 -Author: Chris Wilson -Date: Wed Aug 11 12:18:53 2010 +0100 +commit e6c3efdd650a4eadceb003a5e1bf9d871f61a48f +Author: Uli Schlachter +Date: Sat Nov 27 21:52:59 2010 +0100 - Mark the context as invalid on the final cairo_destroy() + xcb: Work around wrong extent computation in the X server + + The X server calculates the bounding box for traps and then allocates + a temporary picture for this. When the X server calculates different + values than cairo got in extents->bounded, unbounded operators will + have wrong results. The X server only ever calculates bounds that are + larger than the correct values. + + Fix this by explicitly clipping the drawing to the expected bounds. + + Fixes clip-fill-{eo,nz}-unbounded and clip-stroke-unbounded. - We initialise the context to a non-error state upon creation, but after - destroy there is a window of opportunity where the object is kept alive - inside the context pool and the user could mistakenly keep on passing - the zombie context into cairo functions. As all entry points need to - check error status, flagging the context as an error object upon the - final unreference prevents such misuse (until such as time as the - context is reallocated). + Signed-off-by: Uli Schlachter + Reviewed-by: Andrea Canciani - src/cairo.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) + src/cairo-xcb-surface-render.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) -commit cd52378ae60ab2075d7e9ec7335e990b2f46059e +commit 4e3eb5e8ed6271511fb2b8fec78c82abbd011bed Author: Andrea Canciani -Date: Tue Aug 10 19:38:59 2010 +0200 +Date: Fri Dec 17 19:21:51 2010 +0100 - test: Update linear-gradient-large ref image + gl: Fix #include's to pass 'make check' - Make linear-gradient-large ref image match xlib gradients (both on nvidia - and on macosx) and pixman gradients (when patched to compute the linear - gradients using floating point math). + 'make check' complains that: + Checking that private header files #include "some cairo header" first (or none) + cairo-gl-dispatch-private.h:#include + Checking that source files #include "cairoint.h" first (or none) + cairo-gl-dispatch.c:#include "cairo-gl-private.h" + cairo-gl-info.c:#include "cairo-gl-private.h" - test/linear-gradient-large.ref.png | Bin 3753 -> 4079 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) + src/cairo-gl-dispatch-private.h | 2 +- + src/cairo-gl-dispatch.c | 1 + + src/cairo-gl-info.c | 1 + + 3 files changed, 3 insertions(+), 1 deletions(-) -commit a7762e3d6570a6981d8fb74ecc6ae30391c39b89 -Author: Krzysztof Kosiński -Date: Tue Aug 10 17:55:03 2010 +0200 +commit 10e58a4a1638a67da132f3bc3f4ebdbc36691b13 +Author: Uli Schlachter +Date: Wed Nov 17 18:25:27 2010 +0100 - tests: Add linear-gradient-large test + Avoid some unneeded 'is_clear = FALSE' - Shows large rounding errors in Pixman when computing gradients. Added as - a test to Cairo to catch similar issues in other backends. + When a drawing operator doesn't actually have any effect, we don't have to set + the surface's is_clear flag to FALSE. - https://bugs.freedesktop.org/show_bug.cgi?id=29470 + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 18 ++++++++++++------ + 1 files changed, 12 insertions(+), 6 deletions(-) - test/Makefile.am | 5 ++- - test/Makefile.sources | 1 + - test/linear-gradient-large.c | 67 ++++++++++++++++++++++++++++++++++++ - test/linear-gradient-large.ref.png | Bin 0 -> 3753 bytes - 4 files changed, 71 insertions(+), 2 deletions(-) +commit 2a632b1f54bfa2f6466860fcdd151cb6187128d2 +Author: Alexandros Frantzis +Date: Mon Dec 6 14:01:20 2010 +0200 -commit 56ea51fdcc273531b5e86b921aad19237a1c9415 -Author: Andrea Canciani -Date: Mon Aug 9 20:23:50 2010 +0200 + gl: Remove GLEW from the build system and the source tree - Replace insertion sort with mergesort in the scan converter - - Insertion sort can take up to O(n^2), mergesort is guaranteed to run - in O(n*log(n)). - An example showing bad performance for insertion sort is: - https://bugs.freedesktop.org/show_bug.cgi?id=28067 + build/configure.ac.features | 1 - + configure.ac | 21 - + doc/public/Makefile.am | 1 - + src/Makefile.am | 2 - + src/Makefile.sources | 7 +- + src/glew/GL/glew.h |12255 ------------------------------------------- + src/glew/GL/glxew.h | 1399 ----- + src/glew/LICENSE.txt | 73 - + src/glew/glew.c |12189 ------------------------------------------ + 9 files changed, 1 insertions(+), 25947 deletions(-) + +commit 7cf989354679793e3ffd9c058e0e0c8e5a641d35 +Author: Alexandros Frantzis +Date: Wed Dec 8 15:01:34 2010 +0200 + + gl: Replace GLEW by using the facilities provided by cairo-gl-info + + src/cairo-gl-device.c | 52 +++++++++++++------------------------- + src/cairo-gl-gradient-private.h | 5 +-- + src/cairo-gl-private.h | 6 ++-- + src/cairo-gl-shaders.c | 16 +++++------ + src/cairo-gl-surface.c | 6 +++- + 5 files changed, 34 insertions(+), 51 deletions(-) + +commit 6373db844172365787b67d5992e4daa0e2a12596 +Author: Alexandros Frantzis +Date: Wed Dec 8 14:44:05 2010 +0200 + + gl: Remove GL 1.x ARB shader implementation - The mergesort has been engineered to be fast even when working on - cases where the insertion sort would have performed well and as - expected it shows no changes in the benchmark cairo traces. + Shaders for GL 1.x ARB are served by the same implementation as GL 2.x and therefore + a dedicated ARB implementation is not needed any more. - src/cairo-tor-scan-converter.c | 138 ++++++++++++++++++++++++++++++---------- - 1 files changed, 103 insertions(+), 35 deletions(-) + src/cairo-gl-shaders.c | 187 ------------------------------------------------ + 1 files changed, 0 insertions(+), 187 deletions(-) -commit a150371a5d10e03d6c0d781c6fac950a9ac6be18 -Author: Nicolaus L Hepler -Date: Tue Aug 10 09:34:39 2010 +0200 +commit a6facced8d6a17ed26b103d995a2d61e772aaa8b +Author: Alexandros Frantzis +Date: Wed Dec 8 14:39:31 2010 +0200 - ft-font: Make alpha mapping consistent + gl: Use the GL core 2.0 shader implementation for both GL 1.x ARB and GL 2.x - Vertical RGB mapping previously forced opaque pixels. - To be consistent with horizontal RGB/BGR and vertical BGR it - should use an alpha equal to the mid channel (green). + The GL core 2.0 shader implementation can be used by both GL 1.x and 2.x + thanks to the dispatch table. - src/cairo-ft-font.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) + src/cairo-gl-shaders.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) -commit 73470862cbc5895147d5c58ca2647f539e8fe67c -Author: David Schleef -Date: Tue Aug 10 02:37:38 2010 +0200 +commit cf518b29e06328715837accd3a4390adde898624 +Author: Alexandros Frantzis +Date: Mon Dec 6 13:36:22 2010 +0200 - perf: Fix README to say cairo-perf-micro + gl: Use the dispatch table for calling ARB/EXT functions + + Use the dispatch table for calling GL functions that can have multiple name + variants. Also, always use the core variant names for GL constants. - perf/README | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) + src/cairo-gl-composite.c | 12 ++- + src/cairo-gl-device.c | 52 +++++----- + src/cairo-gl-gradient.c | 14 ++- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-shaders.c | 256 +++++++++++++++++++++++++++------------------- + src/cairo-gl-surface.c | 4 +- + 6 files changed, 195 insertions(+), 145 deletions(-) -commit df8f96423429915ef1648310fce8b5aed0917c0a -Author: Benjamin Otte -Date: Tue Aug 10 01:24:30 2010 +0200 +commit ed862d3f7bd11c6d60f48efd69c0fa035b5b17a1 +Author: Alexandros Frantzis +Date: Mon Dec 6 13:03:28 2010 +0200 - build: Fudge the build system some more so it handles extra libs + gl: Add definitions for the core variant names of used GL constants - Add NONPKGCONFIG_EXTRA_LIBS that are only put into the generated pc file - but not used when linking. This is now used to add -lcairo-gobject to - the cairo-gobject.pc file. + This allows us to use the core variant of the needed GL constants regardless of the + GL header version that is being used for compilation. - build/configure.ac.features | 3 +++ - configure.ac | 2 +- - src/cairo-features-uninstalled.pc.in | 2 +- - src/cairo-features.pc.in | 2 +- - 4 files changed, 6 insertions(+), 3 deletions(-) + src/Makefile.sources | 1 + + src/cairo-gl-ext-def-private.h | 99 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 1 + + 3 files changed, 101 insertions(+), 0 deletions(-) -commit 01325ad767acf6213135a0bad895de233324f745 -Author: Benjamin Otte -Date: Tue Aug 10 00:11:25 2010 +0200 +commit e0ab932c611ec172f3999595386126b4e9ca46da +Author: Alexandros Frantzis +Date: Fri Dec 3 20:49:39 2010 +0200 - gobject: Include the extra library in the pkgconfig file + gl: Embed the GL dispatch table in the cairo-gl context and initialize it. - configure.ac | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-egl-context.c | 6 ++++++ + src/cairo-gl-private.h | 2 ++ + src/cairo-glx-context.c | 7 +++++++ + src/cairo-wgl-context.c | 7 +++++++ + 4 files changed, 22 insertions(+), 0 deletions(-) -commit 8fb91dc3f6b691f91c322cec4b1d0ee4dbebd69c -Author: M Joonas Pihlaja -Date: Tue Aug 10 00:53:53 2010 +0300 +commit 357c2f46a77aebd8caac8ac0c6491b0db68351c7 +Author: Alexandros Frantzis +Date: Fri Dec 3 19:35:05 2010 +0200 - script: Fix script backend build. + gl: Add infrastructure for calling GL functions using a dispatch table - The flight data recorders were missing an include - of cairo-tee.h ever since cairo-tee.h became an optional - backend. + Some GL functions can be called using different names depending on the + GL version and available extensions (ARB, EXT). The dispatch table + abstracts these differences and provides a uniform API for dealing with + these functions. - util/cairo-fdr/fdr.c | 1 + - util/cairo-sphinx/fdr.c | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) + src/Makefile.sources | 2 + + src/cairo-gl-dispatch-private.h | 99 +++++++++++++++++++++++++++ + src/cairo-gl-dispatch.c | 144 +++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 58 ++++++++++++++++ + 4 files changed, 303 insertions(+), 0 deletions(-) -commit 766832364904dbf5b8a67ebc1600d2ec45d2734f -Author: Andrea Canciani -Date: Mon Aug 9 18:47:13 2010 +0200 +commit cd7c0df2bb036fddca4b874f12171121ae740a50 +Author: Alexandros Frantzis +Date: Fri Dec 3 18:48:20 2010 +0200 - perf: Improve calibration - - Make the loops count depend on the actual calibration_loops/calibration_time - instead of calibration_loops/calibration_max_time. - This avoids having some tests take much less/more than the wanted time per iteration - (I was having some tests taking about 1 second, other taking about 7 seconds when - the ms_per_iteration was 2000) - - Spend 0.5-1 times the time wanted for each iteration in calibration, increase the - accuracy of loops count. Just making the loops count be the correct ratio doesn't - guarantee that the iteration time is accurate. By actually measuring iteration - times until it gets greater than 1/4 of the wanted time, the total sum is bound - to be <= the wanted iteration time and last calibration time is between 1/4 and - 1/2 of the wanted time, so it should give a very accurate loop count. + gl: Add functions to query GL version and extensions - perf/cairo-perf-micro.c | 17 ++++++++--------- - 1 files changed, 8 insertions(+), 9 deletions(-) + src/Makefile.sources | 1 + + src/cairo-gl-info.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 10 +++++++ + 3 files changed, 81 insertions(+), 0 deletions(-) -commit 046b642db0782ab5e2a5c82988b21e05afe8e716 -Author: Rich Walsh -Date: Sat Aug 7 16:30:59 2010 +0300 +commit 07abd21a033a429e337632557d4bc91ca230fe2e +Author: Chris Wilson +Date: Wed Dec 15 15:28:49 2010 +0000 - os2: Restore surface type checking in the get_extents method. + test/arc-infinite-loop: Random return value fun. - src/cairo-os2-surface.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) + test/arc-infinite-loop.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 78bdd87b7545f8e85632ac301a69da145727fcec -Author: Rich Walsh -Date: Sat Aug 7 16:22:26 2010 +0300 +commit 65040d3e3f5e00bea8be0d33a200d8d62e11e053 +Author: Andrea Canciani +Date: Tue Dec 14 20:15:28 2010 +0100 - os2: Fix clipping to bounds when blitting pixels. + test: Add bug-extents - The bounds checks on the rectangle to blit were done - after converting target/source to inclusive/noninclusive - coordinates rather than before, potentially causing an - off-by-one in the sizes, since the same logic was applied - to both inclusive and non-inclusive coordinates. This - patch enforces bounds up front. + Add a test for the computation of approximate extents used by most + backends to esimate the region affected by drawing operations. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + Based on: + http://lists.cairographics.org/archives/cairo/2010-December/021331.html - src/cairo-os2-surface.c | 64 ++++++++++++++++++++-------------------------- - 1 files changed, 28 insertions(+), 36 deletions(-) + test/Makefile.am | 5 +++ + test/Makefile.sources | 1 + + test/bug-extents.c | 59 ++++++++++++++++++++++++++++++++++++++ + test/bug-extents.image16.ref.png | Bin 0 -> 7576 bytes + test/bug-extents.ps.ref.png | Bin 0 -> 5844 bytes + test/bug-extents.quartz.ref.png | Bin 0 -> 9310 bytes + test/bug-extents.ref.png | Bin 0 -> 9162 bytes + test/bug-extents.xlib.ref.png | Bin 0 -> 9234 bytes + 8 files changed, 65 insertions(+), 0 deletions(-) -commit d0284687b32161212d6bc52309e2d5bb516dc3e8 -Author: Rich Walsh -Date: Sat Aug 7 03:53:24 2010 +0300 +commit f10b3105d3e662616ce2ee928776cac73f536d94 +Author: Chris Wilson +Date: Mon Dec 13 16:25:58 2010 +0000 - os2: Tweak an inline declaration. + scaled-font: assert that we hold the scaled-font mutex when looking up glyphs - C99 and cairo prefers "static inline " rather - than "static inline". + Holding the mutex over glyph lookup not only prevents multi-threaded + races between insertion and deletion that spell disaster for memory + integrity, but also implies that the glyph cache is frozen. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + Signed-off-by: Chris Wilson - src/cairo-os2-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-scaled-font.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit cb30340064a2ff24dc408e185c5a309a14f6c78c -Author: Rich Walsh -Date: Sat Aug 7 03:33:10 2010 +0300 +commit 5eadc286d87fa5bdd6bd5583db52742da9acfc70 +Author: Andrea Canciani +Date: Fri Dec 10 11:21:26 2010 +0100 - os2: Consolidate error paths of cairo_os2_surface_create(). + path: Silence warnings - Use a single code path to release the resources acquired - for a surface that's been partially constructed, rather than - have multiple error exits which each release the resources - acquired so far. + gcc complains that: - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + cairo-path-fixed.c:400: warning: inlining failed in call to + '_cairo_path_fixed_drop_line_to': call is unlikely and code size + would grow - src/cairo-os2-surface.c | 120 +++++++++++++++++++++++----------------------- - 1 files changed, 60 insertions(+), 60 deletions(-) + src/cairo-path-fixed.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 66e3d650fe90754c811195c75579ac7a3512b7be -Author: Rich Walsh -Date: Sat Aug 7 03:12:12 2010 +0300 +commit c05135a3480a2d5c0e1d594ab0d111dac648fe4d +Author: Andrea Canciani +Date: Sun Dec 12 23:40:37 2010 +0100 + + test: Update ref images + + The recent (and not-so-recent) changes in gradient code changed the + results of some tests involving gradients. + + radial-gradient-* tests are marked XFAIL for pdf because poppler is + not sampling the color function with a sufficient frequency, but they + look correct in Adobe Reader. + + test/Makefile.am | 22 ++++++++++++++++++- + test/clip-operator.pdf.argb32.ref.png | Bin 9437 -> 8792 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 5391 -> 4683 bytes + test/clip-operator.quartz.argb32.ref.png | Bin 9586 -> 14959 bytes + test/clip-operator.quartz.rgb24.ref.png | Bin 4104 -> 8835 bytes + test/huge-linear.pdf.ref.png | Bin 1577 -> 1586 bytes + test/huge-linear.quartz.ref.png | Bin 0 -> 15230 bytes + test/linear-gradient-large.quartz.ref.png | Bin 0 -> 4074 bytes + test/linear-gradient-large.ref.png | Bin 4079 -> 4076 bytes + test/linear-gradient-subset.quartz.ref.png | Bin 887 -> 994 bytes + test/linear-gradient.quartz.ref.png | Bin 1060 -> 1073 bytes + test/mask.quartz.argb32.ref.png | Bin 10575 -> 11136 bytes + test/operator-source.quartz.argb32.ref.png | Bin 4754 -> 5499 bytes + test/operator-source.quartz.rgb24.ref.png | Bin 3535 -> 4345 bytes + test/push-group-color.ps2.ref.png | Bin 0 -> 2863 bytes + test/radial-gradient-extend.ps3.ref.png | Bin 0 -> 458 bytes + ...adial-gradient-mask-source.pdf.argb32.xfail.png | Bin 0 -> 90399 bytes + ...radial-gradient-mask-source.pdf.rgb24.xfail.png | Bin 0 -> 103447 bytes + ...dial-gradient-mask-source.quartz.argb32.ref.png | Bin 0 -> 112421 bytes + ...adial-gradient-mask-source.quartz.rgb24.ref.png | Bin 0 -> 120173 bytes + test/radial-gradient-mask.pdf.argb32.xfail.png | Bin 0 -> 90399 bytes + test/radial-gradient-mask.pdf.rgb24.xfail.png | Bin 0 -> 103447 bytes + test/radial-gradient-mask.quartz.argb32.ref.png | Bin 0 -> 112421 bytes + test/radial-gradient-mask.quartz.rgb24.ref.png | Bin 0 -> 120173 bytes + test/radial-gradient-one-stop.ps3.argb32.ref.png | Bin 0 -> 1444 bytes + test/radial-gradient-one-stop.ps3.rgb24.ref.png | Bin 0 -> 1314 bytes + test/radial-gradient-source.pdf.argb32.ref.png | Bin 235290 -> 0 bytes + test/radial-gradient-source.pdf.argb32.xfail.png | Bin 0 -> 192993 bytes + test/radial-gradient-source.pdf.rgb24.xfail.png | Bin 0 -> 165642 bytes + test/radial-gradient-source.quartz.argb32.ref.png | Bin 0 -> 264308 bytes + test/radial-gradient-source.quartz.rgb24.ref.png | Bin 0 -> 180829 bytes + test/radial-gradient.pdf.ref.png | Bin 280944 -> 0 bytes + test/radial-gradient.pdf.xfail.png | Bin 0 -> 211493 bytes + test/radial-gradient.quartz.ref.png | Bin 0 -> 248130 bytes + test/smask-mask.quartz.ref.png | Bin 3357 -> 3191 bytes + test/smask-paint.quartz.ref.png | Bin 3499 -> 3311 bytes + test/smask.quartz.ref.png | Bin 4067 -> 4031 bytes + test/trap-clip.quartz.argb32.ref.png | Bin 6060 -> 6926 bytes + test/trap-clip.quartz.rgb24.ref.png | Bin 5694 -> 6503 bytes + 39 files changed, 20 insertions(+), 2 deletions(-) + +commit 3cbe82fe586f64dd11a0b2bc9f58619968965369 +Author: Andrea Canciani +Date: Sun Dec 12 22:29:56 2010 +0000 - os2: Document ownership of OS/2 objects passed to surfaces. + ps,pdf: Deal with empty domain gradients. + + If all the stops of the gradient have the same offset and the + pattern's extend mode is EXTEND_PAD, then we cannot use the stops' + domain as the interpolation parameter range because this would produce + a gradient with the same start and end objects. Such ranges tickle + bad behaviour in rasterisers. + + We replace the color function with an appropriate step function + defined on [0 1]. - Clarify the documentation for cairo_os2_surface_create() - and cairo_os2_surface_set_hwnd() to note that the ownership - of the presentation space and window respectively - remains with the caller. + Fixes radial-gradient-one-stop for pdf and ps3. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + Reviewed-by: M Joonas Pihlaja - src/cairo-os2-surface.c | 23 ++++++++++++----------- - 1 files changed, 12 insertions(+), 11 deletions(-) + src/cairo-pdf-surface.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++- + src/cairo-ps-surface.c | 50 +++++++++++++++++++++++++++++++++++---- + 2 files changed, 104 insertions(+), 6 deletions(-) -commit 01525271544d5b88f87027e470fa85038d59bf8d -Author: Rich Walsh -Date: Sat Aug 7 03:08:21 2010 +0300 +commit 36e58aea51c3de1e2621e083bb82add7f25ddfef +Author: Andrea Canciani +Date: Fri Nov 19 20:16:08 2010 +0100 - os2: Don't fake an Anchor Block when one isn't needed. + ps: Unify gradient emitters and support all extend modes. - The code was being tricky about passing in a HAB to - DevOpenDC() even though one isn't needed at all under - OS/2. Pass in NULL instead. + To draw repeated gradients in ps, which only supports none and pad + extended gradients, we need an appropriate reparametrization of the + gradients that will cover the whole clip region without needing + repeats. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + This commit adds support for the drawing of reflect/repeat-extended + radial gradients through native ps patterns, using pad-extension and + no fallbacks. + + Reviewed-by: M Joonas Pihlaja - src/cairo-os2-surface.c | 16 +++------------- - 1 files changed, 3 insertions(+), 13 deletions(-) + src/cairo-ps-surface.c | 256 +++++++++++++++++------------------------------- + 1 files changed, 88 insertions(+), 168 deletions(-) -commit 883d9725e0f844e7d5cc4c50c75a812b5435702b -Author: Rich Walsh -Date: Sat Aug 7 03:01:56 2010 +0300 +commit 20ef062511e224ef098671c923a4cd4d461139c2 +Author: Andrea Canciani +Date: Fri Nov 19 20:16:16 2010 +0100 - os2: Fix buffer allocator behaviour on arithmetic overflow. + pdf: Unify gradient emitters and support all extend modes. - On arithmetic overflow the buffer allocator would attempt - to allocate zero bytes instead of failing the allocation. - Depending on the implementation of the underlying allocator - being proxied, this may result in an allocation of a zero - length buffer, causing all kinds of grief. This patch - causes arithmetic overflows to explicitly fail the allocation. + To draw repeated gradients in pdf, which only supports none and pad + extended gradients, we need an appropriate reparametrization of the + gradients that will cover the whole clip region without needing + repeats. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + This commit adds support for the drawing of reflect/repeat-extended + radial gradients through native pdf patterns using pad-extension and + no fallbacks. + + This fixes https://bugs.freedesktop.org/show_bug.cgi?id=28870 + + Reviewed-by: M Joonas Pihlaja - src/cairo-os2-surface.c | 54 ++++++++++++++++++++--------------------------- - 1 files changed, 23 insertions(+), 31 deletions(-) + src/cairo-pdf-surface.c | 414 +++++++++++++++-------------------------------- + 1 files changed, 132 insertions(+), 282 deletions(-) -commit b54037828c5b338b2f1dcbe48201225b258c1e1e -Author: Rich Walsh -Date: Sat Aug 7 02:40:20 2010 +0300 +commit ca7f141dd7931041887dc96a542c2a47da25e12f +Author: Andrea Canciani +Date: Wed Nov 17 22:07:09 2010 +0100 - os2: Fix blitting 24 bpp pixel data. + quartz: Unify gradient construction and fix radial gradients. - There's a format mismatch between cairo's pixel formats - and OS/2 24 bpp data: the individual pixels in OS/2 take - only three bytes per pixel, but there needs to be padding - between lines to make the start of a line always be aligned - at a DWORD boundary. + Share code between linear and radial gradients, using + _cairo_gradient_pattern_box_to_parameter() instead of open coding the + parameter range computation. - This patch fixes the format conversion code to include - the required padding between rows. + As a side effect this fixes parameter range computation for radial + gradients, because the previous code assumed that the focal point was + inside the circles. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html + Reviewed-by: M Joonas Pihlaja - src/cairo-os2-private.h | 1 + - src/cairo-os2-surface.c | 118 +++++++++++++++++++++++++++-------------------- - 2 files changed, 69 insertions(+), 50 deletions(-) + src/cairo-quartz-surface.c | 398 ++++++++------------------------------------ + 1 files changed, 67 insertions(+), 331 deletions(-) -commit 5aadecb3ac03d379c2c8113566fa8062843df42e -Author: Rich Walsh -Date: Sat Aug 7 02:30:01 2010 +0300 +commit 341e5b3246f785a4791606ea62873cfb180efae6 +Author: Andrea Canciani +Date: Tue Nov 23 17:49:50 2010 +0100 - os2: New API to create surfaces without a persistent HPS. + pattern: Add a function to interpolate gradient objects. - It's not always necessary to create a presentation space (HPS) for - surface tied to a window, as the user may have one already. This patch - introduces three new functions to create a surface without an HPS - and let the user manage an HPS associated with the surface. + This will be a common function used by the quartz, ps, and pdf + backends when rewriting EXTEND_REFLECT/REPEAT gradients in terms + of EXTEND_PAD gradients. - Thread "OS/2 surface fixes" on cairo-l: - http://lists.cairographics.org/archives/cairo/2010-July/020343.html - - Mozilla Bugzilla: - https://bugzilla.mozilla.org/show_bug.cgi?id=557159 + Reviewed-by: M Joonas Pihlaja - src/cairo-os2-surface.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-os2.h | 14 +++++ - 2 files changed, 153 insertions(+), 3 deletions(-) + src/cairo-pattern.c | 32 ++++++++++++++++++++++++++++++++ + src/cairo-types-private.h | 5 +++++ + src/cairoint.h | 5 +++++ + 3 files changed, 42 insertions(+), 0 deletions(-) -commit 9669faa936fe38da3615d7831e423befa5ecdfad -Author: Benjamin Otte -Date: Sun Aug 8 17:23:05 2010 +0200 +commit 08cb6db5206203fda919e3d258ce7fdbb3e3c9d8 +Author: Andrea Canciani +Date: Tue Nov 23 19:31:40 2010 +0100 - gl: Handle errors from _cairo_gl_gradient_render() + pattern: Use pattern parameter range when analysing all gradients. + + This patch adds support for analysing the transparency of a + radial gradient within some area of interest. Before the code + would ignore the extents for radial gradients. Linear gradients + now use _cairo_linear_pattern_box_to_parameter() allowing us + to remove the superfluous _extents_to_linear_parameter(). - Thanks Andrea for finding this. + Reviewed-by: M Joonas Pihlaja - src/cairo-gl-gradient.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) + src/cairo-pattern.c | 95 +++++++++++++++++++++++--------------------------- + 1 files changed, 44 insertions(+), 51 deletions(-) -commit e31b56e020df806aa6180cd2efa0a34e55e5adaf -Author: Benjamin Otte -Date: Sun Aug 8 14:45:24 2010 +0200 +commit 790837ac68e51bdd55f13b70d54ba32917cebb45 +Author: Andrea Canciani +Date: Tue Nov 23 19:31:26 2010 +0100 - configure: Fix gobject handling + pattern: Compute a covering parameter range of a gradient for a box. - 1) Explicitly depend on glib, too. - 2) Don't link gobject into libcairo proper (thanks Joonas for noticing). + This makes it possible to compute the interpolation range needed to + correctly draw a gradient so that it covers an area of interest. + + Reviewed-by: M Joonas Pihlaja - configure.ac | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-pattern.c | 463 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 7 + + 2 files changed, 470 insertions(+), 0 deletions(-) -commit ae2b7b13cd5fdeaee44496056bb99f497346e262 +commit d1e9bdf7f15fd2ba7d42c6fe18650618d29c4942 Author: Andrea Canciani -Date: Wed Aug 4 14:22:23 2010 +0200 +Date: Sat Dec 4 14:58:52 2010 +0100 - pattern: Simplify degenerate linear pattern to solid colors + ps: Avoid unneeded fallbacks for gradients with opaque stops. - Degenerate linear patterns are considered clear if they have - EXTEND_NONE, the average of the first and the last stop if they are - EXTEND_PAD, the weighted average of the stops (based on the size of - the interpolation range in which they are active, just like integrating - over the whole interpolation range and taking the average) if they are - EXTEND_REPEAT or EXTEND_REFLECT. + _cairo_pattern_is_opaque() returns false for none-extended linear + gradients and for radial gradients, but fallback is only needed if + they have non-opaque stops. + This can be tested using _cairo_pattern_alpha_range(), which only + analyses the part of the pattern which is drawn. - Fixes degenerate-linear-gradient + Reviewed-by: M Joonas Pihlaja - src/cairo-pattern.c | 119 ++++++++++++++++++++++++++++++- - test/degenerate-linear-gradient.ref.png | Bin 232 -> 322 bytes - 2 files changed, 117 insertions(+), 2 deletions(-) + src/cairo-ps-surface.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) -commit d54a5a9fc90857448954d6cbe725d4665efa3d45 +commit ec4c085624d12cef51e583c18306fd4f4c2b6aaa Author: Andrea Canciani -Date: Wed Aug 4 14:16:34 2010 +0200 +Date: Fri Nov 19 19:18:53 2010 +0100 - pattern: Add gradient degeneracy testing functions + ps, pdf, pattern: Implement _cairo_pattern_alpha_range to analyse patterns. - Introduce two new (private) functions for testing the degeneracy of linear - and radial gradients and use them instead of verbose (and error-prone) tests. + Both the ps and pdf backends are open coding analyses of the + range of pattern alphas. This patch factors out a new function + _cairo_pattern_alpha_range() to do that for them. + + Reviewed-by: M Joonas Pihlaja - src/cairo-pattern.c | 21 +++++++++++++++++---- - 1 files changed, 17 insertions(+), 4 deletions(-) + src/cairo-pattern.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 18 +++----------- + src/cairo-ps-surface.c | 12 +++------ + src/cairoint.h | 4 +++ + 4 files changed, 70 insertions(+), 22 deletions(-) -commit 63434bc43819e2c7d4db568e82f5a9a7dfb0418d +commit 6579bf728f802e13b45292b11e3782db1844316f Author: Andrea Canciani -Date: Wed Aug 4 14:22:01 2010 +0200 +Date: Thu Nov 18 13:53:51 2010 +0100 - gstate: Correct comment + pattern: Improve extents computation of radial gradients. + + Use the tests for degeneracy and new radial gradient definition + when computing pattern extents. Degenerate gradients are optimised + away by cairo-gstate into solid or clear patterns, and + the radial gradients semantics have changed to match PDF semantics. + + Reviewed-by: M Joonas Pihlaja - src/cairo-gstate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-pattern.c | 50 ++++++++++++++++++++++++-------------------------- + 1 files changed, 24 insertions(+), 26 deletions(-) -commit 28cd511fb974f886ae65e588413afcfc220a1a7c +commit 86695aced9fc3210766abae7141c89b2c2c1a273 Author: Andrea Canciani -Date: Sat Aug 7 22:55:46 2010 +0200 +Date: Wed Nov 17 21:31:07 2010 +0100 - Correct color stops comparison function + pattern: Specialise signatures of pattern specific functions - Two clear stops with different "underlying" colors must be considered - different, since when interpolated with non-clear colors they will - produce different results. + Change the signature of type-specific functions to make them only + accept the correct pattern type instead of the abstract cairo_pattern_t. + + Reviewed-by: M Joonas Pihlaja - src/cairo-color.c | 25 ++++--------------------- - 1 files changed, 4 insertions(+), 21 deletions(-) + src/cairo-pattern.c | 32 ++++++++++++-------------------- + 1 files changed, 12 insertions(+), 20 deletions(-) -commit f71a618bd2604c8f0beaf4816a38a54f6f271bd9 +commit ac9ed746b03e7c01c5997702d0694faa0938268d Author: Andrea Canciani -Date: Sat Aug 7 21:32:09 2010 +0200 +Date: Wed Nov 17 19:09:04 2010 +0100 - Fix configuration if gobject is absent + ps: Use switch instead of multiple if's + + This ensures that the compiler is able to automatically point out any + unhandled pattern type. - Autodetect gobject and only use it if present. - Its absence is not to be considered a failure since it's not required. + Reviewed-by: M Joonas Pihlaja - build/Makefile.win32.features | 2 +- - configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-ps-surface.c | 14 +++++++++----- + 1 files changed, 9 insertions(+), 5 deletions(-) -commit 661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff -Author: Benjamin Otte -Date: Sat Aug 7 20:05:42 2010 +0200 +commit e6ab2e6821301301873ab329af53939807a004b3 +Author: Andrea Canciani +Date: Wed Nov 17 19:05:58 2010 +0100 - Add cairo-gobject library + pdf: Use switch instead of multiple if's - This library is supposed to contain GType declarations for Cairo types. - It is also meant to support gobject-introspection binding creation. - - boilerplate/Makefile.win32.features | 12 + - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 + - configure.ac | 10 + - src/Makefile.win32.features | 16 + - util/Makefile.am | 4 + - util/cairo-gobject/Makefile.am | 15 + - util/cairo-gobject/cairo-gobject-enums.c | 519 ++++++++++++++++++++++++++++ - util/cairo-gobject/cairo-gobject-structs.c | 87 +++++ - util/cairo-gobject/cairo-gobject.h | 186 ++++++++++ - 10 files changed, 853 insertions(+), 0 deletions(-) - -commit fc4e8f036326da1839ec5320eba60823e7efc2db -Author: Søren Sandmann Pedersen -Date: Sat Aug 7 12:10:49 2010 -0400 - - Update documentation to reflect that rgb565 is no longer deprecated. + This ensures that the compiler is able to automatically point out any + unhandled pattern type. + + Reviewed-by: M Joonas Pihlaja - src/cairo.h | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + src/cairo-pdf-surface.c | 14 +++++++++----- + 1 files changed, 9 insertions(+), 5 deletions(-) -commit de606af5d673df193fc07fbd047ba2cec82d2f1c +commit 790d6140e79f979c8646ffee1304589db55ed3d1 Author: Andrea Canciani -Date: Tue Jul 27 18:04:36 2010 +0200 +Date: Mon Dec 13 09:37:02 2010 +0100 - quartz: improve backend detection + test: Update reference images list - Quartz previously crashed with NULL backends and didn't check for - the backend type when getting a CGContext from a quartz surface, - returning meaningless data for subsurfaces. + Some reference images were added or removed in + f85af7fe8d92f5ac304d742fcbfdaac512bace33, + e2dcbfd895463d674d55c826ba72030f5f6daa91 and + 670eb260eb2f0cbe897ce92d3a7ab4542fb17307, but Makefile.am was not + updated accordingly. - src/cairo-quartz-surface.c | 24 +++++++++++++++--------- - 1 files changed, 15 insertions(+), 9 deletions(-) + test/Makefile.am | 37 ++++++++++++++++++++++--------------- + 1 files changed, 22 insertions(+), 15 deletions(-) -commit 056ce165c4377e9cf93fd7a06b6b0d5d4d98cb8c +commit 85a489f0f212d68c69dbe5807b379b874daef4d1 Author: Andrea Canciani -Date: Tue Jul 27 18:50:55 2010 +0200 - - quartz: fix solid masking fallback - - Falling back when painting would ignore the alpha value (which is - needed to have the correct mask opacity). - _cairo_quartz_surface_paint_cg doesn't fallback, so the usual mask - fallback path is now taken, as expected. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) +Date: Thu Dec 9 22:00:15 2010 +0100 + + polygon: Merge _cairo_polygon_init and _cairo_polygon_limit + + _cairo_polygon_limit() had to be called immediately after + _cairo_polygon_init() (or never at all). + + Merging the two calls is a simple way to enforce this rule. + + src/cairo-bentley-ottmann.c | 3 +-- + src/cairo-clip.c | 3 +-- + src/cairo-gl-surface.c | 6 ++---- + src/cairo-image-surface.c | 6 ++---- + src/cairo-path-fill.c | 16 ++++++---------- + src/cairo-path-stroke.c | 4 +--- + src/cairo-polygon.c | 17 ++++++----------- + src/cairo-surface-fallback.c | 6 ++---- + src/cairo-xcb-surface-render.c | 6 ++---- + src/cairoint.h | 9 +++------ + src/drm/cairo-drm-i915-surface.c | 6 ++---- + src/drm/cairo-drm-i965-surface.c | 6 ++---- + 12 files changed, 30 insertions(+), 58 deletions(-) -commit bdeade14ea86fb5f3ff17accd71711d2c40b1b33 +commit 75f34b595aead729b6f6a7017c8790d68dfa0326 Author: Andrea Canciani -Date: Wed Jul 28 19:33:53 2010 +0200 +Date: Thu Dec 9 22:00:10 2010 +0100 - quartz: fix stroking with unbounded operators + fill: Simplify path to polygon conversion - Self-intersecting strokes were drawn incorrectly when an unbounded - operator was used, since the fixup operation also cleared the - intersection. + Using _cairo_path_fixed_interpret_flat() greatly simplifies the path + to polygon conversion (because it already converts curve_to's to + line_to's). - Fixes clip-stroke-unbounded. + This commit also removes the optimization which merges two consecutive + lines if they have the same slope, because it's unlikely (since it + should already happen during path construction), it doesn't provide + better performance (at least not measurable with the currently + available cairo-traces) and bloats the code. - src/cairo-quartz-surface.c | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) + src/cairo-path-fill.c | 91 ++++++++++++++++++++------------------------ + src/cairo-polygon.c | 88 ------------------------------------------- + src/cairo-types-private.h | 7 --- + src/cairoint.h | 11 ----- + 4 files changed, 41 insertions(+), 156 deletions(-) -commit 8f38d2aa29bc0d69690cbf542c4a2b497b7a0c0a +commit df453b7aca5ad7c4b796f150c8a90e78c1b96e04 Author: Andrea Canciani -Date: Thu Jul 29 10:45:59 2010 +0200 +Date: Thu Dec 9 22:00:06 2010 +0100 - test: improve clip-*-unbounded tests + path: Remove support for inverse direction interpretation - Merge clip-*-unbounded tests and add self-intersections to the paths - that are drawn. This exposes a bug in the unbounded fixup code in quartz. - - Signed-off-by: Chris Wilson + The previous commit guarantees that paths are always interpreted in + the forward direction, so the code allowing both directions is not + needed anymore. - test/Makefile.am | 35 ++-- - test/Makefile.sources | 3 +- - test/clip-draw-unbounded.c | 184 ++++++++++++++++++++ - test/clip-fill-eo-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes - test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes - test/clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes - test/clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes - test/clip-fill-eo-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes - test/clip-fill-eo-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes - ...p-fill-eo-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes - test/clip-fill-eo-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes - test/clip-fill-eo-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes - test/clip-fill-nz-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes - test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes - test/clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes - test/clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes - test/clip-fill-nz-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes - test/clip-fill-nz-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes - ...p-fill-nz-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes - test/clip-fill-nz-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes - test/clip-fill-nz-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes - test/clip-fill-unbounded.argb32.ref.png | Bin 1607 -> 0 bytes - test/clip-fill-unbounded.c | 105 ----------- - test/clip-fill-unbounded.image16.ref.png | Bin 1204 -> 0 bytes - test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 1244 -> 0 bytes - test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 1244 -> 0 bytes - test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 1436 -> 0 bytes - test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 1368 -> 0 bytes - test/clip-fill-unbounded.rgb24.ref.png | Bin 1304 -> 0 bytes - test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 1601 -> 0 bytes - test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 1601 -> 0 bytes - ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1438 -> 0 bytes - test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1759 -> 0 bytes - test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1430 -> 0 bytes - test/clip-stroke-unbounded.argb32.ref.png | Bin 1694 -> 3545 bytes - test/clip-stroke-unbounded.c | 102 ----------- - test/clip-stroke-unbounded.image16.ref.png | Bin 1255 -> 0 bytes - test/clip-stroke-unbounded.image16.rgb24.ref.png | Bin 0 -> 2778 bytes - test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 1351 -> 0 bytes - test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 1351 -> 0 bytes - test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 1493 -> 3362 bytes - test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 1356 -> 3061 bytes - test/clip-stroke-unbounded.rgb24.ref.png | Bin 1372 -> 3063 bytes - test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 1697 -> 0 bytes - test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 1697 -> 3569 bytes - ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1437 -> 3123 bytes - test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1785 -> 3620 bytes - test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1442 -> 3109 bytes - 48 files changed, 204 insertions(+), 225 deletions(-) - -commit 142df6f9638e10d0712e092d902f7670965a88f9 -Author: Benjamin Otte -Date: Fri Jul 30 22:04:44 2010 +0200 + src/cairo-path-fixed.c | 45 +++++++++++---------------------------------- + 1 files changed, 11 insertions(+), 34 deletions(-) + +commit a8ae8759f51a283fc1d65b055eda8e401d9ccf2e +Author: Andrea Canciani +Date: Thu Dec 9 22:00:01 2010 +0100 + + path: Always interpret in forward direction + + Path are always interpreted in forward direction, so the ability of + interpreting in the opposite direction (which is very unlikely to be + useful at all) can be removed. + + src/cairo-debug.c | 1 - + src/cairo-path-bounds.c | 2 +- + src/cairo-path-fill.c | 1 - + src/cairo-path-fixed-private.h | 1 - + src/cairo-path-fixed.c | 11 ++++------- + src/cairo-path-in-fill.c | 1 - + src/cairo-path-stroke.c | 4 ---- + src/cairo-path.c | 4 ---- + src/cairo-pdf-operators.c | 1 - + src/cairo-qt-surface.cpp | 1 - + src/cairo-quartz-surface.c | 1 - + src/cairo-recording-surface.c | 2 +- + src/cairo-scaled-font.c | 2 +- + src/cairo-script-surface.c | 1 - + src/cairo-skia-surface.cpp | 1 - + src/cairo-svg-surface.c | 1 - + src/cairo-type1-fallback.c | 1 - + src/cairo-vg-surface.c | 1 - + src/cairo-win32-printing-surface.c | 1 - + src/cairo-xml-surface.c | 1 - + src/cairoint.h | 2 -- + 21 files changed, 7 insertions(+), 34 deletions(-) + +commit 83605de9958696d47b15baa2c95731bc076ff368 +Author: Andrea Canciani +Date: Thu Dec 9 21:59:43 2010 +0100 - configure: Disable xml backend by default + path: Cleanup unused current_point - We don't want to enable it by default when nobody uses it. + The code keeps track of the current point but doesn't use it. + + Remove it to clean up. - boilerplate/Makefile.win32.features | 2 +- - build/Makefile.win32.features | 2 +- - configure.ac | 2 +- - src/Makefile.win32.features | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-path.c | 18 ------------------ + 1 files changed, 0 insertions(+), 18 deletions(-) -commit 9f33f8453b4949cfdc63169d3acd7238f89379c2 -Author: Benjamin Otte -Date: Fri Jul 30 21:48:14 2010 +0200 +commit f317a31b3fd14949edaca70f896c8a3cdecfce18 +Author: Andrea Canciani +Date: Tue Nov 23 23:36:14 2010 +0100 - configure: Disable tee backend by default + surface: Remove _cairo_surface_*_extents - We don't want to enable it by default when nobody uses it. + They have been replaced by cairo_composite_rect_t functions. - boilerplate/Makefile.win32.features | 4 +++- - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 2 ++ - configure.ac | 2 +- - src/Makefile.win32.features | 8 +++++++- - src/cairo-surface.c | 4 ++++ - test/api-special-cases.c | 6 ++++++ - 7 files changed, 24 insertions(+), 3 deletions(-) + src/cairo-surface.c | 162 --------------------------------------------------- + src/cairoint.h | 49 --------------- + 2 files changed, 0 insertions(+), 211 deletions(-) -commit 9f4d677e2a6dd0bfbbbe20de39f92177bfdfc0e8 -Author: Benjamin Otte -Date: Fri Jul 30 22:15:55 2010 +0200 +commit 0ae9b547415a71126848f61f76f895d38584435c +Author: Andrea Canciani +Date: Tue Nov 23 23:58:09 2010 +0100 - tee: Move definitions into separate header + pdf: Use composite rectangles in fill_stroke + + All other pdf drawing functions have been updated to use + cairo_composite_rectangles_t to compute the extents affected by the + operation in 3a5d71c431dfb251308c3e4e02d2ea4acec90a91, but fill_stroke + was not changed. + + This removes the last usage of the old _cairo_surface_*_extents() + functions. - src/Makefile.sources | 6 +++- - src/cairo-tee-surface.c | 2 + - src/cairo-tee.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 17 ------------ - test/api-special-cases.c | 3 ++ - 5 files changed, 75 insertions(+), 19 deletions(-) + src/cairo-pdf-surface.c | 63 +++++++++++++++++++++++++++++++++++------------ + 1 files changed, 47 insertions(+), 16 deletions(-) -commit 14639e6b8525ada2cb93abb1d70dde827b7bf9e0 -Author: Kristian Høgsberg -Date: Thu Jun 17 18:29:48 2010 -0400 +commit 71e6520fa6a695710482eafd022f9e44c45c0610 +Author: Andrea Canciani +Date: Mon Nov 15 21:08:06 2010 +0100 - egl: Use EGL_KHR_surfaceless_opengl extension when available + surface: Remove _cairo_surface_fill_rectangle - This lets us avoid creating a throwaway pbuffer just to make the - context current. - - src/cairo-egl-context.c | 58 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 38 insertions(+), 20 deletions(-) + It is not used anymore. -commit b6fd673d37e1c8962d15c0e0e59322a2002fc399 -Author: Chris Wilson -Date: Mon Jul 26 13:15:38 2010 +0100 + src/cairo-surface.c | 39 --------------------------------------- + src/cairoint.h | 9 --------- + 2 files changed, 0 insertions(+), 48 deletions(-) - version: 1.9.15 post-snapshot bump +commit 17fef8c437483ca082226b41e1850eb383f0251a +Author: Andrea Canciani +Date: Wed Dec 1 16:16:00 2010 +0100 - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + test: Add arc-infinite-loop + + The handling of angles above 2pi in cairo_arc is not very solid and is + basically untested. + + This test should ensure that huge inputs don't hang cairo. -commit ed8c6f42540f03a62fd64ad83b7c397528092232 -Author: Chris Wilson -Date: Mon Jul 26 12:53:44 2010 +0100 + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/arc-infinite-loop.c | 59 ++++++++++++++++++++++++++++++++++++++++ + test/arc-infinite-loop.ref.png | Bin 0 -> 96 bytes + 4 files changed, 61 insertions(+), 0 deletions(-) - version: 1.9.14 snapshot +commit 670eb260eb2f0cbe897ce92d3a7ab4542fb17307 +Author: Andrea Canciani +Date: Wed Dec 1 16:13:33 2010 +0100 - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + test: Add arc-looping-dash + + The handling of angles above 2pi in cairo_arc is not very solid and is + basically untested. + + This test should ensure that changes in the behavior will be noticed + by the testsuite. -commit 81094cf4622302ebaa9b3f328f5d2a56a1c07a64 -Author: Chris Wilson -Date: Mon Jul 26 12:52:56 2010 +0100 + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/arc-looping-dash.c | 77 +++++++++++++++++++++++++++++++++ + test/arc-looping-dash.image16.ref.png | Bin 0 -> 450 bytes + test/arc-looping-dash.ps.ref.png | Bin 0 -> 377 bytes + test/arc-looping-dash.quartz.ref.png | Bin 0 -> 470 bytes + test/arc-looping-dash.ref.png | Bin 0 -> 464 bytes + 7 files changed, 81 insertions(+), 0 deletions(-) + +commit 1784fd403e3dce357f018639730dd75e138904b5 +Author: Andrea Canciani +Date: Thu Dec 9 14:38:40 2010 +0100 - NEWS: 1.9.14 + arc: Clamp to 65536 full circles + + To limit the amount of memory used for arcs describing a circle + wrapped multiple times we ignore the circles after the 65536th (but + preserve the same start and end angle mod 2pi). - NEWS | 27 +++++++++++++++++++++++++++ - 1 files changed, 27 insertions(+), 0 deletions(-) + src/cairo-arc.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) -commit c1fcbd0322f86327ddd89c2eef2facbc74045629 +commit 4314a86aa7813bcd4131827181ecf44994142a72 Author: Andrea Canciani -Date: Mon Jul 26 11:21:48 2010 +0200 +Date: Thu Dec 9 14:38:10 2010 +0100 - quartz: fix REFLECT radial gradients + arc: Avoid infinite loop - The interpolation range of repeating radial gradients can safely be - reflected around any integer (previously 0), but for reflect-extended - radial gradients can only be reflected around odd integers if the - appearance is to be the same, thus reflecting around 1 is correct for both. + Adding/subtracting 2 * M_PI to a huge floating point number doesn't + change it (because of rounding) and for smaller numbers it still + requires a lot of cycles before the angle is in the desired range. - Fixes radial-gradient. + The same computation can be performed using fmod, which should provide + more accurate results and only requires O(1) time. - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo.c | 20 ++++++++++++++++---- + 1 files changed, 16 insertions(+), 4 deletions(-) -commit 3898e46d1de19848efeddb442dcf7f7663530256 -Author: Chris Wilson -Date: Fri Jul 23 09:41:48 2010 +0100 +commit 028797a729ca74b4ce2d1062fc8c90c111bf2870 +Author: Andrea Canciani +Date: Mon Dec 6 18:04:10 2010 +0100 - image: Compensate mask origins for glyph clipping + test: Handle crashed tests - Fixes the regression in bitmap-font and large-font pointed out by Andrea - Canciani since ef067933. + Crashed tests are reported as "CRASH!" in cairo-test-suite.log - src/cairo-image-surface.c | 2 +- + test/testtable.js | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit 53fcfc781eeee949abc03cf90048a2228f7e0a63 -Author: M Joonas Pihlaja -Date: Wed Jul 21 22:39:40 2010 +0300 +commit d3accefd3b9a4db5f07fb1f7bb05fb4238bf36c1 +Author: Adrian Johnson +Date: Sat Dec 4 23:58:48 2010 +1030 - build: Typos in comments. + PDF: Output a stencil mask for cairo_mask() with solid source and A1 mask - Fix inline "dnl" strings left over from a string - substitution "--" -> "dnl". - - build/configure.ac.pthread | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) + In https://bugs.launchpad.net/ubuntu/+source/libcairo/+bug/680628 a + 65K PDF printed to PDF using poppler-cairo turns into an 8MB PDF. The + original PDF contains a very large number of stencil mask images (an + A1 image used as a mask for the current color). The PDF surface was + not optimized for this particular case. It was drawing a solid color + in a group and then using an smask with the image in another group. + + Fix this by checking for source = solid and mask = A1 image and + emitting a stencil mask image. -commit fd1e731c9d0af307ebde4d888866c95bd6ebe66d -Author: Hib Eris -Date: Wed Jul 21 22:34:05 2010 +0300 + src/cairo-pdf-surface-private.h | 1 + + src/cairo-pdf-surface.c | 160 ++++++++++++++++++++++++++++++++++---- + 2 files changed, 144 insertions(+), 17 deletions(-) - build: Fix pthread detection code when there isn't one. +commit 6732dbf2992891be4b1f08b14a5c449fd08b637c +Author: Adrian Johnson +Date: Tue Nov 30 21:55:50 2010 +1030 + + CFF Subsetting: Subset subroutines + + Go through each Charstring looking for the local and global + subroutines called. To avoid modifying the Charstrings [1], the unused + subroutines are reduced to a single byte return op [2] leaving the + remaining subroutines in their original array index position. + + Results of testing with some CFF fonts with a 26 glyph [a-z] subset: + + Font Subset size: Before After + ------------------------------------------------------- + LinBiolinum_Re-0.6.4.otf 48,423 8,295 + LinBiolinum_It-0.5.1.otf 88,942 11,501 + LinBiolinum_Sl-0.4.9.otf 89,231 11,505 + LinLibertine_Re-4.7.5.otf 51,125 8,654 + LinLibetine_It-4.2.6.otf 59,333 9,632 + Inconsolata.otf 13,826 8,407 + + [1] Further reductions could be obtained by stripping out unused + subroutines and renumbering the remaining subroutines but is more + complicated due to the encoding used for subroutine numbers that is + both variable length and a function of the size of the subroutine + array. - The code was testing the output variable $use_pthread rather than - the input variable $enable_pthread when checking that pthreads - were actually found when requested. + [2] Poppler and Fontforge do not seem to like zero length unused + subroutines. - build/configure.ac.pthread | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-cff-subset.c | 345 +++++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 329 insertions(+), 16 deletions(-) -commit 108b1c7825116ed3f93aa57384bbd3290cdc9181 -Author: Karl Tomlinson -Date: Sat Jul 17 13:08:53 2010 +1200 +commit 4e60a164d42d80474d897d7e58c41fb3941bd8e2 +Author: Andrea Canciani +Date: Sun Nov 28 16:58:20 2010 +0100 - clip: consider gstate target extents in _cairo_gstate_copy_clip_rectangle_list - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29125 - - To be consistent with _cairo_gstate_clip_extents, the context's clip - should be intersected with the target surface extents (instead of only - using them when there is no clip). + test: Fix ref images - Reviewed-by: Chris Wilson + The corners of the boxes in these ref images were not correct. - src/cairo-clip.c | 72 ++++++++++++++++++--------------------------------- - src/cairo-gstate.c | 14 +++++++++- - test/get-clip.c | 16 +++++++++++ - 3 files changed, 55 insertions(+), 47 deletions(-) + test/clip-stroke.image16.ref.png | Bin 1308 -> 1305 bytes + test/clip-stroke.ref.png | Bin 1442 -> 1447 bytes + test/clipped-group.image16.ref.png | Bin 281 -> 270 bytes + test/clipped-group.ref.png | Bin 289 -> 289 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) -commit b79ea8a6cab8bd28aebecf6e1e8229d5ac017264 -Author: Karl Tomlinson -Date: Sat Jul 17 11:46:25 2010 +1200 +commit 8d7486a6ea3eff4976dacd2629d07ed5b143af23 +Author: Andrea Canciani +Date: Sun Nov 28 14:33:41 2010 +0100 - clip: consider all_clipped in _cairo_clip_get_extents - - If the gstate clip in _cairo_gstate_int_clip_extents() has all_clipped - set (and path NULL), then it returns the gstate target extents instead of - an empty rectangle. If the target is infinite, then it says the clip is - unbounded. + image: Fix _pixel_to_solid - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29124 - Tested-by test/get-clip + An A1 image with full alpha should be opaque black, not opaque white. - Reviewed-by: Chris Wilson + Use specialized solid black image instead of the generic constructor + for an A8 image with full alpha (it is likely to be cached). - src/cairo-clip.c | 5 +++++ - test/get-clip.c | 5 ++++- - 2 files changed, 9 insertions(+), 1 deletions(-) + src/cairo-image-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) -commit 6a5115901381fe9c81a8a311e267c2a00e2a1d04 -Author: Karl Tomlinson -Date: Sat Jul 17 10:47:42 2010 +1200 +commit 72b0a44a1f77c818921a699c55d4b2df0c1d1536 +Author: Andrea Canciani +Date: Sun Nov 28 14:32:51 2010 +0100 - test: return CAIRO_TEST_FAILURE from get-clip preamble on failure + image: Fix compositing of unaligned boxes - https://bugs.freedesktop.org/show_bug.cgi?id=29120 - - test/get-clip.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit f2fa15680ec3ac95cb68d4957557f06561a7dc55 -Author: Karl Tomlinson -Date: Sat Jul 17 10:39:50 2010 +1200 - - clip: return empty clip from _cairo_clip_copy_rectangle_list when all_clipped + The input of _fill_unaligned_boxes is (supposed to be) composed only + of disjoint rectangles, that can safely be passed to the rectilinear + span converter, but this function artificially introduces intersecting + rectangles when drawing non-aligned boxes. + + Using non-intersecting rectangles is easy and makes the code correct. - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29122 - Tested by test/get-clip + Fixes rectilinear-grid. - Reviewed-by: Chris Wilson + Reviewed-by: Uli Schlachter - src/cairo-clip.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) + src/cairo-image-surface.c | 22 ++++++++++++++-------- + 1 files changed, 14 insertions(+), 8 deletions(-) -commit 33ac2035876aeb9215ca0bdaaeea5265fcee61f8 -Author: Karl Tomlinson -Date: Sat Jul 17 10:13:22 2010 +1200 +commit 10389730832998567c3abad893c3a1274d71baa7 +Author: Andrea Canciani +Date: Fri Nov 26 17:55:35 2010 +0100 - test: use the surface size expected in get-clip phase "No clip set" + test: Add rectilinear-grid + + The rectilinear scan converter assumes disjoint rects as input, but + cairo-image passes intersecting rectangles to it. - https://bugs.freedesktop.org/show_bug.cgi?id=29121 + This test shows that image and any backends passing through it for the + rasterization (fallbacks, vector backends whose renderer is + cairo-based) fail in compute the corners of intersecting rectangles + correctly. - test/get-clip.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/rectilinear-grid.c | 78 +++++++++++++++++++++++++++++++++ + test/rectilinear-grid.image16.ref.png | Bin 0 -> 638 bytes + test/rectilinear-grid.ref.png | Bin 0 -> 569 bytes + 5 files changed, 81 insertions(+), 0 deletions(-) -commit bac5c28a18af5d43c96f0b64d1c7235da3f02779 -Author: Chris Wilson -Date: Sat Jul 17 10:09:14 2010 +0100 +commit cfafa3924b983a38056893b5fd8e836574deee17 +Author: Andrea Canciani +Date: Sun Nov 28 09:31:02 2010 +0100 - boilerplate: Offset the xlib window + array: Fix comment - An idea courtesy of Benjamin Otte is to stress the drivers a bit more by - not rendering to 0,0. Under various circumstances rendering to a Window - is mapped onto the Screen root Window with a collection of offsets and - clips by X. It is easy for the driver to make a mistake and misrender... + The comment was talking about using 0 as index, but was using + "num_elements" instead. - boilerplate/cairo-boilerplate-xlib.c | 4 ++-- + src/cairo-array.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) -commit 51b0c21f02a8f0f5d7f44da05e49d7f8f3bf8bc7 -Author: Benjamin Otte -Date: Fri Jul 16 19:49:53 2010 +0200 +commit f238da5291cdb347daa0be64ecc393fc519c4ead +Author: Adrian Johnson +Date: Sun Nov 28 11:45:00 2010 +1030 - build: Add explicit dependcy to cxx lib - - Otherwise the build will fail because it doesn't add the dependency - manually. - - https://bugs.freedesktop.org/show_bug.cgi?id=29114 + CFF subset: fix bug with euro glyph in fallback fonts - boilerplate/Makefile.am | 3 +++ - src/Makefile.am | 2 +- - 2 files changed, 4 insertions(+), 1 deletions(-) + src/cairo-cff-subset.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) -commit 6b92d5a0f9fce28f99b07177454da00f984fdb43 -Author: Oleg Romashin -Date: Fri Jul 16 09:47:23 2010 +0100 +commit 7feefc75f6dcb9381cd5bc1bdc3e2d722789b155 +Author: Adrian Johnson +Date: Sun Nov 28 03:46:10 2010 +1030 - qt: Use native glyph rendering. - - Remove the hack of using the xlib surface to do glyph rendering and use - the new interface introduced with Qt4.7, or else fallback to image - rendering with freetype. + CFF subset: fix subsetting of Euro glyph - Reviewed-by: Chris Wilson - [2 files changed, 35 insertions(+), 140 deletions(-) \o/] + https://bugs.freedesktop.org/show_bug.cgi?id=31878 - src/cairo-qt-surface.cpp | 169 ++++++++++------------------------------------ - src/cairo-xlib-surface.c | 6 -- - 2 files changed, 35 insertions(+), 140 deletions(-) + src/cairo-cff-subset.c | 51 +++++++++++++++++++++++++++++++++++------------ + 1 files changed, 38 insertions(+), 13 deletions(-) -commit f53f072a223c3fbdeba315f5cba755cba498e121 -Author: Chris Wilson -Date: Mon Jul 12 18:53:29 2010 +0100 +commit f85af7fe8d92f5ac304d742fcbfdaac512bace33 +Author: Adrian Johnson +Date: Sun Nov 21 23:41:33 2010 +1030 + + Change fallback resolution test to use resolutions in multiples of 72 + + With integer aligned clipping the test output has no seams. + + test/fallback-resolution.c | 26 ++++++++--------------- + test/fallback-resolution.ppi144x144.ps.ref.png | Bin 0 -> 5911 bytes + test/fallback-resolution.ppi144x144.ref.png | Bin 0 -> 8697 bytes + test/fallback-resolution.ppi144x72.ps.ref.png | Bin 0 -> 7206 bytes + test/fallback-resolution.ppi144x72.ref.png | Bin 0 -> 8445 bytes + test/fallback-resolution.ppi150x150.ref.png | Bin 8058 -> 0 bytes + test/fallback-resolution.ppi150x72.ref.png | Bin 8303 -> 0 bytes + test/fallback-resolution.ppi288x288.pdf.ref.png | Bin 0 -> 8681 bytes + test/fallback-resolution.ppi288x288.ps.ref.png | Bin 0 -> 4450 bytes + test/fallback-resolution.ppi288x288.svg.ref.png | Bin 0 -> 5771 bytes + test/fallback-resolution.ppi288x72.ps.ref.png | Bin 0 -> 6444 bytes + test/fallback-resolution.ppi288x72.ref.png | Bin 0 -> 7166 bytes + test/fallback-resolution.ppi300x300.ref.png | Bin 5639 -> 0 bytes + test/fallback-resolution.ppi300x72.ref.png | Bin 7014 -> 0 bytes + test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 14092 -> 0 bytes + test/fallback-resolution.ppi37.5x72.ref.png | Bin 12906 -> 0 bytes + test/fallback-resolution.ppi576x576.pdf.ref.png | Bin 0 -> 8732 bytes + test/fallback-resolution.ppi576x576.ps.ref.png | Bin 0 -> 3448 bytes + test/fallback-resolution.ppi576x576.svg.ref.png | Bin 0 -> 4317 bytes + test/fallback-resolution.ppi576x72.ps.ref.png | Bin 0 -> 5992 bytes + test/fallback-resolution.ppi576x72.ref.png | Bin 0 -> 6432 bytes + test/fallback-resolution.ppi600x600.ref.png | Bin 4090 -> 0 bytes + test/fallback-resolution.ppi600x72.ref.png | Bin 6326 -> 0 bytes + test/fallback-resolution.ppi72x144.ps.ref.png | Bin 0 -> 7270 bytes + test/fallback-resolution.ppi72x144.ref.png | Bin 0 -> 8677 bytes + test/fallback-resolution.ppi72x150.ref.png | Bin 8061 -> 0 bytes + test/fallback-resolution.ppi72x288.ps.ref.png | Bin 0 -> 6616 bytes + test/fallback-resolution.ppi72x288.ref.png | Bin 0 -> 7231 bytes + test/fallback-resolution.ppi72x300.ref.png | Bin 6911 -> 0 bytes + test/fallback-resolution.ppi72x37.5.ref.png | Bin 13167 -> 0 bytes + test/fallback-resolution.ppi72x576.ps.ref.png | Bin 0 -> 6349 bytes + test/fallback-resolution.ppi72x576.ref.png | Bin 0 -> 6523 bytes + test/fallback-resolution.ppi72x600.ref.png | Bin 6214 -> 0 bytes + test/fallback-resolution.ppi72x72.ref.png | Bin 8416 -> 8510 bytes + test/fallback-resolution.ppi72x75.ref.png | Bin 10620 -> 0 bytes + test/fallback-resolution.ppi75x72.ref.png | Bin 10119 -> 0 bytes + test/fallback-resolution.ppi75x75.ref.png | Bin 12127 -> 0 bytes + 37 files changed, 9 insertions(+), 17 deletions(-) + +commit 126108a6ac5aa5e615071e0cbd1901e5a5de3ca6 +Author: Adrian Johnson +Date: Wed Nov 24 21:43:07 2010 +1030 - clip: Do the NULL check before the dereference. + Boilerplate: Set fallback resolution using force_fallbacks function - Breakage introduced in the commit earlier today. + cairo_set_fallback_resolution() does not work when testing rgb24 surfaces - src/cairo-clip.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + boilerplate/cairo-boilerplate-pdf.c | 6 +++++- + boilerplate/cairo-boilerplate-ps.c | 6 +++++- + boilerplate/cairo-boilerplate-svg.c | 6 +++++- + boilerplate/cairo-boilerplate.h | 3 ++- + test/fallback-resolution.c | 4 +--- + 5 files changed, 18 insertions(+), 7 deletions(-) -commit ef0679333da881bd83b0bb4db546ea9c68f81f89 -Author: Chris Wilson -Date: Mon Jul 12 16:07:27 2010 +0100 +commit 59661f8af428b88125db033867d662e9393d0a41 +Author: Adrian Johnson +Date: Sun Nov 21 23:25:21 2010 +1030 - image: Manually clip against bounds when rendering directly - - This is path is slightly peculiar in that it explicitly avoid the - intermediate mask and the geometry is not pre-clipped. + Fix fallback-resolution test - This in conjunction with the previous commit fixes: + The recording surface source image painted onto fallback images always + had the resolution 72ppi instead of the fallback resolution of the + target surface. Fix this by passing adding a new + acquire_source_image_transformed backend function for the recording + surface to use and passing the target device transform through to the + recording surface when the image is acquired. - Clip doesn't work for text - https://bugs.freedesktop.org/show_bug.cgi?id=29008 + Based on Carl Worth's experimental acquired_source_image_transformed + branch. - which is captured in test/partial-clip-text. + https://bugs.freedesktop.org/show_bug.cgi?id=24692 - src/cairo-image-surface.c | 23 +++++++++++++++++++---- - 1 files changed, 19 insertions(+), 4 deletions(-) + src/cairo-image-surface.c | 57 +++++++++++++++++++++++++++++----------- + src/cairo-recording-surface.c | 32 ++++++++++++++++++---- + src/cairo-surface.c | 27 +++++++++++++++++++ + src/cairoint.h | 12 ++++++++ + 4 files changed, 106 insertions(+), 22 deletions(-) -commit 679e5a600bd7dae6cbde83070fb1f7355f8025a7 -Author: Chris Wilson -Date: Mon Jul 12 16:06:32 2010 +0100 - - Differentiate between reducing clip to composite extents and a rectangle - - This is required for handling glyphs when rendering directly to the - surface. - - src/cairo-clip-private.h | 4 ++++ - src/cairo-clip.c | 22 +++++++++++++++------- - src/cairo-gl-surface.c | 4 ++-- - src/cairo-image-surface.c | 10 +++++----- - src/cairo-surface-fallback.c | 10 +++++----- - src/cairo-xcb-surface-render.c | 10 +++++----- - src/drm/cairo-drm-i915-glyphs.c | 2 +- - src/drm/cairo-drm-i915-surface.c | 8 ++++---- - src/drm/cairo-drm-i965-glyphs.c | 2 +- - src/drm/cairo-drm-i965-surface.c | 8 ++++---- - 10 files changed, 46 insertions(+), 34 deletions(-) - -commit 8546a877889bfafc056c867bc9aea25e9fdcdef0 -Author: Chris Wilson -Date: Mon Jul 12 16:27:29 2010 +0100 +commit 063a3894d7ed98ba36f416a285acc88c50d3bb34 +Author: Andrea Canciani +Date: Fri Nov 26 13:46:31 2010 +0100 - test: Add partial-clip-text + pdf: Silence compiler warnings - This exercises a bug found by Igor Nikitin: + The compiler complains about a const pointer being free'd and memcpy'd + to: - https://bugs.freedesktop.org/show_bug.cgi?id=29008 + cairo-pdf-surface.c: In function ‘_cairo_pdf_surface_add_source_surface’: + cairo-pdf-surface.c:1208: warning: passing argument 1 of ‘__builtin___memcpy_chk’ discards qualifiers from pointer target type + cairo-pdf-surface.c:1208: warning: passing argument 1 of ‘__inline_memcpy_chk’ discards qualifiers from pointer target type + cairo-pdf-surface.c: In function ‘_cairo_pdf_source_surface_entry_pluck’: + cairo-pdf-surface.c:1666: warning: passing argument 1 of ‘free’ discards qualifiers from pointer target type - test/Makefile.am | 3 ++ - test/Makefile.sources | 1 + - test/partial-clip-text.c | 50 ++++++++++++++++++++++++++++++++++++ - test/partial-clip-text.ps.ref.png | Bin 0 -> 107 bytes - test/partial-clip-text.ref.png | Bin 0 -> 175 bytes - test/partial-clip-text.svg.ref.png | Bin 0 -> 173 bytes - 6 files changed, 54 insertions(+), 0 deletions(-) + src/cairo-pdf-surface-private.h | 2 +- + src/cairo-pdf-surface.c | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) -commit 53ee897449dca497d6a3d6dc90b87fea8027cc44 -Author: Chris Wilson -Date: Mon Jul 12 12:37:31 2010 +0100 +commit 1ab64965786208b94ed40aa5f7f9be59d58fbf96 +Author: Andrea Canciani +Date: Fri Nov 26 13:13:16 2010 +0100 - version: Post-snapshot bump to 1.9.13 + array: Silence warnings + + 493aaf0f15bfedc88371ffab07d862a400b0da38 made all cairo_array + functions use unsigned int for indexes and sizes. + + This commit fixes the compiler warnings about those values being + compared to signed int's. - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-cff-subset.c | 2 +- + src/cairo-pdf-surface.c | 4 ++-- + src/cairo-type1-fallback.c | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) -commit aa4cd8287f47b4538e765e1b48dcbac19813a8a2 -Author: Chris Wilson -Date: Mon Jul 12 12:12:12 2010 +0100 +commit 47b81b9fea50328bd089db4e5ef8dcb1b181515b +Author: Adrian Johnson +Date: Fri Nov 26 21:51:25 2010 +1030 - version: 1.9.12 snapshot + Truetype subset: add missing unicode ranges to cmap + + A couple of unicode ranges were missing from the cmap generated for latin fonts. + + https://bugs.freedesktop.org/show_bug.cgi?id=31878 - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-truetype-subset.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 53b129dd8aecf4e2bd8b7d2cd27b91370c6705e9 -Author: Chris Wilson -Date: Mon Jul 12 12:11:42 2010 +0100 +commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf +Author: Adrian Johnson +Date: Fri Nov 26 21:41:17 2010 +1030 - NEWS for 1.9.12. + PDF: Add missing clipper_reset - NEWS | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 56 insertions(+), 0 deletions(-) + src/cairo-pdf-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 01380f3a56b28a388d2876780f33516ecd16ee16 +commit 2a1e7e18de7c071bb7c445ae3e6c94b8f2a1590b Author: Chris Wilson -Date: Mon Jul 12 11:49:53 2010 +0100 +Date: Fri Nov 26 09:46:57 2010 +0000 - test: Missing REFERENCE_IMAGES + wgl: Use CreateWindowA with an ASCII string + + ... or else compilation with fail on Windows if UNICODE is defined + + Signed-off-by: Chris Wilson - test/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) + src/cairo-wgl-context.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 459b8ae660eb49a87ffb9da31f305718a2b4f11f -Author: Chris Wilson -Date: Mon Jul 12 11:05:57 2010 +0100 +commit 493aaf0f15bfedc88371ffab07d862a400b0da38 +Author: Andrea Canciani +Date: Wed Nov 24 12:08:03 2010 +0100 - Make distcheck happy. + array: Cleanup types + + Const-ify where appropriate and make all index and element counts + unsigned int. + + This is needed to enable accessing const cairo_array_t's without + having to manually remove the const qualifier (which happens in the + to-be-merged mesh pattern code, for example). - src/cairo-fontconfig-private.h | 2 ++ - src/cairo-skia.h | 2 +- - src/glew/GL/glew.h | 2 ++ - src/glew/GL/glxew.h | 2 ++ - test/api-special-cases.c | 5 +++-- - 5 files changed, 10 insertions(+), 3 deletions(-) + src/cairo-array.c | 19 +++++++++++-------- + src/cairoint.h | 18 +++++++++--------- + 2 files changed, 20 insertions(+), 17 deletions(-) -commit d56b1718025f8b2354b5b1eb99af41df70a6c590 +commit 9960f299ac3476d6d4c0d25d95a5891f6eab15dd Author: Andrea Canciani -Date: Mon Jul 12 10:36:24 2010 +0200 +Date: Wed Nov 24 12:07:51 2010 +0100 - test: Add halo quartz reference images + array: Add read-only accessor + + It is sometimes useful to read the elements of a const cairo_array_t, + but it is currently only possible by ignoring the const qualifier. + The _cairo_array_index_const function allows read-only access to the + array elements. - When quartz-font is enabled, halo and halo-transform fonts have a - different shape. + This is needed to enable accessing const cairo_array_t's without + having to manually remove the const qualifier (which happens in the + to-be-merged mesh pattern code, for example). - test/halo-transform.quartz.ref.png | Bin 0 -> 14360 bytes - test/halo.quartz.ref.png | Bin 0 -> 8601 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) + src/cairo-array.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- + src/cairoint.h | 3 +++ + 2 files changed, 49 insertions(+), 5 deletions(-) -commit 9107895789fc721ee6ea2ccb2ce3ab99fb978caa -Author: M Joonas Pihlaja -Date: Mon Jul 12 11:03:15 2010 +0300 +commit ae6a0de23b11e1cf34a2751fd6d4339b20340e67 +Author: Andrea Canciani +Date: Wed Nov 24 11:16:56 2010 +0100 - test: Add comments explaining the bug in bug-seams. + array: Remove snapshot support + + Array snapshots are not used anymore and just bloat the implementation + of cairo_array_t. - Where two rasterization methods meet, havoc occurs. + In particular, double indirection was needed to implement array + snapshots, as explained in c78685399307431903613733ddc936a104376943. - test/bug-seams.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) + src/cairo-array.c | 57 ++++----------------------------------------- + src/cairo-types-private.h | 4 +-- + src/cairoint.h | 4 --- + 3 files changed, 6 insertions(+), 59 deletions(-) -commit 0152db263b9b12547fadb5d080913fcbb696d34e -Author: M Joonas Pihlaja -Date: Mon Jul 12 10:36:00 2010 +0300 +commit 520206e99122f8b5c0440640afc1b35e14030a80 +Author: Uli Schlachter +Date: Sun Oct 31 18:26:59 2010 +0100 - build: Sync up autogenerated win32 build files. + xcb: Handle deferred_clear in _copy_to_picture + + This ensures that surfaces with the deferred_clear flag on are cleared + before being used as sources. + + Signed-off-by: Uli Schlachter - boilerplate/Makefile.win32.features | 9 +++++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - src/Makefile.win32.features | 9 +++++++++ - 4 files changed, 22 insertions(+), 0 deletions(-) + src/cairo-xcb-surface-render.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) -commit 06ffb7df716652baba96960cd59e1a59f4bd1ac1 -Author: Eric Anholt -Date: Sat Jul 10 14:19:50 2010 -0700 +commit 56528d7b9dd1dcd74cd1806f8b22d2d8189f0a03 +Author: Andrea Canciani +Date: Mon Nov 22 23:41:33 2010 +0100 - gl: Only use a mat3 for the transformation for gradients coordinates. + ps: Fix painting - No point in passing in a column of zeroes that we multiply by zero, or - the row that we drop on the floor. We could do even better by just - passing in a 3x2, at the expense of adding a language version - dependency (or just pass in 2 vectors). + Painting of some pattern was broken because the paint operation was + implemented as a fill to a rect containing the clip, but this rect was + not transformed as appropriate (using the cairo_to_ps matrix). + PDF simply fills the whole surface rect, so we implement the same + behavior in PS. - No significant performance difference. + Fixes clip-group-shapes-circles, clip-stroke, linear-gradient-extend, + linear-gradient-one-stop, radial-gradient-one-stop. - src/cairo-gl-shaders.c | 28 +++++++++++++--------------- - 1 files changed, 13 insertions(+), 15 deletions(-) + src/cairo-ps-surface.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) -commit 1e7485f8e5b6fd9b26f06838d8e7a35e073c394b -Author: M Joonas Pihlaja -Date: Mon Jul 12 00:23:11 2010 +0300 +commit e2c9964c3e1bbf253b20f3e7b747eeedcb3f56e6 +Author: Andrea Canciani +Date: Tue Nov 23 13:24:25 2010 +0100 - trace: Avoid stdbool.h C99ism. + quartz-font: Implement new load_truetype_table semantics - There is no on old Solaris without invoking - c99 mode explicitly. + fb0304e2a9c99fa00e68bf4b37074a6885f19cff changed and specified the + behavior of load_truetype_table. + This commit makes quartz-font implement the new behavior. - util/cairo-trace/trace.c | 184 +++++++++++++++++++++++---------------------- - 1 files changed, 94 insertions(+), 90 deletions(-) + src/cairo-quartz-font.c | 23 ++++++++++------------- + 1 files changed, 10 insertions(+), 13 deletions(-) -commit 97529a3713d899468fb3ca7a1c3f75a09bd1b215 -Author: M Joonas Pihlaja -Date: Sun Jul 11 23:54:21 2010 +0300 +commit 8db239660fab35970784bfa3bd7e7ba0cdaf46d4 +Author: Adrian Johnson +Date: Tue Nov 23 23:26:49 2010 +1030 - build: Avoid shifting shell parameters that aren't there. - - The shift primitive of the Solaris 9 Bourne shell doesn't like - it if we try to shift more formal arguments than are there. - This causes the compare_versions function in autogen.sh to croak when - the actual and compared versions differ in the number of - components. + Check is_synthetic() font backend exists before calling it - autogen.sh | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + src/cairo-cff-subset.c | 2 +- + src/cairo-truetype-subset.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit dd6026b613aa5414a128727995f2a4f79284072a -Author: Benjamin Otte -Date: Sun Jul 11 20:44:40 2010 +0200 +commit 12b1cbb07e5e23dac9f84793924080171deda37f +Author: Adrian Johnson +Date: Tue Nov 23 23:20:25 2010 +1030 - doc: Make the necessity of flush/mark_dirty more obvious + Fix xml-surface use of load_truetype_font - src/cairo-surface.c | 32 ++++++++++++++++++++++++++++++++ - 1 files changed, 32 insertions(+), 0 deletions(-) + src/cairo-xml-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 8a1944f45b9c9056088246d4f2e72d60a59fd5c4 -Author: Benjamin Otte -Date: Sun Jul 11 19:11:15 2010 +0200 +commit e2dcbfd895463d674d55c826ba72030f5f6daa91 +Author: Adrian Johnson +Date: Tue Nov 23 00:12:10 2010 +1030 - check: Allow unprefix type names in the title - - Some documentation sections use the type name as the title, and we don't - want to use that title as a link. + Automate error checking for ps-eps test - src/check-doc-syntax.sh | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) + test/Makefile.am | 1 - + test/ps-eps.c | 338 ++++++++++++++++++++++++++++++++++++++++++++++---- + test/ps-eps.ref.eps | 84 ------------- + test/ps-eps.ref.png | Bin 0 -> 4584 bytes + 4 files changed, 311 insertions(+), 112 deletions(-) -commit f0466ecf7db859a80b779b7fb4381e3c9409c39b -Author: M Joonas Pihlaja -Date: Sun Jul 11 21:57:40 2010 +0300 +commit 67a90e8035d1d7abef45c552e75348f993a3bc93 +Author: Adrian Johnson +Date: Tue Nov 23 22:02:55 2010 +1030 - build: Fix typo in pthread test program. - - Missing a semicolon after pthread_cleanup_push. Incredibly - only openbsd 4.5 minded. + Check table size in cairo_truetype_get_style() - build/configure.ac.pthread | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-truetype-subset.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) -commit 3f1d7de8e1620ad385930477b63454107dd8ffd3 -Author: M Joonas Pihlaja -Date: Sun Jul 11 17:29:07 2010 +0300 - - build: Fix regression provoked by newer autoconf and dodgy configuring. - - We're not supposed to be redefining PACKAGE_VERSION, PACKAGE_... - from the configure generated confdefs.h. This patch rudely adds - paper over the problem. The compiler warnings are a problem for - us since our checking of various compiler flags assumes that - no news is good news, and that any warning messages are due - to the flags under test. The regression appears when using - an autoconf >= 2.64, at least, but not with 2.61. - - The same issue appears in the pthread test because our conftest - unconditionally #defines _GNU_SOURCE, but autoconf ends up doing - that in the confdefs.h. - - build/configure.ac.noversion | 13 ++++++++++++- - build/configure.ac.pthread | 2 ++ - 2 files changed, 14 insertions(+), 1 deletions(-) - -commit fca8977219b857e2e61dd86ac39ae9f40086f306 -Author: M Joonas Pihlaja -Date: Sun Jun 27 03:03:17 2010 +0300 - - build: Rework pthread detection. - - Use two levels of pthread support: a minimal level used to - build cairo itself, and a full level to build threaded apps - which want to use cairo. The minimal level tries to use - pthread stubs from libc if possible, but falls back to the - full level if that's not possible. We use CFLAGS=-D_REENTRANT - LIBS=-lpthread to find a real pthread library since that seems - to work on every unix-like test box we can get our hands on. - - build/ax-pthread.m4 | 283 ----------------------------------------- - build/configure.ac.pthread | 251 ++++++++++++++++++++++++++++++++++++ - configure.ac | 47 +++---- - test/Makefile.am | 16 +-- - test/cairo-test-trace.c | 10 +- - test/cairo-test.c | 6 +- - util/cairo-sphinx/Makefile.am | 3 +- - util/cairo-sphinx/sphinx.c | 4 + - util/cairo-trace/Makefile.am | 4 +- - 9 files changed, 291 insertions(+), 333 deletions(-) - -commit 47c35e5e86a3c99fc39afe2e13a7c92d5247ee1e -Author: M Joonas Pihlaja -Date: Sun Jun 27 01:14:03 2010 +0300 - - build: Purge CAIRO_CC_TRY_LINK_FLAG. - - Use CAIRO_CC_TRY_FLAG instead in the one place where we used - CAIRO_CC_TRY_LINK_FLAG and make the build system one macro - smaller. - - build/aclocal.cairo.m4 | 21 --------------------- - build/configure.ac.warnings | 2 +- - 2 files changed, 1 insertions(+), 22 deletions(-) - -commit d2f5592e0e0d316cfc40ec676ee6e7f4e2a699fb -Author: M Joonas Pihlaja -Date: Sun Jun 27 01:11:13 2010 +0300 - - build: Factor out a more pliable CAIRO_CC_TRY_LINK_WITH_ENV_SILENT. - - Introduce a new CAIRO_CC_TRY_LINK_WITH_ENV_SILENT macro for running - generic link tests with arbitrary CFLAGS/LIBS/LDFLAGS and no muttering - of autoconf messages. Rewrite the previous CAIRO_CC_TRY_FLAG in terms - of it. - - build/aclocal.cairo.m4 | 31 +++++++++++++++++++++++++------ - 1 files changed, 25 insertions(+), 6 deletions(-) - -commit 120b78ada7eed6424f07a688854657d0c3ad68f8 -Author: Benjamin Otte -Date: Sun Jul 11 18:48:38 2010 +0200 +commit fb0304e2a9c99fa00e68bf4b37074a6885f19cff +Author: Adrian Johnson +Date: Tue Nov 23 21:44:31 2010 +1030 - build: Split boilerplate lib generation into two so's + Document load_truetype_table function and ensure ft-font and Win32-font are compliant - Same thing as what was previously done for libcairo.so: Build an - intermediate lib for the (potential) C++ stuff. + There were some difference between how the FT and Win32 + load_truetype_table font backend functions worked due to the + difference between FT_Load_Sfnt_Table() and GetFontData(). eg FT + returns an error if less than the requested number of bytes could be + read while Win32 returns success and sets the length to the number of + bytes read. - boilerplate/Makefile.am | 31 ++++++++++++++++++++++++------- - boilerplate/Makefile.sources | 7 ++----- - 2 files changed, 26 insertions(+), 12 deletions(-) + src/cairo-ft-font.c | 15 ++++++++++++--- + src/cairo-win32-font.c | 7 +++++-- + src/cairoint.h | 18 ++++++++++++++++++ + 3 files changed, 35 insertions(+), 5 deletions(-) -commit d6362a0d76753cb6f85f0dbd567a3ec7b7b08696 -Author: Benjamin Otte -Date: Sun Jul 11 16:01:44 2010 +0200 +commit abff335348c4f3b1c694cf44bf089d2a437937b4 +Author: Chris Wilson +Date: Mon Nov 22 18:49:22 2010 +0000 - qt: Define cairo-qt's API as C symbols + pdf: Silence compiler for an impossible case + + Make the default case be an assert to catch a silly programming error + and silence the compiler: - That way, the C linker doesn't mess up when linking libcairo.so. + cairo-pdf-operators.c: In function ‘_word_wrap_stream_write’: + cairo-pdf-operators.c:300: warning: ‘count’ may be used uninitialized in + this function + + Signed-off-by: Chris Wilson - src/cairo-qt.h | 12 ++++-------- - 1 files changed, 4 insertions(+), 8 deletions(-) + src/cairo-pdf-operators.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) -commit 5d4a4775c8b091b947b52cc8f7e1e48a5eaea007 -Author: Benjamin Otte -Date: Sun Jul 11 15:41:56 2010 +0200 +commit 1effa1e8230e16c59ce5f42692095f7fb6622c99 +Author: Adrian Johnson +Date: Tue Nov 23 00:13:56 2010 +1030 - build: Fix typo that makes C++ libs not build + win32: add synthetic font subsetting support - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-scaled-font-subsets-private.h | 23 ++++++++++++++++++++++ + src/cairo-truetype-subset-private.h | 13 ++++++++++++ + src/cairo-truetype-subset.c | 32 +++++++++++++++++++++++++++++++ + src/cairo-win32-font.c | 27 ++++++++++++++++++++++++++ + 4 files changed, 95 insertions(+), 0 deletions(-) -commit 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 -Author: Chris Wilson -Date: Sat Jul 10 11:13:07 2010 +0100 - - Convert mime data length to use unsigned long - - What we want to use is size_t, but we don't want the implied POSIX - dependency. However, POSIX does say that size_t is an unsigned integer - that is no longer than a long, so it would appear safe to use an - unsigned long as a replacement. Safer at least than unsigned int. - - src/cairo-image-info-private.h | 6 +++--- - src/cairo-image-info.c | 4 ++-- - src/cairo-output-stream-private.h | 2 +- - src/cairo-output-stream.c | 2 +- - src/cairo-pdf-surface.c | 18 +++++++++--------- - src/cairo-png.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-script-surface.c | 6 +++--- - src/cairo-surface.c | 4 ++-- - src/cairo-svg-surface.c | 6 +++--- - src/cairo-types-private.h | 2 +- - src/cairo-win32-printing-surface.c | 10 +++++----- - src/cairo.h | 4 ++-- - util/cairo-trace/trace.c | 6 +++--- - 14 files changed, 37 insertions(+), 37 deletions(-) - -commit eb85ab998b606144daf025285968a5d6031b9aa6 -Author: Chris Wilson -Date: Sat Jul 10 10:43:40 2010 +0100 +commit 7f0029c31e15dfd34f57bdeca18f27e9e7b8f9aa +Author: Adrian Johnson +Date: Mon Nov 22 22:46:54 2010 +1030 - subsurface: Don't assume we ever own the target. + Use fallback font for synthetic fonts - Andrea pointed out that snapshots can be shared, and so the subsurface - should not be calling finish even on a snapshot. + If the font has been synthesized we can't use the native subsetters as + the outlines won't be the same. Instead force the use of the fallback + subsetters so the synthesized outlines will used to generate the font. - src/cairo-surface-subsurface-private.h | 1 - - src/cairo-surface-subsurface.c | 17 ++++++++--------- - 2 files changed, 8 insertions(+), 10 deletions(-) + src/cairo-cff-subset.c | 4 ++++ + src/cairo-ft-font.c | 14 +++++++++++++- + src/cairo-truetype-subset.c | 4 ++++ + src/cairo-type1-subset.c | 5 +++++ + src/cairoint.h | 3 +++ + 5 files changed, 29 insertions(+), 1 deletions(-) -commit 59c83117d77f58e9cb64aaa6b572fab62fb31c6b -Author: Benjamin Otte -Date: Fri Jul 9 18:55:11 2010 +0200 +commit 9862c38fc71c6dcd444da3b079e5404cd14594c3 +Author: Adrian Johnson +Date: Tue Nov 2 22:39:57 2010 +1030 - build: Commit new versions of autogenerate Windows build files + Add unique_id mime type - The recent commits to the build system changed a bunch of stuff in - there, so update the files. + to ensure surfaces with the same unique_id mime type are not embedded + more than once in PDF files. - boilerplate/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- - build/Makefile.win32.features-h | 1 - - src/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- - 3 files changed, 164 insertions(+), 21 deletions(-) + src/cairo-pdf-surface-private.h | 2 ++ + src/cairo-pdf-surface.c | 38 ++++++++++++++++++++++++++++++++++++-- + src/cairo-surface.c | 8 ++++++++ + src/cairo.h | 1 + + 4 files changed, 47 insertions(+), 2 deletions(-) -commit bf117e4ea7c89dadcb5a358bb47c0f213cc67461 -Author: Benjamin Otte -Date: Fri Jul 9 18:43:38 2010 +0200 +commit 3445401ae6bc8687fc76f690016cc281c388005d +Author: Adrian Johnson +Date: Sun Nov 21 20:09:13 2010 +1030 - build: fix glew include + Fix regression in fallback-resolution test - Currently wether internal glew is built is dependant on wether the - tarball in use was built with internal glew or not. And that's not how - it should be. + a2254e56 caused the fallback-resolution test to display empty fallback + images for to push_group/pop_group part of the test. - configure.ac | 8 ++++---- - src/Makefile.sources | 11 +++++++---- - 2 files changed, 11 insertions(+), 8 deletions(-) + src/cairo-surface-wrapper.c | 12 ------------ + 1 files changed, 0 insertions(+), 12 deletions(-) -commit 0bd704bd1e92b274209aeda6de88c7e75ffa81be -Author: Benjamin Otte -Date: Fri Jul 9 17:15:02 2010 +0200 +commit bb4055dac6a937b3412170a332b5effe4bbeff7d +Author: Adrian Johnson +Date: Sun Nov 21 00:37:29 2010 +1030 - build: Remove wrong flags from libcairo_cxx.la + PS: Fix regression - incorrect EPS bounding box - They're useful for the final so, but not for an intermediate noinst lib. + https://bugs.freedesktop.org/show_bug.cgi?id=24688 - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-analysis-surface.c | 40 ++++++++++------------------------------ + 1 files changed, 10 insertions(+), 30 deletions(-) -commit faceffd5beb4297299175945660522d8f1f5f2cb -Author: Benjamin Otte -Date: Fri Jul 9 16:58:18 2010 +0200 +commit d3746448d78fcedf8f8f9a7d0fca47f1bd6a5b67 +Author: Adrian Johnson +Date: Sat Nov 20 23:54:00 2010 +1030 - build: copy/paste failure: Don't build libcxx.la + PS: Fix regression - missing page content in EPS output + + https://bugs.freedesktop.org/show_bug.cgi?id=24688 - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-ps-surface.c | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) -commit dbb386d3c0aa9e7534d333cf3dbcfc2aaeac05d3 -Author: Benjamin Otte -Date: Fri Jul 9 12:49:10 2010 +0200 +commit e7c5f470436220668e50201d775a9fec47162a67 +Author: Adrian Johnson +Date: Sat Nov 20 00:50:04 2010 +1030 - gl: Use unsigned int instead of GLuint + PS/PDF: Fix regression when changing page size to a larger size - GLuint is not defined in cairo-gl.h. If unsigned int is not compatible - enough to GLuint, we might consider to use #include instead. + https://bugs.freedesktop.org/show_bug.cgi?id=24691 - src/cairo-gl-surface.c | 2 +- - src/cairo-gl.h | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) + src/cairo-paginated-surface.c | 28 ++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 10 ++++++++-- + src/cairo-ps-surface.c | 6 ++++++ + 3 files changed, 42 insertions(+), 2 deletions(-) -commit f7fc8569a797356d5e93ad67aae4eca31e6835cd -Author: Benjamin Otte -Date: Fri Jul 9 12:29:35 2010 +0200 - - build: Fix C++ issues with automake - - This is an attempt to fix the broken situation we've been in where - automake links libcairo.la with c++ because it might potentially maybe - include C++ files. - - Those potential files only exist in Chris' throwaway backends (skia, qt) - and the BeOS backend, so for 99.99% of cases, these backends are not - needed and linking with c++ is overkill. Also, no one wants to have - libcairo.so link to libstdc++. - - This patch fixes that in mutliple steps: - 1) Add build infrastructure to distinguish between C and C++ backends. - This is done by allowing to specify backend_sources as well as - backend_cxx_sources variables in Makefile.sources. - 2) Optionally build a libcairo_cxx.la noinst library - This intermediate library is built for C++ backends only and therefor - linked using c++. It is then linked into the final libcairo.la. This - does not require c++, so the linking of libcairo.la is done with cc. - - This also works around various weirdnesses that the current build system - exposes, where it assumes cisms when in fact using c++ semantics, like - not detecting c++ properly or: - https://bugzilla.redhat.com/show_bug.cgi?id=606523 - - build/configure.ac.features | 7 ++++++- - configure.ac | 10 ++++++++++ - src/Makefile.am | 20 +++++++++++++++++++- - src/Makefile.am.analysis | 4 ++-- - src/Makefile.sources | 6 +++--- - 5 files changed, 40 insertions(+), 7 deletions(-) - -commit df6d49f6eaf334d5a2de8bdd90919278071ab868 -Author: Benjamin Otte -Date: Fri Jul 9 10:29:30 2010 +0200 +commit 6e3e329170ab4b96bc0d587c8071e869e228e758 +Author: Adrian Johnson +Date: Thu Nov 18 23:07:45 2010 +1030 - build: Get rid of $(foo_files) Makefile.am variables + win32: fix font_face hashing - They're unused, and less variables make the build system easier to - understand. + some bugs were discovered while testing with firefox - build/configure.ac.features | 1 - - src/Makefile.am | 1 - - 2 files changed, 0 insertions(+), 2 deletions(-) + src/cairo-win32-font.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) -commit ce530b2802683fe6c5289367ef03018f4081a2da -Author: Benjamin Otte -Date: Fri Jul 9 04:24:51 2010 +0200 +commit 268cb0a2bb5c8eef00c88ed6e3044a00e85ea47e +Author: Behdad Esfahbod +Date: Wed Nov 17 13:30:28 2010 -0500 - doc: Add "@Since: 1.10" tags to device docs + Add note re gtk-doc.make - src/cairo-device.c | 14 ++++++++++++++ - src/cairo.h | 2 ++ - 2 files changed, 16 insertions(+), 0 deletions(-) + build/Makefile.am.gtk-doc | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) -commit c1fed693020c96126cdc697ddd22567398369b04 -Author: Benjamin Otte -Date: Fri Jul 9 04:20:42 2010 +0200 +commit 653ceb517fe756b042a3cf8322a36cbfe71ddbd8 +Author: Koji Otani +Date: Wed Nov 17 00:07:03 2010 +1030 - gl: Remove double ** from some comments + PS: fix embedding of grayscale jpegs - gtk-doc doesn't like that unless it's a real gtk-doc comment. - And it wasn't. + https://bugs.freedesktop.org/show_bug.cgi?id=31632 - src/cairo-gl-composite.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-ps-surface.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) -commit 5c73b371ae31f230210987941eec2db49d2e02be -Author: Benjamin Otte -Date: Fri Jul 9 04:20:06 2010 +0200 +commit d5656394787c29daf31fff085639066287b0f7b7 +Author: Adrian Johnson +Date: Tue Nov 16 23:53:05 2010 +1030 - doc: Document remaining cairo-device functions + win32-print: print as unicode where possible + + One of the problems identified in + https://bugzilla.mozilla.org/show_bug.cgi?id=454532 is that there are + some older printer drivers that do not work with ExtTextOut and the + ETO_GLYPH_INDEX option. + + Fix this by where possible mapping glyph indices back to unicode and + calling ExtTextOut without ETO_GLYPH_INDEX. Glyphs that can not be + mapped back to unicode are printed with ETO_GLYPH_INDEX. - src/cairo-device.c | 32 ++++++++++++++++++++++++++++++++ - 1 files changed, 32 insertions(+), 0 deletions(-) + src/cairo-win32-printing-surface.c | 157 ++++++++++++++++++++++-------------- + src/cairo-win32-private.h | 11 +++ + src/cairo-win32-surface.c | 54 ++++++++----- + 3 files changed, 141 insertions(+), 81 deletions(-) -commit 9877c1932a44f7e5300d6fcd99c19748aa5a4828 -Author: Benjamin Otte -Date: Fri Jul 9 03:52:45 2010 +0200 +commit eb29a25dd6dddc511388bf883c9b95843ecdb823 +Author: Adrian Johnson +Date: Tue Nov 16 23:48:39 2010 +1030 - doc: Add more documentation for devices + win32: Use a font_face hash table to provide unique font faces - Add general docs and document acquire/release. I'm not happy with the - documentation yet. In particular, I have 2 issues: - 1) The threading guarantees Cairo provides are missing. - 2) There's no docs on which Cairo functions do acquire devices. + Similar to the freetype and toy font backends, use a hash table + to map logfont,hfont to font faces. - I guess I'll have to fix them later. + This fixes the multiple embedding of the same font in PDF. + + https://bugs.freedesktop.org/show_bug.cgi?id=24849 - src/cairo-device.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 86 insertions(+), 0 deletions(-) + src/cairo-debug.c | 4 + + src/cairo-mutex-list-private.h | 4 + + src/cairo-win32-font.c | 163 ++++++++++++++++++++++++++++++++++++++- + src/cairoint.h | 3 + + 4 files changed, 169 insertions(+), 5 deletions(-) -commit 739d6e35fa5632b80b888d6475f2fdb6be6054a6 -Author: Benjamin Otte -Date: Fri Jul 9 03:04:27 2010 +0200 +commit 31e116f084d0ff073bed9d0e9c1c6ca1e5db4843 +Author: Eric Anholt +Date: Sat Nov 13 15:48:03 2010 -0800 - doc: Clarify that cairo_surface_get_device() can return NULL + gl: Avoid using gl_FragCoord for linear gradients. + + The issue is that we store our data flipped based on whether we're + rendering to an FBO or to a window. By not flipping our gl_FragCoord + usage based on that (either with math or ARB_frag_coord_conventions), + this caused linear gradients to be flipped when rendering either to a + window or to an FBO. To avoid this, pass in appropriate texcoords. + And, if we're passing in texcoords, just do the projection to the + linear gradient factor on the CPU side per vertex instead of providing + a bunch of uniforms to do the math per fragment. + + Fixes 18 testcases. - src/cairo-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + src/cairo-gl-composite.c | 74 ++++++++++++++++++++++++++++------------------ + src/cairo-gl-private.h | 4 +- + src/cairo-gl-shaders.c | 12 ++----- + 3 files changed, 51 insertions(+), 39 deletions(-) -commit 65d0590b041835fb466f4a7073910ef1383d9e77 -Author: Benjamin Otte -Date: Fri Jul 9 02:23:13 2010 +0200 +commit 7237eb62be34370b34e0ba31504b5ae2708e44e5 +Author: Jeff Muizelaar +Date: Wed Nov 10 14:21:58 2010 -0500 - doc: Copy docs for standard device APIs + Sync get-path-extents test with the one on 1.10. - Copied from the surface equivalents + The problem fixed by e9bb70d2dee4ef7a54e3971f09a08df30c2b5287 + had already been fixed on master by always computing exact extents: + 89e1261dd0fdb6c6c0271f71dd84d72504969ab1 - src/cairo-device.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 42 insertions(+), 0 deletions(-) + test/get-path-extents.c | 28 +++++++++++++++++++++++++++- + 1 files changed, 27 insertions(+), 1 deletions(-) -commit 8a08b6fa5288f376688730c66ae9219d01180f42 -Author: Benjamin Otte -Date: Fri Jul 9 02:21:00 2010 +0200 +commit 3afd7cd031ab9097e37c3e89d86ec41d015fdeb8 +Author: Adrian Johnson +Date: Wed Nov 10 20:09:53 2010 +1030 - doc: Remove the declarations + PDF: Restrict ActualText to PDF version >= 1.5 + + The use of ActualText in a marked content sequence is a PDF 1.5 + feature. - This information was duplicated. It exists as the "@Title" of the - SECTION inline documentation already. + A 'use_actual_text' flag linked to the PDF version has already been + implemented in pdf-operators but for some reason this flag had not + been used to control the use of ActualText. - doc/public/cairo-sections.txt | 28 ---------------------------- - 1 files changed, 0 insertions(+), 28 deletions(-) + src/cairo-pdf-operators.c | 31 ++++++++++++++++++------------- + 1 files changed, 18 insertions(+), 13 deletions(-) -commit 5e76bc6deb9fd4dc7a0f9181d3941ba55ce89c56 +commit 7ee313d7b86b8c9eeaa5bf9b42a47d3f1feaeeee Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jul 9 01:10:24 2010 +0200 +Date: Mon Nov 8 14:22:38 2010 -0500 - doc: Add missing region documentation + xcb: Add more _cairo_error() calls + + We still don't track various error conditions... - src/cairo-region.c | 25 +++++++++++++++++++++++++ - src/cairo.h | 13 +++++++++++++ - 2 files changed, 38 insertions(+), 0 deletions(-) + src/cairo-xcb-surface.c | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) -commit 57da730d286f643c8f68b445907f7cdd1f53e5de +commit 78dadf11ca3d13a399b5942ab2a5c1c399689729 Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 23:44:35 2010 +0200 +Date: Mon Nov 8 14:17:37 2010 -0500 - doc: Fix a syntax issue in quartz-font gtkdoc + xlib: Add more _cairo_error() calls - A missing empty line caused the long description to be part of - @See_Also. Ooops. + We still don't track various error conditions... - src/cairo-quartz-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-xlib-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) -commit fb03eba44f1ae7dd76dd3db82bfb55b06b0932ae -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jul 8 20:06:08 2010 +0200 +commit 5f2e647dcf94eefd233c84881987b3dead2fbd85 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 7 14:37:05 2010 +0000 - test: Add quartz functions to api-special-cases test + drm/intel: Drop the bo cache. + + As this remains experimental, rely on the highly experimental kernel + caching... - test/api-special-cases.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) + src/drm/cairo-drm-intel-private.h | 10 -- + src/drm/cairo-drm-intel.c | 210 +------------------------------------ + 2 files changed, 3 insertions(+), 217 deletions(-) -commit 59aab0bdc24838252850034cee36ed756f3c3e2a -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jul 8 20:05:13 2010 +0200 +commit b4e55b84e20999e410d0ba04ebb83b81c21c8447 +Author: Uli Schlachter <psychon@znc.in> +Date: Sat Oct 30 10:43:46 2010 +0200 - test: fix typo + test/README: Change suggested screen size + + The dash-state test needs a surface with a width of 1500 pixels. If the screen + size is smaller than that, the boilerplate backends that create a window on the + X server can't properly do their job because part of the window would be outside + of the screen. This means people should use a screen large enough for all the + needed test surfaces. 1680 seemed like a more-or-less realistic value here. + + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - test/api-special-cases.c | 2 +- + test/README | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit b870cc030d8e0eb6309695e5a101c802f688cf40 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 13:05:18 2010 +0200 - - doc: Move tmpl/ docs to inline docs - - I did this manually so I could review the docs at the same time. - If anyone finds typos or other mistakes I did, please complain to me (or - better: fix them). - - doc/public/cairo-sections.txt | 4 +- - doc/public/tmpl/.gitignore | 3 - - doc/public/tmpl/cairo-atsui.sgml | 21 - - doc/public/tmpl/cairo-beos.sgml | 22 - - doc/public/tmpl/cairo-font-face.sgml | 116 ------ - doc/public/tmpl/cairo-font-options.sgml | 199 --------- - doc/public/tmpl/cairo-ft.sgml | 87 ---- - doc/public/tmpl/cairo-image.sgml | 127 ------ - doc/public/tmpl/cairo-matrix.sgml | 169 -------- - doc/public/tmpl/cairo-paths.sgml | 263 ------------ - doc/public/tmpl/cairo-pattern.sgml | 350 ---------------- - doc/public/tmpl/cairo-pdf.sgml | 101 ----- - doc/public/tmpl/cairo-png.sgml | 96 ----- - doc/public/tmpl/cairo-ps.sgml | 144 ------- - doc/public/tmpl/cairo-quartz-fonts.sgml | 52 --- - doc/public/tmpl/cairo-quartz.sgml | 64 --- - doc/public/tmpl/cairo-scaled-font.sgml | 227 ----------- - doc/public/tmpl/cairo-status.sgml | 98 ----- - doc/public/tmpl/cairo-surface.sgml | 326 --------------- - doc/public/tmpl/cairo-svg.sgml | 91 ----- - doc/public/tmpl/cairo-text.sgml | 319 --------------- - doc/public/tmpl/cairo-transforms.sgml | 132 ------ - doc/public/tmpl/cairo-types.sgml | 43 -- - doc/public/tmpl/cairo-user-fonts.sgml | 169 -------- - doc/public/tmpl/cairo-version.sgml | 205 ---------- - doc/public/tmpl/cairo-win32-fonts.sgml | 106 ----- - doc/public/tmpl/cairo-win32.sgml | 101 ----- - doc/public/tmpl/cairo-xcb-xrender.sgml | 26 -- - doc/public/tmpl/cairo-xcb.sgml | 26 -- - doc/public/tmpl/cairo-xlib-xrender.sgml | 60 --- - doc/public/tmpl/cairo-xlib.sgml | 147 ------- - doc/public/tmpl/cairo.sgml | 674 ------------------------------- - src/cairo-beos-surface.cpp | 10 + - src/cairo-font-face.c | 17 + - src/cairo-font-options.c | 12 + - src/cairo-ft-font.c | 25 ++ - src/cairo-image-surface.c | 21 + - src/cairo-matrix.c | 23 + - src/cairo-misc.c | 20 + - src/cairo-path.c | 9 + - src/cairo-pattern.c | 17 + - src/cairo-pdf-surface.c | 17 + - src/cairo-png.c | 18 + - src/cairo-ps-surface.c | 17 + - src/cairo-quartz-font.c | 17 + - src/cairo-quartz-surface.c | 17 + - src/cairo-scaled-font.c | 10 + - src/cairo-surface.c | 47 +++ - src/cairo-svg-surface.c | 17 + - src/cairo-types-private.h | 8 + - src/cairo-user-font.c | 22 + - src/cairo-version.c | 156 +++++++ - src/cairo-win32-font.c | 17 + - src/cairo-win32-surface.c | 24 ++ - src/cairo-xcb-surface-render.c | 13 + - src/cairo-xcb-surface.c | 13 + - src/cairo-xlib-surface.c | 40 ++ - src/cairo.c | 57 +++ - 58 files changed, 666 insertions(+), 4566 deletions(-) - -commit 65a1e351330106ee0af9f6f0df06b82954341ee6 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 03:28:05 2010 +0200 +commit 95f6f7a174ca096a3d3dbe84ff220d166d1e2baa +Author: Uli Schlachter <psychon@znc.in> +Date: Fri Oct 22 11:54:57 2010 +0200 - doc: Remove CAIRO_FORMAT_RGB16_565 from hidden symbols list + Make both versions of _cairo_lround consistent again - It's part of the cairo_format_t documentation now. - - doc/public/cairo-sections.txt | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit e7594aebce6007bfa2027ba2655875db6c036e73 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 03:21:45 2010 +0200 - - doc: Fix some consistency issues that confuse gtk-doc - - src/cairo-region.c | 16 +++++++++++++--- - src/cairo.h | 16 ++++++++++++++-- - 2 files changed, 27 insertions(+), 5 deletions(-) - -commit da2663a0aa1e3f0a6b2f6ae2e9952ac27dec3f5d -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 03:14:42 2010 +0200 - - doc: Add list of new symbol in Cairo 1.10 + Commit c0008242b0f made cairo use libm's lround instead of its own _cairo_lround + by default. However, since commit ce58f874 from 2006, _cairo_lround does + arithmetic rounding instead of away-from-zero rounding (before said commit, it + was using baker's rounding). + + So to make the rounding of _cairo_lround be independent from + DISABLE_SOME_FLOATING_POINT, we have to use another function. Turns out that + _cairo_round already does the same thing that _cairo_lround does. Their only + difference is the return type. + + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - doc/public/cairo-docs.xml | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) + src/cairoint.h | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) -commit a106aa86a3267b4886f7eabdc4b07bb394e11531 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 03:13:20 2010 +0200 +commit 5d5a7d6b22156e5bbb9bf6d4f706740af3ca05ac +Author: Uli Schlachter <psychon@znc.in> +Date: Fri Oct 22 16:33:55 2010 +0200 - doc: add --name-space option to gtkdoc-mkdb + _cairo_round: Fix documentation + + Despite what the comment says, this function rounds halfway cases towards + positive infinity. + + _cairo_round ( 0.5) => floor ( 1.0) => 1.0 + _cairo_round (-0.5) => floor ( 0.0) => 0.0 + _cairo_round (-1.5) => floor (-1.0) => -1.0 - This sorts function names in new symbols lists way better. + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - doc/public/Makefile.am | 2 +- + src/cairoint.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit 71d17e4b1f1cb83bc605d72d8419d4bfb824c828 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 02:42:39 2010 +0200 +commit 6383e1442cf3918ea71378ce46144e1bb5707882 +Author: Uli Schlachter <psychon@znc.in> +Date: Mon Oct 25 09:11:05 2010 +0200 - drm: Fix Makefile for drm_xr + XCB: Check screen size in boilerplate + + Trying to create a window for drawing that is larger than the available screen + space is a bad idea. When the test finishes and tries to grab the resulting + image from the X server, the window's area that is outside of the screen will + have undefined content. - Use cairo_drm_xr_sources/headers for the drm_xr stuff. This makes it - work correctly in gtk-doc instead of conditionally adding it to - cairo_drm_sources/headers. + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/Makefile.sources | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) + boilerplate/cairo-boilerplate-xcb.c | 12 ++++++++++++ + 1 files changed, 12 insertions(+), 0 deletions(-) -commit 4b3e488cebeeace02eae1164ed12caa93d7c5847 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 02:42:06 2010 +0200 +commit daaef055b57a5cd91c0bd9ef2b774e0bce41043d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 7 21:50:56 2010 +1030 - skia: Add cairo-skia.h as a public header + PDF: Fix toUnicode for CID fonts + + 1047dc6b introduced a regression for text that is using 16-bit glyphs + in the content stream. - src/Makefile.sources | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-pdf-surface.c | 38 ++++++++++++++++++++++++-------------- + src/cairo-scaled-font-subsets.c | 1 - + 2 files changed, 24 insertions(+), 15 deletions(-) -commit 2a546286da5fe7203846d99a4a3d732c73e62db5 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 02:20:17 2010 +0200 +commit f1d1928d13f4f83cc37d68ab4773f7c796d08c6e +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 21 13:38:30 2010 +0200 - doc: Add a section about regions + xcb: Fix transformation matrix setting + + _cairo_xcb_picture_set_matrix() checked if the matrix that it should + set is an identity matrix. In this case this function simply didn't do + anything at all. The assumption here seems to be that a picture's + matrix is the identity matrix by default. + + The problem here is that we might first set a picture's matrix to + something else and then later need an identity transform again. Fix + this by still setting the new matrix if it is an identify matrix. We + just skip some unneeded checks and optimizations in this case. + + This fixes the "finer-grained-fallbacks" test in the test suite. + + Signed-off-by: Uli Schlachter <psychon@znc.in> - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 0 deletions(-) + src/cairo-xcb-surface-render.c | 24 ++++++++++++------------ + 1 files changed, 12 insertions(+), 12 deletions(-) -commit ab1f6d1af7c0e47077013edd58e93fa9fc6f2b5c -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:41:27 2010 +0200 +commit d51ab091422fc64831578bffb3a502c83ec8bdf5 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Nov 6 15:46:48 2010 +0100 - doc: Add missing surface APIs + configure: Correct reporting of tee backend + + Since 9f33f8453b4949cfdc63169d3acd7238f89379c2 tee is not compiled in + anymore by default. Reporting it as always enabled is misleading. - doc/public/cairo-sections.txt | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + build/configure.ac.features | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 90bf273a38856d178e90721168b8b076f79fbf38 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:39:37 2010 +0200 +commit 5906e64000b35c9a6b5ea52f6842a572d812d7bb +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 22:45:11 2010 +1030 - doc: Add a section for cairo_device_t + Type 1 glyph names: Do not use an array of pointers for winansi glyph names + + Similar to ps_standard_encoding array, use a string pool and lookup + indices for the winansi glyph names to reduce .data size. As + ps_encoding and winansi share mostly the same names, the perl script + has been modified to merge the symbols into the one string pool and + generate separate lookup indices for ps_encoding and winansi. - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 18 ++++++++++++++++++ - 2 files changed, 19 insertions(+), 0 deletions(-) + src/cairo-type1-glyph-names.c | 342 +++++++++++++++++++++++++---------------- + 1 files changed, 211 insertions(+), 131 deletions(-) -commit 60e4f28d091df8ac6b898448eb52fae9ca920d5d -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:39:07 2010 +0200 +commit 048a43e5c464adfcd0aeb682cb812ae228ef4a83 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 22:31:46 2010 +1030 - doc: Add cairo_in_clip() to cairo_t section + Move glyph names into separate file + + The latin subsets feature requires these names. As + cairo-type1-subsets.c depends on FreeType, move these names out to a + separate file to allow compilation without FT. - doc/public/cairo-sections.txt | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/Makefile.sources | 1 + + src/cairo-scaled-font-subsets-private.h | 3 + + src/cairo-type1-glyph-names.c | 330 +++++++++++++++++++++++++++++++ + src/cairo-type1-subset.c | 281 +-------------------------- + 4 files changed, 335 insertions(+), 280 deletions(-) -commit 6843186b729b20acddccd36184d2c5a7b5525d2e -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:38:43 2010 +0200 +commit 74873c82242e9c124b69e05d0f8abdf78983d62d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 21:15:30 2010 +1030 - doc: Add cairo_rectangle_int_t to the general types list + Fix type1-fallback bbox - doc/public/cairo-sections.txt | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-type1-fallback.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) -commit c54dff82d3055529b7663dcff7a970cae919a9e0 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:33:42 2010 +0200 +commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 18:44:54 2010 +1030 - glew: The headers are private, not public + configure.ac.features: s/Meta/Recording/ - src/Makefile.sources | 2 +- + build/configure.ac.features | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit 4252e3b8f915fc23611f1a667bf7bc1bb6a21dfd -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 01:32:25 2010 +0200 +commit b53084b7c530ed0473137ee8ebfab70fdd8e3c23 +Author: Markus Stange <mstange@themasta.com> +Date: Fri Nov 5 09:23:44 2010 +0100 - doc: Add drm and glew to the ignored directories + Fix type of _cairo_memory_stream_destroy parameter - This reduces the number of unused symbols to a reasonable size. ;) - - doc/public/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 729d00341c26d46d82359014df97472a469e49a4 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jul 8 13:57:43 2010 +0200 - - gl: Fix compile error after rebase failure + In 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 + _cairo_memory_stream_destroy was changed to take an unsigned long + instead of unsigned int, and the two callsites in cairo-gl-shaders.c + weren't updated. - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-gl-shaders.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit 292423c73376a7f9b84c9e3e578c242f486e921b -Author: Colin Walters <walters@verbum.org> -Date: Wed Jul 7 15:46:33 2010 -0400 +commit 6dda9c4465fa229f3fe9927e8318121642b41c14 +Author: Erik Zeek <zeekec@mad.scientist.com> +Date: Thu Nov 4 17:57:03 2010 +0100 - Support NOCONFIGURE environment variable + Fix build on gentoo + + The problem is probably caused by a change in the behavior of autoconf + (2.67). - This is taken from gnome-common; it can be convenient for builders - to separate the autogen from the configure stage. + See http://bugs.gentoo.org/336329 - autogen.sh | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit 9e6c151af810886e94372ac8e4878915059c6c14 -Author: Kristian Høgsberg <krh@bitplanet.net> -Date: Thu Jun 17 18:19:39 2010 -0400 +commit 84a7fe8a5c5326d77b0954be439799202e947d6b +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Nov 2 21:47:36 2010 +1030 - gl: Add new cairo-gl surface constructor to create surface for texture + CFF Subset: Remove debug code - src/cairo-gl-private.h | 2 + - src/cairo-gl-surface.c | 111 ++++++++++++++++++++++++++++++++++++++++++----- - src/cairo-gl.h | 4 ++ - 3 files changed, 105 insertions(+), 12 deletions(-) + src/cairo-cff-subset.c | 13 ------------- + 1 files changed, 0 insertions(+), 13 deletions(-) -commit 4c91bb9a221bc8e3d65a96365bbd1157b3f4e612 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 17:27:18 2010 +0200 +commit 1047dc6b944d802eca441ec4956f7b5e1745fe60 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Nov 2 21:38:06 2010 +1030 - region: Add cairo_region_xor() and cairo_region_xor_rectangle() + PDF: Use correct bfchar size in toUnicode for latin fonts - gdk_region_xor() was a quite often used function in GDK and now that - GDKe uses cairo regions, it seems like a worthwhile addition to Cairo. + poppler was printing warnings about the wrong size - src/cairo-region.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 6 ++++ - src/cairoint.h | 2 + - 3 files changed, 88 insertions(+), 0 deletions(-) + src/cairo-pdf-surface.c | 27 +++++++++++++-------------- + src/cairo-scaled-font-subsets.c | 1 + + 2 files changed, 14 insertions(+), 14 deletions(-) -commit 82de6336d88be43de759b94634e87b9e4a8391b1 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 00:48:36 2010 +0200 +commit c7027c9d89d9a13d6cbc1727fc8513c908878db9 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 1 21:15:07 2010 +0100 - test: Add note about how to fix failures to api-special-cases + image: Use correct size for allocation + + In 06e9caf86199e8261a07db6d4774628fa147728d the type of the variables + was changed, but the type used to compute the allocation size was not. + + Fixes a crash in user-font-mask (test-fallback backend). - test/api-special-cases.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) + src/cairo-image-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit 75f269b14e1e4cdadd8c08566a07b2460ae3364b -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 00:41:12 2010 +0200 +commit 852e789b756f9589b102a4b24b85642f199d0915 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 1 15:53:10 2010 +0100 - test: Add documentation to the api-special-cases test + quartz-font: Do not leak CFDataRef's - Hopefully people add other backend APIs to the testsuite. + CFData is allocated and thus needs to be freed. - test/api-special-cases.c | 27 +++++++++++++++++++++++++++ - 1 files changed, 27 insertions(+), 0 deletions(-) + src/cairo-quartz-font.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) -commit 398870e64a18f32f1854cb19f64c34e2b1987140 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 00:21:38 2010 +0200 +commit 947d35c19539b84c866d792c067a0cc63485e94e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 1 14:06:32 2010 +0100 - xlib: Setters should set finished surfaces into an error status + quartz-font: Add truetype font table tags accessor - Caught by api-special-cases test + Improves the quality of embedded fonts. - src/cairo-xlib-surface.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) + src/cairo-quartz-font.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 files changed, 38 insertions(+), 1 deletions(-) -commit 6e562d1448eb70b7269f8f2f280719aa2aeb3ce7 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 00:20:57 2010 +0200 +commit bb30dae210da3fc71bb242c7a73b8f9308eec2a1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 30 11:33:33 2010 +0200 - xcb: Setters should set finished surfaces into an error status + script: Fix compilation + + Use accessors instead of directly accessing path optimization flags. - Caught by api-special-cases test + Change the conditions for outputting tolerance (was 'when + path->is_rectilinear is FALSE', now is 'whenever the path includes a + curve'). + + Always output tolerance for strokes, because pen depends on tolerance + (for round caps/joins and for cusps). - src/cairo-xcb-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) + src/cairo-script-surface.c | 16 +++++++--------- + 1 files changed, 7 insertions(+), 9 deletions(-) -commit fa070704966f10e7264778a3ffb401054a68e8f7 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jul 6 00:20:36 2010 +0200 +commit e43ae002118992961ce2b55b18774cec350e662c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 30 11:31:19 2010 +0200 - test: Add xcb and xlib functions to api-special-cases test + cff: Fixes for 'make check' + + Fixed some complaints by 'make check' about exported symbols in cff. - test/api-special-cases.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 91 insertions(+), 0 deletions(-) + src/cairo-cff-subset.c | 2 +- + src/cairo-scaled-font-subsets-private.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit c4068fe9414bad663f77c030ac96fa4b4cba87ba -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 23:14:33 2010 +0200 +commit 22ea4609be03584de2f2985e55bf169b7af4f868 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 30 11:28:03 2010 +0200 - test: Add ps, pdf and svg to the api-special-cases test + path: Solve co-dependency problem + + FALSE and TRUE are defined in cairoint.h, but cairoint.h depends on + cairo-path-fixed-private.h, so just use 0/1 to avoid the depencency + loop. + + Fixes a number of errors reported by 'make check'. - test/api-special-cases.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 103 insertions(+), 0 deletions(-) + src/cairo-path-fixed-private.h | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) -commit 3e008e8ab0a1c5254bd1d8a58c9e9a89846fe7ac -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 23:14:19 2010 +0200 +commit 330b343952c103d902841a1da7422dd4d0623117 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 30 11:26:13 2010 +0200 - svg: Set error when extracting from finished surface + drm: Do not access path flags directly - Caught by api-special-cases test + Fixes compilation - src/cairo-svg-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) + src/drm/cairo-drm-i915-surface.c | 6 +++--- + src/drm/cairo-drm-i965-surface.c | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) -commit 2e66cbaee2efc4a8eb2117f945d68e2816349cfe -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 23:10:12 2010 +0200 +commit 5b2ed2422dffb407d80ec38ac0502ba951368ad2 +Author: Uli Schlachter <psychon@znc.in> +Date: Sat Oct 30 09:57:40 2010 +0200 - ps: Allow specifying if errors on extract_surface should be set + xcb: Do not access flags directly - Getters should not set errors on passed in input. So we don't. + This fixes compilation of the xcb backend by porting commit e9c1fc31887c5bfbb's + changes from the image backend. - Caught by api-special-cases test + Signed-off-by: Uli Schlachter <psychon@znc.in> - src/cairo-ps-surface.c | 39 ++++++++++++++++++++++----------------- - 1 files changed, 22 insertions(+), 17 deletions(-) + src/cairo-xcb-surface-render.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit f5dfc3ce6eab3bf836f2d7f7cf72d2834c42d72f -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 23:08:08 2010 +0200 +commit b8444a5c78c5d254b21331353884bcfe8efb0a5e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 23:16:21 2010 +0200 - ps: Set error when extracting from finished surface + path: Tighten transformed extents - Caught by api-special-cases test + The transformation code should produce tight extents if they are to be + used in the new simple extents functions. - src/cairo-ps-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) -commit 106357f6e28467f6db02e8d69c4aea459aca781c -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 23:07:24 2010 +0200 +commit 89e1261dd0fdb6c6c0271f71dd84d72504969ab1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 12:35:40 2010 +0200 - pdf: Set error when extracting from finished surface + path-bounder: Simplify code - Caught by api-special-cases test + If the path extents are tight, all the extents computations and + approximations become trivial except for the stroke extents. - src/cairo-pdf-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) + src/cairo-path-bounds.c | 249 +++++++++++------------------------------------ + src/cairoint.h | 5 + + 2 files changed, 61 insertions(+), 193 deletions(-) -commit 702aa19fdae8bd511c4374f580dde6503afd3341 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:50:44 2010 +0200 +commit 958c56e2b4f5447cc5a1cc137a8d287aebabe5dc +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 23:03:51 2010 +0200 - gl: Fail properly when called with finished functions + path: Tighten curve_to extents - Caught by api-special-cases test + The additional time spent in the computation of tight extents for the + curve_to operation doesn't seem to be significant, but it makes the + extents computations faster and the approximations more accurate. - src/cairo-gl-surface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) + src/cairo-path-fixed.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) -commit b87be76bdfcbd329c79a9f11b24d22010ad15dde -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:50:18 2010 +0200 +commit 0655198301ec60b387b581a10b991ee442743374 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 16 22:51:28 2010 +0200 - test: Add gl functions to the tests + Fix degenerate arcs + + Make sure that degenerate arcs become a move_to-line_to sequence + instead of just a move_to. + + Fixes get-path-extents. - test/api-special-cases.c | 39 ++++++++++++++++++++++++++++++++++++++- - 1 files changed, 38 insertions(+), 1 deletions(-) + src/cairo-arc.c | 4 ++++ + src/cairo.c | 1 + + 2 files changed, 5 insertions(+), 0 deletions(-) -commit 448653e7b9938100c3f2e30e026fbc4d9de7d0d5 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:41:43 2010 +0200 +commit a1d8763236ccbb7bc11724a87b25bacafce44a7c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 23:06:36 2010 +0200 - Call _cairo_error() when setting the FINISHED error on surfaces + path: Replace _cairo_path_fixed_extents_add with _cairo_box_add_point + + Path extents now satisfy _cairo_box_add_point requirements, so it can + be used instead of _cairo_path_fixed_extents_add. - src/cairo-surface-subsurface.c | 2 +- - src/cairo-surface.c | 12 ++++++------ - 2 files changed, 7 insertions(+), 7 deletions(-) + src/cairo-path-fixed.c | 21 +++------------------ + 1 files changed, 3 insertions(+), 18 deletions(-) -commit 19da8e138d317c1770d8bbd21a49c657d954f126 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:40:54 2010 +0200 +commit 02687065509aa4dead4528b2c8dd9aa31dc76332 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 21 17:25:46 2010 +0200 - tee: Add proper error handling + path: Fix _cairo_path_fixed_transform - Caught by api-special-cases + current_point and last_move_to were previously left in their old + position (which could lead to incorrect flag computation if other + operations were added to the path) and flags were not updated. - src/cairo-tee-surface.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 50 ++++++++++++++++++++++++++++++++--------------- + 1 files changed, 34 insertions(+), 16 deletions(-) -commit a9f30fc1f0c3e50715468b09707477973bf5268b -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:30:55 2010 +0200 +commit 29d5b18cba05357dc4885447035e65f93e7d7728 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 28 18:38:50 2010 +0200 - test: Add recording and tee surface functions to api-special-cases + path: Recompute flags in _cairo_path_fixed_scale_and_offset + + Only fill_maybe_region can change its value because the transformation + preserves vertical and horizontal lines, but can move the points and + make them integer if they were not or non-integer if they were. + + Recomputing it is just as easy as checking if all the points are + integer and the path is fill_is_rectilinear. - test/api-special-cases.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 44 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 19 +++++++++---------- + 1 files changed, 9 insertions(+), 10 deletions(-) -commit 41abc0ca37855751ed06051a30c0d866977ed2bd -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:19:05 2010 +0200 +commit 634fcf2c0a66b342ae81faa0e0a75ae72491a313 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 28 18:36:42 2010 +0200 - test: add PNG functions + path: Transform current_point and last_move_to in _cairo_path_fixed_scale_and_offset + + They were previously left in their old position (which could lead to + incorrect flag computation if other operations were added to the + path). - test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 36 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) -commit 897eaa3e97f865ad2c28442c26efaf4ba391cf03 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:11:23 2010 +0200 +commit 9c0e4db570d9de506eb48de0e9a27497b8cf2f61 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 22:19:48 2010 +0200 - test: Add a non-error surface check + path: Recompute flags in _cairo_path_fixed_translate + + Only fill_maybe_region can change its value because the transformation + preserves vertical and horizontal lines, but can move the points and + make them integer if they were not or non-integer if they were. - In that check, we call functions that require a specific surface type - with surfaces of a different type and check that they don't crash and - set the correct error. + Recomputing it is just as easy as checking if all the points are + integer and the path is fill_is_rectilinear. - test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 36 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 23 ++++++++++++----------- + 1 files changed, 12 insertions(+), 11 deletions(-) -commit 986ddf565215dc01065eade46921abe8a4b7912e -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 22:03:42 2010 +0200 +commit 9d84dff0c6a7be5abf1f931eabe77afca21f04aa +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 17 15:02:54 2010 +0200 - test: add image surface functions to api-special-cases test + path: Cleanup close_path + + Instead of explicitly calling _cairo_fixed_move_to, setting the + needs_move_to flags is sufficient because the current_point is already + updeted correctly. - test/api-special-cases.c | 90 +++++++++++++++++++++++++++++++++------------ - 1 files changed, 66 insertions(+), 24 deletions(-) + src/cairo-path-fixed.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) -commit 72878d70ea75be03f47fa9d53f8305e76162054e -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 20:47:19 2010 +0200 +commit 17fef2fe4ddcba8d0811922f012add50109eb0e2 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 17 11:56:49 2010 +0200 - test: Add a new test variant to api-special-cases test + path: Make _cairo_path_fixed_last_op assert on empty path - This variant tests a (hopefully) inert error surface. + _cairo_path_fixed_last_op should now only be used on non-empty path + (to test if the previous operation was a line_to). - test/api-special-cases.c | 35 +++++++++++++++++++++++++++++++++++ - 1 files changed, 35 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) -commit 9de25a0297c141a0776835920168afaa3ca77a87 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:33:40 2010 +0200 +commit 568a975a62fde8d4dfaef2086c4f40e3354ba43b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 21 17:24:30 2010 +0200 - configure: remove dolt + path: Cleanup _cairo_path_fixed_iter_at_end - libtool should be fast by now + The last operation of a path cannot be a move_to anymore (since + move_to is only added if another operation is added after it). - Makefile.am | 5 +- - build/aclocal.dolt.m4 | 178 ------------------------------------------------- - configure.ac | 1 - - 3 files changed, 2 insertions(+), 182 deletions(-) + src/cairo-path-fixed.c | 11 +---------- + 1 files changed, 1 insertions(+), 10 deletions(-) -commit 6744b78de17930285569da2158a334763e2bd333 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:25:31 2010 +0200 +commit 929571b4b56d56c669eb4cbb3e109e2bd4620fb0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 21 17:11:48 2010 +0200 - subsurface: Fail if created from a finished surface + path: Cleanup _cairo_path_fixed_transform - Caught by api-special-cases test + Clean up the code and make sure that _cairo_path_fixed_translate is + used whenever the _cairo_fixed_to_double rounding would result in the + matrix being approximated with a translation. - src/cairo-surface-subsurface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 21 ++++++++++----------- + 1 files changed, 10 insertions(+), 11 deletions(-) -commit 8fd1ecea12f15c2bda710065909a14415ba92bd8 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:25:16 2010 +0200 +commit 34f1db13a13f80733a7eb5bef4693c4df7a6fb4e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 21 16:59:01 2010 +0200 - surface: Fail if set_mime_data() is called on a finished surface + path: Log flags - Caught by api-special-cases test + When logging path operations, also log computed flags. - src/cairo-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 15 +++++++++++++-- + 1 files changed, 13 insertions(+), 2 deletions(-) -commit e388ff1ae732970d6166780817ec121cf58ccd0e -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:24:23 2010 +0200 +commit e8e614db92c43ed1b22251a1903396c99022326c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 28 18:02:59 2010 +0200 - surface: Fail early if create_similar() is called on a finished surface + path: Rename fill optimization flags - Caught by api-special-cases test + Rename fill optimization flags making fill_ their common prefix. - src/cairo-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) + src/cairo-path-fixed-private.h | 15 +++++++++--- + src/cairo-path-fixed.c | 47 ++++++++++++++++++++++----------------- + src/cairo.c | 8 +++--- + 3 files changed, 41 insertions(+), 29 deletions(-) -commit c1689ef6f27f99c36e1a5f4de658363ca0aad25a -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:23:37 2010 +0200 +commit e48cb95493c1dc9532ae0d689238ff3bc317cc4c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 28 17:56:37 2010 +0200 - surface: don't call begin_modification on finished surfaces + path: Add stroke_is_rectilinear flag - Fixes https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 - - Caught by api-special-cases test + Stroke and fill rectilinearity cannot be represented by a single flag + without missing the opportunity of considering some strokes + rectilinear. - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-path-fixed-private.h | 9 ++++--- + src/cairo-path-fixed.c | 45 +++++++++++++++++++++------------------ + src/cairo.c | 6 +++- + 3 files changed, 33 insertions(+), 27 deletions(-) -commit cf0245c1201d4884ff19e881e9c118784fa14884 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 18:17:09 2010 +0200 +commit 166453c1abf2279b884a4d878729fa4fcfa550cb +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 21 15:14:31 2010 +0200 - tests: Add a testcase that checks APIs work consistently + path: New path construction logic - In particular, it checks that finished and surfaces in an error state do - not do bad things, like cause crashes. - So far this test only checks surface APIs, but it should be extended to - cover all APIs. + Now move_to's are actually added to the path when followed by a + drawing operation (line_to, curve_to or close_path). - Please update this test when new APIs get added. + This is implemented by updating the current_point and setting the + needs_move_to when a move_to operation is requested. - Motivated by https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 + Whenever a drawing operation is requested and the needs_move_to flag + is set, a move_to is added before the drawing operation. - test/Makefile.sources | 1 + - test/api-special-cases.c | 360 ++++++++++++++++++++++++++++++++++++++++ - test/api-special-cases.ref.png | Bin 0 -> 95 bytes - 3 files changed, 361 insertions(+), 0 deletions(-) + src/cairo-path-bounds.c | 6 +- + src/cairo-path-fixed-private.h | 9 ++-- + src/cairo-path-fixed.c | 111 +++++++++++++++++++++------------------ + src/cairo.c | 6 ++- + 4 files changed, 72 insertions(+), 60 deletions(-) -commit eb63284fc3ae9377003ca312be58ae8f5dbbfdbd -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 00:37:10 2010 +0200 +commit a2ac91eb5f66f4c633abbcd6945f6015837ff211 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 17 14:10:58 2010 +0200 - configure: Use automake silent rules + path: Drop degenerate line_to in _cairo_path_fixed_curve_to - This replaces shave usage. - If silent rules are not available, don't use them. + When a degenerate line_to is followed by a curve_to operation, the + line_to can be safely dropped, just like for degenerate line_to + followed by line_to. - configure.ac | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-path-fixed.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) -commit 68bbb6b4a0a3b9bc923ccf130b1ca4221a5e54bd -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jul 5 00:35:39 2010 +0200 +commit 2352b48f9e9b54b4586548df74aaaa28d5308c0b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 17 14:21:07 2010 +0200 - configure: remove shave + path: Move _cairo_path_fixed_add at the end of line_to and curve_to - build/.gitignore | 2 - - build/aclocal.shave.m4 | 77 --------------------------------------------- - build/shave-libtool.in | 69 ---------------------------------------- - build/shave.in | 82 ------------------------------------------------ - configure.ac | 4 -- - 5 files changed, 0 insertions(+), 234 deletions(-) + src/cairo-path-fixed.c | 11 +++-------- + 1 files changed, 3 insertions(+), 8 deletions(-) -commit 9ce87c67ff64083ec48edfefe83a1df3756c364c -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jul 3 02:54:55 2010 +0200 +commit d6c3451ee24555abd0e9dcb5e5b8e4f85b70b7f0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 13:43:01 2010 +0200 - perf: print comment describing backend + box: Add _cairo_box_add_curve_to - Use the descibe string to output information about the backend we're - testing. + Add a function to extend a box with the extents of a curve_to + operation. - perf/cairo-perf-trace.c | 31 ++++++++++++++++++++++++++++++- - 1 files changed, 30 insertions(+), 1 deletions(-) + src/cairo-rectangle.c | 29 +++++++++++++++++++++++++++++ + src/cairoint.h | 7 +++++++ + 2 files changed, 36 insertions(+), 0 deletions(-) -commit fcfe7c67248ea171dc40c0dbd861e489a2df5941 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jul 3 02:54:28 2010 +0200 +commit 46584e01a8acfb43bb4af1b4e3b89b5cb5ebe246 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 22 13:41:51 2010 +0200 - boilerplate: Add describe string + box: Add box header - Print the pixman version we're using - - boilerplate/cairo-boilerplate.c | 21 ++++++++++++++++++--- - 1 files changed, 18 insertions(+), 3 deletions(-) - -commit 0a7135148a634ea6692a4edd83193870a5d526b3 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jul 3 02:54:08 2010 +0200 - - gl: Add describe string - - boilerplate/cairo-boilerplate-glx.c | 29 +++++++++++++++++++++++++---- - 1 files changed, 25 insertions(+), 4 deletions(-) + Add a new header implementing very simple box functions: + - initialization with the two extrema + - extension with a point + - in/out test -commit a1c4b001a548611b7d77e9280fdb5a82da275830 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 30 18:27:54 2010 +0200 - - boilerplate: Add a describe vfunc - - This function is supposed to describe the backend in use. The describe - function is optional - and therefore initialized as NULL everywhere. - Note: - It is well known that the xlib backend uses X. What is not known is what - version the server supports or what graphics card it is running on. That - is the information the describe vfunc is supposed to provide. - - boilerplate/Makefile.win32.features | 8 ++++++++ - boilerplate/cairo-boilerplate-directfb.c | 4 ++-- - boilerplate/cairo-boilerplate-drm.c | 2 ++ - boilerplate/cairo-boilerplate-egl.c | 1 + - boilerplate/cairo-boilerplate-glx.c | 4 ++++ - boilerplate/cairo-boilerplate-pdf.c | 4 ++-- - boilerplate/cairo-boilerplate-ps.c | 8 ++++---- - boilerplate/cairo-boilerplate-quartz.c | 5 +++-- - boilerplate/cairo-boilerplate-script.c | 2 +- - boilerplate/cairo-boilerplate-skia.c | 4 ++-- - boilerplate/cairo-boilerplate-svg.c | 8 ++++---- - boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++++++++-------- - boilerplate/cairo-boilerplate-vg.c | 4 ++++ - boilerplate/cairo-boilerplate-wgl.c | 2 ++ - boilerplate/cairo-boilerplate-win32-printing.c | 4 ++-- - boilerplate/cairo-boilerplate-win32.c | 4 ++-- - boilerplate/cairo-boilerplate-xcb.c | 7 +++++++ - boilerplate/cairo-boilerplate-xlib.c | 4 ++++ - boilerplate/cairo-boilerplate.c | 10 +++++----- - boilerplate/cairo-boilerplate.h | 4 ++++ - build/Makefile.win32.features-h | 1 + - src/Makefile.win32.features | 8 ++++++++ - 22 files changed, 80 insertions(+), 34 deletions(-) - -commit 4c039b1cdfac5b5d6aa0c38f0779213fd14ec7de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 2 17:01:12 2010 +0100 - - user-font: Check the status before destroying the context - - src/cairo-user-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-box-private.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-path-fixed.c | 1 + + src/cairo-path-stroke.c | 1 + + src/cairo-rectangle.c | 11 +----- + src/cairoint.h | 4 -- + 5 files changed, 79 insertions(+), 13 deletions(-) -commit 1f84f5682c6ff246b3d28c75c8731504f31c1ee1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 2 13:19:17 2010 +0100 +commit 65d57313f00b3775eb443f0c0069b996b44941d8 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 17 12:33:40 2010 +0200 - xlib: Apply translation to image surface upload. + path: Cleanup _cairo_path_fixed_line_to - Fixes: - - Bug 28888 - cairo_paint with rgb images does not work correctly - https://bugs.freedesktop.org/show_bug.cgi?id=28888 + The low-level line_to optimizations can be implemented in a more + abstract way using _cairo_path_fixed_penultimate_point and + _cairo_path_fixed_drop_line_to. - src/cairo-xlib-surface.c | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) + src/cairo-path-fixed.c | 22 ++++++++-------------- + 1 files changed, 8 insertions(+), 14 deletions(-) -commit d2d6c96c24501d888422ea42d3c90d3c8f3647a0 +commit f3e7677109d7ac0b775f2d373796f444cc3bff54 Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 29 09:58:54 2010 +0200 +Date: Sun Oct 17 11:40:34 2010 +0200 - user-font: correct handling of size 0 text - - Text with size 0 has a singular scale matrix, thus requires special - handling to avoid invalidating the context where it is used. + path: Simplify close_path - Fixes pthread-show-text and text-zero-len (they failed with assertion - when ran using the user font backend). + Instead of explicitly computing the flag in close_path, manually close + the path with a line_to, then drop the last operation if it is a + line_to (it might be another operation if the line_to was ignored + because it would have been degenerate). - src/cairo-matrix.c | 9 +++++++ - src/cairo-scaled-font.c | 5 +-- - src/cairo-user-font.c | 60 ++++++++++++++++++++++++++++------------------ - src/cairoint.h | 3 ++ - 4 files changed, 50 insertions(+), 27 deletions(-) + src/cairo-path-fixed.c | 37 +++++++++++++++++-------------------- + 1 files changed, 17 insertions(+), 20 deletions(-) -commit 6db247e13c6fa61879029b335c6fa649d810c11b +commit 641d314b9a3c670ddade74df99f1443063bd991b Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 29 09:28:04 2010 +0200 +Date: Sun Oct 17 11:54:19 2010 +0200 - user-font: ignore translation in scale matrix + path: Add utility functions - Currently the translation component of the scaled_font scale matrix - is applied by gstate and only linear components should be applied in - font backends. + Add a function to get the penultimate point and another one to drop + the last operation (assuming it is a line_to). - Fixes font-matrix-translation (when using user-font as font backend). + This allows some more abstraction in the line_to and close_path code. - src/cairo-user-font.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) + src/cairo-path-fixed.c | 28 ++++++++++++++++++++++++++++ + 1 files changed, 28 insertions(+), 0 deletions(-) -commit 549431e98ed0be17b80f24f0e0c167c7ad632f4f +commit 4075ed9686483defa9fb1cffca6509f079f9a91d Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Jun 28 22:40:28 2010 +0200 - - ft-font: fix typo - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 97a88c5adb08a3181bad1f63a7bbdfe5784b4207 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 28 17:10:59 2010 +0100 +Date: Sun Oct 17 11:53:58 2010 +0200 - xlib: Compile without fontconfig + path: Rename _cairo_path_last_op to _cairo_path_fixed_last_op - Create a cairo-fontconfig-private.h where we can add the missing defines - in a common location rather than in the body of the code. - - src/Makefile.sources | 1 + - src/cairo-fontconfig-private.h | 76 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-ft-font.c | 5 +-- - src/cairo-surface-subsurface.c | 1 + - src/cairo-xlib-screen.c | 20 +---------- - 5 files changed, 80 insertions(+), 23 deletions(-) - -commit 7d6910014310344e5d16c97ffd1f1c9fbc01b143 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Jun 28 17:12:41 2010 +0200 - - quartz: remove unused declarations + Aestetical change, to make the naming consistent with that of the + other functions. - src/cairo-quartz-surface.c | 17 ----------------- - 1 files changed, 0 insertions(+), 17 deletions(-) + src/cairo-path-fixed.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) -commit bd4c14b94eeb386b30439929e8e54a5d9b5d5fca +commit a8763d8fdeeb16323b8641e168475f77d73908a3 Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 24 23:20:41 2010 +0200 +Date: Sun Oct 17 11:38:23 2010 +0200 - quartz: remove unused os version info + path: Make path equality independent of flags - It was previously used to activate a workaround for text transformation - whenrunning on some os versions. Now the workaround is not needed anymore. + Flags for the same path can be different depending on its "history" + (in particular if it was constructed and transformed they might be + different from what they would be if each point was transformed and + then the path constructed). - src/cairo-quartz-surface.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) + src/cairo-path-fixed.c | 5 +---- + 1 files changed, 1 insertions(+), 4 deletions(-) -commit aa7e9c43b6381930455a68258dcc3e14dce2b0e4 +commit f4b2ce1c78c05c0a551aab7c84451c7ee1759213 Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 24 14:18:02 2010 +0200 +Date: Sun Oct 17 10:55:15 2010 +0200 - quartz-font: correct and explain matrix computations + path: Improve hashing + + Make the hash independent of buf bucketing, extents and flags. - glyph_path was taking into account the translation (which currently - is already applied in gstate) and the sign of the elements of the - matrices was not explained. + This makes the hash depend only on the actual content of the path, not + on how it is stored or on any computed property. - src/cairo-quartz-font.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) + src/cairo-path-fixed.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) -commit b26f72fef99e9869a62cbb8e44a82837f87cf2c6 +commit e9c1fc31887c5bfbb7d086f923a7628b7cfa739c Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 24 22:34:36 2010 +0200 +Date: Sat Oct 16 23:57:06 2010 +0200 - quartz: check return status + path: Do not access flags directly - If the font backend is unable to tell the extents of the operation, - consider it unbound. + Use inline accessors to hide the flags in the code. + + This ensures that flags that need additional computations (example: + is_rectilinear for the fill case) are always used correctly. - src/cairo-quartz-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-clip.c | 18 +++++++++--------- + src/cairo-gstate.c | 2 +- + src/cairo-image-surface.c | 6 +++--- + src/cairo-path-fill.c | 8 ++++---- + src/cairo-path-fixed-private.h | 26 +++++++++++++++++++------- + src/cairo-path-in-fill.c | 2 +- + src/cairo-path-stroke.c | 6 +++--- + src/cairo-surface-fallback.c | 6 +++--- + 8 files changed, 43 insertions(+), 31 deletions(-) -commit 9c0d761bfcdd28d52c83d74f46dd3c709ae0fa69 +commit 14cc9846b302a990e65d7572e7f095a8873a213d Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 24 15:26:03 2010 +0200 +Date: Sat Oct 16 23:08:03 2010 +0200 - quartz: improve text transform handling + path: Replace _cairo_path_fixed_is_equal with _cairo_path_fixed_equal - Use scale instead of manually compositing font_matrix and ctm and - composite it with the context ctm, so that no workaround for clipping - is needed anymore. + Remove _cairo_path_fixed_is_equal and use _cairo_path_fixed_equal + instead. + The latter function can recognize that two paths are equal even if the + drawing commands have been partitioned in a different way in the buf + list. - src/cairo-quartz-surface.c | 46 +++++++++++-------------------------------- - 1 files changed, 12 insertions(+), 34 deletions(-) + src/cairo-path-fixed.c | 35 ----------------------------------- + src/cairo-recording-surface.c | 4 ++-- + src/cairoint.h | 4 ---- + 3 files changed, 2 insertions(+), 41 deletions(-) -commit 9068b5768b8560fbf095f1c0eecb5c805232f794 +commit ac7b2a972097f4080ab6e5a29974c830b8b57a4f Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 24 15:15:37 2010 +0200 +Date: Fri Oct 15 21:51:12 2010 +0200 - quartz-font: silence compiler warnings + test: Fix get-path-extents - Remove an unused function, explicitly ignore or check return values, - don't define unused variables. + The test was considering all the empty rects equals, but this is + not correct when testing the results of cairo_path_extents(). - src/cairo-quartz-font.c | 84 +++++++++++++++++------------------------------ - 1 files changed, 30 insertions(+), 54 deletions(-) + test/get-path-extents.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) -commit ca161a585a7ce09cfcd468ea7591c5959077a907 +commit 253374d6ada14796b5ec55ceb7983de62be34f62 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 26 14:50:57 2010 +0100 +Date: Fri Oct 29 15:00:03 2010 +0100 - version: 1.9.9 + configure: Remove noisy -Wlogical-op - Post-snapshot bump. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0f1ff0daab7259ec16076f788760da4f35cb0cdc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 26 14:20:25 2010 +0100 - - test: Missing ref image. + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) + build/configure.ac.warnings | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) -commit 45d1f461ce2d2e3af16a5a90ffd8980bffc5eaa8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 26 14:17:23 2010 +0100 +commit 5a762edc28310a59968230ccb5354c57808606bf +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Oct 28 13:57:05 2010 +0200 - version: 1.9.10 + build: Don't build cairo-fdr when the tee surface is off - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + util/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 7a68a7bfd550b5e4b6635495e7de49fe306fbad4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 26 14:16:27 2010 +0100 +commit e23bcfd4300870034f07b1ecd1bb4d2ac95d9785 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 28 21:21:00 2010 +1030 - NEWS for 1.9.10 snapshot + PDF: Don't use the currently set color after a 'Q' operator + + https://bugs.freedesktop.org/show_bug.cgi?id=31140 - NEWS | 28 ++++++++++++++++++++++++++++ - 1 files changed, 28 insertions(+), 0 deletions(-) + src/cairo-pdf-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 8df41361196c7ba1b8d272507cc3d523cdcf5632 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 26 09:52:11 2010 +0100 +commit 147fa7a2bea74bfc02059d99df72b998d45eb843 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 24 16:40:53 2010 +0200 - Regenerate default win32 headers. + test: Add romedalen images copyright information + + romedalen.png and romedalen.jpg have been bundled into the test + suite without an explicit copyright notice. - boilerplate/Makefile.win32.features | 8 -------- - build/Makefile.win32.features-h | 1 - - src/Makefile.win32.features | 8 -------- - 3 files changed, 0 insertions(+), 17 deletions(-) + test/COPYING | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) -commit 1373675ef7602363aeca0d9ec12be79719ea066d -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 25 14:10:12 2010 +0200 +commit 6dc0b19adb6da690ad5944623081b9cdb42de066 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Oct 24 11:32:41 2010 +1030 - pop-group: Translate existing path properly + Type 1 subset: Fix glyph advance - This fixes the reverse case of the push_group case fixed a few commits - ago. + https://bugs.freedesktop.org/show_bug.cgi?id=31062 - src/cairo.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) + src/cairo-type1-subset.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) -commit 59076776674e3ae47099f20e1d86064fbd856008 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 25 14:08:49 2010 +0200 +commit cee1dadc66107e1cc6bcac7718e0b67969141876 +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 21 22:14:57 2010 +0200 - test: improve push-group-path-offset to also catch the pop_group() case + Other backends: Set round_glyph_positions to OFF - cairo_pop_group() also trasnforms the path wrong, so we use cairo_fill() - to copy data instead of cairo_paint(). + This sets CAIRO_ROUND_GLYPH_POS_OFF in all surface backends that didn't use + CAIRO_ROUND_GLYPH_POS_ON. - (Also, unbust the testcase.) + Signed-off-by: Uli Schlachter <psychon@znc.in> - test/push-group-path-offset.c | 45 ++++++++++++++-------------------------- - 1 files changed, 16 insertions(+), 29 deletions(-) + src/cairo-pdf-surface.c | 1 + + src/cairo-ps-surface.c | 1 + + src/cairo-svg-surface.c | 1 + + src/cairo-vg-surface.c | 1 + + 4 files changed, 4 insertions(+), 0 deletions(-) -commit 2e8571d95ca36f8ad9e20796990cdc0b3f763082 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 25 13:41:22 2010 +0200 +commit d24e9881de7b392cfce1d82c9861553ece558aaf +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 21 14:03:38 2010 +0200 - push-group: Fix path translation when pushing a group with device offsets + raster backends: Set round_glpyh_positions to ON - With the previous code, the parent's device offset wasn't undone before - applying the new device offset. - Tested by push-group-path-offset test. - - src/cairo.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit a9b8d1a94ea624ea8b12a125bdf70c6f248e7ca7 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 25 13:38:40 2010 +0200 - - test: Add a new test for a bug with device-offset tests + This fixes "text-rotate" in the test suite for the image backend and + "overlapping-glyphs" for the xcb backend. - All the credit for this one goes to make distcheck + Signed-off-by: Uli Schlachter <psychon@znc.in> - test/Makefile.sources | 1 + - test/push-group-path-offset.c | 90 +++++++++++++++++++++++++++++++++++ - test/push-group-path-offset.ref.png | Bin 0 -> 186 bytes - 3 files changed, 91 insertions(+), 0 deletions(-) + src/cairo-gl-surface.c | 1 + + src/cairo-image-surface.c | 1 + + src/cairo-win32-printing-surface.c | 1 + + src/cairo-xcb-surface.c | 1 + + src/cairo-xlib-screen.c | 1 + + 5 files changed, 5 insertions(+), 0 deletions(-) -commit 1099a3515b6a69e2ff360d8e6b1df71e3ea5c213 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 24 17:22:34 2010 +0100 +commit b514863a0ee8e6c4f0a994f6f5e7db18ce290e79 +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 21 13:59:25 2010 +0200 - drm/intel: Fix common off-by-one by rewriting the [XY]MAX macro. + Actually implement round_glpyh_positions - Many rectangles in the command stream are specified as inclusive rects, - i.e. the max values are (width-1, height-1), which is easy to neglect. - - src/drm/cairo-drm-i915-private.h | 2 +- - src/drm/cairo-drm-i915-surface.c | 24 ++++++------------------ - src/drm/cairo-drm-i965-shader.c | 12 ++++++------ - src/drm/cairo-drm-intel-command-private.h | 4 ++-- - 4 files changed, 15 insertions(+), 27 deletions(-) + The previous commit only added this option and made sure it gets set, but it + didn't actually have any effect. This commit now implements this option. + + Signed-off-by: Uli Schlachter <psychon@znc.in> -commit fb6a00571c818c738d66bc04dc75e79491878f78 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 14 10:19:37 2010 +0100 + src/cairo-scaled-font.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) - drm: _cairo_color_get_content() compilation fixes +commit 6bfe71124b56b496056b77b3b51eef4d656ccf54 +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 21 13:52:33 2010 +0200 - src/drm/cairo-drm-i915-shader.c | 2 +- - src/drm/cairo-drm-i965-shader.c | 5 +---- - src/drm/cairo-drm-intel.c | 3 +-- - 3 files changed, 3 insertions(+), 7 deletions(-) + font options: Add private round_glpyh_positions field + + Signed-off-by: Uli Schlachter <psychon@znc.in> -commit 42956b46436b9704be7619e1b61ab222923376d0 -Author: Zoxc <zoxc32@gmail.com> -Date: Sun Jun 20 21:07:57 2010 +0000 + src/cairo-font-options.c | 49 +++++++++++++++++++++++++++++++++++++++++++- + src/cairo-surface.c | 3 +- + src/cairo-types-private.h | 7 ++++++ + src/cairoint.h | 7 ++++++ + 4 files changed, 63 insertions(+), 3 deletions(-) - build: Added cairo deflate stream as a requirement for the script surface. +commit fae88051c18722566d15b96a1b23bfde1844c3ee +Author: Uli Schlachter <psychon@znc.in> +Date: Sun Oct 17 17:47:22 2010 +0200 - src/Makefile.sources | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) + XCB: Use consistent rounding modes for a1 rasterisation. + + This ports commits 36b4b0631 and 7ab9ce1b9 from the image backend to xcb. Look + there for an explanation of why this is correct, I only copied this over and the + test suite said it was good. :-) + + This fixes unantialiased-shapes, a1-rasterisation-rectangles and + a1-rasterisation-triangles. + + Signed-off-by: Uli Schlachter <psychon@znc.in> -commit b036a09972a19e63a85a4661a457525e2abe4026 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 24 14:59:18 2010 +0300 - - whitespace: Fixup formal arguments and tabs in boilerplate/ and perf/. - - Ran a script to align the formal parameters of functions and - collapse spaces to tabs in code. - - boilerplate/cairo-boilerplate-beos.cpp | 42 +++++----- - boilerplate/cairo-boilerplate-directfb.c | 86 ++++++++++---------- - boilerplate/cairo-boilerplate-drm.c | 2 +- - boilerplate/cairo-boilerplate-egl.c | 20 +++--- - boilerplate/cairo-boilerplate-getopt.c | 12 ++-- - boilerplate/cairo-boilerplate-glx.c | 60 +++++++------- - boilerplate/cairo-boilerplate-pdf.c | 24 +++--- - boilerplate/cairo-boilerplate-private.h | 2 +- - boilerplate/cairo-boilerplate-ps.c | 49 ++++++------ - boilerplate/cairo-boilerplate-qt.cpp | 18 ++-- - boilerplate/cairo-boilerplate-quartz.c | 18 ++-- - boilerplate/cairo-boilerplate-scaled-font.h | 2 +- - boilerplate/cairo-boilerplate-script.c | 30 ++++---- - boilerplate/cairo-boilerplate-skia.c | 18 ++-- - boilerplate/cairo-boilerplate-svg.c | 59 +++++++------- - boilerplate/cairo-boilerplate-system.c | 10 ++- - boilerplate/cairo-boilerplate-system.h | 10 ++- - boilerplate/cairo-boilerplate-test-surfaces.c | 100 ++++++++++++------------ - boilerplate/cairo-boilerplate-vg.c | 36 ++++---- - boilerplate/cairo-boilerplate-wgl.c | 58 +++++++------- - boilerplate/cairo-boilerplate-win32-printing.c | 29 ++++--- - boilerplate/cairo-boilerplate-win32.c | 18 ++-- - boilerplate/cairo-boilerplate-xcb.c | 85 ++++++++++---------- - boilerplate/cairo-boilerplate-xlib.c | 90 +++++++++++----------- - boilerplate/cairo-boilerplate.c | 102 ++++++++++++----------- - boilerplate/cairo-boilerplate.h | 44 ++++++----- - perf/cairo-perf-chart.c | 38 ++++++--- - perf/cairo-perf-compare-backends.c | 30 ++++--- - perf/cairo-perf-diff-files.c | 37 +++++---- - perf/cairo-perf-graph-files.c | 73 ++++++++++------- - perf/cairo-perf-graph-widget.c | 60 +++++++++------ - perf/cairo-perf-graph.h | 8 +- - perf/cairo-perf-micro.c | 82 ++++++++++--------- - perf/cairo-perf-os2.c | 10 +- - perf/cairo-perf-posix.c | 24 +++--- - perf/cairo-perf-print.c | 5 +- - perf/cairo-perf-report.c | 62 +++++++++------ - perf/cairo-perf-trace.c | 82 +++++++++++-------- - perf/cairo-perf-win32.c | 6 +- - perf/cairo-perf.h | 38 +++++---- - perf/cairo-stats.c | 11 ++- - perf/cairo-stats.h | 6 +- - 42 files changed, 850 insertions(+), 746 deletions(-) - -commit 616e35d1fae703dc118ce503d25d4f57cfd16dfd -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 24 09:44:07 2010 +0300 - - boilerplate: Remove the xlib-window target from Renderless builds. - - I don't know why _cairo_boilerplate_xlib_window_create_surface() - is in the Render-only section of the code, but since it is, this - patch makes the boilerplate at least compile if we don't have - Render support built in. - - boilerplate/cairo-boilerplate-xlib.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-xcb-surface-render.c | 80 +++++++++++++++++++++++++--------------- + 1 files changed, 50 insertions(+), 30 deletions(-) -commit aed744008dbaab49f28f9c54ad0850074ece5d66 -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Thu Jun 24 05:38:14 2010 -0400 +commit b80bcf66b284deeb4d44d68a860a1e7857136982 +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 14 20:38:35 2010 +0200 - test: Fix typo in copyright statement + XCB: Fix for all unbounded operators + + _cairo_xcb_surface_fixup_unbounded_boxes() calculated a list of boxes that it + has to clear to make an unbounded operator work correctly. Then it cleared the + boxes that were drawn instead of clearing the list of boxes that it has to + clear. + + The reason that this wasn't noticed before is that there is an optimization in + case we have only one box instead of a whole list of boxes. This hid the bug. + + This fixes the "unbounded-operator" test case. + + Signed-off-by: Uli Schlachter <psychon@znc.in> - test/bug-seams.c | 2 +- + src/cairo-xcb-surface-render.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit 5c7e1dd690af21943435676bfac320cfe863cf55 -Author: Soeren Sandmann <sandmann@daimi.au.dk> -Date: Thu Jun 24 10:11:48 2010 +0100 +commit 4465ff779aae506194e8bf0a649947ee67bbc5fc +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 14 18:12:39 2010 +0200 - test: Add an example of seams. + XCB: Move the assert from 5a0f8f7320c916c - A pair of perfectly conjoint quads should not produce a seam when - accumulating into a temporary mask. Yet here is an example of where they - do! - - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/bug-seams.c | 98 ++++++++++++++++++++++++++++++++++ - test/bug-seams.ref.png | Bin 0 -> 1604 bytes - test/bug-seams.xlib-fallback.ref.png | Bin 0 -> 2133 bytes - test/bug-seams.xlib.ref.png | Bin 0 -> 1606 bytes - 6 files changed, 102 insertions(+), 0 deletions(-) - -commit 413ec4b708a511eb2f3866165a35d3a8d97bd326 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 22 23:19:32 2010 +0200 - - gl: Return a surface from _cairo_surface_create_in_error() + Calling _cairo_xcb_surface_ensure_picture() on a XCB surface whose fallback + member is non-null is always an error. It's possible that the surface first gets + a picture assigned and later it's fallback member is set. In this situation, + it's still wrong to use the surface's picture for any drawing- - On error, surface creation functions should always return a surface - created with _cairo_surface_create_in_error() instead of a new surface - in an error state. This simplifies internal code as no refcounting has - to be done. + Signed-off-by: Uli Schlachter <psychon@znc.in> - src/cairo-gl-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a4e292507cf7c2f960d040edd57b56a976c73da6 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 22 22:01:25 2010 +0200 - - gl: Propagate surface creation error instead of crashing - - src/cairo-gl-glyphs.c | 22 ++++++++++++++++------ - 1 files changed, 16 insertions(+), 6 deletions(-) - -commit faa4e6761c8f74a1acaa7ccc5bc8bb23b2f5cdb1 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jun 21 14:01:34 2010 +0200 - - egl: Copy glx code to detect the proper surface in acquire - - src/cairo-egl-context.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 76a721f7e94fb040f106b200c09c1a7b9ae83d36 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jun 21 13:30:06 2010 +0200 - - egl: Remove unused prev_foo usage - - src/cairo-egl-context.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) + src/cairo-xcb-surface-render.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit b8051ee985ed46c69f5fba1216ead1ebacecfd44 +commit c6c3bdba4b43a1f678dae46bfe52d37fc292c6d4 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 19 18:09:27 2010 +0100 +Date: Wed Oct 20 14:26:37 2010 +0100 - script: Pass the buffer length back to freetype. + perf: Only print description once per backend - After querying the required size, inform the backend of the allocated - size of the buffer. + Currently we print the backend description before every time, which is + overly verbose. As the information doesn't^Wshouldn't change, simply + print it before running the first test of each target. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-script-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + perf/cairo-perf-trace.c | 5 +++++ + perf/cairo-perf.h | 1 + + 2 files changed, 6 insertions(+), 0 deletions(-) -commit 8ac9a9df24eefc5f1125db87eb8eda2e94f54070 +commit 0d93468efc7f7337b63c0cd746d5185e14d345f1 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 19 13:23:50 2010 +0100 +Date: Fri Oct 15 10:37:25 2010 +0100 - xcb: Return the status upon flushing the device. + xcb: Pass clip to composite_glyphs_via_mask - The vfunc was updated to expect the status return, so supply it. + Spotted by Uli Schlachter. + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-xcb-connection.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) + src/cairo-xcb-surface-render.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) -commit 9fffc0e120df8947c34d9e423c69ab66b763d875 +commit 42ecc427f361bcce68d529ae308ab65ff14ecea8 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 19 11:15:13 2010 +0100 +Date: Fri Oct 15 10:28:32 2010 +0100 - xlib: Precise and Imprecise were reversed. + xcb,image: Fix a missing clip fini + + Spotted by Uli Schlachter when I copied the image glyphs clipping to + xcb. - The intention was to switch to imprecise mode by default, using the - exact rendering mode only upon request. + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-xlib-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-image-surface.c | 4 +++- + src/cairo-xcb-surface-render.c | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) -commit b322b2e61984c2e9e00fb44343ebe5e423246445 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 19 10:26:05 2010 +0100 +commit 22cdb7041f4ecbcac708583bc195d13934be6cf7 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 13 19:23:45 2010 +1030 - xlib: Perform image uploads inplace. + PS: Remove radial gradient fallback - Under the restrictive conditions where we are doing an untransformed - contained upload of an image into a matching surface, perform it in - place. The drivers will attempt to stream such uploads efficiently, far - more so than our code. + when one circle not inside the other. Pixman now follows the PDF + specification. - src/cairo-xlib-surface.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 112 insertions(+), 0 deletions(-) + src/cairo-ps-surface.c | 19 ++----------------- + 1 files changed, 2 insertions(+), 17 deletions(-) -commit c3eb95bf6670bbc06ef908481da95f3504c7dc4d -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 19:26:07 2010 +0200 +commit d3655e04b2e27bacdeeddbaf0c4a212b9b93b6ee +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 13 19:20:07 2010 +1030 - egl: Fail properly if no configs are available instead of crashing + PDF: Remove radial gradient fallback + + when one circle not inside the other. Pixman now follows the PDF + specification. - boilerplate/cairo-boilerplate-egl.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) + src/cairo-pdf-surface.c | 17 +---------------- + 1 files changed, 1 insertions(+), 16 deletions(-) -commit 3908d80f57bc0abef47721a5b8b9afd5041118e3 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 16:11:20 2010 +0200 +commit 34d929962413136ac127245c4347df5c6a5387b3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 14 19:32:51 2010 +1030 - glx: Remove useless optimization trying to avoid glXMakeCurrent() + PS: Remove redundant code - The optimization is not performance-relevant. And having less code is - always a good idea. + The test for zero stops is now in gstate. - src/cairo-glx-context.c | 19 ++----------------- - 1 files changed, 2 insertions(+), 17 deletions(-) + src/cairo-ps-surface.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) -commit 64f90322f73c37ac5667292949bb45b0279239d9 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 12:40:48 2010 +0200 +commit 7a17ef31760c49b81fd2890814f5b2aeb8c6b3a3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 14 19:28:13 2010 +1030 - gl: Refactor status handling in _cairo_gl_context_release() + PDF: Fix regression in EXTEND_NONE gradients - Previously, the code returned a status and required the caller to mangle - this status with his own status. Now, the function takes the previous - status ass an argument and does the mangling itself. + The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern() + must be identical to the test in + _cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will + reference a smask that does not exist. - Also contains fixes for all the callers to actually check the return - value - which is now rather trivial as it just requires passing through - the status variable. + The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can + draw EXTEND_NONE gradients with opaque color stops without requiring a + smask. - src/cairo-gl-composite.c | 6 +--- - src/cairo-gl-device.c | 2 +- - src/cairo-gl-glyphs.c | 14 ++++-------- - src/cairo-gl-gradient.c | 3 +- - src/cairo-gl-private.h | 14 +++++++----- - src/cairo-gl-surface.c | 47 ++++++++++++++++++++++++--------------------- - 6 files changed, 43 insertions(+), 43 deletions(-) + src/cairo-pdf-surface.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) -commit fc3d521c121da237974e486f1b7735009764b441 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 12:23:37 2010 +0200 +commit 6fecbb000d29dde153ce35ec08f663249f234b8e +Author: Uli Schlachter <psychon@znc.in> +Date: Thu Oct 14 13:26:48 2010 +0200 - gl: Inline the check_error() function + XCB: Remove an incorrect clipping optimizations + + It seems like the idea here was to optimize for the special case of a + rectangular clip, where the region operation could be replace by + direction operation on the draw extents. However, we cannot modify the + geometry for all operations, and in particular the glyphs. So remove + this from the common compositing path. + + This fixes partial-clip-text in the test suite. + + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-gl-private.h | 23 +++++++---------------- - 1 files changed, 7 insertions(+), 16 deletions(-) + src/cairo-xcb-surface-render.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) -commit 9d7fa289132650261e546b39af2371c262f46d3c -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 12:18:05 2010 +0200 +commit 408033b4641ba66de0cb60df1c89e437d7422040 +Author: Uli Schlachter <psychon@znc.in> +Date: Wed Oct 13 20:15:16 2010 +0200 - gl: Don't assert if there used to be a GL error + Add myself to AUTHORS - When acquiring the GL context, do not assert that the GL context is not - in an error state. Do not even call _cairo_error(). Handling GL errors - in other code is not Cairo's responsibility. + I was looking around for changes that I could do. This what I came up with. + Seems boring, but nothing better came up this time. - Instead just clear all previous errors so we don't accidentally set - surfaces into error states to unrelated errors. + Signed-off-by: Uli Schlachter <psychon@znc.in> + [ickle: Apologies for not doing it on your behalf.] + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-gl-private.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + AUTHORS | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 0f9a8cd18f14b1f23aaefe14db3b5ad07c84cff7 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 12:17:36 2010 +0200 +commit 8b6e0809955f01c369838f7c73db8d92d5953d72 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 14 14:20:46 2010 +0100 - gl: Add a custom glGetError() function + xcb: Fix reduction of clipping for bounded glyphs. - This function clears all errors and returns the first one that happened. + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-gl-private.h | 19 ++++++++++++++++--- - 1 files changed, 16 insertions(+), 3 deletions(-) + src/cairo-xcb-surface-render.c | 38 ++++---------------------------------- + 1 files changed, 4 insertions(+), 34 deletions(-) -commit 8048d3aa0a11ab1c054887682b8b2a899a87da0e -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 10:50:21 2010 +0200 +commit e6ce65fb82c2df09330f31fd9251fdf96f0cab50 +Author: Uli Schlachter <psychon@znc.in> +Date: Tue Oct 5 19:40:52 2010 +0200 - gl: Remove custom fprintf fudging on GL errors + xcb: Correctly handle ARGB visuals - Now that we probably call _cairo_error() on every GL error, there is no - need to use custom methods to catch those errors. The usual breakpoint - is enough. + We want surface->depth to end up as "32", so we have to invent an alpha mask. + This mask is not used anyway (only its popcount), but still this should get a + less ugly fix. + + This was found because "assert (reply->depth == surface->depth);" in + _get_image() failed. + + Original-patch-by: Ross Alexander <Ross.Alexander@EU.NEC.COM> + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-gl-private.h | 7 +------ - src/cairo-gl-surface.c | 20 -------------------- - 2 files changed, 1 insertions(+), 26 deletions(-) + src/cairo-xcb-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) -commit f4da5048bf87df0651ec83ca3f1ad6a5af7eb16d -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 10:44:15 2010 +0200 +commit da62cc21da4f250850050d0ead947858fb804223 +Author: Uli Schlachter <psychon@znc.in> +Date: Tue Oct 12 21:59:14 2010 +0200 - gl: cairo_warn about return value from cairo_gl_context_release() + _cairo_xcb_surface_picture: Check for fallback + + If a cairo surface's fallback member is set, the current content of that surface + is in-memory and the X server has an outdated version of stuff. Our + optimizations for doing in-server copies are wrong in this case and we should do + stuff in cairo instead of the X server. + + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-gl-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-xcb-surface-render.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit d9179f480a43c7171806e2c33804aaae70a2cfa6 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 18 00:43:09 2010 +0200 +commit 5a0f8f7320c916c86c4fd66a5aa8cb8545c00643 +Author: Uli Schlachter <psychon@znc.in> +Date: Tue Oct 12 21:56:46 2010 +0200 - boilerplate: Reinstate glFinish() for wgl + _cairo_xcb_surface_ensure_picture: Check fallback + + When an XCB surface's fallback member is not NULL, we did some rendering that + the X server couldn't do for us and thus did that internally in cairo instead. + This means the X drawable's content is out of date and should not be used for + drawing anything. - It was accidentally disabled. + This adds an assert which checks for that situation. + + Signed-off-by: Uli Schlachter <psychon@znc.in> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - boilerplate/cairo-boilerplate-wgl.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-xcb-surface-render.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 67e84d61230a2012c18d8bff60e8835aaa57be07 -Author: Kristian Høgsberg <krh@bitplanet.net> -Date: Thu Jun 17 17:38:00 2010 -0400 +commit 35b1688c92d2c0e1353fc2b5e89abb29c2acda8d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Oct 13 00:13:42 2010 +0200 - egl: Implement acquire and release for EGL backend + quartz: Remove unused imageSurface field + + imageSurface was used to store a reference to the fallback image + generated by during fallbacks for gradients. The fallback code + has been removed as it is not needed anymore, thus this field can + be removed as well. - src/cairo-egl-context.c | 46 +++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 37 insertions(+), 9 deletions(-) + src/cairo-quartz-surface.c | 5 ----- + 1 files changed, 0 insertions(+), 5 deletions(-) -commit 7ab9ce1b9130dcd63b2b2b2516b77ef1ae531144 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 17 15:47:04 2010 +0100 +commit ce455994a36cabe4a39a666556282ef2bf8b8daf +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Oct 13 00:10:09 2010 +0200 - image: Make a local copy of the trap coordinates as the boxes alias. + quartz: Cleanup gradient setup functions - As we transform the array of trapezoids into an array of boxes in-place, - we must take local copies of the coordinates before writing into the - boxes otherwise we may inadvertently modify the trapezoidal coordinates. - - Fixes test/a1-bug. + Gradient setup does not depend anymore on the surface on which the + gradient will be composited. - src/cairo-image-surface.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) + src/cairo-quartz-surface.c | 18 ++++++------------ + 1 files changed, 6 insertions(+), 12 deletions(-) -commit f2645fa361003636d1da6ca38c3b61fef1b1ce4d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 17 15:38:53 2010 +0100 +commit 1061c80d79e0e282617669397b45e0776d23bfb6 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 29 16:48:30 2010 +0200 - test: Add a1-bug + quartz: Move drawing state out of surface - Capture a bug report from "cairouser" where a1 rasterisation is now - broken. + Some pattern types (gradients, surface patterns) require some + temporary information to be stored as "graphic state", because it + doesn't belong to CGContext. Previously all of this data was stored + inside the surface during the drawing operations, now it's in a + stack-allocated structure (of type cairo_quartz_drawing_state_t). + Based on a patch by Robert O'Callahan <robert@ocallahan.org>. + See https://bugzilla.mozilla.org/show_bug.cgi?id=522859 - test/Makefile.am | 3 ++ - test/Makefile.sources | 1 + - test/a1-bug.c | 61 +++++++++++++++++++++++++++++++++++++++++++ - test/a1-bug.image16.ref.png | Bin 0 -> 3329 bytes - test/a1-bug.ref.png | Bin 0 -> 3736 bytes - test/a1-bug.xlib.ref.png | Bin 0 -> 3362 bytes - 6 files changed, 65 insertions(+), 0 deletions(-) + src/cairo-quartz-private.h | 12 --- + src/cairo-quartz-surface.c | 166 +++++++++++++++++++++++++------------------- + 2 files changed, 95 insertions(+), 83 deletions(-) -commit 800e977c2ea1e097c4b7332b18a5fc03089603c1 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 17 14:27:13 2010 +0300 +commit bbaca9598292eaee2da3c8a7c275d53bf1a1a652 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 29 15:50:21 2010 +0200 - perf: Allow comparing perf reports with only one difference. + quartz: Unify DO_SHADING, DO_IMAGE and DO_TILED_IMAGE - The cairo-perf-diff-files tool would ignore perf reports with - just one test for no apparent reason. The traces take so long - that it's useful to be able to compare runs with just one trace. + DO_SHADING, DO_IMAGE and DO_TILED_IMAGE sources all require the source + to be painted over the whole surface (inside the clip region), thus can + share the same code path in drawing functions. - perf/cairo-perf-diff-files.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 54 +++++++++++++------------------------------- + 1 files changed, 16 insertions(+), 38 deletions(-) -commit 29b8cfd2b6cf590fcfe64e5ba5b4479c2748ac06 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 17 10:11:31 2010 +0100 +commit 51a6ae9d71daefdca214fdc48e1bb8fcba10029d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 29 15:06:39 2010 +0200 - test/halo: Remove copied code. - - How did that get there? I obviously ran the test to generate the output, - so where did it spring as it is the old version of the function? - - From 16364768d79570e7201a87f0a985c65acaff5560. + quartz: Unify DO_SOLID and DO_PATTERN - Mysteries will never cease. + Both DO_SOLID and DO_PATTERN setup the underlying CGContext to directly + use the chosen color/pattern when filling and stroking, thus require no + additional drawing operations and can share the same drawing code. - test/halo.c | 36 ------------------------------------ - 1 files changed, 0 insertions(+), 36 deletions(-) + src/cairo-quartz-private.h | 4 +--- + src/cairo-quartz-surface.c | 22 +++++++++------------- + 2 files changed, 10 insertions(+), 16 deletions(-) -commit a9a22649e2ffa1cd3720c8555dc3c6aff2040e3d -Author: Zoxc <zoxc32@gmail.com> -Date: Wed Jun 16 21:33:30 2010 +0200 +commit c22e75e9f6cb471c764af0d721ad07cdf30a3bad +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jul 28 19:03:13 2010 +0200 - wgl: Only reset GL context on the dummy window. + quartz: Set operator when setting up source - This changes the WGL context destruction code to only reset the GL - context for the dummy window, since doing it on <nothing> is an - invalid operation. + Share some code between the drawing functions by saving the state + and setting the operator when setting up the source and by restoring + the state during teardown. + Based on a patch by Robert O'Callahan <robert@ocallahan.org>. + See https://bugzilla.mozilla.org/show_bug.cgi?id=522859 - src/cairo-wgl-context.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) + src/cairo-quartz-private.h | 2 - + src/cairo-quartz-surface.c | 69 +++++++++++++------------------------------ + 2 files changed, 21 insertions(+), 50 deletions(-) -commit ca35e09ece5107c3ebc9f111d4a3d96d69aa3d03 -Author: Zoxc <zoxc32@gmail.com> -Date: Mon Jun 14 20:34:52 2010 +0200 +commit 6bc1376cf52a9815b75f8c0ce66e149fbc64495e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 8 09:49:51 2010 +0200 - gl: Added wgl boilerplate and moved the glx and egl boilerplates into their own files. + quartz: Remove DO_NOTHING and DO_UNSUPPORTED actions + + DO_NOTHING and DO_UNSUPPORTED are not actual actions and are better + handled by returning an appropriate cairo_int_status_t (and falling + back, if needed). - boilerplate/Makefile.sources | 4 +- - boilerplate/Makefile.win32.features | 8 + - boilerplate/cairo-boilerplate-egl.c | 141 ++++++++++ - boilerplate/cairo-boilerplate-gl.c | 492 ----------------------------------- - boilerplate/cairo-boilerplate-glx.c | 401 ++++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate-wgl.c | 236 +++++++++++++++++ - build/Makefile.win32.features-h | 1 + - src/Makefile.win32.features | 8 + - 8 files changed, 798 insertions(+), 493 deletions(-) + src/cairo-quartz-private.h | 9 +++ + src/cairo-quartz-surface.c | 147 ++++++++++++++++++++++---------------------- + 2 files changed, 82 insertions(+), 74 deletions(-) -commit 2af3262895d74492a0f856f049d1524a527257bb -Author: Zoxc <zoxc32@gmail.com> -Date: Mon Jun 14 20:33:17 2010 +0200 +commit 08c59c6bf3296cc8c70b71a270a3685227c1621b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Oct 8 16:57:27 2010 +0200 - wgl: Renamed hwnd field to wnd. + quartz: Improve gradient quality + + Instead of extending the range of the interpolation parameter to make + sure that pixels exactly on the edge get drawn, we are now asking + quartz to extend the gradient. - src/cairo-wgl-context.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) + src/cairo-quartz-surface.c | 11 +---------- + 1 files changed, 1 insertions(+), 10 deletions(-) -commit 7a023a62f7517ad0d54f4d59c99909fadcc05e82 -Author: Nicolaus L Helper <nlhepler@gmail.com> -Date: Thu Jun 17 08:56:30 2010 +0100 +commit 620c43f50c2c613b8fb334b97d9edcbede0e61bb +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Sep 7 08:49:05 2010 +0200 - ft,fc,xlib: LCD filtering patch. - - This adds internal API to retrieve the LCD filtering parameters from - fontconfig, or as set on the Screen, and feed them to FreeType when - rendering the glyph. + quartz: Fix EXTEND_PAD gradients - References: - Bug 10301 - LCD filtering patch - https://bugs.freedesktop.org/show_bug.cgi?id=10301 + Make PAD extended gardients more robust, by computing the color + explicitly like for REPEAT and REFLECT extend modes. + This removes a hack introducing a small but non-0 negative value + that ensured that the gradient started with the correct color (but + not that it ended with the correct one, too). - Tested-by: Brandon Wright <bearoso@gmail.com> - Forward-ported-by: Robert Hooker <sarvatt@gmail.cm> - - ickle: The API is clearly not ready for public consumption, the enum are - poorly named, however this stands by itself as enabling system wide - properties. + Fixes linear-gradient-large. - src/cairo-font-options.c | 51 ++++- - src/cairo-ft-font.c | 675 ++++++++++++++++++++++++++++++++------------- - src/cairo-surface.c | 1 + - src/cairo-types-private.h | 25 ++ - src/cairo-xlib-screen.c | 28 ++ - src/cairoint.h | 7 + - 6 files changed, 597 insertions(+), 190 deletions(-) + src/cairo-quartz-surface.c | 20 +++++++------------- + 1 files changed, 7 insertions(+), 13 deletions(-) -commit 36b4b0631cc220d01c411b596a4eef839338cd7c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 17 08:50:31 2010 +0100 +commit 2af3ae92ebe91e39b835eae048addc442533fb67 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 12 22:52:54 2010 +0200 - image: Use consistent rounding modes for a1 rasterisation. + quartz: Improve gradient consistency - When checking if the traps are equivalent to a set of rectangles, we - need to use the same rounding mode as when converting the traps to a set - of boxes and then filling them. Failure to do leads to a situation where - (-127,-128) was thought to be equivalent to (0,0) but we attempted to - fill from 0 to -1 instead. + By keeping "virtual extents", quartz surfaces now keep track of + the extents where they want the gradients to be consistent. + This works across various API for surface creation and editing: + - cairo_surface_create_for_rectangle + - cairo_surface_create_similar + cairo_surface_set_device_offset + - cairo_push_group/cairo_pop_group - References: - http://lists.cairographics.org/archives/cairo/2010-June/020115.html + This method does not use clip extents, so it also makes gradient + rasterization independent of clip/path extents. - src/cairo-image-surface.c | 58 +++++++++++++++++++++++++++----------------- - 1 files changed, 35 insertions(+), 23 deletions(-) + src/cairo-quartz-private.h | 1 + + src/cairo-quartz-surface.c | 114 +++++++++++++++++-------------------------- + 2 files changed, 46 insertions(+), 69 deletions(-) -commit 3306bcb1d91265d60c460aa64d3ee4a4acb430a1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 17 08:47:48 2010 +0100 +commit d21b4f31665d409e1bfa6eae82b3c10dd77c4b28 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 12 22:35:36 2010 +0200 - fixed: Refactor code to use more inlines and less duplication of logic. + Add _cairo_rectangle_union - This also has the side-effect of fixing the types in the problematic - functions which hid Andrea's true fix for the unsigned FRAC_MASK. + Implement _cairo_rectangle_union(), a function to compute a rectangle + containing two input rectangles. - src/cairo-fixed-private.h | 18 +++++++++++++++--- - 1 files changed, 15 insertions(+), 3 deletions(-) + src/cairo-rectangle.c | 23 +++++++++++++++++++++++ + src/cairoint.h | 7 +++++++ + 2 files changed, 30 insertions(+), 0 deletions(-) -commit c0dee7964c4394b7963041f246855fd3b01f4ebb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 16 18:49:58 2010 +0100 +commit 2b3d9b3a3aedc37481639dff923c97b8ff956c80 +Author: Joerg Sonnenberger <joerg@NetBSD.org> +Date: Tue Oct 12 22:07:37 2010 +0200 - test: Add a1-rasterisation - - Check the rounding criteria when rasterising. + LD_PRELOAD is supported on DragonFly. - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/a1-rasterisation-rectangles.ref.png | Bin 0 -> 1729 bytes - test/a1-rasterisation-triangles.ref.png | Bin 0 -> 1729 bytes - test/a1-rasterisation.c | 101 ++++++++++++++++++++++++++++++ - 5 files changed, 104 insertions(+), 0 deletions(-) + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 16364768d79570e7201a87f0a985c65acaff5560 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 16 15:09:22 2010 +0100 +commit 1c36766d27173c5e4751e131d6bf26441d95a10e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 12 16:06:45 2010 +0200 - test/halo: Transformation seems key to the bug... + quartz: Remove unused code + + The gradient fallback path is not used anymore. - test/halo.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 36 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 53 -------------------------------------------- + 1 files changed, 0 insertions(+), 53 deletions(-) -commit cb28e0bfeb47a72f14ee42f161ebf6b5eb61e76b +commit 2cea2bb085a34650defbc18a477ddf468060b58c Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 17 08:42:39 2010 +0200 +Date: Tue Oct 12 15:37:23 2010 +0200 - test: correct options in getopt call + quartz: Make radial gradients follow PDF specification - 'k' was missing and 't' was present but unhandled. Options have been - reordered according to the "USAGE" ordering. + Pixman master (soon to become pixman 0.20) implements radial + gradients based on the PDF specification (section 8.7.4.5.4). + Quartz natively implements them, so falling back is not needed + anymore. - test/cairo-test-runner.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 14 -------------- + 1 files changed, 0 insertions(+), 14 deletions(-) -commit 3cd07559328b60e3da85debb805cb4a3fc4abc22 +commit 5054727927ee86c5952f8956aa0225f49e9ff66e Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jun 16 22:54:08 2010 +0200 +Date: Tue Oct 12 16:04:53 2010 +0200 - correct rounding computation - - cairo_fixed_integer_round[_down] were adding an unsigned mask value - before shifting its result, causing the shift to be computed as - logical (unsigned) right shift, thus producing incorrect values for - negative inputs. Making the mask value signed fixes this issue. + quartz: Remove linear gradient fallback - Bug report by cu: - http://lists.cairographics.org/archives/cairo/2010-June/020115.html + Degenerate linear gradients are reduced to solid gradients in + gstate, so backends do not need to handle them. - src/cairo-fixed-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 10 ---------- + 1 files changed, 0 insertions(+), 10 deletions(-) -commit 8689d75caaa9c6ee42976873d21684fa9f48834f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 16 15:09:22 2010 +0100 - - test/halo: Transformation seems key to the bug... - - Only it is actually transformation of the result that is required in - order to magnify the effect to a detectable level. - - test/Makefile.am | 5 +++ - test/halo-transform.image16.ref.png | Bin 0 -> 10983 bytes - test/halo-transform.ps.ref.png | Bin 0 -> 8691 bytes - test/halo-transform.ref.png | Bin 0 -> 15086 bytes - test/halo-transform.xlib.ref.png | Bin 0 -> 15346 bytes - test/halo.c | 64 +++++++++++++++++++++++++++++++++- - test/halo.image16.ref.png | Bin 5328 -> 6172 bytes - test/halo.ps.ref.png | Bin 0 -> 5220 bytes - test/halo.ref.png | Bin 7524 -> 8839 bytes - test/halo.xlib.ref.png | Bin 7404 -> 8835 bytes - 10 files changed, 67 insertions(+), 2 deletions(-) - -commit 71936a1f414807a51c68de111362c2d5499bdfa7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 15 21:36:15 2010 +0100 +commit b661bc871220fd67d673c44a8e3cb305812d8c38 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 12 20:13:53 2010 +0200 + + test: Update ref images for radial tests + + Pixman master now rasterizes radial gradients following the PDF + specification (see section 8.7.4.5.4 of PDF 32000-1:2008). + + test/radial-gradient-mask-source.argb32.ref.png | Bin 116311 -> 105572 bytes + test/radial-gradient-mask-source.image16.ref.png | Bin 82800 -> 76287 bytes + test/radial-gradient-mask-source.rgb24.ref.png | Bin 129093 -> 115808 bytes + test/radial-gradient-mask.argb32.ref.png | Bin 116311 -> 105572 bytes + test/radial-gradient-mask.image16.ref.png | Bin 82800 -> 76287 bytes + test/radial-gradient-mask.rgb24.ref.png | Bin 129093 -> 115808 bytes + test/radial-gradient-one-stop.argb32.ref.png | Bin 1392 -> 1575 bytes + test/radial-gradient-one-stop.rgb24.ref.png | Bin 1153 -> 1307 bytes + test/radial-gradient-source.argb32.ref.png | Bin 272428 -> 251063 bytes + test/radial-gradient-source.image16.ref.png | Bin 132037 -> 119942 bytes + test/radial-gradient-source.rgb24.ref.png | Bin 193364 -> 179609 bytes + test/radial-gradient.image16.ref.png | Bin 202415 -> 188481 bytes + test/radial-gradient.ref.png | Bin 280971 -> 262931 bytes + 13 files changed, 0 insertions(+), 0 deletions(-) + +commit f96187e31ed68aef9f92f008bc3f36469ffdeef4 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 8 20:29:06 2010 +1030 - test/aliasing: Add a few more colour combinations. + Rewrite pdf-operators word wrapping - In particular, compare red against its inverse, cyan. Etc. + to fix some bugs - test/aliasing.c | 6 +++++- - test/aliasing.image16.ref.png | Bin 20810 -> 97251 bytes - test/aliasing.ref.png | Bin 22980 -> 104672 bytes - test/aliasing.xlib.ref.png | Bin 24018 -> 104315 bytes - 4 files changed, 5 insertions(+), 1 deletions(-) + src/cairo-pdf-operators.c | 233 ++++++++++++++++++++++----------------------- + 1 files changed, 114 insertions(+), 119 deletions(-) -commit e2220a1f3a7b483e615f5bb993a014d20b0f788a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 15 11:45:54 2010 +0100 +commit dd96c4accb546870b7bf7db4af10c2762de58d78 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 8 23:05:42 2010 +1030 - configure: Try an alternate name for system glew. + Refresh ft-show-glyphs-positioning pdf ref image + + The new image is more accurate as a result of the fix in 165a14b5 - configure.ac | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) + test/ft-show-glyphs-positioning.pdf.ref.png | Bin 3133 -> 3117 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) -commit 25ec0c1e9b5af2ba68200b79b252de5c1b371d0a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 15 10:59:01 2010 +0100 +commit a0b208fc71db586d3793fa4e2f4c01b275608261 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 8 23:01:12 2010 +1030 - build: Enable system GLEW on non-UNIX platforms + Don't put Type3 glyphs in latin subsets + + it is not yet implemented - configure.ac | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) + src/cairo-scaled-font-subsets.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) -commit 52624446636bb5941ca2180afa2c0be275414cec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 15 10:40:36 2010 +0100 +commit b50d9d0783939ff9e68484c6d9ab7e64c31044fa +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Oct 7 17:41:36 2010 -0400 - glew: Define NULL + Fix typo - src/glew/glew.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) + test/testtable.js | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 56d06b088b9c355ca76a38191717a8e03aa5f59a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 14 22:58:38 2010 +0100 +commit 425e68590b94d4701d81b73ef2232ea76dd97f48 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Sep 26 11:05:35 2010 +0200 - test: Add an aliasing test case. + test: Remove old html infrastructure - Just a simple test in drawing neighbouring edges and looking for the - effects of aliasing. + The new dynamic html page supersedes the old make-generated static + html page. - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/aliasing.c | 98 +++++++++++++++++++++++++++++++++++++++++ - test/aliasing.image16.ref.png | Bin 0 -> 20810 bytes - test/aliasing.ref.png | Bin 0 -> 22980 bytes - test/aliasing.xlib.ref.png | Bin 0 -> 24018 bytes - 6 files changed, 102 insertions(+), 0 deletions(-) + test/.gitignore | 1 - + test/Makefile.am | 29 ++---- + test/Makefile.win32 | 13 +-- + test/make-html.pl | 303 --------------------------------------------------- + 4 files changed, 9 insertions(+), 337 deletions(-) -commit 4b39f02bf7e8b4921518db4a2d8564514cb323a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 14 20:38:26 2010 +0100 +commit f29e7d155f3a2ee75daf63719460348ea2ca0f76 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Aug 6 18:23:07 2010 +0200 - test: Add halo + test: Add a new test result html page - halo uses text_path + stroke + (fill | show_text) to generate a "halo" - around the string. This is to try to replicate a bug described by Ian - Britten in the PDF backend where the rendering of the show_text looked - distorted compared to the stroke. - - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/halo.c | 98 +++++++++++++++++++++++++++++++++++++++++++++ - test/halo.image16.ref.png | Bin 0 -> 5328 bytes - test/halo.ref.png | Bin 0 -> 7524 bytes - test/halo.xlib.ref.png | Bin 0 -> 7404 bytes - 6 files changed, 102 insertions(+), 0 deletions(-) - -commit 072a200ec502bf5ac3e62702e6f14ed18171b1e0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 14 16:05:14 2010 +0100 - - build: Add wgl to Makefile.sources and regenerate features. - - boilerplate/Makefile.win32.features | 10 ++++++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - src/Makefile.sources | 6 ++++-- - src/Makefile.win32.features | 14 ++++++++++++++ - 5 files changed, 32 insertions(+), 2 deletions(-) - -commit 4a0bd91ff77c8afddde6d09495bc9ca7242f953d -Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> -Date: Mon Jun 14 16:40:39 2010 +0300 - - scaled-font: fine-tune caching - - This patch implements the ideas outlined by Behdad Esfahbod in the following - mailing list message: - - http://lists.cairographics.org/archives/cairo/2010-June/020065.html - - Specifically, two things have been adjusted. First, the size of the look-up - table was reduced to 64. Second, cache codepath is now bypassed for strings - that are shorter than 16, not only for one-character strings. This allowed - us to reduce the LUT initialization overhead while still retaining the - advantage of caching for common-case string sizes. - - We have experimented with different LUT sizes, and it came out that the size - of 64 is the best one in view of speed, at least for our language-neutral - benchmark, which generated random strings of printable ASCII characters. - - Below is a table presenting benchmark results for different values of LUT - size: - - =============================================================================== - Benchmark | [1] | [2] | [3] | [4] | [5] | [6] | [7] - =============================================================================== - 8px text, 1 chars | 0.41 | 0.41 | 0 | 0.41 | 0 | 0.41 | 0 - 8px text, 10 chars | 2.13 | 2.21 | 3.76 | 2.19 | 2.82 | 2.09 | -1.88 - 8px text, 20 chars | 2.97 | 3.04 | 2.36 | 3.01 | 1.35 | 2.98 | 0.34 - 12px text, 1 chars | 0.94 | 0.94 | 0 | 0.95 | 1.06 | 0.94 | 0 - 12px text, 10 chars | 4.73 | 4.89 | 3.38 | 4.9 | 3.59 | 4.82 | 1.9 - 12px text, 20 chars | 6.32 | 6.42 | 1.58 | 6.46 | 2.22 | 6.32 | 0 - 16px text, 1 chars | 1.75 | 1.76 | 0.57 | 1.77 | 1.14 | 1.76 | 0.57 - 16px text, 10 chars | 8.13 | 8.45 | 3.94 | 8.43 | 3.69 | 8.44 | 3.81 - 16px text, 20 chars | 10.41 | 10.69 | 2.69 | 10.64 | 2.21 | 10.65 | 2.31 - 24px text, 1 chars | 3.3 | 3.3 | 0 | 3.32 | 0.61 | 3.3 | 0 - 24px text, 10 chars | 14.68 | 14.97 | 1.98 | 14.97 | 1.98 | 14.87 | 1.29 - 24px text, 20 chars | 17.93 | 18.01 | 0.45 | 18.06 | 0.73 | 17.81 | -0.67 - 96px text, 1 chars | 23.65 | 23.38 | -1.14 | 23.74 | 0.38 | 23.65 | 0 - 96px text, 5 chars | 50.52 | 51.34 | 1.62 | 51.48 | 1.9 | 51.41 | 1.76 - 96px text, 10 chars | 57.5 | 58.11 | 1.06 | 58.27 | 1.34 | 58.04 | 0.94 - =============================================================================== - - [1]: Git head, Mpix/s - [2]: {GLYPH_LUT_SIZE = 32, CACHING_THRESHOLD = 16} - [3]: Gain of {32, 16} w.r.t. Git head - [4]: {GLYPH_LUT_SIZE = 64, CACHING_THRESHOLD = 16} - [5]: Gain of {64, 16} w.r.t. Git head - [6]: {GLYPH_LUT_SIZE = 128, CACHING_THRESHOLD = 16} - [7]: Gain of {128, 16} w.r.t. Git head - - The benchmark itself can be found from this mailing list message: - - http://lists.cairographics.org/archives/cairo/2010-June/020064.html - - src/cairo-scaled-font.c | 61 ++++++++++++++++++++++++++++++++++------------ - 1 files changed, 45 insertions(+), 16 deletions(-) - -commit 505a0456d2498112155db7e7f275a14dc98f643e -Author: Zoxc <zoxc32@gmail.com> -Date: Mon Jun 14 01:20:54 2010 +0200 - - gl: Added WGL context and surface. - - build/configure.ac.features | 1 + - configure.ac | 9 ++ - src/cairo-gl.h | 16 +++ - src/cairo-wgl-context.c | 253 +++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 279 insertions(+), 0 deletions(-) - -commit fd6c38b9e006feefa20ce4f54d3108dad51c828d -Author: Zoxc <zoxc32@gmail.com> -Date: Mon Jun 14 01:04:10 2010 +0200 - - win32: Fixed compile errors in Windows backend. - - src/cairo-win32-printing-surface.c | 9 ++++----- - src/cairo-win32-surface.c | 4 ++-- - 2 files changed, 6 insertions(+), 7 deletions(-) - -commit 5f10139cd92383c657e328ffad41874c4f668551 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 13 12:33:10 2010 +0100 - - NEWS: A couple more tweaks + This page uses JavaScript to parse test log files and create the + test table according to the results. It also allows dynamic selection + and hiding of rows/columns based on a chosen parameter and table + structure change, by dragging a field from rows to columns and vice + versa. + + Left click selects the cells with the chosen parameter-value association. + If these cells are exactly the only show cells, it hides them and shows + all the other ones, instead. + + Right click inverts the visibility of the cells with the chosen + parameter-value association. + + When some rows are hidden, the PASS/NEW/FAIL/XFAIL/CRASH counters show + both the currently shown test case count and the total count, if they are + different: "23[62]" means that there are 62 test case in that category, + but only 23 are currently visible. - I only spotted these in the release announcement. + Dragging a field from the row (or column) header to the column (or row) + header rebuilds the table to have that field along the columns (or rows), + updating PASS/NEW/FAIL/... counters and showing the whole table again. + + Test names are hyperlinks to the test log. + Images are hyperlinks to themselves. - NEWS | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + test/index.html | 42 ++++++ + test/testtable.js | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 468 insertions(+), 0 deletions(-) -commit 4932aaa3173799c8f3ac30e4c9a594c20c83a121 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 13 12:02:53 2010 +0100 +commit 4e064b3a32e4d699a6494bf9d8dbcd7b8d9cbc64 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Aug 6 18:20:49 2010 +0200 - version: 1.9.9 + test: Make tests run in natural order - Post-snapshot bump. + When tests are registered, they are prepended to a list. + Reverting the list, we get a list whose order is the same as that + of registration. - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + test/cairo-test-runner.c | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) -commit 3a20b10cd0d94406fbd5fe3bb3d4820a95364537 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 13 10:27:03 2010 +0100 +commit 5500d072e0e3d66d762a147caa803d036766b629 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 21:22:02 2010 +0200 - version: 1.9.8 + quartz: Handle failures in _cairo_quartz_setup_fallback_source - Snapshot time! + If the fallback surface creation or painting fail, the fallback + surface needs to be destroyed. - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 44 +++++++++++++------------------------------- + 1 files changed, 13 insertions(+), 31 deletions(-) -commit b612a230865a1a62f9cdcb051de9b57b509646b2 +commit 17bb0f8b1fc6d209ad53b7b995bc013c85a4e058 Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Jun 13 12:29:24 2010 +0200 +Date: Wed Jul 28 10:26:50 2010 +0200 - test: update quartz ref images in makefile + quartz: Improve _cg function types - test/Makefile.am | 143 +++++++++++++++++++++++++++++++++++++++++------------- - 1 files changed, 109 insertions(+), 34 deletions(-) + src/cairo-quartz-surface.c | 25 ++++++++++--------------- + 1 files changed, 10 insertions(+), 15 deletions(-) -commit 0693af2328606a4c7e4c888d2a1cd346e6bef405 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 13 10:22:37 2010 +0100 +commit 3b4f7c36626d2d08295ebc1ec2548060c1728b67 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Oct 7 18:59:22 2010 +0200 - test: Move all output below test/output/ + quartz: Improve handling of surface creation failure - make distcheck complains of remanents being left under test/ after a - clean, notably the files used to check the capabilities of a similar - surface and the fallback-resolution output. - - test/cairo-test.c | 53 ++++++++++++++++++++++++------------------- - test/fallback-resolution.c | 30 +++++++++++++++++++++--- - 2 files changed, 56 insertions(+), 27 deletions(-) - -commit ffc3a39c95e918fa2fcd14c1b1063b9a9acceebf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 20:04:36 2010 +0100 + Don't paint on a surface whose status is not SUCCESS. - NEWS: Minor tweaks. - - NEWS | 46 +++++++++++++++++++++++----------------------- - 1 files changed, 23 insertions(+), 23 deletions(-) + src/cairo-quartz-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) -commit b6e16b8d2950cdadf2e2b14b0e7502d4a9ebdc09 +commit b13a8035c1c164c6fe6382467a53ceb463d2d3ff Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jun 12 10:33:35 2010 +0200 - - test: quartz ref image refresh - - test/a1-image-sample.quartz.xfail.png | Bin 0 -> 972 bytes - test/a1-mask-sample.quartz.xfail.png | Bin 0 -> 972 bytes - test/a1-traps-sample.quartz.xfail.png | Bin 0 -> 122 bytes - test/big-line.quartz.ref.png | Bin 0 -> 993 bytes - test/caps-joins-curve.quartz.ref.png | Bin 0 -> 5199 bytes - test/clear.quartz.argb32.ref.png | Bin 0 -> 691 bytes - test/clear.quartz.rgb24.ref.png | Bin 0 -> 606 bytes - test/clip-disjoint.quartz.ref.png | Bin 0 -> 5476 bytes - test/clip-fill-rule.quartz.rgb24.ref.png | Bin 0 -> 363 bytes - test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 0 -> 1436 bytes - test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1368 bytes - test/clip-fill.quartz.ref.png | Bin 0 -> 875 bytes - test/clip-group-shapes-circles.quartz.ref.png | Bin 0 -> 1518 bytes - test/clip-nesting.quartz.argb32.ref.png | Bin 0 -> 1048 bytes - test/clip-nesting.quartz.ref.png | Bin 1067 -> 0 bytes - test/clip-nesting.quartz.rgb24.ref.png | Bin 956 -> 937 bytes - test/clip-operator.quartz.argb32.ref.png | Bin 0 -> 9586 bytes - test/clip-operator.quartz.ref.png | Bin 9539 -> 0 bytes - test/clip-operator.quartz.rgb24.ref.png | Bin 4412 -> 4104 bytes - test/clip-push-group.quartz.ref.png | Bin 203 -> 166 bytes - test/clip-shape.quartz.ref.png | Bin 0 -> 3229 bytes - test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 0 -> 1493 bytes - test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1356 bytes - test/clip-stroke.quartz.ref.png | Bin 0 -> 1305 bytes - test/clip-text.quartz.ref.png | Bin 0 -> 854 bytes - test/clip-twice.quartz.argb32.ref.png | Bin 0 -> 1171 bytes - test/clip-twice.quartz.ref.png | Bin 1171 -> 0 bytes - test/clip-twice.quartz.rgb24.ref.png | Bin 1111 -> 1095 bytes - test/clipped-group.quartz.ref.png | Bin 0 -> 308 bytes - test/culled-glyphs.quartz.ref.png | Bin 0 -> 493 bytes - test/dash-caps-joins.quartz.ref.png | Bin 4727 -> 0 bytes - test/dash-caps-joins.quartz.xfail.png | Bin 0 -> 4446 bytes - test/dash-curve.quartz.ref.png | Bin 47965 -> 0 bytes - test/dash-curve.quartz.xfail.png | Bin 0 -> 42238 bytes - test/dash-scale.quartz.ref.png | Bin 8079 -> 7614 bytes - test/dash-state.quartz.ref.png | Bin 8698 -> 0 bytes - test/dash-state.quartz.xfail.png | Bin 0 -> 6957 bytes - test/degenerate-arc.quartz.ref.png | Bin 0 -> 552 bytes - test/degenerate-curve-to.quartz.ref.png | Bin 0 -> 247 bytes - test/degenerate-dash.quartz.xfail.png | Bin 0 -> 1560 bytes - test/degenerate-path.quartz.argb32.xfail.png | Bin 0 -> 200 bytes - test/degenerate-path.quartz.ref.png | Bin 232 -> 0 bytes - test/degenerate-path.quartz.rgb24.ref.png | Bin 198 -> 0 bytes - test/degenerate-path.quartz.rgb24.xfail.png | Bin 0 -> 172 bytes - test/degenerate-pen.quartz.ref.png | Bin 1144 -> 0 bytes - test/degenerate-rel-curve-to.quartz.ref.png | Bin 0 -> 246 bytes - test/extend-pad-border.quartz.ref.png | Bin 0 -> 432 bytes - test/extend-pad-similar.quartz.xfail.png | Bin 0 -> 270 bytes - test/extend-pad.quartz.xfail.png | Bin 0 -> 270 bytes - test/fill-alpha-pattern.quartz.ref.png | Bin 0 -> 7943 bytes - test/fill-alpha.quartz.ref.png | Bin 0 -> 2704 bytes - test/fill-and-stroke-alpha-add.quartz.ref.png | Bin 603 -> 542 bytes - test/fill-and-stroke-alpha.quartz.ref.png | Bin 550 -> 0 bytes - test/fill-and-stroke.quartz.argb32.ref.png | Bin 0 -> 273 bytes - test/fill-and-stroke.quartz.ref.png | Bin 286 -> 0 bytes - test/fill-and-stroke.quartz.rgb24.ref.png | Bin 264 -> 249 bytes - ...ill-degenerate-sort-order.quartz.argb32.ref.png | Bin 0 -> 2451 bytes - test/fill-degenerate-sort-order.quartz.ref.png | Bin 2470 -> 0 bytes - ...fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin 2098 -> 2079 bytes - test/fill-image.quartz.ref.png | Bin 0 -> 1297 bytes - test/fill-rule.quartz.argb32.ref.png | Bin 0 -> 2060 bytes - test/fill-rule.quartz.ref.png | Bin 2079 -> 0 bytes - test/fill-rule.quartz.rgb24.ref.png | Bin 1790 -> 1771 bytes - test/filter-bilinear-extents.quartz.xfail.png | Bin 0 -> 308 bytes - test/filter-nearest-offset.quartz.xfail.png | Bin 0 -> 2130 bytes - test/filter-nearest-transformed.quartz.xfail.png | Bin 0 -> 534 bytes - test/finer-grained-fallbacks.quartz.argb32.ref.png | Bin 0 -> 988 bytes - test/finer-grained-fallbacks.quartz.rgb24.ref.png | Bin 0 -> 763 bytes - test/font-matrix-translation.quartz.ref.png | Bin 1090 -> 996 bytes - test/ft-show-glyphs-table.quartz.xfail.png | Bin 0 -> 827 bytes - .../ft-text-vertical-layout-type1.quartz.xfail.png | Bin 0 -> 3635 bytes - test/ft-text-vertical-layout-type3.quartz.ref.png | Bin 0 -> 3573 bytes - test/glyph-cache-pressure.quartz.ref.png | Bin 3654 -> 3284 bytes - test/gradient-constant-alpha.quartz.argb32.ref.png | Bin 0 -> 214 bytes - test/group-unaligned.quartz.ref.png | Bin 0 -> 363 bytes - test/huge-radial.quartz.ref.png | Bin 0 -> 84690 bytes - test/inverse-text.quartz.ref.png | Bin 0 -> 2565 bytes - test/joins.quartz.ref.png | Bin 0 -> 5833 bytes - test/leaky-dash.quartz.ref.png | Bin 241 -> 195 bytes - test/leaky-dashed-rectangle.quartz.ref.png | Bin 0 -> 339 bytes - test/leaky-dashed-stroke.quartz.ref.png | Bin 0 -> 9229 bytes - test/line-width-scale.quartz.ref.png | Bin 6434 -> 5623 bytes - test/linear-gradient-reflect.quartz.ref.png | Bin 878 -> 780 bytes - test/linear-gradient-subset.quartz.ref.png | Bin 0 -> 887 bytes - test/linear-gradient.quartz.ref.png | Bin 1164 -> 1060 bytes - test/long-dashed-lines.quartz.ref.png | Bin 2313 -> 2068 bytes - test/mask-alpha.quartz.argb32.ref.png | Bin 641 -> 622 bytes - test/mask-transformed-image.quartz.ref.png | Bin 0 -> 3909 bytes - test/mask-transformed-similar.quartz.ref.png | Bin 0 -> 3909 bytes - test/mask.quartz.argb32.ref.png | Bin 0 -> 10575 bytes - test/mask.quartz.ref.png | Bin 10682 -> 0 bytes - test/mask.quartz.rgb24.ref.png | Bin 8418 -> 8354 bytes - test/new-sub-path.quartz.ref.png | Bin 383 -> 370 bytes - test/new-sub-path.quartz.rgb24.ref.png | Bin 357 -> 0 bytes - test/operator-clear.quartz.argb32.ref.png | Bin 0 -> 1228 bytes - test/operator-clear.quartz.ref.png | Bin 1459 -> 0 bytes - test/operator-clear.quartz.rgb24.ref.png | Bin 1293 -> 1096 bytes - test/operator-source.quartz.argb32.ref.png | Bin 0 -> 4754 bytes - test/operator-source.quartz.ref.png | Bin 4637 -> 0 bytes - test/operator-source.quartz.rgb24.ref.png | Bin 3533 -> 3535 bytes - test/over-above-source.quartz.argb32.ref.png | Bin 0 -> 511 bytes - test/over-above-source.quartz.ref.png | Bin 530 -> 0 bytes - test/over-above-source.quartz.rgb24.ref.png | Bin 456 -> 437 bytes - test/over-around-source.quartz.argb32.ref.png | Bin 0 -> 593 bytes - test/over-around-source.quartz.ref.png | Bin 612 -> 0 bytes - test/over-around-source.quartz.rgb24.ref.png | Bin 491 -> 0 bytes - test/over-between-source.quartz.argb32.ref.png | Bin 0 -> 551 bytes - test/over-between-source.quartz.ref.png | Bin 570 -> 0 bytes - test/over-between-source.quartz.rgb24.ref.png | Bin 467 -> 0 bytes - test/path-append.quartz.ref.png | Bin 0 -> 6395 bytes - test/pthread-same-source.quartz.xfail.png | Bin 0 -> 957 bytes - test/pthread-show-text.quartz.ref.png | Bin 0 -> 42996 bytes - test/push-group-color.quartz.ref.png | Bin 0 -> 3127 bytes - test/push-group.quartz.argb32.ref.png | Bin 0 -> 3932 bytes - test/push-group.quartz.rgb24.ref.png | Bin 0 -> 3659 bytes - test/radial-gradient.quartz.ref.png | Bin 92334 -> 0 bytes - test/random-intersections-curves-eo.quartz.ref.png | Bin 0 -> 326366 bytes - test/random-intersections-curves-nz.quartz.ref.png | Bin 0 -> 324940 bytes - test/random-intersections-eo.quartz.ref.png | Bin 197778 -> 179179 bytes - test/random-intersections-nonzero.quartz.ref.png | Bin 0 -> 180871 bytes - ...recording-surface-pattern.quartz.argb32.ref.png | Bin 0 -> 4570 bytes - test/recording-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes - .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 4058 bytes - test/rectilinear-dash.quartz.xfail.png | Bin 0 -> 494 bytes - test/rectilinear-stroke.quartz.xfail.png | Bin 0 -> 209 bytes - test/reflected-stroke.quartz.ref.png | Bin 5293 -> 0 bytes - test/rel-path.quartz.ref.png | Bin 212 -> 0 bytes - test/rel-path.quartz.rgb24.ref.png | Bin 228 -> 0 bytes - test/rotate-image-surface-paint.quartz.ref.png | Bin 257 -> 356 bytes - test/rotated-clip.quartz.ref.png | Bin 0 -> 3923 bytes - test/rounded-rectangle-fill.quartz.ref.png | Bin 0 -> 684 bytes - test/scale-offset-image.quartz.ref.png | Bin 0 -> 9054 bytes - test/scale-offset-similar.quartz.ref.png | Bin 0 -> 9054 bytes - test/select-font-face.quartz.ref.png | Bin 2970 -> 2645 bytes - test/self-intersecting.quartz.xfail.png | Bin 0 -> 233 bytes - test/show-text-current-point.quartz.ref.png | Bin 3093 -> 2773 bytes - test/smask-fill.quartz.ref.png | Bin 0 -> 2076 bytes - test/smask-mask.quartz.ref.png | Bin 0 -> 3357 bytes - test/smask-paint.quartz.ref.png | Bin 0 -> 3499 bytes - test/smask-stroke.quartz.ref.png | Bin 0 -> 1697 bytes - test/smask-text.quartz.ref.png | Bin 0 -> 1904 bytes - test/smask.quartz.ref.png | Bin 0 -> 4067 bytes - test/source-clip-scale.quartz.ref.png | Bin 148 -> 126 bytes - test/spline-decomposition.quartz.xfail.png | Bin 0 -> 19560 bytes - test/stroke-ctm-caps.quartz.ref.png | Bin 1109 -> 899 bytes - test/stroke-image.quartz.ref.png | Bin 1802 -> 1350 bytes - test/subsurface-pad.quartz.xfail.png | Bin 0 -> 197 bytes - test/surface-pattern-big-scale-down.quartz.ref.png | Bin 0 -> 258 bytes - ...urface-pattern-operator.quartz.argb32.xfail.png | Bin 0 -> 5917 bytes - ...surface-pattern-operator.quartz.rgb24.xfail.png | Bin 0 -> 2546 bytes - ...e-pattern-scale-down-extend-none.quartz.ref.png | Bin 0 -> 391 bytes - ...-pattern-scale-down-extend-pad.quartz.xfail.png | Bin 0 -> 397 bytes - ...attern-scale-down-extend-reflect.quartz.ref.png | Bin 0 -> 475 bytes - ...pattern-scale-down-extend-repeat.quartz.ref.png | Bin 0 -> 397 bytes - test/surface-pattern-scale-down.quartz.ref.png | Bin 3188 -> 2276 bytes - test/surface-pattern-scale-up.quartz.xfail.png | Bin 0 -> 3294 bytes - test/surface-pattern.quartz.xfail.png | Bin 0 -> 9216 bytes - test/text-antialias-gray.quartz.ref.png | Bin 1041 -> 956 bytes - test/text-antialias-none.quartz.ref.png | Bin 300 -> 270 bytes - test/text-antialias-subpixel.quartz.ref.png | Bin 1065 -> 949 bytes - test/text-glyph-range.quartz.ref.png | Bin 0 -> 2191 bytes - test/text-pattern.quartz.argb32.ref.png | Bin 0 -> 2148 bytes - test/text-pattern.quartz.ref.png | Bin 2158 -> 0 bytes - test/text-pattern.quartz.rgb24.ref.png | Bin 1874 -> 1867 bytes - test/text-rotate.quartz.ref.png | Bin 17820 -> 16655 bytes - test/trap-clip.quartz.argb32.ref.png | Bin 0 -> 6060 bytes - test/trap-clip.quartz.ref.png | Bin 6041 -> 0 bytes - test/trap-clip.quartz.rgb24.ref.png | Bin 5385 -> 5694 bytes - test/unantialiased-shapes.quartz.ref.png | Bin 4394 -> 3868 bytes - test/unbounded-operator.quartz.ref.png | Bin 4066 -> 0 bytes - test/unbounded-operator.quartz.rgb24.ref.png | Bin 1918 -> 0 bytes - test/user-font-proxy.quartz.ref.png | Bin 0 -> 19795 bytes - test/user-font-rescale.quartz.ref.png | Bin 0 -> 15982 bytes - test/user-font.quartz.ref.png | Bin 0 -> 5960 bytes - test/xcomposite-projection.quartz.ref.png | Bin 0 -> 639 bytes - 175 files changed, 0 insertions(+), 0 deletions(-) - -commit 0d5a15f23812575c80db44ca23075293cc0dbfad -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 20:00:24 2010 +0100 +Date: Tue Jul 27 19:05:25 2010 +0200 - check: Disable running cairo-perf-micro + quartz: Remove useless code - Since this takes days to run now and should not find any bugs that are - not covered by the test-suite it seems like a pointless exercise. - Especially as I am trying to make a release! + The condition is always true (since surface creation returns non-NULL + even upon failure). - perf/Makefile.am | 15 ++++----------- - 1 files changed, 4 insertions(+), 11 deletions(-) + src/cairo-quartz-surface.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) -commit e9fb39daee9ef3f80e4aedbda68027b36ce94fe3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 19:40:42 2010 +0100 +commit f156f89db071cc09e35e30de0c9ac7b5824f6849 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 18:55:38 2010 +0200 - NEWS: take two. + quartz: Simplify cairo_quartz_surface_create_for_cg_context + + Only retaining the context when the surface cration is successful + avoids needless retaining and simplifies the code. - NEWS | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 75 insertions(+), 6 deletions(-) + src/cairo-quartz-surface.c | 9 ++------- + 1 files changed, 2 insertions(+), 7 deletions(-) -commit 62899e5e23a798bb3e9b60c9e793555e973b7823 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 18:51:31 2010 +0100 +commit c5fc8fa62fa92a80a5d8ee84cfe610ec4497fef6 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 18:48:00 2010 +0200 - NEWS: Boring stub for 1.9.10. + quartz: Use NOTHING_TO_DO instead of SUCCESS where appropriate + + Returning CAIRO_INT_STATUS_NOTHING_TO_DO removes some code that + specifically handles it to convert to CAIRO_STATUS_SUCCESS. This + is already performed out of the backend, in the upper layers, so + it is not needed here. - NEWS | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) -commit fc372b1d9dea1ed4cb4229eaaad62a2d8e112a03 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 16:50:30 2010 +0100 +commit eae5fafc89d35f76d1eb49f3a0dcee509e735b5e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 29 16:05:51 2010 +0200 - test: Missing ref images + quartz: Beautify code + + Remove redundant parentheses and reference/dereferences. - test/Makefile.am | 8 ++++---- - test/coverage-triangles.xlib.xfail.png | Bin 0 -> 15859 bytes - 2 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-quartz-surface.c | 35 ++++++++++++----------------------- + 1 files changed, 12 insertions(+), 23 deletions(-) -commit 8737bc8b17ff0c437bb57df018bb7c540a394a7c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 16:49:46 2010 +0100 +commit f93603fda094c149deeb77afa11cc12f4d1d5c19 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 17:24:08 2010 +0200 - gl: start returning the failure status aftern an invalid GL op. + quartz: Whitespace cleanup - src/cairo-gl-composite.c | 1 + - src/cairo-gl-device.c | 26 +++++++++++++++++++------- - src/cairo-gl-glyphs.c | 10 +++++++--- - src/cairo-gl-private.h | 45 ++++++++++++++++++++++++++++++++++----------- - src/cairo-gl-surface.c | 40 +++++++++++++++++++++++++--------------- - 5 files changed, 86 insertions(+), 36 deletions(-) + src/cairo-quartz-surface.c | 33 +++++++++++++++------------------ + 1 files changed, 15 insertions(+), 18 deletions(-) -commit 5b2f90bf532184e46829de4b2e2f9d0b10c1ff81 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 16:49:11 2010 +0100 +commit 6ff5cbd8a9c7d8e9d226c0eedc5c278c4afe7700 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 16:51:30 2010 +0200 - test: Forgotten ref image. + quartz: Mark failures as unlikely - test/clipped-group.xlib-fallback.ref.png | Bin 0 -> 344 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 71 +++++++++++++++++++++---------------------- + 1 files changed, 35 insertions(+), 36 deletions(-) -commit cdd6f11716e3fbe579d68161caec220c7852fdff -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 15:44:29 2010 +0100 +commit 2f4a47c6bfd10594ec31830d45bc218ebe4eafb0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 15:59:31 2010 +0200 - test: Record the expected failure mode for partial-coverage-intersecting-quads + quartz: Fix function call coding style - As the diagonals of the quad intersect below the limits of Cairo's fixed - point, we fail to take heed of the intersection. + Cairo coding style specifies a single space between the function + name and the parentheses. - test/Makefile.am | 1 + - test/partial-coverage-intersecting-quads.xfail.png | Bin 0 -> 262 bytes - 2 files changed, 1 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 273 ++++++++++++++++++++++---------------------- + 1 files changed, 138 insertions(+), 135 deletions(-) -commit 3d72b4aa70d106b5da093e6405c7e3890fa343cf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 15:32:31 2010 +0100 +commit 692f20a8592ed2730b63c084224d996225912b53 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 16:06:27 2010 +0200 - test/coverage: The comment was still wrong. + quartz: Don't typecast surfaces - Writing comments is hard. I give in. + Casting to (cairo_surface_t *) is considered bad practice. The + correct way to get a reference to the generic surface information + is &(surface->base) - test/coverage.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-quartz-surface.c | 36 ++++++++++++++++++------------------ + 1 files changed, 18 insertions(+), 18 deletions(-) -commit e6d1b3a8ce0b516aed7715b57d9ca5ab4fad6c2f +commit b922477e4e31198739098dff1bc1ed49f81e4745 Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jun 12 16:22:54 2010 +0200 +Date: Tue Jul 27 14:44:17 2010 +0200 - test: update font family name + quartz: Check for valid patterns - Update the name of the test font family to DejaVu, so that backends - unable to rely on fontconfig to match font names can find the correct - font anyway. + The pattern handling code ensures that 0 stops patterns are reduced + to clear solid patterns before being passed down to the backend. + An assertion is used to make sure that the assumption actually holds, + removing the duplication of the reduce-to-solid-clear logic. - test/README | 10 +++++----- - test/cairo-test.h | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) + src/cairo-quartz-surface.c | 15 +++------------ + 1 files changed, 3 insertions(+), 12 deletions(-) -commit 3cb882d01b53cb3cec9be62d678dd4ef7ea2c1fd +commit c9aa393a4db15eeb1ea29aaf5bca4b2570a0cfab Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jun 12 16:20:37 2010 +0200 - - test: make test font family a define - - In order to make it easier to change the test font family, add it - as a define in the global header and always reference the macro in - the tests. - - test/cairo-test.h | 2 ++ - test/clip-all.c | 2 +- - test/clip-empty-save.c | 2 +- - test/clip-empty.c | 2 +- - test/clip-operator.c | 2 +- - test/font-face-get-type.c | 2 +- - test/font-matrix-translation.c | 2 +- - test/ft-show-glyphs-positioning.c | 2 +- - test/ft-show-glyphs-table.c | 2 +- - test/ft-text-antialias-none.c | 2 +- - test/ft-text-vertical-layout-type3.c | 2 +- - test/get-path-extents.c | 2 +- - test/glyph-cache-pressure.c | 2 +- - test/inverse-text.c | 6 +++--- - test/large-font.c | 2 +- - test/operator-clear.c | 2 +- - test/operator-source.c | 2 +- - test/overlapping-glyphs.c | 2 +- - test/pdf-features.c | 2 +- - test/ps-features.c | 2 +- - test/select-font-face.c | 6 +++--- - test/select-font-no-show-text.c | 2 +- - test/show-text-current-point.c | 2 +- - test/smask-text.c | 2 +- - test/smask.c | 2 +- - test/text-antialias-gray.c | 2 +- - test/text-antialias-none.c | 2 +- - test/text-antialias-subpixel.c | 2 +- - test/text-glyph-range.c | 2 +- - test/text-pattern.c | 2 +- - test/text-rotate.c | 2 +- - test/text-transform.c | 2 +- - test/text-zero-len.c | 2 +- - test/unbounded-operator.c | 2 +- - test/user-font-rescale.c | 6 +++--- - 35 files changed, 42 insertions(+), 40 deletions(-) - -commit b1e4df928fb59ee295830d5c0fa26330714f88f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 15:28:28 2010 +0100 +Date: Tue Jul 27 14:43:15 2010 +0200 - test/coverage: Refine comments + quartz: Assert upon invalid enum values - Joonas didn't like me putting incorrect labels in my comments. Said they - were misleading and worse than useless. Harsh. + Invalid enum values were being ignored (and replaced by a default + value). This behavior is not desirable on development builds, + because an explicit failure is much easier to track. + Assertions allow release builds to keep on with the old behaviour, + while development builds fail as soon as the invalid operaiton is + performed. - test/coverage.c | 20 +++++++++++++------- - 1 files changed, 13 insertions(+), 7 deletions(-) + src/cairo-quartz-surface.c | 56 +++++++++++++++++++++++++++---------------- + 1 files changed, 35 insertions(+), 21 deletions(-) -commit 968374b6335199cbf02c8c4733537388da2a45f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 15:14:17 2010 +0100 +commit 9c22f97ebdcc9303d1a1530e7909d6b0d74d30e4 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 14:38:28 2010 +0200 - test/coverage: Add a comment describing the column_triangle geometry() + quartz: Remove unused argument from _cairo_surface_to_cgimage - test/coverage.c | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) + src/cairo-quartz-surface.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) -commit 299263f8c912d3468d51ed22bcb6ab96275709f0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 13:48:12 2010 +0100 +commit ef60650bd6e0b3a354c85dc2e1be8550be6f7c91 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 7 23:09:52 2010 +1030 - test: Disable tests that are too slow to run by default. - - Introduce a slow mode [-s] to the runner, and add "slow" to the - requirements for the very long running tests like the coverage stress - tests. + Fix bug in subsetting check for winansi characters - test/cairo-test-runner.c | 17 +++++++++++++++-- - test/coverage.c | 12 ++++++------ - test/half-coverage.c | 4 ++-- - test/mask-glyphs.c | 2 +- - test/partial-coverage.c | 16 ++++++++-------- - 5 files changed, 32 insertions(+), 19 deletions(-) + src/cairo-scaled-font-subsets.c | 12 +++++------- + 1 files changed, 5 insertions(+), 7 deletions(-) -commit 53139261c7ba1a4cc0b869cb48c136b0362a3b0c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 13:40:17 2010 +0100 +commit 390a6aa99771615763ed7349060e493f15c1d6d3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 6 22:43:36 2010 +1030 - test: Use exact matching on test names by default. - - Specifying individual tests to run is more common than using a group - chosen from a keyword, so change the default matching mode and introduce - '-k' to select by keyword. + remove unused variable - test/cairo-test-runner.c | 45 ++++++++++++++++++++++----------------------- - 1 files changed, 22 insertions(+), 23 deletions(-) + src/cairo-scaled-font-subsets.c | 12 ------------ + src/cairoint.h | 2 -- + 2 files changed, 0 insertions(+), 14 deletions(-) -commit 97288b0859bae6cea1e3bff84b632e00f1d10917 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 13:34:27 2010 +0100 +commit ea45bc1b4b655b6e85be14669fdea97da2b6edae +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Aug 3 13:41:17 2010 +0930 - test: More minute geometry exercised by partial-coverage. - - Moving beyond the capabilities of cairo... + PS: Allow %%BoundingBox and %%PageBoundingBox to be overriden using DSC comments - test/Makefile.am | 2 + - test/partial-coverage-intersecting-quads.ref.png | Bin 0 -> 189 bytes - ...partial-coverage-intersecting-triangles.ref.png | Bin 0 -> 202 bytes - test/partial-coverage.c | 131 ++++++++++++++++++++ - 4 files changed, 133 insertions(+), 0 deletions(-) + src/cairo-ps-surface.c | 38 +++++++++++++++++++++++++++----------- + 1 files changed, 27 insertions(+), 11 deletions(-) -commit 4e3ef57bc892b0b046c486390adc7164a1de64de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 13:18:42 2010 +0100 - - test: More coverage coverage. - - A couple of different shapes that aim to test the tessellation side of - the rasterisers more... And worryingly there does seem to be an - unexpected systematic error. - - test/Makefile.am | 8 + - test/coverage-column-triangles.ref.png | Bin 0 -> 208 bytes - test/coverage-column-triangles.xlib.xfail.png | Bin 0 -> 12745 bytes - test/coverage-intersecting-quads.ref.png | Bin 0 -> 253 bytes - test/coverage-intersecting-quads.xlib.xfail.png | Bin 0 -> 15296 bytes - test/coverage-intersecting-triangles.ref.png | Bin 0 -> 209 bytes - .../coverage-intersecting-triangles.xlib.xfail.png | Bin 0 -> 16728 bytes - test/coverage-row-triangles.ref.png | Bin 0 -> 208 bytes - test/coverage-row-triangles.xlib.xfail.png | Bin 0 -> 12671 bytes - test/coverage.c | 249 +++++++++++++++++++- - 10 files changed, 251 insertions(+), 6 deletions(-) - -commit 9b7cc7641b691a3b9e3d5edd51053c9a095d9c5a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 12 10:41:09 2010 +0100 +commit b950212a2a6aca7784b637d93b13b10daef8d801 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Oct 4 23:11:56 2010 +1030 - cairo: Create error objects for cairo_t - - Perform an early check for error status and prevent creation of a full - object. This means that we do not pass down error objects to the - initialisation routines and so can survive without paranoia inside the - library. It also has brings consistency that like the other - constructors, no object is created in error and we can skip the - cairo_destroy() if we choose (and we don't waste one of the precious - zero-alloc context slots. - - Fixes crash in test/a8-mask introduced by 1a544361e845. + CFF subset: add support for latin subsets - src/cairo-debug.c | 2 + - src/cairo-mutex-list-private.h | 1 + - src/cairo.c | 76 ++++++++++++++++++++++++++++++++++------ - src/cairoint.h | 3 ++ - 4 files changed, 71 insertions(+), 11 deletions(-) + src/cairo-cff-subset.c | 410 +++++++++++++++++++++++++++---- + src/cairo-pdf-surface.c | 142 +++++++---- + src/cairo-scaled-font-subsets-private.h | 6 +- + src/cairo-scaled-font-subsets.c | 31 ++- + src/cairo-type1-subset.c | 13 +- + src/cairoint.h | 2 + + 6 files changed, 487 insertions(+), 117 deletions(-) -commit 9b6617a3b3b31d52e6646400b16ec56c754bfebd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 21:58:34 2010 +0100 +commit f20814e07e7032c14f273d712f35e19addfdae80 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 5 10:36:38 2010 +0200 - image: Apply component alpha to composite masks. - - If we need to pattern requires component alpha, then we must take a - copy of the image and enable component alpha for pixman. + xcb: Do not return value in void function - Fixes test/text-antialias-subpixel on xlib-fallback -- i.e. we will - finally render subpixel antialiased text on ancient XServers. + Sun Studio Compiler complains: + "cairo-xcb-surface.c", line 585: void function cannot return value + even if the returned value is void. + Some minor code restructuring removes the issue. - src/cairo-image-surface.c | 40 ++++++++++++++++++++++++---------------- - 1 files changed, 24 insertions(+), 16 deletions(-) + src/cairo-xcb-surface.c | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) -commit 7440fc07f77b112b00957f5459129dba23a5683f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 21:29:02 2010 +0100 - - test: xlib ref image refresh - - test/Makefile.am | 26 ++++++++++++++----- - ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1438 bytes - test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1758 -> 1759 bytes - test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1430 bytes - test/clip-group-shapes-circles.xlib.ref.png | Bin 0 -> 1534 bytes - ...-group-shapes-unaligned-rectangles.xlib.ref.png | Bin 0 -> 431 bytes - ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1437 bytes - test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1792 -> 1785 bytes - test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1442 bytes - test/clip-stroke.xlib-fallback.ref.png | Bin 1490 -> 1491 bytes - test/clip-stroke.xlib.ref.png | Bin 1490 -> 1491 bytes - test/clipped-group.xlib.ref.png | Bin 0 -> 289 bytes - test/coverage-rectangles.xlib.xfail.png | Bin 0 -> 15981 bytes - test/finer-grained-fallbacks.xlib-fallback.ref.png | Bin 0 -> 919 bytes - test/finer-grained-fallbacks.xlib.ref.png | Bin 1111 -> 1110 bytes - test/finer-grained-fallbacks.xlib.rgb24.ref.png | Bin 1114 -> 856 bytes - test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3639 -> 3625 bytes - test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3597 bytes - test/leaky-dashed-rectangle.xlib.ref.png | Bin 347 -> 344 bytes - test/linear-gradient-subset.xlib.ref.png | Bin 0 -> 782 bytes - test/pthread-show-text.xlib-fallback.ref.png | Bin 0 -> 42073 bytes - ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 264288 -> 264277 bytes - test/random-intersections-curves-nz.xlib.ref.png | Bin 264288 -> 264277 bytes - test/recording-surface-pattern.xlib.argb32.ref.png | Bin 0 -> 3055 bytes - test/recording-surface-pattern.xlib.rgb24.ref.png | Bin 0 -> 3124 bytes - test/scale-offset-image.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes - test/scale-offset-image.xlib.ref.png | Bin 0 -> 9136 bytes - test/scale-offset-image.xlib.xfail.png | Bin 9132 -> 0 bytes - test/scale-offset-similar.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes - test/scale-offset-similar.xlib.xfail.png | Bin 8696 -> 8698 bytes - test/self-intersecting.xlib.ref.png | Bin 252 -> 208 bytes - test/smask-text.xlib-fallback.ref.png | Bin 0 -> 1874 bytes - test/smask.xlib-fallback.ref.png | Bin 0 -> 3423 bytes - test/subsurface.xlib.ref.png | Bin 0 -> 1782 bytes - test/text-rotate.xlib-fallback.ref.png | Bin 0 -> 16592 bytes - 35 files changed, 19 insertions(+), 7 deletions(-) - -commit a049889c64131b170b66ed8906309f6adee80fa5 +commit e675660ca7b50ce16108e11215bbb9aff05c7262 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 21:26:26 2010 +0100 +Date: Mon Oct 4 22:08:33 2010 +0100 - pattern: Remove incorrect optimisations from _cairo_pattern_aquire_surface() + xcb: Correct a minor typo prevent an assert from firing - Safe reduction of patterns is performed in gstate, so not only are the - extra checks in _cairo_pattern_acquire_surface redundant there are also - unsafe. Simply remove them. - - Fixes test/radial-gradient-extend [xlib-fallback] + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-pattern.c | 110 ++++++++------------------------------------------- - 1 files changed, 17 insertions(+), 93 deletions(-) + src/cairo-xcb-surface-render.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) -commit 00bc1d1578dc2640db64315270b00073697fb9fa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 20:31:29 2010 +0100 +commit b6f830bab07e7e2ea7c3a8cb895d7a37c990c550 +Author: Uli Schlachter <psychon@znc.in> +Date: Mon Oct 4 18:11:50 2010 +0200 - pattern: Remove extraordinary _cairo_pattern_fini_snapshot(). + xcb: Correctly clear the composite surface - Miraculously the circular references from self-copy have disappeared and - the forced finish within _cairo_pattern_fini_snapshot() now quite - explosive. By replacing them with an ordinary _cairo_pattern_fini() the - crash from test/smask-image-mask disappear along and valgrind remains - happy. + Calling _cairo_xcb_surface_render_paint() with CAIRO_OPERATOR_CLEAR and no clip + just results in the surface's deferred_clear flag to be set to TRUE. Fix this by + calling _cairo_xcb_surface_clear() directly instead. - Fixes test/smask-image-mask and similar. + This half-fixes the clip-shape test in the test-suite. The difference to the + reference image becomes much smaller at least. :( + + Signed-off-by: Uli Schlachter <psychon@znc.in> - src/cairo-pattern.c | 17 ----------------- - src/cairo-recording-surface.c | 24 ++++++++++++------------ - src/cairoint.h | 3 --- - 3 files changed, 12 insertions(+), 32 deletions(-) + src/cairo-xcb-surface-render.c | 5 +---- + 1 files changed, 1 insertions(+), 4 deletions(-) -commit 1098e203dc21529f138bfabfa7558f61b8427ea0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 18:07:28 2010 +0100 - - test: pdf ref image refresh - - test/Makefile.am | 11 +++++++++++ - test/clear-source.pdf.xfail.png | Bin 0 -> 974 bytes - test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 0 -> 1244 bytes - test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 0 -> 1351 bytes - test/clip-unbounded.pdf.argb32.xfail.png | Bin 0 -> 95 bytes - test/clip-unbounded.pdf.rgb24.xfail.png | Bin 0 -> 95 bytes - test/filter-nearest-offset.pdf.xfail.png | Bin 2152 -> 4522 bytes - test/filter-nearest-transformed.pdf.xfail.png | Bin 532 -> 532 bytes - test/pthread-show-text.pdf.ref.png | Bin 0 -> 47015 bytes - test/radial-gradient-source.pdf.argb32.ref.png | Bin 0 -> 235290 bytes - test/rotate-image-surface-paint.pdf.xfail.png | Bin 358 -> 442 bytes - ...scale-source-surface-paint.pdf.argb32.xfail.png | Bin 0 -> 157 bytes - .../scale-source-surface-paint.pdf.rgb24.xfail.png | Bin 0 -> 152 bytes - test/surface-pattern-operator.pdf.argb32.xfail.png | Bin 0 -> 5485 bytes - test/surface-pattern-operator.pdf.rgb24.xfail.png | Bin 0 -> 2095 bytes - 15 files changed, 11 insertions(+), 0 deletions(-) - -commit 1c91d019c54afde0edb022312491b086588ce6c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 17:47:08 2010 +0100 - - test: ps ref image refresh. - - Update to gs-8.71 and some additional reference images for the new tests. - - test/Makefile.am | 116 +++++++++++--------- - test/README | 2 +- - test/big-line.ps.ref.png | Bin 0 -> 946 bytes - test/bug-bo-rectangular.ps.xfail.png | Bin 0 -> 945 bytes - test/caps-joins-curve.ps.ref.png | Bin 3728 -> 3715 bytes - test/caps-joins.ps.ref.png | Bin 2282 -> 2268 bytes - test/caps-sub-paths.ps.ref.png | Bin 0 -> 163 bytes - test/caps.ps.ref.png | Bin 1466 -> 1478 bytes - test/clear-source.ps.xfail.png | Bin 0 -> 552 bytes - test/clip-disjoint.ps.ref.png | Bin 0 -> 4680 bytes - test/clip-fill-rule.ps.argb32.ref.png | Bin 0 -> 251 bytes - test/clip-fill-rule.ps.rgb24.ref.png | Bin 0 -> 234 bytes - test/clip-fill-rule.ps2.argb32.ref.png | Bin 310 -> 0 bytes - test/clip-fill-rule.ps2.rgb24.ref.png | Bin 302 -> 0 bytes - test/clip-fill-rule.ps3.argb32.ref.png | Bin 310 -> 0 bytes - test/clip-fill-rule.ps3.rgb24.ref.png | Bin 302 -> 0 bytes - test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 0 -> 1244 bytes - test/clip-image.ps.ref.png | Bin 0 -> 2498 bytes - test/clip-nesting.ps.argb32.ref.png | Bin 0 -> 441 bytes - test/clip-nesting.ps.rgb24.ref.png | Bin 0 -> 492 bytes - test/clip-nesting.ps2.argb32.ref.png | Bin 651 -> 0 bytes - test/clip-nesting.ps2.rgb24.ref.png | Bin 636 -> 0 bytes - test/clip-nesting.ps3.argb32.ref.png | Bin 651 -> 0 bytes - test/clip-nesting.ps3.rgb24.ref.png | Bin 636 -> 0 bytes - test/clip-push-group.ps.ref.png | Bin 0 -> 120 bytes - test/clip-push-group.ps2.argb32.ref.png | Bin 179 -> 0 bytes - test/clip-push-group.ps2.rgb24.ref.png | Bin 179 -> 0 bytes - test/clip-push-group.ps3.argb32.ref.png | Bin 179 -> 0 bytes - test/clip-push-group.ps3.rgb24.ref.png | Bin 179 -> 0 bytes - test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 0 -> 1351 bytes - test/clip-stroke.ps.xfail.png | Bin 0 -> 662 bytes - test/clip-twice.ps.argb32.ref.png | Bin 0 -> 492 bytes - test/clip-twice.ps.rgb24.ref.png | Bin 0 -> 409 bytes - test/clip-twice.ps2.argb32.ref.png | Bin 575 -> 0 bytes - test/clip-twice.ps2.rgb24.ref.png | Bin 541 -> 0 bytes - test/clip-twice.ps3.argb32.ref.png | Bin 575 -> 0 bytes - test/clip-twice.ps3.rgb24.ref.png | Bin 541 -> 0 bytes - test/clipped-group.ps2.ref.png | Bin 343 -> 214 bytes - test/clipped-group.ps3.ref.png | Bin 343 -> 214 bytes - test/copy-path.ps.ref.png | Bin 0 -> 379 bytes - test/copy-path.ps2.ref.png | Bin 474 -> 0 bytes - test/copy-path.ps3.ref.png | Bin 474 -> 0 bytes - test/dash-caps-joins.ps.ref.png | Bin 0 -> 3669 bytes - test/dash-caps-joins.ps2.argb32.ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins.ps2.rgb24.ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins.ps3.argb32.ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins.ps3.rgb24.ref.png | Bin 3870 -> 0 bytes - test/dash-curve.ps2.ref.png | Bin 27293 -> 24355 bytes - test/dash-curve.ps3.ref.png | Bin 27293 -> 24355 bytes - test/dash-infinite-loop.ps.ref.png | Bin 0 -> 617 bytes - test/dash-scale.ps.ref.png | Bin 0 -> 5965 bytes - test/dash-scale.ps2.argb32.ref.png | Bin 6318 -> 0 bytes - test/dash-scale.ps2.rgb24.ref.png | Bin 6316 -> 0 bytes - test/dash-scale.ps3.argb32.ref.png | Bin 6318 -> 0 bytes - test/dash-scale.ps3.rgb24.ref.png | Bin 6316 -> 0 bytes - test/dash-state.ps2.ref.png | Bin 10219 -> 8740 bytes - test/dash-state.ps3.ref.png | Bin 10219 -> 8740 bytes - test/degenerate-arc.ps2.ref.png | Bin 585 -> 509 bytes - test/degenerate-arc.ps3.ref.png | Bin 585 -> 509 bytes - test/degenerate-curve-to.ps.xfail.png | Bin 202 -> 221 bytes - test/degenerate-dash.ps.xfail.png | Bin 1835 -> 1837 bytes - test/degenerate-path.ps.argb32.xfail.png | Bin 236 -> 234 bytes - test/degenerate-path.ps.rgb24.xfail.png | Bin 186 -> 184 bytes - test/degenerate-pen.ps.ref.png | Bin 0 -> 759 bytes - test/degenerate-pen.ps2.ref.png | Bin 865 -> 0 bytes - test/degenerate-pen.ps3.ref.png | Bin 865 -> 0 bytes - test/degenerate-rel-curve-to.ps.ref.png | Bin 0 -> 225 bytes - test/degenerate-rel-curve-to.ps.xfail.png | Bin 202 -> 0 bytes - test/fill-and-stroke.ps.argb32.ref.png | Bin 0 -> 257 bytes - test/fill-and-stroke.ps.rgb24.ref.png | Bin 0 -> 225 bytes - test/fill-and-stroke.ps2.argb32.ref.png | Bin 310 -> 0 bytes - test/fill-and-stroke.ps2.rgb24.ref.png | Bin 319 -> 0 bytes - test/fill-and-stroke.ps3.argb32.ref.png | Bin 310 -> 0 bytes - test/fill-and-stroke.ps3.rgb24.ref.png | Bin 319 -> 0 bytes - .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin 1901 -> 1903 bytes - test/fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin 1645 -> 1638 bytes - test/fill-image.ps.ref.png | Bin 1799 -> 1645 bytes - test/fill-rule.ps2.argb32.ref.png | Bin 2253 -> 1878 bytes - test/fill-rule.ps2.rgb24.ref.png | Bin 2031 -> 1524 bytes - test/fill-rule.ps3.argb32.ref.png | Bin 2253 -> 1878 bytes - test/fill-rule.ps3.rgb24.ref.png | Bin 2031 -> 1524 bytes - test/finer-grained-fallbacks.ps2.argb32.ref.png | Bin 1173 -> 1168 bytes - test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 1154 -> 936 bytes - test/finer-grained-fallbacks.ps3.argb32.ref.png | Bin 1173 -> 1168 bytes - test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 1154 -> 936 bytes - test/ft-text-vertical-layout-type1.ps.ref.png | Bin 1634 -> 2088 bytes - test/ft-text-vertical-layout-type3.ps.ref.png | Bin 1636 -> 2134 bytes - test/group-unaligned.ps.ref.png | Bin 332 -> 321 bytes - test/group-unaligned.ps.rgb24.xfail.png | Bin 0 -> 371 bytes - test/implicit-close.ps.ref.png | Bin 0 -> 252 bytes - test/joins.ps.ref.png | Bin 5496 -> 4230 bytes - test/leaky-dashed-rectangle.ps.ref.png | Bin 444 -> 358 bytes - test/leaky-dashed-stroke.ps.ref.png | Bin 0 -> 5293 bytes - test/leaky-dashed-stroke.ps2.ref.png | Bin 5511 -> 0 bytes - test/leaky-dashed-stroke.ps3.ref.png | Bin 5511 -> 0 bytes - test/leaky-polygon.ps.ref.png | Bin 0 -> 289 bytes - test/leaky-polygon.ps2.ref.png | Bin 354 -> 0 bytes - test/leaky-polygon.ps3.ref.png | Bin 354 -> 0 bytes - test/line-width-scale.ps2.ref.png | Bin 3911 -> 3431 bytes - test/line-width-scale.ps3.ref.png | Bin 3911 -> 3431 bytes - test/linear-gradient-subset.ps3.ref.png | Bin 0 -> 619 bytes - test/long-dashed-lines.ps2.ref.png | Bin 1516 -> 1329 bytes - test/long-dashed-lines.ps3.ref.png | Bin 1516 -> 1329 bytes - test/new-sub-path.ps2.argb32.ref.png | Bin 556 -> 398 bytes - test/new-sub-path.ps3.argb32.ref.png | Bin 556 -> 398 bytes - test/operator-alpha-alpha.ps.xfail.png | Bin 1338 -> 3429 bytes - test/over-around-source.ps2.argb32.ref.png | Bin 522 -> 508 bytes - test/over-around-source.ps3.argb32.ref.png | Bin 522 -> 508 bytes - test/over-below-source.ps2.argb32.ref.png | Bin 503 -> 368 bytes - test/over-below-source.ps2.rgb24.ref.png | Bin 0 -> 362 bytes - test/over-below-source.ps3.argb32.ref.png | Bin 503 -> 368 bytes - test/over-below-source.ps3.rgb24.ref.png | Bin 0 -> 362 bytes - test/path-append.ps.ref.png | Bin 4516 -> 4525 bytes - test/pixman-rotate.ps.argb32.ref.png | Bin 0 -> 355 bytes - test/push-group-color.ps3.ref.png | Bin 0 -> 2561 bytes - test/random-intersections-curves-eo.ps.ref.png | Bin 151676 -> 151668 bytes - test/random-intersections-curves-nz.ps.ref.png | Bin 134732 -> 134746 bytes - test/random-intersections-eo.ps.ref.png | Bin 78806 -> 78037 bytes - test/random-intersections-nonzero.ps.ref.png | Bin 77299 -> 76450 bytes - test/recording-surface-pattern.ps.argb32.ref.png | Bin 0 -> 3064 bytes - test/recording-surface-pattern.ps.rgb24.ref.png | Bin 0 -> 3147 bytes - test/recording-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes - test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes - test/recording-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes - test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes - test/reflected-stroke.ps.ref.png | Bin 0 -> 3368 bytes - test/reflected-stroke.ps2.ref.png | Bin 3898 -> 0 bytes - test/reflected-stroke.ps3.ref.png | Bin 3898 -> 0 bytes - test/rounded-rectangle-fill.ps.ref.png | Bin 0 -> 551 bytes - test/rounded-rectangle-stroke.ps.ref.png | Bin 0 -> 568 bytes - test/scale-offset-image.ps.ref.png | Bin 7289 -> 7697 bytes - test/spline-decomposition.ps.ref.png | Bin 9028 -> 8939 bytes - test/stroke-image.ps.ref.png | Bin 1641 -> 1682 bytes - test/subsurface.ps.ref.png | Bin 0 -> 1651 bytes - test/surface-pattern-big-scale-down.ps.ref.png | Bin 0 -> 235 bytes - test/surface-pattern-big-scale-down.ps.xfail.png | Bin 238 -> 0 bytes - test/text-glyph-range.ps.ref.png | Bin 0 -> 1253 bytes - test/text-glyph-range.ps2.ref.png | Bin 1389 -> 0 bytes - test/text-glyph-range.ps3.ref.png | Bin 1389 -> 0 bytes - test/text-rotate.ps.ref.png | Bin 0 -> 8765 bytes - test/text-rotate.ps2.ref.png | Bin 6851 -> 0 bytes - test/text-rotate.ps3.ref.png | Bin 6851 -> 0 bytes - test/text-transform.ps.ref.png | Bin 0 -> 3430 bytes - test/text-transform.ps2.ref.png | Bin 4154 -> 0 bytes - test/text-transform.ps3.ref.png | Bin 4154 -> 0 bytes - test/trap-clip.ps2.argb32.ref.png | Bin 4849 -> 4839 bytes - test/trap-clip.ps2.rgb24.ref.png | Bin 5617 -> 4729 bytes - test/trap-clip.ps3.argb32.ref.png | Bin 5591 -> 4751 bytes - test/trap-clip.ps3.rgb24.ref.png | Bin 5512 -> 4553 bytes - test/twin.ps.ref.png | Bin 2142 -> 2136 bytes - test/user-font-proxy.ps.ref.png | Bin 7766 -> 7837 bytes - test/user-font-rescale.ps.ref.png | Bin 0 -> 6781 bytes - test/user-font-rescale.ps2.ref.png | Bin 8041 -> 0 bytes - test/user-font-rescale.ps3.ref.png | Bin 8041 -> 0 bytes - test/xlib-expose-event.ps.ref.png | Bin 0 -> 39035 bytes - 155 files changed, 65 insertions(+), 53 deletions(-) - -commit 1a544361e845e4881990624a597f9dc2b82d1c73 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 16:04:41 2010 +0100 - - gstate: Update cached matrix state after device transform changes on the target - - Commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 caches whether the device - transform is identity on context creation. However, the api is quite lax - and allows the user to modify the device transform *after* he has - started to use the surface in a context, as apparently WebKit does. - Since this is not the only instance where we may need to invalidate - caches if the user modifies state, introduce a simple mechanism for - hooking into notifications of property changes. - - Fixes test/clip-device-offset. - - src/Makefile.sources | 1 + - src/cairo-gstate-private.h | 3 ++ - src/cairo-gstate.c | 28 ++++++++++++++++++++--- - src/cairo-observer.c | 50 +++++++++++++++++++++++++++++++++++++++++++ - src/cairo-surface-private.h | 1 + - src/cairo-surface.c | 6 +++++ - src/cairo-types-private.h | 6 +++++ - src/cairoint.h | 5 ++++ - 8 files changed, 96 insertions(+), 4 deletions(-) - -commit f74b11415a1f7682dd50c222baa8815ef93681dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 14:06:15 2010 +0100 +commit 0a651b93a45f8c43399188a95870ca0055becced +Author: Uli Schlachter <psychon@znc.in> +Date: Mon Oct 4 12:48:23 2010 +0200 - test: Use a group to render PDF correctly using poppler. + xcb: Fix compiler warning about unused result - In order to support blend modes, we need to use a clear background - whilst rendering the PDF, which inspired the use of DEST_OVER to avoid - having to render to an intermediate surface. However, the adjunct of - using subpixel text means that we cannot simply using the alpha channel - as the sole mask and so need to render to an intermediate and paint it - over an opaque background. + Signed-off-by: Uli Schlachter <psychon@znc.in> - test/any2ppm.c | 9 ++++++--- - test/pdf2png.c | 9 ++++++--- - 2 files changed, 12 insertions(+), 6 deletions(-) + src/cairo-xcb-surface-render.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) -commit 7f227ec8d3f981dbbf2ca1914bf7fd29d9cdfd05 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:54:15 2010 +0100 +commit be50c32ed594ccc90d6502c23cbf8c3d0f1dae67 +Author: Uli Schlachter <psychon@znc.in> +Date: Mon Oct 4 12:41:46 2010 +0200 - Revert "test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text." + xcb: Fix CAIRO_OPERATOR_IN - This reverts commit 506b2ebe714d61a64972b607a42a55e48d1c722a. + The if that is being removed here resulted in no drawing done at all when it + skipped the call to _render_fill_boxes(). This is obviously not what + CAIRO_OPERATOR_IN wants. - We have conflicting requirements here. In order to support extended - blend modes correctly we need to use DEST_OVER, at the expense of - supporting subpixel text. More thought required. - - test/any2ppm.c | 9 +++++---- - test/pdf2png.c | 10 +++++----- - 2 files changed, 10 insertions(+), 9 deletions(-) - -commit c761e0c5bb55e8869521ad5b4a2447ea9abcb4d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:40:36 2010 +0100 - - test: Restrict the coverage tests to raster targets. + This fixes the "operator" test in the test suite. - Typo inside the requirements failed to prevent the tests running on the - vector backends. + Signed-off-by: Uli Schlachter <psychon@znc.in> - test/coverage.c | 4 ++-- - test/half-coverage.c | 4 ++-- - test/partial-coverage.c | 18 +++++++++--------- - 3 files changed, 13 insertions(+), 13 deletions(-) + src/cairo-xcb-surface-render.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) -commit b49c944fe4abb9f3c70fac02a71061bf8d07259a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:38:17 2010 +0100 +commit c200560929f1d14667c9b2133a3591665f36c0d3 +Author: Uli Schlachter <psychon@znc.in> +Date: Sun Oct 3 21:15:07 2010 +0200 - test: Add a convenience script to disable the screensaver when testing + XCB: Fix some weird code - If the screensaver activates, it can cause failures when attempting to - render into an xlib window, so inhibit if we know how. - - test/Makefile.am | 2 +- - test/run-cairo-test-suite.sh | 18 ++++++++++++++++++ - 2 files changed, 19 insertions(+), 1 deletions(-) - -commit 4e4724d48c63d0cd4ec507ce72dcc55fb6e5f584 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:19:56 2010 +0100 - - gl: make check insists "cairoint.h" is first. - - src/cairo-gl-gradient.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 4edbcf1b1d046c9c626a0c0ad10d3c71f17984f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:17:19 2010 +0100 - - color: Mark _cairo_color_get_content() as private. + In the XCB backend, drawing a surface pattern always caused an extend of + CAIRO_EXTEND_NONE to be used. This caused e.g. all the + surface-pattern-scale-down-extend-* tests in the test suite to fail. + + Signed-off-by: Uli Schlachter <psychon@znc.in> - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-xcb-surface-render.c | 9 +-------- + 1 files changed, 1 insertions(+), 8 deletions(-) -commit 506b2ebe714d61a64972b607a42a55e48d1c722a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 12:04:39 2010 +0100 +commit 7d2979e446e2e10b6c5ace711549d25690b477ed +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Oct 2 16:58:06 2010 +0930 - test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text. + Don't embed cmap in TrueType fonts embedded in PostScript - Using DEST_OVER in this form to paint the background white fails in the - presence of subpixel geometry (particular text), so remove the hack and - simply paint the background white prior to passing the surface to - poppler. KISS. + it doesn't print on a LaserJet 4050 - test/any2ppm.c | 9 ++++----- - test/pdf2png.c | 10 +++++----- - 2 files changed, 9 insertions(+), 10 deletions(-) + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-scaled-font-subsets-private.h | 28 +++++++++++++++++++++++++--- + src/cairo-truetype-subset.c | 31 ++++++++++++++++++++++++------- + 4 files changed, 51 insertions(+), 12 deletions(-) -commit edb73b6dcf1adce40d6c10c492e3f78556e22b85 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 11:16:42 2010 +0100 +commit cd74f5edabf653d1c1c6daacea3626ba2548d5e0 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Oct 2 12:34:42 2010 +0930 - xlib: Adjust trapezoid precision based on antialias. - - Render supports two modes of precision when rendering trapezoids. - Precise specifies points sampling on a 15x17 grid, ala pixman. Imprecise - allows the driver more freedom in the methods used, which may be more - amenable to acceleration. Choose to use the imprecise mode by default, - but still allow users to force the more rigidly specified precision by - changing the antialias mode. + pdf-operators: word wrap latin text strings - src/cairo-xlib-surface-private.h | 1 + - src/cairo-xlib-surface.c | 31 +++++++++++++++++++++++++++++++ - 2 files changed, 32 insertions(+), 0 deletions(-) + src/cairo-pdf-operators.c | 73 ++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 65 insertions(+), 8 deletions(-) -commit 290749bdb5c634c030db81722214661c34344403 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 10:59:17 2010 +0100 +commit 165a14b5646d582781d119874f549ec9a02d7f53 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 19:18:28 2010 +0930 - polygon: Reorder conditionals based on likelihood. + pdf-operators: fix bug that was causing unnecessary repositioning of text - The vast majority of edges will be unclipped, so process those first. + This optimizes the output to increase the maximum amount of text that + is emitted with a single Tj operator. - src/cairo-polygon.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) + src/cairo-pdf-operators-private.h | 1 + + src/cairo-pdf-operators.c | 7 ++++++- + 2 files changed, 7 insertions(+), 1 deletions(-) -commit 55037bfb2454a671332d961e061c712ab5471580 -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Fri Jun 11 10:35:43 2010 +0100 +commit af3b550bc186361a0b6a779df0fc57799c3f163d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 18:07:01 2010 +0930 - xlib: Find matching Visual for XRenderFormat + PDF: Add support for latin subsets - Not only is this useful for users to know which Visual matches any - particular Cairo surface, it should also close a few obscure bugs of not - converting images correctly on upload. + Add support for Type 1 and TrueType latin subsets. - Fixes: - - Bug 28492 - cairo_xlib_surface_create_with_xrender_format does not - create visual for resulting surface - https://bugs.freedesktop.org/show_bug.cgi?id=28492 - - Mozilla Bug 567065 - Try to create offscreen Xlib surface from existing - visual if possible - https://bugzilla.mozilla.org/show_bug.cgi?id=567065 - - Mozilla Bug 445250 - cairo_draw_with_xlib should provide a non-NULL visual - to callback - https://bugzilla.mozilla.org/show_bug.cgi?id=445250 - - Reported-by: Oleg Romashin <romaxa@gmail.com> + CFF latin subsets are not yet implemented. - src/cairo-xlib-surface.c | 74 ++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 65 insertions(+), 9 deletions(-) + src/cairo-cff-subset.c | 20 ++++ + src/cairo-pdf-surface.c | 191 +++++++++++++++++++++---------- + src/cairo-scaled-font-subsets-private.h | 9 ++ + src/cairo-scaled-font-subsets.c | 11 ++- + 4 files changed, 170 insertions(+), 61 deletions(-) -commit cf426bce8ebd3aff5d50c6a54bbd731132b3d312 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 10:05:09 2010 +0100 +commit 85c25d79f7e77ae35a68b9444609aef8d5397011 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 18:05:34 2010 +0930 - test: Add a simple coverage test. + TrueType subsetting: embed a cmap for latin subsets - This test case should be much clearer than half-coverage over what it - purports to actually test. In each pixel, it draws a single geometric - primitive that coverages a known percentage of the pixel and then we - measure how close the rasterisers are to that ideal. + To support latin subsets in PDF, TrueType fonts require a cmap to map + unicode to glyph indices for all characters in the winansi encoding. - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/coverage-rectangles.ref.png | Bin 0 -> 259 bytes - test/coverage-triangles.ref.png | Bin 0 -> 253 bytes - test/coverage.c | 135 ++++++++++++++++++++++++++++++++++++++ - 5 files changed, 138 insertions(+), 0 deletions(-) + src/cairo-scaled-font-subsets-private.h | 3 + + src/cairo-scaled-font-subsets.c | 7 +- + src/cairo-truetype-subset.c | 123 ++++++++++++++++++++++--------- + 3 files changed, 94 insertions(+), 39 deletions(-) -commit bd3d9ef3d1dbc5364e79e6afb47d9e124cb61ca4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 09:12:16 2010 +0100 +commit 7c268bc8382350ab803eecb898d4650999a3a6bb +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 18:01:07 2010 +0930 - test: Distinguish tests that throw an error from a normal fail. + PS: Enable support for latin subsets - Hitting an error in a test case is almost as bad as crashing, and the - severity may be lost amidst "normal" failures. So introduce a new class - of ERROR so that we can immediately spot these during a test run, and - appropriately log them afterwards. - - test/cairo-test-runner.c | 89 ++++++++++++++++++++++++++++++++++++++++++++- - test/cairo-test.c | 20 ++++++++++- - test/cairo-test.h | 1 + - 3 files changed, 107 insertions(+), 3 deletions(-) - -commit eeafeebd2ec8ad8a9e7053aaaa0f845b58563b3b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 11 09:06:20 2010 +0100 - - path: Exponentially grow buffer based on populated points and ops. + Make PS TrueType embedding use the winansi glyph mapping for latin subsets. - Instead of simply doubling the buffer size every time we overflow a point - or an op, enlarge the buffer to fit twice the number of used points and - ops. We expect paths to be fairly consistent in the mix of operations, - and this allows the buffer size to tune itself to actual usage and reduce - wastage. + Enable use of latin subsets in PS. - src/cairo-path-fixed-private.h | 3 ++- - src/cairo-path-fixed.c | 39 +++++++++++++++++++-------------------- - 2 files changed, 21 insertions(+), 21 deletions(-) + src/cairo-ps-surface.c | 32 ++++++++++++++++++++++++-------- + 1 files changed, 24 insertions(+), 8 deletions(-) -commit b0056a86b4f6c92fa7eb89baf8483a46979c8cf1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 10 18:27:22 2010 +0100 +commit 52f3db92a747eb694b94f28d6862abd573f3b378 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:58:40 2010 +0930 - test: Exercise partial coverage some more. + Type 1 fallback: add support for latin subsets - Add some overlapping triangles (coarse enough for them to be resolved - using Cairo's 24.8 fixed point without loss of precision) to exercise - handling of overlapping subpixel geometry. - - test/Makefile.am | 4 + - ...tial-coverage-overlap-half-triangles-eo.ref.png | Bin 0 -> 189 bytes - ...partial-coverage-overlap-half-triangles.ref.png | Bin 0 -> 189 bytes - ...overage-overlap-three-quarter-triangles.ref.png | Bin 0 -> 186 bytes - ...artial-coverage-three-quarter-reference.ref.png | Bin 0 -> 186 bytes - test/partial-coverage.c | 284 ++++++++++++++++++-- - 6 files changed, 269 insertions(+), 19 deletions(-) - -commit 836f6166597eaa687b10e5f26fe71e099c434aa1 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jun 9 19:09:22 2010 +0200 - - gl: support single stop gradients - - src/cairo-gl-gradient-private.h | 2 +- - src/cairo-gl-gradient.c | 3 +-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -commit d17e2c5e23eac302b7463a08205088147da1172a -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 10 10:52:16 2010 +0200 - - ps: support single stop gradients + For latin subsets the /Encoding array maps the latin encoding to the + font glyphs. - src/cairo-ps-surface.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) + src/cairo-type1-fallback.c | 27 +++++++++++++++++++++------ + 1 files changed, 21 insertions(+), 6 deletions(-) -commit eb7fc351156bd66921ac3b3ffbd1fba6ba743ffb -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu Jun 10 10:51:50 2010 +0200 +commit 4a0e5b7ced989b2c1a17757ba17142eb55e3924d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:58:20 2010 +0930 - pdf: support single stop gradients + Type 1 subsetting: add support for latin subsets + + For latin subsets the /Encoding array maps the latin encoding to the + font glyphs. - src/cairo-pdf-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + src/cairo-type1-subset.c | 32 ++++++++++++++++++++++++-------- + 1 files changed, 24 insertions(+), 8 deletions(-) -commit e2660a0eac5f6081bf052db16b8bd85c814d19d8 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jun 9 16:59:29 2010 +0200 +commit 01ee091ee98bc0544d9a3d5665cdecddd8f368cc +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:57:43 2010 +0930 - pattern: improve single stop gradients handling + Add winansi glyph names - None-extended single stop gradients are now explicitly made clear. + for the PS backend and Type 1 subsetters to use with latin fonts. - src/cairo-pattern.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) + src/cairo-scaled-font-subsets-private.h | 3 +- + src/cairo-scaled-font-subsets.c | 7 ++- + src/cairo-type1-subset.c | 92 +++++++++++++++++++++++++++++++ + 3 files changed, 100 insertions(+), 2 deletions(-) -commit 7a024bc206aae790c7357be83474126037335ab1 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jun 9 17:59:47 2010 +0200 +commit e62891cd8f27b62c3ee04d822524c9cee69a2e62 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:55:53 2010 +0930 - test: exercise ps crash with single stop gradients + Return latin to glyph mapping in cairo_scaled_font_subset_t - PS crashes only when using the source operator, as it will otherwise - fallback to rasterization of the gradients. + so that font subsetters can include the latin to glyph encoding in the + subsetted font. - test/linear-gradient-one-stop.argb32.ref.png | Bin 0 -> 225 bytes - test/linear-gradient-one-stop.c | 2 +- - test/linear-gradient-one-stop.ref.png | Bin 344 -> 0 bytes - test/linear-gradient-one-stop.rgb24.ref.png | Bin 0 -> 174 bytes - test/radial-gradient-one-stop.argb32.ref.png | Bin 0 -> 1392 bytes - test/radial-gradient-one-stop.c | 2 +- - test/radial-gradient-one-stop.ref.png | Bin 1422 -> 0 bytes - test/radial-gradient-one-stop.rgb24.ref.png | Bin 0 -> 1153 bytes - 8 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-scaled-font-subsets.c | 22 +++++++++++++++++++++- + src/cairoint.h | 2 ++ + 2 files changed, 23 insertions(+), 1 deletions(-) -commit a0f8cfe64660c0043db15f9b9cbf1298bf1838d1 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 8 17:04:00 2010 +0200 +commit 807e690de4fda63a42a49a4342b563a6d54377ce +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:55:02 2010 +0930 - pattern: improve degenerate gradients handling - - Degenerate radial gradients are now considered clear. + pdf-operators: output (abc) style strings when font is latin - src/cairo-pattern.c | 35 +++++++++++++++++++++++++---------- - 1 files changed, 25 insertions(+), 10 deletions(-) + src/cairo-pdf-operators-private.h | 1 + + src/cairo-pdf-operators.c | 57 +++++++++++++++++++++++++++---------- + 2 files changed, 43 insertions(+), 15 deletions(-) -commit bccd89b4177b5f5bd05def9bee5f0927a9f25e4a -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 8 15:45:09 2010 +0200 +commit f1ca978032e973c4dc5cfa385074dea675a6c76d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:53:11 2010 +0930 - gstate: correct optimizations + Add capability for font subsets to put latin glyphs in a separate subset - Gradient were previously hand-optimized (without properly checking - for extend modes). By properly using _cairo_pattern functions we - avoid code duplication and bugs. + This is required to allow PDF/PS output to use "(this is ascii)" style + strings that can be post processed by applications like psfrag. It + will also reduce the file size when a large amount of latin text is + used due to the 8-bit encoding instead of the 16-bit used for CID + fonts. - Fixes linear-gradient-extend, radial-gradient-extend. + The winansi encoding (CP1252) is used for the latin subset as this is + a standard PDF encoding. Some PDF readers have buggy support for non + standard PDF 8-bit encodings. - src/cairo-gstate.c | 85 ++++++++++----------------------------------------- - 1 files changed, 17 insertions(+), 68 deletions(-) + src/cairo-scaled-font-subsets-private.h | 13 ++ + src/cairo-scaled-font-subsets.c | 306 ++++++++++++++++++++++--------- + 2 files changed, 228 insertions(+), 91 deletions(-) -commit 06c6207ad4205f211be70e324c6d32ea7d28dca8 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 1 19:40:14 2010 +0200 +commit 3f817dcfd39ffdb73ac694fd90a47d9d3a42af74 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:41:28 2010 +0930 - pattern: add gradient_is_solid function + Fix font metrics in PDF Type 1 fonts - It contains in a single place the logic needed to check if a gradient - pattern is solid (within a specified region). - - src/cairo-pattern.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 5 ++++ - 2 files changed, 58 insertions(+), 0 deletions(-) + edcefa87 introduced a bug in the Type 1 font metrics in PDF files. -commit 561625ee3bd2732457eaaf28937edf557ee7661d -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 1 19:39:02 2010 +0200 + src/cairo-type1-subset.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) - pattern: improve clear/opaque check functions - - _cairo_pattern_is_opaque was missing some checks about the extend type. - Conversely _cairo_pattern_is_clear was being too strict about gradients. +commit 877bc14eaf188ddf5ca747a0b7c808cccd2d1c5f +Merge: 7b308fd 66ace8c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 29 13:57:36 2010 +0100 - src/cairo-pattern.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++---- - src/cairoint.h | 4 ++ - 2 files changed, 108 insertions(+), 8 deletions(-) + Merge branch '1.10' -commit baaf312e047a9bea6f54e63cd6534c2ed7448523 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Apr 19 09:53:00 2010 +0200 - - pattern: remove content field from solid patterns - - The content field in solid patterns had ill-defined semantic (or no - semantic at all), thus it can be removed. - - src/cairo-color.c | 16 ++++++++++++++++ - src/cairo-gl-surface.c | 2 +- - src/cairo-gstate.c | 14 +++++--------- - src/cairo-pattern.c | 37 ++++++++++--------------------------- - src/cairo-script-surface.c | 9 +++------ - src/cairo-surface.c | 4 ++-- - src/cairo-types-private.h | 1 - - src/cairo-xlib-surface.c | 6 +++--- - src/cairo.c | 4 ++-- - src/cairoint.h | 9 +++++---- - 10 files changed, 47 insertions(+), 55 deletions(-) - -commit 7461947eb1a5f002a5931303843a5a2deca0e383 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Apr 19 09:51:26 2010 +0200 +commit 7b308fdcc9cda8291176f1f614fe416d80e330dd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 24 11:31:03 2010 +0100 - surface: remove content argument from is_similar + version: 1.11.1 - The content argument was basically unuses. + Mark the opening of master for new development work. A few quiets have + passed since 1.10 with no major brown bag incident, so lets start + harvesting the work for 1.12. - Xlib change extracted from ickle's wip/compositor branch. + Go Andrea, go! - src/cairo-directfb-surface.c | 2 +- - src/cairo-pattern.c | 5 ++--- - src/cairo-surface.c | 5 ++--- - src/cairo-win32-surface.c | 3 +-- - src/cairo-xlib-surface.c | 30 ++---------------------------- - src/cairoint.h | 6 ++---- - 6 files changed, 10 insertions(+), 41 deletions(-) + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit ef5f9b5c61750207947587173d21b46e2d299f33 +commit 4938e11ffe11781e4e294092807ebc67f362eac6 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 10 14:13:53 2010 +0100 +Date: Sat Dec 25 13:25:14 2010 +0000 - test: Update partial coverage. - - Gah, no wonder the output looked wrong for the triangles, they only - covered half the pixel. So separate triangles into two cases. + version: Bump for 1.10.2 release - test/Makefile.am | 2 + - test/partial-coverage-half-reference.ref.png | Bin 0 -> 189 bytes - test/partial-coverage-half-triangles.ref.png | Bin 0 -> 189 bytes - test/partial-coverage.c | 98 ++++++++++++++++++++++++- - 4 files changed, 96 insertions(+), 4 deletions(-) + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 +commit de464ea7781707984a1e1d5f98a8ff23c5ee18ed Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 10 11:36:58 2010 +0100 +Date: Sat Dec 25 13:24:37 2010 +0000 - gstate: Track whether the combination of ctm * device is identity. - - In the fairly common condition that both the ctm and the device - transforms are identity, the function overhead of calling the matrix - multiplication on the point overwhelmingly dominates. + NEWS: Add entry for 1.10.2 - src/cairo-clip.c | 1 + - src/cairo-gstate-private.h | 310 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gstate.c | 18 +++- - src/cairoint.h | 295 ----------------------------------------- - 4 files changed, 327 insertions(+), 297 deletions(-) + NEWS | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 59 insertions(+), 0 deletions(-) -commit 1349728d1ef63ed562a3fd0ee3c0a89aaba77616 +commit 888eeb187f542b96e722725f616720038e700b84 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 10 11:26:12 2010 +0100 +Date: Sat Dec 25 10:19:38 2010 +0000 - test: Add partial coverage. - - Another experiment in measuring consistency of rasterisation stratagems - across the backends. + Add a KNOWN_ISSUES file to track WONTFIX(?) bugs - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/partial-coverage-rectangles.ref.png | Bin 0 -> 202 bytes - test/partial-coverage-reference.ref.png | Bin 0 -> 202 bytes - test/partial-coverage-triangles.ref.png | Bin 0 -> 202 bytes - test/partial-coverage.c | 213 ++++++++++++++++++++++++++++++ - 6 files changed, 217 insertions(+), 0 deletions(-) + KNOWN_ISSUES | 10 ++++++++++ + Makefile.am | 1 + + 2 files changed, 11 insertions(+), 0 deletions(-) -commit 486118361ad0c2e68fa9f6b44ddb10e84d237eca -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 10 11:28:26 2010 +0100 +commit a27e3bc6d08feeac8e4ee5315a0ad974efee0ee9 +Author: Koji Otani <sho@bbr.jp> +Date: Wed Nov 17 00:07:03 2010 +1030 - test: Fix half-coverage colouration. - - Hmm, red over red makes the test pointless. The test still remains of - highly dubious quality, as it primarily serves as a rendercheck more - than a test of Cairo. The best hope for this test is that it inspires a - better one. + PS: fix embedding of grayscale jpegs - And incorporate the notes made by Joonas. + https://bugs.freedesktop.org/show_bug.cgi?id=31632 + (cherry picked from commit 653ceb517fe756b042a3cf8322a36cbfe71ddbd8) - test/half-coverage.c | 28 +++++++++++++++++++++++++++- - 1 files changed, 27 insertions(+), 1 deletions(-) + src/cairo-ps-surface.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) -commit 5cb764850f7c405085739647bac2809045e7cdf3 -Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> -Date: Wed Jun 9 19:20:27 2010 +0300 - - scaled-font: optimize cairo_scaled_font_text_to_glyphs() - - This patch serves two purposes. First, it factors out the heavy part - of the cairo_scaled_font_text_to_glyphs() routine thus allowing GCC - to better optimize the cache cleanup loop. Keeping the look-up table - indices in a separate array speeds up array initialization even further. - - Second, this patch introduces a shortcut for the case when the string - to be rendered consists of a single character. In this case, caching is - not necessary at all. - - We have a benchmark that uses Cairo to render a large amount of random - strings of consisting of printable ASCII characters. Below are Oprofile - results collected while running this benchmark. It is easy to see that - the heavy part becomes noticeably lighter. - - Before: - - Profiling through timer interrupt - samples % app name symbol name - 198755 13.5580 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs - 88580 6.0424 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup - 81127 5.5340 libcairo.so.2.10907.0 _cairo_hash_table_lookup - 68186 4.6513 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents - 47145 3.2160 libcairo.so.2.10907.0 _composite_glyphs_via_mask - 46327 3.1602 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents - 44817 3.0572 libcairo.so.2.10907.0 _composite_glyphs - 40431 2.7580 libcairo.so.2.10907.0 .plt - - After (note that cairo_scaled_font_text_to_glyphs_internal_single() was inlined): - - Profiling through timer interrupt - samples % app name symbol name - 107264 7.6406 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs_internal_multiple - 87888 6.2604 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup - 79011 5.6281 libcairo.so.2.10907.0 _cairo_hash_table_lookup - 71723 5.1090 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents - 48084 3.4251 libcairo.so.2.10907.0 _composite_glyphs_via_mask - 46636 3.3220 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents - 44740 3.1869 libcairo.so.2.10907.0 _composite_glyphs - 42472 3.0254 libc-2.8.so _int_malloc - 39194 2.7919 libcairo.so.2.10907.0 _cairo_gstate_transform_glyphs_to_backend - 38614 2.7506 libcairo.so.2.10907.0 .plt - 37063 2.6401 libcairo.so.2.10907.0 _cairo_ft_ucs4_to_index - 36856 2.6253 libc-2.8.so random - 36376 2.5911 libcairo.so.2.10907.0 _cairo_scaled_glyphs_equal - 34545 2.4607 libcairo.so.2.10907.0 cairo_matrix_transform_point - 31690 2.2573 libc-2.8.so malloc - 29395 2.0939 libcairo.so.2.10907.0 _cairo_matrix_is_identity - 26142 1.8621 libcairo.so.2.10907.0 _cairo_utf8_to_ucs4 - 24406 1.7385 libc-2.8.so free - 24059 1.7138 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs - - [ickle: slightly amended for stylistic consistency.] - - src/cairo-scaled-font.c | 168 ++++++++++++++++++++++++++++++++--------------- - 1 files changed, 114 insertions(+), 54 deletions(-) - -commit c43399fa68696aa62599fb71752850dd46c15c82 +commit 4aabff8f6740e2027febd97c1863f7ba5a46cb92 Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jun 9 17:53:09 2010 +0200 +Date: Tue Dec 14 17:56:00 2010 +0100 - gl: fix compilation on MacOS X + path-bounder: Update current point after curve_to op + + Even if the curve_to is completely within the current extents box, the + current point needs to be updated because the shape of following ops + depends on the position of the current point. - MacOS X uses different defines to avoid multiple inclusion of GL - header files. Adding them to glew.h fixes the compilation when GL is - enabled. + Fixes bug-extents. - src/glew/GL/glew.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + src/cairo-path-bounds.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 6eb5f859f1d38783dc43541e7e87b0c5f91691d8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 9 10:40:32 2010 +0100 +commit 5996652364efa4fb4ae6c984ddf6ddad8868782b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Dec 14 20:15:28 2010 +0100 - bo: And disable DEBUG_TRAPS again. + test: Add bug-extents - Meh. I'm going back to bed. Thanks Joonas for catching this. - - src/cairo-bentley-ottmann.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 85af0ec37456b4eb47c39326b24370a9ccc43092 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 9 10:33:29 2010 +0100 - - test: Add half-coverage to exercise the rasteriser with subpixel geometry. - - test/Makefile.sources | 1 + - test/half-coverage.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 130 insertions(+), 0 deletions(-) - -commit 56c081bdc6d29df932e6993109586ff275d8de12 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 9 10:33:01 2010 +0100 - - bo: Fix debugging for changes in internal traps api. - - src/cairo-bentley-ottmann.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit a946d39555136adc4eff3b68a62ba37f6d9a6299 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 21:09:51 2010 +0200 - - gl: Add support for clip regions to the span renderer - - Clip surface support is still missing, but i suppose that'd need a tiny - bit more code... - - src/cairo-gl-surface.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit f61b3f25aff454800a9d6013012d41633139d896 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 12:03:36 2010 +0200 - - gl: Add an assertion that we always have a texture - - When painting, the sources must be textures and not windows, and we did - that wrong previously. This assertion makes sure that never happens - again. - - src/cairo-gl-composite.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c6c9a24a1df1826cab78bd8ef1c5a1074bafa0d7 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 04:11:33 2010 +0200 - - gl: Use CAIRO_COLOR_BLACK - - ... instead of creating black on our own - and wrong, too. - - src/cairo-gl-surface.c | 8 +------- - 1 files changed, 1 insertions(+), 7 deletions(-) - -commit 19bc6793d1d9b209d5a03a727288504b1e71f7c4 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 04:00:02 2010 +0200 - - gl: Only clone texture surfaces - - Using non-texture surfaces as source or mask will fail, so we need to - fallback. - Caught by the subsurface-modify-child test. - - src/cairo-gl-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 44483d843e4fe1f5db5cf213f76913d683265bb4 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 03:59:10 2010 +0200 - - gl: Fix argument order - - oops... - - src/cairo-gl-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 72bf1a536775138d79787729994ec9cfe2193be7 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Jun 8 01:50:12 2010 +0200 - - Update my copyright notices to preferred version - - No more copyright headers containing my name. - - test/clear-source.c | 35 ++++++++++++++++++----------------- - test/clip-fill-no-op.c | 35 ++++++++++++++++++----------------- - test/clip-stroke-no-op.c | 35 ++++++++++++++++++----------------- - test/pthread-same-source.c | 35 ++++++++++++++++++----------------- - test/pthread-similar.c | 35 ++++++++++++++++++----------------- - test/xcomposite-projection.c | 35 ++++++++++++++++++----------------- - test/zero-mask.c | 35 ++++++++++++++++++----------------- - 7 files changed, 126 insertions(+), 119 deletions(-) - -commit 10d95c7020ca94903d474beb9c8ede89c186cbe3 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 8 20:48:25 2010 +0200 - - test: add/update reference images - - Add missing reference images and update one-stop references according - to current subset policy (outside the defined range, the gradient - is clear). - - test/degenerate-linear-gradient.ref.png | Bin 0 -> 232 bytes - test/degenerate-radial-gradient.ref.png | Bin 0 -> 428 bytes - test/linear-gradient-one-stop.ref.png | Bin 468 -> 344 bytes - test/radial-gradient-one-stop.ref.png | Bin 3772 -> 1422 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit dd0f8872711d9896416cca2027f578f7d58d228f -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Jun 7 17:34:12 2010 +0200 - - test: fix typo - - test/linear-gradient-extend.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9b88b5dce5327cbd13ea05de949c502fe41f91f7 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jun 8 10:45:06 2010 +0200 - - test: add degenerate gradient and single stop tests - - Add tests for degeneratate linear gradients (with start point equal - to the end point), degenerate radial gradients (start radius and end - radius equal to zero, same start and end circle) and gradients (both - linear and radial) with just a single stop. - - test/Makefile.sources | 6 ++- - test/degenerate-linear-gradient.c | 81 +++++++++++++++++++++++++ - test/degenerate-radial-gradient.c | 93 ++++++++++++++++++++++++++++ - test/linear-gradient-one-stop.c | 90 +++++++++++++++++++++++++++ - test/linear-gradient-one-stop.ref.png | Bin 0 -> 468 bytes - test/radial-gradient-one-stop.c | 107 +++++++++++++++++++++++++++++++++ - test/radial-gradient-one-stop.ref.png | Bin 0 -> 3772 bytes - 7 files changed, 376 insertions(+), 1 deletions(-) - -commit 7d8359721b581845260c0442a174e48b061484a7 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jun 7 16:46:46 2010 +0200 - - gl: Fix span renderer doing bad stuff for CLEAR and SOURCE - - SOURCE will fallback now, CLEAR is identical to DEST_OUT with white. - - src/cairo-gl-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit ef8fd1355ea03b8566ef31642b32133d3543e4e8 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jun 7 15:03:37 2010 +0200 - - gl: Fix span renderer for unbounded spans - - The span renderer used to not output rects for the top and bottom rows - when they didn't contain any spans. - - src/cairo-gl-surface.c | 72 ++++++++++++++++++++++++++++++++--------------- - 1 files changed, 49 insertions(+), 23 deletions(-) - -commit 1d11af083f5368c88032a33ff40d0e21c139db18 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jun 5 15:22:44 2010 +0200 - - gl: Add a simple spans renderer for stroke/fill - - It's very simple as clipped polygons or ANTIALIAS_NONE still return - UNSUPPORTED. Also, no optimizations are done, so even pixel-aligned - rectangles use the full span rendering. - - Still, there are no performance regressions in the benchmark traces and - firefox-talos-svg and swfdec-giant-steps both got ~15% faster. - - src/cairo-gl-surface.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 175 insertions(+), 3 deletions(-) - -commit 550335efeddf813c1bec493513254fdbd34a9ace -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jun 5 15:19:44 2010 +0200 - - Remove _cairo_surface_composite_trapezoids_as_polygon() - - The function computed the composite rectangles wrong and was only used - in a gl fallback anyway. So instead of trying to fix it, just remove it - and make sure gl doesn't fallback. - - src/cairo-gl-surface.c | 14 -------- - src/cairo-spans-private.h | 12 ------- - src/cairo-spans.c | 75 --------------------------------------------- - src/cairoint.h | 12 ------- - 4 files changed, 0 insertions(+), 113 deletions(-) - -commit 1e003fce8f7239aaf4608747d63287e0c715ee51 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat Jun 5 14:58:32 2010 +0200 - - gl: Fix vertex size changes not causing updates of the operands - - Check vertex size stays identical when setting up vertices. - - src/cairo-gl-composite.c | 17 ++++++++++------- - 1 files changed, 10 insertions(+), 7 deletions(-) - -commit 39143400ddd0d4e63a72ce91c423f764e466e405 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Jun 4 12:25:52 2010 +0200 - - gl: Add a gradient texture cache - - For firefox-planet-gnome, 19135 times a gradient gets rendered using - only 10 different gradients. So we get a 100% hit rate in the cache. - Unfortunately, texture upload is not the biggest problem of this test, - as the performance increase is only moderate - at least on i965: - 34.3s => 33.5s - - src/cairo-gl-device.c | 12 +++++++- - src/cairo-gl-gradient-private.h | 18 +++++++++--- - src/cairo-gl-gradient.c | 58 +++++++++++++++++++++++++++++++++++++-- - src/cairo-gl-private.h | 2 + - 4 files changed, 81 insertions(+), 9 deletions(-) - -commit 932ab2641ea3183171c3b5699c96c4709fc6bd49 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jun 3 18:54:18 2010 +0200 - - device: flush before setting finished - - Otherwise APIs critical for flushing - in particular acquiring the - device - do not work. - - src/cairo-device.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 35e219d08f1c202399655db183ca0105a1c2166f -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jun 3 17:50:59 2010 +0200 - - gl: Make gradient textures a separate object - - This is necessary so we can do proper refcounting and don't delete the - gradient texture prematurely. - - src/Makefile.sources | 4 +- - src/cairo-gl-composite.c | 156 +++------------------------ - src/cairo-gl-gradient-private.h | 80 ++++++++++++++ - src/cairo-gl-gradient.c | 223 +++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 9 +- - 5 files changed, 327 insertions(+), 145 deletions(-) - -commit 9c17a477d29f633a4850ef8b458cbca82a19afc4 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jun 3 17:40:56 2010 +0200 - - gl: Use the generic functions for filter/extend in gradients - - src/cairo-gl-composite.c | 26 ++++++++------------------ - src/cairo-gl-private.h | 2 ++ - 2 files changed, 10 insertions(+), 18 deletions(-) - -commit df93802765afcf883abef5549bd5dff3465e2d79 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Jun 3 17:38:28 2010 +0200 - - gl: Create separate functions for setting extend and filter - - src/cairo-gl-composite.c | 47 +++++++++++++++++++++++++++------------------ - 1 files changed, 28 insertions(+), 19 deletions(-) - -commit 10e71806d2e1929aa127642a397fa6ccef434b5b -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 20:04:57 2010 +0200 - - gl: Switch to deferred rendering - - 1) call _cairo_gl_composite_flush() or cairo_surface_flush() where - needed - 2) Destroy texture operands when necessary - 3) get rid of _cairo_gl_composite_end() - - With this patch, vertices are not flushed immediately anymore, but only - when needed or when a new set of vertices is emitted that requires an - incompatible setup. This improves performance a lot in particular for - text. (gnome-terminal-vim gets 10x faster) - - src/cairo-gl-composite.c | 40 ++++++++++++++++++++++------------------ - src/cairo-gl-glyphs.c | 4 ---- - src/cairo-gl-private.h | 4 ---- - src/cairo-gl-surface.c | 12 ++++++------ - 4 files changed, 28 insertions(+), 32 deletions(-) - -commit f2f79ca1b3455000df4138ab500ae03b6584250c -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 19:57:47 2010 +0200 - - gl: Make using shaders an explicit argument - - This is preparation for a followup patch - - src/cairo-gl-composite.c | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit 19c1d8316e22fc37c7cdaf6c3e56519c06d10561 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 18:14:28 2010 +0200 - - gl: Special case blend mode for CAIRO_CONTENT_COLOR - - This ensures that alpha stays at 1 for RGB in all cases. - - src/cairo-gl-composite.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 1f249064cc5c19a39ffe0faaa8825c8f8b6a2175 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 18:11:04 2010 +0200 - - gl: rework _cairo_gl_set_operator() - - 1) store the current operator. This will be useful later to check if the - operator changed. - 2) pass the context instead of the destination as first argument. The - destination is known to be the current target. - - src/cairo-gl-composite.c | 16 +++++++++------- - src/cairo-gl-device.c | 3 +++ - src/cairo-gl-private.h | 1 + - 3 files changed, 13 insertions(+), 7 deletions(-) - -commit f66500d8b052251ea3ce06f06d2fa4c8dec2ff3b -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 15:53:48 2010 +0200 - - gl: Only resetup textures if we need to - - src/cairo-gl-composite.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 45 insertions(+), 0 deletions(-) - -commit d9dcafd61ad6aeecb4538e9fd44e3443a8a50bf1 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 15:26:45 2010 +0200 - - gl: Do not reset the current target on release - - This now also requires a call to cairo_device_flush(). - - src/cairo-gl-device.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ce36be5c67fa5b574eb11eb98cdd8c9cd7e09335 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 15:23:57 2010 +0200 - - glx: When acquiring device, use the correct drawable - - src/cairo-glx-context.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 5819bb07eb7ac64f0e2fbe6a46cc3db0de1d92ce -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jun 2 15:23:08 2010 +0200 - - gl: Store the vertex offset in the operand - - src/cairo-gl-composite.c | 1 + - src/cairo-gl-private.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit c75460c54d88ce9a50ac59c15a10684043ca4b0e -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 30 22:01:10 2010 +0200 - - gl: Introduce a temporary texture unit - - ...and use it for image uploads. This makes sure that the texture units - used for SOURCE and MASK get not clobbered when images get uploaded to - textures. - - src/cairo-gl-composite.c | 2 ++ - src/cairo-gl-device.c | 17 +++++++++++++++++ - src/cairo-gl-private.h | 8 +++++++- - src/cairo-gl-surface.c | 2 ++ - 4 files changed, 28 insertions(+), 1 deletions(-) - -commit 1ddff8aba35466fe6689536bc5f2d7eeefaea02c -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 30 21:25:20 2010 +0200 - - gl: Only allocate a framebuffer if we need one - - This way, we don't clobber the current target when creating textures for - image surfaces. - - src/cairo-gl-device.c | 26 ++++++++++++++++++++++++++ - src/cairo-gl-private.h | 2 +- - src/cairo-gl-surface.c | 20 ++------------------ - 3 files changed, 29 insertions(+), 19 deletions(-) - -commit 1c15510c3d00553aba9ec4fd4e6764da3cdb0a41 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 30 20:12:31 2010 +0200 - - Call cairo_surface_flush() before setting finished - - With the current code, the surface will never be flushed as the flush - function checks if the surface is finished, and if so, doesn't call the - vfunc. Ooops. - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 467d5e7f90b9edfb62ca71e67608704424a10aca -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:56:57 2010 +0200 - - gl: Flush properly in set_destination - - src/cairo-gl-device.c | 33 +++++++++++++++++---------------- - 1 files changed, 17 insertions(+), 16 deletions(-) - -commit e15348d8d0bbff6968b1f640e63315d159f143f5 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:55:26 2010 +0200 - - gl: Don't reset vertex size - - src/cairo-gl-composite.c | 10 ++++++---- - src/cairo-gl-device.c | 1 + - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit a8d6ac1efc3f1f5ff4f92f4e7a3492e62518f3f7 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:51:08 2010 +0200 - - gl: Remove check if we're between begin/end - - This will be useless soon, because we will keep the current state alive as - long as possible. - - src/cairo-gl-composite.c | 1 - - src/cairo-gl-private.h | 7 ------- - 2 files changed, 0 insertions(+), 8 deletions(-) - -commit 8f675fb801f7864aa52778d4d53d7ab68f4e664b -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:46:52 2010 +0200 - - gl: Stop disabling the vertex array and the array buffer - - src/cairo-gl-composite.c | 12 ++++-------- - src/cairo-gl-device.c | 4 ++++ - 2 files changed, 8 insertions(+), 8 deletions(-) - -commit bef0b541497eb5a621df0b5528e08adb0beff961 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:08:17 2010 +0200 - - gl: Do not reset shaders on _end() - - Instead, keep the shader around until cairo_device_flush() is called. - - src/cairo-gl-composite.c | 35 ++++++++++++++++++++++------------- - src/cairo-gl-device.c | 3 +++ - src/cairo-gl-private.h | 6 ++++++ - 3 files changed, 31 insertions(+), 13 deletions(-) - -commit 534c14729921cbc2f8e24575eb792de9ddb96e23 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 21:06:58 2010 +0200 - - region: clarify docs of cairo_region_equal() - - src/cairo-region.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 0fc6f08981604ffdd0109362dcbbd9773501cd9a -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 20:45:52 2010 +0200 - - gl: Make _shader_by_type() a getter - - And refactor code to do the current_shader assigning itself. - - src/cairo-gl-composite.c | 16 +++++++++++----- - src/cairo-gl-private.h | 5 +++-- - src/cairo-gl-shaders.c | 13 ++++++++----- - 3 files changed, 22 insertions(+), 12 deletions(-) - -commit 2971ca049881298cd171cf27cd3beb49d2c0572f -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 20:39:22 2010 +0200 - - gl: bind all shader variables at the same place - - Avoids the need to bind the shader when creating it. - - src/cairo-gl-composite.c | 26 ++++++++++++++++++++------ - src/cairo-gl-shaders.c | 11 ----------- - 2 files changed, 20 insertions(+), 17 deletions(-) - -commit e11d8370e0503f085beaa355d85fa6991cd497da -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 17:37:19 2010 +0200 - - gl: Set GL_BLEND and GL_SCISSOR_TEST globally - - Note that we do set them unconditionally in _begin() because a flush - might have cleared them. - - src/cairo-gl-composite.c | 11 +++-------- - src/cairo-gl-device.c | 8 ++++++++ - src/cairo-gl-surface.c | 1 + - 3 files changed, 12 insertions(+), 8 deletions(-) - -commit 7747f6d9146c19419fdc4fbbdf72eed42dfa731d -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 17:19:56 2010 +0200 - - gl: Introduce flush functions - - The flush functions will clear the state that will in the future be kep - unconditionally. - - src/cairo-gl-composite.c | 6 +++--- - src/cairo-gl-device.c | 22 +++++++++++++++++++++- - src/cairo-gl-private.h | 4 ++++ - src/cairo-gl-surface.c | 36 ++++++++++++++++++++++++++++++++---- - 4 files changed, 60 insertions(+), 8 deletions(-) - -commit 5c74beaaa5dedd82f891f1cc109142f7b6e222a8 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 17:19:45 2010 +0200 - - docs: fix typo - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 92d7b1eee96e6b1448aaf3c95a44238fa0eeff48 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 16:19:12 2010 +0200 - - device: Make flush vfunc return a cairo_status_t - - Mirror the behavior of the surface flush vfunc: Make it return a status - and if it's an error set it on the device. - - src/cairo-device-private.h | 2 +- - src/cairo-device.c | 9 +++++++-- - src/cairo-xml-surface.c | 4 +++- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit 63e3cf3888d5b55295a04c4af28e876c04245b85 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 15:09:23 2010 +0200 - - gl: Move unsetting the state into the operand destroy function - - src/cairo-gl-composite.c | 43 +++++++++++++++++++++++++++++-------------- - 1 files changed, 29 insertions(+), 14 deletions(-) - -commit b9b85dbf3706fe9e50f40b5fda655e71931c2d7f -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 13:42:11 2010 +0200 - - gl: get rid of the operand's pattern variable - - Now someone just needs to teach cairo-gl to not use - cairo_pattern_acquire_surface() and we could avoid the nasty hack in - cairo_gl_operand_destroy(). - - src/cairo-gl-composite.c | 21 ++++++++++----------- - src/cairo-gl-private.h | 2 -- - 2 files changed, 10 insertions(+), 13 deletions(-) - -commit ae9517a39fdddec389553a64116140e222970ef0 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 13:18:28 2010 +0200 - - gl: Check mask's attributes for component alpha - - ... and don't duplicate that information into the cairo_gl_composite_t - - src/cairo-gl-composite.c | 14 ++++++++------ - src/cairo-gl-private.h | 1 - - 2 files changed, 8 insertions(+), 7 deletions(-) - -commit f72afc09d0b99030f5766e7bbbb05f6db606e195 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 13:14:09 2010 +0200 - - gl: Merge fixed function setup into general texture setup - - src/cairo-gl-composite.c | 84 ++++++++++++++++++--------------------------- - 1 files changed, 34 insertions(+), 50 deletions(-) - -commit dd1faaf02e2a75ca8b9c484abd15726f5c6d3ac4 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 12:54:54 2010 +0200 - - gl: Move function - - I wanna use it elsewhere and keep the diff small. - - src/cairo-gl-composite.c | 58 +++++++++++++++++++++++----------------------- - 1 files changed, 29 insertions(+), 29 deletions(-) - -commit d03800313623fb2b9e7d15c6a659ceaaee2882e8 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 12:51:08 2010 +0200 - - gl: Simplify mask operand setup code - - Component alpha just has one different value - - src/cairo-gl-composite.c | 40 +++++++--------------------------------- - 1 files changed, 7 insertions(+), 33 deletions(-) - -commit e20261dddaa194ab4e980da8681e9378d7fd7ef1 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 12:48:59 2010 +0200 - - gl: Get rid of operand argument to emit functions - - src/cairo-gl-composite.c | 34 +++++++++++++++------------------- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 2 -- - src/cairo-gl-surface.c | 11 +++-------- - 4 files changed, 19 insertions(+), 30 deletions(-) - -commit 8062fb352e6cd1d961f0fbc660779f4ad94c7508 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 11:03:09 2010 +0200 - - gl: Add an enum for tex units - - Instead of hardcoding 0 for source and 1 for mask, use an enum. It's - also clearer when functions take a cairo_gl_tex_t argument instead of a - GLuint. - - src/cairo-gl-composite.c | 20 ++++++++++---------- - src/cairo-gl-private.h | 5 +++++ - src/cairo-gl-shaders.c | 34 ++++++++++++---------------------- - 3 files changed, 27 insertions(+), 32 deletions(-) - -commit 5db362dd6792af20282e0e9a2805ee6f1b921e44 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 28 10:24:33 2010 +0200 - - gl: Keep a copy of the current operand in the context - - Note that they are currently only valid as long as the - cairo_gl_composite_t exists, but that will be changed soon. - - src/cairo-gl-composite.c | 20 ++++++++++++++++---- - src/cairo-gl-private.h | 2 ++ - 2 files changed, 18 insertions(+), 4 deletions(-) - -commit a05f062c806ac014d0daffa1d74bdb0dd90a8a26 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 19:23:18 2010 +0200 - - gl: Move struct definitions in header - - src/cairo-gl-private.h | 66 ++++++++++++++++++++++++------------------------ - 1 files changed, 33 insertions(+), 33 deletions(-) - -commit 85d4c6c55b85c52d8f86247f00659e37354abd49 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 21:23:40 2010 +0200 - - gl: operand->texture.surface cannot be NULL - - src/cairo-gl-composite.c | 10 +++------- - 1 files changed, 3 insertions(+), 7 deletions(-) - -commit 9486ad5fbdad047b5194f6bed68a08bb4c594610 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 19:16:41 2010 +0200 - - gl: Remove composite_t argument from _flush() function - - src/cairo-gl-composite.c | 17 +++++++---------- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 3 +-- - 3 files changed, 9 insertions(+), 13 deletions(-) - -commit 16e420b4dca5325ab295a27103299a916f334b05 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 19:13:53 2010 +0200 - - gl: Remove dependency on composite_t in draw function - - src/cairo-gl-composite.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit e46215ec6b94355b741acf5dfdd264d6396b4bc8 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 18:44:20 2010 +0200 - - gl: Remove unneeded and broken workaround - - We now ensure the values are properly zeroed when setting the operator. - - src/cairo-gl-composite.c | 14 +------------- - 1 files changed, 1 insertions(+), 13 deletions(-) - -commit b2d709b5c7e463437189b8e4a2c53a3317437825 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 17:41:01 2010 +0200 - - gl: Switch src alpha handling to a tiny on/off function - - Instead of doing setup every time, we just set this one flag. Much - nicer. - - src/cairo-gl-composite.c | 22 +++++++--------------- - 1 files changed, 7 insertions(+), 15 deletions(-) - -commit 53fd451f85974d2ed0d6f29a0a0549fd4c7035fe -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 17:32:14 2010 +0200 - - gl: Avoid redundant mask setup - - The mask doesn't change, so no need to set it up twice - - src/cairo-gl-composite.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 1b3675fc4b9c7f6ad4d9edd9b27bee10c2502b81 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 17:28:05 2010 +0200 - - gl: Split fixed-function operand setup into own function - - src/cairo-gl-composite.c | 151 +++++++++++++--------------------------------- - 1 files changed, 42 insertions(+), 109 deletions(-) - -commit 02da871050f6be02ba0231e545d6613a42c3a7e6 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 17:02:29 2010 +0200 - - gl: Unify fixed function setup code - - src/cairo-gl-composite.c | 15 ++++----------- - 1 files changed, 4 insertions(+), 11 deletions(-) - -commit 74f9094162fba54c29859e25ad5be085604aa0b6 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 15:46:39 2010 +0200 - - gl: switch OPERAND0 and OPERAND1 in the fixed function path - - This should not change anything as we multiply the values. - But it allows unifying parts of the code, which will happen in another - patch. - - src/cairo-gl-composite.c | 42 +++++++++++++++++++++--------------------- - 1 files changed, 21 insertions(+), 21 deletions(-) - -commit c6aac5d0134f1473d3867c1b6a4b40753700ffcb -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 15:42:56 2010 +0200 - - gl: Move the pre shader to the context, too - - It's required when flushing, too. - - src/cairo-gl-composite.c | 10 +++++----- - src/cairo-gl-private.h | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) - -commit 61bc3067ca5fa4aeaef537c397c37826facc7621 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 15:28:32 2010 +0200 - - gl: Store the clip region in the context - - This is necessary because we want to get rid of keeping the composite - stuff around. - - src/cairo-gl-composite.c | 15 ++++++++++----- - src/cairo-gl-device.c | 2 ++ - src/cairo-gl-private.h | 1 + - 3 files changed, 13 insertions(+), 5 deletions(-) - -commit db79880d9a836d50e9202caa5c73e22a2b6b97b3 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 13:03:12 2010 +0200 - - gl: Make gl_composite_begin() acquire the context - - Also remove the previous places for context acquisition. This completes - fixing the potential ABBA deadlock I talked about a few commits ago. - - src/cairo-gl-composite.c | 21 +++++++++++++++++---- - src/cairo-gl-glyphs.c | 7 ++++++- - src/cairo-gl-private.h | 4 ++-- - src/cairo-gl-surface.c | 26 +++++--------------------- - 4 files changed, 30 insertions(+), 28 deletions(-) - -commit 1320a168fa5b73fd42438040a4bf8ee9ad222a0e -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 12:26:49 2010 +0200 - - gl: Remove unused code - - We don't need to acquire/release the context, we're not using it. - - src/cairo-gl-glyphs.c | 11 +---------- - 1 files changed, 1 insertions(+), 10 deletions(-) - -commit 8f5c3b706b5bad6b0851a3e27752f7d1a3ca8a72 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 12:16:01 2010 +0200 - - gl: Make composite_set_clip_region not require the context - - src/cairo-gl-composite.c | 3 +-- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 3 +-- - src/cairo-gl-surface.c | 2 +- - 4 files changed, 4 insertions(+), 6 deletions(-) - -commit ac6abcbac7f79e5717c44e251135dcba8ab00b27 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 12:14:24 2010 +0200 - - gl: Make composite_set_source/mask/mask_spans not require a context - - src/cairo-gl-composite.c | 77 ++++++++++++++++++++++++---------------------- - src/cairo-gl-glyphs.c | 5 +-- - src/cairo-gl-private.h | 9 ++--- - src/cairo-gl-surface.c | 13 +++---- - 4 files changed, 51 insertions(+), 53 deletions(-) - -commit 88a70d66fcdbca7e489baa48cd145bb69c3e28e0 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 11:59:36 2010 +0200 - - gl: Add API for querying if we need GL_TEXTURE_RECTANGLE_EXT - - We need to do that querying outside of taking the lock, so we want to be - able to query the device, not the context. - - src/cairo-gl-composite.c | 11 +++++------ - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 6 ++++++ - 3 files changed, 12 insertions(+), 7 deletions(-) - -commit 9c6e1338a1c7d61b4cc84bcdc5c38573a34cd561 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 26 11:36:22 2010 +0200 - - gl: Make cairo_gl_composite_t not require a gl context anymore - - First patch in a series. - - The idea is to make all gl operations in Cairo work like this: - 1) prepare cairo_gl_composite_t - 2) acquire device - 3) begin composite operation - 4) emit vertexes - 5) end operation - 6) release device - 7) cleanup composite operation - - This both reduces the time required with the device locked, cleans the - API and more importantly avoids ABBA deadlocks, as we currently call - acquire_pattern() with the device lock held. - - src/cairo-gl-composite.c | 6 ++---- - src/cairo-gl-glyphs.c | 7 +++---- - src/cairo-gl-private.h | 6 ++---- - src/cairo-gl-surface.c | 19 ++++++++----------- - 4 files changed, 15 insertions(+), 23 deletions(-) - -commit 60f0cb9c60556f94af903dd6f9da0628a05a1f7f -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 22 18:42:44 2010 +0200 - - gl: Flush surface at the right times - - src/cairo-gl-composite.c | 2 ++ - src/cairo-gl-device.c | 2 ++ - src/cairo-gl-surface.c | 2 ++ - 3 files changed, 6 insertions(+), 0 deletions(-) - -commit ffeeae462ea0f8c7af326f3bcc66b88881bd8fdd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 6 16:50:34 2010 +0100 - - Revert "gstate: reduce a couple more operators" - - This reverts commit a85c6c1e36273d534f01ade0714b0592b6bed5ab. - - Soeren found that this introduced a regression when displaying pages in - evince, and since I'm not overly enthralled at the added complexity here - for very little gain, remove the reduction and leave it clear for a more - complete solution in the future. - - src/cairo-gstate.c | 15 +-------------- - 1 files changed, 1 insertions(+), 14 deletions(-) - -commit 44e628a6f4e6b9b21ad67b08869186a779d0db5a -Author: Makoto Kato <m_kato@ga2.so-net.ne.jp> -Date: Mon May 31 18:22:40 2010 +0900 - - openvg: fix build break - - src/cairo-vg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cc080a1e2731a42045709d789587070da944145c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 27 20:51:55 2010 +0100 - - gl: Unmap the vertex buffer prior to using in DaawArrays() - - "It is an INVALID_OPERTION error to source data from a buffer object - that is currently mapped." - - mesa is currently lax in this regard, but the Nvidia libGL conforms to - the spec and thus was causing failures. - - src/cairo-gl-composite.c | 23 ++++++++++++----------- - 1 files changed, 12 insertions(+), 11 deletions(-) - -commit b3e15bd5c307352065555c6c3ae5f0bd15b9a791 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 27 18:43:03 2010 +0100 - - gl: _cairo_set_shader_by_type() cannot return UNSUPPORTED - - So remove the superfuous test. - - src/cairo-gl-composite.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 59bd34e6a3661483f60bb01be8b406a5c38e1131 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 27 18:35:40 2010 +0100 - - gl: Check for an error device when creating surfaces. - - src/cairo-gl-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 53f086105975c1c2bd4c43a1b0613ebde3580e95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 27 18:27:53 2010 +0100 - - gl: Make _cairo_gl_shader_(init|compile) static - - Only used within _cairo_gl_shaders.c, so remove the private symbol. - - src/cairo-gl-private.h | 10 ---------- - src/cairo-gl-shaders.c | 41 +++++++++++++++++++++++++---------------- - 2 files changed, 25 insertions(+), 26 deletions(-) - -commit dd0866cdc878a0be438a117051ccc64f12f81970 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 27 17:52:11 2010 +0100 - - boilerplate: Exercise RENDER capable windows. - - Ensure that the drivers actually work when rendering to a normal window. - - boilerplate/cairo-boilerplate-xlib.c | 107 ++++++++++++++++++++++++++++++++++ - 1 files changed, 107 insertions(+), 0 deletions(-) - -commit 2dc42af9422a15f902934a53c074e4194991a9e4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 17 16:32:20 2010 +0100 - - script: Update csi-exec to match new interface. - - util/cairo-script/csi-exec.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 2f0f4ed0e2ae5657dedfe180b7be3a2496753ba8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 20 21:54:51 2010 +0100 - - freed-pool: Don't access beyond the end of the array. - - Argh. This bug has been here for quite some time and only showed itself - with a corrupt pointer on ppc32. Since the erroneous write is inside the - block, it remained undetected by valgrind. - - src/cairo-freed-pool-private.h | 8 +++++--- - src/cairo-freed-pool.c | 4 +++- - 2 files changed, 8 insertions(+), 4 deletions(-) - -commit 97b4aeba44e5f4b23b3ed417b991570b46d4736e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 20 21:54:16 2010 +0100 - - atomic: Add memory barriers if required for intel primitives - - src/cairo-atomic-private.h | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit 24e684c267404528b40fa49b55272d73bd44167d -Author: Benjamin Otte <otte@gnome.org> -Date: Thu May 20 22:37:18 2010 +0200 - - gl: spans need the dummy texture - - Thanks Eric. That took me half a day. - - src/cairo-gl-composite.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d7a564d8eed32b4417fdb4c8c5d91467e4ae1019 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 20 22:10:06 2010 +0200 - - gl: Don't set is_clear - - 1) It's wrong. - 2) The core functions set the flag correctly already. - - src/cairo-gl-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit f9cf07b126293d00df085d4fbfa337e1132e0258 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 20 16:08:38 2010 +0200 - - gl: Fix coverage passing for spans not being endian safe. - - src/cairo-gl-composite.c | 29 ++++++++++++++++------------- - src/cairo-gl-private.h | 2 +- - src/cairo-gl-surface.c | 4 ++-- - 3 files changed, 19 insertions(+), 16 deletions(-) - -commit 2a0f34c6da2eb4f10b198d04894fc1413352e041 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 20 11:23:18 2010 +0200 - - gl: Allow NONE and SPANS sampler for source, too - - src/cairo-gl-shaders.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 1586f7740ad436447ac75c6b869da7446172a63c -Author: Benjamin Otte <otte@gnome.org> -Date: Thu May 20 13:17:52 2010 +0200 - - gl: Refactor fixed function setup code - - In particular get rid of the _cairo_gl_set_tex_combine_constant_color() - function by inlining it and move common glTexEnv calls out of the - switch statement. - - src/cairo-gl-composite.c | 130 ++++++++++++++++----------------------------- - 1 files changed, 46 insertions(+), 84 deletions(-) - -commit 4889090c76bdab5e4eb887593caf5d5a34f90864 -Author: Benjamin Otte <otte@gnome.org> -Date: Thu May 20 12:13:43 2010 +0200 - - gl: set the active texture before fiddling with with glTexEnv - - fixes the fixed function pipeline - - src/cairo-gl-composite.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 3cff2da912150868390bf4b9df166c88b3dfcf2e -Author: Benjamin Otte <otte@gnome.org> -Date: Thu May 20 12:03:18 2010 +0200 - - gl: Remove unused variables - - src/cairo-gl-composite.c | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit 4c7dd1be4526c85b47f1fe1d4663e7fbec0926b1 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 22:03:18 2010 +0200 - - gl: Move vertex array setup code into the texture setup code - - src/cairo-gl-composite.c | 35 ++++++++++++++--------------------- - 1 files changed, 14 insertions(+), 21 deletions(-) - -commit d9d5976bdf333a5a7ea7707bc3076696f3c079d2 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 21:54:32 2010 +0200 - - gl: Add an assertion that a context cannot call _begin() twice - - Evert _begin() call must be followed by an _end() call to avoid any - nastiness. Just like GL. :) - - src/cairo-gl-composite.c | 2 ++ - src/cairo-gl-private.h | 7 +++++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 5b8b1fe1cb692530b40db330c3040cd85a8b6bd7 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 21:10:26 2010 +0200 - - gl: Move vertex buffer handling from setup into context - - We can only emit one vertex buffer at a time anyway. - - src/cairo-gl-composite.c | 34 ++++++++++++++++++---------------- - src/cairo-gl-private.h | 8 ++++---- - 2 files changed, 22 insertions(+), 20 deletions(-) - -commit 0d5f2eab77f055b063538dcd345a1e0db480f3bc -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 20:49:49 2010 +0200 - - gl: Actuall do fall back to fixed function paths. - - Previously we were just returning UNSUPPORTED all the time. I guess that - explains why my code got so slow... - - src/cairo-gl-composite.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit bb7ca71c1af416ca084f03089f5fe762403635dd -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 20:47:31 2010 +0200 - - gl: Don't store the shader in the composite_t anymore - - Now that we have ctx->current_shader, there's no need to keep it in the - composite setup code. - - src/cairo-gl-composite.c | 30 ++++++++++++++---------------- - src/cairo-gl-private.h | 10 ++++------ - src/cairo-gl-shaders.c | 16 ++++++---------- - 3 files changed, 24 insertions(+), 32 deletions(-) - -commit 6c477b4a945a8f8b866bb2f5e125d4a0328d05f4 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 20:10:19 2010 +0200 - - gl: Move shader checking in the TexEnv setup code - - As the previously generic setup code only contains non-shader code now, - we can check in advance that no shader is in use and do all the other - stuff without checks. - - src/cairo-gl-composite.c | 208 ++++++++++++++++++++++------------------------ - 1 files changed, 101 insertions(+), 107 deletions(-) - -commit 73262edd8201de8ab8a01e01f83af5b5d6470f9e -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 19:25:03 2010 +0200 - - gl: Move texture setup code into its own file - - This ensures textures don't need to be (re)set when doing component - alpha and running 2 shaders. - - src/cairo-gl-composite.c | 208 ++++++++++++++++++++-------------------------- - 1 files changed, 92 insertions(+), 116 deletions(-) - -commit 970c879dd897019f90b0c8ff5a18781be4935c55 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 18:34:00 2010 +0200 - - gl: Binding variables only works for the current shader - - So make the code reflect that. - - src/cairo-gl-composite.c | 27 ++++++++++++--------------- - src/cairo-gl-private.h | 6 ------ - src/cairo-gl-shaders.c | 22 ++++++++-------------- - 3 files changed, 20 insertions(+), 35 deletions(-) - -commit 065969d78f23c634ebcb2b931cbb1fe184f2cedf -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 18:21:06 2010 +0200 - - gl: Separate binding to shaders from setting operands - - That way we only need to bind to shaders when creating them, but not - everytime we switch shaders on text output. - - src/cairo-gl-composite.c | 156 +++++++++++++++++++++++----------------------- - src/cairo-gl-shaders.c | 2 +- - 2 files changed, 79 insertions(+), 79 deletions(-) - -commit c53f7778bcf274f64f801ef9ee1641a088842f60 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 16:50:57 2010 +0200 - - gl: Use the mask, not the source - - Not that we'd ever have constant color component-alpha masks, but that's - an entirely different topic. - - src/cairo-gl-composite.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 26e8e506b66022910c262da0618ef5be8c5a080e -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 13:19:56 2010 +0200 - - gl: Add _cairo_gl_surface_is_texture() - - It's more explicit then just checking surface->fb != 0 - Also, it makes improving that check easier. - - src/cairo-gl-device.c | 4 ++-- - src/cairo-gl-private.h | 6 ++++++ - src/cairo-gl-surface.c | 11 ++++++----- - 3 files changed, 14 insertions(+), 7 deletions(-) - -commit e4cb46b50015f792b0e8c7b49f3b42f2c3c0ad00 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 12:10:10 2010 +0200 - - gl: Implement texture upload to window with composite() - - Instead of custom code that does basically the same thing, use - a temporary surface and _cairo_gl_surface_composite() to upload images. - - src/cairo-gl-shaders.c | 2 +- - src/cairo-gl-surface.c | 131 +++++++++++++++++------------------------------ - 2 files changed, 49 insertions(+), 84 deletions(-) - -commit 7c8759e279f51ea722c07e4b0c70f4a49f34393d -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 11:46:12 2010 +0200 - - gl: cache the current shader in the context - - src/cairo-gl-private.h | 4 +++- - src/cairo-gl-shaders.c | 7 +++++++ - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 6864ca6c25aa8147a562d7f693a95025dde807a8 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 19 11:10:11 2010 +0200 - - gl: Move _cairo_gl_set_operator() to the file it's used in - - Also make it a private function. - - src/cairo-gl-composite.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 4 --- - src/cairo-gl-surface.c | 57 ---------------------------------------------- - 3 files changed, 57 insertions(+), 61 deletions(-) - -commit 0d2d4c59026c31da084e6797d109a230341b396d -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 21:56:55 2010 +0200 - - gl: Detect color-pattern clears of surfaces - - ... and use glClear() there. - - The common case here is a solid color and OPERATOR_OVER. - - src/cairo-gl-private.h | 3 --- - src/cairo-gl-surface.c | 38 +++++++++++++++++++++++++++++--------- - 2 files changed, 29 insertions(+), 12 deletions(-) - -commit b70eb275c4aa54f7c90a985b5de67da12ac08a30 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 21:56:18 2010 +0200 - - gl: detect image uploads and fast-path them - - src/cairo-gl-surface.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 8adbf3aa19fd9fb8200973ecd72cdebfd9a5364d -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 20:12:44 2010 +0200 - - gl: Use _cairo_gl_surface_draw_image() when caching glyphs - - src/cairo-gl-glyphs.c | 47 ++++++++--------------------------------------- - 1 files changed, 8 insertions(+), 39 deletions(-) - -commit 915aa64ef077fe3b6094d0f1c8bd87ab5acc4868 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 13:01:30 2010 +0200 - - gl: Actually check errors for _cairo_gl_composite_begin() - - src/cairo-gl-glyphs.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 0222cc7d76b0dc724630b660687f98a2460eb0b9 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 13:00:34 2010 +0200 - - gl: Get rid of _cairo_gl_composite_set_mask_texture() - - Now that the glyph cache contains real surfaces, there's no longer a - need to have a special function for it. - - src/cairo-gl-composite.c | 16 ---------------- - src/cairo-gl-glyphs.c | 15 ++++++++------- - src/cairo-gl-private.h | 6 ------ - 3 files changed, 8 insertions(+), 29 deletions(-) - -commit 208d9f2a7e1f66ff2764c41fe67f65e27279b2ab -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 12:49:59 2010 +0200 - - gl: Make glyph cache a real surface - - This has the huge advantage that we can use real surface functions on - it. - - src/cairo-gl-glyphs.c | 67 ++++++++++++++++++------------------------------ - src/cairo-gl-private.h | 3 +- - 2 files changed, 26 insertions(+), 44 deletions(-) - -commit 050117996339cfe35add1f2cd44d0e5578d4a981 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 18 12:02:54 2010 +0200 - - surface: Add _cairo_surface_release_device_reference() API - - See the API documentation for that function about its intended purpose. - - src/cairo-surface-private.h | 1 + - src/cairo-surface.c | 26 +++++++++++++++++++++++++- - src/cairoint.h | 3 +++ - 3 files changed, 29 insertions(+), 1 deletions(-) - -commit c489f67d1d1d6079f9b58b726ed42beea1dfc44e -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 20:45:42 2010 +0200 - - gl: Make a bunch of functions static - - They are no longer used outside of cairo_gl_composite_t. - - src/cairo-gl-composite.c | 8 ++++---- - src/cairo-gl-private.h | 16 ---------------- - 2 files changed, 4 insertions(+), 20 deletions(-) - -commit c8008e118a54d62690d6555c9ffabf734c39e69f -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 19:16:20 2010 +0200 - - gl: Don't name the union in cairo_gl_operand_t - - Gets rid of ultra-long variable names. - - src/cairo-gl-composite.c | 152 +++++++++++++++++++++++----------------------- - src/cairo-gl-private.h | 2 +- - 2 files changed, 77 insertions(+), 77 deletions(-) - -commit 53260148ea9abacdc510826765c1d63f486add6c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri May 14 21:04:22 2010 +0200 - - quartz: fix repeating radial gradients on 64 bits - - Quartz API uses the type CGFloat, which is double on 64 bits, - float on 32 bits architectures - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0104976dc853b60de14080a749a6f729852f1b22 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri May 14 21:03:19 2010 +0200 - - quartz: silence compiler warnings - - All the possible enum values have to be explicitly handled in switch statements. - - src/cairo-quartz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ac94a00a4d3acb36f011330b78d1311534fe90e0 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri May 14 19:33:15 2010 +0200 - - quartz: fallback for A1 images on little endian archs - - Quartz uses a bit ordering that is consistent with cairo on big - endian architectures, but isn't on little endian architectures. - - Fixes a1-mask and large-source-roi (on little endian) - - src/cairo-quartz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit f40e3b09a130a9ccbe310120fd5cfc7ad7828a4d -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu May 13 12:15:19 2010 +0200 - - quartz-font: Silence 0x0 CGContext warning - - Silence Quartz complaints about operations on empty contexts: - <Error>: CGContextSetFont: invalid context 0x0 - <Error>: CGContextSetFontSize: invalid context 0x0 - <Error>: CGContextSetTextMatrix: invalid context 0x0 - <Error>: CGContextSetAlpha: invalid context 0x0 - <Error>: CGContextShowGlyphsAtPoint: invalid context 0x0 - - src/cairo-quartz-font.c | 77 +++++++++++++++++++++++++--------------------- - 1 files changed, 42 insertions(+), 35 deletions(-) - -commit 1687e6169463947554f5476674a577e67e2c543b -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu May 13 11:54:32 2010 +0200 - - quartz-font: Conform context and antialias handling to quartz-surface - - A8 surfaces are now kAlphaOnly surfaces in quartz-font too. - Subpixel font smoothing can be enabled. - - src/cairo-quartz-font.c | 38 ++++++++++++++++++++++++++++---------- - 1 files changed, 28 insertions(+), 10 deletions(-) - -commit d68bbc0fe5706634e4c025bdcb311905b7f008e4 -Author: Benjamin Otte <otte@gnome.org> -Date: Mon May 17 20:57:08 2010 +0200 - - gl: Add missing NULL-check in non-shader code - - src/cairo-gl-composite.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 7f22372edf10f5eab53ea132d9226f6d5b49eb9a -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 14:20:17 2010 +0200 - - gl: Get rid of src and mask argument to composite_init() - - This was thought of as a way to detect self-painting, but it's better to - check that later in _begin() - when we check it. - - src/cairo-gl-composite.c | 2 -- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 2 -- - src/cairo-gl-surface.c | 9 ++++----- - 4 files changed, 5 insertions(+), 10 deletions(-) - -commit 75f15babed8409fb1eaae514411de01d57072c80 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 14:17:47 2010 +0200 - - gl: Implement fill_rectangles with composite - - Tiny performance improvement, but a lot less code. - - src/cairo-gl-surface.c | 204 ++++++++++-------------------------------------- - 1 files changed, 41 insertions(+), 163 deletions(-) - -commit e7c5b4f79fa24b75026c93bc9244115d2ee23930 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 13:56:22 2010 +0200 - - gl: make _set_mask() accept NULL - - That way, it can be used to unset the mask. - - src/cairo-gl-composite.c | 3 +++ - src/cairo-gl-surface.c | 14 ++++++-------- - 2 files changed, 9 insertions(+), 8 deletions(-) - -commit 145db7a427e594f1d68a6c0f4afe5e365e219cf0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 17 12:37:46 2010 +0100 - - gl: Check status after composite_begin - - Skip the unnecessary work in _cairo_gl_surface_composite() if we fail - to setup the GL composite operation. - - src/cairo-gl-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 8695c41e80ce932fd5dd434307b92f323a937c7c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 17 12:36:54 2010 +0100 - - gl: Throw a _cairo_error when detecting a GLerror - - This allows us to easily set an breakpoint and inspect cairo's state - when we do something illegal. - - src/cairo-gl-private.h | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 1c18ab02c8d41be8e5886cbb34aeda5099189fef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 17 11:42:26 2010 +0100 - - gl: Rename cairo_gl_shader_program_t to cairo_gl_shader_t - - And complete the move of the shaders into the cairo_gl_shader namespace. - Of particular note, the bind_*_to_shader become - _cairo_gl_shader_bind_*() and have proper types. - - src/cairo-gl-composite.c | 138 +++++++------- - src/cairo-gl-device.c | 14 +- - src/cairo-gl-private.h | 93 +++++---- - src/cairo-gl-shaders.c | 508 +++++++++++++++++++++++++-------------------- - src/cairo-gl-surface.c | 54 ++---- - 5 files changed, 424 insertions(+), 383 deletions(-) - -commit 2325d755b03958d8ead9a995c0d1d03e4f93af0c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 17 10:33:46 2010 +0100 - - gl: Pretty print the error GLenum. - - src/cairo-gl-private.h | 3 ++- - src/cairo-gl-surface.c | 19 +++++++++++++++++++ - 2 files changed, 21 insertions(+), 1 deletions(-) - -commit 7ef1bd22ded512f4fad3959796d7f40c4ddc5824 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 01:12:34 2010 +0200 - - gl: Update copyright statements - - - add 2010 Red Hat copyright for my code - - include myself as author - - update contributors list - - src/cairo-gl-composite.c | 5 ++++- - src/cairo-gl-device.c | 5 ++++- - src/cairo-gl-glyphs.c | 5 +++++ - src/cairo-gl-private.h | 6 ++++-- - src/cairo-gl-shaders.c | 8 +++++++- - src/cairo-gl-surface.c | 5 ++++- - 6 files changed, 28 insertions(+), 6 deletions(-) - -commit 0b69e51b526a609a2dc5f1d2fb9c49f240feb57b -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 00:56:21 2010 +0200 - - gl: Assert that binding values to shaders never fails - - As that would be a programming error, we can use an assert and get rid - of return values that we weren't checking anyway. - - src/cairo-gl-composite.c | 129 +++++++++++++++++++--------------------------- - src/cairo-gl-private.h | 12 ++-- - src/cairo-gl-shaders.c | 114 ++++++++++++++++------------------------- - src/cairo-gl-surface.c | 15 +++--- - 4 files changed, 111 insertions(+), 159 deletions(-) - -commit 0bb11e8f5bcdc8a6f8384197b39c2ad48eaab1cd -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 17 00:49:01 2010 +0200 - - gl: Use GL_TRIANGLES instead of GL_QUADS - - It seems to increase performance by 1-2% on average and up to 30% in - some cases (on i965). - - src/cairo-gl-composite.c | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit 2b771da47a87f86f378314bfe8033874d9444914 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 23:58:47 2010 +0200 - - xlib: ensure variable isn't uninitialized - - src/cairo-xlib-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit b768a33a602942825e5ec651ae7bafd6d5fc33ac -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 21:10:45 2010 +0200 - - gl: Set composite->has_component_alpha based on mask - - Previously it was set when initing the composite structure, but that - doesn't allow resetting it when a new mask is used. - - src/cairo-gl-composite.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 1cde4601df8a3689450e2a0e15888c53aff12983 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 21:05:16 2010 +0200 - - gl: Replace _cairo_gl_operand_init() with setters for src/mask - - Now cairo_gl_operand_t is no longer exposed outside of - cairo-gl-composite.c - - src/cairo-gl-composite.c | 34 +++++++++++++++++++++++++++++++++- - src/cairo-gl-glyphs.c | 10 +++++----- - src/cairo-gl-private.h | 25 ++++++++++++++++--------- - src/cairo-gl-surface.c | 26 +++++++++++++------------- - 4 files changed, 67 insertions(+), 28 deletions(-) - -commit 6575cb7a95e109ab39eda58603ed6a76581a41b0 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 20:39:00 2010 +0200 - - gl: Convert glyphs path to use cairo_gl_composite_t - - src/cairo-gl-composite.c | 122 +++++++++++++----- - src/cairo-gl-glyphs.c | 331 +++++---------------------------------------- - src/cairo-gl-private.h | 22 +++ - 3 files changed, 150 insertions(+), 325 deletions(-) - -commit 8937f2b4b5e4bcb8ada1e478df6a7329c0b80a5a -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 13:19:48 2010 +0200 - - gl: Require ARB_vertex_buffer_object extension unconditionally - - <anholt> we shouldn't bother with non-vbo support. there's no - justification for a driver not supporting it. - - src/cairo-gl-composite.c | 1 - - src/cairo-gl-device.c | 5 +++-- - src/cairo-gl-glyphs.c | 3 --- - src/cairo-gl-private.h | 7 ------- - src/cairo-gl-surface.c | 12 ++++-------- - 5 files changed, 7 insertions(+), 21 deletions(-) - -commit 29dfd5b488e16ec8be879b2415635df93b874afc -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 03:36:05 2010 +0200 - - gl: Remove unused variables - - src/cairo-gl-surface.c | 7 +------ - 1 files changed, 1 insertions(+), 6 deletions(-) - -commit 4144488f516214b675d25d48add8cbd83fd17025 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 03:29:04 2010 +0200 - - gl: Convert span renderer to use cairo_gl_composite_begin/end() - - Adds two new APIs to the composite API: - - _cairo_gl_composite_set_mask_spans() - Tells the composite renderer to use the color values for spans. - - _cairo_gl_composite_set_clip_region() - Tells the composite renderer to use GL_SCISSORS_TEST to clip when - drawing. This function is very unperformant, so if it can be avoided, - it probably shouldn't be used. - - src/cairo-gl-composite.c | 72 +++++++++++++- - src/cairo-gl-private.h | 10 ++ - src/cairo-gl-surface.c | 247 ++++++---------------------------------------- - 3 files changed, 110 insertions(+), 219 deletions(-) - -commit 6e81d85e3682f14e1c5dbe97dda2cc1fcd32df3a -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 03:27:28 2010 +0200 - - gl: Change _cairo_gl_composite_emit_rect() - - Two changes: - - The function now takes x1/y1,x2/y2 instead of x,y,width,height - - The function takes a color uint32_t. This will be used by spans. - - src/cairo-gl-composite.c | 27 +++++++++++++++------------ - src/cairo-gl-private.h | 9 +++++---- - src/cairo-gl-surface.c | 10 ++++++---- - 3 files changed, 26 insertions(+), 20 deletions(-) - -commit f8398cc2d83eb9ac37874f71d4f8805dbf0df412 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 02:34:18 2010 +0200 - - gl: remove unused variables from span renderer - - src/cairo-gl-surface.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit f5c5077def47b91b57dfbc8c2622b4aaf5ca8fbb -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 02:06:43 2010 +0200 - - gl: Support component alpha in gl_composite_t - - Use that to get rid of cairo_gl_surface_composite_component_alpha() - - src/cairo-gl-composite.c | 165 ++++++++++++++++++++++++++-- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 4 + - src/cairo-gl-surface.c | 280 +--------------------------------------------- - 4 files changed, 167 insertions(+), 284 deletions(-) - -commit 88c118f891ca9ba472b8acff33829de845bb507c -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 16 00:24:17 2010 +0200 - - gl: Implement _composite_emit_rect() and _composite_end() - - And use it in cairo_gl_surface_composite() - - src/cairo-gl-composite.c | 164 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 19 +++++ - src/cairo-gl-surface.c | 107 +++--------------------------- - 3 files changed, 192 insertions(+), 98 deletions(-) - -commit b96735f7b465a16182c4c8555878ba16b947e8f9 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 22:12:12 2010 +0200 - - gl: Add _cairo_gl_composite_begin() function - - This is the first step at adding the following function set: - _cairo_gl_composite_begin() - _cairo_gl_composite_emit_*() - _cairo_gl_composite_end() - which will take care of proiding a unified model for emitting vertexes - using vbos instead of the 5 different methods we currently have. - - src/cairo-gl-composite.c | 30 ++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 6 ++++++ - src/cairo-gl-surface.c | 22 +--------------------- - 3 files changed, 37 insertions(+), 21 deletions(-) - -commit 211a8b8234d24dd8e00332cb0b0e625ac1ffef58 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 21:27:58 2010 +0200 - - gl: make _cairo_operand_destroy private - - src/cairo-gl-composite.c | 2 +- - src/cairo-gl-private.h | 3 --- - 2 files changed, 1 insertions(+), 4 deletions(-) - -commit bf1060252abaa97eb5ce149f8b99055b42096c67 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 21:26:55 2010 +0200 - - gl: make show_glyphs use the cairo_composite_t API - - src/cairo-gl-glyphs.c | 17 ++++++++++------- - 1 files changed, 10 insertions(+), 7 deletions(-) - -commit 948290de12c5f451d361903f0f52e0cde5527180 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 20:33:00 2010 +0200 - - gl: Make the span renderer use the new composite APIs - - src/cairo-gl-surface.c | 32 ++++++++++++++++++++------------ - 1 files changed, 20 insertions(+), 12 deletions(-) - -commit 7ad8c3b45691ce0c8a86180bb3c1117b9a9980c0 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 20:07:44 2010 +0200 - - gl: Move composite code into own file - - This allows designing a cleaner interface for cairo_composite_t as there - will not be static functions that get called outside of the "published" - interfaces. - - src/Makefile.sources | 3 +- - src/cairo-gl-composite.c | 898 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 8 + - src/cairo-gl-surface.c | 851 +------------------------------------------- - 4 files changed, 910 insertions(+), 850 deletions(-) - -commit 3ff32b00f0f85a853163c20b101ac5dd6a07da77 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 18:20:56 2010 +0200 - - gl: cairo_gl_compsite_setup_t => cairo_gl_composite_t - - src/cairo-gl-glyphs.c | 4 ++-- - src/cairo-gl-private.h | 26 +++++++++++++------------- - src/cairo-gl-surface.c | 46 +++++++++++++++++++++++----------------------- - 3 files changed, 38 insertions(+), 38 deletions(-) - -commit c16edee26fb9f1669ee0ce1a61f0c54d802c6c7b -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 15 17:33:24 2010 +0200 - - gl: use glBlendFuncSeparate() - - This way we can treat alpha-only textures correctly and don't have to - emit different shaders for it. Also gets rid of - GL_OPERAND_TEXTURE_ALPHA. - - src/cairo-gl-glyphs.c | 9 +++------ - src/cairo-gl-private.h | 1 - - src/cairo-gl-shaders.c | 37 ------------------------------------- - src/cairo-gl-surface.c | 37 +++++++++++++------------------------ - 4 files changed, 16 insertions(+), 68 deletions(-) - -commit 4f5221a834a883262cce607d247f607d6c200363 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 21:12:37 2010 +0200 - - gl: acquire device manually in finish, as the default way will error - - We'll get CAIRO_STATUS_DEVICE_FINISHED, d'oh - - src/cairo-gl-device.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 3f6300444928d12bf4a6e2f6f2c5fec1de7dba8e -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 20:53:20 2010 +0200 - - gl: Put shaders into a cache - - This allows to grow the complexity of the shaders without enlarging the - static array to unreasonable sizes. - - The cache size of 64 is essentially random. - - src/cairo-gl-device.c | 2 + - src/cairo-gl-private.h | 8 ++- - src/cairo-gl-shaders.c | 111 ++++++++++++++++++++++++++++++++++++++++-------- - 3 files changed, 100 insertions(+), 21 deletions(-) - -commit 08b04caf52518f1672694341355b5f5418008e78 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 18:10:04 2010 +0200 - - gl: Add cairo_gl_composite_setup_init/fini() functions - - Simplifies the main code paths, and can be extended to do dest copies. - - src/cairo-gl-private.h | 13 +++++++ - src/cairo-gl-surface.c | 91 +++++++++++++++++++++++++++-------------------- - 2 files changed, 65 insertions(+), 39 deletions(-) - -commit aa14df0db5e4f236a9668ceda4e148e7d3ba0e9f -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 17:01:47 2010 +0200 - - gl: move operator check - - component alpha compositing checks the operator itself - - src/cairo-gl-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit a3ee0a7f113ed38df66580ff7e38a79759b0c933 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 16:57:32 2010 +0200 - - gl: Programmatically generate fragment shaders - - src/cairo-gl-shaders.c | 428 +++++++++++++++++++++--------------------------- - src/cairo-gl-surface.c | 6 +- - 2 files changed, 186 insertions(+), 248 deletions(-) - -commit fe43b13052f7063f880aeeebda1880a6a2097922 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 13:57:06 2010 +0200 - - gl: Automatically generate the vertex shader source - - The idea is being able to generate shaders from the given input - on-demand. This allows creating more advanced shaders, such as those - that include the destination (for self-painting and - unsupported-by-blending operator) or painting images in weird formats - (extra translation step in shader, think YUV). - - src/cairo-gl-device.c | 2 +- - src/cairo-gl-private.h | 21 +++--- - src/cairo-gl-shaders.c | 195 +++++++++++++++++++++++++++++------------------- - src/cairo-gl-surface.c | 3 +- - 4 files changed, 132 insertions(+), 89 deletions(-) - -commit 405eee07ad9a5bc325b339b8588facb905fb28f5 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 00:02:28 2010 +0200 - - gl: Get rid of cairo_gl_shader_source/mask_t - - Use the cairo_gl_operand_type_t instead. Those enums are pretty much - identical. - - src/cairo-gl-glyphs.c | 13 +++-- - src/cairo-gl-private.h | 67 ++++++++------------- - src/cairo-gl-shaders.c | 60 ++++++++++--------- - src/cairo-gl-surface.c | 153 +++++++++++++++++++++++++++++------------------- - 4 files changed, 157 insertions(+), 136 deletions(-) - -commit 5149bb87d7b547766ce6ff4976217454adbab562 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 11 21:35:13 2010 +0200 - - gl: s/_cairo_gl_set_destination/_cairo_gl_context_set_destination/ - - It's an operation on the context, so name it accordingly - - src/cairo-gl-device.c | 2 +- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 2 +- - src/cairo-gl-surface.c | 16 ++++++++-------- - 4 files changed, 11 insertions(+), 11 deletions(-) - -commit 9f34e403f38192d711304fbde4dedbaa8e15fd6e -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 11 13:15:16 2010 +0200 - - gl: Share vertex shaders - - Previously, we created a new vertex shader for every shader program we - used. Now the code shares identical vertex shaders between programs. - - src/cairo-gl-device.c | 17 ++++- - src/cairo-gl-private.h | 27 ++++++-- - src/cairo-gl-shaders.c | 179 +++++++++++++++++++++++++++-------------------- - src/cairo-gl-surface.c | 7 +-- - 4 files changed, 142 insertions(+), 88 deletions(-) - -commit 562c323ae8689907d7a62a7c2f5c10fb8d055608 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun May 16 17:47:13 2010 +0930 - - cff: Use correct glyph advance when subsetting cff fonts - - Previously the glyph advance in font units was used for the widths in - the PDF font dictionary. This only works for cff fonts that use a - [0.001 0 0 0.001 0 0] font matrix. - - src/cairo-cff-subset.c | 38 +++++++++++++++++------------- - src/cairo-pdf-surface.c | 19 ++++++++------- - src/cairo-scaled-font-subsets-private.h | 6 ++-- - 3 files changed, 34 insertions(+), 29 deletions(-) - -commit edcefa87ed0a8ff59b54ef9251182ce68f9158ba -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed May 12 23:12:55 2010 +0930 - - type1: Use correct glyph advance when subsetting type 1 fonts - - Previously the glyph advance in font units was used for the widths in - the PDF font dictionary. This only works for Type 1 fonts that use a - [0.001 0 0 0.001 0 0] font matrix. - - https://bugs.freedesktop.org/show_bug.cgi?id=28061 - - src/cairo-pdf-surface.c | 23 ++++++++++++----------- - src/cairo-scaled-font-subsets-private.h | 6 +++--- - src/cairo-type1-fallback.c | 18 +++++++++--------- - src/cairo-type1-subset.c | 6 +++--- - 4 files changed, 27 insertions(+), 26 deletions(-) - -commit 34fd094b3be54138c20ea5c4aab1d9597d056f35 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 16 10:23:30 2010 +0100 - - rtree: Actually pin the node when pinning. - - How embarrassing. - - src/cairo-rtree-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 63062511f6755af9ddd2985250465f94ebc5a3e8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 16 10:15:42 2010 +0100 - - boilerplate: Exercise manual double-buffering to a window - - Shouldn't possibly go wrong, but the mix of fbo and Window might prove - interesting. - - boilerplate/cairo-boilerplate-gl.c | 117 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 117 insertions(+), 0 deletions(-) - -commit 605be3182308ec7dfe15e9d89890c33800b1eea9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 16 10:11:02 2010 +0100 - - cairo: Missing private markup for _cairo_format_to_pixman_format - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 14d6c3e054da89e47fc82ea29a708290eefe1357 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 16 10:07:07 2010 +0100 - - configure: Include PTHREAD_CFLAGS in CAIRO_LDFLAGS - - Required for successful linking of our programs. I am not sure what the - impact this has upon other users of Cairo yet, I think we need to export - the PTHREAD_CFLAGS via cairo.pc as well. - - configure.ac | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c3df7e6d58364f883d91567757ed999ea88e10ca -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 16 09:54:04 2010 +0100 - - rtree: Replace undeclared TRUE/FALSE with 1/0 - - src/cairo-rtree-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 465ceb330eada9937945f5c4d156169167d4bf8c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun May 16 09:41:12 2010 +0200 - - test: improve copyright notices - - Conform copyright notices to a1-image-sample.c - - test/dash-offset.c | 54 ++++++++++++++++----------------------- - test/linear-gradient-extend.c | 36 +++++++++++++------------ - test/radial-gradient-extend.c | 36 +++++++++++++------------ - test/surface-pattern-operator.c | 36 +++++++++++++------------ - 4 files changed, 79 insertions(+), 83 deletions(-) - -commit e8bc25fdb21340b0a5a25f7193fd0bc5de540a50 -Author: Andrea Canciani <ranma42@valium.area51.sns.it> -Date: Fri May 14 21:40:13 2010 +0200 - - test: add linear-gradient-extend and radial-gradient-extend - - Check that constant gradient to solid color optimization are only - applied if the extents permit it. - - test/Makefile.sources | 2 + - test/linear-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ - test/linear-gradient-extend.ref.png | Bin 0 -> 371 bytes - test/radial-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ - test/radial-gradient-extend.ref.png | Bin 0 -> 466 bytes - 5 files changed, 182 insertions(+), 0 deletions(-) - -commit a9d821b7a0f582b3d1b0175adee3350c81061a94 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 14 21:06:18 2010 +0200 - - gl: gl surfaces are only similar when they share the same device - - Fixes gl-surface-source test for gl target - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 435329a70f172c8cec72831dd7a2b2cfc0496342 -Author: Richard Procter <richard.n.procter@gmail.com> -Date: Fri May 14 14:48:46 2010 -0400 - - Bug 28100 - Font option CAIRO_HINT_METRICS_OFF unhonoured on win32 - - Fix typo. Ouch! - - src/cairo-win32-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3a550eb2253588372b2c071b3c3152d5271c1aa2 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 21:17:19 2010 +0200 - - gl: Remove gradient optimizations - - These optimizations are done in cairo-gstate.c these days. - - src/cairo-gl-surface.c | 31 ------------------------------- - 1 files changed, 0 insertions(+), 31 deletions(-) - -commit 3b1c0a4bd66660780095e6016e3db451f34503a3 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 14 15:56:17 2010 +0200 - - fallback: Remove span renderer paths - - Those paths were broken, as they didn't properly translate the polygon - to the destination size. And rather than adding lots of code that allows - translation, it's easier to just delete this code. - - Note that the only user of the code was the GL backend anyway. - - src/cairo-surface-fallback.c | 67 ------------------------------------------ - 1 files changed, 0 insertions(+), 67 deletions(-) - -commit e3b2212bc5c4884eab356ae263b8318e10c379ac -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 15:14:29 2010 +0200 - - build: Fix pthread detection - - Incorporate the pthread detection code from the autoconf archive. Should - fix build on obscure archs that pretend to be UNIXy - like Mac OS X - Tiger. - - http://www.gnu.org/software/autoconf-archive/ - http://www.gnu.org/software/autoconf-archive/ax_pthread.html - - build/ax-pthread.m4 | 283 +++++++++++++++++++++++++++++++++++++++++ - build/configure.ac.system | 11 -- - configure.ac | 14 +- - util/cairo-sphinx/Makefile.am | 5 +- - util/cairo-trace/Makefile.am | 2 +- - 5 files changed, 292 insertions(+), 23 deletions(-) - -commit acfbf95a0c7620359fd917224b5b391702740190 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 14:21:21 2010 +0200 - - test: Make global variables in new test static - - It seems there's no gcc flag that warns about this. - - test/zero-mask.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit c69143e3f9c95ab3937a7efb8e4de170c4edb648 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 12 21:14:36 2010 +0200 - - gl: Don't keep a temporary surface in the device - - We get circular references that way. - If it turns out later such a cache is critical, we'll need to invent a - way to avoid circling references. For now, just pretend it's not - important. - - src/cairo-gl-glyphs.c | 36 ++++++++---------------------------- - src/cairo-gl-private.h | 1 - - 2 files changed, 8 insertions(+), 29 deletions(-) - -commit ec1ca17b71b41159ea8754d42954863b62623536 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 12:07:53 2010 +0200 - - gl: Don't create 0x0 surfaces - - We get a very annoyed libGL if we try to create 0x0 textures, so we - return an image surface instead. - - Tested by the zero-mask test. - - src/cairo-gl-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 108e3f5031fc16843197382af78af299b19ef290 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 12:01:39 2010 +0200 - - Use a solid color for 0xN and Nx0 surfaces - - This gets around the need to check for 0-sized surfaces in the backends. - - src/cairo-gstate.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 18c963824ebbb0e7054e682ecb5664a282a58552 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 11:56:22 2010 +0200 - - Make _cairo_color_equal() work for unmultiplied colors, too - - Color stop colors are unmultiplied, and we use it there. - - src/cairo-color.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 7bd8d0db1f4ac448c93d6d342726f64a0d6300e3 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 11:23:33 2010 +0200 - - image: Fix wholly unbounded fixup - - Tested by zero-mask test. - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8aa50b5a7873b8317d0593105497607dbb2fae1d -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 10:27:37 2010 +0200 - - cairo_paint_with_alpha(cr, 0.0) is only a noop when bounded by mask - - src/cairo.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ee32dfb3de035e73cb8c2073c0826daf244e3845 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu May 13 10:04:49 2010 +0200 - - test: Add a test for various zero mask operations - - test/Makefile.sources | 3 +- - test/zero-mask.c | 199 ++++++++++++++++++++++++++++++++++++++++++ - test/zero-mask.ref.png | Bin 0 -> 402 bytes - test/zero-mask.rgb24.ref.png | Bin 0 -> 382 bytes - 4 files changed, 201 insertions(+), 1 deletions(-) - -commit 986ae4232067d4f33931d98fb6324871a1025633 -Author: Owen W. Taylor <otaylor@fishsoup.net> -Date: Thu Feb 25 15:18:22 2010 -0500 - - language bindings guide: clarify mapping for cairo_pattern_create_rgb[a] - - Clarify that cairo_pattern_create_rgb() and cairo_pattern_create_rgba() - should be be overloaded as a single constructor for SolidPattern, but - instead should be static methods. - - doc/public/language-bindings.xml | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit 18b48a6ebc044c07f08bafd0abcb68c595c5746c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 13 10:00:18 2010 +0100 - - Make cairo_color_stop_t a unique type. - - Hopefully reduce the occurrence of the confusion between the - premultiplied shorts in cairo_color_t and the non-premultiplied shorts - in cairo_color_stop_t. - - The existence of the two separate types is debatable and open for - review. - - src/cairo-color.c | 4 ++-- - src/cairo-gstate.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 9 --------- - src/cairo-ps-surface.c | 32 ++------------------------------ - src/cairo-svg-surface.c | 4 ++-- - src/cairo-types-private.h | 17 ++++++++++++++++- - src/cairoint.h | 4 ++-- - 8 files changed, 26 insertions(+), 48 deletions(-) - -commit dfa2544f158930b002df74e676f3ef7aeeee1bd4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 13 09:52:39 2010 +0100 - - color: Special case comparing color stops. - - color stops are not premultiplied so we need to handle them carefully - when comparing. The next step will be to make cairo_color_stop_t a - unique type to prevent this mistake again. - - src/cairo-color.c | 30 ++++++++++++++++++++++++++++++ - src/cairo-gl-surface.c | 4 ++-- - src/cairo-gstate.c | 4 ++-- - src/cairo-pattern.c | 6 +++--- - src/cairoint.h | 4 ++++ - src/drm/cairo-drm-intel.c | 2 +- - 6 files changed, 42 insertions(+), 8 deletions(-) - -commit 4741d33cf67409a6fddbc32a5d0c8d68224cd939 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 13 09:31:10 2010 +0100 - - gstate: Don't reduce solid source and mask for SOURCE and CLEAR - - Not all operators are created equal, and this optimization breaks for - SOURCE and CLEAR where the mask operates on the clip and not the source. - - src/cairo-gstate.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ee871940ffe229ed285e618566e45c7d28c5857c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Thu May 13 01:54:39 2010 +0200 - - Revert bd672d080ca0036ef1b88d26583e6af36f541461 - on src/cairo-composite-rectangles.c - - The extent of the operation can be larger than the source if - the operator is not bounded by the source. - - Fixes clip-unbounded, operator-source, surface-pattern-operator - - src/cairo-composite-rectangles.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 0870c6fb5b39dcc04fa376123848adde2d06d2ce -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 15 20:31:24 2010 +0100 - - gcc-4.5 warnings and optimisation flags. - - build/configure.ac.warnings | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit cf0933a05aedb66b5d8999c84b935349b25dd974 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 12 10:42:14 2010 +0100 - - gallium: Refresh. - - Catch up with changes in APIs, still no substance and the integration - with winsys handles needs review. - - boilerplate/Makefile.win32.features | 8 - - build/Makefile.win32.features-h | 1 - - src/Makefile.win32.features | 8 - - src/drm/cairo-drm-gallium-surface.c | 514 +++++++++++++++++++++------------- - 4 files changed, 317 insertions(+), 214 deletions(-) - -commit bd672d080ca0036ef1b88d26583e6af36f541461 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Mar 26 19:37:08 2010 +0000 - - drm: code dump, sorry. - - Lots upon lots of tiny fixes mixed in with experimental code. :( - - boilerplate/Makefile.win32.features | 18 + - boilerplate/cairo-boilerplate-drm.c | 12 +- - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 4 + - build/configure.ac.features | 1 + - configure.ac | 13 + - src/Makefile.sources | 7 + - src/Makefile.win32.features | 22 + - src/cairo-boxes-private.h | 4 + - src/cairo-boxes.c | 31 + - src/cairo-composite-rectangles.c | 7 +- - src/cairo-drm-xr.h | 66 + - src/cairo-drm.h | 4 +- - src/cairo-fixed-private.h | 18 +- - src/cairo-freelist-private.h | 1 - - src/cairo-freelist.c | 7 +- - src/cairo-image-surface.c | 2 +- - src/cairo-list-private.h | 31 +- - src/cairoint.h | 7 + - src/drm/cairo-drm-i915-glyphs.c | 82 +- - src/drm/cairo-drm-i915-private.h | 153 ++- - src/drm/cairo-drm-i915-shader.c | 866 +++++++----- - src/drm/cairo-drm-i915-spans.c | 146 ++- - src/drm/cairo-drm-i915-surface.c | 1698 +++++++++++++++++----- - src/drm/cairo-drm-i965-glyphs.c | 36 +- - src/drm/cairo-drm-i965-private.h | 2 +- - src/drm/cairo-drm-i965-shader.c | 11 +- - src/drm/cairo-drm-i965-spans.c | 16 +- - src/drm/cairo-drm-i965-surface.c | 146 ++- - src/drm/cairo-drm-intel-debug.c | 1 + - src/drm/cairo-drm-intel-ioctl-private.h | 25 + - src/drm/cairo-drm-intel-private.h | 92 +- - src/drm/cairo-drm-intel-surface.c | 90 +- - src/drm/cairo-drm-intel.c | 530 ++++--- - src/drm/cairo-drm-private.h | 10 +- - src/drm/cairo-drm-radeon-surface.c | 60 +- - src/drm/cairo-drm-surface.c | 37 +- - src/drm/cairo-drm-xr.c | 2377 +++++++++++++++++++++++++++++++ - 38 files changed, 5323 insertions(+), 1311 deletions(-) - -commit c8fba4960339797521afbf8068fcbe62d064f5dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 15:38:04 2010 +0100 - - rtree: Remove the unused evict hook. - - src/cairo-gl-glyphs.c | 3 +-- - src/cairo-rtree-private.h | 4 +--- - src/cairo-rtree.c | 13 +------------ - src/drm/cairo-drm-i915-surface.c | 3 +-- - src/drm/cairo-drm-intel.c | 2 +- - 5 files changed, 5 insertions(+), 20 deletions(-) - -commit 2a0726337368462046ef84d9be4cf59734b39806 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 15:30:18 2010 +0100 - - rtree: defer propagating pinned nodes until eviction. - - Only during infrequent eviction do we require absolute knowledge of - which graph of nodes are in use and thus pinned. So during the common - use of querying the glyph cache, we just mark the leaf as used. Then we - need to make space for a new glyph, we move the parents of the left - nodes from the evictable list to the pinned list. - - src/cairo-rtree-private.h | 12 ++++++++++-- - src/cairo-rtree.c | 33 +++++++++++---------------------- - 2 files changed, 21 insertions(+), 24 deletions(-) - -commit cbe8fd0794adaccdf3eb15eef780a030e3d51784 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 14:56:25 2010 +0100 - - script: Avoid the expensive of the redundant memset. - - As we are about to immediately fill the entire image, allocate the - memory ourselves to avoid the redundant memset performed by pixman. - - util/cairo-script/cairo-script-operators.c | 39 ++++++++++++++++++--------- - 1 files changed, 26 insertions(+), 13 deletions(-) - -commit b9f7a4b5261b6d4e7bdbb5cc56d78d50ad1bd4a7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 14:48:36 2010 +0100 - - script: Don't hash the entire image. - - The reuse hit rate is very small, and most images are quickly - distinguished in the first few bytes... Though perhaps not for video as - in the swfdec-youtube case... - - util/cairo-script/cairo-script-operators.c | 35 +++++++++++++++++++-------- - 1 files changed, 24 insertions(+), 11 deletions(-) - -commit a85c6c1e36273d534f01ade0714b0592b6bed5ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 14:09:56 2010 +0100 - - gstate: reduce a couple more operators - - src/cairo-gstate.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit a3cb52e4037db9e565d32f85d69c364b606555e9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 13:36:18 2010 +0100 - - simplify pattern extents for translation matrices - - src/cairo-pattern.c | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) - -commit d45c7dc62d6b036bbbe85c3c1951807e055930d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 1 17:09:11 2010 +0100 - - xcb: discard glyph mask and use dst directly when possible. - - boilerplate/cairo-boilerplate-xcb.c | 12 +++-- - src/cairo-gstate.c | 18 ++++++- - src/cairo-pattern.c | 2 +- - src/cairo-xcb-surface-render.c | 85 ++++++++++++++++++++++++++++------- - 4 files changed, 92 insertions(+), 25 deletions(-) - -commit a8b611ea8eb90f190ee3a9e7999e08e2d865ac43 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Mar 27 08:23:10 2010 +0000 - - clip: Fill instead of creating intermediate surfaces. - - src/cairo-clip.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit fb53d05a69d0291fe68dfe8669b5c1f7636ede1a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 12 20:06:34 2010 +0100 - - test: Remove pthread_yield() - - I accidentally pushed this debugging left-over from when I was tracking - down a race in memfault. Remove it so that the test suite compiles on - more minimal pthread setups. - - test/pthread-same-source.c | 2 -- - test/pthread-show-text.c | 2 -- - test/pthread-similar.c | 2 -- - 3 files changed, 0 insertions(+), 6 deletions(-) - -commit cdd98dba6a62360071aebb6dbbb6be2ab6be368f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 12 19:35:15 2010 +0100 - - win32-printing: compile fix. - - Missing arg for _cairo_recording_surface_replay_region(). - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 35307fc66f649cc042ec07b7b79277d7ee5987f3 -Author: Jonathan Kew <jfkthame@gmail.com> -Date: Tue May 11 15:12:01 2010 -0400 - - win32: Grow glyph extents to account for ClearType - - Add extra pixel on each side of the glyph's black box returned by - GetGlyphOutlineW, to avoid clipping ClearType pixels. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=445087 - - src/cairo-win32-font.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit d65e8064c0bd3f2d5ad200493bfefb89aefbba55 -Author: Robert O'Callahan <robert@ocallahan.org> -Date: Tue May 11 13:59:58 2010 -0400 - - Ensure the quartz backend returns the first stop for negative positions on the gradient line of a nonrepeating linear gradient. - - I discovered a small bug in cairo-quartz gradients. If you have multiple stops - at position 0, then cairo-quartz pads with the *last* stop at position 0, - instead of the first stop at position 0. This patch fixes that. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=513395 - - src/cairo-quartz-surface.c | 24 ++++++++++++++++++++++-- - 1 files changed, 22 insertions(+), 2 deletions(-) - -commit ce27db9a558cbf4065b18aed55cc706fc0a6d128 -Author: Robert O'Callahan <robert@ocallahan.org> -Date: Tue May 11 13:59:52 2010 -0400 - - Don't repeat a Quartz gradient more times than necessary, to avoid Quartz quality problems when there are lots of repeated color stops. - - -- Add a parameter to _cairo_quartz_setup_source so we can pass down the - extents of the object we're drawing - -- Compute fill/stroke/glyph extents and pass them down in the cases we need to - (repeating/reflecting gradients) - -- Pass those extents on down to where we set up the gradients - -- Make _cairo_quartz_setup_linear_source fall back to pixman for the - degenerate case where the linear gradient vector has no length - -- In CreateRepeatingRadialGradientFunction and - CreateRepeatingLinearGradientFunction, use the object extents (or surface - extents, for the paint() case) instead of the clip box to calculate the - parameters for the gradient - -- I've changed the way CreateRepeatingLinearGradientFunction calculates the - repetition count. The new approach gives much more precise bounds on the number - of repetitions needed (and is very similar to what we do for radial gradients). - This is important because if we specify a much larger input range than we - really need for our gradient color function, Quartz samples it too coarsely - over the range we actually care about, and the gradients look bad. - - For example, suppose start = (5,0), end = (6,10), the CTM is identity and the - bounds we want to cover is (0,0)-(10,10). I think the current approach sets up - the gradient to be repeated 10 times. In fact only 3 repetitions are needed. - - Also, using 'width' here didn't look right: - - y_rep_end = (int) ceil((surface->extents.width - MAX(mstart.y, mend.y)) - / dy - - From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 - - src/cairo-quartz-surface.c | 261 ++++++++++++++++++++++++++++++-------------- - 1 files changed, 179 insertions(+), 82 deletions(-) - -commit 7b4e63d5b8bda8e9ea1f6455d779070f64f07f6f -Author: Robert O'Callahan <robert@ocallahan.org> -Date: Tue May 11 13:59:43 2010 -0400 - - Clean up Quartz gradient code by moving some local variables to static const globals. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 - - src/cairo-quartz-surface.c | 31 +++++++++++++------------------ - 1 files changed, 13 insertions(+), 18 deletions(-) - -commit 8302952dcff20a1d2de194152ace810c7056f994 -Author: Robert O'Callahan <robert@ocallahan.org> -Date: Tue May 11 13:58:10 2010 -0400 - - quartz: Don't fallback to pixman for repeating radial gradients. - - Figuring out where the outer circle should move to is tricky. I hope the - algebra in there is understandable. - - This is a nice performance improvement, probably because we avoid painting the - gradient over the entire clipBox (which is usually the entire surface). - - I tried to write reftests that compared a repeating radial gradient to a - non-repeating gradient with manually repeated stops, but it didn't work because - the rasterization was slightly different --- I'm not sure why. - - This patch also forces us to use pixman for all degenerate cases where the - circles intersect. This at least makes us consistent across platforms. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=508227 - - src/cairo-quartz-surface.c | 203 +++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 180 insertions(+), 23 deletions(-) - -commit 1bda2334b32394a821e6286fbc76617e68da3895 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 11 13:51:38 2010 +0100 - - trace: And for the bonus round... Make it compile. - - util/cairo-trace/trace.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b23f3bd20450aae764f9f9362c560b00bf68636b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 11 13:54:08 2010 +0100 - - trace: Try wrapping FT_Open_Face() - - We have to be careful to disambuigate an internal call by FreeType from - the application. - - util/cairo-trace/trace.c | 38 ++++++++++++++++++++++++++------------ - 1 files changed, 26 insertions(+), 12 deletions(-) - -commit ee446910aa1db0ca0b54791a2ef3bb24b277c9a4 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon May 10 15:06:25 2010 -0400 - - Add an additional set parantheses around the container_of macro - - The non-__GNUC__ version of the container_of macro would do wrong - when used like container_of(...)-> because '->' binds tighter - than the cast in the container_of macro. Adding an additional - set of parantheses fixes this. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e540d040bddc717f17e0e2510cffc0bc3cb41ccd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 10 13:36:53 2010 +0100 - - xcb: trivial memfault fixes. - - The first fixes required to kick-start memfault testing of the xcb - backend. - - boilerplate/cairo-boilerplate-xcb.c | 22 +++++++++++-- - src/cairo-xcb-connection-render.c | 35 ++++++++++++++++----- - src/cairo-xcb-connection.c | 57 ++++++++++++++++++++++++---------- - src/cairo-xcb-private.h | 2 +- - src/cairo-xcb-screen.c | 15 +++++---- - src/cairo-xcb-surface-core.c | 1 - - src/cairo-xcb-surface-render.c | 32 ++++++++++++++++--- - src/cairo-xcb-surface.c | 5 ++- - src/cairo-xlib-xcb-surface.c | 1 - - 9 files changed, 123 insertions(+), 47 deletions(-) - -commit 8b486db9a9d74b40df296382eb1833bc40ae791a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 10 12:45:31 2010 +0100 - - region: _cairo_region_create_in_error() - - Avoid leaks when reporting memfault associated with constructing - regions. - - src/cairo-path-fill.c | 7 +--- - src/cairo-region-private.h | 3 ++ - src/cairo-region.c | 63 ++++++++++++++++++++++++++++++++++++++----- - 3 files changed, 60 insertions(+), 13 deletions(-) - -commit 9d863cd3942c3086c24d67305f7a5892604d0eeb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 8 18:20:11 2010 +0100 - - xcb: Find the correct xcb_screen_t for faking Screen - - When choosing the xcb_screen_t to use for the xlib-xcb backing surface, - it helps if it matches the screen used to generate similar surfaces and - snapshots - otherwise we end up pulling the image back from the XServer - every time we want to use the Picture. - - src/cairo-xlib-xcb-surface.c | 23 +++++++++++++++++++++-- - 1 files changed, 21 insertions(+), 2 deletions(-) - -commit 448d3571088463fc61641badcdfdc8c0002ae12a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 8 09:59:54 2010 +0100 - - xcb: Upload images in place. - - A common operation is to store an image in a similar surface, so - construct a fast path to avoid the allocation and double-blit through a - temporary pixmap. - - src/cairo-xcb-private.h | 5 + - src/cairo-xcb-surface-render.c | 169 +++++++++++++++++++++++++++++++++++++++- - src/cairo-xcb-surface.c | 31 ++++--- - 3 files changed, 189 insertions(+), 16 deletions(-) - -commit e48cbd3b47a6e4f7c1f66b3085df41546460e477 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 8 09:56:46 2010 +0100 - - xcb: Reset picture after failed snapshot. - - Clear the local picture variable if we cannot use the snapshot so that - we are forced to create a new and valid picture. - - src/cairo-xcb-surface-render.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4e3c19833ef8631c1f1cd54870c0a86d88252886 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 21:30:13 2010 +0100 - - test: Force cairo-test-suite to return SUCCESS - - Set the CAIRO_TEST_FORCE_PASS environment variable to run through the - test suite and ignore errors. Useful for forcing distcheck to continue - past a broken test suite. - - test/cairo-test-runner.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit ad8abc01105f02a05497969b6b5ec2c8742daeb2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 21:28:58 2010 +0100 - - subsurface: Don't double apply device offset for deep subsurfaces. - - If we have a subsurface of a subsurface then the device offset has - already been applied to the extents that we use to offset the new - subsurface. - - src/cairo-surface-subsurface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit d2a250ad33dcd1a3960b07d2f0270266a3f3f106 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri May 7 20:36:33 2010 +0200 - - gl: Make the shader implementation per-context, not global - - src/cairo-gl-device.c | 8 +--- - src/cairo-gl-glyphs.c | 4 +- - src/cairo-gl-private.h | 37 ++++++++++++----- - src/cairo-gl-shaders.c | 105 +++++++++++++++++++++++++----------------------- - src/cairo-gl-surface.c | 89 +++++++++++++++++++++------------------- - 5 files changed, 131 insertions(+), 112 deletions(-) - -commit 4571055c46e82cbb6d3ab47860d63e400b338238 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 19:36:46 2010 +0200 - - gl: Print GL errors when releasing the device - - Don't scatter calls to error printing around everywhere, instead do it - in the one place where it matters. - - Also, convert the functions to macros, so we can use __FILE__ and - __LINE__ when printing a warning - - src/cairo-gl-private.h | 15 ++++++++++----- - src/cairo-gl-surface.c | 22 +--------------------- - 2 files changed, 11 insertions(+), 26 deletions(-) - -commit 59b31aeed9b3ec2a1ac6da188ef5e86d20626662 -Author: Benjamin Otte <otte@redhat.com> -Date: Sat May 8 15:09:39 2010 +0200 - - gl: Make check_span_renderer() call not require a device lock - - Note that we didn't lock the device previously, so the function was - broken. - - src/cairo-gl-device.c | 1 + - src/cairo-gl-private.h | 7 +++++++ - src/cairo-gl-surface.c | 5 +++-- - 3 files changed, 11 insertions(+), 2 deletions(-) - -commit 81f4dd65a32efae645b826b84e8382f7bf7a9b2d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 22:35:18 2010 +0100 - - cairo: Special case cairo_t with NULL_POINTER - - Avoid allocation for the potential user error of attempting to use - cairo_create(NULL). - - src/cairo.c | 24 +++++++++++++++++++++++- - 1 files changed, 23 insertions(+), 1 deletions(-) - -commit a61570a55e70040ffcf8ff3cb2c7943e71a5e2a0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 22:18:52 2010 +0100 - - test/copy-path: memfault status checks. - - test/copy-path.c | 61 +++++++++++++++++++++++++++++++++-------------------- - 1 files changed, 38 insertions(+), 23 deletions(-) - -commit e6180d1d5e29a91f1bfc20956bb017ab74fb8b8e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 22:18:10 2010 +0100 - - surface-fallback: Only destroy the clip after it has been initialized. - - More memfault detected error path errors. - - src/cairo-surface-fallback.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 01a208f7e3785254dc101f09a73943ec7cfb1d6e -Author: timeless <timeless@bemail.org> -Date: Fri May 7 10:24:49 2010 -0400 - - Remove useless null checks of a and b in _cairo_path_fixed_equal - - 'a' and 'b' are dereferenced before being checked for null. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=555706 - - src/cairo-path-fixed.c | 22 ++++++++-------------- - 1 files changed, 8 insertions(+), 14 deletions(-) - -commit 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 -Author: Jonathan Kew <jfkthame@gmail.com> -Date: Fri May 7 10:16:32 2010 -0400 - - quartz: Work around bad glyph extents returned by CoreGraphics for empty glyphs in Al Bayan font - - This resolves the problem by checking for the crazy glyph bbox result from - CoreGraphics, and replacing it with an empty rect. - - From https://bugzilla.mozilla.org/show_bug.cgi?id=534260 - - src/cairo-quartz-font.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit c5d9643417690380c102bf0b6ad195cb264d3feb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 11:24:28 2010 +0100 - - doc: regen - - doc/public/tmpl/cairo-font-face.sgml | 3 +++ - doc/public/tmpl/cairo-font-options.sgml | 4 ++++ - doc/public/tmpl/cairo-ft.sgml | 3 +++ - doc/public/tmpl/cairo-image.sgml | 5 +++++ - doc/public/tmpl/cairo-matrix.sgml | 3 +++ - doc/public/tmpl/cairo-paths.sgml | 3 +++ - doc/public/tmpl/cairo-pattern.sgml | 3 +++ - doc/public/tmpl/cairo-pdf.sgml | 3 +++ - doc/public/tmpl/cairo-png.sgml | 3 +++ - doc/public/tmpl/cairo-ps.sgml | 3 +++ - doc/public/tmpl/cairo-quartz-fonts.sgml | 3 +++ - doc/public/tmpl/cairo-quartz.sgml | 3 +++ - doc/public/tmpl/cairo-scaled-font.sgml | 3 +++ - doc/public/tmpl/cairo-status.sgml | 6 ++++++ - doc/public/tmpl/cairo-surface.sgml | 9 +++++++++ - doc/public/tmpl/cairo-svg.sgml | 3 +++ - doc/public/tmpl/cairo-text.sgml | 3 +++ - doc/public/tmpl/cairo-transforms.sgml | 3 +++ - doc/public/tmpl/cairo-types.sgml | 3 +++ - doc/public/tmpl/cairo-user-fonts.sgml | 4 ++++ - doc/public/tmpl/cairo-version.sgml | 5 +++++ - doc/public/tmpl/cairo-win32-fonts.sgml | 3 +++ - doc/public/tmpl/cairo-win32.sgml | 3 +++ - doc/public/tmpl/cairo-xlib-xrender.sgml | 3 +++ - doc/public/tmpl/cairo-xlib.sgml | 3 +++ - doc/public/tmpl/cairo.sgml | 3 +++ - 26 files changed, 93 insertions(+), 0 deletions(-) - -commit b9e9ff59348412a1f1f2c57d6185c84f77874c26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 7 11:21:50 2010 +0100 - - subsurface: Include device offset in extents - - Adjust the subsurface extents so that the user specifies the extents in - world space rather than device space. - - src/cairo-surface-subsurface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 5e3b28ffeac3fc7239c7ada6992e4794a27b0818 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu May 6 22:27:09 2010 -0400 - - Remove comma from the end of the CAIRO_PATTERN_ACQUIRE enum - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cc8442514ab15f08708ecb26f499c764a7d171f4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 21:50:16 2010 +0100 - - gl: Enable fixed-function without glsl. - - Through a very simple mistake we were triggering fallbacks after - detecting we were not able to perform the composite using GLSL -- we - were just returning the UNSUPPORTED status instead of enabling the - fixed-function path. - - src/cairo-gl-surface.c | 56 ++++++++++++++++++++++++++--------------------- - 1 files changed, 31 insertions(+), 25 deletions(-) - -commit 30d358e098353af24f16cdb7efe41f10f276f559 -Author: Metal Sonic <kidlinux96@gmail.com> -Date: Thu May 6 16:07:43 2010 -0400 - - Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" - - From https://bugzilla.mozilla.org/show_bug.cgi?id=507387 - - src/cairo-fixed-private.h | 2 +- - src/cairo-fixed-type-private.h | 2 +- - src/cairo-malloc-private.h | 2 +- - src/cairo-quartz-font.c | 2 +- - src/cairo-quartz-image-surface.c | 2 +- - src/cairo-quartz-image.h | 2 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-quartz.h | 2 +- - 8 files changed, 8 insertions(+), 8 deletions(-) - -commit 506636e19edcdb656c94f61c915c9d49829dade8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 17:21:59 2010 +0100 - - cairo: stash a number of contexts for use with NO_MUTEX - - The implementation is the same as the atomic one (bar the use of atomic - primitives to manipulate the occupancy!). - - Patch based on the original by Jeff Muizelaar. - - src/cairo.c | 33 ++++++++++++++++++++++++++++++++- - 1 files changed, 32 insertions(+), 1 deletions(-) - -commit 91dfee420c3e9d85e5cd4f2cec6dc708c0e471a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 17:03:56 2010 +0100 - - device: Reorder finalization so that user data is destroyed last. - - As the user is likely to attach the underlying resources to the device - for automatic collection upon finalization, it is important that the - user data is then destroy last (so that those resources are still - available in the surface and device cleanup routines). - - src/cairo-device.c | 9 +++++++-- - src/cairo-surface.c | 4 ++-- - 2 files changed, 9 insertions(+), 4 deletions(-) - -commit 2658d7ef5f8f7e06929f4b1cae64e5312db24ec4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 17:02:39 2010 +0100 - - test/gl-surface-source: Attach GLXContext to device user data. - - As we actually use the GLXContext to create the device, we only want to - free those resources upon the final unreference of the device (and not - the initial surface). - - test/gl-surface-source.c | 26 +++++++++++--------------- - 1 files changed, 11 insertions(+), 15 deletions(-) - -commit f5167dc2e1a13d8c4e5d66d7178a24b9b5e7ac7a -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu May 6 11:43:52 2010 -0400 - - Add an implementation of ffs() for MSVC - - src/cairo-compiler-private.h | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit a2a2bd62ff37e2642f671ca7ebf26954e1856abe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 14:39:30 2010 +0100 - - surface-fallback: Handle memfaults during clipping. - - Don't be lazy, propagate the error rather than asserting. - - src/cairo-surface-fallback.c | 26 +++++++++++++++----------- - 1 files changed, 15 insertions(+), 11 deletions(-) - -commit 2e3acee410ff127d4557ca8191625338cd225313 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 14:38:55 2010 +0100 - - test: Add gl-surface-source - - Exercise using GL sources. - - test/Makefile.am | 7 ++ - test/Makefile.sources | 3 + - test/gl-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/gl-surface-source.c | 115 ++++++++++++++++++++++++++++++++ - test/gl-surface-source.image16.ref.png | Bin 0 -> 305 bytes - test/gl-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - 6 files changed, 125 insertions(+), 0 deletions(-) - -commit 75d8550891b8b2c09200aaaa812c6c9332161cd7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 13:50:27 2010 +0100 - - test/clip-contexts: Free secondary context - - test/clip-contexts.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit bf83bf00a75343f7d1dcd15dc4eeec1b1a4b9428 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 10:53:48 2010 +0100 - - test: Add subsurface-image-repeat - - Test handling of source clipping with an image - principally to check - handling of mime types and zero-copy image snapshotting in the vector - surfaces and ensure that they work with subsurface patterns as well. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/subsurface-image-repeat.c | 70 ++++++++++++++++++++++++++ - test/subsurface-image-repeat.image16.ref.png | Bin 0 -> 776 bytes - test/subsurface-image-repeat.ref.png | Bin 0 -> 915 bytes - 5 files changed, 73 insertions(+), 0 deletions(-) - -commit 88986fdbef795c61cd60231046663d3cd80b4947 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 10:46:49 2010 +0100 - - xlib: Remove reference counting for cairo_xlib_screen_t - - The screen is owned by the cairo_xlib_display_t device, so we can - simplify and close the refleak by removing the surplus reference - counting. - - src/cairo-xlib-display.c | 84 ++++++++++----------------------------------- - src/cairo-xlib-private.h | 22 +++--------- - src/cairo-xlib-screen.c | 47 +++++-------------------- - src/cairo-xlib-surface.c | 38 ++++++--------------- - src/cairo-xlib-visual.c | 2 +- - 5 files changed, 46 insertions(+), 147 deletions(-) - -commit 632fabc77d89254e2e6915148fa870f23c2a5722 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 10:10:38 2010 +0100 - - xlib: Convert visual array to a cairo_list_t - - It's simpler and more memory efficient. - - src/cairo-xlib-private.h | 4 ++- - src/cairo-xlib-screen.c | 76 ++++++++++++++-------------------------------- - 2 files changed, 26 insertions(+), 54 deletions(-) - -commit 20d75bdadc897be238ceb4d2d02f079e469144e4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 10:03:36 2010 +0100 - - xlib: Remove screen->has_render - - Use the info from the display instead. - - src/cairo-xlib-private.h | 1 - - src/cairo-xlib-screen.c | 17 ++++------------- - 2 files changed, 4 insertions(+), 14 deletions(-) - -commit 9e0b716ecf1b27d74e63f25a055d8120d8d53309 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 09:58:46 2010 +0100 - - xlib: Remove obsolete comment, there is no race anymore - - The display lock is now held for the duration of the screen creation, so - there is no race. Remove the false comment. - - src/cairo-xlib-screen.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 62346c500a7421e30b3054fdcc07fc78a18da96e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 09:37:02 2010 +0100 - - xlib: Ensure the global display mutex is initialized before use. - - src/cairo-xlib-display.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit fb6caf08ae5ccf8f8c2c251d32fd98aacbcebdcc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 09:30:41 2010 +0100 - - image: Propagate error instead of asserting. - - Apparently we can get to this point without evaluating the clip surface, - so return the error status rather than assert. - - src/cairo-image-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 5e95c62bbb0cb28ee22af8f97267ce2da72cf47a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 6 09:09:22 2010 +0100 - - clip: Propagate failure from retrieving the previous clip surface. - - src/cairo-clip.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a6ee7aea8ac11a9e5a9b58e17e881db9666a2b24 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 10:52:39 2010 +0100 - - test: Add xlib-expose-event.image16.ref.png - - test/Makefile.am | 1 + - test/xlib-expose-event.image16.ref.png | Bin 0 -> 30332 bytes - 2 files changed, 1 insertions(+), 0 deletions(-) - -commit ded2dc8faaa3a48c84a31422a31c64595a6eaf8a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 14:44:55 2010 +0100 - - scaled-font: Pluck last glyph from the most recent page. - - In converting to cairo_list_t, it helps to preserve the semantics of - appending the page to the end of the list where it is expected to be - plucked in the event of an allocation failure. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fa937913e06bc295750538be45aa83eb42332fb4 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed May 5 21:35:11 2010 +0930 - - PS: Add missing 'q' when resetting clip path - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9c594d8b405eba09b07c0a438f5311f5c5e40313 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:28:59 2010 +0200 - - gl: Get rid of ctx variable - - The code used renderer->ctx and ctx interchangably, that was confusing. - - src/cairo-gl-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit a354f1f92a17378f42d0b703482ae2b8168c7f68 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:28:24 2010 +0200 - - gl: Another case of proper device acquiring - - This patch isn't strictly necessary, but it cleans up the code. - - src/cairo-gl-surface.c | 15 +++++++++------ - 1 files changed, 9 insertions(+), 6 deletions(-) - -commit 36210ee51444979271f7ba1cc0ac452cd30df0af -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:24:43 2010 +0200 - - gl: Get rid of another cast to cairo_gl_context_t - - src/cairo-gl-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 58b03691d379979b50d74740748b8b8523e0cd0d -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:21:23 2010 +0200 - - gl: Introduce _cairo_gl_device_has_glsl() function - - The function takes a cairo_device_t argument as it can be called on an - unacquired device. - - This is the first patch in a process to try to rid cairo-gl-surface.c of - casts from cairo_device_t to cairo_gl_context_t. As its members should - usually only be accessed when the device is locked, the only way the - cairo_gl_context_t should be acquired is using - _cairo_gl_context_acquire(). - - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 6 ++++++ - src/cairo-gl-surface.c | 9 ++++----- - 3 files changed, 11 insertions(+), 6 deletions(-) - -commit 5223b654230d3074d0bc31eb74c415e50eced365 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:07:49 2010 +0200 - - gl: Get rid of cairo_gl_surface_glfinish() from public API - - This is now done explicitly in the boilerplate code. It was not a useful - public API to begin with. - - boilerplate/cairo-boilerplate-gl.c | 17 +++++++---------- - src/cairo-gl-surface.c | 9 --------- - src/cairo-gl.h | 3 --- - 3 files changed, 7 insertions(+), 22 deletions(-) - -commit e071fa2c4f62b5ead39c6c6401f39360ea4dee1f -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:03:13 2010 +0200 - - gl: Remove unused member variable - - src/cairo-gl-private.h | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 90c64f60d853f1a6ea5febd362ef3528cc9d914b -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 12:01:59 2010 +0200 - - gl: Move device-specific code into cairo-gl-device.c - - src/Makefile.sources | 6 +- - src/cairo-gl-device.c | 205 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-surface.c | 162 -------------------------------------- - 3 files changed, 210 insertions(+), 163 deletions(-) - -commit 0ff5a18fd5623b57c7493e6b67a6b1c75af82fb3 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 11:52:40 2010 +0200 - - gl: Make _gl_set_destination() take the context as an argument - - Keeping with the API introduced for Xlib, functions that require an - acquired context take this context as the first argument. - - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 2 +- - src/cairo-gl-surface.c | 20 +++++++++----------- - 3 files changed, 11 insertions(+), 13 deletions(-) - -commit e8c5b6b1c2099fc6a49d0a082f5e884d3fbd89df -Author: Benjamin Otte <otte@redhat.com> -Date: Wed May 5 10:05:30 2010 +0200 - - Fix typo in docs - - src/cairo-array.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 53508e6e3047b4dac6d69d5d3ff2208178998fd4 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 4 19:28:45 2010 +0200 - - gl: Acquire the context before destroying it. - - src/cairo-gl-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit c46aec489722bf09cd10c52d70bb4975eb1546d9 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 4 19:28:22 2010 +0200 - - gl: acquire/release context during surface_finish() - - src/cairo-gl-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 88801aabb34328746a53d3d59d036dada7ced756 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue May 4 19:23:08 2010 +0200 - - gl: Acquire context when initing/destroying gl operands - - src/cairo-gl-glyphs.c | 17 ++++++---- - src/cairo-gl-private.h | 3 +- - src/cairo-gl-surface.c | 80 +++++++++++++++++++++++++----------------------- - 3 files changed, 54 insertions(+), 46 deletions(-) - -commit c6d7d054ca44f3849ee1ab76de9032a4eaa210fe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 10:39:49 2010 +0100 - - test: Add radial-gradient-mask - - Exercise using radial gradients as a mask. - - test/Makefile.am | 6 + - test/Makefile.sources | 2 + - test/radial-gradient-mask-source.argb32.ref.png | Bin 0 -> 116311 bytes - test/radial-gradient-mask-source.c | 111 ++++++++++++++++++++++ - test/radial-gradient-mask-source.image16.ref.png | Bin 0 -> 82800 bytes - test/radial-gradient-mask-source.rgb24.ref.png | Bin 0 -> 129093 bytes - test/radial-gradient-mask.argb32.ref.png | Bin 0 -> 116311 bytes - test/radial-gradient-mask.c | 110 +++++++++++++++++++++ - test/radial-gradient-mask.image16.ref.png | Bin 0 -> 82800 bytes - test/radial-gradient-mask.rgb24.ref.png | Bin 0 -> 129093 bytes - 10 files changed, 229 insertions(+), 0 deletions(-) - -commit 5f878f917980cde145d4c385b0c0b66336c0f454 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 10:24:14 2010 +0100 - - clip: Trivial compiler warning - - cairo-clip.c: In function ‘_cairo_clip_path_reapply_clip_path_translate’: - cairo-clip.c:446: warning: suggest parentheses around assignment used as - truth value - - src/cairo-clip.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 840dad765febf7b807bbb75e401c159a8c5c4dfe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 09:46:03 2010 +0100 - - test/mask-glyphs: Check for memfault - - test/mask-glyphs.c | 32 +++++++++++++++++++++++--------- - 1 files changed, 23 insertions(+), 9 deletions(-) - -commit ad541a1ec62e18bcaf74994affbdb0503e277f9c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 09:33:36 2010 +0100 - - clip: Propagate memfault from translating clip region - - src/cairo-clip.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 4bc54643f5cdeddf2145d28c317b55ca6b5949a5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 21:36:03 2010 +0100 - - image: Propagate failure from pixman_image_set_clip_region() - - src/cairo-image-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 9ef33a1d8c0476f4f1eeba4f26523fdeb6f7d809 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 21:35:51 2010 +0100 - - test/bitmap-font: Destroy FcPattern - - test/bitmap-font.c | 8 ++------ - 1 files changed, 2 insertions(+), 6 deletions(-) - -commit fba4cf1d94b3ab676e0b62ae3574bf1ee4e69de0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 09:22:03 2010 +0100 - - recording: Mark an empty recording surface as clear. - - src/cairo-recording-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit e5329805394c94c915e43a0040b51d5019b4a90e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 09:17:51 2010 +0100 - - recording: Avoid refcycles by always copying the command array. - - Short-term solution to avoid the refleaks and to make the test suite - happy. A more elegant solution would be to track the references and - avoid the substantial memory overhead of copying the recording surfaces. - - Thanks to Benjamin Otte for pointing out the solution to avoiding - refcycles. - - src/cairo-recording-surface-private.h | 1 - - src/cairo-recording-surface.c | 23 ++++++++++++----------- - 2 files changed, 12 insertions(+), 12 deletions(-) - -commit 6a06e0ef7b534355d0f3b4885159ffc37dbc3867 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 5 09:17:33 2010 +0100 - - test/subsurface-modify-parent: Free region. - - Minor refleak. - - test/subsurface-modify-parent.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4a46c715564c886e7434d65625fb84b5d87c0970 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:51:30 2010 +0100 - - type3: Minor tweaks to remove a redundant check. - - src/cairo-type3-glyph-surface.c | 8 ++------ - 1 files changed, 2 insertions(+), 6 deletions(-) - -commit 11531b90a2317bb1113b187d6aa9c5083f5ecaa1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:50:58 2010 +0100 - - ps: Force finish of the type3 glyph surfaces. - - src/cairo-ps-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 5155ebeaa25815124124db2599336ab2ddbe7413 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:50:27 2010 +0100 - - pdf: Assert that no other error can occur for an invertible matrix. - - src/cairo-pdf-operators.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit d9259bd06822c871a4c653f395cfc1f933caaeb7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:49:55 2010 +0100 - - paginated: Mark as clear initially. - - src/cairo-paginated-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit bc14e0e953630d47a65e701a377631e406eb080c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 14:18:33 2010 +0100 - - scaled-font: Convert to cairo_list_t - - Convert the open-coded doubly-linked list of glyph pages for a font into - the common cairo_list_t. - - src/cairo-scaled-font-private.h | 2 +- - src/cairo-scaled-font.c | 46 ++++++++++++++++++-------------------- - 2 files changed, 23 insertions(+), 25 deletions(-) - -commit 627527693c38c328fdb79058f5299609c0031029 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 13:41:41 2010 +0100 - - ps: Remove the fill stroke command - - This is not supported by PostScript, so eliminate it from the prologue. - - src/cairo-ps-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 4dd92ef2bc877eb197f096c3eb8fe74cb2e7b099 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun May 2 14:35:59 2010 +0100 - - test: Add subsurface-pad - - Round out the subsurface tests with PAD. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/subsurface-pad.c | 76 +++++++++++++++++++++++++++++++++++++++++++ - test/subsurface-pad.ref.png | Bin 0 -> 181 bytes - 4 files changed, 78 insertions(+), 0 deletions(-) - -commit 85e3cffde164a5af444639dfd182fde2448809ee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 21:09:01 2010 +0100 - - test: Add subsurface-modify-{child,parent} - - Add tests to ensure that modifications to the subsurface via the - original surface are tracked by the subsurface, i.e. that any snapshots - are detached upon modification of the parent as well as modification of - itself and vice versa. - - test/Makefile.am | 2 + - test/Makefile.sources | 2 + - test/subsurface-modify-child.c | 98 +++++++++++++++++++++++++++++++++ - test/subsurface-modify-child.ref.png | Bin 0 -> 197 bytes - test/subsurface-modify-parent.c | 77 ++++++++++++++++++++++++++ - test/subsurface-modify-parent.ref.png | Bin 0 -> 197 bytes - 6 files changed, 179 insertions(+), 0 deletions(-) - -commit 19ac81f50ba353400934bf112523b4257ad9de2f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:25:23 2010 +0100 - - scaled-font: Remove MRU cache upon detection of error. - - src/cairo-scaled-font.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 6f2d4f5b2aba9344fee9375614dfd0c6236bfd7c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 18:09:11 2010 +0100 - - image: Propagate failure from pixman_image_fill_boxes(). - - src/cairo-image-surface.c | 55 ++++++++++++++++++++++++-------------------- - 1 files changed, 30 insertions(+), 25 deletions(-) - -commit ded7be0b9ce12f8d4a84c8c9dd622d92fe347a34 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 17:01:35 2010 +0100 - - test/user-font-rescale: Use after free and check for memfault. - - test/user-font-rescale.c | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit b0052c52153376400a30dca1d67f4aca9735cc09 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 17:01:17 2010 +0100 - - test/bitmap-font: Propagate memfault - - test/bitmap-font.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 9187c7532755dda8d2677ec792162c71029fb37d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 13:18:09 2010 +0100 - - test/bitmap-font: Check for memfault error - - test/bitmap-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0fced9279227614ede6964e94ede9de49a3a3388 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 13:17:38 2010 +0100 - - test/user-font-proxy: Check we install user data on the scaled font - - test/user-font-proxy.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit 38188961b996c97d344195749b7bec8c93f9bad7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 13:17:07 2010 +0100 - - image: Check for pixman image allocation failure during glyphs - - src/cairo-image-surface.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit 4a181ebac416ec35e412ddbe9ed1392fb8b74ab7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 10:26:30 2010 +0100 - - pdf: Cleanup local reference to source on error paths. - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ba48edcd86ee1bca06b25587e56abcd2c1b19d79 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 10:26:13 2010 +0100 - - ps: Always cleanup used font subsets. - - src/cairo-ps-surface.c | 19 ++++++++----------- - 1 files changed, 8 insertions(+), 11 deletions(-) - -commit 9a0958be012e097c239260fac0dec0b1e5679028 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 10:25:48 2010 +0100 - - test: Cleanup after failed pthread_join(). - - test/pthread-same-source.c | 17 +++++++++-------- - test/pthread-show-text.c | 17 +++++++++-------- - test/pthread-similar.c | 17 +++++++++-------- - 3 files changed, 27 insertions(+), 24 deletions(-) - -commit 08b9984da9f2119cd4ed03bbd656a349b49d1f12 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 08:19:41 2010 +0100 - - image: Replace assert with error return - - It is possible to encounter an allocation failure here since we may have - tweaked the clip since the last evaluation of the clip region. - - src/cairo-image-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 2c68fcace4ad47ad09e9699e45afb514be1381f9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 20:39:34 2010 +0100 - - test: Embed the list pointer into cairo_test_t - - Reduce the amount of output printed by leak-detectors when a test - crashes. - - test/cairo-test-runner.c | 31 +++++++++++++++---------------- - test/cairo-test.h | 7 ++++--- - 2 files changed, 19 insertions(+), 19 deletions(-) - -commit 7002b824729885a9d579f677ecc665b620847480 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 4 13:52:09 2010 +0200 - - xlib: Don't delete gradients in unbounded fixup code - - The fix is ugly, but for now it works. - - src/cairo-xlib-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit af26560f258d93cc78782ddd0208128756874c11 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 19:21:59 2010 +0100 - - test: Improve memfault behaviour. - - Various minor tweaks to convert asserts into error returns and to - improve error checking on intermediate surfaces. - - boilerplate/cairo-boilerplate-svg.c | 2 +- - test/cairo-test.c | 21 +++++++++++--- - test/png.c | 34 +++++++++++++++------- - test/pthread-same-source.c | 7 +++++ - test/surface-source.c | 11 ++++++- - test/toy-font-face.c | 16 +++++++++-- - test/user-data.c | 51 ++++++++++++++++++++++++---------- - test/xlib-surface-source.c | 7 ++++- - 8 files changed, 112 insertions(+), 37 deletions(-) - -commit c549203c8d69474be4362037f702e4fb59c9929e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 19:21:18 2010 +0100 - - scaled-font: Check for an error return when retrieving the implementation - - src/cairo-scaled-font.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit c93e6f014d9678b1aea34fd7a30a1fc2f51c6347 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 19:20:42 2010 +0100 - - paginated: propagate malloc failures more cleanly. - - src/cairo-paginated-surface.c | 26 +++++++++++++------------- - 1 files changed, 13 insertions(+), 13 deletions(-) - -commit 8e9fd9c01732c3102c27c7dee50f6e494ba7cdd8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 19:20:07 2010 +0100 - - image: A few missing tests for malloc failure - - src/cairo-image-surface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit 87781ffbd914bca29b4d744fb48678ab06a07108 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 3 19:18:49 2010 +0100 - - ft: Convert an assert into an unlikely error return. - - The assert depends upon good behaviour from fontconfig, which is no - guaranteed under memfault, so return an error instead. - - src/cairo-ft-font.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 5672b7a18a34456862977a1cf678bf6575dcc3f4 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon May 3 13:13:27 2010 +0200 - - fallback: get src_x/y variables right when compositing traps - - src/cairo-image-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit c10a5a9fb0463f254fb607a2260b540256f888cc -Author: Dave Yeo <daveryeo@telus.net> -Date: Mon May 3 10:20:51 2010 +0200 - - os2: Fix get_extents() segfaulting. - - bed2701e1c89095878d549cbca8f22d84f3dda3c removed one line too much. - - src/cairo-os2-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9df81fe4d3f0ccc5632d0e84e920fe1c448bd531 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun May 2 19:59:26 2010 +0200 - - boilerplate: don't compile pdf test code when pdf is not tested - - Avoids gcc warnings when libpoppler version isn't good enough. - - boilerplate/cairo-boilerplate-pdf.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 358f57c8765f823f8e6db7629ea6ca48fcd392b8 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Apr 30 23:29:24 2010 +0200 - - image: remove useless optimization - - The optimization is done way smarter inside - _cairo_matrix_transform_bounding_box() - - src/cairo-image-surface.c | 11 +++-------- - 1 files changed, 3 insertions(+), 8 deletions(-) - -commit 94aa6d24b6d5ab4528a0b0a9b1b0c6eb7218f861 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Apr 30 23:24:41 2010 +0200 - - fallback: Create pixman image for correct rectangle - - This was most prominently shown by the a1-image-sample test, but - multiple tests exposed the problem with the xlib-fallback code. - - src/cairo-image-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 41fecf8e662c9ad2fe063754db8302f349a223ef -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Fri Apr 30 21:18:52 2010 +0200 - - [configure] Bump poppler dependency to 0.13.3 - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3294daf423e88b55aa13841dfa7c557ee9833f92 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Apr 30 20:14:54 2010 +0200 - - Create cleared surface instead of a scratch surface in clone_similar() - - A cleared surface is needed when playing back a recording surface that - has semi-transparent operations. - As this only affects surface types where scratch surfaces aren't already - cleared (ie it affected xlib but not image), the effect was only visible - for those backends. - This should not cause any performance regressions as the other backends - set surface->clear = TRUE when creating the scratch surface, so the - clear operation is effectively a no-op. - - Covered by the existing pdf-surface-source and svg-surface-source tests. - - src/cairo-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 0aeb612d2f822e8cda1f509b6a4f2995e24053fc -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Fri Apr 30 16:18:57 2010 +0200 - - [test] Update pdf reference image for text-rotate - - test/text-rotate.pdf.ref.png | Bin 16757 -> 16744 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit fe2844464721644b837816aa4dad4ead508f0b89 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Fri Apr 30 16:16:23 2010 +0200 - - [test] Update pdf reference image for surface-pattern-scale-down - - test/surface-pattern-scale-down.pdf.ref.png | Bin 1603 -> 2189 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit dba6f23318005a4cdbe7566519ce896278ea184a -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Fri Apr 30 16:11:52 2010 +0200 - - [test] Update pdf reference image for leaky-dashed-rectangle - - test/leaky-dashed-rectangle.pdf.ref.png | Bin 380 -> 377 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 6b81187ac4870311a10c024af9f30c366be785cd -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Fri Apr 30 16:05:21 2010 +0200 - - [test] Update pdf reference images for clip-operator - - test/clip-operator.pdf.argb32.ref.png | Bin 9266 -> 9437 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 5166 -> 5391 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit b485ae5b90bf72cde0c30c2350e03d1369ca6dcd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 14:14:01 2010 +0100 - - atomic: Add Andrea's copyright notice - - Note Andrea's copyright for his contribution of platform agnostic - fallbacks and the implementation for MacOS/X. - - src/cairo-atomic-private.h | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4ee5119a3467ea086efccef2907b0c576d600b79 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 13:00:05 2010 +0100 - - test: Expand pthread-show-text to cover all surfaces. - - In a similar fashion to pthread-same-source and pthread-similar, check - that the texting handling is thread-safe for all surface and font - backends. - - test/Makefile.am | 3 + - test/pthread-show-text.c | 118 ++++++++++++++++++++------------ - test/pthread-show-text.image16.ref.png | Bin 0 -> 22167 bytes - test/pthread-show-text.ps.ref.png | Bin 0 -> 16558 bytes - test/pthread-show-text.ref.png | Bin 0 -> 29885 bytes - 5 files changed, 77 insertions(+), 44 deletions(-) - -commit c6dc8ad7dc46d03899cd37fff40bd7f3a60339e2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 12:38:25 2010 +0100 - - Revert "paginated: Call surface finish explicitly on recording surface" - - This reverts commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172. - - Whilst this fixes the self-referential reference leak, it however - introduces use-after-finish into normal behaviour. Close, but not quite. - - src/cairo-paginated-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit b972669c9ac87d1c2ca922e12024ef5da394aa6b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 12:37:16 2010 +0100 - - boilerplate: Fix use after free from 3ae5723 - - If we want to access the surface during the cleanup, we must hold our - own reference to it. Make it so for the forced finish of the recording - surface. - - boilerplate/cairo-boilerplate.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 905c345df1f828551af2ab0b751388428e4dfaf6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 10:31:50 2010 +0100 - - recording: Check that we do not use a finished recording surface. - - User paranoia - as the replay is exposed to the user it is convenient to - add the finish check in the core replay function so that we gain a - paranoia check for the internal paths as well. - - src/cairo-recording-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 5fe7c5842f3589efce765b3869c1dd55367a5aba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 10:13:09 2010 +0100 - - pdf; Emit subsurface patterns natively. - - Encode subsurface patterns into the PDF stream natively (when possible), - similar to the cairo-ps backend. - - src/cairo-pdf-surface.c | 113 +++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 94 insertions(+), 19 deletions(-) - -commit 8ded35fd69ed0bbb07359c0278071a25af66571c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 14:26:21 2010 +0100 - - ps: Enable native encoding of subsurface patterns. - - Carefully handle subsurfaces of a recording surface through the analysis - and paginated surfaces so that we can generate a native pattern for the - vector backends, demonstrated by the PostScript backend. - - Nothing remarkable, just a lot of bookkeeping to track the wrapped - surface types and to apply the correct offsets when generating the - subsurface pattern. - - src/cairo-analysis-surface.c | 13 +- - src/cairo-paginated-surface.c | 1 + - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 121 +++++++++++-- - src/cairo-recording-surface-private.h | 1 + - src/cairo-recording-surface.c | 12 +- - src/cairo-surface-private.h | 4 +- - src/cairo-surface-subsurface-private.h | 4 +- - src/cairo-surface-subsurface.c | 101 +++++++--- - src/cairo-surface-wrapper-private.h | 7 +- - src/cairo-surface-wrapper.c | 314 ++++++++++++++++++++++++++------ - src/cairo-surface.c | 13 +- - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/subsurface-reflect.c | 76 ++++++++ - test/subsurface-reflect.ref.png | Bin 0 -> 210 bytes - test/subsurface-repeat.c | 8 +- - test/subsurface-similar-repeat.c | 3 + - test/subsurface.c | 7 +- - test/subsurface.image16.ref.png | Bin 1430 -> 1643 bytes - test/subsurface.ref.png | Bin 1597 -> 1811 bytes - 21 files changed, 565 insertions(+), 126 deletions(-) - -commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 21:51:29 2010 +0100 - - paginated: Call surface finish explicitly on recording surface - - During show_page() when we destroy the recording surface after emitting - the page, ensure that we actually call cairo_surface_finish() to dispose - of any self-referential reference leaks. - - src/cairo-paginated-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 3ae57234644c3756785c551beffe584f837b0273 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 21:50:22 2010 +0100 - - boilerplate: Ensure that the recording surfaces are finished. - - Be paranoid and explicitly call finish to cleanup self-referential leaks - when using paginated/recording surfaces. - - boilerplate/cairo-boilerplate-pdf.c | 5 ++++- - boilerplate/cairo-boilerplate-ps.c | 5 ++++- - boilerplate/cairo-boilerplate-svg.c | 5 ++++- - boilerplate/cairo-boilerplate.c | 10 +++++----- - 4 files changed, 17 insertions(+), 8 deletions(-) - -commit f08cc311af1248b39c3e757ef192515ed8506862 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 20:34:56 2010 +0100 - - boilerplate: Destroy the redundant image reference - - When using a script surface to record the recording surface, we replace - the local reference to the image surface. - - boilerplate/cairo-boilerplate.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ab2776c9a16134c50b48fd202263421ec0f466e7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 18:50:32 2010 +0100 - - snapshot: Attach the backend generated snapshot to the target - - Cache the result of snapshotting using the backend vfunc in the normal - manner by attaching the snapshot to the target. This should reduce - resource usage in these cases. - - src/cairo-surface-snapshot.c | 21 ++++++++++++++++++++- - 1 files changed, 20 insertions(+), 1 deletions(-) - -commit 07122f37d11eabe62bc9c81ccbf71bbe8b7a1005 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 15:19:18 2010 +0100 - - surface: Convert snapshots from an array to a double-linked list. - - Saves the memory allocation for the array, and the overhead of - maintaining the area for both insertions and more importantly deletes. - - src/cairo-recording-surface.c | 6 +-- - src/cairo-surface-private.h | 5 +- - src/cairo-surface-snapshot.c | 10 +-- - src/cairo-surface.c | 132 +++++++++++++----------------------- - src/cairo-vg-surface.c | 8 +-- - src/cairo-xcb-surface-core.c | 6 +-- - src/cairo-xcb-surface-render.c | 10 +-- - src/cairo-xcb-surface.c | 12 +-- - src/cairoint.h | 2 +- - src/drm/cairo-drm-i915-shader.c | 11 ++-- - src/drm/cairo-drm-i965-shader.c | 11 ++-- - src/drm/cairo-drm-intel-surface.c | 8 +-- - src/drm/cairo-drm-radeon-surface.c | 8 +-- - 13 files changed, 78 insertions(+), 151 deletions(-) - -commit 4cb733c28551f4a34cd4a225b8d797a55bf9b977 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 12:04:44 2010 +0100 - - image: Simplify translation of pattern matrix for composite_trapezoids() - - src/cairo-image-surface.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 3940b0e91c274de0cf2fca4b34d4025b92965c19 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 17:29:13 2010 +0100 - - subsurface: s/region/rectangle/ - - After a renewed discussion, it was pointed out that the API in Cairo was - not restrictive and by using doubles we would be consisted with the rest - of the API. Thus prompting the name change to - - cairo_surface_create_for_rectangle() - - similar to cairo_rectangle(). - - And document the public API. - - src/cairo-surface-subsurface.c | 39 +++++++++++++++++++++++----- - src/cairo.h | 10 +++--- - test/subsurface-repeat.c | 4 +- - test/subsurface-similar-repeat.c | 2 +- - test/subsurface.c | 4 +- - util/cairo-script/cairo-script-operators.c | 12 ++++---- - util/cairo-trace/trace.c | 10 +++--- - 7 files changed, 53 insertions(+), 28 deletions(-) - -commit 4b6fa8d5a78731aca80f3c8c6320e7edc845c5b5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 30 09:47:51 2010 +0100 - - test: Remove group-unaligned.*new.png - - Entirely misleading, looks like PDF is behaving the same as image and - this remnant was thus giving the wrong impression. - - test/Makefile.am | 1 - - test/group-unaligned.pdf.new.png | Bin 427 -> 0 bytes - 2 files changed, 0 insertions(+), 1 deletions(-) - -commit e3f990d84131f7bd1e64e54d02bac780b1e9f85e -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 22:34:35 2010 +0200 - - test: Update reference images for last checkin - - Both tests now pas on all backends I tested: test, image, xlib and - recording - - test/a1-traps-sample.ref.png | Bin 148 -> 120 bytes - test/unantialiased-shapes.ref.png | Bin 3969 -> 3968 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 6d36f06751377459e35afe1ac26c59d33b16c730 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 22:12:02 2010 +0200 - - image: Round down when rendering antialiased boxes - - Matches Pixman's output when going via pixman_rasterize_trapezoid() - - src/cairo-fixed-private.h | 6 ++++++ - src/cairo-image-surface.c | 9 +++++---- - 2 files changed, 11 insertions(+), 4 deletions(-) - -commit 95179a5de91b5c6f99dbccc3b6c950df58d4f2a7 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 20:45:23 2010 +0200 - - Remove excessive semicolons - - s/;;/;/ basically - - src/cairo-image-surface.c | 2 +- - src/cairo-wideint.c | 2 +- - src/drm/cairo-drm-i965-shader.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit 5d07307b691afccccbb15f773d5231669ba44f5a -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 18:20:59 2010 +0200 - - xlib: Don't modify variables that are needed later - - In the XCopyArea region code, don't modify src_x/y when they are later - used in the unbounded fixup code. - - Exposed by composite-integer-translate-source test. - - src/cairo-xlib-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 90160deb2a84f787dff46243471e37600b24799b -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 18:20:44 2010 +0200 - - xlib: Constify some function arguments - - src/cairo-xlib-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 4da71d1a01c4d4cc84b5e31cc89dd7f297b23359 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 18:11:54 2010 +0200 - - xlib: remove unused code - - src/cairo-xlib-surface.c | 12 ------------ - 1 files changed, 0 insertions(+), 12 deletions(-) - -commit 758ffadcb1d0a0478d43ca40775687a37e5920a4 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 16:54:09 2010 +0200 - - fallback: Only do _fill/compsoite_rectangles on bounded source - - For unbounded sources, these optimizations fail to take into account the - regions outside the source. - - src/cairo-surface-fallback.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit 6288ad719da898c4a75cdc6527f5a41d4c900e57 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 15:37:32 2010 +0200 - - fallback: translate extents regions properly - - The extents clip regions that were created for unbounded operators were - not translated properly. This has been changed now. - - This is a followup to 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d. - - src/cairo-surface-fallback.c | 17 ++++++++++------- - 1 files changed, 10 insertions(+), 7 deletions(-) - -commit b0760826f30f63637561b353e7eed1913036da2d -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 12:11:48 2010 +0200 - - test: Set have_result for image matches - - Causes the log to contain information about the reference imagery used. - - test/cairo-test.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 8f85c2d77cc2ca7984f9771c0096fbad798dbde8 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 29 12:09:31 2010 +0200 - - image: translate source pattern in composite_trapezoids() - - Fixes xlib fallback paths as exposed by the clip-push-group test. - - src/cairo-image-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit aa495eac5a2db9b396eb1953eb112c733d0ababc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 29 10:04:18 2010 +0100 - - atomic: Tweak for compilation x86. - - Missing definition of _cairo_atomic_ptr_get() used in the fallbacks. - - src/cairo-atomic-private.h | 27 ++++++++++++++++++++------- - src/cairo-atomic.c | 16 ++++++++-------- - 2 files changed, 28 insertions(+), 15 deletions(-) - -commit 248af38b3efa3f96225eea43f4ba5b94baff34a6 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 28 17:23:47 2010 +0200 - - atomic: Add MacOSX atomic implementation - - Enable atomic operation on MacOS X, using the functions provided by - libkern/OSAtomic.h - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - build/aclocal.cairo.m4 | 10 ++++++++++ - src/cairo-atomic-private.h | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 40 insertions(+), 0 deletions(-) - -commit 56a367a1626b2b7ec3d9e64e74f016867f294a34 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 28 19:17:10 2010 +0200 - - atomic: Correct implementation of _atomic_fetch () - - _atomic_fetch() was expected to replace the content of a slot with - NULL and return the old content, but it incorrectly returned the - previous content even if it was unable to perform the exchange - (because of conflicts with other threads accessing the pool). - - Fix suggested by Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-freed-pool-private.h | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit d66b1ca1cfda64088521581bc2bd494bff9f5d23 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 28 16:23:15 2010 +0200 - - atomic: Separate bool and old-value compare-and-exchange - - Some implementations only offer one version of compare-and-exchange, - thus we expose both through cairo-atomic, implementing what is missing - through appropriate fallbacks. - *_cmpxchg() now return a boolean (this unbreaks _cairo_atomic_uint_cmpxchg) - *_cmpxchg_return_old() return the old value - Code is updated everywhere to reflect this, by using *_cmpxchg() - wherever the returned value was only tested to check if the exchange - had really taken place. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-atomic-private.h | 68 ++++++++++++++++++++++++++++++++++++--- - src/cairo-atomic.c | 4 +- - src/cairo-freed-pool-private.h | 4 +- - src/cairo-image-surface.c | 6 ++-- - src/cairo.c | 4 +- - src/drm/cairo-drm.c | 2 +- - 6 files changed, 72 insertions(+), 16 deletions(-) - -commit a0bf424b820b404947671b56f357a2cef71640fb -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 28 15:29:32 2010 +0200 - - atomic: Remove unused function _cairo_atomic_int_set() - - _cairo_atomic_int_set() was only used in the definition of - CAIRO_REFERENCE_SET_VALUE, which was never used. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-atomic-private.h | 10 ---------- - src/cairo-atomic.c | 8 -------- - src/cairo-reference-count-private.h | 1 - - 3 files changed, 0 insertions(+), 19 deletions(-) - -commit 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 18:34:20 2010 +0200 - - fallback: Propagate extents properly - - Otherwise unbounded operators will clear the full surface. - Improves the score for the unbounded-operator test, in particular the - output for the test-fallback case. - - src/cairo-surface-fallback.c | 112 +++++++++++++++++++++++++++++------------- - 1 files changed, 78 insertions(+), 34 deletions(-) - -commit 91fd97ae7c4de23c61d481c98c9352f0639d76dd -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 20:21:37 2010 +0200 - - fallback: Pass the correct extents for unbounbded operations - - src/cairo-surface-fallback.c | 20 +++++++++++++------- - 1 files changed, 13 insertions(+), 7 deletions(-) - -commit 06e9caf86199e8261a07db6d4774628fa147728d -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 20:05:13 2010 +0200 - - image: pixman_image_fill_rectangles() => pixman_image_fill_boxes() - - src/cairo-image-surface.c | 32 ++++++++++++++++---------------- - 1 files changed, 16 insertions(+), 16 deletions(-) - -commit bc49df322770b3bd1797c0e153b97f1f296fbd1e -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 19:56:36 2010 +0200 - - pixman_image_composite => pixman_image_composite32 - - Fix up the remaining callers - - src/cairo-gl-surface.c | 12 ++++++------ - src/cairo-image-surface.c | 12 ++++++------ - 2 files changed, 12 insertions(+), 12 deletions(-) - -commit 393da364a7f26e696141c58d4fb6fdefb2ea245a -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 18:18:15 2010 +0200 - - fallback: Sanitize code that queries surface extents - - The previous code was setting extents.is_bounded, but that value has a - completely different meaning. - - src/cairo-surface-fallback.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 13914039567d5e8269fc29c51018ce172a40f2e9 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 13:05:28 2010 +0200 - - test: run xlib-expose-event test unconditionally - - test/Makefile.sources | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2ce1afa3222145e9c4f8c74a0034e0da9e93b70b -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 12:54:54 2010 +0200 - - test-suite: add image_diff_is_failure() function - - This cleans the code and fixes a boolean logic error where this check - was done manually. - - test/buffer-diff.c | 8 ++++++++ - test/buffer-diff.h | 4 ++++ - test/cairo-test-trace.c | 3 +-- - test/cairo-test.c | 9 +++------ - test/fallback-resolution.c | 3 +-- - test/xlib-surface.c | 4 ++-- - 6 files changed, 19 insertions(+), 12 deletions(-) - -commit 2a91d425088cb8a93de76f2f91f32a7f23f0aecd -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 28 12:26:29 2010 +0200 - - fallback: Fix clip_region handling in mask creation - - Fixes the xlib-expose-event test. - - src/cairo-surface-fallback.c | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -commit bb853916f3581af13cc1abff185ef5e0218f9f1e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 11:37:59 2010 +0100 - - image: Generate clear/white/black images when !HAS_ATOMIC_OPS - - Andrea reported that b74cc0f broke compilation without atomic ops. - - src/cairo-image-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 45d4c6e0b2fe62a3c6f1fdb7f359c9771111b470 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 10:01:06 2010 +0100 - - script: Replace the missing " " after pop - - I accidentally deleted the whitespace after popping the recording - surface, thus causing the scripts to be broken. - - src/cairo-script-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6a99e83c50d715ba1e47aa5c7be714a423568e57 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 09:55:20 2010 +0100 - - subsurface: Mark the image as !clear after copying. - - src/cairo-surface-subsurface.c | 22 ++++++++++++---------- - 1 files changed, 12 insertions(+), 10 deletions(-) - -commit ca3df75e8f876991f2dc9e85c9daa3fd96e826d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 09:54:56 2010 +0100 - - script: Reconstruct subsurfaces. - - src/cairo-script-surface.c | 84 ++++++++++++++++++++++++++++++------------- - 1 files changed, 58 insertions(+), 26 deletions(-) - -commit 0f0d349a400e097856e6d9863e66c0a041e65c35 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 09:54:37 2010 +0100 - - trace: Wrap cairo_surface_create_for_region() - - util/cairo-script/cairo-script-operators.c | 33 +++++++++++++++++++++++++ - util/cairo-trace/trace.c | 36 ++++++++++++++++++++++++++++ - 2 files changed, 69 insertions(+), 0 deletions(-) - -commit 80fc2a8e49aa6ab4646b14eed9a4cf348a9149b4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 28 09:50:49 2010 +0100 - - test: Expand xlib-expose-event to cover all backends - - Use a similar surface to create an equivalent backing surface for - any backend, thus enabling the test to run against any target. - - The comment about forcing fallbacks has long since been false. - - test/xlib-expose-event.c | 76 +++++---------------------------------------- - 1 files changed, 9 insertions(+), 67 deletions(-) - -commit d3c4349730be991db0c85094103c744fc2d94836 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 21:04:52 2010 +0100 - - test: Mark surfaces as finished if the data goes out of scope. - - The issue being that as the on-stack data is being referenced via a - zero-copy snapshot outside of the functions scope as the surface is only - finished and the source written long after the draw() returns. The - correct procedure is that the user must call cairo_surface_finish() - prior to any surface becoming inaccessible. In this case, this triggers - the snapshot to preserve a copy of the data whilst it is still valid. - - test/bilevel-image.c | 4 +++- - test/filter-nearest-offset.c | 1 + - test/mask-ctm.c | 4 +++- - test/mask-surface-ctm.c | 1 + - test/move-to-show-surface.c | 2 ++ - test/paint-repeat.c | 1 + - test/paint-source-alpha.c | 1 + - test/paint-with-alpha.c | 1 + - test/rgb24-ignore-alpha.c | 1 + - test/scale-down-source-surface-paint.c | 1 + - test/scale-source-surface-paint.c | 1 + - test/set-source.c | 1 + - test/smask-image-mask.c | 4 +++- - test/smask.c | 4 +++- - test/source-surface-scale-paint.c | 1 + - test/translate-show-surface.c | 1 + - test/zero-alpha.c | 1 + - 17 files changed, 26 insertions(+), 4 deletions(-) - -commit a5f54e48e3136076f3c8c60fc068f6a2105d9a33 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 21:05:22 2010 +0100 - - snapshot: The snapshot masquerades as the target surface type. - - Not wholly convinced this is a good idea, but it matches the behaviour - of the other internal surface types. - - src/cairo-surface-snapshot.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4a678afdf73d6f7b2b8a532ac7024976702c8aac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 18:57:56 2010 +0100 - - snapshot: Simply memcpy if the cloned image matches the original. - - src/cairo-surface-snapshot.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit b74cc0f6d5b71295c70d4c29e24ab252175f9a5b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 18:57:00 2010 +0100 - - image: Convert 1x1 samples into solid colors. - - If the sampled extents of the operation on an image surface is just a - single pixel, we can safely convert to a solid color. - - src/cairo-image-surface.c | 161 ++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 136 insertions(+), 25 deletions(-) - -commit f5cf131a9d8984bd6b3403396beed2ffbc26bded -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 18:56:23 2010 +0100 - - surface: skip OVER is the source is clear. - - If the source has no alpha, the OVER operation becomes DST, i.e. a - no-op. - - src/cairo-surface.c | 24 ++++++++++++++++++++++++ - 1 files changed, 24 insertions(+), 0 deletions(-) - -commit 453b1cba11f71694cfe0c3d934ac1f5aabda67fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 16:47:31 2010 +0100 - - test: Update image ref images, and used fonts in README - - test/Makefile.am | 2 +- - test/README | 6 +++--- - test/finer-grained-fallbacks.argb32.ref.png | Bin 0 -> 1068 bytes - test/finer-grained-fallbacks.ref.png | Bin 1070 -> 0 bytes - test/finer-grained-fallbacks.rgb24.ref.png | Bin 839 -> 837 bytes - test/ft-text-vertical-layout-type1.ref.png | Bin 3644 -> 3591 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 3616 bytes - test/mask-glyphs.ref.png | Bin 1189352 -> 1189351 bytes - test/smask-text.ref.png | Bin 1874 -> 1672 bytes - test/smask.ref.png | Bin 3423 -> 3396 bytes - 10 files changed, 4 insertions(+), 4 deletions(-) - -commit 70656bba81e01eaf7b48817b2ca16fdf6d0b4bd5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 14:19:22 2010 +0100 - - test: Add image16 refs - - test/Makefile.am | 144 ++++++++++++++++++++ - test/big-line.image16.ref.png | Bin 0 -> 988 bytes - test/bug-bo-rectangular.image16.ref.png | Bin 0 -> 955 bytes - test/caps-joins-alpha.image16.ref.png | Bin 0 -> 2268 bytes - test/caps-joins-curve.image16.ref.png | Bin 0 -> 4928 bytes - test/caps-joins.image16.ref.png | Bin 0 -> 2587 bytes - test/caps-sub-paths.image16.ref.png | Bin 0 -> 171 bytes - test/caps.image16.ref.png | Bin 0 -> 1936 bytes - test/clear-source.image16.ref.png | Bin 0 -> 909 bytes - test/clip-disjoint.image16.ref.png | Bin 0 -> 3886 bytes - test/clip-fill-no-op.image16.ref.png | Bin 0 -> 153 bytes - test/clip-fill-rule.image16.ref.png | Bin 0 -> 356 bytes - test/clip-fill-unbounded.image16.ref.png | Bin 0 -> 1204 bytes - test/clip-fill.image16.ref.png | Bin 0 -> 904 bytes - test/clip-image.image16.ref.png | Bin 0 -> 2032 bytes - test/clip-operator.image16.ref.png | Bin 0 -> 3131 bytes - test/clip-push-group.image16.ref.png | Bin 0 -> 159 bytes - test/clip-shape.image16.ref.png | Bin 0 -> 2488 bytes - test/clip-stroke-no-op.image16.ref.png | Bin 0 -> 153 bytes - test/clip-stroke-unbounded.image16.ref.png | Bin 0 -> 1255 bytes - test/clip-stroke.image16.ref.png | Bin 0 -> 1308 bytes - test/clip-text.image16.ref.png | Bin 0 -> 811 bytes - test/clip-twice.image16.ref.png | Bin 0 -> 1069 bytes - test/clipped-group.image16.ref.png | Bin 0 -> 281 bytes - test/clipped-surface.image16.ref.png | Bin 0 -> 296 bytes - test/close-path-current-point.image16.ref.png | Bin 0 -> 1804 bytes - ...omposite-integer-translate-over.image16.ref.png | Bin 0 -> 11570 bytes - ...posite-integer-translate-source.image16.ref.png | Bin 0 -> 11570 bytes - test/copy-path.image16.ref.png | Bin 0 -> 556 bytes - test/culled-glyphs.image16.ref.png | Bin 0 -> 426 bytes - test/dash-caps-joins.image16.ref.png | Bin 0 -> 4491 bytes - test/dash-curve.image16.ref.png | Bin 0 -> 32445 bytes - test/dash-scale.image16.ref.png | Bin 0 -> 7748 bytes - test/dash-state.image16.ref.png | Bin 0 -> 7910 bytes - test/degenerate-arc.image16.ref.png | Bin 0 -> 592 bytes - test/degenerate-arcs.image16.ref.png | Bin 0 -> 120 bytes - test/degenerate-curve-to.image16.ref.png | Bin 0 -> 278 bytes - test/degenerate-pen.image16.ref.png | Bin 0 -> 954 bytes - test/degenerate-rel-curve-to.image16.ref.png | Bin 0 -> 279 bytes - test/extend-pad-border.image16.ref.png | Bin 0 -> 446 bytes - test/extend-reflect-similar.image16.ref.png | Bin 0 -> 99786 bytes - test/extend-reflect.image16.ref.png | Bin 0 -> 99786 bytes - test/extend-repeat-similar.image16.ref.png | Bin 0 -> 83738 bytes - test/extend-repeat.image16.ref.png | Bin 0 -> 83738 bytes - test/extended-blend-alpha.image16.ref.png | Bin 0 -> 4626 bytes - test/extended-blend.image16.ref.png | Bin 0 -> 4145 bytes - test/fill-alpha-pattern.image16.ref.png | Bin 0 -> 3380 bytes - test/fill-alpha.image16.ref.png | Bin 0 -> 2145 bytes - test/fill-and-stroke-alpha-add.image16.ref.png | Bin 0 -> 536 bytes - test/fill-and-stroke-alpha.image16.ref.png | Bin 0 -> 470 bytes - test/fill-and-stroke.image16.ref.png | Bin 0 -> 251 bytes - test/fill-degenerate-sort-order.image16.ref.png | Bin 0 -> 1753 bytes - test/fill-image.image16.ref.png | Bin 0 -> 1163 bytes - test/fill-rule.image16.ref.png | Bin 0 -> 1625 bytes - test/filter-bilinear-extents.image16.ref.png | Bin 0 -> 895 bytes - test/filter-nearest-transformed.image16.ref.png | Bin 0 -> 418 bytes - test/finer-grained-fallbacks.image16.ref.png | Bin 0 -> 862 bytes - test/font-matrix-translation.image16.ref.png | Bin 0 -> 852 bytes - test/ft-show-glyphs-positioning.image16.ref.png | Bin 0 -> 2772 bytes - test/ft-show-glyphs-table.image16.ref.png | Bin 0 -> 8052 bytes - test/ft-text-vertical-layout-type1.image16.ref.png | Bin 0 -> 3072 bytes - test/ft-text-vertical-layout-type3.image16.ref.png | Bin 0 -> 3141 bytes - test/glyph-cache-pressure.image16.ref.png | Bin 0 -> 2453 bytes - test/group-clip.image16.ref.png | Bin 0 -> 193 bytes - test/group-unaligned.image16.ref.png | Bin 0 -> 395 bytes - test/huge-linear.image16.ref.png | Bin 0 -> 1542 bytes - test/huge-radial.image16.ref.png | Bin 0 -> 17893 bytes - test/image-surface-source.image16.ref.png | Bin 0 -> 305 bytes - test/joins.image16.ref.png | Bin 0 -> 5858 bytes - test/large-font.image16.ref.png | Bin 0 -> 5713 bytes - test/large-twin-antialias-mixed.image16.ref.png | Bin 0 -> 14398 bytes - test/leaky-dashed-rectangle.image16.ref.png | Bin 0 -> 367 bytes - test/leaky-dashed-stroke.image16.ref.png | Bin 0 -> 8089 bytes - test/leaky-polygon.image16.ref.png | Bin 0 -> 329 bytes - test/line-width-scale.image16.ref.png | Bin 0 -> 4721 bytes - test/linear-gradient-reflect.image16.ref.png | Bin 0 -> 190 bytes - test/linear-gradient-subset.image16.ref.png | Bin 0 -> 791 bytes - test/linear-gradient.image16.ref.png | Bin 0 -> 941 bytes - test/linear-uniform.image16.ref.png | Bin 0 -> 131 bytes - test/long-dashed-lines.image16.ref.png | Bin 0 -> 1974 bytes - test/mask-alpha.image16.ref.png | Bin 0 -> 560 bytes - test/mask-glyphs.image16.ref.png | Bin 0 -> 1053144 bytes - test/mask-transformed-image.image16.ref.png | Bin 0 -> 2748 bytes - test/mask-transformed-similar.image16.ref.png | Bin 0 -> 2748 bytes - test/mask.image16.ref.png | Bin 0 -> 5533 bytes - test/operator-alpha-alpha.image16.ref.png | Bin 0 -> 4140 bytes - test/operator-source.image16.ref.png | Bin 0 -> 2756 bytes - test/over-around-source.image16.ref.png | Bin 0 -> 491 bytes - test/paint-source-alpha.image16.ref.png | Bin 0 -> 253 bytes - test/paint-with-alpha.image16.ref.png | Bin 0 -> 253 bytes - test/path-append.image16.ref.png | Bin 0 -> 5252 bytes - test/path-stroke-twice.image16.ref.png | Bin 0 -> 210 bytes - test/pdf-surface-source.image16.ref.png | Bin 0 -> 305 bytes - test/ps-surface-source.image16.ref.png | Bin 0 -> 305 bytes - test/pthread-same-source.image16.ref.png | Bin 0 -> 1007 bytes - test/push-group-color.image16.ref.png | Bin 0 -> 2277 bytes - test/push-group.image16.ref.png | Bin 0 -> 2286 bytes - test/radial-gradient-source.image16.ref.png | Bin 0 -> 132037 bytes - test/radial-gradient.image16.ref.png | Bin 0 -> 202415 bytes - .../random-intersections-curves-eo.image16.ref.png | Bin 0 -> 181565 bytes - .../random-intersections-curves-nz.image16.ref.png | Bin 0 -> 204090 bytes - test/random-intersections-eo.image16.ref.png | Bin 0 -> 97747 bytes - test/random-intersections-nonzero.image16.ref.png | Bin 0 -> 107644 bytes - test/recording-surface-pattern.image16.ref.png | Bin 0 -> 2856 bytes - test/reflected-stroke.image16.ref.png | Bin 0 -> 4254 bytes - test/rotated-clip.image16.ref.png | Bin 0 -> 3336 bytes - test/rounded-rectangle-fill.image16.ref.png | Bin 0 -> 730 bytes - test/rounded-rectangle-stroke.image16.ref.png | Bin 0 -> 732 bytes - test/scale-offset-image.image16.ref.png | Bin 0 -> 7793 bytes - test/scale-offset-similar.image16.ref.png | Bin 0 -> 7793 bytes - test/select-font-face.image16.ref.png | Bin 0 -> 1962 bytes - test/show-text-current-point.image16.ref.png | Bin 0 -> 1932 bytes - test/smask-fill.image16.ref.png | Bin 0 -> 925 bytes - test/smask-mask.image16.ref.png | Bin 0 -> 1358 bytes - test/smask-paint.image16.ref.png | Bin 0 -> 1469 bytes - test/smask-stroke.image16.ref.png | Bin 0 -> 1330 bytes - test/smask-text.image16.ref.png | Bin 0 -> 1206 bytes - test/smask.image16.ref.png | Bin 0 -> 2213 bytes - test/spline-decomposition.image16.ref.png | Bin 0 -> 14064 bytes - test/stroke-ctm-caps.image16.ref.png | Bin 0 -> 908 bytes - test/stroke-image.image16.ref.png | Bin 0 -> 1167 bytes - test/subsurface.image16.ref.png | Bin 0 -> 1430 bytes - test/surface-pattern-operator.image16.ref.png | Bin 0 -> 1977 bytes - test/surface-pattern-scale-down.image16.ref.png | Bin 0 -> 1313 bytes - test/surface-pattern-scale-up.image16.ref.png | Bin 0 -> 3864 bytes - test/surface-pattern.image16.ref.png | Bin 0 -> 11870 bytes - test/svg-surface-source.image16.ref.png | Bin 0 -> 305 bytes - test/text-antialias-gray.image16.ref.png | Bin 0 -> 895 bytes - test/text-antialias-subpixel.image16.ref.png | Bin 0 -> 866 bytes - test/text-glyph-range.image16.ref.png | Bin 0 -> 1731 bytes - test/text-rotate.image16.ref.png | Bin 0 -> 12599 bytes - test/text-transform.image16.ref.png | Bin 0 -> 4469 bytes - test/transforms.image16.ref.png | Bin 0 -> 326 bytes - test/trap-clip.image16.ref.png | Bin 0 -> 4344 bytes - test/twin-antialias-gray.image16.ref.png | Bin 0 -> 3005 bytes - test/twin-antialias-mixed.image16.ref.png | Bin 0 -> 2049 bytes - test/twin-antialias-subpixel.image16.ref.png | Bin 0 -> 3005 bytes - test/twin.image16.ref.png | Bin 0 -> 3005 bytes - test/unbounded-operator.image16.ref.png | Bin 0 -> 1276 bytes - test/user-font-mask.image16.ref.png | Bin 0 -> 4948 bytes - test/user-font-proxy.image16.ref.png | Bin 0 -> 14460 bytes - test/user-font-rescale.image16.ref.png | Bin 0 -> 12590 bytes - test/user-font.image16.ref.png | Bin 0 -> 5814 bytes - test/xcomposite-projection.image16.ref.png | Bin 0 -> 1000 bytes - test/xlib-surface-source.image16.ref.png | Bin 0 -> 305 bytes - 145 files changed, 144 insertions(+), 0 deletions(-) - -commit ebe6f2ac6988991afde0d685bea9f207ed3360d8 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Apr 27 10:59:09 2010 +0200 - - quartz: Assert success of path creation - - Path creation can only fail because of the callbacks, but in quartz - they all return CAIRO_STATUS_SUCCESS. Therefore we can just assert - that path creation was successful and simplify calling functions - (as they don't have to handle potential errors anymore). - - src/cairo-quartz-surface.c | 35 +++++++++++++++-------------------- - 1 files changed, 15 insertions(+), 20 deletions(-) - -commit f67b6009278ef3dfe91ddbffb989dcfeed174352 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Apr 4 11:50:41 2010 +0200 - - quartz: Simplify path creation - - If paths are created before changing the ctm (when stroking) no - multiplication is needed in the path construction code. - - src/cairo-quartz-surface.c | 60 +++++++------------------------------------ - 1 files changed, 10 insertions(+), 50 deletions(-) - -commit 3b2ceff0502ba409c161e497ebe015e0a0a88847 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 7 18:34:25 2010 +0200 - - quartz: Stroke without ctm_inverse multiplication - - If the CTM is not changed before creating the path, no multiplication - needs to be made between points and the inverse of the CTM. - - src/cairo-quartz-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 514d366cde689f8200b049834bebbd421d5d8bcb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 27 11:07:09 2010 +0100 - - snapshot: propagate status on finish - - src/cairo-surface-snapshot.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit a505104013a1db0c8b1092c8a1848d7f0b02e6bc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 26 20:22:13 2010 +0100 - - image: Compute sample extents - - In order to reuse the original image as the pixman pattern, then the - entire operation must be wholly contained within the extents of the - image (including subsurfaces) and be reducible to an untransformed - REPEAT_NONE. - - src/cairo-image-surface.c | 72 +++++++++++++++++++++++++++++--------------- - src/cairo-pattern.c | 2 +- - src/cairoint.h | 4 ++ - 3 files changed, 52 insertions(+), 26 deletions(-) - -commit b8a7f8621a84083735d0e2c8748f5fa2b7f4b36a -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Apr 27 10:17:23 2010 +0200 - - Update FSF address - - I updated the Free Software Foundation address using the following script. - - for i in $(git grep Temple | cut -d: -f1 ) - do - sed -e 's/59 Temple Place[, -]* Suite 330, Boston, MA *02111-1307[, ]* USA/51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA/' -i "$i" - done - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=21356 - - COPYING-LGPL-2.1 | 4 ++-- - boilerplate/cairo-boilerplate-drm.c | 2 +- - boilerplate/cairo-boilerplate-gl.c | 2 +- - boilerplate/cairo-boilerplate-qt.cpp | 2 +- - boilerplate/cairo-boilerplate-vg.c | 2 +- - build/aclocal.pkg.m4 | 2 +- - doc/tutorial/src/include/cairo-tutorial-gtk.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-pdf.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-png.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-xlib.h | 2 +- - doc/tutorial/src/include/cairo-tutorial.h | 2 +- - src/cairo-analysis-surface-private.h | 2 +- - src/cairo-analysis-surface.c | 2 +- - src/cairo-arc-private.h | 2 +- - src/cairo-arc.c | 2 +- - src/cairo-array.c | 2 +- - src/cairo-atomic-private.h | 2 +- - src/cairo-atomic.c | 2 +- - src/cairo-base64-stream.c | 2 +- - src/cairo-base85-stream.c | 2 +- - src/cairo-bentley-ottmann-rectangular.c | 2 +- - src/cairo-bentley-ottmann-rectilinear.c | 2 +- - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-beos-surface.cpp | 2 +- - src/cairo-beos.h | 2 +- - src/cairo-botor-scan-converter.c | 2 +- - src/cairo-boxes-private.h | 2 +- - src/cairo-boxes.c | 2 +- - src/cairo-cache-private.h | 2 +- - src/cairo-cache.c | 2 +- - src/cairo-cff-subset.c | 2 +- - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 2 +- - src/cairo-color.c | 2 +- - src/cairo-combsort-private.h | 2 +- - src/cairo-compiler-private.h | 2 +- - src/cairo-composite-rectangles-private.h | 2 +- - src/cairo-composite-rectangles.c | 2 +- - src/cairo-debug.c | 2 +- - src/cairo-deflate-stream.c | 2 +- - src/cairo-deprecated.h | 2 +- - src/cairo-device-private.h | 2 +- - src/cairo-device.c | 2 +- - src/cairo-directfb-surface.c | 2 +- - src/cairo-directfb.h | 2 +- - src/cairo-drm.h | 2 +- - src/cairo-egl-context.c | 2 +- - src/cairo-error-private.h | 2 +- - src/cairo-fixed-private.h | 2 +- - src/cairo-fixed-type-private.h | 2 +- - src/cairo-fixed.c | 2 +- - src/cairo-font-face-twin.c | 2 +- - src/cairo-font-face.c | 2 +- - src/cairo-font-options.c | 2 +- - src/cairo-freed-pool-private.h | 2 +- - src/cairo-freed-pool.c | 2 +- - src/cairo-ft-font.c | 2 +- - src/cairo-ft-private.h | 2 +- - src/cairo-ft.h | 2 +- - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 2 +- - src/cairo-gl-shaders.c | 2 +- - src/cairo-gl-surface.c | 2 +- - src/cairo-gl.h | 2 +- - src/cairo-glx-context.c | 2 +- - src/cairo-gstate-private.h | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-hash-private.h | 2 +- - src/cairo-hash.c | 2 +- - src/cairo-hull.c | 2 +- - src/cairo-image-info-private.h | 2 +- - src/cairo-image-info.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-list-private.h | 2 +- - src/cairo-lzw.c | 2 +- - src/cairo-malloc-private.h | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-misc.c | 2 +- - src/cairo-mutex-impl-private.h | 2 +- - src/cairo-mutex-list-private.h | 2 +- - src/cairo-mutex-private.h | 2 +- - src/cairo-mutex-type-private.h | 2 +- - src/cairo-mutex.c | 2 +- - src/cairo-os2-private.h | 2 +- - src/cairo-os2-surface.c | 2 +- - src/cairo-os2.h | 2 +- - src/cairo-output-stream-private.h | 2 +- - src/cairo-output-stream.c | 2 +- - src/cairo-paginated-private.h | 2 +- - src/cairo-paginated-surface-private.h | 2 +- - src/cairo-paginated-surface.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path-fixed-private.h | 2 +- - src/cairo-path-fixed.c | 2 +- - src/cairo-path-in-fill.c | 2 +- - src/cairo-path-private.h | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo-pdf-operators-private.h | 2 +- - src/cairo-pdf-operators.c | 2 +- - src/cairo-pdf-surface-private.h | 2 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-pdf.h | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-png.c | 2 +- - src/cairo-polygon.c | 2 +- - src/cairo-private.h | 2 +- - src/cairo-ps-surface-private.h | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-ps.h | 2 +- - src/cairo-qt-surface.cpp | 2 +- - src/cairo-qt.h | 2 +- - src/cairo-quartz-font.c | 2 +- - src/cairo-quartz-image-surface.c | 2 +- - src/cairo-quartz-image.h | 2 +- - src/cairo-quartz-private.h | 2 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-quartz.h | 2 +- - src/cairo-recording-surface-private.h | 2 +- - src/cairo-recording-surface.c | 2 +- - src/cairo-rectangle.c | 2 +- - src/cairo-rectangular-scan-converter.c | 2 +- - src/cairo-reference-count-private.h | 2 +- - src/cairo-region-private.h | 2 +- - src/cairo-region.c | 2 +- - src/cairo-rtree-private.h | 2 +- - src/cairo-rtree.c | 2 +- - src/cairo-scaled-font-private.h | 2 +- - src/cairo-scaled-font-subsets-private.h | 2 +- - src/cairo-scaled-font-subsets.c | 2 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-script-surface.c | 2 +- - src/cairo-script.h | 2 +- - src/cairo-skia-surface.cpp | 2 +- - src/cairo-skia.h | 2 +- - src/cairo-slope-private.h | 2 +- - src/cairo-slope.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-stroke-style.c | 2 +- - src/cairo-surface-clipper-private.h | 2 +- - src/cairo-surface-clipper.c | 2 +- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 2 +- - src/cairo-surface-offset-private.h | 2 +- - src/cairo-surface-offset.c | 2 +- - src/cairo-surface-private.h | 2 +- - src/cairo-surface-snapshot-private.h | 2 +- - src/cairo-surface-snapshot.c | 2 +- - src/cairo-surface-subsurface-private.h | 2 +- - src/cairo-surface-subsurface.c | 2 +- - src/cairo-surface-wrapper-private.h | 2 +- - src/cairo-surface-wrapper.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface-private.h | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-svg.h | 2 +- - src/cairo-system.c | 2 +- - src/cairo-tee-surface-private.h | 2 +- - src/cairo-tee-surface.c | 2 +- - src/cairo-toy-font-face.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-truetype-subset-private.h | 2 +- - src/cairo-truetype-subset.c | 2 +- - src/cairo-type1-fallback.c | 2 +- - src/cairo-type1-private.h | 2 +- - src/cairo-type1-subset.c | 2 +- - src/cairo-type3-glyph-surface-private.h | 2 +- - src/cairo-type3-glyph-surface.c | 2 +- - src/cairo-types-private.h | 2 +- - src/cairo-unicode.c | 2 +- - src/cairo-user-font-private.h | 2 +- - src/cairo-user-font.c | 2 +- - src/cairo-version.c | 2 +- - src/cairo-vg-surface.c | 2 +- - src/cairo-vg.h | 2 +- - src/cairo-wideint-private.h | 2 +- - src/cairo-wideint-type-private.h | 2 +- - src/cairo-wideint.c | 2 +- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-printing-surface.c | 2 +- - src/cairo-win32-private.h | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-win32.h | 2 +- - src/cairo-xcb-connection-core.c | 2 +- - src/cairo-xcb-connection-render.c | 2 +- - src/cairo-xcb-connection-shm.c | 2 +- - src/cairo-xcb-connection.c | 2 +- - src/cairo-xcb-private.h | 2 +- - src/cairo-xcb-screen.c | 2 +- - src/cairo-xcb-shm.c | 2 +- - src/cairo-xcb-surface-cairo.c | 2 +- - src/cairo-xcb-surface-core.c | 2 +- - src/cairo-xcb-surface-private.h | 2 +- - src/cairo-xcb-surface-render.c | 2 +- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xcb.h | 2 +- - src/cairo-xlib-display.c | 2 +- - src/cairo-xlib-private.h | 2 +- - src/cairo-xlib-screen.c | 2 +- - src/cairo-xlib-surface-private.h | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo-xlib-visual.c | 2 +- - src/cairo-xlib-xcb-surface.c | 2 +- - src/cairo-xlib-xrender-private.h | 2 +- - src/cairo-xlib-xrender.h | 2 +- - src/cairo-xlib.h | 2 +- - src/cairo-xml-surface.c | 2 +- - src/cairo-xml.h | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairoint.h | 2 +- - src/drm/cairo-drm-bo.c | 2 +- - src/drm/cairo-drm-gallium-surface.c | 2 +- - src/drm/cairo-drm-i915-glyphs.c | 2 +- - src/drm/cairo-drm-i915-shader.c | 2 +- - src/drm/cairo-drm-i915-spans.c | 2 +- - src/drm/cairo-drm-i915-surface.c | 2 +- - src/drm/cairo-drm-i965-glyphs.c | 2 +- - src/drm/cairo-drm-i965-shader.c | 2 +- - src/drm/cairo-drm-i965-spans.c | 2 +- - src/drm/cairo-drm-i965-surface.c | 2 +- - src/drm/cairo-drm-intel-ioctl-private.h | 2 +- - src/drm/cairo-drm-intel-private.h | 2 +- - src/drm/cairo-drm-intel-surface.c | 2 +- - src/drm/cairo-drm-intel.c | 2 +- - src/drm/cairo-drm-private.h | 2 +- - src/drm/cairo-drm-radeon-private.h | 2 +- - src/drm/cairo-drm-radeon-surface.c | 2 +- - src/drm/cairo-drm-radeon.c | 2 +- - src/drm/cairo-drm-surface.c | 2 +- - src/drm/cairo-drm.c | 2 +- - src/test-fallback-surface.c | 2 +- - src/test-fallback-surface.h | 2 +- - src/test-fallback16-surface.c | 2 +- - src/test-fallback16-surface.h | 2 +- - src/test-null-surface.c | 2 +- - src/test-null-surface.h | 2 +- - src/test-paginated-surface.c | 2 +- - src/test-paginated-surface.h | 2 +- - src/test-wrapping-surface.c | 2 +- - src/test-wrapping-surface.h | 2 +- - test/dash-offset.c | 2 +- - test/miter-precision.c | 2 +- - test/operator-alpha-alpha.c | 2 +- - test/pdiff/args.c | 2 +- - test/pdiff/args.h | 2 +- - test/pdiff/lpyramid.c | 2 +- - test/pdiff/lpyramid.h | 2 +- - test/pdiff/pdiff.c | 2 +- - test/pdiff/pdiff.h | 2 +- - test/pdiff/perceptualdiff.c | 2 +- - util/backtrace-symbols.c | 2 +- - util/cairo-script/cairo-script-file.c | 2 +- - util/cairo-script/cairo-script-hash.c | 2 +- - util/cairo-script/cairo-script-interpreter.c | 2 +- - util/cairo-script/cairo-script-interpreter.h | 2 +- - util/cairo-script/cairo-script-objects.c | 2 +- - util/cairo-script/cairo-script-operators.c | 2 +- - util/cairo-script/cairo-script-private.h | 2 +- - util/cairo-script/cairo-script-scanner.c | 2 +- - util/cairo-script/cairo-script-stack.c | 2 +- - 262 files changed, 263 insertions(+), 263 deletions(-) - -commit 9672aab6b7c3f1efc065a6e5eb69443a1ecaa723 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Apr 26 21:28:53 2010 +0200 - - tests: Integrate xlib-expose-event test into usual tests - - Previously the test was using the preamble vfunc and generating output - itself. Now it uses the draw function and ignores any but the xlib - backends. - - test/xlib-expose-event.c | 63 +++++++++++----------------------------------- - 1 files changed, 15 insertions(+), 48 deletions(-) - -commit 36e0a3d3a01f9962d97386ea2d3c60020e937a81 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 26 18:18:27 2010 +0100 - - trace: Remove unused functions - - trace.c:1154: warning: ‘_has_font_face_id’ defined but not used - trace.c:1196: warning: ‘_get_pattern_id’ defined but not used - trace.c:1870: warning: ‘_emit_font_face’ defined but not used - trace.c:1882: warning: ‘_emit_scaled_font’ defined but not used - - util/cairo-trace/trace.c | 24 ------------------------ - 1 files changed, 0 insertions(+), 24 deletions(-) - -commit 3a2d9ffe0333090bb31ff01048ed506595f20cf9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 26 18:17:49 2010 +0100 - - trace: Check return value to suppress compiler warning - - trace.c: In function ‘get_prog_name’: - trace.c:741: warning: ignoring return value of ‘fgets’, declared with - attribute warn_unused_result - - util/cairo-trace/trace.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 37be183412eb35abc11e602857602aee05839fc7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 26 18:12:05 2010 +0100 - - trace: Trivial compiler warning fix - - trace.c:1665: warning: initialization from incompatible pointer type - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3c9e5d9792e101cfbd5a1116f06579539ed7b585 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 26 18:13:36 2010 +0100 - - region: Cast to remove const to suppress compiler warnings. - - airo-region.c: In function ‘cairo_region_intersect’: - cairo-region.c:503: warning: passing argument 3 of - ‘pixman_region32_intersect’ discards qualifiers from pointer target type - /usr/local/include/pixman-1/pixman.h:518: note: expected ‘struct - pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ - - cairo-region.c: In function ‘cairo_region_union’: - cairo-region.c:566: warning: passing argument 3 of - ‘pixman_region32_union’ discards qualifiers from pointer target type - /usr/local/include/pixman-1/pixman.h:521: note: expected ‘struct - pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ - - src/cairo-region.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8c72122df51a10a32b56cdf20e5a1037ee59a958 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 25 10:30:12 2010 +0100 - - clip: Skip combining with solid pixel aligned boxes. - - src/cairo-clip.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 240ebaf81a42c24c4d4267879c5ef8102e97017e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 25 09:44:18 2010 +0100 - - clip: Fix sign reverse when combining with the clip surface. - - Finally, found the reversed sign in the clipping code, thanks cu! - - Fixes: test/clip-shape - - src/cairo-clip.c | 24 ++---------------------- - 1 files changed, 2 insertions(+), 22 deletions(-) - -commit 4d3632761b928c14fb1ce257af077f45658d8537 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 25 09:42:13 2010 +0100 - - clip: Report the surface offset when retrieving the clip mask - - Stop the callers from guessing the origin of the clip surface by - reporting it explicitly! This enables the clip to bypass any rectangles - overlaid on top of the clip surface, which is common when the backends - limit the clip to the extents of the operation -- but irrelevant to the - actual content of the clip mask - - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 26 ++++++++++++++++++++------ - src/cairo-image-surface.c | 39 +++++++++++++++++++++------------------ - src/cairo-surface-fallback.c | 20 ++++++++++---------- - src/cairo-xcb-surface-render.c | 31 +++++++++++++++---------------- - src/drm/cairo-drm-i915-shader.c | 9 ++++----- - src/drm/cairo-drm-i965-shader.c | 7 ++++--- - 7 files changed, 75 insertions(+), 59 deletions(-) - -commit 241ce933f8fa44210015dcdc4a66b3f9d8ac56e8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 25 09:37:50 2010 +0100 - - test: Add clip-shape - - cu found a bug when using clipping and fills with the image backend, but - it turns out to be the lost sign bug afflicting everything... - - To trigger the bug requires evaluating the clip surface prior to using - in with _cairo_clip_combine_with_surface(). Which is taken along a - particular path when using a clip mask with non-pixel geometry on image, - but more easily hit by the fallback code. - - Reported-by: <cairouser@yahoo.com> - - test/Makefile.am | 4 ++ - test/Makefile.sources | 1 + - test/clip-shape.c | 86 +++++++++++++++++++++++++++++++++ - test/clip-shape.ps.ref.png | Bin 0 -> 1797 bytes - test/clip-shape.ref.png | Bin 0 -> 2935 bytes - test/clip-shape.xlib-fallback.ref.png | Bin 0 -> 2916 bytes - test/clip-shape.xlib.ref.png | Bin 0 -> 2944 bytes - 7 files changed, 91 insertions(+), 0 deletions(-) - -commit 1687c7b7d3074de8eeea1a5c339df9a12cc38da2 -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Apr 23 22:22:28 2010 +0200 - - xlib: Fix display closing to work properly - - Previously we free()'d the cairo_device's memory which was not good at - all. Now the code causes cairo_device_finish() instead. - - src/cairo-xlib-display.c | 37 +++++++++++++++++++++++-------------- - 1 files changed, 23 insertions(+), 14 deletions(-) - -commit 637564c562de21c17c36d192d3ab1b3fe069754b -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Apr 23 22:10:32 2010 +0200 - - xlib: Fix screen device handling - - Add a _cairo_xlib_device_create() function that could easily be exported - as a replacement for _cairo_xlib_display_get(). This function returns a - cairo_device_t instead of a cairo_xlib_display_t because the display - isn't acquired. - - src/cairo-xlib-display.c | 33 ++++++++++++++++++--------------- - src/cairo-xlib-private.h | 4 ++-- - src/cairo-xlib-screen.c | 23 ++++++++++++++++------- - 3 files changed, 36 insertions(+), 24 deletions(-) - -commit 49b52a8946cbd5f785f71069313e4a204358887b -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 22 21:56:31 2010 +0200 - - gl: Make drawing to windows work again - - The correct MIN/MAG_FILTER wasn't set. - - src/cairo-gl-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3efbc0c5c850d0cb5c5af5bcabbc7293670ea355 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Apr 20 21:58:59 2010 +0200 - - gl: Only unref a surface if it exists - - Note: This will likely work for NULL clones, but I prefer not - dereferencing NULLs. That gives people a wrong understanding of the code - (i.e. me). - - src/cairo-gl-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 64662be4ef3851d21658e5fdb2efb6806b45eba8 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 22 22:05:03 2010 +0200 - - gl: Use GLfloat instead of float in gl*Array() functions - - src/cairo-gl-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit e4f84f97b2f5d37bc1fb7dd510df733053ffe624 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Apr 20 21:33:50 2010 +0200 - - gl: Don't acquire the gl context twice - - src/cairo-gl-surface.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit e40a2d1f5eeea139e29c27e38495b9c0bf9e39a1 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 22 22:03:29 2010 +0200 - - gl: Use correct type when uploading images - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 55cf323f963bbcc11bcc290eaf71656e1ba91efd -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 22 21:58:01 2010 +0200 - - gl: fix typo in comment - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 887d43578c3acc7d45c8b2e3ade5da29be804eeb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 23 20:14:03 2010 +0100 - - xlib: Simply release the ref, not destroy, from CloseDisplay. - - Do not call the destroy function directly, but rely on the reference - counting to call the notifier upon the last reference. Instead, simply - release the reference we were holding for the cache and CloseDisplay - callback. - - src/cairo-xlib-display.c | 22 ++++++++++++---------- - 1 files changed, 12 insertions(+), 10 deletions(-) - -commit c63e3490a5fc2836837e7adcb5ecad62bdfd18ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 22 20:33:06 2010 +0100 - - cairo: Handle the all-clipped state in cairo_push_group() - - Yet another bug reported by Jeff Muizelaar, thanks! - - Fixes: test/clip-empty-group - - src/cairo.c | 81 +++++++++++++++++++++++++++++++++------------------------- - 1 files changed, 46 insertions(+), 35 deletions(-) - -commit 567e485f28716d7b72cbf864a0c573148be91cd8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 23 14:37:43 2010 +0100 - - test: Add clip-empty-group - - Exercise a bug reported by Jeff Muizelaar whereby cairo_push_group() was - broken by everything being clipped out. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/clip-empty-group.c | 65 +++++++++++++++++++++++++++++++++++++++++ - test/clip-empty-group.ref.png | Bin 0 -> 103 bytes - 4 files changed, 67 insertions(+), 0 deletions(-) - -commit 4438cc6a49e7e902dce045706f7125a2c3e2174b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 3 18:10:57 2010 +0100 - - cairo: Use explicit device flushing. - - Now with the concept of a cairo_device_t and the ability to flush it, - we now longer require the heuristic of automatically flushing on behalf - of the user at the end of every context. - - src/cairo.c | 11 ----------- - 1 files changed, 0 insertions(+), 11 deletions(-) - -commit 0fc140abc3c848e72b1b2b959026355fdbd6a941 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 21 12:01:49 2010 +0100 - - pdf: Suppress compiler warning. - - src/cairo-pdf-operators.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 1923a33a7277009b2898840d671fdc8f8d1b3922 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 21 11:59:33 2010 +0100 - - cairoint.h: Change ASSERT_NOT_REACHED to remove compiler warning - - src/cairoint.h | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit d366da7d8c46b08673b9e36dd130608a311ded4b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 23 14:38:42 2010 +0100 - - Win32 features update - - boilerplate/Makefile.win32.features | 8 -------- - src/Makefile.win32.features | 8 -------- - 2 files changed, 0 insertions(+), 16 deletions(-) - -commit c1e51a0264d204716f7706fbc66c2a7786b7947c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 23 14:33:53 2010 +0100 - - build: Spelling correction - - build/Makefile.win32.features-h | 1 - - build/configure.ac.features | 2 +- - 2 files changed, 1 insertions(+), 2 deletions(-) - -commit e0306da1d73509e2cfd0fce81a1b4259e5e3fcef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 21 22:51:53 2010 +0100 - - configure: typo in check for xcb-shm - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b7fbda276df52de6a5ac67397a8d49657233fcfa -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Apr 18 23:16:07 2010 +0200 - - Revert "script: Another RGB16_565 warning." - - This reverts commit a9f506493371ac91494488e5ca38e57ceb5a10cb. - - The change was already applied in bdf8f50adae67498d5fe36727ed2cd34c0206509. - - src/cairo-script-surface.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit f74ad37e66bbdcc4d727ed6d931dde870d84c2f4 -Author: Benjamin Otte <otte@redhat.com> -Date: Sun Apr 18 23:20:02 2010 +0200 - - xlib: Make display a cairo_device_t - - The code now uses the locking of the cairo_device_t instead of its own - mutexes. - - The code was modified so that cairo_surface_t does no longer reference - the display directly. Instead, it calls _cairo_xlib_display_acquire(). - If a function assumes an already acquired display, it now requires the - caller to provide a cairo_xlib_display_t parameter. Functions that do - not require an acquired display will not require the display parameter - or they will take the cairo_device_t instead. - - src/cairo-xlib-display.c | 234 +++++++---------- - src/cairo-xlib-private.h | 66 +++-- - src/cairo-xlib-screen.c | 161 ++--------- - src/cairo-xlib-surface-private.h | 2 - - src/cairo-xlib-surface.c | 557 ++++++++++++++++++++++--------------- - 5 files changed, 494 insertions(+), 526 deletions(-) - -commit 2bffa2467ed67517419e425fc34fb5b8294a9e96 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jan 27 10:56:22 2010 +0100 - - Use pixman_image_composite32() - - Replace all occurences of pixman_image_composite() - - src/cairo-directfb-surface.c | 16 +- - src/cairo-image-surface.c | 352 ++++++++++++++++++++-------------------- - src/cairo-pattern.c | 16 +- - src/cairo-surface-snapshot.c | 12 +- - src/cairo-surface-subsurface.c | 24 ++-- - src/cairo-xlib-surface.c | 16 +- - src/drm/cairo-drm-intel.c | 12 +- - 7 files changed, 224 insertions(+), 224 deletions(-) - -commit 567923d66a375259a6a8083aa4ef1051097a60c5 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jan 27 09:39:20 2010 +0100 - - image: Make unbounded fixup code not use pixman_fill() - - The new pixman_image_fill_boxes() does proper fallbacks for weird pixman - formats. - - src/cairo-image-surface.c | 123 +++++++++++++++++---------------------------- - 1 files changed, 47 insertions(+), 76 deletions(-) - -commit b648365cfa2d808b34b924a6b105718e0673bb9b -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jan 27 09:21:41 2010 +0100 - - Require pixman 0.17.5 - - We want pixman_image_composite32() and pixman_image_fill_boxes() - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0a19ad7c104cd81fa2b93aaf7ef9302f50b3f369 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 15 17:58:16 2010 +0200 - - gl: Get rid of "return value not checked" warnings - - Assert that those functions only return successfully. - - src/cairo-gl-surface.c | 42 ++++++++++++++++++++++++------------------ - 1 files changed, 24 insertions(+), 18 deletions(-) - -commit 7745ea21e104d0a5eec1814f19bacb7334f42185 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 14 15:59:36 2010 +0200 - - gl: acquire/release properly in _cairo_gl_draw_image() - - Fixes various testsuite failures, in particular ones related to masks. - - src/cairo-gl-surface.c | 16 ++++++++++++++-- - 1 files changed, 14 insertions(+), 2 deletions(-) - -commit 596d3017a1b11cb9844e69330cdece7441929725 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Apr 13 20:53:47 2010 +0200 - - gl: acquire/release context when getting images - - Avoids Mesa complaining about no current context. - - src/cairo-gl-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 46ef05c3d73af2b222602954b986832e77355a12 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Mar 29 12:58:18 2010 +0200 - - glx: Add getters for device's Display and GLXContext - - src/cairo-gl.h | 6 ++++++ - src/cairo-glx-context.c | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 36 insertions(+), 0 deletions(-) - -commit 712919223d08f8b4c43f828322fdc285560c137f -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Mar 26 15:50:10 2010 +0100 - - gl: Make code safe for multithreaded access - - The code callss the gl device's acquire/release in - cairo_device_acquire/release(). This way, external APIs can use these - functions to prepare for rendering GL. - - Also adds code to unset the glx context if it wasn't set when acquiring - the device. This allows multithreaded apps to work fine with just using - cairo APIs, but might introduce penalties in single-threaded - applications. - - src/cairo-egl-context.c | 2 ++ - src/cairo-gl-private.h | 5 ++++- - src/cairo-gl-surface.c | 20 +++++++++++++++++++- - src/cairo-glx-context.c | 37 +++++++++++++++++++++++++++++++++++-- - 4 files changed, 60 insertions(+), 4 deletions(-) - -commit 8f2e82cea3405fa9a6591911c0d42ea3dd0c6180 -Author: Benjamin Otte <otte@redhat.com> -Date: Thu Apr 15 17:48:24 2010 +0200 - - xcb: Make code not complain about every new format - - src/cairo-xcb-surface-render.c | 46 +++++++++++++++------------------------ - 1 files changed, 18 insertions(+), 28 deletions(-) - -commit 1d753b2f4d724c5ac3e452848ca4dda5891816a6 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Feb 23 21:53:31 2010 +0100 - - xlib: Make code not complain about every new format - - src/cairo-xlib-surface.c | 46 ++++++++++++++++++---------------------------- - 1 files changed, 18 insertions(+), 28 deletions(-) - -commit ebc9cc46fe7740c6d97e02edc66bae383413764b -Author: Benjamin Otte <otte@redhat.com> -Date: Fri Mar 5 15:08:34 2010 +0100 - - gl: Use right format - - The internal format should always be GL_RGBA. - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4142f0836d6719dd136a5fc6ac1adaddd681a3f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 15 09:09:31 2010 +0100 - - gl: Handle component-alpha ADD - - A simple extension to the component-alpha OVER [as ca-ADD is just the - second pass in ca-OVER] to support amalgamation of glyph masks. This - speeds up firefox-36 by ~5% on g45. - - Before: - firefox-36-20090611 76.185 - After: - firefox-36-20090611 72.863 - - src/cairo-gl-surface.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit a4bae1956bee0be98a5a22bd82d417192776e7f0 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 14 22:46:34 2010 +0200 - - gl: Really don't write error status to the inert object. - - src/cairo-gl-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5fed41ee2bb3097c1446c1cf2038c912d5932692 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 14 22:43:29 2010 +0200 - - test: Add test checking that all setters properly check surface->status - - In particular, make sure that the setters when called on a const nil - surface don't try to set surface->status. - - test/Makefile.sources | 1 + - test/error-setters.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 110 insertions(+), 0 deletions(-) - -commit 6826f020014fff566678a1ff92014211e2a21d4c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:33:34 2010 +0100 - - gl: Don't write error status to the inert object. - - Reported-by: Benjamin Otte <otte@redhat.com> - - src/cairo-gl-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 3814855a649ffca695ce31d97c291496e32d2e26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 20:22:14 2010 +0100 - - script: Flush prior to modifying the image data. - - util/cairo-script/cairo-script-operators.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 03f7bfc351c27ab9d0b764a21bdcf2304e8c2e81 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 20:14:39 2010 +0100 - - rtree: Remove the false assert upon collapse. - - src/cairo-rtree.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit b0383d0cd2b40185b1676d9c88d3647cecc1d7fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:33:34 2010 +0100 - - svg: Don't write error status to the inert object. - - Reported-by: Benjamin Otte <otte@redhat.com> - - src/cairo-svg-surface.c | 37 +++++++++++++++++++++---------------- - 1 files changed, 21 insertions(+), 16 deletions(-) - -commit 5274b63adb9ad808f94e6ea04707991ec1192694 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:33:34 2010 +0100 - - ps: Don't write error status to the inert object. - - Reported-by: Benjamin Otte <otte@redhat.com> - - src/cairo-pdf-surface.c | 2 - - src/cairo-ps-surface.c | 74 +++++++++++++++++----------------------------- - 2 files changed, 27 insertions(+), 49 deletions(-) - -commit 45d23b8a791d5845025a1a4d93f99030ec9e0115 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:33:34 2010 +0100 - - pdf: Don't write error status to the inert object. - - Reported-by: Benjamin Otte <otte@redhat.com> - - src/cairo-pdf-surface.c | 41 ++++++++++++++++++++++------------------- - 1 files changed, 22 insertions(+), 19 deletions(-) - -commit 4351304b5110200b77e6851995cf533a929ba17e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:29:07 2010 +0100 - - Win32 features update. - - boilerplate/Makefile.win32.features | 8 ++++++++ - build/Makefile.win32.features-h | 1 + - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit bd17b898b1c249aa0dc443bc303bad4fea8690bc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:11:15 2010 +0100 - - surface: Propagate the error status to _cairo_surface_get_device() - - If the surface is in error, the appropriate action is report the error - using an inert error cairo_device_t. - - Reported-by: Benjamin Otte <otte@redhat.com> - - src/cairo-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 005596907fc9b62fa4bf72ec35e0d1a1a242ef93 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 14 19:05:09 2010 +0100 - - xlib: Don't operate on an error object inside setters. - - Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=599574 - - The backend API manipulated the surface prior to checking whether it was - an inert error surface - and in the event of an error surface, tried to - overwrite it's error status. - - src/Makefile.win32.features | 8 ++++++++ - src/cairo-xcb-surface.c | 3 +++ - src/cairo-xlib-surface.c | 6 ++++++ - src/cairo-xlib-xcb-surface.c | 6 ++++++ - 4 files changed, 23 insertions(+), 0 deletions(-) - -commit 8afd4e4c3db53159d1e5b6f13d3355cb5fb1750b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 13 17:52:19 2010 +0100 - - hull: _cairo_hull_vertex_compare() return 0 for identical elements - - Andreas Falkenhahn reported a bizarre situation with some - implementations of qsort that actually compare the same elements and - require the comparator to return 0. So be it. - - Reported-by: Andreas Falkenhahn <andreas@airsoftsoftwair.de> - - src/cairo-hull.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit d95037db9915033ef1eee24c2fc05e8a95af5457 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 11 21:04:29 2010 +0100 - - cache: Tidy _cairo_cache_shrink_to_accommodate() - - There is no need to shrink the cache if we add an entry of size 0, so - don't by moving the guards in _cairo_cache_shrink_to_accommodate() to the - callers. - - src/cairo-cache.c | 10 +++------- - 1 files changed, 3 insertions(+), 7 deletions(-) - -commit e6309c6307179388c5de938bffdb44b83b694f28 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Apr 11 21:03:00 2010 +0100 - - xcb: Use normal finish to decouple from surface cache. - - Hook into the standard finishing process for a more robust cache removal - mechanism. firefox was able to trigger some double free asserts - otherwise. - - src/cairo-xcb-screen.c | 4 ++- - src/cairo-xcb-surface-render.c | 57 +++++++++++++++++++--------------------- - 2 files changed, 30 insertions(+), 31 deletions(-) - -commit e425c44e9c4c1796ccc3557a0368cf3b3a685a31 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Apr 9 08:32:22 2010 +0200 - - boilerplate: Compile xlib without xrender - - cairo_boilerplate_xlib_surface_disable_render() is not defined when - compiling without XRender, but it was used nonetheless. Replace it - with an empty stub when XRender is not available. - - boilerplate/cairo-boilerplate-xlib.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 061ea78ad2838450b20d5550a7285823e0d24e1b -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Apr 9 08:28:33 2010 +0200 - - perf: Correct cairo-perf-diff syntax - - { cmd-list; } seems to literally be the required syntax. Blanks and - ';' are both mandatory. - - perf/cairo-perf-diff | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6986970ea5197685274b1fd809d72fbd771c0bab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 10 17:05:38 2010 +0100 - - clip: Compile fix for previous clip. - - PEBKAC. - - src/cairo-clip.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 0899852c974099da9f8c5e493fa89b8d022646c5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 10 16:00:45 2010 +0100 - - clip: Compare the whole clip when testing for equality. - - Should fix test/clip-contexts - - src/cairo-clip-private.h | 4 ++++ - src/cairo-clip.c | 40 +++++++++++++++++++++++++++++++++++++--- - src/cairo-surface-clipper.c | 5 +---- - 3 files changed, 42 insertions(+), 7 deletions(-) - -commit 557016a86a5a4487aeb6ab6392795eb709ee8bb5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 10 15:59:13 2010 +0100 - - test: Add clip-contexts - - This should exercise a bug found by Jeff Muizelaar that - cairo-surface-clipper was mistakenly thinking that clip operations on a - second context was a no-op as the topmost clip path matched that of the - previous context. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/clip-contexts.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ - test/clip-contexts.ref.png | Bin 0 -> 98 bytes - 4 files changed, 75 insertions(+), 0 deletions(-) - -commit a9f506493371ac91494488e5ca38e57ceb5a10cb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 7 22:44:02 2010 +0100 - - script: Another RGB16_565 warning. - - src/cairo-script-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 42b5cac7668625c9761113ff72b47af5cfd10377 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Apr 7 19:10:15 2010 +0930 - - PDF-operators: ensure text operations flushed before emitting clip - - src/cairo-pdf-operators.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit c004800fae362ae907ef9d1f822d02c598572161 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 7 22:46:38 2010 +0100 - - script: Compile without FT_FONT - - src/cairo-script-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit bdf8f50adae67498d5fe36727ed2cd34c0206509 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 7 22:44:02 2010 +0100 - - script: Another RGB16_565 warning. - - src/cairo-script-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit f5f64317874a3faa4f47688848a499b1e8836cf6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 7 21:57:22 2010 +0100 - - perf: Switch between micro and trace benchmarks for cairo-perf-diff - - perf/cairo-perf-diff | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) - -commit 70ca0040fda77b6865c20c94c1b7deaa6e63c481 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Apr 7 22:54:57 2010 +0200 - - Actually check for memory allocation failure - - Clang static analyzer signals "Dereference of null pointer" in case - the malloc returns NULL, as the code is checking the wrong pointer. - - src/cairo-boxes.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d7f71ac5c209376bacb45199a0eaa3b1937172e9 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Apr 7 21:57:38 2010 +0200 - - region: Make the 2nd argument to intersect and union const - - src/cairo-region.c | 4 ++-- - src/cairo.h | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit ded3a9639b33b1e637e99250a463bc227c9e60f4 -Author: Kristian Rietveld <kris@gtk.org> -Date: Tue Dec 29 08:47:09 2009 +0100 - - quartz: Define cairo_quartz_float_t and use instead of float - - On Mac OS 10.6 and newer cairo_quartz_float_t is defined to be a - CGFloat, resolving issues with the 64-bit builds. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=25814 - - src/cairo-quartz-private.h | 6 ++++++ - src/cairo-quartz-surface.c | 40 +++++++++++++++++++++------------------- - 2 files changed, 27 insertions(+), 19 deletions(-) - -commit 7c2c3f621f9b009b97c5f269bf313be926cc51c7 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Apr 3 22:54:57 2010 +0200 - - Correct masking optimization - - In _cairo_surface_mask() there was an invaild optimization (it failed - for surfaces without alpha content). Using _cairo_pattern_is_clear() - is the correct way to evaluate if a pattern is clear. - - Fixes clear-source - - src/cairo-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 24fc36c10f5c1c34e3059a8334178743052d7ad2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 2 08:44:45 2010 +0100 - - script: Fix endian encoding of '<|' length. - - Andrea found and fixed (and updated all the traces!) an endian bug where - we were encoding a 32bit length inside the compressed string stream. - However, this one inside the script backed escaped his notice. - - src/cairo-script-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 697094488c652ad351301696bba9a384cc70002c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 2 08:40:28 2010 +0100 - - test: Add inverse text - - This is exercising a bug that I have introduced either in the xcb - backend or in the driver in my experimental branches. So simple, yet so - wrong. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/inverse-text.c | 67 +++++++++++++++++++++++++++++++++++++ - test/inverse-text.image16.ref.png | Bin 0 -> 1863 bytes - test/inverse-text.ps.ref.png | Bin 0 -> 776 bytes - test/inverse-text.ref.png | Bin 0 -> 2150 bytes - 6 files changed, 69 insertions(+), 0 deletions(-) - -commit fe610d559c70ab67f782b122437908ac80788611 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 31 09:33:30 2010 +0100 - - perf/micro: Show megapixel fill rate during paint. - - perf/micro/paint-with-alpha.c | 9 ++++++++- - perf/micro/paint.c | 8 +++++++- - 2 files changed, 15 insertions(+), 2 deletions(-) - -commit 8f7078eba71dcd2aa70bf97c03ed7b4341260143 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 1 20:42:44 2010 +0100 - - boilerplate: Allox xlib-fallback to build without RENDER - - This surface doesn't use RENDER and should produce the same results - when cairo-xlib is compiled without any support for RENDER. - - boilerplate/cairo-boilerplate-xlib.c | 72 ++-------------------------------- - 1 files changed, 4 insertions(+), 68 deletions(-) - -commit d209b40c64bddeb0d830678bc2f84e1016fed879 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 1 20:36:15 2010 +0100 - - xlib: Rearrange xrender stubs to restore compilation without xrender.h - - boilerplate/Makefile.win32.features | 8 -------- - build/Makefile.win32.features-h | 1 - - src/Makefile.win32.features | 8 -------- - src/cairo-xlib-xrender-private.h | 14 +++++++------- - 4 files changed, 7 insertions(+), 24 deletions(-) - -commit db4dbb38340e93da616319f00e0f4327d1c1d815 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Apr 1 01:53:22 2010 -0400 - - Improve doc syntax check to allow inline macro docs - - src/check-doc-syntax.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 00101fa71614fb48de436d6618e26353cf44ef95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 31 16:19:02 2010 +0100 - - configure: check -lrt for shm_open() - - OS/X includes shm_open() in libc, and fails to link if -lrt is - specified. So perform the appropriate configure time magic. - - configure.ac | 5 +++++ - util/cairo-sphinx/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit a81d347c2484e60ceec1d9dc81e1b88724496eaf -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Feb 5 22:34:51 2010 +0100 - - perf: Fix timestamp computation on MacOS X - - The OIL routines don't work as expected on MacOS X. The operating - system gives access to the timestamp counter through the function - mach_absolute_time. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - perf/cairo-perf-posix.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 55ce0b774869e9fa614c6f9fec7905f7205cb5ff -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Feb 5 22:30:05 2010 +0100 - - script: Fix script scanner endianness - - The script interpreter was reading the length of compressed data as - an host-endian uint32_t, thus making cairo-script able to correctly - read traces that were produced on the same endianness as the one they - ran upon, but unsuitable for portabile cairo-scripts. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - util/cairo-script/cairo-script-scanner.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) - -commit 4f617eaf77540ba2140086bd5a19fe6d62503d62 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Feb 5 22:27:28 2010 +0100 - - trace: Fix trace endianness - - Trace files were using host-endian to represent the length of - compressed data, making the trace format not portable. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - util/cairo-trace/trace.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 35f19bc084792bbad42b86a399103ebfbf407d05 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Mar 31 12:18:01 2010 +0200 - - pattern: Fix _gradient_is_opaque() for zero stops - - _gradient_is_opaque() previously returned TRUE for gradient with - no stops, triggering a false optimization in _cairo_gstate_mask(). - - Fixes test/gradient-zero-stops-mask - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-pattern.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 01e182194224e0eb7493b2ae3c8367ed455cfd54 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Mar 31 12:14:25 2010 +0200 - - test: Add gradient-zero-stops-mask - - Add a test to check that gradient with no stops are not considered - opaque by gstate (and thus masking with them is not optimized to - paint). - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/gradient-zero-stops-mask.argb32.ref.png | Bin 0 -> 86 bytes - test/gradient-zero-stops-mask.c | 59 ++++++++++++++++++++++++++ - test/gradient-zero-stops-mask.rgb24.ref.png | Bin 0 -> 86 bytes - 5 files changed, 62 insertions(+), 0 deletions(-) - -commit ce3ad6f41edf86ed6914f4d7f364111eba42ca65 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 31 08:21:17 2010 +0100 - - xlib: Avoid multiple evaluations inside bswap_*() macro. - - Fixes: - Fonts are not readable if remote display to a machine with different - endian. - https://bugzilla.mozilla.org/show_bug.cgi?id=526977 - - Reported-and-tested-by: Ginn Chen <Ginn.Chen@Sun.COM> - - src/cairo-xlib-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit be4ffa9df275513de3175415ee889b7323499a37 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 28 19:40:54 2010 +0100 - - doc: Fix some missing '%' in gtk-doc comments - - src/cairo-surface.c | 4 ++-- - src/cairo-svg-surface.c | 10 +++++----- - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit 7ab350378e8597e9872dbe390b8454d0a63bff28 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 28 19:38:24 2010 +0100 - - Silence enumeration warnings following addition of RGB16_565 - - src/cairo-debug.c | 3 ++ - src/cairo-gl-glyphs.c | 2 + - src/cairo-png.c | 1 + - src/cairo-qt-surface.cpp | 2 + - src/cairo-scaled-font.c | 1 + - src/cairo-script-surface.c | 15 ++++++++++++ - src/cairo-xcb-surface-render.c | 5 ++++ - src/cairo-xlib-surface.c | 5 ++++ - src/cairo-xml-surface.c | 1 + - src/drm/cairo-drm-i915-surface.c | 3 ++ - src/drm/cairo-drm-i965-shader.c | 4 +++ - src/drm/cairo-drm-i965-surface.c | 1 + - src/drm/cairo-drm-intel-surface.c | 1 + - src/drm/cairo-drm-intel.c | 12 ++++++++- - src/drm/cairo-drm-radeon-surface.c | 1 + - util/cairo-script/cairo-script-operators.c | 35 ++++++++++++++++++++++++++++ - util/cairo-sphinx/sphinx.c | 1 + - util/cairo-trace/trace.c | 25 +++++++++++++++++-- - 18 files changed, 113 insertions(+), 5 deletions(-) - -commit d901692a5550c51fd3eefd307609fb800ef02a95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 30 15:31:32 2010 +0100 - - scaled-glyph: Allow removal info fields. - - Pushed a fraction of a second too soon... Update the - scaled_glyph->has_info if the backend clears any field as well. - - src/cairo-scaled-font.c | 19 ++++++++++++++++--- - 1 files changed, 16 insertions(+), 3 deletions(-) - -commit 5c4b6d520bc7ce7d5193a89bbda44b91f5eb0d4d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 30 15:26:42 2010 +0100 - - xcb: Cache whether we have already check a glyph for size. - - Avoid repeated cairo_scaled_glyph_lookup() and checking of sizes if we - have already seen this glyph in this run. - - src/cairo-xcb-surface-render.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 1c76e3e9ad1437662bf91ed1d21c4bda8fd50fb4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 30 15:24:08 2010 +0100 - - scaled-font: Optimize cairo_scaled_font_lookup() - - By tracking which fields of information are already available on the - scaled_glyph we can more efficiently determine if we already have the - requested fields. This reduces from about 6 conditionals to one, and - reduces the function overhead by ~20% -- which has a measurable - improvement on glyph benchmarks. - - src/cairo-scaled-font.c | 73 ++++++++++++-------------------------------- - src/cairo-types-private.h | 1 + - 2 files changed, 21 insertions(+), 53 deletions(-) - -commit d2ec151e490b227e7f3d6879bf7a893577dfefa5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 30 15:23:18 2010 +0100 - - perf/micro: Exercise different sizes and antialising modes with glyphs - - perf/micro/glyphs.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 77 insertions(+), 8 deletions(-) - -commit 72481acf0d1e8648c5d03ce51f84c639132475a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 30 04:10:28 2010 +0100 - - perf: Compute ops per second - - Provide a hook for the test to be able to compute the number of ops per - second. For instance, the glyphs test uses it to report the number of - kiloglyph per second Cairo is able to render. - - perf/cairo-perf-micro.c | 47 +++++++++++++++++++++++------------- - perf/cairo-perf.h | 9 +++++- - perf/micro/box-outline.c | 4 +- - perf/micro/cairo-perf-cover.c | 5 ++- - perf/micro/composite-checker.c | 2 +- - perf/micro/dragon.c | 10 ++++---- - perf/micro/fill.c | 6 ++-- - perf/micro/glyphs.c | 35 +++++++++++++++++++++++++- - perf/micro/intersections.c | 8 +++--- - perf/micro/long-dashed-lines.c | 2 +- - perf/micro/long-lines.c | 8 +++--- - perf/micro/mask.c | 18 +++++++------- - perf/micro/mosaic.c | 8 +++--- - perf/micro/paint-with-alpha.c | 2 +- - perf/micro/paint.c | 2 +- - perf/micro/pattern_create_radial.c | 2 +- - perf/micro/pythagoras-tree.c | 2 +- - perf/micro/rectangles.c | 6 ++-- - perf/micro/rounded-rectangles.c | 6 ++-- - perf/micro/spiral.c | 28 ++++++++++---------- - perf/micro/stroke.c | 4 +- - perf/micro/subimage_copy.c | 2 +- - perf/micro/tessellate.c | 6 ++-- - perf/micro/text.c | 2 +- - perf/micro/twin.c | 2 +- - perf/micro/unaligned-clip.c | 2 +- - perf/micro/world-map.c | 2 +- - perf/micro/zrusin.c | 4 +- - 28 files changed, 142 insertions(+), 92 deletions(-) - -commit 2a98d0586c19fbb2b555f471895d73f253c4943b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 15 18:23:23 2010 +0000 - - drm/i915: Avoid using another unpreserved temporary - - As we may load from a sampler, we can not use on of the unpreserved - temporaries to store the intermediate colour result. - - src/drm/cairo-drm-i915-shader.c | 26 +++++++++++++++----------- - 1 files changed, 15 insertions(+), 11 deletions(-) - -commit 26f963557bf065fd25b9c4f6652a252735a0fb74 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 15 18:22:06 2010 +0000 - - drm/i915: Normalize spans opacity value - - On the generic path I forgot to rescale the alpha value into [0,1]. - - src/drm/cairo-drm-i915-spans.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 97f8c20727eaeb2dfddb0d4796192cc042eb14fa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Mar 27 21:52:16 2010 +0000 - - boilerplate: Create an image16 target - - In order to exercise the newly restored r5g6g5 support, we need to - create an appropriate surface and feed it through the test and - performance suites. - - boilerplate/cairo-boilerplate-directfb.c | 6 ++- - boilerplate/cairo-boilerplate-drm.c | 6 ++- - boilerplate/cairo-boilerplate-gl.c | 12 +++-- - boilerplate/cairo-boilerplate-pdf.c | 4 +- - boilerplate/cairo-boilerplate-ps.c | 8 ++-- - boilerplate/cairo-boilerplate-quartz.c | 3 + - boilerplate/cairo-boilerplate-script.c | 2 +- - boilerplate/cairo-boilerplate-skia.c | 6 ++- - boilerplate/cairo-boilerplate-svg.c | 8 ++-- - boilerplate/cairo-boilerplate-test-surfaces.c | 21 ++++--- - boilerplate/cairo-boilerplate-vg.c | 12 +++-- - boilerplate/cairo-boilerplate-win32-printing.c | 4 +- - boilerplate/cairo-boilerplate-win32.c | 6 ++- - boilerplate/cairo-boilerplate-xcb.c | 21 +++++--- - boilerplate/cairo-boilerplate-xlib.c | 12 +++-- - boilerplate/cairo-boilerplate.c | 39 ++++++++++++-- - boilerplate/cairo-boilerplate.h | 1 + - perf/cairo-perf-micro.c | 59 +-------------------- - perf/cairo-perf-trace.c | 67 +----------------------- - 19 files changed, 120 insertions(+), 177 deletions(-) - -commit 022291be1cbddf4f6722f0bf76ebda6922780276 -Author: Oleg Romashin <romaxa@gmail.com> -Date: Wed Mar 24 13:12:25 2010 -0400 - - Add back support for CAIRO_FORMAT_RGB16_565 - - Due to slow memory speed, 16bpp color depth is still very popular on mobile - devices. Maemo5 is also using 16bpp color depth. - - src/cairo-deprecated.h | 14 -------------- - src/cairo-image-surface.c | 16 +++++++++++++++- - src/cairo-xlib-display.c | 28 +++++++++++++++++++++++++--- - src/cairo.h | 7 ++----- - src/cairoint.h | 2 +- - 5 files changed, 43 insertions(+), 24 deletions(-) - -commit 36e12b1952f9bdc52491c5a9bdf8ce155865c362 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 12:14:20 2010 +0000 - - subsurface: Ignore return from _cairo_clip_init_copy() - - The return is just a hint that the clip is empty, however we are about - to immediately apply the surface clip and so do not care for an - 'optimised' path. - - src/cairo-surface-subsurface.c | 15 ++++++++++----- - 1 files changed, 10 insertions(+), 5 deletions(-) - -commit e356e5d18b923d9b0ff83e9460582710f9e515d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 11:38:19 2010 +0000 - - recording: Fix leak of clip from snapshots of recording surfaces. - - src/cairo-recording-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5b4885f693c0d800da7160770b341166e3bdea61 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 11:25:29 2010 +0000 - - clip: propagate the no-clip through the copy. - - src/cairo-clip.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b3e0393161904c2fea62b0198dea551a77201c19 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 11:21:36 2010 +0000 - - clip: Don't reduce all-clip to no-clip. - - src/cairo-clip.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit b12114f296e4e8db3207ab593a431fd0ca2ee67c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 11:08:38 2010 +0000 - - snapshot: Finish the clone. - - Kill ref cycles from snapshots patterns by explicitly calling finish on - the cloned surface. - - src/cairo-surface-snapshot.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit db913d731e50505892697bdc919f9fe146eea6ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 24 10:16:58 2010 +0000 - - xcb: Ensure that we own the glyph cache before use. - - Sigh. One day, I will enable multiple glyph caches to be attached to a - scaled font, but for today, simply avoid the crash. - - src/cairo-xcb-surface-render.c | 38 +++++++++++++++++++++++++++++--------- - 1 files changed, 29 insertions(+), 9 deletions(-) - -commit 6da3cea3564bd8c5de37bf2244a2dd656202e4ec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 20:53:11 2010 +0000 - - scaled-font: Destroy the old surface when replacing scaled_glyph->recording - - src/cairo-scaled-font.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 548092fe8c9af1423a10e9566cbc4315d2f28efc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 20:08:04 2010 +0000 - - script: Free the surface/font bitmaps. - - src/cairo-script-surface.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit 83d1bd9f37da93fbdc586788b6891d0eccdb7cee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 20:04:10 2010 +0000 - - script: Manually unlink font entries upon destruction - - As the device is already finished, we can not lock it without raising an - error, so we have to open code the destruction of the font entries. - Fortunately we can make several simplifying assumptions about the - required cleanup as we know the device is also being destroyed. - - src/cairo-script-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit cccf6753ab68b0795351da2626f9e4ecd60c2a2e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 19:45:35 2010 +0000 - - script: More acquire device fixes. - - We also need to acquire the device upon finish, similar surface creation - and the pagination functions, i.e. the other times outside of the - drawing ops that must modify the shared context/device. - - src/cairo-script-surface.c | 71 ++++++++++++++++++++++++++++++++++---------- - 1 files changed, 55 insertions(+), 16 deletions(-) - -commit 25a77b263d170265a9acf1697793cbbfa07dd852 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 16:49:21 2010 +0000 - - boilerplate: Cleanup the list of backends upon shutdown. - - boilerplate/cairo-boilerplate.c | 13 +++++++++++++ - boilerplate/cairo-boilerplate.h | 3 +++ - perf/cairo-perf-micro.c | 2 ++ - perf/cairo-perf-trace.c | 2 ++ - test/cairo-test.c | 2 ++ - 5 files changed, 22 insertions(+), 0 deletions(-) - -commit 1ddcd5cf31bb47e9ff18ddf94d0a4648fa70a617 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 16:43:39 2010 +0000 - - clip: Remove the redundant _cairo_clip_init_rectangle() - - As _cairo_clip_init_rectangle() is equivalent and more importantly more - clearly written as: - _cairo_clip_init(&clip); - if (status = _cairo_clip_rectangle(&clip, &rect)) { - _cairo_clip_fini(&fini); - return status; - } - perform the transformation and in the process catch a few mistakes along - error paths. - - src/cairo-clip-private.h | 4 ---- - src/cairo-clip.c | 30 +++++++++++------------------- - src/cairo-paginated-surface.c | 18 +++++++++--------- - src/cairo-recording-surface.c | 11 +++++------ - src/cairo-surface-wrapper.c | 14 +++++--------- - 5 files changed, 30 insertions(+), 47 deletions(-) - -commit 61ad28fe7d334c63197ae3881d5edd074d63cfec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 10:44:16 2010 +0000 - - device: Add language binding interfaces. - - Damien Carbonne reported that cairo_device_t lacked the language binding - hooks normally associated with cairo objects. So add the missing - get_reference_count, get_user_data and set_user_data. - - src/cairo-device-private.h | 1 + - src/cairo-device.c | 78 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 14 ++++++++ - 3 files changed, 93 insertions(+), 0 deletions(-) - -commit 8a8c2f6c282c1822dc1a638c2258c8449b1d678b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 10:34:06 2010 +0000 - - cairo: Typos in docs. - - A couple of typos reported by Damien Carbonne. - - src/cairo-recording-surface.c | 10 ++++------ - src/cairo.h | 4 ++-- - 2 files changed, 6 insertions(+), 8 deletions(-) - -commit 4c55c87478a2595569f9c1f13657c3d309f31407 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 10:05:35 2010 +0000 - - image: Free traps after conversion from boxes. - - src/cairo-image-surface.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 07f7bddc30157fed8f9dced00fef44a2307b4b01 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 10:05:35 2010 +0000 - - xcb: Free traps after conversion from boxes. - - src/cairo-xcb-surface-render.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 181403fb534d0216123043bcd3ee6cff60e1e6fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 09:38:59 2010 +0000 - - test/clear-source: Free source after use. - - test/clear-source.c | 38 ++++++++++++++++++++++---------------- - 1 files changed, 22 insertions(+), 16 deletions(-) - -commit 35432e37c264e1ace764b4a1393d9b8579eb52c0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 09:35:51 2010 +0000 - - xcb: Destroy reference to clip surface after use. - - src/cairo-xcb-surface-render.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 98e3dfbb899f0228fc9987a56af93b012989a27a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 09:35:31 2010 +0000 - - xcb: Relinquish the xcb connection on finish. - - src/cairo-xcb-connection.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 638cae3bdeaf0b10d1fd59a519f5d7a05c5b179c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 08:25:13 2010 +0000 - - xcb: Fix leak of clip rectangle during show-glyphs. - - src/cairo-xcb-surface-render.c | 15 ++++++--------- - 1 files changed, 6 insertions(+), 9 deletions(-) - -commit 1d4ad787747b5c92c3b062afde5b98c72ac4cc95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 08:20:49 2010 +0000 - - test/pthread-same-source: Free source after use. - - test/pthread-same-source.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit bfc027ac6d05f489d0d26110c225d2871be0971c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 23 08:16:57 2010 +0000 - - test/clip-image: Free image after use. - - test/clip-image.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e214f09d633093ce9b2ca0bffce10bc68a6e30b0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 22:20:58 2010 +0000 - - xcb: Consume the implicit reference for the cached connection on finish - - src/cairo-xcb-connection.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit c235543bdfd8b1495cb7ae8f2a82b6267c4d9b84 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 22:15:44 2010 +0000 - - xcb: Destroy reference to local source picture in show-glyphs. - - src/cairo-xcb-surface-render.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit c42cdd2c9d883ef359ac57b65eba4ed15441181d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 20:14:09 2010 +0000 - - xcb: Gracefully destroy any lingering fallback during finish. - - A fallback should never persist beyond the flush into the finish, but - yet one remains in test/clip-shapes-unaligned-rectangles. For the time - been, simply clean up the rogue surface. - - src/cairo-xcb-surface.c | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit fd96aa3de2218dcc6671636f35a24738e3cae996 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 19:07:31 2010 +0000 - - gl: Hook in glyph cache finalisation. - - src/cairo-gl-glyphs.c | 23 ++++++++++++----------- - src/cairo-gl-private.h | 7 ++++--- - src/cairo-gl-surface.c | 4 ++++ - 3 files changed, 20 insertions(+), 14 deletions(-) - -commit c7511fa7ad932675c8cebba504d3c538ead3c44c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 17:21:38 2010 +0000 - - drm/intel: Revoke glyph caches on device finish - - src/drm/cairo-drm-i915-glyphs.c | 2 +- - src/drm/cairo-drm-i965-glyphs.c | 2 +- - src/drm/cairo-drm-intel-private.h | 1 + - src/drm/cairo-drm-intel.c | 18 ++++++++++++------ - 4 files changed, 15 insertions(+), 8 deletions(-) - -commit 9ba73bdfc451d205f411e3dbc8073ae10d58b4f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 17:17:08 2010 +0000 - - gl: Decouple cache from scaled-font on context destruction - - src/cairo-gl-glyphs.c | 8 +++++++- - src/cairo-gl-private.h | 4 ++++ - src/cairo-gl-surface.c | 14 +++++++++++++- - src/cairo-scaled-font-private.h | 2 ++ - src/cairo-scaled-font.c | 1 + - 5 files changed, 27 insertions(+), 2 deletions(-) - -commit 7812d095ab7657400be470af8fdc7f20eaedd6c5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 16:46:58 2010 +0000 - - drm/intel: Replace open-coding of _cairo_rtree_node_remove() - - src/drm/cairo-drm-intel.c | 17 +++-------------- - 1 files changed, 3 insertions(+), 14 deletions(-) - -commit 48d847162558dc09388942a96ff443c253068d68 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 13:05:23 2010 +0000 - - recording: Cleanup the clip on error. - - Whilst recording the commands, remember to cleanup the local clip after - detecting an error. - - src/cairo-recording-surface.c | 5 +++++ - src/cairo-surface-snapshot.c | 2 ++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit c87737c2bf983a8555b08c526050423a5eab5642 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 13:04:19 2010 +0000 - - ps: Skip surface emission if in error state. - - During finish, if we encountered an error during the construction of the - surface, simply proceed to cleanup rather than emit the incomplete and - potentially subtly broken output. - - src/cairo-ps-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit e961cdf568f4551bbd6bca6b7505fc9f9b0805f9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 10:48:48 2010 +0000 - - image: Special case wholly unbounded fixups. - - In the event of an empty bounded rectangle, the computation of the - unbounded - bounded rectangles leads to negative areas, integer overflow - and death. - - [And similarly for the derived surfaces.] - - src/cairo-image-surface.c | 24 ++++++++++ - src/cairo-xcb-surface-render.c | 62 ++++++++++++++----------- - src/drm/cairo-drm-i915-surface.c | 62 ++++++++++++++----------- - src/drm/cairo-drm-i965-surface.c | 95 ++++++++++++++++++++----------------- - 4 files changed, 145 insertions(+), 98 deletions(-) - -commit 844d8ea57d69c9a68fbec64f4438953850f7657f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 10:37:18 2010 +0000 - - surface: Check pattern for error status. - - Ensure that the error status from patterns is propagated when used by - doing so in the surface layer. Similarly check that a surface pattern - has not been finished. - - src/cairo-surface.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 55 insertions(+), 4 deletions(-) - -commit 213093f43770d078dd146d5a10b9a5803097b8a8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 22 10:36:47 2010 +0000 - - ps: Free page on error path. - - src/cairo-ps-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c8a8e57d6af7261d70103ddd46f8da409896b5e7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:42:34 2010 +0000 - - script: Use a stack to push/pop recursed line numbers. - - Still not entirely helpful in the event of recursive parsing without a - reference to the file as well as the line number in the event of an - exception. - - util/cairo-script/cairo-script-scanner.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 4b4de940ee6e76ec9677b5468ebf709c6d2db982 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:41:18 2010 +0000 - - script: Remove the version check. - - When compiling we can depend on whatever version of cairo we need, but - we should be wary of checking for runtime compatibility when building - standalone. - - util/cairo-script/cairo-script-operators.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit a7cb314b060f6ada855ec75b283ef64bf835824a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:40:54 2010 +0000 - - test/any2ppm: Check for errors after executing script. - - test/any2ppm.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit b73a33b89e43d63a437035a05cf91df5c3b4d186 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:40:19 2010 +0000 - - script: Make the test suite run again! - - src/cairo-script-surface.c | 194 +++++++++++++++++++++++--------------------- - 1 files changed, 103 insertions(+), 91 deletions(-) - -commit 2a59f0af6aab5fe0ebb19195d4c018fc5221016c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:38:27 2010 +0000 - - wrapper: Apply device transform inverse as appropriate. - - Fixes many failures of the paginated surfaces as they replayed through - the recording surfaces. - - src/cairo-surface-wrapper.c | 89 +++++++++++++++---------------------------- - 1 files changed, 31 insertions(+), 58 deletions(-) - -commit 5720fff827e5149b201a9366179db93ce258b120 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:37:38 2010 +0000 - - ps: Destroy the local surface on error. - - Minor leak of the intermediate surface when converting to an opaque - source following an error. - - src/cairo-ps-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 35f318a59cde9c635036cc14c90878400528882d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 21 20:36:26 2010 +0000 - - paginated: Use common is_clear. - - As equivalent processing to the page_is_blank optimisation done inside - the paginated surface is applied by the gstate, remove the redundant - code. - - src/cairo-paginated-surface-private.h | 1 - - src/cairo-paginated-surface.c | 34 +-------------------------------- - 2 files changed, 1 insertions(+), 34 deletions(-) - -commit b101c7dab8cdbf7b9321355a8d2311b2f863f011 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 11 01:48:43 2010 +0000 - - gl: Add EGL interface - - Enable the EGL backend for GL. - - boilerplate/Makefile.win32.features | 8 ++ - boilerplate/cairo-boilerplate-gl.c | 98 ++++++++++++++++++++ - build/Makefile.win32.features-h | 1 + - configure.ac | 52 ++++++----- - src/Makefile.sources | 1 + - src/Makefile.win32.features | 8 ++ - src/cairo-egl-context.c | 168 +++++++++++++++++++++++++++++++++++ - src/cairo-gl.h | 14 +++ - 8 files changed, 327 insertions(+), 23 deletions(-) - -commit ca6e4e1f91e0a90666551d2fa74cfc04484d4e80 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 11 01:48:08 2010 +0000 - - spans: Initialise rects->is_bounded for polygon compat. - - src/cairo-spans.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6754f1db1716a6570c82e207e21b09a10de120ba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 10 15:13:00 2010 +0000 - - gstate: Account for undropped non-transformed glyphs. - - In the simplest case of pass-through glyphs we made a mistake in - propagating the number of glyphs. - - Reported-by: Christophe de Dinechin <christophe@taodyne.com> - - src/cairo-gstate.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5fb36fe5ab2a2b30da213557936122a829493906 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 8 15:32:15 2010 +0000 - - drm/i965: Acquire device around commit. - - src/drm/cairo-drm-i915-surface.c | 4 +- - src/drm/cairo-drm-i965-shader.c | 13 +++-- - src/drm/cairo-drm-i965-surface.c | 106 ++++++++++++++++++++++++++------------ - 3 files changed, 82 insertions(+), 41 deletions(-) - -commit 4083f40fbd085dc2039fe62592cf1239373c7fca -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 7 16:59:57 2010 +0000 - - glew: don't pull in GL/glu.h - - src/glew/GL/glew.h | 10 ---------- - 1 files changed, 0 insertions(+), 10 deletions(-) - -commit 473e006ad6ef0959c8a7059aba0689a16a937732 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Mar 6 18:12:36 2010 +0000 - - test: Add a1-mask-sample - - Test sampling positions with a NEAREST mask. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/a1-mask-sample.c | 83 +++++++++++++++++++++++++++++++++++++++++++ - test/a1-mask-sample.ref.png | Bin 0 -> 148 bytes - 4 files changed, 85 insertions(+), 0 deletions(-) - -commit f79b2ceea4722b5059563be1eb55de617fecc004 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 19:52:58 2010 +0000 - - drm/i915: Discard redundant solitary clips during fill - - src/drm/cairo-drm-i915-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 7cea9ae290ba24e4d2f87cef4228cce5fcb3181b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 17:23:55 2010 +0000 - - drm/i915: Apply more micro-optimisations when targetting CONTENT_ALPHA - - src/drm/cairo-drm-i915-shader.c | 51 ++++++++++++++++++++++++++++---------- - 1 files changed, 37 insertions(+), 14 deletions(-) - -commit dce8b028cd5b249054e8197a536c29f6ba4110da -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 17:13:53 2010 +0000 - - drm/i915: Adjust clip matrix for clip origin. - - src/drm/cairo-drm-i915-shader.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit 8e702044b3816002011488c56f1ec9c6b9682eee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 17:13:02 2010 +0000 - - drm/i915: Handle clip/combine coords for spans. - - src/drm/cairo-drm-i915-spans.c | 71 ++++++++++++++++++++++++---------------- - 1 files changed, 43 insertions(+), 28 deletions(-) - -commit e1f0c2e73fa8cda9e38ab182288201fa27a3b363 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 17:11:58 2010 +0000 - - perf: Check for and include unistd.h - - isatty() and access() require unistd.h, so include it! - - perf/cairo-perf-trace.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 271752b944ef0898b5d1be57f26de83c8e40ae3a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Mar 4 08:24:08 2010 +0000 - - gl: Pad the gradient texture. - - Fixes test/linear-gradient-subset - - src/cairo-gl-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit afe6f4f0519606c4bc7e9b705b0cae75692d7af2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 23:06:43 2010 +0000 - - drm/i915: Use a preserved temporary to store the radial texcoord. - - src/drm/cairo-drm-i915-shader.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 4b2e0478822cb8415be4bac21950dbf03c0f01c8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:45:31 2010 +0000 - - drm/i915: Eliminate redundant radial vertex shader. - - It is always equivalent to a simple texture transformation, so reduce it - to the texture shader. - - src/drm/cairo-drm-i915-glyphs.c | 13 ----------- - src/drm/cairo-drm-i915-private.h | 1 - - src/drm/cairo-drm-i915-shader.c | 8 +------ - src/drm/cairo-drm-i915-spans.c | 42 +------------------------------------ - 4 files changed, 3 insertions(+), 61 deletions(-) - -commit 51610517982a4cf70ca8d396d0ad4c58a477c5e9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:56:56 2010 +0000 - - drm/i915: Fix encoding of negated operand channels - - Long ago when converting the pixel shader structs into macros and - reducing the code size by ~100k (the inlines were too depth for constant - propagation and CSE), I broke the encoding of negated channels. So - instead use a single bit to indicate a negation rather than 2s - complement (with sign extension into neighbouring channels, oops). The - disadvantage is that expressing the negated channel is a little more - ugly. - - src/drm/cairo-drm-i915-private.h | 22 ++++++++++++++-------- - src/drm/cairo-drm-i915-shader.c | 16 ++++++++-------- - 2 files changed, 22 insertions(+), 16 deletions(-) - -commit 5b973c670807bda2bb355c90ea817e2a2f092f0b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:25:11 2010 +0000 - - drm/i915: Fix crash with linear-step-function - - Avoid the potential divide by zero by falling back to pixman rendered - gradient textures for such troublesome input. - - src/drm/cairo-drm-i915-shader.c | 17 +++++++++++------ - 1 files changed, 11 insertions(+), 6 deletions(-) - -commit 404ead7eebafa7ca077e1d012dde0a598b64245a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:01:49 2010 +0000 - - drm/i915: Ensure simple alpha is written to green on alpha-only surfaces. - - The intricacies of h/w make convoluted s/w. - - src/drm/cairo-drm-i915-shader.c | 20 ++++++++++++++------ - 1 files changed, 14 insertions(+), 6 deletions(-) - -commit 1f2daf652480ef768f847467d9171b5e4a7f01a3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 20:06:08 2010 +0000 - - drm/i915: Avoid double multiplication of linear alpha. - - src/drm/cairo-drm-i915-shader.c | 8 ++------ - 1 files changed, 2 insertions(+), 6 deletions(-) - -commit cdaef58c19a191632473fcbbe688e6231c02b9b2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 18:52:40 2010 +0000 - - drm/i915: Acquire device before shader commit. - - src/drm/cairo-drm-i915-shader.c | 2 + - src/drm/cairo-drm-i915-surface.c | 111 +++++++++++++++++++++++++------------ - 2 files changed, 77 insertions(+), 36 deletions(-) - -commit dd6f96dd4aeb48262d5af8a3006e6404521c151b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 16:06:25 2010 +0000 - - drm/i965: Ignore flushing on device finish. - - src/drm/cairo-drm-i965-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 3692597567f62dd300e8ce8c43d43ac449616041 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 13:56:48 2010 +0000 - - drm/i965: Merge the constants into the surface stream. - - As we can use an offset from the surface base for the constant buffers, - we need to fold the constants into the surface stream. - - src/drm/cairo-drm-i965-private.h | 11 ++---- - src/drm/cairo-drm-i965-shader.c | 26 +++----------- - src/drm/cairo-drm-i965-surface.c | 70 +++----------------------------------- - 3 files changed, 14 insertions(+), 93 deletions(-) - -commit cc585947574f6e17d299a5987ee69162f63d5a52 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 23:06:23 2010 +0000 - - drm/intel: Set the 1D gradient texture to be untiled. - - src/drm/cairo-drm-intel.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 543cf073643b259096ee2a95d91b9067395a7e09 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:19:41 2010 +0000 - - drm/intel: Set default extend mode for rendering gradient subsets. - - src/drm/cairo-drm-intel.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 521d1c1d2c51bca07db1aed3c7f62d860cece3f4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 20:25:54 2010 +0000 - - surface: Simplify is_clear logic. - - As we pre-check whether the operation is a no-op on an already cleared - surface, then for all but a paint with CLEAR and no clip, the result is - a non-clear surface. - - src/cairo-surface.c | 22 ++++++++-------------- - 1 files changed, 8 insertions(+), 14 deletions(-) - -commit 017db956644fa1da22033653490f362d1e3e47e0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 20:06:30 2010 +0000 - - gstate: Use _cairo_pattern_clear for CLEAR. - - src/cairo-gstate.c | 100 ++++++++++++++++++++++++++++++++-------------------- - 1 files changed, 62 insertions(+), 38 deletions(-) - -commit 70412bba0e9fd0ac6e7343d7aebe953355207aab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 17:34:39 2010 +0000 - - test: Avoid derefencing a NULL xcb connection - - test/xcb-surface-source.c | 23 ++++++++++++++--------- - 1 files changed, 14 insertions(+), 9 deletions(-) - -commit 5bfea8447b1b2333218295f51a9474d061192d49 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 3 21:32:13 2010 +0000 - - test: Add references for rounded-rectangle-{fill,stroke} - - test/Makefile.am | 2 ++ - test/rounded-rectangle-fill.ref.png | Bin 0 -> 787 bytes - test/rounded-rectangle-stroke.ref.png | Bin 0 -> 871 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 4126d580d8b9db9217ed17aadcce20b14e77a00b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 2 14:38:36 2010 +0000 - - surface-fallback: Free traps on composite_trapezoids() error - - src/cairo-surface-fallback.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 8a59522bbdc61d5c90f1ae55111b5408865755b3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 2 14:36:16 2010 +0000 - - surface-fallback: Propagate NOTHING_TO_DO - - NOTHING_TO_DO is converted to SUCCESS by the surface layer, so clean up - the code slightly by reducing the number of checks and conversions. - - src/cairo-surface-fallback.c | 15 +++------------ - 1 files changed, 3 insertions(+), 12 deletions(-) - -commit f07195860620959c27d43080a7b987e28222735a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 2 13:57:02 2010 +0000 - - xlib: Handle a1 image uploads through converter - - Fixes test/large-source [xlib] - - src/cairo-xlib-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit f979dd22d8f48e6ac7c50372c7d180c3b590dc74 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 2 11:20:11 2010 +0000 - - image: Don't rely on clip regions being clipped to surface extents. - - Fixes a crash in test/clip-fill-unbounded [xlib-fallback]. - - src/cairo-image-surface.c | 32 ++++++++++++++++++++------------ - 1 files changed, 20 insertions(+), 12 deletions(-) - -commit 15d9c5fcd8881b4593ec23633450a4f629b6d42b -Author: Alexander Shulgin <alex.shulgin@gmail.com> -Date: Sat Feb 20 20:59:32 2010 +0200 - - Added new MIME type CAIRO_MIME_TYPE_URI and it's support in SVG backend - - The rationale behind this change is that when someone is trying to - draw on a SVG surface using image surface patterns, the resulting SVG - file can take up to ridiculous 20 megabytes for 3-4 typical - photographic images in a single SVG file. This also can take - significant amount of CPU time to complete. - - The reason for this behaviour is that currently whenever SVG backend - needs to emit an image tag for a surface pattern it takes a snapshot - of the subject surface, encodes it in PNG, then Base64-encodes and - emits the (huge) resulting string. With use of - cairo_surface_set_mime_data API this can be somewhat improved by - associating JPEG image contents with the corresponding surfaces. - Still this doesn't allow for post-processing of involved photographic - images without regenerating the SVG file. - - As SVG specification allows URIs in the image tag's xlink:href - attribute, it is possible instead of embedding encoded image data to - simply link image files residing physically on the same medium as the - generated SVG file: files on disk under common directory, files on a - web server at common base URI, etc. - - To make this happen we add new (unofficial) MIME type "text/x-uri" and - let users associate URIs with surfaces through - cairo_surface_set_mime_data() API. When SVG backend needs to emit - surface contents and it sees "text/x-uri" attached to the surface, it - emits this data instead of taking snapshot. The URI data is emitted - as is, so correctness check is left solely to the client code. - - doc/public/cairo-sections.txt | 1 + - doc/public/tmpl/cairo-surface.sgml | 7 +++ - src/cairo-surface.c | 16 +++++++- - src/cairo-svg-surface.c | 72 ++++++++++++++++++++++++++++++++++-- - src/cairo.h | 1 + - 5 files changed, 92 insertions(+), 5 deletions(-) - -commit d91bab565c54205f8dd7aa8a9de819dc4bc3551c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 2 08:12:52 2010 +0000 - - test: Remove the double-clip from clip-group-shapes - - A push/pop is an implicit save/restore, so a clip applied inside the - group is temporary, whereas a clip applied outside affects both the - geometry inside *and* the application of the group when painted. So - reset the clip afterwards to get the desired behaviour. - - test/clip-group-shapes.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit e8c819c5227d29dfdf503022339276eb725a3e97 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 1 10:25:01 2010 +0000 - - Warnings cleanup for CAIRO_FORMAT_INVALID. - - A few more fixes required case statements to handle the addition of - CAIRO_FORMAT_INVALID. - - src/cairo-qt-surface.cpp | 2 ++ - src/drm/cairo-drm-i915-surface.c | 2 ++ - src/drm/cairo-drm-i965-shader.c | 2 ++ - src/drm/cairo-drm-i965-surface.c | 1 + - src/drm/cairo-drm-intel-surface.c | 1 + - src/drm/cairo-drm-intel.c | 3 +++ - src/drm/cairo-drm-radeon-surface.c | 1 + - 7 files changed, 12 insertions(+), 0 deletions(-) - -commit 1a7ba1a8061c373cd66d15b3a1c8dfada92745ef -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Mar 1 01:23:17 2010 +0200 - - xcb: Update minimum required versions of libxcb. - - The new xcb surface uses xcb_writev() and xcb_take_socket() - which were introduced in libxcb 1.1.92. The boilerplate - in turn uses the major_code and minor_code fields in - xcb_generic_error_t, which were introduced in 1.4. - - boilerplate/cairo-boilerplate-xcb.c | 6 ++++++ - configure.ac | 5 ++++- - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 5b7f4bb241f3191c1589cd714f373719efded56e -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Feb 28 23:31:06 2010 +0200 - - api: Introduce CAIRO_FORMAT_INVALID formally in the API. - - We were exposing the actual value of CAIRO_FORMAT_INVALID - through API functions already, so it makes sense to just - go ahead and put it in the cairo_format_t enum. - - boilerplate/cairo-boilerplate.c | 2 +- - src/cairo-debug.c | 1 + - src/cairo-gl-glyphs.c | 6 ++++++ - src/cairo-image-surface.c | 6 +++++- - src/cairo-png.c | 1 + - src/cairo-scaled-font.c | 1 + - src/cairo-script-surface.c | 22 ++++++++++++++-------- - src/cairo-win32-surface.c | 6 ++++++ - src/cairo-xcb-surface-render.c | 3 +++ - src/cairo-xlib-display.c | 1 + - src/cairo-xlib-surface.c | 3 +++ - src/cairo-xml-surface.c | 28 +++++++++------------------- - src/cairo.h | 10 ++++++---- - src/cairoint.h | 4 ++-- - src/drm/cairo-drm-gallium-surface.c | 1 + - src/drm/cairo-drm-i915-surface.c | 1 + - src/drm/cairo-drm-intel-surface.c | 2 +- - src/drm/cairo-drm-intel.c | 11 ++++++++--- - src/drm/cairo-drm-radeon-surface.c | 2 +- - test/any2ppm.c | 1 + - test/png.c | 1 + - util/cairo-script/cairo-script-operators.c | 5 +++++ - util/cairo-sphinx/sphinx.c | 9 ++++++--- - util/cairo-trace/trace.c | 4 ++++ - 24 files changed, 88 insertions(+), 43 deletions(-) - -commit 620cd9c2be4a6bef790e6818652470a5c53d578d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 28 09:09:20 2010 +0000 - - image: Allow reduction of repeat modes for unity scaled patterns. - - src/cairo-image-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 9ecb0f3cec491264041d0d3718595ad95164980a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Feb 28 01:42:10 2010 +0200 - - image: Fix bug optimizing surface pattern extend modes. - - The image surface tries to convert surface pattern's extend - modes to EXTEND_NONE, if it can, when converting a cairo_pattern_t - to a pixman_image_t. The check was not taking into account the - transformation matrix on the pattern, so it was possible to - trick it into using EXTEND_NONE by downscaling the source - pattern enough. This patch changes the optimization to only - take if the pattern has no transformation. - - Fixes surface-pattern-scale-down-extend-{pad,reflect,repeat} - failures in the test suite for the image backend. - - src/cairo-image-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 260d7f8ace9dea8ff6b3a70f481e433cf399a3d2 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Feb 27 17:41:28 2010 +0200 - - test: Test downscaling and extending a surface pattern. - - Franz Schmid reported a regression in 1.9.6 when downscaling - and using EXTEND_REPEAT for an image surface pattern. This - patch adds such tests for every extend mode. - - test/Makefile.sources | 1 + - .../surface-pattern-scale-down-extend-none.ref.png | Bin 0 -> 329 bytes - test/surface-pattern-scale-down-extend-pad.ref.png | Bin 0 -> 320 bytes - ...rface-pattern-scale-down-extend-reflect.ref.png | Bin 0 -> 328 bytes - ...urface-pattern-scale-down-extend-repeat.ref.png | Bin 0 -> 330 bytes - test/surface-pattern-scale-down-extend.c | 107 ++++++++++++++++++++ - 6 files changed, 108 insertions(+), 0 deletions(-) - -commit ebadc2ed0810d9941a2f44586016073fea90115b -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Feb 27 03:24:55 2010 +0200 - - test: Add tests covering more clip fast paths in groups. - - The clip-group-shapes-* tests check that it doesn't - matter whether the clip path is set before or after - pushing a group using specific types of clip paths - (aligned/unaligned rectangles and general paths.) - - test/Makefile.sources | 1 + - test/clip-group-shapes-aligned-rectangles.ref.png | Bin 0 -> 378 bytes - test/clip-group-shapes-circles.ref.png | Bin 0 -> 1510 bytes - .../clip-group-shapes-unaligned-rectangles.ref.png | Bin 0 -> 415 bytes - test/clip-group-shapes.c | 189 ++++++++++++++++++++ - 5 files changed, 190 insertions(+), 0 deletions(-) - -commit e8d0b4fb39eba799e8649df6dd609f6100efb95e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 26 10:28:23 2010 +0000 - - gl: Markup internal functions with cairo_private - - src/cairo-gl-private.h | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit ef807119ff8ee23c0444f1197f92b06a5caf6024 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Feb 25 13:58:53 2010 +0200 - - compiler: Explain the slim hidden macros. - - The slim_hidden_* macro definitions are rather cryptic at first - sight and I keep needing to rederive how they work just find out - what they're supposed to do. This patch adds a comment explaining - how they're used and work. - - src/cairo-compiler-private.h | 30 ++++++++++++++++++++++++++++++ - 1 files changed, 30 insertions(+), 0 deletions(-) - -commit dcf897967d54f579c737bbcc10af7fa295b586e5 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Feb 21 01:45:30 2010 +0200 - - test: Fix a wrongly typed return value in scaled-font-zero-matrix. - - The test was returning a cairo_status_t, but should be returning - a cairo_test_status_t instead. When the test failed it was - being reported as having crashed, rather than merely failed, - because the enum value of CAIRO_TEST_CRASHED happened to be - same as the cairo_status_t value of the cairo context at - the end of the failing test. - - test/scaled-font-zero-matrix.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8bb06915ed6628c6d8978b6c2fec474bbf08d7e9 -Author: Benjamin Otte <otte@redhat.com> -Date: Tue Feb 23 21:01:13 2010 +0100 - - image: split cairo_image_surface_coerce() - - Split into a general cairo_image_surface_coerce() that coerces to one of - the 3 supported formats (ARGB32, RGB24, A8) based on content and the - more general cairo_image_surface_coerce_to_format() that coerces to a - specified format. - - src/cairo-gl-glyphs.c | 3 +-- - src/cairo-gl-surface.c | 3 +-- - src/cairo-image-surface.c | 14 ++++++++++++-- - src/cairo-png.c | 3 +-- - src/cairo-scaled-font.c | 2 +- - src/cairo-script-surface.c | 4 +--- - src/cairo-svg-surface.c | 4 ++-- - src/cairo-type3-glyph-surface.c | 2 +- - src/cairo-xcb-surface-render.c | 21 ++++----------------- - src/cairoint.h | 8 ++++++-- - 10 files changed, 30 insertions(+), 34 deletions(-) - -commit b7c42b6aaa2dba09ed3ff9ae85eae27bec268713 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 23 19:27:16 2010 +0000 - - drm: Add missing private headers - - Reported by: Thomas Jones <thomas.jones@utoronto.ca> - - src/Makefile.sources | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6ab5f89571b0252496d58242ed3060a9486d68d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 23 08:54:58 2010 +0000 - - bo-rectangular: Fix incorrect skipping of colinear eo edges - - Fixes test/bug-bo-rectangular - - After skipping edges, we need to bd careful to only terminate the box on - a closing edge. - - src/cairo-bentley-ottmann-rectangular.c | 31 ++++++++++++++----------------- - 1 files changed, 14 insertions(+), 17 deletions(-) - -commit 1897156d96d77ff28f585794c1eb1baffa105488 -Author: Benjamin Otte <otte@gnome.com> -Date: Tue Feb 23 08:41:27 2010 +0000 - - test: Add bug-bo-rectangular - - Exercises a bug found in the special case rectangular tessellator with - colinear eo edges. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/bug-bo-rectangular.c | 67 +++++++++++++++++++++++++++++++++++++++ - test/bug-bo-rectangular.ref.png | Bin 0 -> 950 bytes - 4 files changed, 69 insertions(+), 0 deletions(-) - -commit 21b2457aabf7df2a9f040751cd48e396443262f1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Feb 22 15:26:37 2010 +0000 - - fallback: Initialize rects.is_bounded for span renderer. - - src/cairo-surface-fallback.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 6dd22b767808f721de5d00fe384711ffaa269453 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Feb 22 15:24:08 2010 +0000 - - gl: Initialise glyphs mask to ensure allocation in absence of stash. - - src/cairo-gl-glyphs.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 668ac047e6c790b0f8f58c52f169c688caa81678 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Feb 22 14:57:01 2010 +0000 - - gl: Avoid attempting to create a program on GLSL-incapable h/w for spans - - src/cairo-gl-shaders.c | 17 ++++++++++++----- - src/cairo-gl-surface.c | 6 ++++++ - 2 files changed, 18 insertions(+), 5 deletions(-) - -commit 29df5c91d02276211962a083284feb9a424f0d97 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Feb 22 14:46:18 2010 +0000 - - gl: Return unsupported for h/w that cannot handle shaders. - - Remove the ASSERT_NOT_REACHED and propagate the unsupported status so - that we fallback to fixed-function gracefully. - - src/cairo-gl-shaders.c | 28 +++++++++++++++------------- - 1 files changed, 15 insertions(+), 13 deletions(-) - -commit 9f46bad301eff967dc0790fc271d872f8a45cedb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Feb 22 14:20:34 2010 +0000 - - bo-rectangular: Prevent invalid read during edge traversal - - Benjamin Otte tracked down an invalid read triggered by WebKit. The - cause is that we attempt to dereference the list_head as an edge as we - failed to check that during the skipping of colinear edges we advanced - to the end, under the false assumption that there would always - be a closing edge in a rectangle. This assumption is broken if the tail - rectangles having colinear right edges. - - src/cairo-bentley-ottmann-rectangular.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 75db4f0ece194b7aa0455509785a300784778ec4 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Feb 22 02:26:47 2010 +0200 - - text: Fix assert failure from compositing by SOURCE with a mask internally. - - Change the operator used to upgrade the format of a glyph mask from - CAIRO_OPERATOR_SOURCE to CAIRO_OPERATOR_ADD. - - The _cairo_scaled_font_show_glyphs() function upgrades the pixel - format of a glyph mask by calling _cairo_surface_composite() to copy - the mask to an image surface of the upgraded destination. The way it - was doing it however was to use CAIRO_OPERATOR_SOURCE, a white source - pattern and the glyph's rasterised glyph as the mask pattern. This - combination isn't supported by _cairo_surface_composite(), which - asserts that no mask is present when the operator is SOURCE or CLEAR. - - Reported by Mikael Magnusson to #cairo on irc.freenode.net. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 20f8f17f0e494a57a6b413be76f9333b42d88014 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Feb 20 21:42:23 2010 +0100 - - xcb: Fix compilation without dri2 - - XCB should be able to compile without xcb-drm. To do so it - can include xcb/dri2.h only if xcb-drm is enabled. - - src/cairo-xcb-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit fc7be0014d91c8536db8a15ae98b5e78c354c160 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Feb 19 17:39:50 2010 -0800 - - Update version to 1.9.7. - - Following the 1.9.6 snapshot. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cb090136b2b0b89bde69d9575f2f592b46e144e8 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Feb 19 17:28:29 2010 -0800 - - Update REFERENCE_IMAGES list for "make distcheck". - - As usual, "make distcheck" does not work until we update this list. - - test/Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 20cf7c92b332a5fd28227f0cdaa50e3f1080c038 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Feb 19 17:24:33 2010 -0800 - - Update version to 1.9.6 - - For a new cairo 1.9.6 snapshot. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1c3d417c30bd60c51512d23440896a6a7f51bf23 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Feb 19 17:23:16 2010 -0800 - - NEWS: Add notes for the 1.9.6 snapshot. - - Based on a very brief reading of the git log. There's certainly - a lot of interesting stuff missing here. - - NEWS | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 112 insertions(+), 2 deletions(-) - -commit 9057c4b6be5f5cc6f8905e017dde534402ddedda -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 17 12:37:07 2010 -0800 - - test: Add an option to explicitly specify a test name to the runner. - - test/cairo-test-runner.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit e0a948bd2ff3504f5d8b3b3f2136cd9b86cf8ec6 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 17 11:48:41 2010 -0800 - - gl: Be sure to do linear interpolation on gradients. - - src/cairo-gl-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit f1e794956f60a935bfc38ae1c2c2d51d37aadee3 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 17 11:03:52 2010 -0800 - - gl: Stop trying to handle first/last stop offset in the gradient shaders. - - Since moving to pixman for the gradient textures, first=0 and last=1, - so there's no need to rescale to 0,1 any more. Shaves 6 Gen4 ISA - instructions, including 2 inverses, in the radial fragment shader. - - src/cairo-gl-private.h | 4 --- - src/cairo-gl-shaders.c | 12 ----------- - src/cairo-gl-surface.c | 51 ++--------------------------------------------- - 3 files changed, 3 insertions(+), 64 deletions(-) - -commit f813a0243b90ea4151f60f3d13bb6c84d21270df -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 17 10:58:16 2010 -0800 - - gl: Remove the old unused radial/linear gradients shaders. - - They're dynamically generated now for source/mask. - - src/cairo-gl-private.h | 6 --- - src/cairo-gl-shaders.c | 117 ------------------------------------------------ - 2 files changed, 0 insertions(+), 123 deletions(-) - -commit 8da843e996bda7152abb217b3f461a8091dbc880 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 17 10:54:39 2010 -0800 - - gl: Reduce complexity of radial fragment shaders. - - This shaves 1 Mesa IR instruction, and 6 Gen4 ISA instructions. - - src/cairo-gl-shaders.c | 10 ++-------- - 1 files changed, 2 insertions(+), 8 deletions(-) - -commit 89bdc2f8d55d951e15b77e6737c57b208d984b0a -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 4 23:17:59 2010 -0800 - - gl: Implement draw_image for window targets. - - Creates a texture and draws with it instead of doing TexSubImage. - Open question is whether this wouldn't be better in general. Fixes - several failures with ARB_texture_rectangle path due to fallbacks to - window drawing. - - src/cairo-gl-surface.c | 157 ++++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 124 insertions(+), 33 deletions(-) - -commit fcd29473ff71b74bf541199293a966df2232fd63 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 16 13:47:41 2010 -0800 - - gl: Fix glyphs texture coordinates for ARB_texture_rectangle. - - Fixes most of the text testcases to match the - ARB_texture_non_power_of_two results. - - src/cairo-gl-glyphs.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit e845450905f373e4fcb9ae4717cfd2c3e6472423 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 16 13:18:33 2010 -0800 - - gl: Add GLSL support for ARB_texture_rectangle, and repeat/reflect fallbacks. - - Most testcases are now passing like the ARB_texture_non_power_of_two - case. EXT_texture_rectangle support is dropped in favor of - ARB_texture_non_power_of_two. If we have issues with drivers not - having that but having EXT (which just lacks the GLSL part of the - spec), we can split it out. Right now non-GLSL support in cairo-gl is - probably in bad shape anyway and will require someone that cares for - it in order to get fixed up. - - src/cairo-gl-shaders.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-surface.c | 21 +++++++++++++++------ - 2 files changed, 59 insertions(+), 6 deletions(-) - -commit 40294377cb26fab7bcf17ee98b8e4f5bf9778ca2 -Author: Dave Airlie <airlied@redhat.com> -Date: Sat Jan 30 19:24:31 2010 +1000 - - gl: initial support for EXT_texture_rectangle extension - - The only issue is the repeat modes aren't supported for rectangular - textures. In any case even with ARB_npot radeon's pre-r600 lie and - fail to do repeats anyway. - - src/cairo-gl-glyphs.c | 25 +++++----- - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 124 +++++++++++++++++++++++++++++------------------- - 3 files changed, 89 insertions(+), 61 deletions(-) - -commit 6542a515f04d52d10fdc89ee9abc76e54282a2d8 -Author: Eric Anholt <eric@anholt.net> -Date: Sun Feb 7 20:26:56 2010 +0100 - - gl: Reduce the size of the gradient texture for small numbers of stops. - - This code is stolen straight from cairo-drm-intel.c. This saves a - bunch of time calculating interpolated points when we just do - interpolation between points at sampling time anyway. Reduces - firefox-talos-svg from 47 seconds back to the 42 it was at before the - pixman change. - - This regresses the reported result of huge-radial, but there's no - visible difference. - - src/cairo-gl-surface.c | 63 ++++++++++++++++++++++++++++++++++------------- - 1 files changed, 45 insertions(+), 18 deletions(-) - -commit 3b678a88b0d026bb765fd9cdff92fe7235e19848 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 16:44:25 2010 +0000 - - drm/i915: Set a source for unbounded fixups. - - src/drm/cairo-drm-i915-surface.c | 52 ++++++++++++++++++++++++++++++-------- - 1 files changed, 41 insertions(+), 11 deletions(-) - -commit 45a275ee29095b69c620ece868411885f4574be9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 14:12:24 2010 +0000 - - drm/i915: Use correct linear mode for mask. - - src/drm/cairo-drm-i915-shader.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 37dbf157f354234d04cd4f0c5d069ff0d535e862 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 14:08:32 2010 +0000 - - clip: Avoiding derefencing NULL clip_region - - src/cairo-image-surface.c | 26 ++++++++++++++------------ - src/cairo-xcb-surface-render.c | 26 ++++++++++++++------------ - 2 files changed, 28 insertions(+), 24 deletions(-) - -commit 6995e1d982a3ad84a1b74730ce557840745fcd8e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 14:08:14 2010 +0000 - - boilerplate: Include X11.h for GL/GLX - - boilerplate/cairo-boilerplate-gl.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5390df961f6dff8e25e5aac21062026a81710d88 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 12:20:35 2010 +0000 - - clip: Restrict composite extents to clip extents - - Fixes test/clip-rectangle-twice. - - src/cairo-clip-private.h | 6 +++ - src/cairo-clip.c | 84 ++++++++++++++++++++++++++++++++++++++ - src/cairo-image-surface.c | 74 ++++++++------------------------- - src/cairo-surface-fallback.c | 71 +------------------------------ - src/cairo-xcb-surface-render.c | 78 +++++++++-------------------------- - src/drm/cairo-drm-i915-surface.c | 47 +-------------------- - src/drm/cairo-drm-i965-surface.c | 47 +-------------------- - 7 files changed, 137 insertions(+), 270 deletions(-) - -commit 51047483f462a905567b42275ae061ead4df0a07 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 12 12:18:30 2010 +0000 - - test: Add clip-twice-rectangle - - Jeff Muizeelar found another bug with clipping whereby the clip was - been incorrectly discarded. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/clip-twice-rectangle.c | 70 +++++++++++++++++++++++++++++++++++++ - test/clip-twice-rectangle.ref.png | Bin 0 -> 323 bytes - 4 files changed, 72 insertions(+), 0 deletions(-) - -commit 22b5f78c1c1ae7d289a99a3c52354bba3b9e817f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Feb 11 10:38:51 2010 +0000 - - gl: Remove eagle support - - Eagle is no more, Kristian has superseded it with true EGL support. He - is so happy... - - boilerplate/Makefile.win32.features | 10 -- - build/Makefile.win32.features | 1 - - build/Makefile.win32.features-h | 3 - - build/configure.ac.features | 1 - - configure.ac | 12 --- - src/Makefile.sources | 2 - - src/Makefile.win32.features | 14 --- - src/cairo-eagle-context.c | 185 ----------------------------------- - src/cairo-gl.h | 12 --- - 9 files changed, 0 insertions(+), 240 deletions(-) - -commit ed4a30b38311e4ce0730ecd6026432f4a1e8ddf7 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Feb 10 22:10:23 2010 +0100 - - build: Add -Wdeclaration-after-statement - - ... and fix the compile errors from it I get on my build. - - It's Cairo style to put declarations before the code, so better warn - about it. - Besides, it eases porting to old compilers like MSVC. - - build/configure.ac.warnings | 2 +- - src/cairo-gl-shaders.c | 8 ++++---- - src/cairo-gl-surface.c | 3 ++- - src/cairo-xcb-surface-core.c | 3 ++- - 4 files changed, 9 insertions(+), 7 deletions(-) - -commit 4113e455a317785b83324215a6b0156995665989 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Feb 10 21:09:56 2010 +0000 - - drm/i965: fix use of uninitialized variable whilst dumping errors - - Cut'n'paste bug from i915 error path. - - src/drm/cairo-drm-i965-surface.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 5d34902c0cb9712179292112fbdb0f06be327fd8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Feb 10 12:10:16 2010 +0000 - - script: Compile without mmap - - Should fix: - Bug 26509 - Cairo fails to compile without mmap - http://bugs.freedesktop.org/show_bug.cgi?id=26509 - - As reported by Hib Eris, Cairo files to compile under a mingw32 - cross-compiler as we use a structure only defined if HAVE_MMAP - unconditionally. - - util/cairo-script/cairo-script-operators.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit fb5af4ae407044d1c0d0144ec13f5951075426a3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Feb 10 12:00:59 2010 +0000 - - drm/intel: An interrupted SET_TILING modifies the input parameters - - If a signal interrupts the SET_TILING ioctl, the tiling and stride - values are updated to reflect the current condition of the buffer, so we - need to restore those to the desired values before repeating the ioctl. - - src/drm/cairo-drm-intel.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3c66c721d1bb1db6052acf722f609dcbe56431f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 9 08:48:42 2010 +0000 - - qt: Fix compile error. - - Update after prototype changed for create_similar(), as pointed out by - augzilla. - - src/cairo-qt-surface.cpp | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit a1e5b07fa834819b8d9df9fa56758639a08262d7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 7 20:26:27 2010 +0000 - - ps: Initialise page bbox to page size - - src/cairo-ps-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 44b6370cb04d27e1ae3e50558a9085d318990938 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 7 19:36:29 2010 +0000 - - ps: Propagate NOTHING_TO_DO - - The upper layers should know what to do if there is nothing to be done, - so pass on that knowledge. - - src/cairo-ps-surface.c | 36 ++++-------------------------------- - 1 files changed, 4 insertions(+), 32 deletions(-) - -commit a4793d1331845b85a9c1810035119dfbcffa5082 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 7 19:27:32 2010 +0000 - - test: Add linear-gradient-subset - - It was observed that we never actually test the condition that the - gradient is only defined for a portion of its range, i.e. the starting - offset is >0 and the ending offset is <0. By definition the colour - between 0 and start offset is the start color, so check that this - behaviour is followed by all backends. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/linear-gradient-subset.c | 127 +++++++++++++++++++++++++++++++++++ - test/linear-gradient-subset.ref.png | Bin 0 -> 825 bytes - 4 files changed, 129 insertions(+), 0 deletions(-) - -commit 0f99303cd6d68df79070200a843194a20ad1c597 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 7 12:40:19 2010 +0000 - - gl: Use pixman to create the gradient texture - - This is just for consistency as we know that pixman has to handle all - the corner cases anyway... - - src/cairo-gl-surface.c | 147 ++++++++++++++++++++++++++--------------------- - 1 files changed, 81 insertions(+), 66 deletions(-) - -commit b028d287e6effe30833963f4df40db3846e7f4da -Author: Eric Anholt <eric@anholt.net> -Date: Fri Feb 5 07:25:04 2010 -0800 - - [gl] Make the VBO once at startup instead of recreating per glyphs/spans. - - This shaves 2% off of firefox-talos-gfx. - - src/cairo-gl-glyphs.c | 10 ++-------- - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 8 +++----- - 3 files changed, 6 insertions(+), 13 deletions(-) - -commit 696a715702ed18bbe3f7d8b97654a055fa37444e -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 21:34:24 2010 -0800 - - [gl] Add radial gradients acceleration. - - This is significantly cribbed from Zach Laine's work, but reworked so - that gradients can be plugged in as either source or mask operands for - any of the paths. - - src/cairo-gl-private.h | 13 +++++ - src/cairo-gl-shaders.c | 77 +++++++++++++++++++++++++++- - src/cairo-gl-surface.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 216 insertions(+), 3 deletions(-) - -commit 297b0ab47fa63ef99e65b6834b731c260ea3e941 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 4 23:57:43 2010 -0800 - - [gl] When making a boilerplate GLX window, ensure it has alpha. - - cairo_gl_surface_create_for_window assumes CONTENT_COLOR_ALPHA, so - make sure the fbconfig we choose is good enough. Fixes gl-window - testcase results to basically match the non-window testcases. - - boilerplate/cairo-boilerplate-gl.c | 17 +++++++++-------- - 1 files changed, 9 insertions(+), 8 deletions(-) - -commit 6708bc0593a649d083ede429ae73f06691edc018 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 4 23:47:33 2010 -0800 - - [gl] When filling a gradient texture, multiply alpha after interpolating. - - Fixes gradient-alpha testcase. - - src/cairo-gl-surface.c | 20 +++++++++----------- - 1 files changed, 9 insertions(+), 11 deletions(-) - -commit e426cdd56973ff1114dac5e8b1130180d43631b0 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 16:03:52 2010 -0800 - - [gl] Implement linear gradients acceleration. - - This is significantly cribbed from Zach Laine's work, but reworked so - that gradients can be plugged in as either source or mask operands for - any of the paths. - - This cuts the runtime of firefox-talos-svg in half on my GM45, at the - expense of gradient-alpha. surface-pattern-operator also now fails - due to small rasterization differences. - - src/cairo-gl-glyphs.c | 1 + - src/cairo-gl-private.h | 11 ++++ - src/cairo-gl-shaders.c | 39 ++++++++++++- - src/cairo-gl-surface.c | 139 ++++++++++++++++++++++++++++++++++++++++++++---- - 4 files changed, 176 insertions(+), 14 deletions(-) - -commit 05b18fc09af0e0887c652bd482d68f00bec6d4d7 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 4 00:12:58 2010 -0800 - - [gl] Fix create_gradient_texture to premultiply alpha. - - src/cairo-gl-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 31e706454b7f0fa510047f582250a7a2db24dd31 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 15:48:40 2010 -0800 - - [gl] Pull the gradient operand setup out to its own function. - - Hopefully this clarifies what's going on, including the fallthrough to - texture setup on failure. - - src/cairo-gl-surface.c | 77 ++++++++++++++++++++++++++--------------------- - 1 files changed, 43 insertions(+), 34 deletions(-) - -commit 745f263c1c2d263f7c5e78964bf7181f650301cc -Author: T. Zachary Laine <whatwasthataddress@gmail.com> -Date: Wed Feb 3 15:38:02 2010 -0800 - - [gl] Add function for creating a 1D texture to use for gradient lookups. - - Rather than have fragment shaders try to walk a variable-length set of - stops and try to compute the interpolation between the nearest stops - per fragment, we make a little texture representing the gradient along - a line and have the shaders compute texture coordinates along the line - and sample. This should be a good tradeoff between CPU work and GPU - work. - - [anholt: I pulled this set of code out of Zach Laine's tree to use for - gradient acceleration, and wanted to make sure attribution was - appropriate. I applied only minor tweaking] - - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 118 insertions(+), 0 deletions(-) - -commit 88c8304e9072e5a46890a0eb32fcdbc857eb1a12 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 17:06:45 2010 -0800 - - [gl] Sanity check the sampler uniform binding. - - src/cairo-gl-shaders.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 42597170f2303475bb0507f4c6e948eead28c7bd -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 16:55:45 2010 -0800 - - [gl] Convert the spans code to using GLSL when available. - - src/cairo-gl-private.h | 1 + - src/cairo-gl-shaders.c | 35 +++++++++++++++++++++++++++++-- - src/cairo-gl-surface.c | 52 +++++++++++++++++++++++++++++------------------ - 3 files changed, 65 insertions(+), 23 deletions(-) - -commit 8d16fb10ea9940c0c9f311ff08c51d572c068c17 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 15:31:57 2010 -0800 - - [gl] Test for required EXT_bgra and explain what it's used for. - - src/cairo-gl-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit b2d8c9cbf2faec570450d163da140c54e64bbdc8 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 15:25:47 2010 -0800 - - [gl] Use the shader source choice from operand setup instead of DIY. - - src/cairo-gl-glyphs.c | 15 +-------------- - 1 files changed, 1 insertions(+), 14 deletions(-) - -commit 0fceac4d52d4b574b9c1f911b83d15dc7e01691d -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 12:24:41 2010 -0800 - - [gl] Move the component alpha composite to using GLSL when available. - - src/cairo-gl-surface.c | 165 +++++++++++++++++++++++++++++++----------------- - 1 files changed, 108 insertions(+), 57 deletions(-) - -commit 8357336ed7be91ad359d205b1f223486d13215f2 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 11:54:24 2010 -0800 - - [gl] Move normal composites to using GLSL when available. - - src/cairo-gl-private.h | 2 + - src/cairo-gl-surface.c | 55 ++++++++++++++++++++++++++++++++++------------- - 2 files changed, 42 insertions(+), 15 deletions(-) - -commit 106bc158bafa4eecfd7f79422fc19d267c20dcdb -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 3 15:15:02 2010 -0800 - - [gl] Move the glyphs shader construction to a more general location. - - src/cairo-gl-glyphs.c | 213 ++++++++++-------------------------------------- - src/cairo-gl-private.h | 48 +++++++---- - src/cairo-gl-shaders.c | 200 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 273 insertions(+), 188 deletions(-) - -commit f475351f75a3ec079628a2eb2643ebc09f0e5cc8 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 2 19:23:17 2010 -0800 - - [gl] Use GLSL when available for glyph rendering. - - This reduces the CPU work in translating fixed function state to - shaders, but currently is a slight cost on GM45 because we end up - changing shaders more frequently since other parts of the pipeline are - doing fixed function still. - - src/cairo-gl-glyphs.c | 189 +++++++++++++++++++++++++++++++++++++++++++++--- - src/cairo-gl-private.h | 19 +++++ - src/cairo-gl-shaders.c | 10 ++- - src/cairo-gl-surface.c | 58 +++++++++------ - 4 files changed, 240 insertions(+), 36 deletions(-) - -commit 672973caa0c3877b3b9f1c5f5966449ce0d7e239 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 2 11:17:43 2010 -0800 - - [gl] Convert fill_rectangles to the new GLSL core/arb wrapper. - - src/cairo-gl-private.h | 12 +++--- - src/cairo-gl-shaders.c | 106 ++++++++++------------------------------------- - src/cairo-gl-surface.c | 39 +++++++++--------- - 3 files changed, 48 insertions(+), 109 deletions(-) - -commit 416273db34a715a6fa180f52ddfd11b82b6e8b6c -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 2 10:37:42 2010 -0800 - - [gl] Cut out the abstraction of GL_VERTEX_SHADER vs GL_VERTEX_SHADER_ARB. - - They're the same number, so just use the core 2.0 name. - - src/cairo-gl-shaders.c | 38 ++------------------------------------ - 1 files changed, 2 insertions(+), 36 deletions(-) - -commit 48a5a6eefc923db47c35ad7da3b635d205736716 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 2 10:36:16 2010 -0800 - - [gl] Avoid macro obfuscation of the shader impl structures. - - src/cairo-gl-shaders.c | 52 ++++++++++++++++++++++++++++------------------- - 1 files changed, 31 insertions(+), 21 deletions(-) - -commit 25ccc5dcb036554430b66fb1bf5f74766daa5612 -Author: Zach Laine <whatwasthataddress@gmail.com> -Date: Thu Jan 14 11:49:04 2010 -0600 - - [gl] Add shader support code for GL versions < 3.0. - - Adds cairo_gl_shader_program_t, and functions to manipulate same. Multiple GL - entry points for shaders are provided -- one for the pre-GL 2.0 extenstions - entry points, and one for GL 2.0. This code is well tested, but currently - unused in the GL backend. - - src/cairo-gl-private.h | 49 ++++ - src/cairo-gl-shaders.c | 623 +++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 671 insertions(+), 1 deletions(-) - -commit a6897ad3867611bd74f8ab7de4b1e8d8d1c12c71 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Feb 2 11:24:36 2010 -0800 - - [gl] Check for GLSL support once at context init instead of per draw. - - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 11 ++++++++++- - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit b1829a47bff2b03a850d4049f228d2a41e14d6bd -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Feb 3 11:19:26 2010 +0100 - - [quartz] Unbreak mask fallback path - - _cairo_quartz_surface_paint will never fail as it falls back to image - when CoreGraphics can't handle the requested operation. This means that - upon fallback the ClipImage set by the masking code gets ignored, thus - the mask fallback path is broken. Using the _cg function ensures that - masking is either completely done by CoreGraphics, or the fallback path - passes the mask operation to image. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 597dd24ddcc763281c82790b7677e54dc2db8f92 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Feb 3 08:53:44 2010 +0000 - - drm/i915: Free potential leak of cloned textures. - - src/drm/cairo-drm-i915-shader.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 913a31494ec4bd000dfa303e362d8273b6857cfe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 17:49:09 2010 +0000 - - drm/i915: Increase batch buffer space. - - src/drm/cairo-drm-i915-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1315323b20398c7c4efa68e4e1c7f6fd6c1d8d91 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 17:38:06 2010 +0000 - - drm/i915: check for batch buffer overflow. - - Oops, the check for sufficient batch space mysteriously disappeared - during the rearrangement. - - src/drm/cairo-drm-i915-private.h | 3 -- - src/drm/cairo-drm-i915-shader.c | 44 ++++++++++++++++++++++++++++++++++++++ - src/drm/cairo-drm-i915-surface.c | 35 ------------------------------ - 3 files changed, 44 insertions(+), 38 deletions(-) - -commit e2be50c722347734801468d7d9568a18dbbaaa17 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Jan 29 12:06:13 2010 +0100 - - [quartz] Fix UNSUPPORTED operations - - The fallback path shouldn't be used anymore, thus fallbacks are now - handled by passing unsupported ops to the image backend. - - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-quartz-surface.c | 234 +++++++++++++++++++++++++++++++++++++------- - 1 files changed, 198 insertions(+), 36 deletions(-) - -commit 3e69c38fe642be467fee0cad166b83006741d55c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Jan 24 21:59:32 2010 +0100 - - [quartz] Fix surface to CGImage conversion - - Snapshotting a surface doesn't produce a cairo_image_surface_t. - Acquiring (and later releasing) the surface is needed to access - its image data. - - src/cairo-quartz-surface.c | 75 ++++++++++++++++++++++--------------------- - 1 files changed, 38 insertions(+), 37 deletions(-) - -commit 7aba47e9d87bf09a5fa7e41a3c76c775f28b08f3 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Jan 25 15:09:51 2010 +0100 - - [quartz] Silence compiler warnings - - src/cairo-quartz-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit e9b07d194630f3f5e31eef3606f8e4c188a01d5f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:28:30 2010 +0000 - - drm/i915: Don't tile page sized bo. - - Minor tweak from < to <= so that a page sized bo is also not tiled for - those 32x32 pixmaps... - - src/drm/cairo-drm-i915-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 70ca9dd170ce1cf8941311ec1f3dc117aef141b6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:28:09 2010 +0000 - - drm/i915: Pass the correct length to dump the batchbuffer. - - src/drm/cairo-drm-i915-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3266a1a72be9c0a6b6c0014c4b64098507b6d385 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:27:52 2010 +0000 - - drm: Handle absence of PCI_ID - - src/drm/cairo-drm.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1ecefc53a1d370d9fffb323952dcabeef5b872c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:26:54 2010 +0000 - - pattern: Zero-length gradients are not necessary empty - - Fixes: test/linear-step-function - - If the extend mode is unbounded, then the gradient is also unbound. - - src/cairo-pattern.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 2a59220aa448cd7416f1851c4c62ca6ac396302d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:24:30 2010 +0000 - - test: Add linear-step-function - - Another bug identified by Jeff Muizelaar was that the bounds for a - zero-length (i.e. it started and stopped at the same point) were - miscomputed. This test case exercises that bug. - - Note: I believe the output is wrong here when padding a zero-length - gradient. On the left it should be red, and on the right it should be - blue. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/linear-step-function.c | 60 +++++++++++++++++++++++++++++++++++ - test/linear-step-function.xfail.png | Bin 0 -> 116 bytes - 4 files changed, 62 insertions(+), 0 deletions(-) - -commit 7b37ba8a49dca39a42b5395e0715d3d0a5a89972 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:17:13 2010 +0000 - - clip: Propagate all-clipped when copying - - Fixes test/clip-empty-save. - - The all-clipped flag was not being copied to the new clip, which occurs - for instance when an empty clip is pushed via a gstate save. - - src/cairo-clip.c | 7 ++----- - 1 files changed, 2 insertions(+), 5 deletions(-) - -commit 7dc464bb2bd64d1469b7b03afaf2191ee6d9e28b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 2 16:15:32 2010 +0000 - - test: Add clip-empty-save - - Jeff Muizelaar found a bug in _cairo_clip_init_copy() which was not - correctly propagating the all-clipped status when an empty clip was - saved in the gstate. This test case exercises that bug. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/clip-empty-save.c | 68 ++++++++++++++++++++++++++++++++++++++++++ - test/clip-empty-save.ref.png | Bin 0 -> 118 bytes - 4 files changed, 70 insertions(+), 0 deletions(-) - -commit ab3dc7bb31f7f8b8c4d87c1ae62bd946b260c77e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jan 31 16:59:07 2010 +0000 - - csi-replay: compile fix - - util/cairo-script/csi-replay.c | 32 +++++++++++++++++++++----------- - 1 files changed, 21 insertions(+), 11 deletions(-) - -commit ab605214d151098ad153e8bf74ae0ca71a34c963 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Feb 1 09:27:16 2010 +0100 - - Partially revert "Improve stroking of densely dashed styles" - - This reverts commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 on - cairo-path-stroke. - The changes in cairo-path-stroke are not needed anymore since dash - pattern approximation is now done in gstate before passing the dash - pattern to the backend. - - src/cairo-path-stroke.c | 24 ++++++------------------ - 1 files changed, 6 insertions(+), 18 deletions(-) - -commit 8ffe0fc3825f0f6bc4d06607f6819ea8c2c2040b -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jan 30 09:29:48 2010 +0100 - - Revert "[quartz] Approximate dense dashing patterns" - - This reverts commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96. - Approximation is now done in gstate. - - src/cairo-quartz-surface.c | 32 +++++++++++--------------------- - 1 files changed, 11 insertions(+), 21 deletions(-) - -commit 2e91648bcba06832dfa92bd742c32b2f5c1ad989 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Jan 15 15:46:20 2010 +0100 - - Approximate dash patterns in gstate - - Since approximation is only done when the pattern is sub-tolerance, - it is acceptable to apply it even for vector backends. - By doing it once and for all backends, backends are guaranteed to have - non-degenerate input. - Acked-by: Adrian Johnson <ajohnson@redneon.com> - - src/cairo-gstate.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit 67f666896cbfd0ac2728c7aa1325a7d0b2c8282d -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Jan 24 22:17:18 2010 +0100 - - Improve comments style consistency - - Each line of a multi-line comment should begin with '*'. - - src/cairo-stroke-style.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 45c795a1820e0317b123e7782cefed6ade8996d7 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Jan 15 10:44:58 2010 +0100 - - Improve dash pattern approximation - - Dash pattern approximation was taking the caps style into account - only for coverage computation, but not when computing the new - pattern, thus the computed approximation had a higher coverage if - the caps style was SQUARE or ROUND. - - Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> - - src/cairo-stroke-style.c | 56 ++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 54 insertions(+), 2 deletions(-) - -commit 8d7841048b079ce2a582ff17c90e82e0081e5f42 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Jan 17 19:00:47 2010 +0100 - - Round caps coverage extimate explanation - - Comment on how the round caps coverage has been computed, explaining - the complete procedure. The comments doesn't contain intermediate - (verbose and ugly) results, but when executed in a symbolic math - program (sage, for example) computes the expected results. - - Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> - - src/cairo-stroke-style.c | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit 8558cd579059974758bda696c33f08399267d33e -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 28 17:39:34 2010 -0800 - - [gl] Use GL_MESA_pack_invert to flip get_image of windows around. - - This doesn't have any fallback for a GL that fails to implement the - extension. Fixes 120 testcases for gl-window. - - src/cairo-gl-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 11a120fb8477910f5ac63dc1ebde45c276764783 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Jan 29 14:21:06 2010 +0100 - - Silence autoconf on Mac OS X - - Autoconf was complaining that AC_COMPILE_IFELSE and AC_RUN_IFELSE - were called before AC_GNU_SOURCE. Moving AC_GNU_SOURCE right after - AC_INIT solves this. - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 05d4f9b461749f129b17cc97d6e3e6b49fe8e8d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 29 11:30:49 2010 +0000 - - xlib: Compile fix for no fontconfig - - src/cairo-xlib-screen.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit e3e74641450481e7ad393bbc6fd1a7428be53de1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 29 11:22:26 2010 +0000 - - atomic: Fix up compile on PPC with libatomic-ops - - src/cairo-atomic-private.h | 2 -- - src/cairo-atomic.c | 3 ++- - 2 files changed, 2 insertions(+), 3 deletions(-) - -commit e11d2d0b4d646757fcba11631b6db169e2c183b0 -Author: Alexander Shulgin <alex.shulgin@gmail.com> -Date: Fri Jan 29 09:17:01 2010 +0000 - - surface: Fix detach mime-data after ecda633f887a10da650b4cd3efb17c861a6f519f - - Hi, - - while browsing the git log I've noticed a small mistake in the above - commit, where we reversed the order of init/fini required to reset the - mime-data array. - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5f0a0088af784157d8efe149ed073c8fa010e648 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 28 13:23:39 2010 +0000 - - drm-intel: Unmap a full glyph cache. - - When we swap a full glyph cache for a fresh one, be sure to unmap the - old one prior to release. - - src/drm/cairo-drm-i915-glyphs.c | 2 +- - src/drm/cairo-drm-intel.c | 3 +++ - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 78cd9471200c69c8b3737e859260f4552145d958 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 23:45:17 2010 +0000 - - drm: Paranoid assert that the fallback is released upon finish. - - src/drm/cairo-drm-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 5aa1191204e3eed6e3e97e23f37a52bbdfffcbce -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 23:42:26 2010 +0000 - - drm-intel: flush in memory modifications to texture. - - If the surface was written to using a fallback, and so is mapped, we - need to flush those modifications by relinquishing the map. So the next - time the application tries to write to the surface, those writes are - correctly serialised with our reads. - - src/drm/cairo-drm-i915-shader.c | 14 ++++++++++++++ - src/drm/cairo-drm-i965-shader.c | 12 ++++++++++++ - 2 files changed, 26 insertions(+), 0 deletions(-) - -commit a38accb694452fc5dfac63535648656885cd47eb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 23:27:46 2010 +0000 - - drm-intel: The accumulation bo may be NULL, beware. - - If we are not accumulating but rendering directly to the output vbo, - then the tail bo may not even be allocated, let alone mapped. - - src/drm/cairo-drm-i915-spans.c | 2 +- - src/drm/cairo-drm-i965-glyphs.c | 2 +- - src/drm/cairo-drm-i965-spans.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit 44734b9d3ba60fb45abb0268a916e40cd688ef6a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 23:17:44 2010 +0000 - - drm-intel: Assert that the bo is unmapped upon release. - - Check through error paths to catch a few more places where the mapped bo - may have been leaked, and add an assert to abort in case we do leak a - mapping. - - src/drm/cairo-drm-i915-spans.c | 3 +++ - src/drm/cairo-drm-i965-glyphs.c | 4 ++++ - src/drm/cairo-drm-i965-spans.c | 3 +++ - src/drm/cairo-drm-intel.c | 6 +++++- - 4 files changed, 15 insertions(+), 1 deletions(-) - -commit 6848c7c850aa0a710c1409d1fc2cb441d02a2b28 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 23:01:37 2010 +0000 - - drm-i915: Don't tile temporary image textures. - - As uploading to a tiled buffer is much slower than linear memory, don't - unless we expect to reuse the texture. This is not true for sub-image - clones, which are single shot affairs. - - src/drm/cairo-drm-i915-shader.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f75b7c4c110e880f4bdd578d9180f9afbb1d0034 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 19:20:57 2010 +0000 - - drm/i915: Ensure surface is initialized. - - Let's try that again, this time remembering to place it on the - conjunction of the two branches, so *both* paths are initialized. - - src/drm/cairo-drm-i915-shader.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 02f20458d1dd48fc4589734fc4b3e0c8bea1ce5c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 19:02:21 2010 +0000 - - drm-i915: Ensure surface size for clone is initialized. - - If the surface had a snapshot, then we would have not initialized the - surface size and so compute a bogus normalization matrix. - - src/drm/cairo-drm-i915-shader.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit c82ff8cbcf27dc20d2b44a988eed1b676d996e8c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 27 18:48:32 2010 +0000 - - configure: Enable AC_SYS_LARGEFILE for drm - - drm makes use of 64bit offsets when mmaping, and so we require the - 64bit file interfaces. I had presumed that it would be pulled in with - AC_GNU_SOURCE, but no. - - configure.ac | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 6d2d338ac04b02200e009c9e97d3ce030d07eb6f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 22:47:10 2010 +0000 - - drm: compile fix for cairo_always_inline - - s/always_inline/cairo_always_inline/ - - src/drm/cairo-drm-i965-private.h | 8 +- - src/drm/cairo-drm-intel-brw-eu.h | 132 ++++++++++++++++++------------------ - src/drm/cairo-drm-intel-private.h | 2 +- - src/drm/cairo-drm-private.h | 2 +- - 4 files changed, 72 insertions(+), 72 deletions(-) - -commit 58980b4ad60a60923a59370c81d59bb0457a7922 -Author: Benjamin Otte <otte@redhat.com> -Date: Wed Jan 27 09:56:14 2010 +0100 - - build: Remove glitz surface - - glitz is unmaintained and the GL surface is far superior anyway. - - README | 8 +- - boilerplate/Makefile.am | 13 - - boilerplate/Makefile.sources | 5 - - boilerplate/Makefile.win32.features | 10 - - boilerplate/cairo-boilerplate-glitz-agl.c | 191 --- - boilerplate/cairo-boilerplate-glitz-glx.c | 265 ---- - boilerplate/cairo-boilerplate-glitz-wgl.c | 188 --- - build/Makefile.win32.features | 1 - - build/Makefile.win32.features-h | 3 - - build/configure.ac.features | 1 - - configure.ac | 38 - - doc/public/cairo-docs.xml | 1 - - doc/public/cairo-sections.txt | 1 - - doc/public/tmpl/cairo-glitz.sgml | 22 - - src/Makefile.sources | 4 - - src/Makefile.win32.features | 14 - - src/cairo-deprecated.h | 1 - - src/cairo-glitz-private.h | 41 - - src/cairo-glitz-surface.c | 2450 ----------------------------- - src/cairo-glitz.h | 57 - - test/Makefile.am | 8 - - test/Makefile.sources | 2 - - test/glitz-surface-source.argb32.ref.png | Bin 377 -> 0 bytes - test/glitz-surface-source.c | 293 ---- - test/glitz-surface-source.ps2.ref.png | Bin 376 -> 0 bytes - test/glitz-surface-source.ps3.ref.png | Bin 376 -> 0 bytes - test/glitz-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes - util/cairo.modules | 10 +- - 28 files changed, 3 insertions(+), 3624 deletions(-) - -commit 17ddb1598b3df374b6275d907441f34318b4257f -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jan 25 20:17:12 2010 +0100 - - docs: appease make check - - src/cairo-gl-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit bac513a85dc8ef2915b2e60d034cf3dbc82a8e0c -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jan 25 20:05:56 2010 +0100 - - build: Fix pthread detection - - THe pthread.h detection code didn't pass -lpthread or -pthread to Cairo. - - configure.ac | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 582604f7b6b5b2ab6e681245bc7cde64d4995307 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jan 25 19:22:33 2010 +0100 - - [png] Simplify coercion code - - Call _cairo_image_surface_coerce() unconditionally to ensure coercion to - one of the standard formats happens even when it's a format we support. - - src/cairo-png.c | 16 ++++++---------- - 1 files changed, 6 insertions(+), 10 deletions(-) - -commit 002e02715cac9a285fd97e1bb6b068ceebfae3d8 -Author: Benjamin Otte <otte@redhat.com> -Date: Mon Jan 25 19:42:54 2010 +0100 - - Remove useless pixman version checks - - We require pixman >= 0.15.16 in configure.ac, so checks for older - versions aren't required anymore. - - src/cairo-gl-surface.c | 2 -- - src/cairo-image-surface.c | 10 ++-------- - 2 files changed, 2 insertions(+), 10 deletions(-) - -commit 5a690ad4acb3687c45c201b3ce92cd3e41bf3b30 -Author: Benjamin Otte <otte@gnome.org> -Date: Fri Jan 15 13:44:04 2010 +0100 - - Give cairo_surface_mark_dirty() the slim hidden treatment - - Fixes test suite failure - - src/cairo-surface.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 571ab1007571cb8d78fcb5206b43d6b964aa0df1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 18:22:03 2010 +0000 - - xcb: Fix linking with xcb-drm - - src/cairo-xcb-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ecda633f887a10da650b4cd3efb17c861a6f519f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 18:17:28 2010 +0000 - - mime-data: Detach existing alternate representations upon modification - - A major sore point in the current mime-data API is the choice to keep - the alternate mime-data representations after the user has actually - modifying the primary representation (i.e. has made it a target of a - cairo_t and drawn to it). This has been rightly chastised as unexpected - behaviour, and given that we already have the mechanism to detach - snapshots upon modification, there is no reason not to behave as - expected. - - src/cairo-surface.c | 21 ++++++++++++++++++++- - 1 files changed, 20 insertions(+), 1 deletions(-) - -commit 123bdb086ad9c5725a51791458d31309c69a3f41 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 16:45:03 2010 +0000 - - xcb: Make shm optional - - Trying to build xcb on a system without SHM wrapped by xcb. The right - answer would be to build libxcb-shm. The quick answer is to compile out - shm support. - - boilerplate/Makefile.win32.features | 10 ++++++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - build/configure.ac.features | 1 + - configure.ac | 14 +++++++++++++- - src/Makefile.sources | 8 ++++++-- - src/Makefile.win32.features | 14 ++++++++++++++ - src/cairo-xcb-connection.c | 22 ++++++++++++++++++---- - src/cairo-xcb-private.h | 21 +++++++++++++++++++++ - src/cairo-xcb-surface-core.c | 2 ++ - src/cairo-xcb-surface-render.c | 2 ++ - src/cairo-xcb-surface.c | 14 ++++++++++++++ - 12 files changed, 105 insertions(+), 7 deletions(-) - -commit e1b3330376c173633e146eb6cf578592d424e4d5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 14:48:44 2010 +0000 - - configure: dri2 is only required for xcb-drm - - Move the optional dependency on dri2 to the xcb-drm integration where it - is required. - - configure.ac | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 8151c72307e8cb369fbb524de56f87f805efff2b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 12:14:39 2010 +0000 - - xcb: compile errors with lockdep - - After moving the mutex to the superclass, I forgot to update the - references from the lockdep asserts. - - src/cairo-xcb-connection.c | 6 +++--- - src/cairo-xcb-screen.c | 16 ++++++++-------- - 2 files changed, 11 insertions(+), 11 deletions(-) - -commit be81d656c53c76032fd3fe11c81402d17ec56327 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 11:54:24 2010 +0000 - - clip: Create a fallback clip surface - - If the destination cannot support a clip surface, then we will need to - use an intermediate image surface and trigger fallbacks upon use. - - src/cairo-clip.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit c453d8ab704e5f41cb010241efe9bcb9ff886024 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 11:45:01 2010 +0000 - - test: Erroneous ref image for big-line xlib-fallback. - - test/big-line.xlib-fallback.ref.png | Bin 723 -> 0 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 180aea76adbb6d5c5909652b7a8cafb7a693e982 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Jan 25 20:48:02 2010 +1030 - - Fix printing of rotated user fonts - - b7550bf0 introduced a regression when user fonts are rendered to a - rotated context. - - src/cairo-type3-glyph-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit abcb9d2c39178620b1847fe6ea6e144602464ecc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 09:35:09 2010 +0000 - - image: Prevent deref of NULL clip_region - - Another stray from surface-fallback, spotted by Carlos: - - *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at - cairo-region.c:385 - 385 if (region->status) { - (gdb) bt - 0 *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at - cairo-region.c:385 - 1 0x0013ba46 in _cairo_image_surface_composite_trapezoids - (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, abstract_dst=0x837de10, - antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=0, - dst_y=0, width=15, height=25, traps=0x837f100, num_traps=30, - clip_region=0x0) - at cairo-image-surface.c:4102 - 2 0x0015d846 in _cairo_surface_composite_trapezoids - (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837de10, - antialias=CAIRO_ANTIALIAS_DEFAULT, - src_x=486, src_y=45, dst_x=0, dst_y=0, width=15, height=25, - traps=0x837f100, num_traps=30, clip_region=0x0) at cairo-surface.c:2125 - 3 0x001607ce in _cairo_surface_fallback_composite_trapezoids - (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, - antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=486, - dst_y=45, width=15, height=25, traps=0x837fd78, num_traps=30, - clip_region=0x0) - at cairo-surface-fallback.c:1641 - 4 0x0015d8a4 in _cairo_surface_composite_trapezoids - (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, - antialias=CAIRO_ANTIALIAS_DEFAULT, - src_x=486, src_y=45, dst_x=486, dst_y=45, width=15, height=25, - traps=0x837fd78, num_traps=30, clip_region=0x0) at cairo-surface.c:2137 - 5 0x001623b0 in _composite_traps_draw_func (closure=0xbfffd350, - op=CAIRO_OPERATOR_OVER, src=0xbfffdda8, dst=0x837db00, dst_x=0, dst_y=0, - extents=0xbfffdc78, clip_region=0x0) at cairo-surface-fallback.c:546 - 6 0x00161234 in _clip_and_composite (clip=0x0, op=<value optimized - out>, src=0xbfffdda8, draw_func=0x162310 <_composite_traps_draw_func>, - draw_closure=0xbfffd350, dst=0x837db00, extents=0xbfffdc78) at - cairo-surface-fallback.c:463 - 7 0x0016205b in _clip_and_composite_trapezoids (src=<value optimized - out>, op=CAIRO_OPERATOR_OVER, dst=0x837db00, traps=0xbfffd7bc, - antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0, extents=0xbfffdc78) at - cairo-surface-fallback.c:853 - 8 0x001626ef in _cairo_surface_fallback_stroke (surface=0x837db00, - op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, - stroke_style=0x1b1524, - ctm=0x1b15b0, ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, - antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at - cairo-surface-fallback.c:1173 - 9 0x0015f2f4 in _cairo_surface_stroke (surface=0x837db00, - op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, - stroke_style=0x1b1524, ctm=0x1b15b0, - ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, - antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0xbfffde88) at - cairo-surface.c:2041 - 10 0x00134629 in _cairo_gstate_stroke (gstate=0x1b1514, path=0x1b164c) - at cairo-gstate.c:1133 - 11 0x0012a706 in *INT_cairo_stroke_preserve (cr=0x1b13c0) at - cairo.c:2234 - 12 0x0012a732 in *INT_cairo_stroke (cr=0x1b13c0) at cairo.c:2207 - - src/cairo-image-surface.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 38ba696c483c289c2522b124ca628ef602c12126 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 09:20:11 2010 +0000 - - surface-fallback: We no longer own a reference to the clip surface - - _cairo_clip_get_surface() now returns a borrowed reference to the cached - surface on the clip, so we must not destroy it - as Carlos pointed out - when he hit the assert: - - 12:55 < KaL> ickle: cairo-surface.c:595: cairo_surface_destroy: - Assertion `((*&(&surface->ref_count)->ref_count) > 0)' failed. - 12:56 < KaL> ickle: trying to render any pdf file with poppler glib demo - after installing cairo from git master - 13:00 < KaL> ickle: well, it seems it has nothing ot do with poppler, - since it crashes in clearlooks src/clearlooks_draw.c:347 - - src/cairo-surface-fallback.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit b3ba610ec05f863a0830a1f30ed130649fbadfbb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 25 09:09:18 2010 +0000 - - win32: Trivially fix the compile error with printing. - - _cairo_pattern_is_opaque() now takes the extents over which the - operation is defined so that we make exclude the clear pixels that - surround EXTEND_NONE surfaces when determining opacity. In order to take - full advantage of this we need to start performing an extents query on - the operation and pass that down to the analysis... - - This patch however is just the quick compile fix to pass a NULL and - restore the old behaviour. - - Fixes (with previous commit): - Bug 26197 - Cairo doesn't build on windows - http://bugs.freedesktop.org/show_bug.cgi?id=26197 - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 386ca53f280652983870316593e510cfef59c559 -Author: Haakon Sporsheim <haakon.sporsheim@gmail.com> -Date: Sun Jan 24 16:43:42 2010 +0100 - - win32: Compile fix, rename render_row to render_rows. - - src/cairo-win32-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a9a73e5df42840148fd4db60cc0d1ba5d137b764 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Jan 24 23:26:28 2010 +0100 - - Constrain subsurface creation - - Force the subsurface extents to be inside the target extents and - compose subsubsurfaces offsets correctly. - Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-surface-subsurface.c | 36 +++++++++++++++--------------------- - 1 files changed, 15 insertions(+), 21 deletions(-) - -commit b7550bf0f1cafb5cc5df13da50b0cec80313038f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Jan 24 22:23:26 2010 +1030 - - Fix incorrect font scale and glyph position in Type 3 fonts - - The PDF file referenced by bug 26186 contains a Type 3 font with non - identity font matrix and a "1/2" glyph created by drawing the "1" and - "2" from a Type 1 font. This combination exposed a bug in the font - scale and glyph position in _cairo_type3_glyph_surface_show_glyphs - when printing user font glyphs. - - src/cairo-type3-glyph-surface.c | 21 +++++---------------- - 1 files changed, 5 insertions(+), 16 deletions(-) - -commit ea7fda442c169a159b2e3c51894a0f5e70a13984 -Author: Eric Anholt <eric@anholt.net> -Date: Fri Jan 22 16:26:38 2010 -0800 - - [gl] Release the context acquired in surface_create. - - Fixes assertion failures in many testcases since - cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 - - src/cairo-gl-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 20990365f3885457d66b4a8bef865f027a98333f -Author: Eric Anholt <eric@anholt.net> -Date: Fri Jan 22 16:13:02 2010 -0800 - - [gl] Emit rectanges a whole primitive at a time. - - Since the spans rework, we were emitting half a primitive at a time, - and if we flushed our VBO full of quads out halfway through, we could - end up dropping the primitive and then out of phase. - - src/cairo-gl-surface.c | 25 +++++++++++-------------- - 1 files changed, 11 insertions(+), 14 deletions(-) - -commit c8a61a3267ffd53d4b4d61e2e2bcb70448ea4d41 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jan 23 18:25:11 2010 +0100 - - Fix compilation on MacOS X - - Some functions declared in MacOS X headers use the always_inline - attribute, thus defining it to be a different expression breaks the - build. - - src/cairo-botor-scan-converter.c | 8 ++++---- - src/cairo-compiler-private.h | 4 ++-- - src/cairo-gl-private.h | 4 ++-- - 3 files changed, 8 insertions(+), 8 deletions(-) - -commit 90ba1242b61e7b8e5ae2c2ca028d0058f6dabd88 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jan 23 18:13:35 2010 +0100 - - Fix image backend compilation - - When HAS_ATOMIC_OPS is not defined, cairo-image-surface.c does not - compile because _pixman_white_image calls _pixman_image_for_solid - which gets defined only later in the code. - - src/cairo-image-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2a466ba07072cb394cfc955cfb0633b0cc278044 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 22:26:52 2010 +0000 - - script: Encode octal values correctly. - - Oops, we were emitting the octal numerals in reverse order. - - src/cairo-script-surface.c | 21 +++++++++++++-------- - 1 files changed, 13 insertions(+), 8 deletions(-) - -commit 87529198aa37f5eb5943eb80cc1aae858fdaadd0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 22:21:44 2010 +0000 - - scaled-font: Mark an error site with _cairo_error() - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6544f3b25d2120b7bd04f6c956c2ea7b9c101c76 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 22:15:25 2010 +0000 - - ps: Wean off the low-level image composite interface - - The low-level surface composite interface will disappear in the near - future and results in much more ugly code than calling the high level - interface - so use it when flattening images into the page background. - - src/cairo-ps-surface.c | 77 +++++++++++++++++------------------------------- - 1 files changed, 27 insertions(+), 50 deletions(-) - -commit f57cb45fa9274351b36f96eb932a931493b5db94 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 22:18:35 2010 +0000 - - ps: Arguments to fill_extents() were reversed. - - src/cairo-ps-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 58540405d9bc6581c1d07f17bd5aee330f06d4a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 22:05:37 2010 +0000 - - pdf: Arguments to fill_extents() were reversed. - - src/cairo-pdf-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 34dd80632e4671f0ca245be9db4280db62bdb1f9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 21 18:39:26 2010 +0000 - - glew: Silence compiler. - - src/glew/GL/glew.h | 2 +- - src/glew/glew.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 21 18:39:12 2010 +0000 - - gl: Acquire the context whilst creating surfaces. - - src/cairo-gl-private.h | 5 ++--- - src/cairo-gl-surface.c | 37 ++++++++++++++++++++++++------------- - 2 files changed, 26 insertions(+), 16 deletions(-) - -commit a7e05bd602e7f8bee63f5d32cb95d65628e6e715 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 21 18:22:04 2010 +0000 - - glew: Do not assume that UNIX == GLX - - src/glew/glew.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit c0008242b0f162d8c7717009ba792ed61b2924d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 21:35:23 2010 +0000 - - misc: Only use custom lround() under DISABLE_SOME_FLOATING_POINT - - On my Core2, the library version of lround() is faster than our - hand-rolled non-floating point implementation. So only enable our code - if we are trying to minimise the number of floating point operations -- - even then, it would worth investigating the library performance first. - - [Just a reminder that optimisation choices will change over time as our - hardware and software evolves.] - - src/cairo-misc.c | 2 ++ - src/cairo-ps-surface.c | 4 ++-- - src/cairoint.h | 5 +++++ - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit 1236c41072a7966eda7db48a381fd0508e5289be -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 21:26:26 2010 +0000 - - xcb: Refresh. - - Still an experimental backend, it's now a little too late to stabilise - for 1.10, but this should represent a major step forward in its feature - set and an attempt to catch up with all the bug fixes that have been - performed on xlib. Notably not tested yet (and expected to be broken) - are mixed-endian connections and low bitdepth servers (the dithering - support has not been copied over for instance). However, it seems robust - enough for daily use... - - Of particular note in this update is that the xcb surface is now capable - of subverting the xlib surface through the ./configure --enable-xlib-xcb - option. This replaces the xlib surface with a proxy that forwards all - operations to an equivalent xcb surface whilst preserving the cairo-xlib - API that is required for compatibility with the existing applications, - for instance GTK+ and Mozilla. Also you can experiment with enabling a - DRM bypass, though you need to be extremely foolhardy to do so. - - boilerplate/Makefile.win32.features | 20 + - boilerplate/cairo-boilerplate-xcb.c | 522 ++++- - build/Makefile.win32.features | 2 + - build/Makefile.win32.features-h | 6 + - build/configure.ac.features | 2 + - configure.ac | 26 +- - src/Makefile.sources | 22 +- - src/Makefile.win32.features | 28 + - src/cairo-list-private.h | 7 + - src/cairo-mutex-list-private.h | 4 + - src/cairo-pattern.c | 41 +- - src/cairo-xcb-connection-core.c | 482 ++++ - src/cairo-xcb-connection-render.c | 969 ++++++++ - src/cairo-xcb-connection-shm.c | 194 ++ - src/cairo-xcb-connection.c | 867 +++++++ - src/cairo-xcb-private.h | 760 ++++++ - src/cairo-xcb-screen.c | 518 ++++ - src/cairo-xcb-shm.c | 576 +++++ - src/cairo-xcb-surface-cairo.c | 94 + - src/cairo-xcb-surface-core.c | 613 +++++ - src/cairo-xcb-surface-private.h | 37 + - src/cairo-xcb-surface-render.c | 4471 +++++++++++++++++++++++++++++++++++ - src/cairo-xcb-surface.c | 3344 +++++++------------------- - src/cairo-xcb-xrender.h | 63 - - src/cairo-xcb.h | 41 +- - src/cairo-xlib-xcb-surface.c | 515 ++++ - src/cairoint.h | 16 + - test/xcb-surface-source.c | 1 - - 28 files changed, 11689 insertions(+), 2552 deletions(-) - -commit 77afe8491ed7038a8399c01f10d8f062a7239225 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 20:48:54 2010 +0000 - - drm: Add backends for i915 and i965. - - As proof-of-principle add the nearly working demonstrations of using DRM - to render directly with the GPU bypassing both RENDER and GL for - performance whilst preserving high quality rendering. - - The basis behind developing these chip specific backends is that this is - the idealised interface that we desire for this chips, and so a target - for cairo-gl as we continue to develop both it and our GL stack. - - Note that this backends do not yet fully pass the test suite, so only - use if you are brave and willing to help develop them further. - - boilerplate/cairo-boilerplate-drm.c | 2 +- - src/Makefile.sources | 17 + - src/cairo-drm.h | 31 +- - src/cairo-misc.c | 57 + - src/cairoint.h | 2 + - src/drm/cairo-drm-bo.c | 13 +- - src/drm/cairo-drm-gallium-surface.c | 3 +- - src/drm/cairo-drm-i915-glyphs.c | 534 ++++++ - src/drm/cairo-drm-i915-private.h | 1169 ++++++++++++ - src/drm/cairo-drm-i915-shader.c | 2674 +++++++++++++++++++++++++++ - src/drm/cairo-drm-i915-spans.c | 708 +++++++ - src/drm/cairo-drm-i915-surface.c | 1996 ++++++++++++++++++++ - src/drm/cairo-drm-i965-glyphs.c | 500 +++++ - src/drm/cairo-drm-i965-private.h | 742 ++++++++ - src/drm/cairo-drm-i965-shader.c | 2852 +++++++++++++++++++++++++++++ - src/drm/cairo-drm-i965-spans.c | 408 ++++ - src/drm/cairo-drm-i965-surface.c | 1949 ++++++++++++++++++++ - src/drm/cairo-drm-intel-brw-defines.h | 824 +++++++++ - src/drm/cairo-drm-intel-brw-eu-emit.c | 1089 +++++++++++ - src/drm/cairo-drm-intel-brw-eu-util.c | 121 ++ - src/drm/cairo-drm-intel-brw-eu.c | 250 +++ - src/drm/cairo-drm-intel-brw-eu.h | 1043 +++++++++++ - src/drm/cairo-drm-intel-brw-structs.h | 1328 ++++++++++++++ - src/drm/cairo-drm-intel-command-private.h | 909 +++++++++ - src/drm/cairo-drm-intel-debug.c | 1208 ++++++++++++ - src/drm/cairo-drm-intel-ioctl-private.h | 417 +++++ - src/drm/cairo-drm-intel-private.h | 427 ++++- - src/drm/cairo-drm-intel-surface.c | 421 ++--- - src/drm/cairo-drm-intel.c | 1240 +++++++++---- - src/drm/cairo-drm-private.h | 101 +- - src/drm/cairo-drm-radeon-private.h | 3 - - src/drm/cairo-drm-radeon-surface.c | 281 ++-- - src/drm/cairo-drm-radeon.c | 5 +- - src/drm/cairo-drm-surface.c | 235 +-- - src/drm/cairo-drm.c | 232 ++-- - 35 files changed, 22675 insertions(+), 1116 deletions(-) - -commit b9407af6a4bc792c1bcb52c90aa8a618627bb618 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 17:57:41 2010 +0000 - - image: Implement high level interface. - - Write a dedicated compositor for pixman so that we avoid the - middle-layer syndrome of surface-fallback. The major upshot of this - rewrite is that the image surface is now several times quicker for glyph - compositing, which dramatically improves performance for text rendering - by firefox and friends. It also uses a couple of the new scan - convertors, such as the rectangular scan converter for rectilinear - paths. - - Speedups - ======== - image-rgba firefox-talos-gfx-0 342050.17 (342155.88 0.02%) -> 69412.44 (69702.90 0.21%): 4.93x speedup - ███▉ - image-rgba vim-0 97518.13 (97696.23 1.21%) -> 30712.63 (31238.65 0.85%): 3.18x speedup - ██▏ - image-rgba evolution-0 69927.77 (110261.08 19.84%) -> 24430.05 (25368.85 1.89%): 2.86x speedup - █▉ - image-rgba poppler-0 41452.61 (41547.03 2.51%) -> 21195.52 (21656.85 1.08%): 1.96x speedup - █ - image-rgba firefox-planet-gnome-0 217512.61 (217636.80 0.06%) -> 123341.02 (123641.94 0.12%): 1.76x speedup - ▊ - image-rgba swfdec-youtube-0 41302.71 (41373.60 0.11%) -> 31343.93 (31488.87 0.23%): 1.32x speedup - ▍ - image-rgba swfdec-giant-steps-0 20699.54 (20739.52 0.10%) -> 17360.19 (17375.51 0.04%): 1.19x speedup - ▎ - image-rgba gvim-0 167837.47 (168027.68 0.51%) -> 151105.94 (151635.85 0.18%): 1.11x speedup - ▏ - image-rgba firefox-talos-svg-0 375273.43 (388250.94 1.60%) -> 356846.09 (370370.08 1.86%): 1.05x speedup - - src/cairo-image-surface.c | 3893 ++++++++++++++++++++++++----- - src/cairo-mutex-list-private.h | 2 + - src/cairo-xcb-surface.c | 10 +- - src/cairoint.h | 21 +- - test/clip-fill-unbounded.argb32.ref.png | Bin 1615 -> 1607 bytes - test/clip-fill-unbounded.rgb24.ref.png | Bin 1312 -> 1304 bytes - test/clip-stroke-unbounded.argb32.ref.png | Bin 1703 -> 1694 bytes - test/clip-stroke-unbounded.rgb24.ref.png | Bin 1383 -> 1372 bytes - test/clip-stroke.ref.png | Bin 1451 -> 1442 bytes - test/clipped-group.ref.png | Bin 289 -> 289 bytes - test/leaky-dashed-rectangle.ref.png | Bin 347 -> 357 bytes - test/scale-offset-image.xfail.png | Bin 9960 -> 9961 bytes - test/scale-offset-similar.xfail.png | Bin 9960 -> 9961 bytes - test/self-intersecting.ref.png | Bin 213 -> 168 bytes - 14 files changed, 3295 insertions(+), 631 deletions(-) - -commit ec7cc9dea16f94e1e56720be548cf5520ec4708b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 19:27:45 2010 +0000 - - ft: Tidy computation of transformed bitmap, and mark if CA - - Discard a redundant clear as the image surface is guaranteed to return - a cleared surface that meets pixman/xlib requirements for alignment, and - more importantly add the ComponentAlpha flag on the pixman image - generated as appropriate. - - src/cairo-ft-font.c | 31 +++++++++++-------------------- - 1 files changed, 11 insertions(+), 20 deletions(-) - -commit b713510f213d0a83cb0575d6870416a0f13786c9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 17:56:26 2010 +0000 - - surface-fallback: Convert to composite rectangles - - src/cairo-surface-fallback.c | 396 ++++++++++++++---------------------------- - src/cairo-surface.c | 3 + - src/cairo-traps.c | 47 +++--- - src/cairoint.h | 3 +- - 4 files changed, 158 insertions(+), 291 deletions(-) - -commit 498c10032ea3f8631a928cd7df96766f2c8ddca4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:39:29 2010 +0000 - - clip: Implement clipping using only the high-level operators. - - Revamp clipping in preparation for the removal of the low-level interface - and promote backend to use the higher levels. The principle here is that - the higher level interface gives the backend more scope for choosing - better performing primitives. - - src/cairo-clip-private.h | 6 +- - src/cairo-clip.c | 257 ++++++++++++++++++++--------------------- - src/cairo-surface-fallback.c | 2 +- - 3 files changed, 131 insertions(+), 134 deletions(-) - -commit 05bb43a00770f17566c80f28faf684597d1b6afb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:14:53 2010 +0000 - - types: Move cairo_scaled_glyph_t to cairo-types-private.h - - Another step in bringing some sanity to our headers. - - src/cairo-types-private.h | 25 +++++++++++++++++++++++++ - src/cairoint.h | 26 -------------------------- - 2 files changed, 25 insertions(+), 26 deletions(-) - -commit 9c98656fb1ac10a6085c5db5731b6b986af26165 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:11:48 2010 +0000 - - color: Add enum value for the largest stock color. - - Useful if we wish to keep a cache of patterns for the very common stock - colors... - - src/cairo-color.c | 13 +++++++------ - src/cairo-types-private.h | 3 ++- - 2 files changed, 9 insertions(+), 7 deletions(-) - -commit b7b65b5315836297f86c54121ea45e469f514312 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:07:25 2010 +0000 - - stroke: Convert rectilinear paths to boxes. - - A quick and efficient method for extracting the set of boxes that - represent the path when stroked. - - src/cairo-path-stroke.c | 170 +++++++++++++++++++++++++++++++++++++---------- - src/cairoint.h | 7 ++ - 2 files changed, 142 insertions(+), 35 deletions(-) - -commit fe6a7f4c9e69c86588eca4925a9d65f3086f98bf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:02:07 2010 +0000 - - fill: Convert rectilinear paths to boxes. - - A quick and efficient method for extracting the set of boxes that - represent the path when filled. - - src/cairo-path-fill.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 5 +++ - 2 files changed, 80 insertions(+), 1 deletions(-) - -commit 6b77567b6ef28710c7707ab82c7fa95c810152d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 15:54:45 2010 +0000 - - path: Compute coarse bounds upon construction. - - Frequently we only need the coarse path bounds, so avoid walking over - the list of points once more as we can cheaply track the extents during - construction. - - src/cairo-debug.c | 6 ++ - src/cairo-gstate.c | 21 ++++- - src/cairo-path-bounds.c | 159 +++++++++++++++++++-------------------- - src/cairo-path-fixed-private.h | 4 +- - src/cairo-path-fixed.c | 83 +++++++++++++++++++-- - src/cairo.c | 2 + - src/cairoint.h | 9 +- - 7 files changed, 184 insertions(+), 100 deletions(-) - -commit 6bfcf3ea55964fee1c9b73818c3bb7cdacbc4f82 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 15:37:25 2010 +0000 - - matrix: Do not need to iteratively refine conversion for unity matrices. - - If the scale factors on the matrix are unity, then the conversion from a - cairo_matrix_t to a pixman_matrix_t is exact (within numerical - restrictions). - - src/cairo-matrix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 13c56800ca6c32a6d8251edec5d3976399b70ea4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:33:34 2010 +0000 - - gstate: Reduce operators - - Some operators may be equivalent to simpler operations, so make the - transformation in the gstate, before calling down into the surface - backends. - - src/cairo-gstate.c | 86 +++++++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 72 insertions(+), 14 deletions(-) - -commit 4d52be39bf36a3557f4e7c61dba764b1c6542c8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:09:11 2010 +0000 - - gstate: Skip ops with a clear mask. - - As pointed out by Benjamin Otte, these are expensive no-ops that we can - trivially detect, just so long as we remember the semantics of extend - modes. - - src/cairo-gstate.c | 6 ++++++ - src/cairo-pattern.c | 23 +++++++++++++++++++++++ - src/cairoint.h | 3 +++ - 3 files changed, 32 insertions(+), 0 deletions(-) - -commit c2ef45226d6801acb15854de55a5f5bc728ed65d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 14:33:53 2010 +0000 - - gstate: Check for an invalid matrix before cairo_transform() - - Similar to the other checks that will generate an invalid matrix prior - to performing the operation. - - src/cairo-gstate.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 22316a0c17cd3b49ec625814f4e737b3fdc6ca63 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 14:33:16 2010 +0000 - - gstate: White space. - - A couple of minor coding style violations. - - src/cairo-gstate.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 29bedde904824098f73b978d73d36b3b5420ac32 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 16:19:31 2010 +0000 - - pattern: Add convenience patterns for stock colours - - By preallocating in our data segment a couple of solid patterns for the - stock colours, it becomes more convenient when using those in surface - operations, such as when clearing. - - src/cairo-clip.c | 29 +++++++++++------------------ - src/cairo-gl-glyphs.c | 10 +++------- - src/cairo-gstate.c | 9 +++------ - src/cairo-pattern.c | 24 ++++++++++++++++++++++++ - src/cairo-scaled-font.c | 9 ++------- - src/cairo-surface-fallback.c | 14 +++----------- - src/cairo-vg-surface.c | 5 ++--- - src/cairo-win32-printing-surface.c | 8 ++------ - src/cairo-xcb-surface.c | 7 +------ - src/cairo-xlib-surface.c | 6 +----- - src/cairoint.h | 3 ++- - 11 files changed, 54 insertions(+), 70 deletions(-) - -commit 9eb98e1dc5af7eac896bf469e491063777e678be -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 14:14:51 2010 +0000 - - scaled-font: Use tight glyph bounds when determining overlap. - - An issue that we currently have is that we have a pessimistic - false-positive rate when determining whether glyphs within a string - overlap. By using the tight bounds, the overlap detection is arguably - less accurate presuming pixel-aligned opacity masks but we make the - trade-off for performance. - - src/cairo-scaled-font.c | 55 +++++++++++++++++++++------------------------- - 1 files changed, 25 insertions(+), 30 deletions(-) - -commit 005b0c4eb2a1fe2c4de31ebe2a3244bea8bd2625 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 19:47:58 2010 +0000 - - test: Add explicit device management to xlib-surface-source - - Mostly pedagogical example. - - test/xlib-surface-source.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ca02b51ef6d058b6fb492258177f0396a5819e26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 21:57:58 2010 +0000 - - test: Add an xcb surface source test - - test/Makefile.am | 6 ++ - test/Makefile.sources | 3 + - test/xcb-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/xcb-surface-source.c | 145 ++++++++++++++++++++++++++++++++ - test/xcb-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - 5 files changed, 154 insertions(+), 0 deletions(-) - -commit f0678fb70ceec5db1b7c3f0eb1c5603039daf307 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 22 19:02:39 2010 +0000 - - test: Tweak aligned of text-rotate - - Reset the rotation for every quadrant so that the starting rectangles - are pixel-aligned. - - test/text-rotate.c | 68 +++++++++++++++++++++++++++++++++------------- - test/text-rotate.ref.png | Bin 16738 -> 16722 bytes - 2 files changed, 49 insertions(+), 19 deletions(-) - -commit 2edd2adafc471f4aa9c417d4bc76cc38466a9ed0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 22:45:59 2010 +0000 - - test: Exercise scan converters with large rounded rectangles. - - Having added a specialised scan converter on the premise that it should - be better at handling rounded rectangles, ensure that they are indeed - rendered correctly. - - test/Makefile.am | 2 + - test/Makefile.sources | 2 + - test/rounded-rectangle-fill.c | 65 ++++++++++++++++++++++++++++ - test/rounded-rectangle-fill.xlib.ref.png | Bin 0 -> 890 bytes - test/rounded-rectangle-stroke.c | 64 +++++++++++++++++++++++++++ - test/rounded-rectangle-stroke.xlib.ref.png | Bin 0 -> 860 bytes - 6 files changed, 133 insertions(+), 0 deletions(-) - -commit 5187501e997d6b8c0d135542d21accde9e311281 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 22:41:45 2010 +0000 - - test: Add --track-origins=yes to valgrind flags. - - Enable origin tracking by default for make check-valgrind. This is - slower and consumes more memory than regular valgrind, but the - additional information provided about the source of the uninitialised - data is often invaluable. - - test/Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 3a5d71c431dfb251308c3e4e02d2ea4acec90a91 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 19:18:54 2010 +0000 - - pattern: An EXTEND_NONE surface is not opaque if we sample outside - - Fixes test/clear-source as proposed by Benjamin Otte. - - src/cairo-gstate.c | 2 +- - src/cairo-pattern.c | 33 +++++++- - src/cairo-pdf-surface.c | 219 +++++++++++++++++++++++++++------------------ - src/cairo-ps-surface.c | 186 +++++++++++++++++++++++---------------- - src/cairo-xlib-surface.c | 8 ++- - src/cairoint.h | 3 +- - 6 files changed, 284 insertions(+), 167 deletions(-) - -commit b07de014eba1a482747ac235670011972a82d19d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 18:44:34 2010 +0000 - - spans: Add a rectangular scan converter - - This is a highly specialised scan converter for the relatively common - case of where the input geometry is known to be a series of rectangles. - Generally not device aligned (or else we would most likely have chosen - an even higher performance path that does not require a coverage mask), - this optimised converter can simply compute the analytical coverage by - utilising a special case Bentley-Ottmann intersection finder. - - src/Makefile.sources | 1 + - src/cairo-rectangular-scan-converter.c | 723 ++++++++++++++++++++++++++++++++ - src/cairo-spans-private.h | 25 ++ - 3 files changed, 749 insertions(+), 0 deletions(-) - -commit e49855497e7214c21c85b03d7ab94e9e008f821b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 18:36:20 2010 +0000 - - spans: Add a Bentley-Ottmann variant on the Tor scan converter - - This variant uses the Bentley-Ottmann algorithm to only maintain the - active edge list upon edge events and so can efficiently skip areas - where no change occurs. This means that it can be much quicker than the - Tor algorithm (which is still used to compute the coverages from the - active edges) for geometries consisting of long straight lines with few - intersections. However due to the computational overhead of the - Bentley-Ottmann event processing, for dense curvy paths, simply updating - the active edge list in sync with computing the coverages is a win. Due - to advantageous adaptive step size, the scan converter can be run at a - much higher subsampling with little extra overhead compared with Tor, - currently it uses a 256x256 subsampling grid to avoid any impedance - mismatch with path precision. - - Given the current status of implementations, this scan converter [botor] - is likely to be advantage where detecting large regions of unchanged - span data will result in improved performance, for instance the drm - backends which convert the scan data into rectangles. - - src/Makefile.sources | 1 + - src/cairo-botor-scan-converter.c | 2199 ++++++++++++++++++++++++++++++++++++++ - src/cairo-compiler-private.h | 11 + - src/cairo-fixed-private.h | 22 +- - src/cairo-freelist-private.h | 16 + - src/cairo-freelist.c | 38 +- - src/cairo-spans-private.h | 23 + - src/cairoint.h | 9 - - 8 files changed, 2299 insertions(+), 20 deletions(-) - -commit 424dcf296378a107286a164aaf135a34e40c42ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 19:11:31 2010 +0000 - - boxes: Enable generation of boxes from rectilinear polygons. - - Extend the special case rectilinear tessellator to also produce boxes. - - src/cairo-bentley-ottmann-rectilinear.c | 122 ++++++++++++++++++++++++++----- - src/cairoint.h | 5 + - 2 files changed, 108 insertions(+), 19 deletions(-) - -commit b83f1c347dfd77139e9485745d43da946b086b74 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 19:09:10 2010 +0000 - - boxes: Enable tessellation - - Extend the special case rectangular tessellator to handle generation of - cairo_boxes_t. - - src/cairo-bentley-ottmann-rectangular.c | 778 ++++++++++++++++--------------- - src/cairoint.h | 5 + - 2 files changed, 416 insertions(+), 367 deletions(-) - -commit 43beaa5873b9ad10620bfe7ed5f9212a3c44effd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 18:11:26 2010 +0000 - - boxes: Efficient storage for an array of cairo_box_t. - - Currently we use cairo_traps_t to also pass around arrays of boxes. This - is woefully inefficient in terms of storage, but also means that we - repeatedly have to verify that the traps are a set of boxes. By - explicitly passing around a cairo_boxes_t we avoid the semantic loss. - - This will be heavily used in pending commits. - - src/Makefile.sources | 2 + - src/cairo-boxes-private.h | 80 +++++++++++++ - src/cairo-boxes.c | 269 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-types-private.h | 1 + - 4 files changed, 352 insertions(+), 0 deletions(-) - -commit ae25f1c360b79f0b7b1bb73e9ebc47eb794d8007 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 17:11:55 2010 +0000 - - Alter definition of cairo_composite_rectangles_t - - This is a more useful definition that is able to individually track the - rectangles that compose the composite operation. This will be used by - the specialist compositors as a means to perform the common extents - determination for an operation. - - src/Makefile.sources | 2 + - src/cairo-composite-rectangles-private.h | 105 ++++++++++++++++ - src/cairo-composite-rectangles.c | 197 ++++++++++++++++++++++++++++++ - src/cairo-gl-surface.c | 19 ++- - src/cairo-image-surface.c | 31 +++--- - src/cairo-misc.c | 41 ++++++ - src/cairo-rectangle.c | 21 --- - src/cairo-spans.c | 29 +++-- - src/cairo-surface-fallback.c | 13 +- - src/cairo-types-private.h | 24 +---- - src/cairo-win32-surface.c | 21 ++-- - src/cairoint.h | 14 +- - 12 files changed, 417 insertions(+), 100 deletions(-) - -commit 9cd9137843f8f1c3d32bedb6510259ab3638a2c5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 17:11:11 2010 +0000 - - spans: Pass multiple rows of identical spans to the renders. - - It is quite common amongst our geometry to have rows of repeated span - data, for example a rounded rectangle will have repeating data between - the top and bottom rounded corners. By passing the repeat length to the - renderers, they may be able to use that information more efficiently, - and the scan converters can avoid recomputing the same span data. - - src/cairo-gl-surface.c | 141 +++++++++-------- - src/cairo-image-surface.c | 79 ++++------ - src/cairo-spans-private.h | 24 ++-- - src/cairo-spans.c | 6 +- - src/cairo-tor-scan-converter.c | 343 +++++++++++++++++++++++++--------------- - src/cairo-win32-surface.c | 13 ++- - src/cairoint.h | 4 +- - 7 files changed, 349 insertions(+), 261 deletions(-) - -commit a04873c0770df5eaed078493df5216ca28322de7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 23:40:00 2010 +0000 - - qt: Trivial compile fix for boilerplate. - - boilerplate/cairo-boilerplate-qt.cpp | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 0f09349dd85b15d5de14248e2f3f17a91fbcbb5e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 23:37:36 2010 +0000 - - gl: Exercise Window destinations with boilerplate - - Add a gl-window boilerplate target to exercise using GL to render to a - visible Drawable -- for instance, a window has a different coordinate - system to a framebuffer... - - boilerplate/cairo-boilerplate-gl.c | 99 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 99 insertions(+), 0 deletions(-) - -commit ccea7fd7c1a2d7144e892c19615488e368529bc0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 23:37:11 2010 +0000 - - gl: Port to cairo_device_t - - boilerplate/cairo-boilerplate-gl.c | 28 +++-- - src/cairo-eagle-context.c | 25 +++-- - src/cairo-gl-glyphs.c | 46 +++++--- - src/cairo-gl-private.h | 44 +++++--- - src/cairo-gl-surface.c | 222 ++++++++++++++++-------------------- - src/cairo-gl.h | 22 +--- - src/cairo-glx-context.c | 25 +++-- - 7 files changed, 211 insertions(+), 201 deletions(-) - -commit 3acd520c9dec89e72d7ff61adb1ae30bab12e256 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 23:11:19 2010 +0000 - - xml: Port to cairo_device_t - - src/cairo-xml-surface.c | 210 ++++++++++++++++++++++++----------------------- - src/cairo-xml.h | 13 +-- - util/trace-to-xml.c | 7 +- - 3 files changed, 115 insertions(+), 115 deletions(-) - -commit 49ab86772a44d7a044464d875324bd0af96af728 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 22:43:24 2010 +0000 - - script: Port cairo_script_context_t to cairo_device_t - - Use the unifying cairo_device_t for cairo_script_context_t and replace. - - boilerplate/cairo-boilerplate-script.c | 6 +- - boilerplate/cairo-boilerplate.c | 6 +- - src/cairo-script-surface.c | 491 +++++++++++++++++--------------- - src/cairo-script.h | 35 +-- - test/cairo-test-trace.c | 7 +- - util/cairo-fdr/fdr.c | 10 +- - util/cairo-script/csi-trace.c | 11 +- - util/cairo-sphinx/fdr.c | 4 +- - util/cairo-sphinx/sphinx.c | 17 +- - util/cairo-trace/trace.c | 8 +- - 10 files changed, 312 insertions(+), 283 deletions(-) - -commit f617d5fc982f749d0981c81c1de1be8dc3632717 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 21:53:42 2010 +0000 - - Add cairo_device_t - - The device is a generic method for accessing the underlying interface - with the native graphics subsystem, typically the X connection or - perhaps the GL context. By exposing a cairo_device_t on a surface and - its various methods we enable finer control over interoperability with - external interactions of the device by applications. The use case in - mind is, for example, a multi-threaded gstreamer which needs to serialise - its own direct access to the device along with Cairo's across many - threads. - - Secondly, the cairo_device_t is a unifying API for the mismash of - backend specific methods for controlling creation of surfaces with - explicit devices and a convenient hook for debugging and introspection. - - The principal components of the API are the memory management of: - - cairo_device_reference(), - cairo_device_finish() and - cairo_device_destroy(); - - along with a pair of routines for serialising interaction: - - cairo_device_acquire() and - cairo_device_release() - - and a method to flush any outstanding accesses: - - cairo_device_flush(). - - The device for a particular surface may be retrieved using: - - cairo_surface_get_device(). - - The device returned is owned by the surface. - - src/Makefile.sources | 2 + - src/cairo-analysis-surface.c | 9 +- - src/cairo-beos-surface.cpp | 5 +- - src/cairo-device-private.h | 85 +++++++++++ - src/cairo-device.c | 265 +++++++++++++++++++++++++++++++++++ - src/cairo-directfb-surface.c | 2 + - src/cairo-gl-surface.c | 1 + - src/cairo-glitz-surface.c | 4 +- - src/cairo-image-surface.c | 4 +- - src/cairo-misc.c | 4 + - src/cairo-os2-surface.c | 1 + - src/cairo-paginated-surface.c | 4 +- - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 4 +- - src/cairo-qt-surface.cpp | 7 +- - src/cairo-quartz-image-surface.c | 1 + - src/cairo-quartz-surface.c | 6 +- - src/cairo-recording-surface.c | 9 +- - src/cairo-script-surface.c | 1 + - src/cairo-skia-surface.cpp | 1 + - src/cairo-spans.c | 4 + - src/cairo-surface-private.h | 1 + - src/cairo-surface-snapshot.c | 1 + - src/cairo-surface-subsurface.c | 1 + - src/cairo-surface.c | 29 ++++ - src/cairo-svg-surface.c | 4 +- - src/cairo-tee-surface.c | 1 + - src/cairo-type3-glyph-surface.c | 4 +- - src/cairo-types-private.h | 1 + - src/cairo-vg-surface.c | 1 + - src/cairo-win32-printing-surface.c | 1 + - src/cairo-win32-surface.c | 8 +- - src/cairo-xcb-surface.c | 4 +- - src/cairo-xlib-surface.c | 4 +- - src/cairo-xml-surface.c | 1 + - src/cairo.h | 117 +++++++++++++++ - src/cairoint.h | 1 + - src/drm/cairo-drm-gallium-surface.c | 2 + - src/drm/cairo-drm-intel-surface.c | 5 +- - src/drm/cairo-drm-radeon-surface.c | 5 +- - src/test-fallback-surface.c | 4 +- - src/test-fallback16-surface.c | 1 + - src/test-null-surface.c | 5 +- - src/test-paginated-surface.c | 4 +- - src/test-wrapping-surface.c | 1 + - util/cairo-trace/trace.c | 2 + - 46 files changed, 607 insertions(+), 24 deletions(-) - -commit 82f8aa548d70acf51b319000d7a5c176fc73da64 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 22:02:09 2010 +0000 - - Recursive mutex. - - Implement a recursive mutex which will be needed for cairo_device_t. - In particular only pthreads by default is a non-recursive mutex (to my - knowledge) - both win32 critical sections and mutexes on Quartz are - recursive. - - src/cairo-mutex-impl-private.h | 28 ++++++++++++++++++++++++++++ - src/cairo-mutex-type-private.h | 9 ++++++++- - 2 files changed, 36 insertions(+), 1 deletions(-) - -commit d2f251f84b326c5f8825c9a631ea729f21891580 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 22:12:23 2010 +0000 - - configure: Globally define AC_GNU_SOURCE - - We were using _GNU_SOURCE throughout the codebase, so simply define it - once during configure. This is the easiest method to enable recursive - mutexes using pthreads, as required in a pending patch. - - boilerplate/cairo-boilerplate-pdf.c | 4 ++++ - boilerplate/cairo-boilerplate-ps.c | 4 ++++ - configure.ac | 3 +++ - src/cairo-gstate.c | 2 -- - src/cairo-matrix.c | 2 -- - src/cairo-scaled-font.c | 2 -- - 6 files changed, 11 insertions(+), 6 deletions(-) - -commit 934d0d0d6585eb7638c7db597c40dd821092c034 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 19:05:34 2010 +0000 - - Real zero-copy cow snapshotting - - The first iteration of COW snapshotting always made an initial copy when - the snapshot was requested (and reused that copy until the surface was - modified). However, in a few circumstances we can avoid even that copy - so long as the surface is still alive and unmodified between the - snapshotting and its use. In order to do so, we need a new proxy surface - that can automatically perform the copy if the target should disappear - prior to use. - - src/Makefile.sources | 2 + - src/cairo-paginated-surface.c | 7 +- - src/cairo-surface-snapshot-private.h | 48 +++++++ - src/cairo-surface-snapshot.c | 225 ++++++++++++++++++++++++++++++++++ - src/cairo-surface.c | 101 ++-------------- - src/cairo-types-private.h | 2 + - 6 files changed, 291 insertions(+), 94 deletions(-) - -commit 6b3e19aa434d159db7878b2a7fb28a026b2d1756 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 19:12:25 2010 +0000 - - Remove content matching from snapshot lookup. - - This was never used, so remove the complexity from the interface. - - src/cairo-recording-surface.c | 3 +-- - src/cairo-surface.c | 23 +++++++---------------- - src/cairo-vg-surface.c | 3 +-- - src/cairoint.h | 3 +-- - src/drm/cairo-drm-intel-surface.c | 3 +-- - src/drm/cairo-drm-radeon-surface.c | 3 +-- - 6 files changed, 12 insertions(+), 26 deletions(-) - -commit dc8290814c0e98b38828953bac6dd0893c31c9ad -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 18:06:51 2010 +0000 - - Add subsurface. - - A subsurface is a region of another surface that may be used either to - restrict the writable area of a context or the readable extents of a - source. Whilst writing, access to the exterior of the subsurface is - prevented via clipping and when used as a source reads from the exterior - of the subsurface are governed via the extend mechanism of the pattern. - - src/Makefile.sources | 2 + - src/cairo-surface-subsurface-private.h | 48 ++++ - src/cairo-surface-subsurface.c | 464 ++++++++++++++++++++++++++++++++ - src/cairo-types-private.h | 4 +- - src/cairo.h | 7 + - test/Makefile.am | 3 + - test/Makefile.sources | 3 + - test/subsurface-repeat.c | 72 +++++ - test/subsurface-repeat.ref.png | Bin 0 -> 197 bytes - test/subsurface-similar-repeat.c | 83 ++++++ - test/subsurface-similar-repeat.ref.png | Bin 0 -> 197 bytes - test/subsurface.c | 80 ++++++ - test/subsurface.ref.png | Bin 0 -> 1597 bytes - 13 files changed, 765 insertions(+), 1 deletions(-) - -commit b8eacbfae1c155f412d84120411103cb610e383b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 18:09:11 2010 +0000 - - Add surface-offset internal API. - - This is a simplified version of the wrapping surface where the target - surface is just a subsurface onto which we wish to draw the current - operation. In particular this is useful for the subsurface API as well - as fallbacks. - - src/Makefile.sources | 2 + - src/cairo-surface-offset-private.h | 95 ++++++++++ - src/cairo-surface-offset.c | 354 ++++++++++++++++++++++++++++++++++++ - 3 files changed, 451 insertions(+), 0 deletions(-) - -commit f2c32d01836379766bc287edf77381123767daeb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 18:06:54 2010 +0000 - - Unify the two freed object pools - - Discard some duplicate code and shared a single freed object pointer - pool between the pattern and clip. - - src/Makefile.sources | 2 + - src/cairo-clip.c | 88 +---------------------------- - src/cairo-freed-pool-private.h | 121 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-freed-pool.c | 91 ++++++++++++++++++++++++++++++ - src/cairo-pattern.c | 115 ++++++-------------------------------- - 5 files changed, 234 insertions(+), 183 deletions(-) - -commit cfd204824fada7d2b4bcf4994c4200ae9b5a8b26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 18:20:16 2010 +0000 - - Constify stroke style and matrices. - - As a simple step to ensure that we do not inadvertently modify (or at least - generate compiler warns if we try) user data, mark the incoming style - and matrices as constant. - - src/cairo-analysis-surface.c | 12 +++--- - src/cairo-paginated-surface.c | 6 ++-- - src/cairo-path-bounds.c | 6 ++-- - src/cairo-path-stroke.c | 60 +++++++++++++++++----------------- - src/cairo-pdf-operators-private.h | 24 +++++++------- - src/cairo-pdf-operators.c | 38 +++++++++++----------- - src/cairo-pdf-surface-private.h | 11 +++--- - src/cairo-pdf-surface.c | 40 +++++++++++----------- - src/cairo-ps-surface.c | 6 ++-- - src/cairo-qt-surface.cpp | 14 ++++---- - src/cairo-quartz-surface.c | 6 ++-- - src/cairo-recording-surface.c | 6 ++-- - src/cairo-script-surface.c | 6 ++-- - src/cairo-stroke-style.c | 2 +- - src/cairo-surface-fallback-private.h | 6 ++-- - src/cairo-surface-fallback.c | 6 ++-- - src/cairo-surface-wrapper-private.h | 12 +++--- - src/cairo-surface-wrapper.c | 12 +++--- - src/cairo-surface.c | 14 ++++---- - src/cairo-svg-surface.c | 40 +++++++++++----------- - src/cairo-tee-surface.c | 6 ++-- - src/cairo-type3-glyph-surface.c | 6 ++-- - src/cairo-win32-printing-surface.c | 6 ++-- - src/cairo-xml-surface.c | 6 ++-- - src/cairoint.h | 44 ++++++++++++------------ - src/drm/cairo-drm-private.h | 6 ++-- - src/drm/cairo-drm-surface.c | 6 ++-- - src/test-null-surface.c | 6 ++-- - src/test-paginated-surface.c | 6 ++-- - src/test-wrapping-surface.c | 6 ++-- - 30 files changed, 212 insertions(+), 213 deletions(-) - -commit 3e17c559b04e2df208f28125746d7e0acfb4b476 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Dec 9 19:46:28 2009 +0100 - - [test] Add pthread-same-source test - - Multiple threads render using the same source surface, but with - different extend and filter. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/pthread-same-source.c | 160 ++++++++++++++++++++++++++++++++++++++ - test/pthread-same-source.ref.png | Bin 0 -> 1000 bytes - 4 files changed, 162 insertions(+), 0 deletions(-) - -commit 30a12f802f4ff46f13dc36e60936cd857585a9ea -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 25 18:55:05 2009 +0100 - - [test] Add a simple multithreading test - - test/Makefile.am | 1 + - test/Makefile.sources | 5 ++- - test/pthread-similar.c | 106 ++++++++++++++++++++++++++++++++++++++++++ - test/pthread-similar.ref.png | Bin 0 -> 170 bytes - 4 files changed, 111 insertions(+), 1 deletions(-) - -commit 038829eb84e53532a6e3c75225933ad85da50cfc -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Dec 6 17:47:50 2009 +0100 - - [test] Add new test checking is_clear is handled properly - - This test does various operations with a clear source surface with - various content types. - The idea is to make sure optimizations done when surface->is_clear == - TRUE only happen in the proper cases. - - test/Makefile.sources | 1 + - test/clear-source.c | 163 +++++++++++++++++++++++++++++++++++++++++++++ - test/clear-source.ref.png | Bin 0 -> 881 bytes - 3 files changed, 164 insertions(+), 0 deletions(-) - -commit bf7fb4e0e09d05f42425cc7969c64992d4dc9ff9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 17:18:08 2010 +0000 - - script: Handle cache allocation failure more gracefully - - Instead of bailing out if we cannot store the glyph cache on the font, - simply do not store the glyph cache on the font... - - util/cairo-script/cairo-script-operators.c | 74 ++++++++++++--------------- - 1 files changed, 33 insertions(+), 41 deletions(-) - -commit 2b312806f138da6f88d03bb3c0c3852b342eb220 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 17:14:24 2010 +0000 - - script: Free the correct pattern after failure. - - The error path attempted to free the resolved pattern which it had just - discovered was NULL and not the locally allocated pattern... - - util/cairo-script/cairo-script-operators.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bc2d0ad114f8fc0b0579851154fe9d39c0aa0fc9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 27 17:30:51 2009 +0000 - - script: Permit surface operations on the context - - By implicitly reference the target of the context instead, i.e. - this reduces the use of: - - /target get (example.png) write-to-png pop - - as a common idiom where the context is kept on the stack and the surface - forgotten. - - util/cairo-script/cairo-script-operators.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit 411c09eed7ebff7335948a7f96d2b29d82ed817a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 1 08:40:41 2009 +0000 - - perf: Enable a surface cache for perf-trace - - Real applications that control their Drawable externally to Cairo are - 'disadvantaged' by cairo-perf-trace when it creates a similar surface - for each new instance of the same Drawable. The difficulty in - maintaining one perf surface for every application surface is that the - traces do not track lifetimes for the application surfaces, so we would - just accumulate stale surfaces. The surface cache takes a different - approach and returns the same surface for each active Drawable, and - maintains a hold-over of the MRU 16 surfaces. This achieves 60-80% hit - rate with firefox, which is probably as good as can be expected. - Obviously for double-buffered applications we only every draw to freshly - created surfaces (and Gtk+ bypasses cairo to do the final copy -- the - ideal application would just use a push-group for double buffering, in - which case we would capture and replay the entire expose event). - - To enable use of the surface cache whilst replaying use -c: - - ./cairo-perf-trace -c firefox-talos-gfx - - perf/Makefile.am | 3 +- - perf/cairo-perf-trace.c | 141 +++++++++++++++++++++++++- - test/any2ppm.c | 4 +- - util/cairo-script/cairo-script-interpreter.h | 3 +- - util/cairo-script/cairo-script-operators.c | 13 ++- - util/cairo-sphinx/sphinx.c | 3 +- - 6 files changed, 157 insertions(+), 10 deletions(-) - -commit c50c8b90c0033686b465e6766fba4772c1d698c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 16:58:40 2010 +0000 - - Move _cairo_error() to a standalone header - - A pending commit will want to include some utility code from cairo and - so we need to extricate the error handling from the PLT symbol hiding. - - src/Makefile.sources | 1 + - src/cairo-analysis-surface.c | 1 + - src/cairo-array.c | 1 + - src/cairo-base64-stream.c | 1 + - src/cairo-base85-stream.c | 1 + - src/cairo-bentley-ottmann-rectangular.c | 1 + - src/cairo-bentley-ottmann-rectilinear.c | 1 + - src/cairo-bentley-ottmann.c | 1 + - src/cairo-beos-surface.cpp | 2 + - src/cairo-cache.c | 1 + - src/cairo-cff-subset.c | 1 + - src/cairo-clip.c | 1 + - src/cairo-deflate-stream.c | 1 + - src/cairo-directfb-surface.c | 1 + - src/cairo-eagle-context.c | 1 + - src/cairo-error-private.h | 60 +++++++++++++++++++++++++++++++ - src/cairo-font-face-twin.c | 1 + - src/cairo-font-face.c | 1 + - src/cairo-font-options.c | 1 + - src/cairo-freelist.c | 1 + - src/cairo-ft-font.c | 1 + - src/cairo-gl-glyphs.c | 2 + - src/cairo-gl-shaders.c | 1 + - src/cairo-gl-surface.c | 1 + - src/cairo-glitz-surface.c | 2 + - src/cairo-glx-context.c | 2 + - src/cairo-gstate.c | 1 + - src/cairo-hash.c | 1 + - src/cairo-hull.c | 1 + - src/cairo-image-surface.c | 1 + - src/cairo-lzw.c | 1 + - src/cairo-matrix.c | 1 + - src/cairo-misc.c | 1 + - src/cairo-os2-surface.c | 1 + - src/cairo-output-stream.c | 1 + - src/cairo-paginated-surface.c | 1 + - src/cairo-path-fill.c | 1 + - src/cairo-path-fixed.c | 1 + - src/cairo-path-stroke.c | 1 + - src/cairo-path.c | 1 + - src/cairo-pattern.c | 1 + - src/cairo-pdf-operators.c | 1 + - src/cairo-pdf-surface.c | 1 + - src/cairo-pen.c | 1 + - src/cairo-png.c | 2 + - src/cairo-polygon.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-qt-surface.cpp | 6 ++- - src/cairo-quartz-font.c | 2 + - src/cairo-quartz-image-surface.c | 2 + - src/cairo-quartz-surface.c | 2 + - src/cairo-recording-surface.c | 3 +- - src/cairo-region.c | 1 + - src/cairo-rtree.c | 1 + - src/cairo-scaled-font-subsets.c | 1 + - src/cairo-scaled-font.c | 1 + - src/cairo-script-surface.c | 1 + - src/cairo-stroke-style.c | 1 + - src/cairo-surface-fallback.c | 1 + - src/cairo-surface-wrapper.c | 1 + - src/cairo-surface.c | 1 + - src/cairo-svg-surface.c | 1 + - src/cairo-tee-surface.c | 1 + - src/cairo-tor-scan-converter.c | 1 + - src/cairo-toy-font-face.c | 1 + - src/cairo-traps.c | 1 + - src/cairo-truetype-subset.c | 1 + - src/cairo-type1-fallback.c | 1 + - src/cairo-type1-subset.c | 1 + - src/cairo-type3-glyph-surface.c | 1 + - src/cairo-unicode.c | 1 + - src/cairo-user-font.c | 1 + - src/cairo-vg-surface.c | 3 +- - src/cairo-win32-font.c | 1 + - src/cairo-win32-printing-surface.c | 1 + - src/cairo-win32-surface.c | 1 + - src/cairo-xcb-surface.c | 3 +- - src/cairo-xlib-display.c | 1 + - src/cairo-xlib-screen.c | 1 + - src/cairo-xlib-surface.c | 1 + - src/cairo-xlib-visual.c | 2 + - src/cairo-xml-surface.c | 1 + - src/cairo.c | 1 + - src/cairoint.h | 12 ------ - src/drm/cairo-drm-bo.c | 1 + - src/drm/cairo-drm-intel-surface.c | 1 + - src/drm/cairo-drm-intel.c | 1 + - src/drm/cairo-drm-radeon-surface.c | 1 + - src/drm/cairo-drm-radeon.c | 1 + - src/drm/cairo-drm-surface.c | 1 + - src/drm/cairo-drm.c | 1 + - src/test-fallback-surface.c | 1 + - src/test-fallback16-surface.c | 1 + - src/test-null-surface.c | 2 + - src/test-paginated-surface.c | 1 + - src/test-wrapping-surface.c | 1 + - 96 files changed, 170 insertions(+), 17 deletions(-) - -commit 558f9501700ba569f04f345f7c64d16b1870e37c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 18 22:47:34 2010 +0000 - - surface-wrapper: Avoid copying patterns and clips unless transformed. - - An older variant of the fixes for moving the device transformation out - of the surface layer, but languished in a side branch. The only benefit - of this patch is that it avoids the copy where possible. - - src/cairo-surface-wrapper.c | 134 ++++++++++++++++++++++++------------------- - 1 files changed, 75 insertions(+), 59 deletions(-) - -commit 8f694817227366f4a4c6bbbf46e6cdddb4a065df -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 19 17:12:47 2010 +0000 - - gitignore: refresh - - Add forgotten local targets to .gitignore - - .gitignore | 1 + - perf/.gitignore | 1 + - util/.gitignore | 2 ++ - util/cairo-script/.gitignore | 1 + - 4 files changed, 5 insertions(+), 0 deletions(-) - -commit 5914e995723682e0b1f685d9ff5ea5abe05ae024 -Author: Eric Anholt <eric@anholt.net> -Date: Fri Jan 22 09:21:36 2010 -0800 - - [gl] Cache a temporary glyph compositing mask for reuse later. - - Cuts firefox-talos-gfx time from 56 seconds to 43 seconds. - - src/cairo-gl-glyphs.c | 29 ++++++++++++++++++++++------- - src/cairo-gl-private.h | 4 ++++ - src/cairo-gl-surface.c | 4 +++- - 3 files changed, 29 insertions(+), 8 deletions(-) - -commit 1bf0f64ee7783742fa777a496567e4da48e300dd -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 21 14:08:11 2010 -0800 - - [gl] Composite component-alpha glyphs directly instead of through a mask. - - Cuts gnome-terminal-vim time from 58 seconds to 20. - - src/cairo-gl-glyphs.c | 190 +++++++++++++++++++++++++++++++----------------- - src/cairo-gl-private.h | 4 + - src/cairo-gl-surface.c | 2 +- - 3 files changed, 127 insertions(+), 69 deletions(-) - -commit 12d521df8acc483b2daa844d4f05dc2fe2765ba6 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 21 13:19:17 2010 -0800 - - [gl] Use GL_RGBA textures even for CAIRO_CONTENT_COLOR. - - When the texture is GL_RGB, GL_CLAMP_TO_BORDER (EXTEND_NONE) fills the - border color alpha channel with 1, when the whole reason we were using - the border color was to get a color and alpha of 0. We're forced to - use GL_RGBA textures and do extra work to fill in the alpha channel of - them to 1 to get cairo's desired behavior. - - This fixes a failure in rotate-image-surface-paint and 4 other - testcases. No performance difference in firefox-talos-gfx. - - src/cairo-gl-surface.c | 131 +++++++++++++++++++++++++++-------------------- - 1 files changed, 75 insertions(+), 56 deletions(-) - -commit e316cb9db57094359c28f6b740e73674e8dcc134 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Jan 20 13:33:56 2010 -0800 - - [gl] Add support for component-alpha glyph rendering. - - This is done using a mask and the two-pass trick I did for EXA. Fixes - text-antialias-subpixel. - - src/cairo-gl-glyphs.c | 60 ++++++-- - src/cairo-gl-private.h | 3 +- - src/cairo-gl-surface.c | 384 ++++++++++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 424 insertions(+), 23 deletions(-) - -commit ceeb7e7e703213a83ca43d80962519074a19364d -Author: Eric Anholt <eric@anholt.net> -Date: Tue Jan 19 13:43:16 2010 -0800 - - [gl] Use the UNSUPPORTED() macro in more places for fallback debugging. - - src/cairo-gl-surface.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 5d9e2fd84b4f66e5b121d95805ce34e2f482d1b0 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Jan 15 16:28:12 2010 +0100 - - [quartz] Leftbehind change from a39075c88f9b2e12e19348ea11c9b3f739818265 - - This commit completes the change in a39075c88f9b2e12e19348ea11c9b3f739818265. - It removes unused variables and corrects the extents rect computation. - - src/cairo-quartz-surface.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 6950b233e41a0c926465728c37f9bc5512f2844b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 15 14:25:16 2010 +0000 - - qt: Make flush() robust. - - Hanno Meyer-Thurow reported in - - http://bugs.freedesktop.org/show_bug.cgi?id=26063 - [PATCH] various fixes to cairo-qt - - a few issues related to _cairo_qt_surface_flush() where firefox was - crashing after being built to use cairo-qt. - - This is an amalgam of those patches that hopefully address the issue. - - src/cairo-qt-surface.cpp | 33 ++++++++++++++++++++++++++------- - 1 files changed, 26 insertions(+), 7 deletions(-) - -commit 4e315d84723b27746a6a012ab7de429b2f2ef90b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 15 12:21:52 2010 +0000 - - pattern: Premultiply color-stop when converting to solid - - Fixes: test/linear-uniform - https://bugzilla.mozilla.org/show_bug.cgi?id=539165 - Bug 539165 - gradients with a single stop do not have their color - multiplied by the alpha. - - As reported by Jeff Muizelaar, we regressed in 2d790daa as the - color-stops are not premultiplied and so could not be treated as an - ordinary cairo_color_t. Instead we have to create a intermediate - cairo_color_t from the original values in order for the - premultiplication to be performed. - - src/cairo-gstate.c | 26 +++++++++++++++++++------- - src/cairo-pattern.c | 32 +++++++++++++++++++++----------- - 2 files changed, 40 insertions(+), 18 deletions(-) - -commit f40560a9bb5b12d2584ed297bf4114baf2aa9cc1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 15 12:17:30 2010 +0000 - - test: Add linear-uniform - - Jeff reported a regression found by Mozilla whereby a uniform gradient - was not being premultiplied on conversion to a solid pattern. - - https://bugzilla.mozilla.org/show_bug.cgi?id=539165 - [Bug 539165] gradients with a single stop do not have their color - multiplied by the alpha. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/linear-uniform.c | 63 +++++++++++++++++++++++++++++++++++++++++++ - test/linear-uniform.ref.png | Bin 0 -> 128 bytes - 4 files changed, 65 insertions(+), 0 deletions(-) - -commit e22c02dbaeda6941083fc89b517508dc0c4386a0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 15 12:02:58 2010 +0000 - - test: Add degenerate-arcs - - A simple test to ensure that using degenerate-arcs such as when drawing - a rounded rectangle with radii=0 construct a proper path. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/degenerate-arcs.c | 57 ++++++++++++++++++++++++++++++++++++++++++ - test/degenerate-arcs.ref.png | Bin 0 -> 120 bytes - 4 files changed, 59 insertions(+), 0 deletions(-) - -commit a39075c88f9b2e12e19348ea11c9b3f739818265 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Jan 6 18:53:54 2010 +0100 - - [quartz] Fix generic masking - - Masking with unbounded operators was broken because an incorrect - transformation was applied to inverted mask used for the fixup. - - src/cairo-quartz-surface.c | 59 +++++++++++++++---------------------------- - 1 files changed, 21 insertions(+), 38 deletions(-) - -commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Jan 5 19:42:23 2010 +0100 - - [quartz] Approximate dense dashing patterns - - Quartz doesn't try to approximate dash pattern even if they are well - beyond suface sampling frequency. Approximating dash patterns when their - density is too high avoids looping indefinitely in these degenerate cases. - - src/cairo-quartz-surface.c | 32 +++++++++++++++++++++----------- - 1 files changed, 21 insertions(+), 11 deletions(-) - -commit ad7ab00c10fc1adcf2ef4574fdd00b25dfcdafdd -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Jan 2 13:23:53 2010 +0100 - - [quartz] Improve A8 and A1 support - - Use A8 images as alpha-only masks intread of greyscale images. - Add support to A1 images (they were ignored before). - - src/cairo-quartz-surface.c | 59 ++++++++++++++++++++++++++------------------ - 1 files changed, 35 insertions(+), 24 deletions(-) - -commit f3b3a5c43f247f3e9019fa6c1fd2abb3b00dd9ea -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Jan 15 07:47:30 2010 +1030 - - Fix bug in _cairo_ft_index_to_ucs4 - - Previously it would miss the first character causing the space glyph to - return 0x00A0 instead of 0x0020. - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e26e2c8cc41b4e60462eacbd87894dc82beca883 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 14 10:05:02 2010 -0800 - - [gl] Fix the color bits of CAIRO_CONTENT_ALPHA surface patterns to be 0. - - Fixes surface-pattern-operator and alpha-similar. - - src/cairo-gl-private.h | 1 - - src/cairo-gl-surface.c | 22 +++++++++++----------- - 2 files changed, 11 insertions(+), 12 deletions(-) - -commit 520945603cdbacb90b3067f24a37b6dbd2ea6808 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 14 10:00:37 2010 -0800 - - [gl] Remove the special-casing of acquiring a pattern surface. - - _cairo_pattern_acquire_surface() should do fine at it, and matches - what cairo-drm-i915 does. - - src/cairo-gl-surface.c | 127 ------------------------------------------------ - 1 files changed, 0 insertions(+), 127 deletions(-) - -commit dbf9faf8232e7bf279377b5f3fc08ed210ca4e51 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Jan 13 10:33:32 2010 -0800 - - [gl] Use GLSL for fill_rectangles when available. - - Ultimately, we want all of our paths to use shaders when they are - exposed -- it brings us closer to GL 3.0 compatibility and it should - reduce the work that GL drivers have to do per operation to compute - the required hardware state. - - src/Makefile.sources | 2 +- - src/cairo-gl-private.h | 6 ++ - src/cairo-gl-shaders.c | 117 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-surface.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++-- - 4 files changed, 244 insertions(+), 6 deletions(-) - -commit 57341cf5ac4d16222da27856e3a1092a473597e8 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Jan 13 14:18:06 2010 -0800 - - [gl] Use ADD instead of SOURCE when making a mask for overlapping glyphs. - - The whole point of making the mask was to avoid overwriting one glyph - with the data from another. Whoops. - - Fixes ft-show-glyphs-positioning, text-rotate, overlapping-glyphs, - clip-text. - - src/cairo-gl-glyphs.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6e0a63102e7e2d3fa3d5c993f2b94a2d6e40bdd8 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Jan 13 14:06:23 2010 -0800 - - [gl] Clear the current_target cache when binding a framebuffer in creation. - - Failing to do so meant that we might not re-bind the framebuffer to - the correct one if we didn't follow up surface creation with drawing - to it. - - Fixes many testcases. Thanks to T. Zachary Laine for tracking down - that the current_target was the source of these issues. - - src/cairo-gl-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ad0f4bee19b214b96fb07a45d1f059b362afee0f -Author: T. Zachary Laine <whatwasthataddress@gmail.com> -Date: Thu Jan 7 17:24:31 2010 -0600 - - [gl] Clear the is_clear flag on the temporary glyph mask we create. - - Normally is_clear is cleared by the caller of one of the 5 basic - entrypoints, but in this temporary surface usage nobody else can do it - for us. - - Fixes ft-show-glyphs-table, user-font-rescale, and select-font-face. - - src/cairo-gl-glyphs.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 384e50d858e9eec670f764c758fb3aa09b56caed -Author: T. Zachary Laine <whatwasthataddress@gmail.com> -Date: Wed Jan 13 15:06:24 2010 -0600 - - [gl] Removed repeated lines of source - - The two removed lines are redundant with code a few lines above them. - - src/cairo-gl-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 515ccb63a67c88ddb2bc5adfd018cae55bc93185 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jan 11 16:04:21 2010 -0800 - - [gl] Fix the glyph cache full flush to really try again. - - Previously, the initial error handling would dump through to software - fallback instead of retrying in the following code. - - src/cairo-gl-glyphs.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 4aae4bfa8f28a470ab18575670563ad28374e445 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 12 17:10:04 2010 +0000 - - test: Fix typo in path-stroke-twice reference image - - Sigh. I committed the reference image with the name - path-stroke-twice-ref.png. - - test/path-stroke-twice-ref.png | Bin 206 -> 0 bytes - test/path-stroke-twice.ref.png | Bin 0 -> 206 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 74ea4c908067f5579b51d3dbaea387da8f343671 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 12 17:00:25 2010 +0000 - - path: Do not remove anti-parallel line segments in case we are stroking - - Bug 26010 - cairo_line_to optimizes away path segments - http://bugs.freedesktop.org/show_bug.cgi?id=26010 - - As exercised by path-stroke-twice, we incorrectly optimise away a line - segment if the path doubled back upon itself. This is very reminiscent - of the optimisation bug for replacing curve-to with line-to. - - src/cairo-path-fixed.c | 5 ++++- - src/cairo-slope-private.h | 7 +++++++ - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit a5dd5a6069c0d7435260a954d8d98483f5fbcc1c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 12 16:32:09 2010 +0000 - - test: Add path-stroke-twice - - Exercises a bug found by alois@astro.ch, whereby we inadvertently remove - a line segment when the path doubles back upon itself. - - Bug 26010 - cairo_line_to optimizes away path segments - http://bugs.freedesktop.org/show_bug.cgi?id=26010 - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/path-stroke-twice-ref.png | Bin 0 -> 206 bytes - test/path-stroke-twice.c | 54 +++++++++++++++++++++++++++++++++++++ - test/path-stroke-twice.ps.ref.png | Bin 0 -> 197 bytes - 5 files changed, 57 insertions(+), 0 deletions(-) - -commit 4204605813d93e7e2f0d8761e90a6dd6b8089dcb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 8 11:58:15 2010 +0000 - - type1: Destroy the output stream. - - mpsuzuki spotted that the output stream for the subset was not being - destroyed on the error path - on closer inspection, it wasn't destroyed - along the normal path either and may never have been correctly - initialised to NULL on an earlier error. - - Reported-by: mpsuzuki@hiroshima-u.ac.jp - - src/cairo-type1-subset.c | 28 +++++++++++++++------------- - 1 files changed, 15 insertions(+), 13 deletions(-) - -commit 41a24d822ac094f0841ba0c92ca86448ad062def -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 7 11:58:01 2010 +0000 - - trace: Correctly encode octal values. - - How embarrassing. - - util/cairo-trace/trace.c | 21 ++++++++++++++------- - 1 files changed, 14 insertions(+), 7 deletions(-) - -commit 3ae9d04c6ddd311ffab91170fb9342e37c5530a8 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jan 1 20:13:33 2010 +0200 - - [stroker] Fix off-by-one memory allocation in _tessellate_fan(). - - The number of points in a triangle fan was miscomputed because - it was computing the number of line segments rather than points - in the fan. Now we include the final point of the fan correctly - in the count. - - This fixes https://bugs.webkit.org/show_bug.cgi?id=33071 as - reported by Benjamin Otte. A derived test case was not added - to the cairo test suite since the bug is difficult to trigger in - a reliable way which causes visible results (as opposed to - silent heap corruption.) - - The easiest way of triggering the bug is to stroke a line - using a large line width and round caps or joins. - - src/cairo-path-stroke.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a0ea0b63fdd38a73d6696da5cd4800d9a7289240 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 30 16:21:50 2009 +0000 - - arc: Just emit a line-to if radius is zero. - - In order to be consistent with the semantics of cairo_arc() using a - radius of 0 should simply degenerate into a line-to. - - Reported-by: Benjamin Berg - - src/cairo.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 21560b3ec6d015004867207c5bdd90061b8a5d80 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Fri Dec 11 10:29:12 2009 +0100 - - [trace] Fix compilation when FreeType is disabled - - cairo-trace needs some headers which are missing if freetype is - not enabled. Adding them explicitly fixes compilation. - - util/cairo-trace/trace.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 393d2d9c9199c368916fb5412abaac163f57ff86 -Author: Tim Janik <timj@gtk.org> -Date: Mon Dec 28 13:34:43 2009 +0100 - - Fixed documentation typo. - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2d75203c515f9740a8e0e9779391de0a1a54b07 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Nov 29 15:56:26 2009 +0200 - - [dirty] Add more missing surface dirtying notifications. - - Now that the image surface actually cares about - cairo_surface_mark_dirty() we're hitting cases where - we've forgotten to mark surfaces dirty. - - boilerplate/cairo-boilerplate.c | 1 + - src/cairo-xlib-surface.c | 1 + - util/cairo-script/cairo-script-operators.c | 2 ++ - 3 files changed, 4 insertions(+), 0 deletions(-) - -commit b76565d2f4a2510aabada4cef968b9b597bbef09 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Nov 29 15:40:30 2009 +0200 - - [test] Don't use uninitialised data in surface-source.c - - The draw_pattern() function assumed the incoming surface - was clear, but it's not. Explicitly clear the surface first. - - test/surface-source.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit e09b754fdd43206e1668812be4ff11d25188148c -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Nov 29 01:11:29 2009 +0200 - - [gstate] Change dash offset normalisation to preserve offsets in range. - - We have a test case get-and-set which wants to see whatever it puts - into a cairo_t come back out again, but at the same time cairo-gstate - wants to range reduce the dash offset it's given to a sane range. - This patch changes the range reduction algorithm to always normalize - to a non-negative dash offset and not touch dash offsets which are - already in range. - - src/cairo-gstate.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit b394240941dffa263776a62cf42dc9b7e477f7a2 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Nov 29 02:48:23 2009 +0200 - - [test] Add missing mark_dirty() calls to test cases. - - A recent optimisation has added a flag to the image - surface which is used to track whether the surface - is clear or not. This makes it imperative that clients - call cairo_surface_mark_dirty() if they use cairo to - allocate their pixel buffers and then proceed to - initialize them without telling cairo about it. - - test/a1-mask.c | 1 + - test/large-source.c | 2 ++ - test/user-font-mask.c | 1 + - 3 files changed, 4 insertions(+), 0 deletions(-) - -commit 9ddf14cfd5c3bf0cf507cfc82b192f5c46f66f9a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 29 10:40:18 2009 +1030 - - PDF: Don't specify colorspace in JPEG2000 image dictionary - - PDF uses the colorspace specified in the JPEG2000 image. - - src/cairo-pdf-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit d58560bda8361bd25f1b2207ecfab4b331601045 -Author: Benjamin Otte <otte@gnome.org> -Date: Fri Nov 27 21:04:55 2009 +0100 - - Satisfy make check - - src/cairo-stroke-style.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 16fffc5c05857896c03decdcebff7f1b5e582390 -Author: Benjamin Otte <otte@gnome.org> -Date: Fri Nov 27 18:13:45 2009 +0100 - - Apply device transform in surface wrapper - - src/cairo-surface-wrapper.c | 56 +++++++++++++++++++++++++++++++++++------- - 1 files changed, 46 insertions(+), 10 deletions(-) - -commit 02d7e123d640d62db46ef03d7faecbc7598444e1 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Nov 27 23:11:56 2009 +1030 - - PDF: Remove extraneous \n from end of jpeg/jp2 data - - PDF requires a '\n' between the end of stream data and the "endstream" - that is not included in the stream length. Ensure this is always added - in _close_stream where it is not included in the stream length. - - Previously the jpeg/jp2 embedding functions were adding the '\n'. This - resulted in the '\n' becoming part of the stream data. - - src/cairo-pdf-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 4fc7bdaed651a5c19eb89dddd88808468e0e7eb8 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Thu Nov 26 21:14:20 2009 +1030 - - PS: Add some missing pdf-operators flushes - - src/cairo-ps-surface.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 3f0c9afa9760a90065c67927c63770f9bb8abe99 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 25 15:57:46 2009 +0100 - - [clip] Don't ignore outermost clip when it clips everything - - Fixes testcases clip-stroke-no-op and clip-fill-no-op added in - 0d8a04ef47426d87c7932f308a831e36b4ef7683 - - src/cairo-clip.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 0d8a04ef47426d87c7932f308a831e36b4ef7683 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 25 10:48:39 2009 +0000 - - test: Add cases to exercise clipping after no-ops - - Whilst investigating: - - Bug 31788: SVG <line> with y1 == y2 and both with fractional - part don't render - https://bugs.webkit.org/show_bug.cgi?id=31788 - - I found that it can be reduced to a no-op clip following a no-op stroke - or fill. These conditions are exercised here and are shown to be a bug - introduced in the 1.9.x development series. - - test/Makefile.am | 2 + - test/Makefile.sources | 2 + - test/clip-fill-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ - test/clip-fill-no-op.ref.png | Bin 0 -> 152 bytes - test/clip-stroke-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ - test/clip-stroke-no-op.ref.png | Bin 0 -> 152 bytes - 6 files changed, 136 insertions(+), 0 deletions(-) - -commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Nov 10 23:09:56 2009 +0100 - - Improve stroking of densely dashed styles - - Add some auxiliary functions to cairo-stroke-style to compute - properties of the dashed patterns (period, "on" coverage) and to - generate approximations when the dash pattern is sub-tolerance. - These functions are used in cairo-path-stroke to simplify dash - patterns stroked by cairo. - Fixes dash-infinite-loop - See http://bugs.freedesktop.org/show_bug.cgi?id=24702 - - src/cairo-path-stroke.c | 24 +++++++-- - src/cairo-stroke-style.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 20 ++++++++ - 3 files changed, 157 insertions(+), 6 deletions(-) - -commit 9c24288c820069e80b0feb5e99ece4c89e92c0c6 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Nov 11 00:09:08 2009 +0100 - - Revert "[test] Reorder dash-infinite-loop to not hit a runaway allocation." - - The infinite loop problem in _cairo_stroker_dash_start is solved by - commit ee02f3484899527380df94c00f40da87f41660ea, so hitting that - problem is not possible anymore and dash-infinite stroke always - hit the memory intensive loops. - This reverts commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe. - - test/dash-infinite-loop.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cc2d2630669b084ec43e415d2806d94af00cf56c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Nov 10 22:58:59 2009 +0100 - - Improve stroke offset computation - - The stroke offset was forced to be positive because stroking code - wants to be able to decrement it until it finds the first dash to be - drawn. This can lead to long (almost infinite) loops if the offset is - positive but huge compared to the total length of the dash pattern. - Computing the offset this way guarantees that it's always the smallest - non-negative equivalent offset. - - src/cairo-gstate.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) - -commit e436a57c22f2c2a87404cac27e2d5e3c404f8bf9 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Nov 10 13:29:28 2009 +0100 - - Fix odd length dashing with negative offset - - When computing an equivalent offset, a wrong total dash length was - used when the dash elements were odd and more than 1. - Doubling the total dash length whenever they are odd is needed to - correctly compute the new offset. - Fixes dash-offset. - - src/cairo-gstate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b1a76394655793fd698a1281b00a3d049f9e70f5 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Nov 10 13:09:50 2009 +0100 - - Add dash-offset test - - Stroking a dash pattern of odd length with a negative offset is broken - (except when the pattern is composed by a single dash). - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/dash-offset.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++ - test/dash-offset.ref.png | Bin 0 -> 794 bytes - 4 files changed, 97 insertions(+), 0 deletions(-) - -commit 7d8788b4ba5ae335a7bb77bd09e7ebd20376f632 -Author: Robert O'Callahan <robert at ocallahan.org> -Date: Mon Nov 9 18:58:59 2009 +0100 - - [quartz] Cleanup fallback source - - Remove the transformation code as it's useless and confusing. - The clipbox was transformed in a wrong way if the CTM - was not the base one, otherwise the transformation did nothing. - As long as _cairo_quartz_setup_fallback_source is only called - with the base CTM, no transformation needs to be performed on the - clipbox. - Patch by Robert O'Callahan, see Mozilla bug #507939. - - src/cairo-quartz-surface.c | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit 248090e52b02f2b2dc424c6073489df32632b9d1 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Nov 9 21:38:00 2009 +0100 - - [quartz] Fix compositing operators - - Fallback on SATURATE (since quartz doesn't support it) and on - blending operators (to be implemented using CGContextSetBlendMode, - after its availability has been assessed). - Workaround the different behaviour of quartz operators on alpha - masks. - Fixes text in clip-operator and clip-text, blend modes in - extended-blend, extended-blend-alpha, saturate in operator, - operator-alpha and surface-pattern-operator. - Changes the output of operator-alpha-alpha, but to really fix it - pure-alpha surfaces needs to be treated as alpha masks and not as - greyscale images. - - src/cairo-quartz-surface.c | 182 ++++++++++++++++++++++++++++++++++---------- - 1 files changed, 140 insertions(+), 42 deletions(-) - -commit d44414191a685a23fd48bb32826366dfd113e1e5 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Nov 9 14:21:40 2009 +0100 - - [quartz] Fix source-unbounded compositing of surface sources - - Surface sources were not respecting EXTEND_NONE when composited - because the part outside of the surface rectangle was not changed. - To correctly extend the source, it's sufficient to composite a - transparent rectangle with a hole in the region covered by the surface. - Fixes clip-unbounded and operator-source. Changes the output of - surface-pattern-operator. - - src/cairo-quartz-surface.c | 62 ++++++++++++++++++++------------------------ - 1 files changed, 28 insertions(+), 34 deletions(-) - -commit 7ef611a67a2a68d0a50e2191804a8ef137c78b33 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Nov 9 20:17:35 2009 +0100 - - [quartz] Fix stroking with unbounded operator - - Stroking was not fixed up correctly when the stroke trasform - was not the identity and when the stroked path was dashed. - Instead of building a mask image and clearing through it - (forgetting to use the CTM and the dash setting), the code now - simply fills the outside of the stroke with tranparent black. - Additionally this commit moves the CTM composition so that the invocation - of _cairo_quartz_setup_source is always done with the base CTM. - This commit changes the result of clip-stroke-unbounded (the clip - mask is now correctly aligned to the stroked path). - - src/cairo-quartz-surface.c | 36 +++++++++++++----------------------- - 1 files changed, 13 insertions(+), 23 deletions(-) - -commit 577ac4fc6d810cae7ff6d460fdea1886cd97258c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Nov 9 14:24:13 2009 +0100 - - [quartz] Fix implied colour of alpha-only surface sources - - If a fill colour was set, an alpha-only surface source would - have used that colour instead of black. - - src/cairo-quartz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 8b25e4a7fd839ac399d14460d2596037134c9801 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Oct 19 18:38:57 2009 +0200 - - [quartz] Improve unbounded operators fixup - - Don't allocate a colorspace and use a 16-bytes aligned stride and - an alpha-only image for the rendering of the fixup mask. - - src/cairo-quartz-surface.c | 16 +++++++--------- - 1 files changed, 7 insertions(+), 9 deletions(-) - -commit ed8bdcd59863964a3eb9c49ca1a9bfd5f544350c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Oct 19 17:33:10 2009 +0200 - - [quartz] Improve A8 image handling - - A8 images were cosidered grayscale, whereas they should behave like - transparency mask. They are now alpha-only images and the stride is - 16-bytes aligned, as suggested. - Fixes alpha-similar and mask-transformed-similar. Makes the patterns - behave (as expected) as masks in surface-pattern-operator. - Affects the output of operator-alpha-alpha, but the result is not - correct because of wrong compositing. - - src/cairo-quartz-surface.c | 21 +++++++++------------ - 1 files changed, 9 insertions(+), 12 deletions(-) - -commit b32695c248b08289ce431d5f2fdab5205219c203 -Author: Robert O'Callahan <robert at ocallahan.org> -Date: Tue Oct 20 16:07:52 2009 +0200 - - [quartz] Fix gradient pattern painting - - CTM was changed and not restored when painting gradients. - Fixes the alignment of surface patterns in surface-pattern-operator. - Patch by Robert O'Callahan, see Mozilla bug #507939. - - src/cairo-quartz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 1ce096657b2d38956e3229042f87aea42b0d0d8c -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Nov 3 22:51:29 2009 +0100 - - Fix compilation on MacOS X - - Enable "ld_preload" (DYLD_INSERT_LIBRARIES + DYLD_FORCE_FLAT_NAMESPACE) - and build cairo-trace as a library instead of a module to make it - work also on MacOS X. - - configure.ac | 17 ++++++++++++++++- - util/cairo-trace/Makefile.am | 22 +++++++++++----------- - util/cairo-trace/cairo-trace.in | 6 +++++- - util/cairo-trace/trace.c | 2 +- - 4 files changed, 33 insertions(+), 14 deletions(-) - -commit c181f9e9aeac375eed07aaab58d177e3476d5117 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sat Nov 7 19:29:30 2009 +0100 - - Add new operator-alpha-alpha test - - Compositing of alpha-only sources is not throughly tested and - as a consequence the misbehaviour of some backends is not - shown by the test suite. - - [ickle: Added XFAILs for pdf, ps, svg.] - - src/cairo-xcb-surface.c | 4 - - test/Makefile.am | 4 + - test/Makefile.sources | 1 + - test/operator-alpha-alpha.c | 166 +++++++++++++++++++++++++++++++ - test/operator-alpha-alpha.pdf.xfail.png | Bin 0 -> 3749 bytes - test/operator-alpha-alpha.ps.xfail.png | Bin 0 -> 1338 bytes - test/operator-alpha-alpha.ref.png | Bin 0 -> 3441 bytes - test/operator-alpha-alpha.svg.xfail.png | Bin 0 -> 838 bytes - 8 files changed, 171 insertions(+), 4 deletions(-) - -commit cee3a6169bdf7f64c126c487b443dcb7a9f0586a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 8 21:52:06 2009 +1030 - - Type1-subset: Append "cleartomark" operator for binary fonts that don't include it - - Type 1 fonts embedded in PDF may omit the fixed-content portion of the - font that contains the "cleartomark" operator. - - src/cairo-type1-subset.c | 22 +++++++++++++++------- - 1 files changed, 15 insertions(+), 7 deletions(-) - -commit d962d6bae2681ea1f3c9533a83c8902d76e81c6a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 8 21:46:16 2009 +1030 - - PDF: Include Type 1 fixed-content portion in the embedded font - - Some fonts may contain additional PostScript code after the - cleartomark. - - src/cairo-pdf-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit ac59c7580894fc5fd424f7f6f8c1532d15048566 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 8 21:38:58 2009 +1030 - - Type1-subset: Check for binary eexec data - - Type 1 fonts embedded in PDF have the the encrypted portion in binary - but the existing check for binary only works for Type 1 fonts in PFB - format. - - Add an additional check based on the first 4 characters of eexec data. - The Type 1 specification gurantees that at least one of the first 4 - bytes of ciphertext is not an ASCII Hex character. - - src/cairo-type1-subset.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit a4a59be600cbe17f43afa20422f9d05f3a5d5b52 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Nov 7 14:36:49 2009 +1030 - - Type 1 subset: Don't add a new line when in binary mode - - At the end of the private dictionary a new line is appended so that - the trailing zeros will not exceed 80 columns. In hex mode (used for - PS embedding) extra white space is harmless as it is ignored when - parsing the ascii hex encoded data. But in binary mode (used for PDF - embedding) the new line must not be added as it corrupts the binary - data. - - https://bugs.launchpad.net/ubuntu/+source/cups/+bug/419143 - - src/cairo-type1-subset.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 9775f44436ffaf54931614d1867bcb7d147acd06 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 5 10:13:34 2009 +0000 - - AUTHORS: Add Andrea Canciani - - AUTHORS | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit d51915f873da8d40740a908c86f02e972e358be9 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Wed Nov 4 16:15:48 2009 +0100 - - xlib: Fix double free - - Both _cairo_xlib_call_close_display_hooks and _cairo_xlib_screen_destroy - invoke _cairo_xlib_screen_close_display, which frees all the cached - GCs, but (if HAS_ATOMIC_OPS is undefined) doesn't mark them as freed, - thus freeing them agin upon the second invocation. - - src/cairo-xlib-screen.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7c1424a315b677ca119d11b7ced1d4c969dde568 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Oct 18 08:59:33 2009 +0200 - - quartz: Fix compilation - - The function _cairo_image_surface_create_for_content does not exist. - The correct name of the function is instead _cairo_image_surface_create_with_content. - - src/cairo-quartz-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8a10c25c3f4036d17e24852e7dc970fa06fcb4af -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 5 10:02:54 2009 +0000 - - test: Tweak Benjamin's xcomposite-projection - - Include Benjamin's advice on how to make the bug more visible inline - with the code. - - test/xcomposite-projection.c | 69 +++++++++++++++++++++++++++++------------- - 1 files changed, 48 insertions(+), 21 deletions(-) - -commit a9f37953c71e16f65122097462e51b035783a965 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 4 13:59:58 2009 +0100 - - [xlib] Use correct number when checking if points are out of range - - src/cairo-xlib-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit aa1f245ea313a2f1f0dda3994f5b48073b0c385d -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 4 13:56:15 2009 +0100 - - [test] Add "target=raster" to test - - The test isn't useful on vector backends and fails there due to - antialiasing issues. - - test/xcomposite-projection.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 52afe9c77f2f54372fefeca50321a27e8dda0f63 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 4 11:15:57 2009 +0100 - - [xlib] Fix new Composite test - - When the reference point was tirggering _line_exceeds_16_16() and got - adjusted, the code failed to compute the srcX and srcY arguments for the - call to XRenderCompositeTrapezoids() correctly and caused the resulting - source image to be misaligned. - - src/cairo-fixed-private.h | 9 +++++++++ - src/cairo-xlib-surface.c | 22 +++++++++++----------- - 2 files changed, 20 insertions(+), 11 deletions(-) - -commit 84bbf179c375622d2c7b4e21b1b8ce189b5a18f2 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Nov 4 11:06:57 2009 +0100 - - [test] Add a test exposing bugs in XRenderComposite - - This test fills a slightly rotated surface slightly above the 0 line. - This hits some corner cases in the XRenderComposite path. - I discovered these issues while playing with video rendering onto the - canvas in HTML5 (both Webkit and Mozilla have this problem). - I used CAIRO_ANTIALIAS_NONE and a single-color source in the test to get - rid of aliasing issues in the output images. This makes some issues - slightly less visible, but still fails for all of them. If you want to - get a clearer view, disable it and use romedalen.png instead - it has - the same size as the red surface. - - (At least) 3 bugs are at work here: - - if _line_exceeds_16_16() triggers for the reference point, the - source surface will be misaligned. - - the intel driver seems to have an off-by-one bug on my i945 when - positioning the source surface, causing black seams at the top - (not visible in the test unless using romedalen.png) and on the left - of the image. - - My Xvfb fails completely in picture up/download in the xlib-fallback - path. - - test/Makefile.sources | 1 + - test/xcomposite-projection.c | 81 ++++++++++++++++++++++++++++++++++++ - test/xcomposite-projection.ref.png | Bin 0 -> 1112 bytes - 3 files changed, 82 insertions(+), 0 deletions(-) - -commit 9b42b6156d9916e64e19f2ccb0b43f4d1df72e79 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 2 12:50:45 2009 +0000 - - build: Add -pthread to real_pthread_CFLAGS - - build/configure.ac.system | 12 ++++++++++ - configure.ac | 51 +++++++++++++++++++------------------------- - 2 files changed, 34 insertions(+), 29 deletions(-) - -commit 3eecf2f60c85e0195360ff3c3a54d58ceaa4a6f1 -Author: Benjamin Otte <otte@gnome.org> -Date: Mon Nov 2 13:20:25 2009 +0100 - - sphinx: Add required pthread libs - - Try again, this time for real hopefully. - - configure.ac | 2 +- - util/cairo-sphinx/Makefile.am | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 837eb577b4707e447fafb0dfca378ecf4ea3fda5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 2 11:56:29 2009 +0000 - - sphinx: Add required pthread libs - - Switching to pthread-stubs broke the build for sphinx on unbroken - platforms [those that do not unnecessarily link against -lpthreads]. - - configure.ac | 7 +++++++ - util/cairo-sphinx/Makefile.am | 5 +++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit 942a15ba9e85fa3297ad6e65270928ad3c1c0a42 -Author: Benjamin Otte <otte@gnome.org> -Date: Mon Nov 2 12:51:14 2009 +0100 - - [test] Update upscale test to expose an Xlib failure - - By filling the background with grey, we can see that Xlib fills areas - with black that it shouldn't. Xlib therefore now fails this test. - - test/surface-pattern-scale-up.c | 4 +++- - test/surface-pattern-scale-up.pdf.ref.png | Bin 2793 -> 3482 bytes - test/surface-pattern-scale-up.ps2.ref.png | Bin 943 -> 913 bytes - test/surface-pattern-scale-up.ps3.ref.png | Bin 943 -> 913 bytes - test/surface-pattern-scale-up.ref.png | Bin 4061 -> 4017 bytes - 5 files changed, 3 insertions(+), 1 deletions(-) - -commit 19c411a5b8b84d31516d9c85642ad55ef5d29aba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 30 07:58:45 2009 +0000 - - path: Skip any secondary degenerate line-to segments. - - Only the very first line-to following a move-to can have any - significance if degenerate whilst stroking, so skip all others. - In other words, - - 0 0 m 0 0 l stroke - - produces a capped degenerate path (i.e a dot), - - 0 0 m 0 0 l 0 0 l stroke - - produces the same degenerate stroke, and - - 0 0 m 0 0 l 1 0 l stroke - - produce a horizontal line. - - src/cairo-path-fixed.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 23bcf91748c4bb04c16e503b913da3bfc237463f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 30 07:49:56 2009 +0000 - - path: Misclassification of rectilinear after degenerate line-to - - Malte Nuhn reported hitting an assertion: - - cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. - http://bugs.freedesktop.org/show_bug.cgi?id=24797 - - when stroking an apparently simple path: - - 0 8.626485 m - 0 8.626485 l - 5.208333 2.5 l - 10.416667 2.5 l - 15.625 2.5 l - 20.833333 2.5 l - 26.041667 2.5 l - 31.25 2.5 l - 36.458333 2.5 l - 41.666667 2.5 l - 46.875 2.5 l - 52.083333 2.5 l - 57.291667 2.5 l - 62.5 2.5 l - 67.708333 2.5 l - 72.916667 2.5 l - 78.125 2.5 l - 83.333333 2.5 l - 88.541667 2.5 l - 93.75 2.5 l - 98.958333 2.5 l - 104.166667 2.5 l - 109.375 2.5 l - 114.583333 2.5 l - 119.791667 2.5 l - 125 2.5 l - stroke - - which upon reduction becomes: - - 0.000000 8.625000 m 5.207031 2.500000 l 125.000000 2.500000 l stroke - - The bug is that after spotting a repeated line-to we move the previous - end-point without reclassifying the path, hence we miss the - non-rectilinear step. - - src/cairo-path-fixed.c | 101 ++++++++++++++++++++++++----------------------- - 1 files changed, 52 insertions(+), 49 deletions(-) - -commit 600dd833983bd85bf8aea487393ce156abb622bd -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Sep 28 19:14:46 2009 +0930 - - Provide a builtin implementation of isspace() and isdigit() - - The glibc versions are slow in utf8 locales. - - src/cairo-output-stream.c | 7 +++---- - src/cairo-pdf-operators.c | 6 ++---- - src/cairo-type1-subset.c | 16 +++++++--------- - src/cairoint.h | 16 ++++++++++++++++ - 4 files changed, 28 insertions(+), 17 deletions(-) - -commit f571356d346565cae34f08d12c584c4bd40921d6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 27 20:27:09 2009 +0000 - - xlib: Set has_component_alpha = FALSE for gradient Pictures - - Whilst creating the xlib surface wrapper for gradient Pictures, the - corresponding attributes require ComponentAlpha disabled. - - src/cairo-xlib-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 1a80cd2aa00b232a9a2192a85d6264e44ffcbd69 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 26 11:05:38 2009 +0000 - - scaled-font: Fix documentation examples with incorrect derefs - - Bug 24730 -- New: misleading use cases in cairo_scaled_font_text_to_glyphs's docs - http://bugs.freedesktop.org/show_bug.cgi?id=24730 - - An apparent copy'n'paste error from the code which has to deal with - indirect pointers crept into the documentation for the same functions. - - src/cairo-scaled-font.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit f648fcd2f91ea5c9ec318c2c0573ee82ac8c0ac9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 26 11:02:16 2009 +0000 - - gitignore: Add forgotten cairo-perf-print - - perf/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 6911ba2f76d4ccdf228c029e2719461a72848824 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 26 11:01:01 2009 +0000 - - perf: Fix comparisons - - The sort order was unstable resulting in incorrect ordering dependent - upon libc version. - - perf/cairo-perf-diff-files.c | 22 +++++++++++++++------- - 1 files changed, 15 insertions(+), 7 deletions(-) - -commit f955a4cba7784f97ef1dd978158e98176e03baf0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 25 11:04:17 2009 +0000 - - wideint: Protect 64_32_div for non-HAVE_UINT16_T systems - - Peter Clifton spotted that we failed to properly wrap - _cairo_int64_32_div() for systems without a native 64 bit type. - - src/cairo-wideint-private.h | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit c701d7813b6d116c9db53f63f791928a407499c7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 23 14:42:48 2009 +0100 - - [pattern] Compute zero extents for empty patterns - - If the pattern is for example a repeating 0x0 image, then treat it as - having zero extents. - - This should workaround the bug presented here: - - https://bugs.freedesktop.org/show_bug.cgi?id=24693 - Attached PDF crashes evince with a Floating point exception - - src/cairo-pattern.c | 27 ++++++++++++++++++++++++--- - 1 files changed, 24 insertions(+), 3 deletions(-) - -commit 43a775f60da57206b194039cd5d8b6a735284c45 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Oct 22 02:13:36 2009 +0300 - - [meta] Rename cairo_meta_surface_t to cairo_recording_surface_t. - - The new name is more descriptive than the rather opaque meta surface. - Discussed with vigour on the mailing list and #cairo: - - http://lists.cairographics.org/archives/cairo/2009-July/017571.html - - NEWS | 7 + - boilerplate/Makefile.win32.features | 14 +- - boilerplate/cairo-boilerplate-pdf.c | 6 +- - boilerplate/cairo-boilerplate-ps.c | 8 +- - boilerplate/cairo-boilerplate-svg.c | 8 +- - boilerplate/cairo-boilerplate-test-surfaces.c | 2 +- - boilerplate/cairo-boilerplate-win32-printing.c | 2 +- - boilerplate/cairo-boilerplate.c | 46 +- - boilerplate/cairo-boilerplate.h | 2 +- - build/Makefile.win32.features-h | 2 +- - configure.ac | 2 +- - doc/public/tmpl/cairo-surface.sgml | 2 +- - perf/cairo-perf-micro.c | 4 +- - perf/cairo-perf-trace.c | 4 +- - src/Makefile.sources | 4 +- - src/Makefile.win32.features | 14 +- - src/cairo-analysis-surface.c | 48 +- - src/cairo-meta-surface-private.h | 171 --- - src/cairo-meta-surface.c | 1096 -------------------- - src/cairo-paginated-private.h | 6 +- - src/cairo-paginated-surface-private.h | 4 +- - src/cairo-paginated-surface.c | 92 +- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 56 +- - src/cairo-ps-surface.c | 42 +- - src/cairo-recording-surface-private.h | 171 +++ - src/cairo-recording-surface.c | 1096 ++++++++++++++++++++ - src/cairo-scaled-font.c | 28 +- - src/cairo-script-surface.c | 42 +- - src/cairo-script.h | 4 +- - src/cairo-surface.c | 58 +- - src/cairo-svg-surface.c | 46 +- - src/cairo-tee-surface.c | 6 +- - src/cairo-type3-glyph-surface.c | 14 +- - src/cairo-types-private.h | 2 +- - src/cairo-user-font.c | 42 +- - src/cairo-vg-surface.c | 10 +- - src/cairo-win32-printing-surface.c | 60 +- - src/cairo-xml-surface.c | 32 +- - src/cairo-xml.h | 4 +- - src/cairo.c | 2 +- - src/cairo.h | 20 +- - src/cairoint.h | 12 +- - test/Makefile.am | 32 +- - test/Makefile.sources | 2 +- - test/cairo-test-trace.c | 48 +- - test/cairo-test.c | 6 +- - test/meta-surface-pattern.c | 121 --- - test/meta-surface-pattern.gl.argb32.ref.png | Bin 3130 -> 0 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3908 -> 0 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3760 -> 0 bytes - test/meta-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes - test/meta-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes - test/meta-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes - test/meta-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes - test/meta-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes - test/meta-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 0 bytes - test/meta-surface-pattern.ref.png | Bin 3072 -> 0 bytes - test/meta-surface-pattern.rgb24.ref.png | Bin 3162 -> 0 bytes - test/meta-surface-pattern.svg.argb32.ref.png | Bin 3778 -> 0 bytes - test/meta-surface-pattern.svg.rgb24.ref.png | Bin 3760 -> 0 bytes - test/recording-surface-pattern.c | 121 +++ - test/recording-surface-pattern.gl.argb32.ref.png | Bin 0 -> 3130 bytes - test/recording-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 3908 bytes - test/recording-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 3760 bytes - test/recording-surface-pattern.ps2.argb32.ref.png | Bin 0 -> 3257 bytes - test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 0 -> 3873 bytes - test/recording-surface-pattern.ps3.argb32.ref.png | Bin 0 -> 3257 bytes - test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 0 -> 3873 bytes - test/recording-surface-pattern.quartz.ref.png | Bin 0 -> 4572 bytes - .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 0 -> 4063 bytes - test/recording-surface-pattern.ref.png | Bin 0 -> 3072 bytes - test/recording-surface-pattern.rgb24.ref.png | Bin 0 -> 3162 bytes - test/recording-surface-pattern.svg.argb32.ref.png | Bin 0 -> 3778 bytes - test/recording-surface-pattern.svg.rgb24.ref.png | Bin 0 -> 3760 bytes - test/scale-offset-similar.meta.xfail.png | Bin 10752 -> 0 bytes - test/scale-offset-similar.recording.xfail.png | Bin 0 -> 10752 bytes - util/cairo-fdr/fdr.c | 8 +- - util/cairo-sphinx/sphinx.c | 38 +- - util/cairo-trace/trace.c | 10 +- - util/trace-to-xml.c | 4 +- - 81 files changed, 1845 insertions(+), 1838 deletions(-) - -commit df357f26ff72571acb840715efa4930054d4fdbe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 16 16:48:54 2009 +0100 - - Support component-alpha. - - Within our code base we carried a few hacks to utilize the component - alpha capabilities of pixman, whilst not supporting the concept for our - own masks. Thus we were setting it upon the pixman_image_t that we - passed around through code that was blissfully unaware and indeed the - component-alpha property was forgotten (e.g. upgrading glyph masks). - - The real issue is that without explicit support that a pattern carries - subpixel masking information, that information is lost when using that - pattern with composite. Again we can look at the example of compositing - a sub-pixel glyph mask onto a remote xlib surface for further failure. - - src/cairo-ft-font.c | 5 --- - src/cairo-gl-glyphs.c | 23 +++++++++--- - src/cairo-gl-surface.c | 18 ++++++--- - src/cairo-gstate.c | 17 ++++++--- - src/cairo-image-surface.c | 55 ++++++++++++++++++++++------- - src/cairo-pattern.c | 22 +++++++++-- - src/cairo-pdf-surface.c | 10 ++++-- - src/cairo-scaled-font.c | 14 ++++--- - src/cairo-svg-surface.c | 10 ++++-- - src/cairo-types-private.h | 71 ++++++++++++++++++++++++++++++++++++++ - src/cairo-win32-font.c | 10 ++--- - src/cairo-xlib-surface-private.h | 1 + - src/cairo-xlib-surface.c | 43 ++++++++++++++++++---- - src/cairoint.h | 69 +------------------------------------ - 14 files changed, 234 insertions(+), 134 deletions(-) - -commit f0cd20e6cec445eb627c2708c2230c8bad1b64ce -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 21 10:36:27 2009 +0100 - - [gl] Do not clear internal surfaces. - - Create a scratch surface that will be initialised as required for - internal use. External surfaces, i.e. those returned to the user, are - cleared as normal. - - src/cairo-gl-surface.c | 46 +++++++++++++++++++++++++++++++--------------- - 1 files changed, 31 insertions(+), 15 deletions(-) - -commit 7c9ebd4a852ad709e57ed48b9610db00de79de7e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 21 09:04:30 2009 +0100 - - Make the surface->is_clear logic common - - A nasty surprise whilst profiling is that performing redundant clear - operations is extremely painful. We can mitigate this somewhat by - tracking the cleared state of surfaces and skipping repeated attempts to - clear a surface. - - src/cairo-gl-surface.c | 2 + - src/cairo-image-surface.c | 47 ++---------------------------- - src/cairo-surface-private.h | 6 ++- - src/cairo-surface.c | 66 ++++++++++++++++++++++++++++++++++++++---- - src/cairoint.h | 1 - - 5 files changed, 68 insertions(+), 54 deletions(-) - -commit 723055722f1d9a133fe9e78bb19165f2c7be720e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 21 10:40:51 2009 +0100 - - [doc] Add comments on when surfaces are cleared on construction. - - Or perhaps, more importantly, when the contents are left unmodified. - - src/cairo.h | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit cef8194178b01eaa2d10c1ba8291a9a4c5a6d302 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Tue Oct 20 14:37:28 2009 +0200 - - [test] Add surface-pattern-operator - - Test the results of compositing ALPHA and COLOR_ALPHA surfaces - with different operators. - - test/Makefile.am | 4 + - test/Makefile.sources | 1 + - test/surface-pattern-operator.argb32.ref.png | Bin 0 -> 5217 bytes - test/surface-pattern-operator.c | 117 +++++++++++++++++++++ - test/surface-pattern-operator.rgb24.ref.png | Bin 0 -> 1942 bytes - test/surface-pattern-operator.xlib.argb32.ref.png | Bin 0 -> 5171 bytes - test/surface-pattern-operator.xlib.rgb24.ref.png | Bin 0 -> 1913 bytes - 7 files changed, 122 insertions(+), 0 deletions(-) - -commit 710303ef15b9a1bf73b2b07b7aa51ec816d0aa07 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 19 10:42:51 2009 +0100 - - [test] Update rotate-image-surface-paint - - Update this test case so the background is not the default border colour - so that we spot when the backend pads out the transformed image surface. - - test/Makefile.am | 5 +- - test/rotate-image-surface-paint.c | 78 ++++++++++++++----------- - test/rotate-image-surface-paint.pdf.xfail.png | Bin 217 -> 358 bytes - test/rotate-image-surface-paint.ps.ref.png | Bin 0 -> 236 bytes - test/rotate-image-surface-paint.ps2.ref.png | Bin 212 -> 0 bytes - test/rotate-image-surface-paint.ps3.ref.png | Bin 212 -> 0 bytes - test/rotate-image-surface-paint.ref.png | Bin 191 -> 220 bytes - test/rotate-image-surface-paint.svg.xfail.png | Bin 0 -> 387 bytes - 8 files changed, 45 insertions(+), 38 deletions(-) - -commit ea39f0302a936711043aa6834ba0ab487736572b -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Mon Oct 19 22:21:00 2009 +0800 - - atomic: correct libatomic_ops version of _cairo_atomic_int_cmpxchg - - AO_compare_and_swap_full() doesn't have the same semantic as - _cairo_atomic_int_cmpxchg(). The former returns a TRUE on success - FALSE otherwise while the later returns the atomic value. - - src/cairo-atomic-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a2254e56474fcdf5f25232812cdbef30a2b5ea60 -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Oct 18 22:12:13 2009 +0200 - - [gstate] Apply target device offsets to patterns immediately - - Previously target device offsets were applied in cairo-surface.c which - could cause bugs when paths were taken as fallbacks, as for example - pointed out by ade55037ffa596b690c6a1051394589f76eb1f48 and quick-fixed - by 79190d89853958ee8252440d35a662fabf122afd. The quick-fix is now - unnecessary and was removed. - - src/cairo-gstate.c | 4 +++ - src/cairo-surface-fallback.c | 41 ++++------------------------- - src/cairo-surface.c | 59 ------------------------------------------ - 3 files changed, 10 insertions(+), 94 deletions(-) - -commit 4b720d56db72d314b3b7cedb05a53321b1d0adbe -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Oct 18 21:32:10 2009 +0200 - - [clip] Remove non-existing functions from header - - src/cairo-clip-private.h | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit cacf9ccedffa0c804a56c76c8ab17bf81831b621 -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Oct 18 21:30:22 2009 +0200 - - [path] Fix compiler warnings - - src/cairo-path-fill.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit a70705b2ede8c0dc401f28405641e70f8a6d8d92 -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Oct 18 21:30:06 2009 +0200 - - [xlib] Fix compiler warnings - - src/cairo-xlib-screen.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 96117c1212be2bf39a300a212dec85466f49f31e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 17 10:36:10 2009 +0100 - - [test] Add radial-gradient-source - - ranma42 found a bug in compositing with a radial gradient using the - SOURCE operator with EXTEND_NONE, as exercised here. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/radial-gradient-source.argb32.ref.png | Bin 0 -> 272428 bytes - test/radial-gradient-source.c | 115 ++++++++++++++++++++++++++++ - test/radial-gradient-source.rgb24.ref.png | Bin 0 -> 193364 bytes - 5 files changed, 118 insertions(+), 0 deletions(-) - -commit 54df07a3da2bfbbdbe2dde92ca298ac0d7b8d255 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 16 10:11:41 2009 +0100 - - [surface] Don't AND in the desired content. - - Gah, that was a horrible mistake. It was a flawed hack to create Pixmaps - of the correct depth when cloning patterns for blitting to the xlib - backend. However, it had the nasty side-effect of discarding alpha when - targeting Window surfaces. The correct solution is to simply correct the - Pixmap of the desired depth and render a matching pattern onto the - surface - i.e. a reversal the current acquire -> clone. See the - forthcoming revised xcb backend on how I should have done it originally. - - src/cairo-directfb-surface.c | 2 -- - src/cairo-gl-surface.c | 4 +--- - src/cairo-glitz-surface.c | 3 --- - src/cairo-image-surface.c | 4 ---- - src/cairo-pattern.c | 15 +++------------ - src/cairo-quartz-surface.c | 1 - - src/cairo-surface-fallback-private.h | 1 - - src/cairo-surface-fallback.c | 3 +-- - src/cairo-surface.c | 14 ++++---------- - src/cairo-xlib-surface.c | 18 +----------------- - src/cairoint.h | 4 ---- - src/test-fallback-surface.c | 1 - - src/test-fallback16-surface.c | 2 -- - 13 files changed, 10 insertions(+), 62 deletions(-) - -commit 6a19a82efd3afe8fb8bd30e5362b247de8efe159 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 16 08:43:21 2009 +0100 - - [image] Clone the format for a similar surface with identical content - - Honour the incoming surface format when we are asked to create a similar - surface with identical content. The goal of - cairo_surface_create_similar() is to create an intermediate with similar - characteristics to the original that can be used in place of the - original and be quick to copy to the original. Matching the format for - the same content, ensures that the blits between the two need only be a - memcpy. - - src/cairo-image-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit ed94d7caad6b851f6f80fa4d67441ad0387a8cd4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 16 08:38:24 2009 +0100 - - [fallback] Create intermediate surface with same content. - - The goal is to create a similar surface with an identical format to - maximise performance in the subsequent blit, e.g. the xlib backend could - make the similar surface with an identical depth and so use the core - protocol, or the image surface could indeed make an identical copy so - that pixman only has to do a fast memcpy. As there is no direct method - to specify such a clone, we ask the backend for a similar surface of - identical content, and trust that the semantics are clear enough for the - intent to obvious. - - src/cairo-surface-fallback.c | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit c739940137c4ffc6cc727ea30afc0e92f7ab1e80 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 16:24:44 2009 -0700 - - Increment version to 1.9.5 - - Just after the 1.9.4 snapshot. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ad6334b9870c63e641b531d6e910c084b587d0f9 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 15:33:20 2009 -0700 - - Add mising images to REFERENCE_IMAGES list. - - Again, the kind of thing that only gets fixed at release time. - But at least we have a nice test for this. - - test/Makefile.am | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit cdad5e10768978b11088f82858a1e6e0037dc0a7 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 14:58:39 2009 -0700 - - Mark in-fill-empty-trapezoid as an XFAIL test. - - Otherwise, it was disrupting my attempts to release a snapshot, (since - it doesn't respect CAIRO_TEST_TARGET=" " and not run like most of the - tests do). - - test/Makefile.am | 5 +++++ - test/in-fill-empty-trapezoid.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit b0f309abb33fb7e068199c941835af0217d8d1fc -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 14:40:22 2009 -0700 - - Update version to 1.9.4 - - In preparation for the 1.9.4 snapshot. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3b113275f8b081685227fc073c03f64bb1a229d3 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 14:17:30 2009 -0700 - - Remove stale references to non-existant reference images. - - This is just one of those things that we don't get right until - someone tries running "make distcheck". - - test/Makefile.am | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit 37078b262a268179f8b7a3dfdc263e1a403daa7d -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 15 14:11:04 2009 -0700 - - NEWS: Update with correct data for 1.9.4 snapshot - - NEWS | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit d5609ca04ecc5f5e3d5cef8ca0e67fa98cd653de -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Oct 15 17:47:33 2009 +0300 - - [build] Check compiler flags using AC_TRY_LINK instead of AC_TRY_COMPILE. - - Turns out we were passing suncc warning suppression flags to gcc - by mistake since -e<entry point> is actually a valid option for - gcc. This caused the -erroff=E_ENUM_TYPE_MISMATCH_ARG and other - -erroff options to be passed to the linker. In the normal case - of a GNU ld linker this doesn't matter since it ignores bogus - entry points, but the GNU gold linker replaces a bogus entry - point with NULL. This patch makes the CAIRO_CC_TRY_FLAG() - check stricter by testing that the flag doesn't interfere with - linking executables. - - build/aclocal.cairo.m4 | 19 ++++++++----------- - 1 files changed, 8 insertions(+), 11 deletions(-) - -commit 79190d89853958ee8252440d35a662fabf122afd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 15 14:05:37 2009 +0100 - - [surface] Avoid double application of device offset when calling fill() - - _cairo_surface_fallback_paint() attempts to avoid a clipped operation if - we can convert the paint into a fill of the clipmask. However by calling - _cairo_surface_fill() we incur a double application of device offset to - the source, triggering various failures. - - Company spotted this and managed to extract an excellent minimal test - case, test/clip-device-offset. This commit fixes that failure. - - src/cairo-surface-fallback.c | 41 +++++++++++++++++++++++++++++++++++------ - 1 files changed, 35 insertions(+), 6 deletions(-) - -commit ade55037ffa596b690c6a1051394589f76eb1f48 -Author: Benjamin Otte <otte@gnome.org> -Date: Thu Oct 15 13:19:11 2009 +0100 - - [test] Add clip-device-offset - - Exercises a bug demonstrated by WebKit with clipping + device offsets. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/clip-device-offset.argb32.ref.png | Bin 0 -> 175 bytes - test/clip-device-offset.c | 79 ++++++++++++++++++++++++++++++++ - test/clip-device-offset.rgb24.ref.png | Bin 0 -> 168 bytes - 5 files changed, 82 insertions(+), 0 deletions(-) - -commit dac73d260a9b9a848bb97436ad84081c51629511 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 15 12:18:47 2009 +0100 - - [build] Link against pthread-stubs - - Avoid pulling in the real pthread library if the application is single - threaded and not using pthreads, by linking against pthread-stubs - instead. - - build/configure.ac.features | 1 + - configure.ac | 8 +++++++- - src/cairo-mutex-impl-private.h | 2 +- - test/Makefile.am | 4 ++++ - test/cairo-test-trace.c | 10 +++++----- - test/cairo-test.c | 6 +++--- - util/cairo-trace/Makefile.am | 2 +- - 7 files changed, 22 insertions(+), 11 deletions(-) - -commit ef9286751d8346ecb803bfb5916581ee4dfc84db -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 13 16:10:39 2009 +0100 - - [atomic] Fallback to libatomic-ops-dev - - Use libatomic-ops-dev in preference to mutex-based atomics, if we do not - have the builtin atomic intrinsics available. - - build/aclocal.cairo.m4 | 10 ++++++++++ - src/cairo-atomic-private.h | 41 ++++++++++++++++++++++++++++++++++++----- - src/cairo-surface.c | 4 ++-- - src/cairo-xlib-private.h | 2 +- - src/cairo-xlib-screen.c | 16 +++++++++------- - src/cairo.c | 10 +++++----- - 6 files changed, 63 insertions(+), 20 deletions(-) - -commit d85eda97dd9116f51e0255b29652f4b52ba4f8e9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 13 14:14:55 2009 +0100 - - [pattern] Compute extents for gradients - - As noted in the comments we could also compute the pattern extents for - gradients with CAIRO_EXTEND_NONE under certain circumstances, i.e. - radial gradients and device axis aligned linear gradients. - - src/cairo-pattern.c | 184 +++++++++++++++++++++++++++++++++++---------------- - 1 files changed, 126 insertions(+), 58 deletions(-) - -commit 3a83bc8617dae3cc2bfea862f252338463871648 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Oct 2 23:28:10 2009 +0930 - - PDF: Fix regression caused by 1ae5a419 - - Bug 24240 acroread prints error message when printing - - src/cairo-pdf-surface.c | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit 91a4f59f135dd42a28e14be55d1f08712c0c3097 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Oct 2 23:11:54 2009 +0930 - - PDF: Fix regression caused by 1ae5a419 - - Bug 24240 first char missing when printing a PDF. - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 39284159234d5318c90fa3a72178cd3d14fe0fbb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 30 20:11:12 2009 +0100 - - [boilerplate/xcb] Fix pixmap depth - - All the error checking, finally pointed out that I was creating a pixmap - with the wrong depth! Oops. - - boilerplate/cairo-boilerplate-xcb.c | 19 ++++++++++++++++--- - 1 files changed, 16 insertions(+), 3 deletions(-) - -commit e9bc2180d73acc7133d715ed4380ed20fb4364c0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 30 19:50:44 2009 +0100 - - [xcb] Deferred error checking. - - XCB avoids the dreaded abort on XError mechanism by forcing the client - to perform deferred error checking. So do so. This allows us to combine - the fire-and-forget rendering model with accurate error checking, - without killing the client or mixing our errors with theirs. - - XCB for the win! - - boilerplate/cairo-boilerplate-xcb.c | 17 + - src/cairo-freelist-private.h | 5 + - src/cairo-freelist.c | 33 ++ - src/cairo-xcb-surface.c | 712 +++++++++++++++++++++++------------ - 4 files changed, 521 insertions(+), 246 deletions(-) - -commit 8e4e0aa7ee5b4e0963409cda825705a09aae61e1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 30 17:50:09 2009 +0100 - - [boilerplate/xcb] Check for connection errors during test - - boilerplate/cairo-boilerplate-xcb.c | 51 ++++++++++++++++---- - test/cairo-test.c | 88 +++++++++++++++++----------------- - 2 files changed, 84 insertions(+), 55 deletions(-) - -commit 395555b116a497c99b9e8365a202377c344c0c45 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 30 00:37:36 2009 +0100 - - [xlib] Suppress warning that should never have been. - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 42ea356c0393288eea16eb5c591fa51009f85cb9 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Sep 30 21:21:42 2009 +0930 - - Fix truetype subset crash - - Bug 24213 - - src/cairo-truetype-subset.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 6809e1216119e16c5be236418dc560d2e9bf854d -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Sep 30 08:54:19 2009 +0200 - - [API] Make _cairo_meta_surface_replay() private again - - Replaying a meta surface can be achieved by using it as a source for a - cairo_paint() so exporting a separate API is unnecesary and confusing. - So after consulting Chris and Carl, we decided to remove the function - again. - - NEWS | 1 - - src/cairo-meta-surface-private.h | 5 +++- - src/cairo-meta-surface.c | 39 ++++++++++++++++--------------------- - src/cairo-paginated-surface.c | 4 +- - src/cairo-script-surface.c | 6 ++-- - src/cairo-surface.c | 4 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-type3-glyph-surface.c | 4 +- - src/cairo-user-font.c | 2 +- - src/cairo-vg-surface.c | 2 +- - src/cairo-xml-surface.c | 2 +- - src/cairo.h | 4 --- - test/cairo-test-trace.c | 8 +++++- - util/cairo-trace/trace.c | 22 --------------------- - 14 files changed, 40 insertions(+), 65 deletions(-) - -commit f8c49b4187a32b60408b23b2c2abce1778a8dc95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 29 03:02:40 2009 +0100 - - [xlib] XRequest bread crumbing - - Add bread crumbs in the form of NoOperations that can be parsed by - xtrace and very useful when debugging protocol/server errors. - - src/cairo-xlib-surface.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 57 insertions(+), 0 deletions(-) - -commit 1c4f61ec5068a5935eb6d5dd1d6f2c0275b70529 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 29 03:01:37 2009 +0100 - - [tessellator] Invalid conversion of list head to edge. - - When scanning for collinear right edges, we need to check that we do not - go beyond the end of the array. - - src/cairo-bentley-ottmann-rectangular.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit f23ae97e307f00a79cbf2e01f9ca20da29ea87c3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 24 16:30:57 2009 +0100 - - [perf] Support parsing reports from stdin - - perf/cairo-perf-compare-backends.c | 22 ++++++++++++---------- - perf/cairo-perf-report.c | 29 +++++++++++++++++++---------- - 2 files changed, 31 insertions(+), 20 deletions(-) - -commit 50163a9fafa77dd1135ca5b6b03c7ec5619687c1 -Author: Benjamin Otte <otte@gnome.org> -Date: Tue Sep 29 00:23:12 2009 +0200 - - [xlib] Set proper bpp when computing format from masks - - Fixing omission in caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f - - src/cairo-xlib-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit a160c8c4009e069db53bec79abd8926231de9a7f -Author: Benjamin Otte <otte@gnome.org> -Date: Mon Sep 28 23:52:14 2009 +0200 - - [xlib] Handle 24bpp formats during dithering - - src/cairo-xlib-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 9e89de813516c48baed67a4d18325971cd42cd4a -Author: Benjamin Otte <otte@gnome.org> -Date: Mon Sep 28 23:51:14 2009 +0200 - - [image] Fix masks computation for BGRx format - - Patch originally by Mark Kettenis - - src/cairo-image-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 4b2c74e28531e403a9538f20a3ace7b114f9bbae -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Sep 28 22:57:10 2009 +0930 - - PS: Use standard page size names for some common sizes - - Some PS viewers like gv use the label in the %PageMedia DSC comment as - the displayed page size. - - The page names and sizes were obtained from the list at: - - http://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html - - src/cairo-ps-surface.c | 66 +++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 62 insertions(+), 4 deletions(-) - -commit db5e3db0a9b218bebad6921a95d5244047050348 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Sep 25 23:07:56 2009 +0930 - - PS: Add DocumentMedia/PageMedia DSC comments - - Provide default DocumentMedia and PageMedia DSC comments if the user - does not specify them using cairo_ps_surface_dsc_comment(). This is - required so that PostScript viewers such as gv use the correct page - size. - - src/cairo-ps-surface-private.h | 1 + - src/cairo-ps-surface.c | 88 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 89 insertions(+), 0 deletions(-) - -commit caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f -Author: Benjamin Otte <otte@gnome.org> -Date: Thu Sep 24 23:42:05 2009 +0200 - - [xlib] Handle case in draw_image() where pixman format is not RGB - - When an image cannot be expressed as masks, its data cannot be used in - an XImage. In that case, we use pixman to copy the image to the desired - format. - - src/cairo-xlib-surface.c | 50 ++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 44 insertions(+), 6 deletions(-) - -commit 9f5fe6711566ee34afe210f271f1c5a061efa745 -Author: Benjamin Otte <otte@gnome.org> -Date: Thu Sep 24 22:57:39 2009 +0200 - - [image] Return cairo_bool_t from _pixman_format_to_masks - - Return FALSE when the pixman format does not support ARGB masks. In - particular, return FALSE for YUV formats. - - src/cairo-image-surface.c | 21 ++++++++++----------- - src/cairoint.h | 2 +- - 2 files changed, 11 insertions(+), 12 deletions(-) - -commit 120247ac55d92d9c9b24fad45c765d16e692f355 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Thu Sep 24 23:02:38 2009 +0930 - - Add EPS test - - This test demonstrates a regression in the EPS output since 1.8.8. - The ps-eps.ref.eps was created with 1.8.8. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/ps-eps.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ - test/ps-eps.ref.eps | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 172 insertions(+), 0 deletions(-) - -commit c8a4f486712eba4ad0ccbf5ae3b18920137d5b1b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 23 18:08:34 2009 +0100 - - [image] Do not trust user supplied data to be clear - - Gah, more important than the whitespace was the reversal of is_clear... - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 03bce099eae68643979e5742b2703b2b2e835cca -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 23 17:56:00 2009 +0100 - - [image] Tweak coding style - - Whitespace spam. - - src/cairo-image-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit ab558fa843accc440686f7b8eda197277a6a4eb2 -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Sep 23 17:40:17 2009 +0200 - - [image] Move setting of is_clear to _create_with_pixman_format() - - Simplifies code and ensures other users of that function don't run into - the same bug. - - src/cairo-image-surface.c | 18 ++++++------------ - 1 files changed, 6 insertions(+), 12 deletions(-) - -commit 07ee9cfbf07deba228e73d26b419a4e130de24e3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 23 15:33:23 2009 +0100 - - [image] Do assumption initial user data is cleared. - - Benjamin Otte pointed out the error of my ways that a clear on a - cairo_image_surface_create_for_data() was not working. This is because I - modified the image surface to skip clears when it knows the target data - has been cleared. This flag must be reset when the user interacts with - the surface, such as providing the initial surface data. - - src/cairo-image-surface.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit 9948b5180aa4312b3184d9ba46e9ad6f0d8e700c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 22 18:20:03 2009 +0100 - - [test] Revamp surface-source - - Include a translucent region in the source that exercises the xlib bug - that I'm trying to fix. Hmm. - - test/Makefile.am | 18 ++++++++---- - test/glitz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/glitz-surface-source.ref.png | Bin 268 -> 0 bytes - test/glitz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/image-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/image-surface-source.ref.png | Bin 332 -> 0 bytes - test/image-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/pdf-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/pdf-surface-source.ref.png | Bin 268 -> 0 bytes - test/pdf-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/ps-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/ps-surface-source.ref.png | Bin 268 -> 0 bytes - test/ps-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/quartz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/quartz-surface-source.ref.png | Bin 332 -> 0 bytes - test/quartz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/surface-source.c | 37 +++++++++++++++++++++++++- - test/svg-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/svg-surface-source.ref.png | Bin 268 -> 0 bytes - test/svg-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - test/test-fallback16-surface-source.ref.png | Bin 268 -> 0 bytes - test/xlib-surface-source.argb32.ref.png | Bin 0 -> 377 bytes - test/xlib-surface-source.ref.png | Bin 268 -> 0 bytes - test/xlib-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes - 24 files changed, 47 insertions(+), 8 deletions(-) - -commit 941d3693fac831c4ce8c61cbac7c77b566b97611 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 22 14:43:45 2009 +0100 - - [test] Exercise push-group-color. - - Hunting for a known bug in the xlib backend where it invalidly converts - an argb32 source to rgb24. However, this does not appear to be that bug, - but still a useful exercise nevertheless. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/push-group-color.c | 141 ++++++++++++++++++++++++++++++++++++ - test/push-group-color.ref.png | Bin 0 -> 2902 bytes - test/push-group-color.xlib.ref.png | Bin 0 -> 2964 bytes - 5 files changed, 144 insertions(+), 0 deletions(-) - -commit 30f45ce5f7d639dd5a0b60f544b3535e3bc2105d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 22 15:15:47 2009 +0100 - - [gl] Handle an absent visual. - - If we cannot find the correct visual for the fbconfig, return an error - instead of crashing. The difference is subtle, granted. - - src/cairo-gl-surface.c | 8 ++++++++ - src/cairo-glx-context.c | 7 ++++--- - 2 files changed, 12 insertions(+), 3 deletions(-) - -commit e74cb7fa3eb9a9bcdeb298d969b70fd99ba50f3d -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:44:34 2009 +0930 - - win32-printing: correct the use of the CAIRO_HAS_WIN32_FONT #ifdef - - it was wrapping code required for non windows fonts. - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3dd2cc8f6d84253f93affecd3022c9fe4a25d60f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:40:53 2009 +0930 - - win32-printing: fix meta surface pattern regression caused by bed2701e - - src/cairo-win32-printing-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7658635c654b694b516e5dd44a43611d94e91abd -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:36:20 2009 +0930 - - win32-printing: Allow GDI CTM with scale < 1 to be set - - To better support creating EMF files with the win32-printing surface, - allow a GDI CTM with scale < 1 to be used. - - http://lists.cairographics.org/archives/cairo/2009-September/018110.html - - src/cairo-win32-printing-surface.c | 90 ++++++++++++++++++++++++++++-------- - src/cairo-win32-private.h | 2 + - 2 files changed, 73 insertions(+), 19 deletions(-) - -commit 19c091670302fd23a676e680308df49a4ba06687 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:35:33 2009 +0930 - - Make win32 fonts work in EMF files created by win32-printing - - src/cairo-win32-printing-surface.c | 37 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 37 insertions(+), 0 deletions(-) - -commit f01a54266d57763635f984982bec001a393d8aa2 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:34:56 2009 +0930 - - Fix compiler warnings in win32-surface - - src/cairo-win32-surface.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 23663e2078e34659af43bd0e62bb1fb7a94cc71e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:34:21 2009 +0930 - - Fix compiler error on cygwin - - src/cairo-win32-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7ecd413fab7c55918c6f3c4c272b5e8b5aa89aa7 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:33:14 2009 +0930 - - Add WINVER defines to cairo-mutex-impl-privaye.h - - The WINVER defines should always be defined before including windows.h - - src/cairo-mutex-impl-private.h | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 605ec22ab5103e16052591517f86fe558133fb8e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Sep 22 22:17:27 2009 +0930 - - Use _WIN32 to check for win32 mutex - - Commit 535bcaa1 moved pthread after win32 to fix mingw build - problems. However this breaks cygwin builds. - - On cygwin HAVE_WINDOWS_H is defined but _WIN32 is not. This was - causing windows.h to be included which defines _WIN32. As a result the - win32 code in cairo-misc.c was being compiled but the win32 declaration - in cairint.h was not included. - - Fix this by using _WIN32 to enable the win32 mutex functions since - _WIN32 is defined by mingw, visual C++, and winegcc, but not - cygwin. On cygwin, posix functions are preferred as it is a unix - emulation environment. - - src/cairo-mutex-impl-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e00d0627494a4b15ed3b74a704695ca8b81a350e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 21 13:50:00 2009 +0100 - - [xlib] Fix recent bug in unbounded trapezoids - - Gah! I had believed that the dst extents and the clip were correct to - enable unbounded fixup for the unbounded trapezoids. I was wrong, so I - need to requery the trapezoid extents. As this information is already - known, I should update the interface to pass along all relevant - information. - - src/cairo-surface.c | 23 ++++++++++------------- - src/cairo-xlib-surface.c | 32 +++++++++++++++++++------------- - 2 files changed, 29 insertions(+), 26 deletions(-) - -commit 378b1e73d9f27e9b54ea01b10e588b361848d0cd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 21 03:10:53 2009 +0100 - - [fallback] Special case single composite rectangle - - Avoid the overhead of region-from-traps extraction for the very frequent - case of using a single (possibly clipped) rectangle with a pattern source. - - src/cairo-surface-fallback.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 42 insertions(+), 0 deletions(-) - -commit 35daf95db8aa4f0c254891f180aa4996dd464a60 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 21 03:31:22 2009 +0100 - - [xlib] Trim a few redundant steps when uploading glyphs - - Cleanup the glyph coercion routines to avoid the temporary cairo_t (as - we can just cairo_surface_paint() directly). - - src/cairo-xlib-surface.c | 23 ++++++----------------- - 1 files changed, 6 insertions(+), 17 deletions(-) - -commit 9b7c5d95055c4ea5da46c53263050d6ec1331c08 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 20 18:46:19 2009 +0100 - - [xlib] Cleanse creation of similar surfaces. - - Reduce two nearly identical routines to one. - - src/cairo-xlib-surface.c | 197 +++++++++++++++++++++------------------------- - 1 files changed, 91 insertions(+), 106 deletions(-) - -commit 878cef62b525e9f13ab2a8ab562ba8b6628aaa1f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 20 18:45:09 2009 +0100 - - [xlib] Interim CAIRO_DEBUG variable to specify xrender level - - Use CAIRO_DEBUG=xrender-version=x.y to override what the server reports. - Useful to test cairo's behaviour against older servers. - - src/cairo-xlib-display.c | 23 +++++++++++++++++++---- - 1 files changed, 19 insertions(+), 4 deletions(-) - -commit 531e8045980c966b8e51df933721f9b86c6b1539 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri Sep 18 12:17:46 2009 -0400 - - Add a description of how we compute the spline_error_squared. - - src/cairo-spline.c | 17 +++++++++++------ - 1 files changed, 11 insertions(+), 6 deletions(-) - -commit f4336352405ee7c184d45a73cdd6c1a0526843db -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Sep 16 15:46:14 2009 -0400 - - Set LC_ALL=C instead of LANG=C - - doc/public/check-doc-coverage.sh | 4 +++- - doc/public/check-doc-syntax.sh | 3 ++- - src/check-def.sh | 3 ++- - src/check-doc-syntax.sh | 3 ++- - src/check-headers.sh | 3 ++- - src/check-plt.sh | 3 ++- - src/check-preprocessor-syntax.sh | 3 ++- - 7 files changed, 15 insertions(+), 7 deletions(-) - -commit 56c9b2de7a2b93b2e0c59cf98326d8c0d4d508ba -Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> -Date: Tue Sep 15 17:26:59 2009 +0200 - - Use __uint128_t and __int128_t if available - - GCC uses a peculiar name for a real 128-bit integer on x86-64. - - Speedups, xlib on a gm45 - ======================== - poppler 41246.56 -> 35102.82: 1.18x speedup - swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup - - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - - build/configure.ac.system | 2 +- - src/cairo-wideint-private.h | 1 + - src/cairo-wideint-type-private.h | 6 +++ - src/cairo-wideint.c | 91 +++++++++++++++++-------------------- - 4 files changed, 50 insertions(+), 50 deletions(-) - -commit ccf84a8883ebb8d2ee8f55eb53da4dfc96887de0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 15 14:22:57 2009 +0100 - - [perf] Reorganise cairo-perf - - In preparation to creating a new hub to control performance measuring - and reporting, move the current cairo-perf out of the way. - - perf/.gitignore | 3 + - perf/Makefile.am | 84 +- - perf/box-outline.c | 102 - - perf/cairo-perf-cover.c | 339 --- - perf/cairo-perf-diff | 2 +- - perf/cairo-perf-micro.c | 596 +++++ - perf/cairo-perf.c | 596 ----- - perf/composite-checker.c | 114 - - perf/dragon.c | 249 -- - perf/fill.c | 119 - - perf/glyphs.c | 99 - - perf/intersections.c | 157 -- - perf/long-dashed-lines.c | 71 - - perf/long-lines.c | 145 -- - perf/mask.c | 299 --- - perf/micro/box-outline.c | 102 + - perf/micro/cairo-perf-cover.c | 339 +++ - perf/micro/composite-checker.c | 114 + - perf/micro/dragon.c | 249 ++ - perf/micro/fill.c | 119 + - perf/micro/glyphs.c | 99 + - perf/micro/intersections.c | 157 ++ - perf/micro/long-dashed-lines.c | 71 + - perf/micro/long-lines.c | 145 ++ - perf/micro/mask.c | 299 +++ - perf/micro/mosaic.c | 173 ++ - perf/micro/mosaic.h | 4387 ++++++++++++++++++++++++++++++++++++ - perf/micro/paint-with-alpha.c | 49 + - perf/micro/paint.c | 48 + - perf/micro/pattern_create_radial.c | 103 + - perf/micro/pythagoras-tree.c | 91 + - perf/micro/rectangles.c | 118 + - perf/micro/rounded-rectangles.c | 141 ++ - perf/micro/spiral.c | 349 +++ - perf/micro/stroke.c | 97 + - perf/micro/subimage_copy.c | 77 + - perf/micro/tessellate.c | 178 ++ - perf/micro/text.c | 66 + - perf/micro/twin.c | 56 + - perf/micro/unaligned-clip.c | 70 + - perf/micro/world-map.c | 116 + - perf/micro/world-map.h | 196 ++ - perf/micro/zrusin-another.h | 668 ++++++ - perf/micro/zrusin.c | 95 + - perf/mosaic.c | 173 -- - perf/mosaic.h | 4387 ------------------------------------ - perf/paint-with-alpha.c | 49 - - perf/paint.c | 48 - - perf/pattern_create_radial.c | 103 - - perf/pythagoras-tree.c | 91 - - perf/rectangles.c | 118 - - perf/rounded-rectangles.c | 141 -- - perf/spiral.c | 349 --- - perf/stroke.c | 97 - - perf/subimage_copy.c | 77 - - perf/tessellate.c | 178 -- - perf/text.c | 66 - - perf/twin.c | 56 - - perf/unaligned-clip.c | 70 - - perf/world-map.c | 116 - - perf/world-map.h | 196 -- - perf/zrusin-another.h | 668 ------ - perf/zrusin.c | 95 - - 63 files changed, 9414 insertions(+), 9411 deletions(-) - -commit 4152cd90e25ffa9d2a3683c790bd2891a58c52de -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Sep 14 14:29:01 2009 +0300 - - [autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround. - - Explain where the weird SIZEOF_VOID__ comes from. - - src/cairo-atomic-private.h | 2 ++ - util/cairo-trace/trace.c | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit cd94bf8bf30de9aa8dfec1a06a7ef3386944c974 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Sep 14 03:41:42 2009 -0600 - - [trace] Look harder for the cairo-trace.so library. - - On OpenBSD the convention is to not use symlinks from - unversioned library names to versioned library names. - This breaks cairo-trace because it looks for cairo-trace.so - explicitly, but on OpenBSD only cairo-trace.so.0.0 is - installed. - - The right thing to do is probably to source the cairo-trace.la - file and look for a file name there somehow. Instead this commit - just looks for a likely looking file or symlink in the install - directory. - - util/cairo-trace/cairo-trace.in | 17 ++++++++++++++++- - 1 files changed, 16 insertions(+), 1 deletions(-) - -commit a343c8c42d3adc8f52afd09bdfbbcfd5299df49e -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Sep 14 02:33:26 2009 -0600 - - [trace] Don't use pthread_key_delete. - - On OpenBSD libc doesn't provide pthread stubs like glibc on Linux - or newer libcs from FreeBSD. However libX11 does provide a stubs - for a subset of the pthread functions (formerly in libXThrStub, - now moved into libX11 proper), but pthread_key_delete() is not - one of the stubbed ones. So, on OpenBSD cairo's non-linking of - libpthread accidentally works as long as the xlib-surface is enabled, - which is nearly always the case. - - This patch makes trace.c stand at the same precipice as cairo itself - by reverting to only a subset of the pthreads functions stubbed by - libX11. - - util/cairo-trace/trace.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit cf0fed2191c2b5ebce8855def1dd302ccf8e039a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 17:35:29 2009 -0600 - - [build] Check for dlsym in both libdl and libc. - - The BSDs have dlsym() in libc rather than libdl. - - boilerplate/cairo-boilerplate.c | 4 ++-- - configure.ac | 12 +++++++----- - util/cairo-trace/Makefile.am | 6 +++++- - 3 files changed, 14 insertions(+), 8 deletions(-) - -commit 1c7ac6c47addd6825c4f49f514fe3ffb708e3813 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 17:56:56 2009 -0600 - - [build] Work around autoconf void* -> VOID__ name conversion bug. - - The autoconf shipping with OpenBSD 4.5 converts sizeof(void*) - to SIZEOF_VOID__ rather than SIZEOF_VOID_P. Work around that - by defining SIZEOF_VOID_P if required. - - src/cairo-atomic-private.h | 4 ++++ - util/cairo-trace/trace.c | 4 ++++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 12470fd7010ea0748c8dcc9014d1cd0f52f51a3b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 14 10:36:08 2009 +0100 - - [configure] Setup GL CFLAGS before checking for GLX - - configure.ac | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 9c2790ccc48392bfe039626ebb383070aa18fe56 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 14 10:08:57 2009 +0100 - - [build] Add a default message for when GLEW isn't built - - And it appears I touched the build system again and autoregenerated the - feature headers. - - boilerplate/Makefile.win32.features | 8 -------- - build/Makefile.win32.features-h | 1 - - configure.ac | 5 +++-- - src/Makefile.win32.features | 8 -------- - util/cairo.modules | 1 + - 5 files changed, 4 insertions(+), 19 deletions(-) - -commit 6d4f3c40eff7d070b1c9759038444928c6754efe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 14 09:19:10 2009 +0100 - - Add a private copy of GLEW - - This appears to be the simplest mechanism to build libglew at the moment - - should a system copy be unavailable. Fortunately libglew is now distributed - under a permissive licence. - - If you want to pass 'make -C src check' you have to use the system copy, - or spend quite a bit of time cairo-fying libglew. - - boilerplate/Makefile.win32.features | 8 + - build/Makefile.win32.features-h | 1 + - build/configure.ac.features | 1 + - configure.ac | 19 +- - src/Makefile.am | 2 + - src/Makefile.sources | 3 + - src/Makefile.win32.features | 8 + - src/glew/GL/glew.h |12262 +++++++++++++++++++++++++++++++++++ - src/glew/GL/glxew.h | 1397 ++++ - src/glew/LICENSE.txt | 73 + - src/glew/glew.c |12180 ++++++++++++++++++++++++++++++++++ - util/cairo.modules | 10 +- - 12 files changed, 25955 insertions(+), 9 deletions(-) - -commit 9ad26f74b0059645d865a20c387fa4bd460cabc8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 13 23:16:57 2009 +0100 - - [configure] Fallback to detect OpenGL headers - - When not using mesa, we can not rely on a pkgconfig file, so just rely on - the presence of the OpenGL headers instead. - - configure.ac | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 71c3b2888cc81e6d55782388d14bb8d806e77d07 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 20:24:29 2009 +0300 - - [win32] Sync Makefile.win32.features. - - Ooops.. wasn't sure if I should commit this or not. - - build/Makefile.win32.features | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ba21f213560fa239a02ae28af4eb1d3a6b7254e5 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 18:21:38 2009 +0100 - - [trace] Don't trace internal cairo calls on Solaris. - - On various configurations of Solaris cairo-trace likes to trace - internal calls to the API from within cairo and cairo-trace itself. On - Linux the slim_hidden_proto stuff avoids this by name mangling and - symbol alias magic, but on Solaris that doesn't work so we're left - with either no hidden symbols at all or using normal ELF hidden symbol - attributes, but neither of those prevent internal calls to cairo from - being traced of course. - - This commit provides a per-thread entry/exit trace counter for use - when we can't use name mangling to hide internal API calls. As a - side-effect it may hide actual client API calls from callback - functions called by cairo, but such use cases ought to be rare. - - util/cairo-trace/trace.c | 465 ++++++++++++++++++++++++++++++++-------------- - 1 files changed, 327 insertions(+), 138 deletions(-) - -commit f5bcb2f36e7dba9cfba5d697e1401dcd00603812 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 12:47:19 2009 +0100 - - [build] Enable building cairo-trace on Solaris. - - Solaris supports LD_PRELOAD too! - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ce8c842a70d3f23527dcbd889b022103483341f2 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 12:53:07 2009 +0100 - - [trace] Make cairo-trace and its symbol-lookup automatically configured. - - The build shouldn't fail if we can't make our optional performance - tools. - - configure.ac | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2fb59a69f4509c2116f16bd6d376f35e3e2eb709 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 14:27:03 2009 +0100 - - [trace] Don't rely on the constructor attribute to initialise the tracer. - - Use pthread_once() at cairo API entry points to initialise the library - if required. This side steps the issues with the __constructor__ - attribute vs _init()/_fini() on Solaris and different tracer/tracee - runtimes which result in the constructors not being run in - cairo-trace.so. - - util/cairo-trace/trace.c | 176 +++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 174 insertions(+), 2 deletions(-) - -commit 18a441984b649f558c6478f24a7987941acadbe1 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 13:53:27 2009 +0100 - - [trace] Don't try and propagate a void result. - - The pattern - - return <function returning void>( ... ); - - is a gccism not supported by Sun Studio. - - util/cairo-trace/trace.c | 136 ++++++++++++++++++++++++---------------------- - 1 files changed, 70 insertions(+), 66 deletions(-) - -commit fee5c58c6caecdbdb387fe39bd6ed94faf7f6ae9 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Sep 13 13:09:47 2009 +0100 - - [trace] Avoid warnings from assigning a void pointer to a function pointer. - - The Sun Studio compiler complains a *lot* when assigning the result - of dlsym to a function pointer. Cast the result to the proper - type first.:w - - util/cairo-trace/trace.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 19881012cb31ec2aebf556e2c25b53e8387dc689 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 13 16:36:12 2009 +0100 - - [image] Add pixel masks for BGRA formats - - pixman introduced the BGRA pixel type not too long ago, and so we need to - update our pixman_format_code_t to cairo_format_masks_t translator. - - src/cairo-image-surface.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit f8a8f297f298d81899803a1b2bbca007418408b5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 13 10:58:59 2009 +0100 - - [trace] Stray trailing ';' in bswap macros - - util/cairo-trace/trace.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f851009ec76ee2290ffbc3f55edbf3cc16aff488 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 13 10:57:42 2009 +0100 - - [trace] Compile without lookup-symbol - - And check compilation with --disable-symbol-lookup - - util/cairo-trace/trace.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 6cb3ff9c1943c58f5b6892af3f18f6aaa24494b6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 13 10:52:14 2009 +0100 - - [configure] --enable-symbol-lookup - - There you go Joonas, I don't always ignore your suggestions! This is - simple patch to allow the user to disable symbol loops in case the - auto-detection fails on some obscure (perhaps OpenBSD) platform. Or in - case the user really wants to trim a few bytes from a library only used - during tracing! - - boilerplate/Makefile.win32.features | 7 +++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - build/configure.ac.features | 1 + - configure.ac | 6 ++++++ - src/Makefile.win32.features | 7 +++++++ - util/cairo-trace/Makefile.am | 14 +++++++++----- - 7 files changed, 34 insertions(+), 5 deletions(-) - -commit 556d064f4eb3625022f0d99461929ff3fafc9c71 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 11 15:35:27 2009 +0100 - - [test] Typos in README from previous commit - - test/README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 43ecde2d22c5a8c591ac83f9a82c2bf83af484fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 11 15:15:22 2009 +0100 - - [test] Add Debian packages for fonts - - Mention which .deb provides the required fonts. - - test/README | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 33be73dfb76c26e3bb0ab59b2f570d00d9c7be62 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 11 14:59:58 2009 +0100 - - [xlib] Fix big-line. - - Project lines that exceed the 16.16 limits onto the XFixedLine, as we know - that top/bottom must fit within the confines of the surface and so will be - less than 16 bits. - - Sadly this is a run-on patch that also does: - 1. Make FillTiled the default for new GCs. - 2. Stores extend mode as opposed to repeat, and thereby cleaning up some - inconsistent code. - 3. Remove the special casing for unbounded trapezoids, as it is redundant - with the polygon clipping. - 4. Tidy the logic for deciding when to use the core protocol - (_categorize_composite_operation) - - src/cairo-xlib-screen.c | 6 +- - src/cairo-xlib-surface-private.h | 2 +- - src/cairo-xlib-surface.c | 402 +++++++++++++++----------------------- - 3 files changed, 164 insertions(+), 246 deletions(-) - -commit 6960162c5eae30e2d48992023be35e3dbf502a03 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 11 14:56:17 2009 +0100 - - [xlib] Discard clip if larger than glyph extents - - Implement cheap calculation of glyph extents to see whether we can discard - the clip region. This is effective around 50% of the time for firefox (and - makes the xtrace so much neater). - - src/cairo-scaled-font.c | 36 ++++++++++++++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 23 +++++++++++++++++++++++ - src/cairoint.h | 6 ++++++ - 3 files changed, 65 insertions(+), 0 deletions(-) - -commit 6e78409417117ad4de1aec65bb4753ff32e1e7a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 11 14:19:38 2009 +0100 - - [test] Update big-line and remove XFAIL - - Now that we use polygon clipping, output geometry should no longer exceed - the 2^16 limits imposed by pixman. For the image backend, we now use spans - for stroking and for the xlib backend we have to double check the range on - the output trapezoids. In short, cairo should pass this test. - - test/Makefile.am | 8 ++++---- - test/big-line.c | 16 ++++++++-------- - test/big-line.ps.argb32.ref.png | Bin 977 -> 0 bytes - test/big-line.ps.rgb24.ref.png | Bin 709 -> 0 bytes - test/big-line.quartz.ref.png | Bin 1075 -> 0 bytes - test/big-line.quartz.rgb24.ref.png | Bin 941 -> 0 bytes - test/big-line.ref.png | Bin 0 -> 977 bytes - test/big-line.xlib-fallback.ref.png | Bin 0 -> 723 bytes - test/big-line.xlib.ref.png | Bin 0 -> 933 bytes - 9 files changed, 12 insertions(+), 12 deletions(-) - -commit b495e7eb2ee2521a400d4b42e04242023bdb1e44 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 10 19:25:14 2009 +0100 - - [surface] Early return for (region IN white) - - Fill a region using IN and a white source is a frequent reduction of a - complex clip (viz a path that covers the whole operation extents will be - reduced to a single rectangle), and we can simply discard the fill (as it - always has bounded semantics). - - src/cairo-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 94aeae9b2ec563201a0e65705504d1d70c33a619 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 10 19:11:36 2009 +0100 - - [clip] Simplify applying a box clip - - If the clip path is a simple box, then for many operations it is entirely - representation by the alteration of extents and so we can skip a few steps - during reconstruction. - - src/cairo-clip-private.h | 3 +- - src/cairo-clip.c | 84 +++++++++++++++++++++++++--------------------- - 2 files changed, 48 insertions(+), 39 deletions(-) - -commit 496e79b63762c70fd022b2d9e2d6107bcce1807a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 10 17:36:46 2009 +0100 - - [xlib] Fix extraction of GC during XCloseDisplay() - - Jeff Muizelaar reported a bug from his firefox builds that was causing a - double free during XCloseDisplay, and suggested it was related to - c0e01d9cd. Reviewing the cleanup, suggested that the cause may just be a - pair of missing parenthesis. - - src/cairo-xlib-screen.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f34affaa1e0b52e255d882b84bf064f9a9d4a95d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 18:03:20 2009 +0100 - - [util] And reuse the same name repository name. - - Completely confused by local caching of a broken cairo.modules by the - jhbuild client. ARGH! - - util/cairo.modules | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit e1774185d6bb824a53465a037539b53fdc7af5d8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 17:52:10 2009 +0100 - - [util] And back to a unique repo name for cairo.modules - - Gah, further experiments into the unknown and the unclear. - - util/cairo.modules | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2905ebc99e4cf8b8e94e16fcd3bc1566f51f4b57 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 17:24:43 2009 +0100 - - [util] And restore the repository tag. - - jbhuild requires a local definition. - - util/cairo.modules | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4d7eb79d25bcfdc47abcae1fd51c7573043909fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 17:12:14 2009 +0100 - - [util] Inherit the repository from xorg.modules - - Experiment with inheriting the repository from xorg.module, in order to - avoid having two entries for the same server. - - util/cairo.modules | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit f5ee785144a8ddb6056b21f6c28bc4a9f4870b32 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 13:59:50 2009 +0100 - - [test] Disable the antialias testing for the vector surfaces. - - Only the raster bckends obey the font anti-alias options. - - test/large-twin-antialias-mixed.c | 2 +- - test/twin-antialias-gray.c | 2 +- - test/twin-antialias-mixed.c | 2 +- - test/twin-antialias-none.c | 2 +- - test/twin-antialias-subpixel.c | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) - -commit abaef9bfbe11302beb6481547632b44be9d5be8d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 13:57:06 2009 +0100 - - [test] Compare a failure against the image output - - If a backend fails in exactly the same way as the image, then we can - safely assume that the failure is systematic and not an error in the - backend, so change the result to XFAIL. - - test/cairo-test.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 46 insertions(+), 0 deletions(-) - -commit 41fbea053a8feb201a4f11aaf4dff86fea0bcb01 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 12:19:51 2009 +0100 - - [test] Typo in ft-show-glyphs-positioning - - Note to self: remember to sleep more often. - - test/ft-show-glyphs-positioning.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c61480a319bad55b0b4cf3f2be609bde9f2c5948 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 11:08:17 2009 +0100 - - [test] An oversized twin test case. - - A larger variant of the twin mixed antialiasing test. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/large-twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++ - test/large-twin-antialias-mixed.ref.png | Bin 0 -> 16668 bytes - test/large-twin-antialias-mixed.xlib.ref.png | Bin 0 -> 14655 bytes - 5 files changed, 100 insertions(+), 0 deletions(-) - -commit 610b311a970877f3954ba829cf43caecce0ab72c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 09:48:24 2009 +0100 - - [test] Variation of twin that intermixes antialiasing - - Check that we are substituting the right glyph depth and changing masks - appropriately. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++++++++ - test/twin-antialias-mixed.ref.png | Bin 0 -> 2338 bytes - test/twin-antialias-mixed.xlib.ref.png | Bin 0 -> 1760 bytes - 5 files changed, 100 insertions(+), 0 deletions(-) - -commit c218ff8cbec2cc7aa3efc4c7f7d8690fbdec5e9a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 09:52:18 2009 +0100 - - [test] SUBPIXEL_ANTIALIAS varation of twin - - Force argb32 glyphs. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/twin-antialias-subpixel.c | 71 +++++++++++++++++++++++++++++ - test/twin-antialias-subpixel.ref.png | Bin 0 -> 3979 bytes - test/twin-antialias-subpixel.xlib.ref.png | Bin 0 -> 3863 bytes - 5 files changed, 74 insertions(+), 0 deletions(-) - -commit 456484514f4dacfe95952e8c0b73eb6a9a1a9d27 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 09:38:18 2009 +0100 - - [test] Variation of twin with ANTIALIAS_GRAY - - Force generation of a8 glyphs. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/twin-antialias-gray.c | 71 +++++++++++++++++++++++++++++++++ - test/twin-antialias-gray.ref.png | Bin 0 -> 3979 bytes - test/twin-antialias-gray.xlib.ref.png | Bin 0 -> 3863 bytes - 5 files changed, 74 insertions(+), 0 deletions(-) - -commit 8555984b8e72ab5846783ed54afa1a857d70f241 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 09:29:42 2009 +0100 - - [test] Add ANTIALIAS_NONE variation of twin - - I'm off hunting bugs. By using twin with ANTIALIAS_NONE we can construct - a1 glyph images independently of the native font system. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/twin-antialias-none.c | 71 +++++++++++++++++++++++++++++++++ - test/twin-antialias-none.ref.png | Bin 0 -> 718 bytes - test/twin-antialias-none.xlib.ref.png | Bin 0 -> 745 bytes - 5 files changed, 74 insertions(+), 0 deletions(-) - -commit 1820cb7fd648283a5b477fbc6bd654200ed190e6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 09:12:54 2009 +0100 - - [test] Check for errors during ft-show-glyphs-positioning - - Do not blindly assume that we managed to construct a valid scaled-font - before attempting to dereference the FT_Face. Consider a machine with - no fonts which is substituting twin... - - test/ft-show-glyphs-positioning.c | 46 +++++++++++++++++++++++++++++++----- - 1 files changed, 39 insertions(+), 7 deletions(-) - -commit 7fb0d5e2091a09ef7b01574f4ecf87236ef43fec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 01:45:16 2009 +0100 - - [twin] Initialise all properties - - Left a couple of uninitialised properties along the non-toy font - construction path. - - src/cairo-font-face-twin.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 34778a883af806f77d0c89c85cebb315b43d7ef2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 9 01:16:08 2009 +0100 - - [configure] Typo in test - - The have_dl clause was meant to have been removed from the requirements - test for cairo-script-interpreter. Instead we left the test broken. - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4b221bd49a0c2c980a63779d905e8eb9b9cfa690 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 8 19:02:04 2009 +0100 - - [spans] Correct offsets for trapezoids - - Pass on the destination offset from composite_trapezoids() to - composite_polygon(). - - src/cairo-spans.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9389cb78a8ea5b6579d091ab1030ab9f1b13efc2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 8 17:51:33 2009 +0100 - - [build] Improve handling of missing test apparatus - - Improve detection, reporting and disabling of test backends when we lack - the required libraries and utilities. - - boilerplate/Makefile.win32.features | 7 +++++++ - boilerplate/cairo-boilerplate-pdf.c | 2 ++ - boilerplate/cairo-boilerplate-ps.c | 2 ++ - boilerplate/cairo-boilerplate-svg.c | 2 ++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - build/configure.ac.features | 3 ++- - configure.ac | 20 +++++++++++++------- - perf/cairo-perf-compare-backends.c | 2 +- - src/Makefile.win32.features | 7 +++++++ - test/Makefile.am | 2 ++ - test/any2ppm.c | 8 ++++++++ - util/Makefile.am | 4 ++-- - 13 files changed, 52 insertions(+), 11 deletions(-) - -commit 45759e5a0fb20a632f66a8dd206833b55a95f840 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 8 09:19:53 2009 +0100 - - [gl] Supply extents for acquire source image - - I have no idea how we survived for so long without supplying the source - extents... - - src/cairo-gl-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 67d40e5c7300c4082484dbda5c81808737bb2ac5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 6 10:17:40 2009 +0100 - - [xlib] Protect ourselves from liars that claim to have a 64k window - - Found using webkit, who attempt to paint an width X page height window. - Please, please clip large windows to the visible area. Thanks. - - src/cairo-xlib-surface.c | 27 +++++++++++++++++++++++++-- - 1 files changed, 25 insertions(+), 2 deletions(-) - -commit 310cebf194919cf3a7c37e724e64962ae47343cc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 5 15:21:50 2009 +0100 - - [configure] Add option to disable trace. - - Some environments may be broken beyond our capabilities to detect, or - maybe the user is just insane and doesn't want to build my nice shiny - cairo-trace. Whatever, give them the option to choose: - - $ ./configure --disable-trace - - boilerplate/Makefile.win32.features | 7 +++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 +++ - build/configure.ac.features | 3 +++ - configure.ac | 8 +++++--- - src/Makefile.win32.features | 7 +++++++ - util/Makefile.am | 2 +- - 7 files changed, 27 insertions(+), 4 deletions(-) - -commit 9b932d7cd750b9bc61d108c80c4530352d952cfa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 5 08:46:39 2009 +0100 - - [perf] Move the calibration to its own function - - Improve code clarity and whatnot. - - perf/cairo-perf.c | 71 ++++++++++++++++++++++++++++++---------------------- - 1 files changed, 41 insertions(+), 30 deletions(-) - -commit 270b2f1be0e600621647f2e2486618c134217941 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Sep 5 05:39:35 2009 +0300 - - [perf] Add a fast-and-sloppy mode to cairo-perf. - - A new -f option to cairo-perf reverts to a fast run - mode for quick performance overviews. The number of - milliseconds each iteration of a test is run for can - be overriden using the new CAIRO_PERF_ITERATION_MS - environment variable. The default remains 2000 ms/iter. - - perf/cairo-perf.c | 59 +++++++++++++++++++++++++++++++++++------------------ - perf/cairo-perf.h | 3 ++ - 2 files changed, 42 insertions(+), 20 deletions(-) - -commit 7f91c4953ccfbb96d76ecd73715fa2e524be933e -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Sep 5 05:07:25 2009 +0300 - - [boilerplate] Support wildcard ? in CAIRO_TEST_TARGET{,_EXCLUDE}. - - Useful for running tests only for a given content type. - - boilerplate/cairo-boilerplate.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit b3bafbc5f9201662702cc0c0d1c96411e31bb7d3 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Sep 5 05:02:00 2009 +0300 - - [boilerplate] Support giving content in CAIRO_TEST_TARGET{,_EXCLUDE}. - - Sometimes it's convenient to run the regression or performance tests - against a given target with a given content. Now we accept an optional - content specifier as a suffix .<content> on a target name, where - <content> is rgb or rgba. - - boilerplate/cairo-boilerplate.c | 61 ++++++++++++++++++++++++++++++++++++-- - 1 files changed, 57 insertions(+), 4 deletions(-) - -commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Sep 5 02:25:01 2009 +0300 - - [test] Reorder dash-infinite-loop to not hit a runaway allocation. - - This test is annoying enough as it is what with it wedging the - test suite and all. There's no reason why it should DOS the - running box as well by sitting in a loop allocating like mad. - - test/dash-infinite-loop.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 20b0e7f95448e496b609212b9608f75e03f223f8 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Sep 4 23:54:21 2009 +0300 - - [test] Add large-source-roi.ref.png to test/Makefile.am - - Oops.. forgot to add it to the build files too - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 402a0539489cc01094b464109ae28ae78b85a294 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 4 09:47:10 2009 +0100 - - [gl] compile fix. - - Compiled fine during testing -- only I forgot I hadn't enable the gl surface. - - src/cairo-gl-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit b065303740cc18fbcabfeef34d09c7d8b617647e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 4 09:35:22 2009 +0100 - - [xlib] Enable pad_reflect by default - - If the XServer claims to support the required Render extension then send - it the operations. However for the cases where we know it does not work, - i.e. the current and previous generations (<=1.6) of Xorg servers, enable - the buggy_pad_reflect fallbacks. - - src/cairo-xlib-display.c | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit 634fdb4afd15e2467979609b1af7c1c198fc83d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 4 09:14:12 2009 +0100 - - [test] Add unbounded variants of clip-{fill,stroke} - - Add a couple of tests to exercise a bug that Joonas spotted that I had - introduced with the clip-reduction scheme - namely that I had - incorrectly removed the clip on unbounded operations. - - test/Makefile.am | 14 +++ - test/Makefile.sources | 2 + - test/clip-fill-unbounded.argb32.ref.png | Bin 0 -> 1615 bytes - test/clip-fill-unbounded.c | 105 ++++++++++++++++++++ - test/clip-fill-unbounded.rgb24.ref.png | Bin 0 -> 1312 bytes - test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1601 bytes - test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1601 bytes - ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes - test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 0 -> 1758 bytes - test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes - test/clip-stroke-unbounded.argb32.ref.png | Bin 0 -> 1703 bytes - test/clip-stroke-unbounded.c | 102 +++++++++++++++++++ - test/clip-stroke-unbounded.rgb24.ref.png | Bin 0 -> 1383 bytes - test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1697 bytes - test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1697 bytes - ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes - test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 0 -> 1792 bytes - test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes - 18 files changed, 223 insertions(+), 0 deletions(-) - -commit de99f841886de5cc6e5bc91f9d3e82076d838dee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 4 08:55:19 2009 +0100 - - [fallback] Only eliminate the clip if the operation is bounded - - For unbounded operations we still need to pass along the clip in order to - correctly limit the extents of the operation. - - src/cairo-surface-fallback.c | 57 +++++++++++++++++++++++++++++++----------- - 1 files changed, 42 insertions(+), 15 deletions(-) - -commit 0ffca06d7feec6fdc56c47a378fcc37c1951a00a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 4 08:32:31 2009 +0100 - - [perf] Use milliseconds by default in cairo-perf-diff-files - - Necessary when comparing performance reports from different machines (or - even at different CPU states). - - perf/cairo-perf-diff-files.c | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit 00ca0780b8f06ec160d8f969e316c21fbbde04bc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 23:25:53 2009 +0100 - - [win32] Remove unused clone_similar() - - The win32 backend handles surface sources directly and never calls - _cairo_pattern_acquire_surface() which is the only other possible user of - clone_similar(). - - src/cairo-win32-printing-surface.c | 2 +- - src/cairo-win32-surface.c | 57 +----------------------------------- - 2 files changed, 2 insertions(+), 57 deletions(-) - -commit 535bcaa1a1dac28fbe3106c6605949171bc36cb2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 20:10:55 2009 +0100 - - [mutex] Hook into pthread last - - Check for native mutex types before hooking into pthread, as this - workarounds broken builds on mingw that confuse us by including the - pthread header file. - - src/cairo-mutex-impl-private.h | 47 ++++++++++++++++++++------------------- - 1 files changed, 24 insertions(+), 23 deletions(-) - -commit 769f4a4f47ab4636ec5cca3e92ce2c0ff19d2f75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 17:47:34 2009 +0100 - - [gl] Allocate small number of rectangles on the stack - - FillRectangle is most frequently used to fill an entire imagee with the - background colour, i.e. with just a single, or few, rectangle. Avoid - heap allocation for this common case by allocating enough space for 4 - rectangles (vertices+colors) on the stack. - - src/cairo-gl-surface.c | 43 +++++++++++++++++++++++++++++-------------- - 1 files changed, 29 insertions(+), 14 deletions(-) - -commit 6ce200da9d01a85a1de576229e75732db65a8b70 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 17:38:00 2009 +0100 - - [gl] Assert that the error is impossible. - - As we created the image, it should not need coercing into a suitable - format and so we should be able to upload it without failure. - - src/cairo-gl-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d3aeafb406da7bf69e9bf24e18a5975780a7a987 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 17:32:28 2009 +0100 - - [gl] Remove reference to depth_stencil_tex - - We no longer use a depth-stencil, so remove the vestigial reference. - - src/cairo-gl-private.h | 1 - - src/cairo-gl-surface.c | 2 -- - 2 files changed, 0 insertions(+), 3 deletions(-) - -commit 316c1683ceb39eb652608adc360cb4da9c22256a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Sep 3 21:38:31 2009 +0300 - - [test] Fix the order of random points random-intersections-curves*. - - The calls to uniform_random() to get the curve points were in - the function arguments, but argument order evaluation is compiler - implementation dependent. - - test/random-intersections-curves-eo.c | 17 ++++++++++------- - test/random-intersections-curves-nz.c | 17 ++++++++++------- - 2 files changed, 20 insertions(+), 14 deletions(-) - -commit 9e45673e197d0f43e296483cc6b5ca6df94e7f02 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Sep 3 19:18:07 2009 +0300 - - [image] Check for out of bounds image surface sizes in constructors. - - The image surface code doesn't reliably work on images larger than - 32767 in width or height. This patch makes the image surface - constructors fail by returning a surface in the CAIRO_STATUS_INVALID_SIZE - state when given negative or too large dimensions so that client code - gets a prompt and correct error rather than flaky rendering on large - images. - - src/cairo-image-surface.c | 27 +++++++++++++++++++++++++-- - test/large-source-roi.c | 4 ++-- - test/large-source-roi.ref.png | Bin 0 -> 112 bytes - test/large-source.c | 4 ++-- - 4 files changed, 29 insertions(+), 6 deletions(-) - -commit 12d0613210547b8a50dd7b21a12eb1485ee496b9 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Sep 3 17:54:49 2009 +0300 - - [test] Allow tests to XFAIL by putting the cairo_t into an error state. - - The test runner was extra strict about never letting a test put - the cairo_t into an error state, and never would it check for - the expectedness status of the failure. This patch moves the - check for a test being an XFAIL above the check on the cairo_t's - final status. - - test/cairo-test.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit a76c36f2edd16d8e2b8f49e6409134aceab38a42 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 14:29:20 2009 +0100 - - [xlib] solid pictures should only be 1x1 - - Creating an widthxheight solid picture for using with - RenderCompositeTrapezoids defeats the optimization with the xserver that - checks for a solid alpha pattern. The checks it performs are for - CONTENT_ALPHA, Repeat, 1x1 and value == 0xff. - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit df067be863bf714f22db0392ab29926edfa8e917 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 08:45:40 2009 +0100 - - [polygon] Compute the limit of the limits slightly more efficiently - - Initialize the bbox to the first limit, as frequently there will only be a - single (or at least a small number) limit. - - src/cairo-polygon.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit a1bac73f24069990842fa8f31e776b4d2c72546e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 09:20:46 2009 +0100 - - [boilerplate] Handle errors whilst creating GL surface - - boilerplate/cairo-boilerplate-gl.c | 11 ++++++----- - src/cairo-glx-context.c | 16 ++++++++-------- - 2 files changed, 14 insertions(+), 13 deletions(-) - -commit f1d284f9976d38f636c6791f11479ae75d7bd199 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 01:00:59 2009 +0100 - - [polygon] Fix discard with non-banded disjoint clip boxes - - The early discard checked if the line was below the last clip-box, or if - above the first. However, the clip-boxes are only sorted on by the bottom - (not the strict XY-banded sort of the regions) and so this was erroneously - discarding lines. - - src/cairo-polygon.c | 29 ++++++++++++++++++++++++----- - src/cairo-types-private.h | 1 + - 2 files changed, 25 insertions(+), 5 deletions(-) - -commit a6dfdeec82ec34d88276fd0bb0ddcc94405d89f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 3 00:59:21 2009 +0100 - - [test] Add clip-disjoint - - Soeren found another bug (thanks Soeren!) in the clipping code - as - reproduced by this test case. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/clip-disjoint.c | 90 +++++++++++++++++++++++++++++++++++++++ - test/clip-disjoint.ref.png | Bin 0 -> 5520 bytes - test/clip-disjoint.xlib.ref.png | Bin 0 -> 5395 bytes - 5 files changed, 93 insertions(+), 0 deletions(-) - -commit ff6bc1e132836c68d4f538799c2cd26a2d9cace4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 21:22:33 2009 +0100 - - [script] Always create a fallback font - - In order to get a baseline for win32 performance testing, always create a - font so that the trace can be replayed. Not ideal, but I feel this the - pragmatic solution for judging the performance differentials before I can - work out a better solution for loading typ42 fonts. - - util/cairo-script/cairo-script-operators.c | 46 ++++++++++++++++----------- - 1 files changed, 27 insertions(+), 19 deletions(-) - -commit fcbb288e7cf2f5914c0d2b66ee6d81b694de6de6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 21:02:18 2009 +0100 - - [script] Attempt to select a font if ! CAIRO_HAS_FT_FONT - - In order to enable replay of traces on machines that do not use FreeType - as the native font system, we need to convert a type42 font into something - similar. Currently the fallback is just to select a font with the same - name - this ignores weight and slant, and many other details. - - util/cairo-script/cairo-script-operators.c | 106 ++++++++++++++++++++++++++++ - 1 files changed, 106 insertions(+), 0 deletions(-) - -commit 2c03dfa0b406565fca798214a842bac69b042017 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 10:09:50 2009 +0100 - - [boilerplate/test] Use numerical equality not string equality - - test == != -eq - - boilerplate/make-cairo-boilerplate-constructors.sh | 2 +- - test/make-cairo-test-constructors.sh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit f5df38ca5efcbc0cd3cc18d9fb67df49ec4859f8 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Sep 2 04:38:52 2009 +0100 - - [build] Fix typos in prototype warnings. - - The -Wstrict-prototypes and -Wmissing-prototypes warnings - weren't actually in use due to typos. - - build/configure.ac.warnings | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c086b40a93057a6fd47d23c85c5026d6fe2f524a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Sep 2 04:29:18 2009 +0100 - - [build] Hush the Solaris compiler about enum abuse. - - Sun Studio 12 doesn't like it when we mix our - enum values and types. We do that a lot on purpose - so the warnings from compiles were very verbose. - - build/aclocal.cairo.m4 | 23 +++++++++++++++++++++-- - build/configure.ac.warnings | 6 ++++++ - 2 files changed, 27 insertions(+), 2 deletions(-) - -commit f081a5ff554267eebecea4652bb483eea11d1484 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Sep 2 04:10:39 2009 +0100 - - [build] Refine the -Wno-attribute test to check our use cases. - - We don't actually check that -Wno-attribute does what - we think it does. On clang it doesn't since it happily - seems to recognize but ignore the attribute. - - This patch factors out a silent version of CAIRO_CC_TRY_FLAG - which accepts an optional program argument and actually tests - that the compiler doesn't produce any warning messages. It - is then used to check that -Wno-attribute doesn't complain - when the __warn_unused_result__ attribute is applied to - void functions or variables. - - build/aclocal.cairo.m4 | 42 ++++++++++++++++++++++++++++++++++-------- - build/configure.ac.analysis | 2 +- - build/configure.ac.warnings | 10 ++++++---- - 3 files changed, 41 insertions(+), 13 deletions(-) - -commit c87b366bfec4eeda2646b33cb8a33822a301456c -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Sep 2 04:09:46 2009 +0100 - - [constructors] Guard against being called without any input files. - - The make-cairo-(test|boilerplate)-constructors scripts ought - never to be called without arguments lest we are left constructorless. - - boilerplate/make-cairo-boilerplate-constructors.sh | 7 ++++++- - test/make-cairo-test-constructors.sh | 7 ++++++- - 2 files changed, 12 insertions(+), 2 deletions(-) - -commit b509b548b1e3ac5a9e3de2f9652cd1973d295fa3 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 24 09:12:10 2009 +0300 - - [trace] Check for __builtin_return_address explicitly. - - Some other compilers such as clang and icc support the - __builtin_return_address() intrinsic as well, so we don't - need to check for __GNUC__ >= 3 only. - - build/configure.ac.system | 12 ++++++++++++ - util/cairo-trace/trace.c | 2 +- - 2 files changed, 13 insertions(+), 1 deletions(-) - -commit 2b0e070f6a6bee415b1036fd149f0c41bcf87abb -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 24 07:48:57 2009 +0300 - - [trace] Replace an open coded test for matrix identity. - - The code has a _matrix_is_identity() function we can use - instead of open coding the same test. - - util/cairo-trace/trace.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 70ea9e3ce1b0037999340e484e62d3a1484da41a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 24 07:46:20 2009 +0300 - - [trace] Don't crash on unknown enums values. - - If the tracer encounters an unknown enum value it - ought not to crash. Theis patch replaces the idiom - of looking up a name for an enumerated value directly - from a table by a switch statement. As a bonus we get - warnings from the compiler when the enums are updated - in cairo. - - util/cairo-trace/trace.c | 313 +++++++++++++++++++++++++--------------------- - 1 files changed, 172 insertions(+), 141 deletions(-) - -commit 174c2620c82a47d067ec7b5062a4f513155a0b1f -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 24 07:42:57 2009 +0300 - - [trace] Check for object stack underflow. - - If the tracer's object stack underflows we want to - know about is as soon as possible. This patch adds - checks against the stack overflowing and aborts the - program with an object stack dump if it does. - - util/cairo-trace/trace.c | 26 ++++++++++++++++++++++++-- - 1 files changed, 24 insertions(+), 2 deletions(-) - -commit bb480d235882d8e7d5748a3837f9b274a8b8ac86 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Jul 21 21:18:36 2009 +0300 - - [NEWS] Thank the AuroraUX team for facilitating Solaris testing. - - NEWS | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit c64f6f8a15306cdcf5dd02480049b0f9112fd6ac -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 26 16:54:11 2009 +0300 - - [trace] Get the tracee program name from the environment. - - Support non-Linux systems which don't have a /proc/self/cmdline - by transferring the application name given to cairo-trace via - an environment variable CAIRO_TRACE_PROG_NAME. - - util/cairo-trace/cairo-trace.in | 3 ++- - util/cairo-trace/trace.c | 31 +++++++++++++++++++------------ - 2 files changed, 21 insertions(+), 13 deletions(-) - -commit 17cdffafda04514f08e0f0f11d0a85b938282c38 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 00:41:18 2009 +0100 - - [xlib] Remove stray code - - Grr. Should have spotted this before pushing - remove the addition of the - superfluous code. - - src/cairo-xlib-surface.c | 13 ++----------- - 1 files changed, 2 insertions(+), 11 deletions(-) - -commit 59c4fe93ee30c8182ae1a29267b9c08602e2f6c5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 00:34:37 2009 +0100 - - [xlib] Eliminate GC clipping - - Eradicate the use of clipping with GC. By never using clipping, we never - have to worry about retrieving a dirty clip from the GC cache. - - src/cairo-xlib-private.h | 12 +-- - src/cairo-xlib-screen.c | 50 ++++------ - src/cairo-xlib-surface-private.h | 2 - - src/cairo-xlib-surface.c | 197 ++++++++++++++++++-------------------- - 4 files changed, 116 insertions(+), 145 deletions(-) - -commit 075fc5666abe006c434bf7ec28d2d4f0226a1d3a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 2 00:33:22 2009 +0100 - - [test] Add clip-image - - Exercise the XCopyArea() paths under clipping - whilst modifying that code - I noticed that it was not being exercised by the test suite. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/clip-image.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ - test/clip-image.ref.png | Bin 0 -> 2679 bytes - 4 files changed, 96 insertions(+), 0 deletions(-) - -commit 7d1eb259f93d3f2f2e754b2b8b90cb88359b477d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 23:12:43 2009 +0100 - - [xlib] Make xlib_display_t private and rename xlib_screen_info_t - - The issue Joonas was trying to solve was the unwanted inclusion of - the inlines via cairo-freelist-private.h. Unwittingly he included - cairoint.h from cairo-xlib-private.h instead, a far more heinous crime as - that causes the boilerplate to try to use the hidden, private symbols. - Instead we resolve this issue by making the cairo_xlib_display_t structure - private to cairo-xlib-display.c and provide functions to manipulate the - abstract data type. Whilst in the vicinity, we rename - cairo_xlib_screen_info_t to cairo_xlib_screen_t for consistency and - cleanliness. - - src/cairo-xlib-display.c | 126 ++++++++++++++++++++++++++- - src/cairo-xlib-private.h | 88 +++++++++++-------- - src/cairo-xlib-screen.c | 155 +++++++++++++++------------------- - src/cairo-xlib-surface-private.h | 3 +- - src/cairo-xlib-surface.c | 173 +++++++++++++++++++++----------------- - 5 files changed, 339 insertions(+), 206 deletions(-) - -commit b8ddd66cf6e0d16383580c3c3398343f577b89fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 21:49:01 2009 +0100 - - Revert "[freelist] Make _cairo_freepool_alloc_from_new_pool static inline." - - This reverts commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 as it breaks - the boilerplate when linking with gcc. - - src/cairo-freelist-private.h | 29 ++--------------------------- - src/cairo-freelist.c | 29 +++++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 27 deletions(-) - -commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Sep 1 20:57:01 2009 +0100 - - [freelist] Make _cairo_freepool_alloc_from_new_pool static inline. - - The xlib boilerplate includes a cairo private header to be able - to disable usage of the render extension. This indirectly includes - cairo-freelist-private.h which contains a bunch of static inline - functions which use the private _cairo_freepool_alloc_from_new_pool - function, but since that is not inline also, it causes an undefined - extern which cannot be resolved. The binutils linker doesn't care - since the freelist function aren't actually used in the boilerplate - but the Solaris linker does. By making the .._alloc_from_new_pool - function inline no dangling references are created and linking - succeeds. - - src/cairo-freelist-private.h | 29 +++++++++++++++++++++++++++-- - src/cairo-freelist.c | 29 ----------------------------- - 2 files changed, 27 insertions(+), 31 deletions(-) - -commit 68c8eb955d6d16872c2fa488f0960b974611865d -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Aug 31 23:57:20 2009 +0100 - - [wrapper] Avoid a void return gccism. - - Returning void using the pattern "return func_returning_void(...)" - is a gccism not supported by Sun Studio 12. - - src/cairo-surface-wrapper.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6ddab64025eacd5000fa295c86c0fddc469bdc5f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 20:25:53 2009 +0100 - - [ps] Clip meta-surface to desired extents. - - Ensure that the meta surface does not extend beyond the operation by - forcing a clip to the extents of the operation. - - Fixes test/device-offset and test/device-offset-positive - - src/cairo-ps-surface.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 43 insertions(+), 3 deletions(-) - -commit 665f5829541703b29e33f80bebf579a17f47a892 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 18:24:42 2009 +0100 - - [ps/pdf] Trim patterns to operation extents - - If we have to rasterise a pattern for use by PS/PDF (for example, to - satisfy CAIRO_EXTENT_PAD) then only generate an image large enough to - cover the operation extents. We ensure tight coverage by computing the - extents afresh - we could do this lazily in the future, but we can not - rely on the bounds as computed by the analysis surface as for native - operations they may not be tight. - - src/cairo-pdf-surface.c | 67 +++++++++++++++++--- - src/cairo-ps-surface.c | 76 +++++++++++++++-------- - src/cairo-surface.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 49 ++++++++++++++ - 4 files changed, 319 insertions(+), 35 deletions(-) - -commit c4c7db96750337076b953a4938afc7b5f16815fc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 14:59:36 2009 +0100 - - [boilerplate] Use xlib as fallback reference for xcb - - And exercise RGB code-paths. - - boilerplate/cairo-boilerplate-xcb.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit e7a118d3f82f2cbefb4a1529cc90f76ed7371ecc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 14:31:38 2009 +0100 - - [path] Standalone header-compilation - - Hmm, TRUE/FALSE apparently weren't defined before use. Odd. - - src/cairo-path-fixed-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4f880deeabc36842b3b4b0d7ad16383db708cd42 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 14:24:59 2009 +0100 - - Compiler warnings - - Add an impossible default condition to avoid a compiler warning. And tweak - the code to avoid mismatching signed/unsigned comparisons. - - src/cairo-pdf-surface.c | 1 + - src/cairo-xml-surface.c | 8 ++++---- - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit 1bcc3a3fa00445667adc47d4852237271c7eec0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 14:24:06 2009 +0100 - - [tee] Rename 'append' to 'add' and add symmetric 'remove' - - src/cairo-tee-surface.c | 51 ++++++++++++++++++++++++++++++++++++++++++---- - src/cairo.h | 8 +++++- - util/cairo-fdr/fdr.c | 2 +- - util/cairo-sphinx/fdr.c | 2 +- - 4 files changed, 54 insertions(+), 9 deletions(-) - -commit af82670dd3bfdb661de5a01a6856ec01bdf80040 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 1 13:31:52 2009 +0100 - - [pattern] Remove unused hidden symbol for cairo_pattern_status() - - src/cairo-pattern.c | 9 ++++----- - src/cairoint.h | 1 - - 2 files changed, 4 insertions(+), 6 deletions(-) - -commit aca1dff25967940c36caee26977512484f1720ac -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Aug 31 22:28:26 2009 +0930 - - PDF: Ensure operator is selected before painting surface - - src/cairo-pdf-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit a402bdbd32d3ffe4b564318e6dd83831328257b1 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Aug 31 22:15:57 2009 +0930 - - PDF: Flush operators before writing to the PDF stream - - src/cairo-pdf-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 119355b2a4d81c903720484adaeb7dea3929ca1f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Aug 31 22:14:15 2009 +0930 - - PDF: Reset alpha to 1.0 before painting a surface - - Fixes a test suite regression. - - src/cairo-pdf-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 20bd7d0edbb01a52bcc88bddcba4cc5237f3a673 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Aug 31 22:03:34 2009 +0930 - - Update ref images - - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3835 -> 3908 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3682 -> 3760 bytes - test/rotate-image-surface-paint.pdf.xfail.png | Bin 207 -> 217 bytes - test/scale-offset-image.pdf.argb32.ref.png | Bin 0 -> 9981 bytes - test/scale-offset-image.pdf.ref.png | Bin 10099 -> 0 bytes - test/scale-offset-image.pdf.rgb24.ref.png | Bin 0 -> 9981 bytes - test/scale-offset-similar.pdf.argb32.ref.png | Bin 0 -> 11027 bytes - test/scale-offset-similar.pdf.ref.png | Bin 10890 -> 0 bytes - test/scale-offset-similar.pdf.rgb24.ref.png | Bin 0 -> 11027 bytes - test/surface-pattern-scale-down.pdf.ref.png | Bin 1589 -> 1603 bytes - test/surface-pattern-scale-up.pdf.ref.png | Bin 2712 -> 2793 bytes - 11 files changed, 0 insertions(+), 0 deletions(-) - -commit 135912721f5791ad8eac773fd042c751122c8760 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Aug 30 23:58:53 2009 +0930 - - PDF: Avoid using patterns when filling a surface with EXTEND_NONE - - The fill equivilant of the previous optimization. - - src/cairo-pdf-surface.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit 6512faeb9487dcc2d577b5fb3628cf7f13a25c0a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Aug 30 23:38:17 2009 +0930 - - PDF: Avoid using patterns when painting surfaces with EXTEND_NONE - - This is an optimization the PS surface has been using to improve - printing speed and prevent printers from choking on large - images. Applying this optimzation to PDF prevents the same problem - occuring when the PDF is converted to PS. - - src/cairo-pdf-surface.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 58 insertions(+), 0 deletions(-) - -commit 26d568a9ada523793b2e5855678922894e438ef4 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Aug 30 23:50:53 2009 +0930 - - PDF: Fix bug when when embedding surfaces - - src/cairo-pdf-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit feaf38d0cdc5a79966d3a412b644705b0f38e75a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Aug 31 16:25:08 2009 +0300 - - [test] Use HAVE_FLOCKFILE instead of _POSIX_C_SOURCE. - - The _POSIX_C_SOURCE 2001.. #define requires C99 mode and - clang on Solaris is strict about such things. Use configure - tests for flockfile() instead. - - test/cairo-test.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 9bb469c51cf580e3ae18b21b3847488e8c4be051 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 24 06:15:46 2009 +0300 - - [trace] Use HAVE_FLOCKFILE/FUNLOCKFILE since configure test for them. - - The trace source was using the flockfile() and funlockfile() - functions directly. - - util/cairo-trace/trace.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit b5cf24a4fb0e48a0067c4b5a706890d4c1f3f1ae -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 26 20:06:40 2009 +0300 - - [build] Remove duplicate invocation of AC_CHECK_HEADERS. - - The fenv.h stuff was checked twice. - - build/configure.ac.system | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 3acccf0ea5ca1fde9cf6b91677588680a2644ee6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 30 12:33:40 2009 +0100 - - [perf] Trim outliers from chart - - Use "mild outliers" method to remove exceptional speed-ups and slow-downs - from the graph, so that the majority of information is not lost by the - scaling. Add the timing labels to the bars so that the true factor is - always presented. - - perf/cairo-perf-chart.c | 211 ++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 172 insertions(+), 39 deletions(-) - -commit 687462be89fd0ddf6b5412f2cb7b4f7b1a80135c -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Sun Aug 30 12:07:28 2009 +0200 - - [build] Fix a typo in configure.ac - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a6bcb6260ec8982493ac3411436ec007b40e4501 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 30 10:09:51 2009 +0100 - - [bo-rectangular] Fix assertion failure with insertion sort - - We remember the location of the last insert as the next edge is likely to - be nearby. However, we need to be careful when the pointer rests upon the - HEAD and ensure that we begin the search from the appropriate end. - - src/cairo-bentley-ottmann-rectangular.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 19ebf83b6717e1f02e7be14218007858edf14ef0 -Merge: 40aefac a77f193 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 17:45:48 2009 +0100 - - Merge branch 'stroke-with-spans' - - This branch brings self-intersection removal with virtually no - performance regression. (Compare with the initial implementation that - incurred a 5-10x slowdown due to having to tessellate whole strokes at a - time.) The importance of self-intersection removal is the improved visual - quality it brings - gone are those annoying sparkles on the outside of - rounded-rectangles for instance. Most of the performance overhead - associated with the self-intersection removal is avoided by switching from - trapezoids to spans for strokes. Obviously we are not able to do so for - the xlib backend as we do not yet have a polygon image type, and so the - tessellators are overhauled instead, along with more special casing for - frequent operations to avoid the increased complexity along the general - paths. - - Speedups - ======== - xlib-rgba swfdec-youtube-0 11371.13 (11406.01 0.28%) -> 10450.00 (10461.84 0.66%): 1.09x speedup - ▏ - image-rgba firefox-talos-svg-0 73696.53 (73828.28 3.42%) -> 68324.30 (70269.79 1.36%): 1.08x speedup - ▏ - image-rgba swfdec-youtube-0 7843.08 (7873.89 2.57%) -> 7393.96 (7399.68 0.18%): 1.06x speedup - - xvfb-rgba swfdec-youtube-0 9627.25 (9634.43 0.16%) -> 9020.55 (9040.97 0.27%): 1.07x speedup - ▏ - Slowdowns - ========= - xvfb-rgba gnome-terminal-vim-0 7695.12 (7697.87 0.44%) -> 8569.45 (8588.29 0.19%): 1.11x slowdown - ▏ - xvfb-rgba swfdec-giant-steps-0 3811.77 (3815.06 0.23%) -> 4246.67 (4569.17 3.52%): 1.11x slowdown - ▏ - image-rgba gvim-0 7150.90 (7181.96 29.36%) -> 14641.04 (14651.36 0.11%): 2.05x slowdown - █ - - One method for overcoming these regressions is to reduce the complexity of - the polygons being fed into the tessellator (both in the number of edges - and intersections). This should be feasible by coupling into Jeff Muizelaar's - stroke-to-path work, which early indications suggest will bring a - significant performance improvement. On top of this, our span - implementation for the image backend is not as efficient as we would hope - for - and Joonas promises a much faster implementation soon. - -commit a77f1933afebe28e0651906c96fd098cd8267a9f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 14:23:41 2009 +0100 - - Use the more generic is_box when doing simple extent checks - - is_rectangle() is far stricter than is_box(), and is only required for a - very limited set of operations (essentially were the rectangle must - conform to the motion as described by cairo_rectangle). For the general - case where we just want to know whether we have a single rectangular path - that covers a certain area, is_box() is sufficient. - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-script-surface.c | 4 ++-- - src/cairo-svg-surface.c | 2 +- - 4 files changed, 5 insertions(+), 5 deletions(-) - -commit 0a548d08b5eae73a95fb41f41298c9c43379163e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 16:27:27 2009 +0100 - - [clip] Correctly compute a geometric mask for a rectilinear + arbitrary - - Fix up the geometric clipper to handle intersecting a rectilinear path - with an arbitrary path and inspecting the result to see if it becomes a - a region. - - src/cairo-clip.c | 47 ++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 38 insertions(+), 9 deletions(-) - -commit 8a323d7c8998f308fc222d65badb1289e3f7fb54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 14:15:07 2009 +0100 - - [clip] Apply surface offset when combining with clip mask - - In order to correctly combine the clip mask with the compositing mask the - clip path must be offset so that it is relative to the destination - surface. - - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 85 +++++++++++++++++++++-------------------- - src/cairo-region.c | 8 +++- - src/cairo-surface-fallback.c | 8 +--- - src/cairo-traps.c | 8 +--- - src/cairo.h | 2 +- - test/clip-stroke.xlib.ref.png | Bin 1563 -> 1490 bytes - 7 files changed, 56 insertions(+), 57 deletions(-) - -commit 21225a7163bc93d34d3e395c840faaba24046bb6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 12:08:12 2009 +0100 - - [clip] Pass in destination offset for combining with clip-mask - - When combining a clip-mask with a subsurface, as when used to combine with - the composite mask, we need to pass the destination surface offset to the - clip so that the paths can be corrected for the new surface. - - src/cairo-clip-private.h | 4 ++- - src/cairo-clip.c | 45 ++++++++++++++++++++--------------------- - src/cairo-surface-fallback.c | 14 ++++++++---- - 3 files changed, 34 insertions(+), 29 deletions(-) - -commit ac6c6fe1d39effd5b6b382f0f1199af824868ef4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 12:07:20 2009 +0100 - - [test] Add rotated clip. - - Exercise a bug found in not offsetting the clip mask when combining with - the composite mask. - - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/rotated-clip.c | 110 ++++++++++++++++++++++++++++++++++++++++ - test/rotated-clip.ps.ref.png | Bin 0 -> 3378 bytes - test/rotated-clip.ref.png | Bin 0 -> 3761 bytes - test/rotated-clip.xlib.ref.png | Bin 0 -> 3922 bytes - 6 files changed, 114 insertions(+), 0 deletions(-) - -commit c60280782dfac7de1abe3230a500c7c98735dc02 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 09:59:36 2009 +0100 - - [script] Implement invert - - Flesh out matrix inversion. - - util/cairo-script/cairo-script-operators.c | 26 +++++++++++++++++++++++++- - 1 files changed, 25 insertions(+), 1 deletions(-) - -commit 06ca0b1475caf709fdf32b10a891dfb3b47cc6b1 -Author: Damian Frank <damianf@ubuntu-vm.(none)> -Date: Fri Aug 14 11:35:55 2009 -0500 - - Fix build on systems with older Xrender headers. - - This patch revises xlib so that it doesn't depend on having recent - Xrender headers to build. In particular, some definitions were added - to the private xrender header file, and an ifdef render version check - CAIRO_SURFACE_RENDER_SUPPORTS_OPERATOR was changed to a run-time - check using CAIRO_SURFACE_RENDER_HAS_PDF_OPERATORS. - - src/cairo-xlib-display.c | 7 +++ - src/cairo-xlib-surface.c | 30 ++----------- - src/cairo-xlib-xrender-private.h | 90 ++++++++++++++++++++++++++++++++++--- - 3 files changed, 93 insertions(+), 34 deletions(-) - -commit 17ef949b6aaa812dd566f1db016055f8e1913320 -Author: Damian Frank <damianf@ubuntu-vm.(none)> -Date: Fri Aug 14 11:38:52 2009 -0500 - - Rename cairo-script static func to avoid MinGW conflict - - cairo-script-operators.c's _dup function was colliding with one - defined in io.h by MinGW (gcc 4.3.0 package). I renamed it - to _duplicate. - - util/cairo-script/cairo-script-operators.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3e7e0eacef650f1035cfbe15e306116ff711f99c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 17:07:41 2009 +0100 - - Update reference images - - Refresh the test reference images to match the current output where - acceptable. - - test/Makefile.am | 14 ++++++++++++-- - test/clip-fill.xlib-fallback.ref.png | Bin 1039 -> 1063 bytes - test/clip-operator.pdf.argb32.ref.png | Bin 9340 -> 9266 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 5146 -> 5166 bytes - test/clip-operator.ref.png | Bin 8191 -> 8126 bytes - test/clip-operator.rgb24.ref.png | Bin 3279 -> 3244 bytes - test/clip-operator.svg12.argb32.xfail.png | Bin 8404 -> 8378 bytes - test/clip-operator.svg12.rgb24.xfail.png | Bin 4523 -> 4566 bytes - test/clip-operator.xlib-fallback.ref.png | Bin 3226 -> 3228 bytes - test/clip-push-group.svg.ref.png | Bin 0 -> 175 bytes - test/clip-stroke.ref.png | Bin 1528 -> 1451 bytes - test/clip-stroke.xlib-fallback.ref.png | Bin 1566 -> 1490 bytes - test/clip-stroke.xlib.ref.png | Bin 1563 -> 1563 bytes - test/clip-text.svg.ref.png | Bin 933 -> 946 bytes - test/clipped-group.ref.png | Bin 316 -> 289 bytes - test/clipped-group.svg.ref.png | Bin 0 -> 250 bytes - test/device-offset-fractional.pdf.xfail.png | Bin 275 -> 270 bytes - test/extended-blend-alpha.svg12.argb32.xfail.png | Bin 6857 -> 6658 bytes - test/filter-nearest-offset.pdf.xfail.png | Bin 1926 -> 2152 bytes - test/filter-nearest-transformed.pdf.xfail.png | Bin 488 -> 532 bytes - test/ft-text-vertical-layout-type1.svg.ref.png | Bin 3609 -> 3607 bytes - test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3640 -> 3639 bytes - test/ft-text-vertical-layout-type3.svg.ref.png | Bin 3626 -> 3626 bytes - test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3605 bytes - test/group-unaligned.svg.argb32.xfail.png | Bin 522 -> 520 bytes - test/leaky-dashed-rectangle.pdf.ref.png | Bin 347 -> 380 bytes - test/mask-glyphs.svg.ref.png | Bin 1211158 -> 1211144 bytes - test/mask.pdf.argb32.ref.png | Bin 7837 -> 7866 bytes - test/mask.pdf.rgb24.ref.png | Bin 7301 -> 7336 bytes - test/mask.svg.argb32.xfail.png | Bin 8613 -> 8641 bytes - test/mask.svg.rgb24.xfail.png | Bin 7189 -> 7199 bytes - test/operator-source.svg12.argb32.xfail.png | Bin 2951 -> 2967 bytes - test/operator-source.svg12.rgb24.xfail.png | Bin 2963 -> 2976 bytes - test/overlapping-glyphs.svg.argb32.ref.png | Bin 0 -> 2338 bytes - test/overlapping-glyphs.svg.rgb24.ref.png | Bin 0 -> 2338 bytes - test/radial-gradient.pdf.ref.png | Bin 277162 -> 280944 bytes - test/radial-gradient.svg.xfail.png | Bin 0 -> 264425 bytes - test/random-intersections-curves-eo.ref.png | Bin 246996 -> 245762 bytes - ...m-intersections-curves-eo.xlib-fallback.ref.png | Bin 246243 -> 244255 bytes - test/random-intersections-curves-eo.xlib.ref.png | Bin 246243 -> 244255 bytes - test/random-intersections-curves-nz.ref.png | Bin 267589 -> 264545 bytes - ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 266364 -> 264288 bytes - test/random-intersections-curves-nz.xlib.ref.png | Bin 266360 -> 264288 bytes - test/scale-offset-image.pdf.ref.png | Bin 0 -> 10099 bytes - test/scale-offset-image.pdf.xfail.png | Bin 10099 -> 0 bytes - test/scale-offset-image.script.xfail.png | Bin 0 -> 9963 bytes - test/scale-offset-similar.pdf.ref.png | Bin 0 -> 10890 bytes - test/scale-offset-similar.pdf.xfail.png | Bin 11024 -> 0 bytes - test/scale-offset-similar.script.xfail.png | Bin 0 -> 9963 bytes - test/self-intersecting.ref.png | Bin 301 -> 213 bytes - test/smask-text.script.ref.png | Bin 0 -> 1663 bytes - test/smask.pdf.xfail.png | Bin 4393 -> 2848 bytes - test/smask.script.ref.png | Bin 0 -> 3396 bytes - test/text-pattern.pdf.argb32.ref.png | Bin 1831 -> 1810 bytes - test/text-pattern.pdf.rgb24.ref.png | Bin 1598 -> 1559 bytes - test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1719 -> 1731 bytes - test/user-font-proxy.svg.ref.png | Bin 16817 -> 16814 bytes - test/user-font.pdf.ref.png | Bin 0 -> 6241 bytes - 58 files changed, 12 insertions(+), 2 deletions(-) - -commit 155e10e632cb647df5c3d54a75975bc16591287d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 08:04:33 2009 +0100 - - [script] Fix use of freed list - - A typo, I missed converting the user over to the freshly sorted list, - leaving it iterating over original but checking the sorted for termination - conditions. - - src/cairo-script-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5393aa6d6c4676f20d316f3cd0a18bb497574e50 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 29 08:02:52 2009 +0100 - - [path] Return the canonical box. - - When returning the single box that represents a path, always return it - consistently wound. - - src/cairo-path-fill.c | 32 -------------------------------- - src/cairo-path-fixed.c | 28 ++++++++++++++++++++++++---- - 2 files changed, 24 insertions(+), 36 deletions(-) - -commit afea5eb79d2159fe9a5dc1a1a7b9445e40fbb474 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 17:10:35 2009 +0100 - - [scaled-font] Fix implementation-face refleak - - If we found the font via the holdover cache, or if we returned due to an - error, we would leak a reference count on the implementaton face. - - src/cairo-scaled-font.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit e5d44937f34d35606ad7f07415be7331cf146567 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 17:09:54 2009 +0100 - - [ft] Improve error path handling. - - Specifically check for an error during resolving the font and do not cache - the error object. - - src/cairo-ft-font.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit e76856e6ee563affc0a273ed6eef865866802dec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 15:51:33 2009 +0100 - - [scaled-font] Refleak on error path. - - Perform the destroy of the local font before returning along the error - path. - - src/cairo-scaled-font.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -commit d7d6f75ed26bc3ea040c618442ba71c89633ac7b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 15:50:13 2009 +0100 - - [clip] Fix refleak of previous clipping surfaces. - - When combining previous clip masks, we leaked a referenced due to not - destroying the returned reference. - - src/cairo-clip.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 52e5ce3a36ab1cd7da25056df7f12ac0b23e410d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 27 17:25:08 2009 +0100 - - [test] Add clip-stroke - - Soeren was the first to report a clipping regression in the xlib backend - with strokes, and provided a test case to exercise the bug. This is an - extension of his test to provide coverage of different clipping and - stroking methods. - - test/Makefile.am | 3 + - test/Makefile.sources | 1 + - test/clip-stroke.c | 121 ++++++++++++++++++++++++++++++++ - test/clip-stroke.ref.png | Bin 0 -> 1528 bytes - test/clip-stroke.xlib-fallback.ref.png | Bin 0 -> 1566 bytes - test/clip-stroke.xlib.ref.png | Bin 0 -> 1563 bytes - 6 files changed, 125 insertions(+), 0 deletions(-) - -commit 20cdb99ae8ae0cc02193468e811b1b74b3f6d3b7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 27 16:21:30 2009 +0100 - - [path-fixed] Distinguish cw and ccw boxes - - To correctly handle retessellating trapezods constructed from alternately - wound boxes, then we need to pass that information from the path to the - tessellator. We do this by switching the direction of the box if the first - edge is horizontal as opposed to vertical. - - src/cairo-path-fixed.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 219d46a9ebc47f99fa8fe9c6e3f0aa440309f032 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 27 14:45:24 2009 +0100 - - [scaled-font] Eliminate intermediate path when tracing glyphs - - Currently the tracing code for glyphs constructs an temporary path in - order to replay and append to the output. This temporary allocation is - extremely wasteful as we can just directly append the glyph path to - the output path. - - src/cairo-scaled-font.c | 51 ++++++++++++++++++++-------------------------- - 1 files changed, 22 insertions(+), 29 deletions(-) - -commit 2e05922737d63289a3f124699359b8d385315cbd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 27 13:58:43 2009 +0100 - - [stroke] Handle degenerate stroke extents - - If the stroke is degenerate, i.e. the path consists only of a single - move-to and no edges, then the stroke may be visible due to end-capping - (as opposed to fills which are empty). So we also need to pad out the - extents around the current point for the degenerate case. - - src/cairo-path-bounds.c | 31 +++++++++++++------------------ - 1 files changed, 13 insertions(+), 18 deletions(-) - -commit cfd78393f357bc69233d4d00d0fb3a2ff736f1a7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 26 23:32:34 2009 +0100 - - [path] Handle the implicit close for path_fixed_is_box() - - _cairo_path_fixed_is_box() is only called for filled paths and so must - handle the implicit close (which was already being correctly handled by - _cairo_path_fixed_iter_is_box). - - src/cairo-path-fixed.c | 33 ++++++++++++++++++--------------- - 1 files changed, 18 insertions(+), 15 deletions(-) - -commit f22045bb4b9e700ce223c259ad41403dc7efe81f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 26 23:30:02 2009 +0100 - - [fallback] Include implicit closes in the check for rectilinear paths - - Fixes test/implicit-close - - By forgetting the implicit-close when checking for rectilinear paths, we - tried to feed the triangle (and other diagclose) into the specialised - rectilinear tesselators which completely mishandled that final edge. - - src/cairo-path-fixed-private.h | 14 ++++++++++++++ - src/cairo-surface-fallback.c | 6 ++++-- - 2 files changed, 18 insertions(+), 2 deletions(-) - -commit 92f6f275fcb5407baf908485ffd08b6787b2caf9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 26 23:27:46 2009 +0100 - - [test] Implicit close - - This is a simple test that broke with the determination of rectilinearity - during path construction. I forgot the implicit close on fill and so the - ignored the final diagonal edge and failed to draw the triangle. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/implicit-close.c | 54 +++++++++++++++++++++++++++++++++++++++++++ - test/implicit-close.ref.png | Bin 0 -> 251 bytes - 4 files changed, 56 insertions(+), 0 deletions(-) - -commit 8078cd194e95a10cf653c970d1ddd39049a511f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 23 15:25:42 2009 +0100 - - [boilerplate] Runtime library check - - For the purposes of benchmarking it is useful to run cairo-perf against a - different library from the one it was compiled against. In order to do so, - we need to check that the runtime library contains the required entry - points for our targets - which we can check by using dlsym. - - boilerplate/Makefile.am | 3 ++ - boilerplate/cairo-boilerplate-directfb.c | 2 + - boilerplate/cairo-boilerplate-drm.c | 2 + - boilerplate/cairo-boilerplate-gl.c | 2 + - boilerplate/cairo-boilerplate-glitz-agl.c | 2 + - boilerplate/cairo-boilerplate-glitz-glx.c | 2 + - boilerplate/cairo-boilerplate-glitz-wgl.c | 2 + - boilerplate/cairo-boilerplate-pdf.c | 2 + - boilerplate/cairo-boilerplate-ps.c | 4 +++ - boilerplate/cairo-boilerplate-quartz.c | 2 + - boilerplate/cairo-boilerplate-script.c | 1 + - boilerplate/cairo-boilerplate-skia.c | 2 + - boilerplate/cairo-boilerplate-svg.c | 4 +++ - boilerplate/cairo-boilerplate-test-surfaces.c | 8 ++++++ - boilerplate/cairo-boilerplate-vg.c | 4 +++ - boilerplate/cairo-boilerplate-win32-printing.c | 2 + - boilerplate/cairo-boilerplate-win32.c | 2 + - boilerplate/cairo-boilerplate-xcb.c | 1 + - boilerplate/cairo-boilerplate-xlib.c | 4 +++ - boilerplate/cairo-boilerplate.c | 29 +++++++++++++++++++++-- - boilerplate/cairo-boilerplate.h | 1 + - configure.ac | 7 +++++ - 22 files changed, 85 insertions(+), 3 deletions(-) - -commit 7447915381fc64bd0c66f7110c1dd0b8a10d73f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 22:20:35 2009 +0100 - - [script] Conditionalise the build - - Allow the interpreter to be disabled if we can not satisfy its dependencies. - - configure.ac | 2 ++ - util/Makefile.am | 11 +++++++++-- - util/cairo-script/Makefile.am | 2 +- - 3 files changed, 12 insertions(+), 3 deletions(-) - -commit fcda9fc2f29c2ee7d0bb45c17a2261badfdf430c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 18:48:33 2009 +0100 - - [scaled-font] Remove assert from cairo_scled_font_create() - - The assert() is only correct for the normal paths, but failed on the error - path. It has been run for long enough for me to be confident that the code - is self-consistent, so I think I can now safely remove it. - - src/cairo-scaled-font.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 93cfa7376fb505e676d113e8ef431bab9b497f56 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 18:45:54 2009 +0100 - - [win32] Use the system scaled_font_done - - Pointless as both functions are empty, but lets be pedantically correct - nevertheless. - - src/cairo-win32-font.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 8654a4b35c060ab06860c124a643be912060c4a1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 18:16:20 2009 +0100 - - [win32] Initialize clip_region - - Eek, I attempted to destroy an uninitialised region on the first use - of a clip. - - src/cairo-win32-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 9b33a2e1c794996cbe4cb0a5c773d50566d46bd4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 17:40:12 2009 +0100 - - [win32] Compiler warnings - - Innocuous warnings about the use of mismatching explicit casts (I'm really - not convinced by the merits of this particular compiler warning, but it - does cleanse the code slightly.) - - src/cairo-win32-printing-surface.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit d1740d8782d90edb5b5e20dc5bcadb7a9eeeb4cc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 20 21:11:11 2009 +0100 - - [pattern] Ensure that no repeated pattern is clipped - - Previously the pattern_acquire_surface routine only had to worry about - handling extend modes NONE or REPEAT and so the test for ! REPEAT - sufficed when what was actually intended was a test for NONE. - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 958f7ab1238b8242975d3ea774c26d23e090e70c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 19 12:35:00 2009 +0100 - - [script] Support running on cairo-1.8 - - Pre 1.9 the application had to pass a resolved font to cairo -- so do so - in the interpreter if the cairo version is less than 1.9 - - util/cairo-script/cairo-script-operators.c | 18 +++++++++++++++--- - 1 files changed, 15 insertions(+), 3 deletions(-) - -commit 87175334a574fa0f69679b1a0baeeb881eaa439b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 21 15:51:12 2009 +0100 - - [gl] Use spans for trapezois. - - Always use spans, even for unaligned boxes. In the future (given a new - interface) we may want to emit the common unaligned box code more - efficient than a per-scanline computation -- but for now simply avoid the - requirements to write a temporary CPU buffer. - - src/cairo-gl-surface.c | 22 ++++++++++++++++++---- - src/cairo-image-surface.c | 4 +--- - src/cairo-surface-fallback.c | 10 ++-------- - src/cairo-surface.c | 27 ++++++++++----------------- - src/cairo-win32-surface.c | 4 +--- - src/cairoint.h | 18 ++++++++++++++---- - 6 files changed, 46 insertions(+), 39 deletions(-) - -commit e65dfacab5d123913a4b2f59967f27c0b0af0692 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 21 15:50:24 2009 +0100 - - [gl] Simplify acquire_dest_image() - - Remove redundant code: the intersection of surface extents and the copy to - a temporary buffer. - - src/cairo-gl-surface.c | 53 ++++++++++------------------------------------- - 1 files changed, 12 insertions(+), 41 deletions(-) - -commit 5a13396373180ceae31287441ef9c838c771849d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 21 15:48:38 2009 +0100 - - [gl] Use common ARRAY_LENGTH macro - - Forgo the local ARRAY_SIZE macro where the common one will suffice. - - src/cairo-gl-surface.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit efdb53425ee71b3bce6c92ce212f5baf3e2a43d7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 21 11:58:31 2009 +0100 - - [qt] Discard impossible status return from path construction - - As we never return an error status during the path construction, we can - use the return value for the QPainterPath instead, greatly simplifying the - callers. - - src/cairo-qt-surface.cpp | 105 ++++++++++++++++++--------------------------- - 1 files changed, 42 insertions(+), 63 deletions(-) - -commit f2cde41cabaa0c190ef965f634cf2c73b6ba2334 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 21 10:29:39 2009 +0100 - - [cairoint.h] Add missing cairo_private to debug prototypes. - - src/cairoint.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b6d96bba8a4e9efe1033dd7fc875aba9bd8d0dc8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 20 20:31:49 2009 +0100 - - [win32] Trust the clipping code to trim roi to our surface - - The higher level code ensures that the region of interest is trimmed to - our declared surface extents, so performing the intersection again is - redundant. Furthermore with the change in the clipping code, the - fallback region is no longer clipped, especially as the clip that is - currently set upon the DC is likely to be stale and incorrect for the - fallback. - - Hopefully this resolves the assertion failure reported by Damian Frank, - http://lists.cairographics.org/archives/cairo/2009-August/018015.html - - CC: Damian Frank <damian.frank@gmail.com> - - src/cairo-win32-surface.c | 53 +++++++------------------------------------- - 1 files changed, 9 insertions(+), 44 deletions(-) - -commit d7faec024ac9f702c9bb305599ef8960a972491a -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Mon Jun 15 11:15:22 2009 +0100 - - Add skia backend - - Originally written by Vladimir Vukicevic to investigate using Skia for - Mozilla, it provides a nice integration with a rather interesting code - base. By hooking Skia underneath Cairo it allows us to directly compare - code paths... which is interesting. - - [updated by Chris Wilson] - - boilerplate/Makefile.sources | 1 + - boilerplate/Makefile.win32.features | 10 + - boilerplate/cairo-boilerplate-skia.c | 50 ++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 + - build/configure.ac.features | 1 + - configure.ac | 13 + - perf/cairo-perf-trace.c | 3 + - perf/cairo-perf.c | 3 + - src/Makefile.sources | 3 + - src/Makefile.win32.features | 14 + - src/cairo-skia-surface.cpp | 1174 ++++++++++++++++++++++++++++++++++ - src/cairo-skia.h | 84 +++ - src/cairo.h | 4 +- - 14 files changed, 1363 insertions(+), 1 deletions(-) - -commit af6df4af51ad75a956e3b73542647206ab534bd2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 20 12:54:12 2009 +0100 - - [configure] Choose a better name for the 'temporary' egl iterator - - The problem is that it remains referenced by egl_NONPKGCONFIG_LIBS and so - must not be subsequently overwritten, so give it an egl_ prefix. - - configure.ac | 12 ++++++++++-- - 1 files changed, 10 insertions(+), 2 deletions(-) - -commit 83c2f44dd954cb491d72834d0362d6d801ef7651 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 20 12:16:55 2009 +0100 - - [test] Update REFERENCE_IMAGES - - test/Makefile.am | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit f99e1841448e98be6161be57551153a6d9e28a13 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 20 12:11:51 2009 +0100 - - [build] Remove -Wcast-align - - Use -Wcast-align simply generates too much noise due to false-positive - reports when casting pixels to uint32_t. - - build/configure.ac.warnings | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 5fdf5b311e06e49843e924523e9bc91ba14da3bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 19 08:35:01 2009 +0100 - - [fallback] Reduce paint + clipmask to fill - - Under simple, yet common, conditions using a bounded operator and painting - with a single complex clip we can reduce the strength of that operation to - a fill. In effect this removes the need for a temporary mask for some - backends (GL, drm, xlib). - - src/cairo-surface-fallback.c | 26 +++++++++++++++++--------- - 1 files changed, 17 insertions(+), 9 deletions(-) - -commit 425b0e35e2d7d44d99e22169b98fc3ca05763650 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 18 14:25:25 2009 +0100 - - Add xml surface - - A very simple surface that produces a hierarchical DAG in a simple XML - format. It is intended to be used whilst debugging, for example with the - automatic regression finding tools of cairo-sphinx, and with test suites - that just want to verify that their code made a particular Cairo call. - - boilerplate/Makefile.win32.features | 10 + - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 + - build/configure.ac.features | 1 + - configure.ac | 4 + - src/Makefile.sources | 18 +- - src/Makefile.win32.features | 14 + - src/cairo-base64-stream.c | 143 ++++ - src/cairo-base85-stream.c | 3 - - src/cairo-output-stream-private.h | 4 + - src/cairo-ps-surface.c | 4 + - src/cairo-script-surface.c | 18 +- - src/cairo-xml-surface.c | 1153 ++++++++++++++++++++++++++++++ - src/cairo-xml.h | 72 ++ - src/cairo.h | 4 +- - util/Makefile.am | 11 +- - util/cairo-script/cairo-script-scanner.c | 113 +++ - util/trace-to-xml.c | 77 ++ - util/xml-to-trace.c | 263 +++++++ - 19 files changed, 1902 insertions(+), 14 deletions(-) - -commit 6e0b3be903a6c3ad948de95f490cff92430429a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 18 10:55:54 2009 +0100 - - Add cairo-sphinx utility for regression analysis - - sphinx is an alternate version of the current cairo-test-trace. It's - purpose is to replay a live application (which may just be a replay of a - trace) against a backend and its reference. The improvement over the - original cairo-test-trace is that the reference backend may be from an - older version of cairo. - - configure.ac | 6 + - util/Makefile.am | 6 + - util/cairo-sphinx/.gitignore | 1 + - util/cairo-sphinx/Makefile.am | 40 ++ - util/cairo-sphinx/fdr.c | 260 +++++++ - util/cairo-sphinx/sphinx.c | 1525 +++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 1838 insertions(+), 0 deletions(-) - -commit c980affce05590f5f52273ba340463f00773c776 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 18 10:54:26 2009 +0100 - - [script] Apply device offset when replaying meta surface - - As we set the size of the surface to fit the ink extents of the meta - surface, we also need to ensure that the origin of the script lies at the - origin of the ink extents. - - src/cairo-script-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit eb33f842dc9a2555ba8f7948f49a8335db951959 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 17 11:38:52 2009 +0100 - - [meta] Missing status check - - We need to check the status on the created image before use. - - src/cairo-meta-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ce6a2cc5d2cb8a299759d764de2e7d2b6b655cb4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 17 10:31:47 2009 +0100 - - [wrapper] Always copy clip - - We always need to make a local copy of the clip as the backends are free - to modify it as they process the operation. - - src/cairo-surface-wrapper.c | 60 +++++++++++++++++++++++++++++++----------- - 1 files changed, 44 insertions(+), 16 deletions(-) - -commit 6ff711b6305a9cf65e584d92258a6fa4e78c31ef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 17 10:11:32 2009 +0100 - - [matrix] Improve bbox finding for translation matrix - - If the matrix is a pure translation matrix than we can skip determination - of the extents and just translate the input bbox. - - src/cairo-matrix.c | 56 ++++++++++++++++++++++++++------------------------- - 1 files changed, 29 insertions(+), 27 deletions(-) - -commit cd7b27ff5c01a533c2c065c4b455ad19df2be3bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 21:08:22 2009 +0100 - - Add 'flight-data-recorder' utility. - - This is a simple variation on cairo-trace that wraps records the last 16 - contexts by wrapping the target surface inside a tee surface, along with a - meta/recording surface. Then on receipt of a SIGUSR1, those last 16 - contexts are played via a script-surface into /tmp/fdr.trace. - - Mostly proof-of-concept, it seems to be causing a number of rendering - glitches whilst testing with firefox -- otherwise, it seems to works. - - configure.ac | 1 + - src/cairo-scaled-font-private.h | 3 + - src/cairo-scaled-font.c | 16 ++ - src/cairo-script-surface.c | 58 +++++++- - src/cairo-script.h | 4 + - src/cairo.h | 4 + - util/Makefile.am | 3 + - util/cairo-fdr/Makefile.am | 13 ++ - util/cairo-fdr/fdr.c | 304 +++++++++++++++++++++++++++++++++++++++ - 9 files changed, 400 insertions(+), 6 deletions(-) - -commit 658cdc7c9aac23f82f3ea5db8df10844aeb3ac75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 18:04:54 2009 +0100 - - Introduce cairo_tee_surface_t - - Add a new surface type that multiplies it input onto several output - surfaces. The only limitation is that it requires a master surface that is - used whenever we need to query surface options, such as font options and - extents. - - boilerplate/Makefile.win32.features | 8 + - build/Makefile.win32.features-h | 1 + - build/configure.ac.features | 1 + - configure.ac | 1 + - src/Makefile.sources | 6 +- - src/Makefile.win32.features | 8 + - src/cairo-surface-wrapper-private.h | 4 + - src/cairo-surface-wrapper.c | 7 + - src/cairo-surface.c | 11 + - src/cairo-tee-surface-private.h | 47 +++ - src/cairo-tee-surface.c | 558 +++++++++++++++++++++++++++++++++++ - src/cairo.h | 13 +- - 12 files changed, 662 insertions(+), 3 deletions(-) - -commit 4ae7186719b25f052b875549cc5377e16a557512 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 17:07:00 2009 +0100 - - [script] Correct emission of get_target() for a popped context - - If the context is no longer on the operand stack, then we need to recall - the surface via a definition. - - src/cairo-script-surface.c | 53 ++++++++++++++++++++++++++----------------- - 1 files changed, 32 insertions(+), 21 deletions(-) - -commit 8d1bf830c0137eac837091bda92a636c0fcb0456 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 14:20:35 2009 +0100 - - Fix errors found by clang - - Shadowed variables, unused writes and some dead code. - - src/cairo-pdf-surface.c | 2 -- - src/cairo-xlib-surface.c | 5 ++--- - util/cairo-script/cairo-script-file.c | 10 +++------- - util/cairo-script/cairo-script-operators.c | 23 ++++++++++++++++------- - util/cairo-trace/trace.c | 14 ++++++++------ - 5 files changed, 29 insertions(+), 25 deletions(-) - -commit d8dbce021a4493330864154e67ca6e4a1f2f50b2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 13:26:59 2009 +0100 - - [script] recursive active (type3 glyphs) - - The assumption that an active surface could not recurse into another - operation was invalid - due to the complexity of handling type3 glyphs. - - src/cairo-script-surface.c | 11 +++++------ - 1 files changed, 5 insertions(+), 6 deletions(-) - -commit eba6b5126a55c84706e677b3fc88743f64cc28d7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 12:47:14 2009 +0100 - - [build] Add options for warning about bad casts - - -Wbad-function-cast in particular. Triggers quite a few warnings where we - have explicitly cast to an integer. - - build/configure.ac.warnings | 9 +- - src/cairo-arc.c | 2 +- - src/cairo-pdf-surface.c | 8 +- - src/cairo-ps-surface.c | 20 ++-- - src/cairo-svg-surface.c | 4 +- - util/cairo-script/cairo-script-objects.c | 4 +- - util/cairo-script/cairo-script-operators.c | 172 +++++++++++++++++++--------- - util/cairo-script/cairo-script-private.h | 6 +- - 8 files changed, 143 insertions(+), 82 deletions(-) - -commit 33ef32af4e7adce41f035ee378279c19577469b0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 12:46:20 2009 +0100 - - [clip] Use the rectangular tessellator to extract boxes - - src/cairo-clip.c | 17 ++++++++++------- - src/cairo-path-fill.c | 29 ++++++++++++++++++++++------- - src/cairo-surface-fallback.c | 8 ++++---- - 3 files changed, 36 insertions(+), 18 deletions(-) - -commit ab035ab2c7bec254fc94d6391398905b5039e777 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 10:06:04 2009 +0100 - - [tessellate] Rectangular special case - - Add an even simpler sweep-line tessellator for rectangular trapezoids (as - produced by the rectilinear stoker and box filler). - - This is so simple it even outperforms pixman's region validation code for the - purposes of path-to-region conversion. - - src/Makefile.sources | 1 + - src/cairo-bentley-ottmann-rectangular.c | 733 +++++++++++++++++++++++++++++++ - src/cairo-clip.c | 26 +- - src/cairo-path-fill.c | 40 +-- - src/cairo-path-stroke.c | 3 +- - src/cairo-surface-fallback.c | 95 ++++- - src/cairo-traps.c | 28 +- - src/cairoint.h | 5 + - 8 files changed, 883 insertions(+), 48 deletions(-) - -commit d7b0c3b784faba756b10b66b9757e6e4c3fce38c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 22:03:06 2009 +0100 - - [script] Track scaled-font - - Instead of emitting the (font-face, matrix and options) elements when - setting up the desired font on the matrix, simply restore the scaled-font. - - src/cairo-script-surface.c | 39 ++++++++++++++++++++++----------------- - 1 files changed, 22 insertions(+), 17 deletions(-) - -commit 7306305cc898c9f27957c6c6717028cbdcff6a5a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 21:59:12 2009 +0100 - - [script] Emit surface content - - Include the desired content with the creation info. - - boilerplate/cairo-boilerplate-script.c | 2 +- - src/cairo-script-surface.c | 34 +++++++++++++++++++------------ - src/cairo-script.h | 1 + - util/cairo-trace/trace.c | 5 +++- - 4 files changed, 27 insertions(+), 15 deletions(-) - -commit 052211b072788f0977dccebdcf681d4874f2487a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 20:16:51 2009 +0100 - - [script] Garbage collect contexts on context switch - - Previously the contexts were permanently associated with the surface and - only destroyed along with the final reference to the surface. This meant - that we kept a large number of unwanted contexts in memory. Most - applications only have a few contexts active at any time, so remove - inactive contexts from the operand stack every time we perform an - operation on a different context. - - src/cairo-script-surface.c | 262 +++++++++++++++++++++++++++++++------------- - 1 files changed, 184 insertions(+), 78 deletions(-) - -commit 8f8b91d9049433c9210e0b3aad574cf659862ae0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 18:37:01 2009 +0100 - - [script] Wrap snapshot. - - Use the snapshot of our target surface if available. - - src/cairo-script-surface.c | 20 ++++++++++++++++---- - src/cairo-surface-wrapper-private.h | 3 +++ - src/cairo-surface-wrapper.c | 6 ++++++ - 3 files changed, 25 insertions(+), 4 deletions(-) - -commit fee647c98506eedad0fea667a9442786cb0804b7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 18:35:48 2009 +0100 - - [script] Read from a FILE stream - - For ease of implementing the interpreter inside a pipeline, add a method - to execute a FILE *. - - util/cairo-script/cairo-script-interpreter.c | 22 ++++++++++++++++++++++ - util/cairo-script/cairo-script-interpreter.h | 4 ++++ - 2 files changed, 26 insertions(+), 0 deletions(-) - -commit a9d997fecd54cea7dcd71487a24dbae14d0073a8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 17:21:05 2009 +0100 - - [script] Introduce cairo_script_context_t - - cairo_script_context_t is an encapsulation object for interfacing with the - output - multiple surfaces can share the same context, meaning that they - write to the same destination file/stream. - - boilerplate/cairo-boilerplate-script.c | 5 +- - boilerplate/cairo-boilerplate.c | 26 +--- - src/cairo-script-surface.c | 225 ++++++++++++++------------------ - src/cairo-script.h | 47 ++++--- - test/cairo-test-trace.c | 5 +- - util/cairo-script/csi-trace.c | 13 +- - util/cairo-trace/trace.c | 20 +-- - 7 files changed, 145 insertions(+), 196 deletions(-) - -commit 28887ac272c8a36a41da4d6d58044164b94da6f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 16:38:08 2009 +0100 - - [trace] Fix emission of similar (track operands) - - util/cairo-trace/trace.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit dbd9438f5d01666ea118254427c0dc66a519ec3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 15:57:30 2009 +0100 - - [stroke] Only mark traps as having intersection if non-empty. - - We were hitting an assertion attempting to eliminate intersections inside - the rectilinear tessellator for empty strokes. We can avoid this - assertion, by only marking the traps as having potential intersections iff - it is non-empty. - - src/cairo-path-stroke.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 60d73da9f2e148e982254c78773f0b925be184ff -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 24 08:04:12 2009 +0100 - - [clip] Cache intermediate clip masks. - - As we now superimpose a per-operation clip, this defeats the current - top-level caching mechanism. Instead we need to cache the mask for - each path. This still seems quite wasteful, and an avenue would be to - avoid caching if the path is rectilinear and reduce the number of - required composite operations. (However, first find test case...) - - src/cairo-clip.c | 165 +++++++++++++++++++++++++++++++++--------------------- - src/cairoint.h | 3 + - 2 files changed, 104 insertions(+), 64 deletions(-) - -commit 50c7d637f3a97031c5f4e2bc8d41d17e5397db45 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 15:49:11 2009 +0100 - - [trace] Emit an 'index' for an undefined surface - - Larry Ewing hit a bug in cairo-trace whereby it tried to create a similar - surface referencing an undefined object. This fix checks whether the - object has yet to be defined, and if not issues an index in order to copy - the appropriate operand from the stack. - - util/cairo-trace/trace.c | 21 ++++++++++----------- - 1 files changed, 10 insertions(+), 11 deletions(-) - -commit 3a483c2896c28142a90bd0e282af3862e066adfe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 00:19:03 2009 +0100 - - [gstate] Convert simple mask() into a paint() - - As using mask() prevents various optimisations in the backends (for - example the use of geometric clips) and for some may trigger fallbacks, - perform the simplifications usually done (too late) by the pattern layer - in the generic gstate layer. This allows us on the odd occasion to - transform a mask() into a paint() but perhaps more importantly removes the - need for identical transformations in each backend. - - src/cairo-gstate.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++---- - src/cairoint.h | 9 +++-- - 2 files changed, 98 insertions(+), 12 deletions(-) - -commit e2c31183e96f84e7d40a9e5e2b6b8802d47628d0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 23:45:30 2009 +0100 - - [script] Handle zero-length strings - - Not sure where the zero length string is coming from, but we should - nevertheless handle it. - - util/cairo-script/cairo-script-scanner.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 4c215162d24453788b3a461aa47ccf2e638db35e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 23:40:54 2009 +0100 - - [script] Off-by-one in allocation of string length. - - We need pass in the real number of bytes in the string, excluding the NUL - terminator which is already accounted for. - - util/cairo-script/cairo-script-scanner.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 55eddb7ef4b6b561d6692a6f074834d5d5fb94fa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 23:40:04 2009 +0100 - - [script] A little utility to convert a trace into a trace - - Replay the trace using the interpreter onto a script surface - useful for - checking idempotency. - - util/cairo-script/Makefile.am | 6 ++++++ - util/cairo-script/csi-trace.c | 40 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 46 insertions(+), 0 deletions(-) - -commit 4f129863df6392f3deaf6e76fd15adeba98e41b8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 23:38:42 2009 +0100 - - [script] Store the current stroke matrix - - We can skip re-emitting stroke parameters if the values are unchanged and - the scaling matrix is unaltered. - - src/cairo-script-surface.c | 46 +++++++++++++++++++++++++++++++++++-------- - 1 files changed, 37 insertions(+), 9 deletions(-) - -commit 858211f3944507362b2a18d56a65e9a478ccd305 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 22:43:31 2009 +0100 - - [script] Suppress resetting stroke-style elements after matrix switch - - If the user is just using the default values, there is no point re-emitting - them. - - src/cairo-script-surface.c | 42 ++++++++++++++++++++++++++---------------- - 1 files changed, 26 insertions(+), 16 deletions(-) - -commit b6db3053dcde99e26471fdeaedcadd4a6f93b5ef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 22:30:58 2009 +0100 - - [script] Hide the implicit CLEAR for similar surfaces - - Do emit the clear that is performed by the surface layer on similar - surfaces. - - src/cairo-script-surface.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 43 insertions(+), 0 deletions(-) - -commit 005b195f062d896d76a87d608ce313b169f99201 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 22:07:12 2009 +0100 - - [pattern] Ignore matrix/filter/extend when comparing solids - - Solid patterns do not use their matrices, filter or extend properties so - ignore them for the purposes of comparing and hashing. - - src/cairo-pattern.c | 25 ++++++++++++++++--------- - 1 files changed, 16 insertions(+), 9 deletions(-) - -commit bb919584c0054bb3e3c547f65c91cfe48302ac86 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 21:40:37 2009 +0100 - - [script] Use a compact representation for horizontal offsets between glyphs - - Kerning is quite frequent, that is to apply a horizontal but no vertical - offset to a glyph. For instance by discarding the vertical coordinate - where it remains the same and only encoding the horizontal offset we - reduce the file size by ~12.5% when tracing poppler. - - src/cairo-script-surface.c | 56 +++++++++++++++++++-------- - util/cairo-script/cairo-script-operators.c | 22 ++++++++--- - 2 files changed, 55 insertions(+), 23 deletions(-) - -commit cbee97f0e3e784b4482429790fc3f42c81908557 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 21:26:11 2009 +0100 - - [script] Preserve '{}' whilst translating - - util/cairo-script/cairo-script-private.h | 1 + - util/cairo-script/cairo-script-scanner.c | 67 ++++++++++++++++-------------- - 2 files changed, 37 insertions(+), 31 deletions(-) - -commit 24b23200025166e8343425f77a53bedd08790367 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 21:12:59 2009 +0100 - - [script] Fix list handling during font destruction - - Use cairo_list to unhook the font correctly during the fini callback. - - src/cairo-script-surface.c | 33 +++++++++++++-------------------- - 1 files changed, 13 insertions(+), 20 deletions(-) - -commit 4032438625819cfa5d1928d653f404364529a2e1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 17:02:41 2009 +0100 - - [path] Eliminate redundant line-to before a close - - As the close implicitly issues a line-to to the initial point, remove an - identical line-to if present. - - src/cairo-path-fixed.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit 111f2be71b1e51fac551fd9214d13899a8ec7909 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 17:01:50 2009 +0100 - - [path] Discard redundant line-to - - Eliminate repeated line-to to the current point. - - src/cairo-path-fixed.c | 49 +++++++++++++++++++++++++++-------------------- - 1 files changed, 28 insertions(+), 21 deletions(-) - -commit a2d5f59e2158651ac85dcc8a2b8f49cd2861044e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 17:01:07 2009 +0100 - - [debug] Path printer - - src/cairo-debug.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 3 ++ - 2 files changed, 70 insertions(+), 0 deletions(-) - -commit 4bf96bad9697cbe67907df69d40f46d8d7f24325 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 15:37:35 2009 +0100 - - [fill] Use trivial rectilinear_to_traps - - Avoid a small amount of unnecessary overhead by performing a simple - conversion of the path to traps when it consists solely of simple boxes. - - src/cairo-path-fill.c | 74 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo-surface-fallback.c | 14 ++++++++ - src/cairoint.h | 5 +++ - 3 files changed, 93 insertions(+), 0 deletions(-) - -commit 30e5fa0ce06b2572f09f3d47ee10b692f18ba0ae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 15:36:11 2009 +0100 - - [polygon] Return status from path ops - - This tidies the common case which was to call, for example, - _cairo_polygon_line_to(); _cairo_polygon_status(); - - src/cairo-path-fill.c | 26 ++++---------------------- - src/cairo-polygon.c | 18 ++++++++++++------ - src/cairoint.h | 6 +++--- - 3 files changed, 19 insertions(+), 31 deletions(-) - -commit 3fcac1ef21de9526bc1abca902db5755abe463ae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 13:43:32 2009 +0100 - - [slope] Inline _cairo_slope_init() - - Move the definition to a separate header file and allow callers to inline - the simple function. - - src/Makefile.sources | 1 + - src/cairo-hull.c | 2 + - src/cairo-path-fixed.c | 1 + - src/cairo-path-stroke.c | 2 + - src/cairo-pen.c | 2 + - src/cairo-polygon.c | 2 + - src/cairo-slope-private.h | 65 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-slope.c | 9 +----- - src/cairo-spline.c | 2 + - src/cairo-traps.c | 1 + - src/cairoint.h | 17 ------------ - 11 files changed, 79 insertions(+), 25 deletions(-) - -commit a1e0c4b30980d624bb3e015b7dcf39b4a2ef8c56 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 11 13:34:29 2009 +0100 - - [clip] Combine directly onto target - - Where it is unlikely that we will reuse the temporary clip surface, - combine the clip directly with the mask. - - src/cairo-clip-private.h | 3 + - src/cairo-clip.c | 118 +++++++++++++++++++++++++++++++++++++++--- - src/cairo-surface-fallback.c | 26 +--------- - 3 files changed, 115 insertions(+), 32 deletions(-) - -commit 3f12d9ec5db1ac372742c3c03408bdaeaffdc1e4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 28 10:05:52 2009 +0100 - - [clip] Use geometric clipping for unaligned clips - - For the simple cases where the clip is an unaligned box (or boxes), apply - the clip directly to the geometry and avoid having to use an intermediate - clip-mask. - - src/cairo-bentley-ottmann.c | 285 +++--------------------------------- - src/cairo-clip-private.h | 5 + - src/cairo-clip.c | 296 ++++++++++++++++++++++++++++++++++++- - src/cairo-gstate.c | 15 +- - src/cairo-path-fill.c | 8 +- - src/cairo-path-stroke.c | 22 ++-- - src/cairo-polygon.c | 329 +++++++++++++++++++++++------------------- - src/cairo-rectangle.c | 23 +++ - src/cairo-surface-fallback.c | 267 ++++++++++++++++++---------------- - src/cairo-traps.c | 210 +++++++++++++++------------ - src/cairo-types-private.h | 4 +- - src/cairoint.h | 28 +++- - 12 files changed, 830 insertions(+), 662 deletions(-) - -commit 2457c4bedef0447f7bff9b54dba96126010917ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 14:48:03 2009 +0100 - - traps-as-spans - - Add an interface to spans that accepts trapezoids. This allows backends - that have an efficient span-line interface but lack efficient handling - of boxes (partly due to the current poor compositor interface) to - redirect composite_trapezoids() to composite_polygon() and the - span-renderer. - - src/cairo-spans-private.h | 19 +++++++++ - src/cairo-spans.c | 82 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-tor-scan-converter.c | 27 +++++++++++++- - 3 files changed, 127 insertions(+), 1 deletions(-) - -commit 3023330706b1237b0fbd697d015cad9a23c250b7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 10:57:41 2009 +0100 - - [fill] Early check for empty path/polygon - - src/cairo-path-fill.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 9ba37a85d2f6c033d68eb547be6c63382164519e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 10:57:01 2009 +0100 - - [gstate] Discard trivial all-clipped regions - - Avoid assertion failures later that we have a valid region. - - src/cairo-gstate.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 85094c4eee4e50ec724bf1bb54ecff6f7c1014bf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 24 07:06:32 2009 +0100 - - [clip] Eliminate redundant clips - - First perform a simple geometric clip to catch the majority of cases where - an unaligned clip has been set outside the operation extents that can be - discarded without having to use an image surface. - - This causes a dramatic increase of over 13x for the poppler-bug-12266 - trace and little impact elsewhere for more sensible clippers. - - src/cairo-clip-private.h | 8 ++- - src/cairo-clip.c | 187 ++++++++++++++++++++++++++++++++++-------- - src/cairo-gstate.c | 106 +++++++++++++++--------- - src/cairo-path-fill.c | 3 + - src/cairo-surface-fallback.c | 111 ++++++++++++++++++------- - 5 files changed, 309 insertions(+), 106 deletions(-) - -commit ff0ca6d02a2e8901e9cfca31326c3fdc16e77e2f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 5 17:54:48 2009 +0100 - - [test] Stress the intersection handling by feeding spans/traps random curves - - Another stress test for the fill/stroke and intersection finders. - - test/Makefile.am | 10 +++ - test/Makefile.sources | 2 + - test/random-intersections-curves-eo.c | 81 +++++++++++++++++++ - test/random-intersections-curves-eo.pdf.ref.png | Bin 0 -> 246507 bytes - test/random-intersections-curves-eo.ps.ref.png | Bin 0 -> 151676 bytes - test/random-intersections-curves-eo.ref.png | Bin 0 -> 246996 bytes - ...m-intersections-curves-eo.xlib-fallback.ref.png | Bin 0 -> 246243 bytes - test/random-intersections-curves-eo.xlib.ref.png | Bin 0 -> 246243 bytes - test/random-intersections-curves-nz.c | 82 ++++++++++++++++++++ - test/random-intersections-curves-nz.pdf.ref.png | Bin 0 -> 266977 bytes - test/random-intersections-curves-nz.ps.ref.png | Bin 0 -> 134732 bytes - test/random-intersections-curves-nz.ref.png | Bin 0 -> 267589 bytes - ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 0 -> 266364 bytes - test/random-intersections-curves-nz.xlib.ref.png | Bin 0 -> 266360 bytes - 14 files changed, 175 insertions(+), 0 deletions(-) - -commit 6dfe050d6360409161418d853df3d7d7dfb216af -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 4 15:32:25 2009 +0100 - - [polygon] Amalgamate collinear edges - - Combine sequential collinear edges into a single edge, this benefits - immensely by feeding fewer edges into either the tessellator or spans. - - src/cairo-polygon.c | 58 +++++++++++++++++++++++++++++++++++++++----- - src/cairo-types-private.h | 3 ++ - 2 files changed, 54 insertions(+), 7 deletions(-) - -commit dc886450ac7c04252cff77729e0653c6ea2768db -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 4 13:14:38 2009 +0100 - - [util] Show total edge length in show-edges - - util/show-edges.c | 54 ++++++++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 43 insertions(+), 11 deletions(-) - -commit 0f8af054841c2d6dfe4bfeb3d13a7bab0cfbe2f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 3 08:27:01 2009 +0100 - - [fallback] Avoid tessellating empty polygons - - I added an assert inside the tessellator to ensure that empty polygon were - not being propagated that far... - - src/cairo-surface-fallback.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 09377a716334df3683912747067cd396768cfab6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 2 13:09:30 2009 +0100 - - [freelist] Lazy initialisation of pools - - src/cairo-freelist-private.h | 31 +++++++++++++++-- - src/cairo-freelist.c | 75 +++++++++++++++-------------------------- - 2 files changed, 56 insertions(+), 50 deletions(-) - -commit 6f0340e2e5079eba597c0a3a7d39da21cf2b5e7a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 21:47:11 2009 +0100 - - [clip] Use the rectilinear tessellator - - We can ensure that we always produce a clip region when possible by using - the rectilinear tessellator to convert complex, device-aligned polygons to - regions. Prior to using the tessellator, we relied on pixman's region code - which could only handle a union of rectangles. - - src/cairo-clip.c | 9 +---- - src/cairo-path-fill.c | 79 +++++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 66 insertions(+), 22 deletions(-) - -commit e3820bef20fdd77ab804b9832f47dc286e4887c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 2 15:17:51 2009 +0100 - - [fill] Short-circuit extents on an empty path. - - If the path is empty, avoid redundant polygonisation and tessellation by - simply returning the empty extents. - - src/cairo-gstate.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 4051ed328b618e28cf1df276899eefa225225c76 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 25 20:51:06 2009 +0100 - - [tessellator] Special case rectilinear tessellation - - For the frequent cases where we know in advance that we are dealing with a - rectilinear path, but can not use the simple region code, implement a - variant of the Bentley-Ottmann tessellator. The advantages here are that - edge comparison is very simple (we only have vertical edges) and there are - no intersection, though possible overlaps. The idea is the same, maintain - a y-x sorted queue of start/stop events that demarcate traps and sweep - through the active edges at each event, looking for completed traps. - - The motivation for this was noticing a performance regression in - box-fill-outline with the self-intersection work: - - 1.9.2 to HEAD^: 3.66x slowdown - HEAD^ to HEAD: 5.38x speedup - 1.9.2 to HEAD: 1.57x speedup - - The cause of which was choosing to use spans instead of the region handling - code, as the complex polygon was no longer being tessellated. - - src/Makefile.sources | 1 + - src/cairo-bentley-ottmann-rectilinear.c | 582 ++++++++++++++++++++++++++++ - src/cairo-bentley-ottmann.c | 5 +- - src/cairo-combsort-private.h | 4 +- - src/cairo-path-fill.c | 100 +----- - src/cairo-path-stroke.c | 1 + - src/cairo-surface-fallback.c | 34 +- - src/cairo-traps.c | 2 + - src/cairoint.h | 18 +- - test/ft-text-vertical-layout-type1.ref.png | Bin 3647 -> 3644 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 3607 -> 3608 bytes - 11 files changed, 631 insertions(+), 116 deletions(-) - -commit 82ccb4c70cbf28167c280e590017b221a406b5c3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 18:47:29 2009 +0100 - - [clip] Use special-purpose fill_to_region() - - Avoid the creation of temporary traps when generating a region, by calling - the to_region() directly. - - src/cairo-clip.c | 26 +++++++++----------------- - 1 files changed, 9 insertions(+), 17 deletions(-) - -commit 41adeac9880d011278f083c620a42b849471a92f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 25 21:25:07 2009 +0100 - - [fallback] Avoid going through traps for trivial regions. - - src/cairo-path-fill.c | 129 +++++++++++++++++++++++++++++ - src/cairo-surface-fallback.c | 184 +++++++++++++++++++++++++++++++----------- - src/cairoint.h | 5 + - 3 files changed, 272 insertions(+), 46 deletions(-) - -commit 55bd590561880136c54da0db1f7f095a426d96a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 24 20:45:56 2009 +0100 - - [tessellator] Use a priority queue for the events - - The skip list was suffering from severe overhead, so though the search was - quick, the extra copies during insertion and deletion were slow. - - src/Makefile.am | 5 +- - src/Makefile.sources | 2 - - src/cairo-bentley-ottmann.c | 341 ++++++++++++++++++++++-------------- - src/cairo-freelist.c | 8 +- - src/cairo-skiplist-private.h | 118 ------------- - src/cairo-skiplist.c | 399 ------------------------------------------ - 6 files changed, 212 insertions(+), 661 deletions(-) - -commit ebfcc2ce8fb6fcaf28d1c59cf7a5b13168cbeb70 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 24 16:50:33 2009 +0100 - - [tessellator] Remove the skiplist for the active edges - - The active edge list is typically short, and the skiplist adds significant - overhead that far outweigh the benefit of the O(n lg n) sort. Instead we - track the position of the last insertion edge, knowing that the start - events are lexicographically sorted, and begin a linear search from there. - - src/cairo-bentley-ottmann.c | 230 ++++++++++++++----------------------------- - 1 files changed, 75 insertions(+), 155 deletions(-) - -commit 36480fe531f19d9c692ee1f8cf09accd4b2c0ad8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 25 07:38:04 2009 +0100 - - [traps] Increase exponential expansion factor. - - Grow the traps more rapidly, as the allocations are very short-lived so - the over-allocation is less of an issue. - - src/cairo-traps.c | 8 +++----- - src/cairoint.h | 8 +++----- - 2 files changed, 6 insertions(+), 10 deletions(-) - -commit 9d51c03bad5f10257e248f43375062902482c0c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 24 13:51:23 2009 +0100 - - [traps] Compute extents on demand. - - src/cairo-region-private.h | 5 - - src/cairo-region.c | 47 ++--- - src/cairo-surface-fallback.c | 10 - - src/cairo-traps.c | 440 ++++++++++++------------------------------ - src/cairoint.h | 9 - - 5 files changed, 144 insertions(+), 367 deletions(-) - -commit f8bb3617c3a7ec598c42eff1f8562e3ccc95127f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 09:32:16 2008 +0000 - - Eliminate self-intersecting strokes. - - We refactor the surface fallbacks to convert full strokes and fills to the - intermediate polygon representation (as opposed to before where we - returned the trapezoidal representation). This allow greater flexibility - to choose how then to rasterize the polygon. Where possible we use the - local spans rasteriser for its increased performance, but still have the - option to use the tessellator instead (for example, with the current - Render protocol which does not yet have a polygon image). - - In order to accommodate this, the spans interface is tweaked to accept - whole polygons instead of a path and the tessellator is tweaked for speed. - - Performance Impact - ================== - - ... - Still measuring, expecting some severe regressions. - ... - - NEWS | 18 + - src/Makefile.am | 2 + - src/cairo-bentley-ottmann.c | 1833 ++++++++++++--------- - src/cairo-clip.c | 14 +- - src/cairo-fixed-private.h | 52 +- - src/cairo-fixed-type-private.h | 5 + - src/cairo-gstate.c | 4 +- - src/cairo-hash.c | 6 - - src/cairo-matrix.c | 27 +- - src/cairo-path-fill.c | 109 +- - src/cairo-path-stroke.c | 1025 +++++++----- - src/cairo-pen.c | 191 --- - src/cairo-polygon.c | 269 +++- - src/cairo-skiplist-private.h | 4 +- - src/cairo-skiplist.c | 8 +- - src/cairo-slope.c | 4 +- - src/cairo-spans-private.h | 45 +- - src/cairo-spans.c | 179 +-- - src/cairo-surface-fallback.c | 208 ++- - src/cairo-tor-scan-converter.c | 492 +++--- - src/cairo-toy-font-face.c | 3 +- - src/cairo-traps.c | 72 +- - src/cairo-types-private.h | 15 +- - src/cairo-wideint-private.h | 47 +- - src/cairo-wideint.c | 34 - - src/cairoint.h | 102 +- - test/Makefile.am | 90 +- - test/Makefile.sources | 3 +- - test/caps-joins-alpha.ref.png | Bin 2463 -> 2570 bytes - test/caps-joins-alpha.xlib.ref.png | Bin 0 -> 2278 bytes - test/caps-joins-curve.ref.png | Bin 5132 -> 5725 bytes - test/caps-joins-curve.xlib.ref.png | Bin 0 -> 5126 bytes - test/clear.pdf.argb32.ref.png | Bin 0 -> 790 bytes - test/clear.ps.argb32.ref.png | Bin 0 -> 790 bytes - test/clip-operator.svg12.argb32.xfail.png | Bin 8406 -> 8404 bytes - test/clip-operator.svg12.rgb24.xfail.png | Bin 4540 -> 4523 bytes - test/clipped-group.pdf.ref.png | Bin 310 -> 334 bytes - test/clipped-trapezoids-ref.png | Bin 0 -> 1055 bytes - test/clipped-trapezoids.c | 95 ++ - test/clipped-trapezoids.ref.png | Bin 0 -> 963 bytes - test/close-path-current-point.ref.png | Bin 1916 -> 1893 bytes - test/dash-caps-joins.ref.png | Bin 4718 -> 4520 bytes - test/dash-curve.ref.png | Bin 39696 -> 41284 bytes - test/dash-curve.xlib.ref.png | Bin 0 -> 40109 bytes - test/dash-scale.ref.png | Bin 8058 -> 7616 bytes - test/degenerate-arc.ref.png | Bin 544 -> 646 bytes - test/degenerate-dash.ref.png | Bin 2005 -> 2086 bytes - test/degenerate-dash.xlib.ref.png | Bin 0 -> 1898 bytes - test/degenerate-path.argb32.ref.png | Bin 0 -> 240 bytes - test/degenerate-path.ref.png | Bin 257 -> 0 bytes - test/degenerate-path.rgb24.ref.png | Bin 224 -> 210 bytes - test/degenerate-pen.ref.png | Bin 1139 -> 997 bytes - test/degenerate-pen.xlib.ref.png | Bin 0 -> 997 bytes - test/device-offset-fractional.pdf.xfail.png | Bin 275 -> 275 bytes - test/fill-and-stroke-alpha-add.ref.png | Bin 591 -> 562 bytes - test/fill-and-stroke-alpha-add.svg12.xfail.png | Bin 614 -> 631 bytes - test/fill-and-stroke-alpha.ref.png | Bin 519 -> 515 bytes - test/fill-and-stroke.argb32.ref.png | Bin 0 -> 313 bytes - test/fill-and-stroke.ref.png | Bin 279 -> 0 bytes - test/fill-and-stroke.rgb24.ref.png | Bin 257 -> 287 bytes - test/fill-and-stroke.xlib.argb32.ref.png | Bin 0 -> 322 bytes - test/fill-and-stroke.xlib.rgb24.ref.png | Bin 0 -> 291 bytes - test/filter-nearest-offset.pdf.xfail.png | Bin 1867 -> 1926 bytes - test/filter-nearest-transformed.pdf.xfail.png | Bin 482 -> 488 bytes - test/ft-text-vertical-layout-type1.ps.ref.png | Bin 0 -> 1634 bytes - test/ft-text-vertical-layout-type1.ps2.ref.png | Bin 1846 -> 0 bytes - test/ft-text-vertical-layout-type1.ps3.ref.png | Bin 1846 -> 0 bytes - test/ft-text-vertical-layout-type1.ref.png | Bin 3643 -> 3647 bytes - test/ft-text-vertical-layout-type1.svg.ref.png | Bin 3607 -> 3609 bytes - test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3980 -> 3640 bytes - test/ft-text-vertical-layout-type3.ps.ref.png | Bin 0 -> 1636 bytes - test/ft-text-vertical-layout-type3.ps2.ref.png | Bin 1804 -> 0 bytes - test/ft-text-vertical-layout-type3.ps3.ref.png | Bin 1804 -> 0 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 3607 bytes - test/ft-text-vertical-layout-type3.svg.ref.png | Bin 3626 -> 3626 bytes - test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3934 -> 3605 bytes - test/group-unaligned.svg.argb32.xfail.png | Bin 520 -> 522 bytes - test/joins.ref.png | Bin 5879 -> 5708 bytes - test/leaky-dashed-rectangle.pdf.ref.png | Bin 347 -> 347 bytes - test/leaky-dashed-rectangle.xlib.ref.png | Bin 0 -> 347 bytes - test/leaky-dashed-stroke.ref.png | Bin 9214 -> 9387 bytes - test/leaky-dashed-stroke.xlib.ref.png | Bin 0 -> 9305 bytes - test/line-width-scale.ref.png | Bin 6445 -> 5716 bytes - test/long-dashed-lines.ref.png | Bin 2116 -> 2070 bytes - test/mask-glyphs.svg.ref.png | Bin 1211147 -> 1211158 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3919 -> 3835 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3867 -> 3682 bytes - test/meta-surface-pattern.svg.argb32.ref.png | Bin 3930 -> 3778 bytes - test/meta-surface-pattern.svg.rgb24.ref.png | Bin 3910 -> 3760 bytes - test/new-sub-path.argb32.ref.png | Bin 0 -> 421 bytes - test/new-sub-path.pdf.argb32.ref.png | Bin 0 -> 512 bytes - test/new-sub-path.ref.png | Bin 386 -> 0 bytes - test/new-sub-path.rgb24.ref.png | Bin 355 -> 381 bytes - test/operator-source.svg12.argb32.xfail.png | Bin 2967 -> 2951 bytes - test/operator-source.svg12.rgb24.xfail.png | Bin 2976 -> 2963 bytes - test/over-around-source.pdf.argb32.ref.png | Bin 585 -> 576 bytes - test/random-intersections-eo.c | 78 + - test/random-intersections-eo.ps.ref.png | Bin 0 -> 78806 bytes - test/random-intersections-eo.quartz.ref.png | Bin 0 -> 197778 bytes - test/random-intersections-eo.ref.png | Bin 0 -> 136018 bytes - test/random-intersections-eo.xlib.ref.png | Bin 0 -> 134655 bytes - test/random-intersections-nonzero.c | 79 + - test/random-intersections-nonzero.ps.ref.png | Bin 0 -> 77299 bytes - test/random-intersections-nonzero.ref.png | Bin 0 -> 141154 bytes - test/random-intersections-nonzero.xlib.ref.png | Bin 0 -> 141548 bytes - test/random-intersections.c | 78 - - test/random-intersections.ps2.ref.png | Bin 89253 -> 0 bytes - test/random-intersections.ps3.ref.png | Bin 89253 -> 0 bytes - test/random-intersections.quartz.ref.png | Bin 197778 -> 0 bytes - test/random-intersections.ref.png | Bin 133462 -> 0 bytes - test/random-intersections.xlib.ref.png | Bin 148722 -> 0 bytes - test/reflected-stroke.ref.png | Bin 5704 -> 4978 bytes - test/rel-path.ref.png | Bin 212 -> 198 bytes - test/rel-path.rgb24.ref.png | Bin 228 -> 214 bytes - test/scale-offset-image.meta.xfail.png | Bin 8599 -> 0 bytes - test/scale-offset-image.pdf.xfail.png | Bin 8694 -> 10099 bytes - test/scale-offset-image.xfail.png | Bin 8599 -> 9960 bytes - test/scale-offset-image.xlib-fallback.xfail.png | Bin 8580 -> 8706 bytes - test/scale-offset-image.xlib.xfail.png | Bin 9100 -> 9132 bytes - test/scale-offset-similar.meta.xfail.png | Bin 9095 -> 10752 bytes - test/scale-offset-similar.pdf.xfail.png | Bin 9368 -> 11024 bytes - test/scale-offset-similar.xfail.png | Bin 8599 -> 9960 bytes - test/scale-offset-similar.xlib-fallback.xfail.png | Bin 8580 -> 8706 bytes - test/scale-offset-similar.xlib.xfail.png | Bin 8570 -> 8696 bytes - test/self-intersecting.argb32.xfail.png | Bin 235 -> 0 bytes - test/self-intersecting.c | 3 + - test/self-intersecting.pdf.argb32.xfail.png | Bin 285 -> 0 bytes - test/self-intersecting.pdf.rgb24.xfail.png | Bin 269 -> 0 bytes - test/self-intersecting.ps.argb32.xfail.png | Bin 186 -> 0 bytes - test/self-intersecting.ps.ref.png | Bin 0 -> 186 bytes - test/self-intersecting.ps.rgb24.xfail.png | Bin 186 -> 0 bytes - test/self-intersecting.ref.png | Bin 242 -> 301 bytes - test/self-intersecting.rgb24.ref.png | Bin 304 -> 0 bytes - test/self-intersecting.rgb24.xfail.png | Bin 240 -> 0 bytes - test/self-intersecting.xlib.argb32.xfail.png | Bin 235 -> 0 bytes - test/self-intersecting.xlib.ref.png | Bin 0 -> 252 bytes - test/self-intersecting.xlib.rgb24.xfail.png | Bin 240 -> 0 bytes - test/smask-stroke.ref.png | Bin 1845 -> 1714 bytes - test/smask-stroke.xlib.ref.png | Bin 0 -> 1707 bytes - test/smask.ps.ref.png | Bin 0 -> 3430 bytes - test/smask.ps2.ref.png | Bin 3669 -> 0 bytes - test/smask.ps3.ref.png | Bin 3669 -> 0 bytes - test/smask.ref.png | Bin 3417 -> 3423 bytes - test/smask.svg.ref.png | Bin 3458 -> 3457 bytes - test/smask.xlib.ref.png | Bin 3393 -> 3386 bytes - test/spline-decomposition.pdf.ref.png | Bin 19156 -> 19540 bytes - test/spline-decomposition.ps.ref.png | Bin 9090 -> 9028 bytes - test/spline-decomposition.ref.png | Bin 19107 -> 19569 bytes - test/spline-decomposition.svg.ref.png | Bin 19156 -> 19540 bytes - test/spline-decomposition.xlib.ref.png | Bin 0 -> 19158 bytes - test/stroke-ctm-caps.ref.png | Bin 1057 -> 873 bytes - test/stroke-image.pdf.ref.png | Bin 1554 -> 1475 bytes - test/stroke-image.ps.ref.png | Bin 0 -> 1641 bytes - test/stroke-image.ps2.ref.png | Bin 2121 -> 0 bytes - test/stroke-image.ps3.ref.png | Bin 2121 -> 0 bytes - test/stroke-image.ref.png | Bin 1866 -> 1344 bytes - test/stroke-image.xlib.ref.png | Bin 0 -> 1440 bytes - test/surface-pattern.pdf.xfail.png | Bin 10528 -> 10532 bytes - test/text-rotate.pdf.ref.png | Bin 16639 -> 16757 bytes - test/text-rotate.ref.png | Bin 17775 -> 16738 bytes - test/text-rotate.svg.ref.png | Bin 17024 -> 17118 bytes - test/text-rotate.xlib.ref.png | Bin 0 -> 16646 bytes - test/twin.ps.ref.png | Bin 2197 -> 2142 bytes - test/twin.ref.png | Bin 4038 -> 3979 bytes - test/twin.xlib.ref.png | Bin 0 -> 4435 bytes - test/unantialiased-shapes.ref.png | Bin 4459 -> 3969 bytes - test/unbounded-operator.svg12.argb32.ref.png | Bin 0 -> 2767 bytes - test/unbounded-operator.svg12.argb32.xfail.png | Bin 2771 -> 0 bytes - test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1731 -> 1719 bytes - test/user-font-proxy.svg.ref.png | Bin 16814 -> 16817 bytes - test/user-font.ps.ref.png | Bin 0 -> 4605 bytes - test/user-font.ps2.ref.png | Bin 5043 -> 0 bytes - test/user-font.ps3.ref.png | Bin 5043 -> 0 bytes - test/user-font.ref.png | Bin 6082 -> 6270 bytes - test/user-font.xlib.ref.png | Bin 6183 -> 5884 bytes - util/.gitignore | 3 + - util/Makefile.am | 23 +- - util/show-edges.c | 1189 +++++++++++++ - util/show-events.c | 845 ++++++++++ - util/show-traps.c | 1239 ++++++++++++++ - 180 files changed, 6303 insertions(+), 2190 deletions(-) - -commit 7c499db8afe8a7cf8c512ec166fe7dbf11a25c02 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 25 20:37:55 2009 +0100 - - [test] Minor tweak of ft-text-vertical-layout - - Tidily destroy the font immediately after use. - - test/ft-text-vertical-layout-type1.c | 6 ++---- - test/ft-text-vertical-layout-type3.c | 5 ++--- - 2 files changed, 4 insertions(+), 7 deletions(-) - -commit bdd3c5ba6987280b455229dd12b20c22159ce61c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 18:59:01 2009 +0100 - - [perf] Match directory names - - In order to handle 'cairo-perf-trace benchmark', we need to perform the - can_run? test on the directory name as opposed to the individual trace - names. Make it so. - - perf/box-outline.c | 2 +- - perf/cairo-perf-trace.c | 37 ++++++++++++++++++++++++++++--------- - perf/cairo-perf.c | 14 +++++++++++--- - perf/cairo-perf.h | 3 ++- - perf/composite-checker.c | 2 +- - perf/dragon.c | 3 ++- - perf/fill.c | 2 +- - perf/glyphs.c | 2 +- - perf/intersections.c | 2 +- - perf/long-dashed-lines.c | 2 +- - perf/long-lines.c | 2 +- - perf/mask.c | 2 +- - perf/mosaic.c | 2 +- - perf/paint-with-alpha.c | 2 +- - perf/paint.c | 2 +- - perf/pattern_create_radial.c | 2 +- - perf/pythagoras-tree.c | 4 ++-- - perf/rectangles.c | 2 +- - perf/rounded-rectangles.c | 2 +- - perf/spiral.c | 2 +- - perf/stroke.c | 2 +- - perf/subimage_copy.c | 2 +- - perf/tessellate.c | 2 +- - perf/text.c | 2 +- - perf/twin.c | 2 +- - perf/unaligned-clip.c | 2 +- - perf/world-map.c | 2 +- - perf/zrusin.c | 2 +- - 28 files changed, 68 insertions(+), 39 deletions(-) - -commit 77c11096169bc8af6aa08241a800a51a2292a27a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 12:23:03 2009 +0100 - - [perf] Reset global caches after every trace - - I'd disabled this to look at cairo-qt performance, then forgot about it. - Be clean, cleanup globals -- this should fix the huge performance loss - when running in series multiple backends that need separate font caches. - - perf/cairo-perf-trace.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 9c8e60f7718b29051268541d2cfec58e51d8e7b8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 12:09:25 2009 +0100 - - [perf] Remove cpuset warning for cairo-perf-trace - - These traces run for much longer than the original synthetic benchmarks - and seek to replicate 'real-world' applications, so the warning that the - xserver and cairo-perf are not bound to any cpu is false. - - perf/cairo-perf-trace.c | 47 ----------------------------------------------- - 1 files changed, 0 insertions(+), 47 deletions(-) - -commit d07ed5d990634dc09d0d1b6ce45aa8ad1994b75a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 19 12:36:56 2009 +0100 - - [perf] Add charting utility - - cairo-perf-chart takes multiple runs (currently it is limited to - prefiltered data sets) and pretty-prints a chart showing performace - improvements/regressions (in either ASCII or HTML) along with a - cairo-perf-chart.png - - perf/Makefile.am | 4 + - perf/cairo-perf-chart.c | 751 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 755 insertions(+), 0 deletions(-) - -commit 015eccadcb8b22f302bdaa315b88981a38294686 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 16 09:57:07 2009 +0100 - - [perf] Fix unaligned-clip - - We failed to reset the scale after each loop, eventually generating a vast - clip-mask that exceeded memory capacity. - - perf/unaligned-clip.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 6f8fae21e6fee07a8f6561f77bcb0bfaf64f5882 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 15 10:16:41 2009 +0100 - - [perf] Add a box mode to spiral - - Add a very similar 'spiral' path (really just concentric boxes) that hit - the rectangular optimisations so that we can compare how effective they - are. - - perf/spiral.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 73 insertions(+), 0 deletions(-) - -commit e79a9a87c311fd0499c96cecbe560839a17d244e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 15 10:33:48 2009 +0100 - - [perf] Support objdir!=srcdir in cairo-perf-diff - - Crude support to detect when we have cairo-perf-diff-files in the local - directory which is not srcdir. - - perf/cairo-perf-diff | 26 ++++++++++++++++---------- - 1 files changed, 16 insertions(+), 10 deletions(-) - -commit 6bfb77a33c3614cafdcd6206de5c71321c5fc1e5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Aug 14 19:53:17 2009 +0100 - - [perf] Add spiral strokes - - Use cairo_stroke() to perform the equivalent of - spiral-rect-(pix|non)align-evenodd-fill. A useful comparison of stroking - versus filling, as we can assume the composition costs are similar. - - perf/spiral.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 73 insertions(+), 0 deletions(-) - -commit 54b2935c3842e77888faef06bbf247f99bd9de8c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 23:23:41 2009 +0100 - - [perf] Reset the path after each spiral - - Oops we were accumulating paths during each spiral iteration and so the - tests were getting slower and slower and slower... - - [And fix a couple of other instances of path accumulation.] - - perf/intersections.c | 2 ++ - perf/spiral.c | 1 + - perf/world-map.c | 2 ++ - 3 files changed, 5 insertions(+), 0 deletions(-) - -commit fddfe4973f5b49f280734ee7141ab72451cf94d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 13 15:52:06 2009 +0100 - - [perf] Add clipped modes to dragon - - Investigate the performance hit for unclipped/aligned/unaligned/masked - modes with a reasonably complex geometry. - - perf/dragon.c | 35 +++++++++++++++++++++++++++++++++++ - 1 files changed, 35 insertions(+), 0 deletions(-) - -commit 8b3be26c7be0747378792e3a454e500d290c3982 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 12 00:02:04 2009 +0100 - - [test] Remove misleading code/comments from a1-image-sample - - test/a1-image-sample.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit e702df59b05246a52a645792a65dc9c12d5b3feb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Aug 22 17:53:59 2009 +0100 - - [test] Attempt to automatically detect running under gdb - - A common mistake is to forget to pass the foreground mode to - cairo-test-suite when launching it under the debugger, resulting in the - debugger not attaching to the children and missing the error you were - trying to capture. Under linux, we can inspect the path to our parent's - executable and if that looks like gdb, we assume it is and disable forking - of traces. - - test/cairo-test-runner.c | 32 ++++++++++++++++++++++++++++++++ - 1 files changed, 32 insertions(+), 0 deletions(-) - -commit bf4977b645270bb88225501e73848f7814cccead -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 25 07:16:16 2009 +0100 - - [test] Exit on first failure '-x' - - Add a command line option to the test suite to cause it to exit after the - first failure. The purpose of this is for integration into 'git bisect run', - where the failing test is unknown and we are looking for any failure. For - example, for use in a regression script to find commits in the midst of as - series that need a refresh of a reference image (or fixing!). - - test/cairo-test-runner.c | 15 +++++++++++++-- - 1 files changed, 13 insertions(+), 2 deletions(-) - -commit 40aefac5d714bf7536632ed38c7a8ee05049f30b -Author: Benjamin Otte <otte@gnome.org> -Date: Wed Aug 26 21:22:07 2009 +0200 - - [xlib] DO_XCOPYAREA and DO_XTILE optimizations break with Window source - - Cairo should include the contents of subwindows when using a Window as a - source but will clip to subwindows when using a Window as a destination. - This can be set using the GC's subwindow_mode. - - XCopyArea and XFillRectangle can however only use one GC for both source - and destination. Cairo's mode is set to (the default) ClipByChildren. - This means that copying from a Window is broken, so we only allow the - optimization when we know that the source is a Pixmap. - - The performance impact of this change has not been tested. It should be - small, as the code will use XRender otherwise. - - If it turns out to be a bigger impact, the optimizations could be - improved by doing a two-step copy process: - 1) Copy to an intermediate Pixmap with IncludeInferiors - 2) Copy to the destination with ClipByChildren - (potentially omitting one one of the steps if source or destination are - known to be Pixmaps). - - references: - commit 0c5d28a4e5ce5e4dd72c0f416ce5e960e92b808b - https://bugs.freedesktop.org/show_bug.cgi?id=12996 - - src/cairo-xlib-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 90536ef2dd534d9385d38125445faeadd0511850 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Aug 25 00:28:08 2009 -0400 - - [build] Remove bogus warning that we require at least one native font backend - - That limitation was lifted long ago after twin face was introduced. - - build/configure.ac.features | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 20e227fc397d064af0b4b8bbf4028430695a218d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Aug 24 23:57:21 2009 -0400 - - [build] Fix typo - - build/aclocal.enable.m4 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 87fb9a9ded0fb0355f91cad188393d26b9e47e0b -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Mon Aug 17 00:59:46 2009 -0400 - - [test] Update reference image for the extended-blend-mode test. - - A recent pixman change caused one-bit differences in some pixels. - - test/extended-blend-alpha.argb32.ref.png | Bin 9777 -> 9406 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit d1b8e260d43c7dee71244f26d50d8b2e49e9b6e0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 21:29:13 2009 +0100 - - [qt] Fix compilation - - Enabling 'FAST CLIP' appears to trigger an infinite loop so disable. - - Enabling 'FAST FILL' has limited effect on performance, so disable whilst - the basic QT surface is improved. - - perf/cairo-perf-trace.c | 2 +- - src/cairo-qt-surface.cpp | 63 ++++++++++++++++++++++++++++++--------------- - 2 files changed, 43 insertions(+), 22 deletions(-) - -commit dff0a91742908098a1ee110fadf11d4b802b1587 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 17:57:16 2009 +0100 - - [xlib] Rewrite UNSUPPORTED() avoiding gcc-ism - - Behdad pointed out that fprintf() returns a value so that we could simply - use the comma operator to return the correct value instead of the - expression-block gcc-ism. - - src/cairo-xlib-surface.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit e63d725ad4fb92a0085224f627cbced3e3205735 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jun 6 01:08:22 2009 -0400 - - [utils] Remove unused code - - util/malloc-stats.c | 30 ------------------------------ - 1 files changed, 0 insertions(+), 30 deletions(-) - -commit d4d0fcb4a8055f1fdd24fc5b7b64bb55d55e1485 -Author: Andrea Canciani <ranma42@gmail.com> -Date: Mon Aug 10 17:43:31 2009 +0100 - - [quartz] Compile fix for show_glyphs - - Correct the prototype for _cairo_quartz_surface_show_glyphs(). - - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2a2a19457bb934f9585bfdb97730fab99c8e386c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 17:42:05 2009 +0100 - - [surface] Check for a NULL snapshot - - The backend is permitted to return a NULL surface when snapshotting to - indicate that it cannot (or choses not to) implement the method. - - src/cairo-surface.c | 28 +++++++++++++++------------- - 1 files changed, 15 insertions(+), 13 deletions(-) - -commit 2e8ce34454a4d93986f590b1d2b024d1a1eb6bde -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 16:51:07 2009 +0100 - - [quartz] Use the implementation font-face not the associated - - As the associated is now explicitly the font-face used to create the font - by the user, whereas what we require is the current implementation - (quartz) font. - - src/cairo-quartz-font.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit a4dc372bab8ebe75a9f7d17a9a2e6fc8d9d2d747 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 16:50:00 2009 +0100 - - [scaled-font] Update API documentation - - Now that the toy-font-face is exposed to the user, it is expected to be - returned when the user queries the font face associated with a scaled font. - - src/cairo-scaled-font.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit c4828666b9b4dad39c3f17fdfd7d1dd3cbb83cbc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 10 16:45:41 2009 +0100 - - [script] Handle translation of compressed strings. - - After introducing the new syntax to mark a deflated string, we also need - to add the equivalent binary tokens. - - util/cairo-script/cairo-script-file.c | 10 ++-- - util/cairo-script/cairo-script-scanner.c | 81 +++++++++++++++++++----------- - 2 files changed, 56 insertions(+), 35 deletions(-) - -commit 34870491951f5a712833b5fe7ed84c935bccfc5a -Author: Andrea Canciani <ranma42@gmail.com> -Date: Sun Aug 9 22:33:28 2009 +0200 - - [quartz] Fix one more compile error - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c2e75b9993ab1d30002877fc11b52ea7b9acd40b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Aug 9 21:12:36 2009 +0100 - - [quartz] Attempt to fix compile errors - - ranma42 spotted that the quartz-backend no longer compiled after bed270, - so once again attempt to blindly fix those errors... - - src/cairo-quartz-surface.c | 18 +++++++++--------- - 1 files changed, 9 insertions(+), 9 deletions(-) - -commit 81c4594712843abca188a33c1edfb70fa6c5a0d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 23:41:11 2009 +0100 - - [script] Ensure strings are nul terminated - - Infrequently, but, for example, handling glyph strings, we require the - string to be nul terminated. (Otherwise an error occurs, which was - previously compounded by a drastic leak.) - - util/cairo-script/cairo-script-scanner.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 86d6a489527d125e739aa5a6d17893bb44977010 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 23:39:21 2009 +0100 - - [script] Check for failure to store the glyph cache - - If we fail to add the glyph cache (presumably because the font is in - error) do not leak the allocation. As this occurs for every single glyph - string, the leak can grow very quickly and mask the original bug. - - util/cairo-script/cairo-script-operators.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit af392f7e45edcbf101ca7c91fc1ee372d283e8b9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 23:17:06 2009 +0100 - - [script] Extend csi-replay to show how to use a single surface - - Currently the replay creates a fresh surface for every new surface. Whilst - using it to view replays (such as with --xlib) this is often not what is - desired so add a mode (compile-time only for now) to use similar surfaces - and blits to the front buffer instead. - - util/cairo-script/csi-replay.c | 73 +++++++++++++++++++++++++++++++++++++++- - 1 files changed, 72 insertions(+), 1 deletions(-) - -commit b7639a5f79eaecfbaf1710fc679c7be375638efd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 10:55:18 2009 +0100 - - [trace] Close the dictionary before font - - font expects the dictionary to be constructed on the stack for its use, so - close it. (I missed the closing '>>' when switching between dictionary - constructors.) - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 19f54d872fcfa9801abee9c57e30c6b3fc7eef40 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 10:40:32 2009 +0100 - - [gl] Move hidden cairo_gl_surface_create() proto to header - - Make check-plt.sh happy - - src/cairo-gl-private.h | 2 ++ - src/cairo-gl-surface.c | 1 - - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit ee69f8aa5e0697aaeee9c00839fb7b30fe7e3184 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 10:30:52 2009 +0100 - - [trace] Whitespace - - A few gratuitous whitespace and increase the buffer size used whilst - reading in data files. - - util/cairo-trace/trace.c | 12 ++++-------- - 1 files changed, 4 insertions(+), 8 deletions(-) - -commit 6d30021d65aa4126cd5eef47b0e6057dfc17d7ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 10:29:49 2009 +0100 - - [trace] Only write the 4 byte length to the stream - - We were attempting to write out the whole length of the block when we were - just trying to write out the length value. - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a439bd99d0439c007bc74584c1eb56700c520b52 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 5 17:34:29 2009 +0100 - - [perf] Compare drawing random curves - - Extend the intersection tests with straight lines, with random curves as - well. - - perf/intersections.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 57 insertions(+), 1 deletions(-) - -commit 1327df2cf2f2dd9f98533d824503dfb081803b05 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 4 20:15:13 2009 +0100 - - [pattern] Invalid access beyond end of freed-pool - - Oops, we were attempting to return a pointer from beyond the end of our - array. - - src/cairo-pattern.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 920f59a755ce142b068f21b9db07f76f35449f16 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 4 20:13:43 2009 +0100 - - [build] Configure switch to disable atomics - - Workaround for my arm toolchain which succeeds in linking the configure - program, only to complain when linking a program (such as cairo-perf) - against libcairo.so. Annoying. - - build/configure.ac.system | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit cb30c1f367967e3395296a5d01a3eb9050635e3b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Aug 4 13:59:03 2009 +0100 - - [path] Extend identical lines. - - If a subsequent PATH_OP is just a continuation of the previous line, i.e. - it has the same gradient, then just replace the end-point of the previous - line with the new point rather than adding a new operation. Surprisingly - this occurs in the wild, but the main motivation is a future optimisation - to reduce the number of intersections during stroke-to-path. - - src/cairo-path-fixed.c | 31 ++++++++++++++++++++++++++++--- - src/cairoint.h | 7 +++++++ - 2 files changed, 35 insertions(+), 3 deletions(-) - -commit 85b688a3f6271427befca699de3a7a15162fc59e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 3 22:27:22 2009 +0100 - - [matrix] Use hypot() - - Use hypot() instead of open-coding sqrt(x*x + y*y). In theory, the - compiler could emit highly efficient code. In practice it's slower, but - more likely to be more accurate -- but the difference over a bare sqrt() - is likely not to be perceptible. - - src/cairo-matrix.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0db9e010fa70c65451d324cc9c0ade989f77fedd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Aug 3 22:23:19 2009 +0100 - - [perf] Calibrate tests to run for at least 2 seconds - - By ensuring that tests take longer than a couple of seconds we eliminate - systematic errors in our measurements. However, we also effectively - eliminate the synchronisation overhead. To compensate, we attempt to - estimate the overhead by reporting the difference between a single - instance and the minimum averaged instance. - - perf/box-outline.c | 14 +++- - perf/cairo-perf-report.c | 4 +- - perf/cairo-perf.c | 39 +++++++++--- - perf/cairo-perf.h | 2 +- - perf/composite-checker.c | 22 ++++--- - perf/dragon.c | 142 +++++++++++++++++++++-------------------- - perf/fill.c | 21 +++++-- - perf/glyphs.c | 32 +++++----- - perf/intersections.c | 27 ++++---- - perf/long-dashed-lines.c | 9 ++- - perf/long-lines.c | 68 ++++++++++---------- - perf/mask.c | 45 ++++++++----- - perf/mosaic.c | 38 ++++++----- - perf/paint-with-alpha.c | 5 +- - perf/paint.c | 5 +- - perf/pattern_create_radial.c | 24 ++++--- - perf/pythagoras-tree.c | 20 +++--- - perf/rectangles.c | 38 ++++++----- - perf/rounded-rectangles.c | 47 +++++++++++--- - perf/spiral.c | 51 +++++++-------- - perf/stroke.c | 19 ++++-- - perf/subimage_copy.c | 7 ++- - perf/tessellate.c | 17 +++--- - perf/text.c | 27 +++++---- - perf/twin.c | 29 +++++---- - perf/unaligned-clip.c | 37 +++++------ - perf/world-map.c | 78 ++++++++++++----------- - perf/zrusin.c | 10 ++- - 28 files changed, 496 insertions(+), 381 deletions(-) - -commit 60c574ad062f3d8526056942bb7c9e71610a2773 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Aug 5 15:11:00 2009 +0100 - - [surface] Protect against the user setting a fallback resolution of 0. - - Bug 23067 -- using clear drawing operator crashes printing - http://bugs.freedesktop.org/show_bug.cgi?id=23067 - - Here we were hitting an assert within the paginated surface after creating - a zero sized fallback image, due to the paginated surface being created - with an x fallback resolution of 0 dpi (by - _gtk_printer_create_cairo_surface(), gtk/gtkprinter.c:924). - - Avoid the bug by guarding against bad input to - cairo_surface_set_fallback_resolution() which also allows us to identity - the invalid caller. - - src/cairo-surface.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit a3f393cf644d75065fe524e2fbb28f55844f43bf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 09:52:34 2009 +0100 - - [configure] Also check for libiberty.h - - cairo-trace also uses the libiberty.h without checking for its presence -- - causing a build failure if bfd was installed but not that header. - - configure.ac | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 51bd27afa147f78c8f4f3778cee725b6444e7eb0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 09:41:15 2009 +0100 - - [boilerplate/test] Convert make-*-constructors to shell - - Remove the intermediate C program that was a nuisance whilst - cross-compiling and replace it with a simple shell script that is just a - combination of cat + sed. - - boilerplate/Makefile.am | 17 +-- - boilerplate/make-cairo-boilerplate-constructors.c | 163 -------------------- - boilerplate/make-cairo-boilerplate-constructors.sh | 24 +++ - build/configure.ac.tools | 8 - - test/Makefile.am | 11 +- - test/make-cairo-test-constructors.c | 162 ------------------- - test/make-cairo-test-constructors.sh | 24 +++ - 7 files changed, 56 insertions(+), 353 deletions(-) - -commit 5dd29d7e2da8684ea46c8f1baba42e6dc64f1351 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Aug 6 09:55:43 2009 +0100 - - [directfb] Conditionally use DSPF_BGR555 - - Appears that this token is more recent than some of my headers, so check - for its presence before use. - - src/cairo-directfb-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 1d2abe7d1061e580e189604b25465c8025cedfb7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 19:38:23 2009 +0100 - - [gl] Refresh clip-operator ref. - - A minor renderering difference, acceptable. - - test/Makefile.am | 1 + - test/clip-operator.gl.argb32.ref.png | Bin 0 -> 8296 bytes - 2 files changed, 1 insertions(+), 0 deletions(-) - -commit 640a0be2e2ef0124424aeca32915a2f644b03d27 -Merge: 067de9c 5c2239b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 18:03:35 2009 +0100 - - Merge branch 'gl-glyph-cache' - - Comparing the glyph-cache on an i915: - - gnome-terminal-20090728: 1.51x speedup - firefox-20090601: No change - -commit 5c2239be4b11437b1ab1731ef2dfac6cfb8095b1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 16:29:49 2009 +0100 - - [gl] Use scissors rather than allocating a temporary depth buffer. - - src/cairo-gl-glyphs.c | 9 ---- - src/cairo-gl-private.h | 9 ++++ - src/cairo-gl-surface.c | 114 ++++++++++-------------------------------------- - 3 files changed, 32 insertions(+), 100 deletions(-) - -commit 067de9cf62223ee7a36aab10e3d8a4e0dcda4741 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 17:49:39 2009 +0100 - - [test] Add clip-fill. - - Test filling through a complex clip. - - test/Makefile.am | 4 ++ - test/Makefile.sources | 1 + - test/clip-fill.c | 78 ++++++++++++++++++++++++++++++++++ - test/clip-fill.ps.xfail.png | Bin 0 -> 522 bytes - test/clip-fill.ref.png | Bin 0 -> 1035 bytes - test/clip-fill.xlib-fallback.ref.png | Bin 0 -> 1039 bytes - test/clip-fill.xlib.ref.png | Bin 0 -> 1049 bytes - 7 files changed, 83 insertions(+), 0 deletions(-) - -commit 7db1fb6fa97e0c44e66c0ae533b94fb3f26b273d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 16:57:14 2009 +0100 - - [test] Add clip-text - - Test applying a complex clip to text. - - test/Makefile.am | 4 ++ - test/Makefile.sources | 1 + - test/clip-text.c | 88 +++++++++++++++++++++++++++++++++++++++++++ - test/clip-text.ps.xfail.png | Bin 0 -> 434 bytes - test/clip-text.ref.png | Bin 0 -> 928 bytes - test/clip-text.svg.ref.png | Bin 0 -> 933 bytes - test/clip-text.xlib.ref.png | Bin 0 -> 900 bytes - 7 files changed, 93 insertions(+), 0 deletions(-) - -commit 728d3f6383bba218de03f2693f289ddad6a80d0c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 16:24:37 2009 +0100 - - Revert "[gl] Fixup unbounded regions after spans" - - This reverts commit f7121ca88844fa70ecb1a35f3f6c9b653324718d. - - src/cairo-gl-surface.c | 68 +++++------------------------------------------- - 1 files changed, 7 insertions(+), 61 deletions(-) - -commit 74bdea1249bc1fcd223e9bab83d9b9e22fa98b99 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 16:20:54 2009 +0100 - - [spans] Emit empty rows. - - A problem that does not present itself whilst using spans to intermediate - masks is that the tor-span-convertor did not emit the empty rows. When - compositing directly using spans with an unbounded operator this was - causing rendering artefacts, for overlapping-glyphs and the gl backend. - - src/cairo-tor-scan-converter.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 1e4b9ab04bfe18f50b9b7c2cdb75d5828e33ef69 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 15:27:20 2009 +0100 - - [gl] Return status from _render_glyphs() - - src/cairo-gl-glyphs.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 097484da6fd70867ed2128e78247eab5c43217fb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 14:48:32 2009 +0100 - - [boilerplate] Conditionally tweak the xlib surface - - Prior to introduction of the buggy members to the surface, we obviously - cannot set them. However, the boilerplate code is meant to compile against - older revisions of the library so we need to check for the existence prior - to use. - - boilerplate/cairo-boilerplate-xlib.c | 10 ++++++++-- - src/cairo-xlib-surface-private.h | 3 +++ - 2 files changed, 11 insertions(+), 2 deletions(-) - -commit 397538a251ae19bb1a34650763eb9a80108a96de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 12:17:28 2009 +0100 - - [boilerplate] Update fallbacks after disabling RENDER - - The xlib surface caches flags based on RENDER version, so after disabling - render to force fallbacks, we need to ensure that the flags are reset. - - boilerplate/cairo-boilerplate-xlib.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 786d1f962a7e7ee7036ea85d4ea3aec7580e25db -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 13:17:24 2009 +0100 - - [xlib] Use server-side gradients. - - We can offload creation of gradients to server that support RENDER 0.10 - and later. This greatly reduces the amount of traffic we need to send over - our display connection as the gradient patterns are much smaller than the - full image. Even if the server fallbacks to using pixman, performance - should be improved by the reduced transport overhead. Furthermore this is a - requisite to enable hardware accelerated gradients with the xlib backend. - - Running cairo-perf-trace on tiny, Celeron/i915: - - before: firefox-20090601 211.585 - after: firefox-20090601 270.939 - - and on tiger, CoreDuo/nvidia: - - before: firefox-20090601 70.143 - after: firefox-20090601 87.326 - - where linear gradients are used extensively throughout the GTK+ theme. - Not quite the result I was expecting! - - In particular, looking at tiny: - - xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown - █▋ - xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown - █▋ - xlib-rgba paint-with-alpha_linear-rgb_over-512 47.19 (47.21 0.02%) -> 123.37 (123.70 0.13%): 2.61x slowdown - █▋ - xlib-rgba paint-with-alpha_linear3-rgb_over-512 47.30 (47.31 0.04%) -> 123.52 (123.62 0.09%): 2.61x slowdown - █▋ - xlib-rgba paint_linear3-rgb_over-512 47.29 (47.32 0.05%) -> 118.95 (119.60 0.29%): 2.52x slowdown - █▌ - xlib-rgba paint_linear-rgba_over-512 47.14 (47.17 0.06%) -> 116.76 (117.06 0.16%): 2.48x slowdown - █▌ - xlib-rgba paint_linear3-rgba_over-512 47.32 (47.34 0.04%) -> 116.85 (116.98 0.05%): 2.47x slowdown - █▌ - xlib-rgba paint_linear-rgb_over-512 47.15 (47.19 0.03%) -> 114.08 (114.55 0.20%): 2.42x slowdown - █▍ - xlib-rgba paint-with-alpha_radial-rgb_over-512 117.25 (119.43 1.21%) -> 194.36 (194.73 0.09%): 1.66x slowdown - ▋ - xlib-rgba paint-with-alpha_radial-rgba_over-512 117.22 (117.26 0.02%) -> 193.81 (194.17 0.11%): 1.65x slowdown - ▋ - xlib-rgba paint_radial-rgba_over-512 117.23 (117.26 0.02%) -> 186.35 (186.41 0.03%): 1.59x slowdown - ▋ - xlib-rgba paint_radial-rgb_over-512 117.23 (117.27 0.02%) -> 184.14 (184.62 1.51%): 1.57x slowdown - ▋ - - Before 1.10, we may choose to disable server-side gradients for the - current crop of Xorg servers, similar to the extended repeat modes. - - [Updated by Chris Wilson. All bugs are his.] - - NEWS | 28 ++++ - src/cairo-xlib-display.c | 9 +- - src/cairo-xlib-private.h | 3 +- - src/cairo-xlib-surface-private.h | 5 +- - src/cairo-xlib-surface.c | 306 ++++++++++++++++++++++++++++++++++---- - 5 files changed, 318 insertions(+), 33 deletions(-) - -commit 53cbbad8fbbd2b9423a5eb179d0cec3fc7678791 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 11:35:45 2009 +0100 - - [xlib] Disable extended repeat modes if RENDER < 0.10 - - The extended repeat modes were only introduced in RENDER 0.10, so disable - them if the server reports an earlier version. This is in addition to - disabling the repeat modes if we know (guess!) the server to have a buggy - implementation. - - src/cairo-xlib-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit e283e53563915daa11566ba006e1bf1e12b0d2fc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 10:50:13 2009 +0100 - - [perf] Print min_ticks in report - - As the change and ranking is based on the min_ticks, and as this can - sometimes deviate wildly from median_ticks, include min_ticks in the - output. - - In particular it helps to explain cases like: - - xlib-rgba rectangles_similar-rgba-mag_source-512 10.13 88.41% -> 5.77 0.19%: 1.50x slowdown - - which becomes - - xlib-rgba rectangles_similar-rgba-mag_source-512 3.83 (10.13 88.41%) -> 5.75 (5.77 0.19%): 1.50x slowdown - - (Considering the poor standard deviation on the initial measurement, this - is more likely a sampling error than a true regression.) - - perf/cairo-perf-diff-files.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit ce8a8424aa4331f119b115123faf7b773b5f25d0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 31 09:36:10 2009 +0100 - - [perf] Change the order of slowdowns. - - More the large slowdowns to the end. This has two pleasing effects: - - 1. There is symmetry between large speedups at the top, and large - slowdowns at the bottom, with long bars -> short bars -> long bars. - - 2. After a cairo-perf-diff run the largest slowdowns are immediately - visible on the console. What better way to flag performance - regressions? - - perf/cairo-perf-diff-files.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 877ed645f95ff048f7c5d2ce0fb92389918711a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 30 22:09:55 2009 +0100 - - [perf] Add a more complex fill, a set of rings - - In investigating performance regressions with the wip/tessellator, I'm - keen to inspect how the tessellator scales with polygon complexity. - - perf/fill.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 files changed, 37 insertions(+), 0 deletions(-) - -commit 3dbc4170f0e89f02455b82c6496d6322e56e0491 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 30 10:35:11 2009 +0100 - - [perf] Add a single shot long-lines - - Compare the performance of self-intersection removal by comparing the cost - of individually stroking each line versus stroking them all en-mass. - - perf/long-lines.c | 45 ++++++++++++++++++++++++++++++++++----------- - 1 files changed, 34 insertions(+), 11 deletions(-) - -commit 2f033af5ab15dc56675c42434bb1c18655012b03 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 30 09:42:31 2009 +0100 - - [perf] Fix the asymmetry in long lines - - We missed the final long diagonal to the bottom-right. - - perf/long-lines.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 944206e55ba997a4a55334be3c7ebf8141016be7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 30 09:36:28 2009 +0100 - - [perf] Correct typo in long-lines.c - - Computed may_y using height not width, fortunately the test cases have - always been square. - - perf/long-lines.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 229887e980f03d90248add8af9cd0a9be6cb0f9a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 19:48:00 2009 +0100 - - [perf] Check output - - Add a CAIRO_PERF_OUTPUT environment variable to cause cairo-perf to first - generate an output image in order to manually check that the test is - functioning correctly. This needs to be automated, so that we have - absolute confidence that the performance tests are not broken - but isn't - that the role of the test suite? If we were ever to publish cairo-perf - results, I would want some means of verification that the test-suite had - first been passed. - - perf/cairo-perf.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit 8c6ecfe6488dff93090d5d0a2d814466804bc7de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 16:17:36 2009 +0100 - - [perf] Remove the warning about failing to open a directory - - The warning is repeated in the error message if we fail to find any - traces, and now that we search a path it is likely that some elements do - not exist. Thus we annoy the user with irrelevant, non-fatal warnings. - - Still looking for suggestions for the most appropriate home for the system - wide cairo-traces dir... - - perf/cairo-perf-trace.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 8c1aed17ca5dafb00175ac413d56760a3ef012f9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 13:24:19 2009 +0100 - - [perf] Add another stroking micro-benchmark - - The original stroke only contains a single subpath. Self-intersection - removal particularly affects strokes with multiple curved segments, so add - a path that encompasses both straight edges and rounded corners. - - perf/stroke.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 36 insertions(+), 0 deletions(-) - -commit 71f5649846aa8e9e2178e7caf69ab47554f86c4d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 15:36:25 2009 +0100 - - [path] Fix iter to handle circular list of buffers - - When switching the path over to use the circularly linked list, 73f801, - I missed updating the path iterator. - - src/cairo-path-fixed-private.h | 1 + - src/cairo-path-fixed.c | 9 +++++++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit acfcf4a31b3370ca7bbdd522fad9ddc483df3472 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 16:10:04 2009 +0100 - - [path] Remove the broken rel-curve-to as line-to - - As pointed out by Andrea, and now tested by test/degenerate-rel-curve-to, - this attempt at removing degenerate curve-to was broken. - - src/cairo-path-fixed.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit 81d3e15e6ca7b7c1a07fdfb6d03c43484ce9f502 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 29 16:07:17 2009 +0100 - - [test] Yet another bug in curve-to as line-to. - - Andrea Canciani (ranma42) found another instance of my broken 'degenerate' - curve-to as line-to optimisation. All I can say is when I do something - wrong, at least I'm consistent! - - This test case highlights the bug in the rel-curve-to path. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/degenerate-rel-curve-to.c | 99 +++++++++++++++++++++++++++++ - test/degenerate-rel-curve-to.ps.xfail.png | Bin 0 -> 202 bytes - test/degenerate-rel-curve-to.ref.png | Bin 0 -> 270 bytes - 5 files changed, 102 insertions(+), 0 deletions(-) - -commit f7121ca88844fa70ecb1a35f3f6c9b653324718d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 20:48:26 2009 +0100 - - [gl] Fixup unbounded regions after spans - - src/cairo-gl-surface.c | 68 +++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 61 insertions(+), 7 deletions(-) - -commit 5631f01075a030255c5eb47a8ee600b062705d0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 18:56:12 2009 +0100 - - [gl] Cache texture snapshots. - - src/cairo-gl-glyphs.c | 32 ++++- - src/cairo-gl-private.h | 2 +- - src/cairo-gl-surface.c | 301 +++++++++++++++++++++++++++++------------------- - 3 files changed, 206 insertions(+), 129 deletions(-) - -commit 3b0bb2cfd2ad8579e88f1c0ab46f5ccf762e0974 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 18:04:59 2009 +0100 - - [gl] Replace DrawPixels with TexSubImage - - src/cairo-gl-surface.c | 60 +++++++++++++++++++++-------------------------- - 1 files changed, 27 insertions(+), 33 deletions(-) - -commit 4b7a1a2da7a7f55db788cbfb3164f9f948bbb26b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 17:32:30 2009 +0100 - - [gl] Disable the EXTEND_REFLECT convertor - - As we can handle EXTEND_REFLECT via the samplers, we do not need to - convert such patterns to EXTEND_REPEAT during acquisition. - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 780a95b024c5880353ffc256a634eb3bcc641601 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 16:49:04 2009 +0100 - - [gl] Trim glyphs to surface/clip extents. - - src/cairo-gl-glyphs.c | 21 ++++++++++++++++++--- - 1 files changed, 18 insertions(+), 3 deletions(-) - -commit b1227dea29d3e357cc69c49eed0ae10d5578f24a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 16:39:52 2009 +0100 - - [gl] Render glyphs to an intermediate mask as opposed to falling back. - - There are many common scenarios, mostly involving overlapping glyphs, - for which to guarantee correct rendering we have to composite the glyphs - via an explicit mask. That is instead of just blending the glyphs on to - the destination, we have to add the glyphs to a mask, and then composite - that mask+source with the destination. - - src/cairo-gl-glyphs.c | 306 +++++++++++++++++++++++++++++++------------------ - 1 files changed, 194 insertions(+), 112 deletions(-) - -commit cd259489e2f41caaa7441233d87b46fbd43991ae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 15:58:54 2009 +0100 - - [gl] Fallback for overlapping glyphs. - - src/cairo-analysis-surface.c | 6 ++++-- - src/cairo-gl-glyphs.c | 35 ++++++++++++++++++++--------------- - src/cairo-gl-private.h | 13 +++++++++++++ - src/cairo-scaled-font.c | 23 +++++++++++++++++++++-- - src/cairo-surface-fallback.c | 3 ++- - src/cairo-xcb-surface.c | 3 ++- - src/cairo-xlib-surface.c | 3 ++- - src/cairoint.h | 3 ++- - 8 files changed, 66 insertions(+), 23 deletions(-) - -commit 3d8f1d3dc83b9a86f2f104f0e2afa192a34d18c8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 15:38:45 2009 +0100 - - [gl] Only unlock the glyph cache when full. - - src/cairo-gl-glyphs.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 922b1fe8e380ceba0630935460ce758ef660df75 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Jul 28 22:34:42 2009 +0930 - - Ensure Type 3 fonts do not use the name .notdef in the PS encoding - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a251e34dbbcb652906f7fddd2a72cbb5992b58ae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 13:44:19 2009 +0100 - - [gl] Move check for vertex buffer support to individual operations. - - As we can fallback instead of using vertex buffers, do so rather than - preventing any use of GL acceleration. - - src/cairo-gl-glyphs.c | 3 +++ - src/cairo-gl-surface.c | 17 +++++++++-------- - 2 files changed, 12 insertions(+), 8 deletions(-) - -commit 90657bacc306e65e07e9eb16561a805150aef778 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 13:30:31 2009 +0100 - - [gl] Separate out supported operator check. - - By performing the check on whether the operator is supported prior to - acquiring the context, we do not need to handle the error part way - through the context setup. This makes the code much cleaner, and save - some work for the unsupported cases. - - src/cairo-gl-glyphs.c | 7 ++++--- - src/cairo-gl-private.h | 5 ++++- - src/cairo-gl-surface.c | 46 ++++++++++++++++++---------------------------- - 3 files changed, 26 insertions(+), 32 deletions(-) - -commit 21d50e2163038c8acc0eef738acf61f851835f7d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 13:24:43 2009 +0100 - - [gl] Unthaw font along contended path. - - If we bail after freezing the font, make sure we thaw that it is thawed - before returning. - - src/cairo-gl-glyphs.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5440055fc0329c726d324984cd2fdf07badc7e0f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Jul 28 20:59:25 2009 +0930 - - Ensure Type 3 fonts do not add a .notdef glyph - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1ae5a41951b8a8cb415835559f91d1636a885216 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Jul 28 20:54:58 2009 +0930 - - PDF: Only Type 3 fonts should include glyph 0 in /ToUnicode - - 4c498098 made all 8-bit fonts include glyph 0 which incorrectly - included Type 1 fallback fonts. - - src/cairo-pdf-surface.c | 20 +++++++++++++------- - src/cairo-scaled-font-subsets.c | 1 + - src/cairoint.h | 1 + - 3 files changed, 15 insertions(+), 7 deletions(-) - -commit c11f369057c5ebb958bec58ef41f8ad4b43bdbee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 13:02:10 2009 +0100 - - [perf] Avoid NULL derefs on broken result files. - - Instead of testing for a NULL return we checked that the pointer didn't - point to NIL. Oops. - - perf/cairo-perf-report.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 19f44982348d247057df4481010c1e3ddc80bac2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 12:58:07 2009 +0100 - - [test] Wrap yet another call to get_image_surface() inside a timeout. - - I missed this call to get_image_surface() that is now being hit having - restored the reference image for dash-infinite-loop. - - test/cairo-test.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit e2f912dc5bbfad3a6f4b5e1dbfbe51be148b3232 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 09:32:36 2009 +0100 - - [script] Add cvi, cvr, mod - - Add implementations of convert-to-integer, convert-to-real and modulus - supplied by Zack Weinberg <zweinberg@mozilla.com>. - - util/cairo-script/cairo-script-operators.c | 95 +++++++++++++++++++++++++++- - util/cairo-script/cairo-script-private.h | 3 + - util/cairo-script/cairo-script-scanner.c | 6 +- - 3 files changed, 100 insertions(+), 4 deletions(-) - -commit 24b5ac6377f0e4b76b73460a497b9861fc01a889 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 08:05:22 2009 +0100 - - [test] Add timeouts around finishing and converting surfaces to images. - - In order to catch infinite loops whilst replaying and converting vector - surfaces to images (via external renderers) we need to also install - alarms around the calls to finish() and get_image(). - - test/cairo-test.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit dacc380dd9ea23fe060d0397104ecd4b2a6d0eae -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Jul 11 02:59:12 2009 +0300 - - [test] Test extremely small dash lengths. - - The stroker code is liable to wedge when passed - dash patterns which don't advance the dash offset - due to limited precision arithmetic. This test - attempts to hit all the places in the stroker where - that can happen. - - Reported on the cairo mailing list by Hans Breuer: - - http://lists.cairographics.org/archives/cairo/2009-June/017506.html - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/dash-infinite-loop.c | 83 +++++++++++++++++++++++++++++++++++++++ - test/dash-infinite-loop.ref.png | Bin 0 -> 642 bytes - 4 files changed, 85 insertions(+), 0 deletions(-) - -commit 128d6fb2daf4e57def813511cc89167217041bf4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 08:37:54 2009 +0100 - - [path] Remove the erroneous conversion of a 'zero-length' curve-to - - As pointed out by Andrea, and now tested by test/degenerate-curve-to, a - curve-to that begins and ends on the same point may extend further due to - its control points. It can not be simply replaced with a degenerate - line-to. In order to do so we will need more extensive degeneracy - checking, ala _cairo_spline_init(). - - src/cairo-path-fixed.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 660c389d11bda29498807f41d3b761fa540ae9b9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 28 08:18:17 2009 +0100 - - [test] Add degenerate-curve-to - - Andrea Canciani (ranma42) pointed out a second bug in the curve-to as - line-to optimisation, that is a curve starting and finishing on the same - point is not necessarily degenerate. This test case exercises 5 different - curves that start and end on the same point. - - test/Makefile.am | 2 + - test/Makefile.sources | 1 + - test/degenerate-curve-to.c | 103 +++++++++++++++++++++++++++++++++ - test/degenerate-curve-to.ps.xfail.png | Bin 0 -> 202 bytes - test/degenerate-curve-to.ref.png | Bin 0 -> 276 bytes - 5 files changed, 106 insertions(+), 0 deletions(-) - -commit d31de83e01468eaf9e1a906aef536b63e77cb752 -Author: Carl Worth <cworth@cworth.org> -Date: Mon Jul 27 15:58:27 2009 -0700 - - Mark curve-to-as-line-to as XFAIL for PS backend. - - Looks like ghostscript has a similar buggy optimization like we - just fixed in cairo. I'm just waiting on a new bugzilla account - from bugs.ghostscript.com after which I plan to report the bug - there. - - test/curve-to-as-line-to.ps.xfail.png | Bin 0 -> 112 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 45919a4f0c94a247b1c6941dbc4a57f6c9399396 -Author: Carl Worth <cworth@cworth.org> -Date: Mon Jul 27 15:45:55 2009 -0700 - - Revert "[path] Convert straight curve-to to line-to" - - This reverts commit c72ca2f2296b5fbc5859059b98221e5ffe087dae. - - This commit was broken as verified by the curve-to-as-line-to test - case. - - src/cairo-path-fixed.c | 12 ------------ - 1 files changed, 0 insertions(+), 12 deletions(-) - -commit 5bed405b278a6b934369873f55117d497f69bc3a -Author: Carl Worth <cworth@cworth.org> -Date: Mon Jul 27 15:45:15 2009 -0700 - - Revert "[spline] Treat a straight spline as degenerate." - - This reverts commit f3d265559a2f97152ce8f307ea3ce83463083088. - - This commit was broken as verified by the curve-to-as-line-to test - case. - - src/cairo-spline.c | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit 01acad1659caf766c57849f85dc3536fe2167608 -Merge: 3cc9a60 cf15aed -Author: Carl Worth <cworth@cworth.org> -Date: Mon Jul 27 15:26:19 2009 -0700 - - Merge branch 'master' of git.cairographics.org:/git/cairo - -commit 3cc9a6050d9704976d8efe373b913e5309bde6d2 -Author: Carl Worth <cworth@cworth.org> -Date: Mon Jul 27 15:24:55 2009 -0700 - - Add new test: curve-to-as-line-to - - This test anticipates a future optimization, (already pushed - upstream but not pulled yet), with a buggy implementation - of replacing curve_to with line_to. - - test/Makefile.sources | 1 + - test/curve-to-as-line-to.c | 95 ++++++++++++++++++++++++++++++++++++++ - test/curve-to-as-line-to.ref.png | Bin 0 -> 95 bytes - 3 files changed, 96 insertions(+), 0 deletions(-) - -commit e19b2866ed095cf66e9344efa442ae01dc7913ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 19:51:36 2009 +0100 - - [gl] Actually remove the glyph from the rtree on scaled_font_fini - - Mark the node as available when the scaled_glyph is finished, and then - attempt to collapse the parent node. - - src/cairo-gl-glyphs.c | 5 +++-- - src/cairo-rtree-private.h | 3 +++ - src/cairo-rtree.c | 13 +++++++++++++ - 3 files changed, 19 insertions(+), 2 deletions(-) - -commit e0b7979a30fff2a22fef5c170fd72c37c197ee0e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 17:44:10 2009 +0100 - - [gl] Switch to using the common rtree implementation. - - src/cairo-gl-glyphs.c | 440 +++++++---------------------------------------- - src/cairo-gl-private.h | 52 ++---- - src/cairo-gl-surface.c | 5 + - 3 files changed, 89 insertions(+), 408 deletions(-) - -commit 37bf06d66efa238c4ff9c74c86a0c9d037b300e6 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jul 27 09:16:46 2009 -0700 - - [gl] Fix handling of clip for glyphs (clip-operator test). - - src/cairo-gl-glyphs.c | 43 ++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 42 insertions(+), 1 deletions(-) - -commit 74f33513194ec3d8e69a21aa71aa7fc854415e83 -Author: Eric Anholt <eric@anholt.net> -Date: Fri Jul 24 14:08:55 2009 -0700 - - [gl] Switch the glyph cache to using VBOs. - - This is a major performance improvement for GL even on non-TNL hardware - (i915), as we get to emit one giant DrawArrays and make GL drivers love us. - Now we're actually faster than not having the glyph cache. - - Before glyph cache (HP 945GM): - [ 0] gl firefox-20090601 238.103 238.195 0.35% 5/6 - After: - [ 0] gl firefox-20090601 68.181 76.735 5.46% 6/6 - - src/cairo-gl-glyphs.c | 177 +++++++++++++++++++++++++++++++++---------------- - 1 files changed, 120 insertions(+), 57 deletions(-) - -commit ee4138e587a67c3fc4d0e89b899109af89f16e72 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jul 23 21:12:59 2009 -0700 - - [gl] Start adding glyph cache support. - - This is pretty much cut-and-paste from ickle's cairo-drm-i915-surface, and - uses fixed function and doesn't use VBOs. - - src/Makefile.sources | 2 +- - src/cairo-gl-glyphs.c | 829 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-private.h | 115 +++++++ - src/cairo-gl-surface.c | 69 ++--- - 4 files changed, 965 insertions(+), 50 deletions(-) - -commit cf15aed0c4e843e7297c5a1979ac0318f6df4947 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 19:18:21 2009 +0100 - - [xlib] Add a timely reminder to ensure that bugs are properly filed. - - In a discussion on IRC, attention was drawn to a dubious comment in - _cairo_xlib_show_glyphs() - the precise details of which have passed - out of the collective memory. - - src/cairo-xlib-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 2da01ed552d48808cdf3aa7798ddfb959d016f0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 18:20:22 2009 +0100 - - [rtree] Merge the common unpin_and_evict_unused() routine - - Having written the same method to prune glyphs from the rtree three times, - I thought wise to add the common method to the core routines. - - src/cairo-rtree-private.h | 1 + - src/cairo-rtree.c | 50 +++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 49 insertions(+), 2 deletions(-) - -commit 9f6a0f5668601c74886378d6cdb9588621d30e6d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 14:01:32 2009 +0100 - - [paginated] Propagate error return during finish. - - In bed2701, I removed the explicit finish of the paginated's target - surface, since as a wrapper it did not explicitly own the surface and so - should not be calling finish(). However, we do need to propagate errors - from the backing surface, such as PDF, which will only be detected during - the implicit finish in the final destroy. So check to see it we hold the - last reference to the target (and so our destroy will trigger the implicit - finish) and call the finish explicitly and check the error status - afterwards. - - src/cairo-paginated-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 6ca3720ba66f443e70c961f7d4fdac604c831e97 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 10:06:34 2009 +0100 - - [test] Overlapping glyphs - - Add a test case to explicitly check handling of overlapping glyphs. - - test/Makefile.am | 4 + - test/Makefile.sources | 1 + - test/overlapping-glyphs.argb32.ref.png | Bin 0 -> 2696 bytes - test/overlapping-glyphs.c | 123 ++++++++++++++++++++++++++ - test/overlapping-glyphs.pdf.argb32.xfail.png | Bin 0 -> 2199 bytes - test/overlapping-glyphs.pdf.rgb24.xfail.png | Bin 0 -> 1692 bytes - test/overlapping-glyphs.rgb24.ref.png | Bin 0 -> 1650 bytes - 7 files changed, 128 insertions(+), 0 deletions(-) - -commit 09a2b2ed3189fe12483cbd673c24ceddc2c20f3f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 10:14:24 2009 +0100 - - [xlib] Fast-path the likely case of retrieving a known xrender_format - - If we know the CPU can read pointers atomically, then we can simply peek - into the cached_xrender_formats to see if we already have a match, before - taking the mutex. (Acquiring the mutex here is a minor nuisance that - appears on the callgrind profiles.) - - src/cairo-xlib-display.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit efb3445ee1553c91e62f6b0fe50ab72d65f5c81c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 27 10:18:25 2009 +0100 - - Add a simple rectangle tree (rtree) implementation - - In order to efficient store small images, we need to pack them into a - large texture. The rtree handles allocation of small rectangles out of a - much larger whole. As well as tracking free rectangles, it can also be - used to note which parts of the texture are 'pinned' -- that is have - operations currently pending and so can not be modified until that batch - of operations have been flushed. When the rtree is full, i.e. there is no - single free rectangle to accommodate the allocation request, it will - randomly evict an unpinned block large enough to fit the request. The - block may comprise just a single glyph, or a subtree of many glyphs. This - may not be the best strategy, but it is an effective start. - - src/Makefile.sources | 2 + - src/cairo-rtree-private.h | 124 ++++++++++++++++ - src/cairo-rtree.c | 349 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 475 insertions(+), 0 deletions(-) - -commit c72ca2f2296b5fbc5859059b98221e5ffe087dae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 26 09:07:48 2009 +0100 - - [path] Convert straight curve-to to line-to - - Avoid the high cost associated with curves if we can convert the curve to - a straight line. - - src/cairo-path-fixed.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit f3d265559a2f97152ce8f307ea3ce83463083088 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 26 09:03:36 2009 +0100 - - [spline] Treat a straight spline as degenerate. - - The fallback for degenerate splines is to treat them as a line-to, so if - the spline is straight, we can just replace it with a simple line-to by - treating as degenerate. - - src/cairo-spline.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 25858d524d158531a71a2e772551b1e497d9d423 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 26 08:13:28 2009 +0100 - - [script] Fix reference to font source after transferring to mmap - - After diverting the pointers to accommodate lazy decompressing of the - source, the bytecode pointer was left pointing to the original location - that had already been freed - thus passing an invalid block to FreeType - and unsurprisingly then, blowing up. - - util/cairo-script/cairo-script-operators.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit ede0f7e7df4e17ddc1ffe98dcdfe0115a58e7b14 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 25 07:19:22 2009 +0100 - - [pdf] Eliminate redundant whole-page clip. - - We do not to emit a clip if it covers the whole page. - - src/cairo-pdf-surface.c | 16 ++++++++++++++++ - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3868 -> 3919 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3806 -> 3867 bytes - test/scale-offset-image.pdf.xfail.png | Bin 8692 -> 8694 bytes - test/scale-offset-similar.pdf.xfail.png | Bin 9369 -> 9368 bytes - 5 files changed, 16 insertions(+), 0 deletions(-) - -commit 4c498098c0dc66dc8c3e8cd60f79e5e5eda206b9 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Jul 24 21:36:47 2009 +0930 - - PDF: Fix glyph 0 in toUnicode stream when using user fonts - - _cairo_pdf_surface_emit_to_unicode_stream() was reserving glyph 0 for - the .notdef glyph (as required by TrueType/CFF/Type1 fallback - fonts). However Type 3 fonts do not reserve glyph 0 for .notdef and - need glyph 0 to be included in the toUnicode stream. - - http://lists.cairographics.org/archives/cairo/2009-July/017731.html - - src/cairo-pdf-surface.c | 71 +++++++++++++++++++++++++++++----------------- - 1 files changed, 45 insertions(+), 26 deletions(-) - -commit e577096dff714266101ba86ac275864b854096a4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 23:17:07 2009 +0100 - - [boilerplate] Fix compilation against old revisions (as old as 1.9.2!) - - boilerplate/Makefile.am | 7 +++++- - boilerplate/cairo-boilerplate-pdf.c | 4 +++ - boilerplate/cairo-boilerplate-ps.c | 4 +++ - boilerplate/cairo-boilerplate-svg.c | 4 +++ - boilerplate/cairo-boilerplate-test-surfaces.c | 31 +++++++++++++++--------- - boilerplate/cairo-boilerplate.c | 10 +++++-- - src/cairo-types-private.h | 5 +++- - util/cairo-script/cairo-script-operators.c | 2 + - 8 files changed, 50 insertions(+), 17 deletions(-) - -commit 0466053099b7f27065267d49c84e9e24bff6c7a1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 23:45:01 2009 +0100 - - [image] Discard redundant clears - - On slow machines the call to pixman_fill_sse2() on similar surfaces that - we know are already zeroed takes a significant amount of time [12.77% of - the profile for a firefox trace, cf to just 3% of the profile is spent - inside memset]. - - Rather than solve why the pixman_fill_sse2() is so slow, simply skip the - redundant clears. - - src/cairo-image-surface.c | 35 ++++++++++++++++++++++++++++++++++- - src/cairoint.h | 1 + - 2 files changed, 35 insertions(+), 1 deletions(-) - -commit 8b8e03503d7a4fdacfc48e0b35c9b02d7a08c1e2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 22:00:05 2009 +0100 - - [script] mark scan_read() inline - - Small function that is critical to performance whilst scanning scripts. - - util/cairo-script/cairo-script-scanner.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit f02ba09475b751fba411addb96718dbcb1de5132 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 20:23:51 2009 +0100 - - [xlib] Check workqueue before taking the display mutex - - Optimistically check to see if there is any outstanding work before - checking under the mutex. We don't care if we occasionally do not run the - queue this time due to contention, since we will most likely check again - very shortly or clean up with the display. - - src/cairo-xlib-display.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 4dc62bbedc5d8669c0508963497c568d0202f579 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 19:34:10 2009 +0100 - - [test] Extend radial gradients to check r2 < r1 - - Include additional gradients to cover the cases where r1 > r2, as a pixman - bug was exposed by: - [Bug 22908] Invalid output of radial gradient - http://bugs.freedesktop.org/show_bug.cgi?id=22908 - - test/radial-gradient.c | 36 +++++++++++++++++++++++------------- - test/radial-gradient.pdf.ref.png | Bin 79612 -> 277162 bytes - test/radial-gradient.ref.png | Bin 91159 -> 280971 bytes - 3 files changed, 23 insertions(+), 13 deletions(-) - -commit e98e2690cb4ac475819394334cb5e61a8e3d5557 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 18:32:47 2009 +0100 - - [test] Fix use of uninitialized widths. - - user-font-rescale copied unitialized values from the widths array into - the desired array. Although these corresponded to unused glyphs and so - were never used during the rendering, the values may have been illegal - causing FPE as they were copied. - - test/user-font-rescale.c | 13 +++++-------- - 1 files changed, 5 insertions(+), 8 deletions(-) - -commit 596dec95610ef02d86ede94eca5b83221b0b533a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 18:15:38 2009 +0100 - - [test] Trap SIGFPE - - Note the crash if we hit a floating-point exception. - - test/cairo-test.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 0561539880b480273767a9559da89a25970802e2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 18:31:37 2009 +0100 - - [scaled-font] cairo_scaled_font_glyph_extents() initialise extents - - Ensure that the extents are zeroed on error. - - src/cairo-scaled-font.c | 23 ++++++++++++++++------- - 1 files changed, 16 insertions(+), 7 deletions(-) - -commit 5c843b5f8eca4b6f9756644143bc1be3bc3cbc84 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 20:43:28 2009 +0100 - - [scaled-font] Skip empty glyphs - - Skip the composition of empty glyphs - prevents redundant calls through - the stack. - - src/cairo-scaled-font.c | 57 +++++++++++++++++++++++++--------------------- - 1 files changed, 31 insertions(+), 26 deletions(-) - -commit 0c4692a1d0667f5850f59c65754a3ffbaf688afe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 23:34:55 2009 +0100 - - [perf] Specify html file on cmdline instead of redirecting all output - - Redirecting all output was causing the build messages to be entangled with - the Performance Change html. - - perf/Makefile.am | 4 ++-- - perf/cairo-perf-diff | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 1ec1d6148e85d4a9b9da825ea57adb0b8ceba1c0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 22:42:44 2009 +0100 - - [perf] Compare performance against most recent tag. - - perf/Makefile.am | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 9d7fd626c39c37368ea05f91a358899e5b5b898c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 17:05:28 2009 +0100 - - [script] Decompress font sources - - Need to decompress patterns and embedded bytecode before passing to - fontconfig/FreeType. - - util/cairo-script/cairo-script-operators.c | 119 +++++++++++++++++++++++----- - 1 files changed, 99 insertions(+), 20 deletions(-) - -commit 5d8f366581c0ca31fac76c991cb681d036af275f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 16:36:02 2009 +0100 - - [test] clip representation is no longer surface dependent - - So we can test the api just once in the preamble and not per-target. - - test/get-clip.c | 200 ++++++++++++++++++++---------------------------------- - 1 files changed, 74 insertions(+), 126 deletions(-) - -commit c3f2db4f73e93a3dafe0f52a5f9ca09ca78cc906 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 15:18:55 2009 +0100 - - [drm] Add an accelerated image surface. - - Use the DRM interface to h/w accelerate composition on image surfaces. - The purpose of the backend is simply to explore what such a hardware - interface might look like and what benefits we might expect. The - use case that might justify writing such custom backends are embedded - devices running a drm compositor like wayland - which would, for example, - allow one to write applications that seamlessly integrated accelerated, - dynamic, high quality 2D graphics using Cairo with advanced interaction - (e.g. smooth animations in the UI) driven by a clutter framework... - - In this first step we introduce the fundamental wrapping of GEM for intel - and radeon chipsets, and, for comparison, gallium. No acceleration, all - we do is use buffer objects (that is use the kernel memory manager) to - allocate images and simply use the fallback mechanism. This provides a - suitable base to start writing chip specific drivers. - - boilerplate/Makefile.sources | 2 + - boilerplate/Makefile.win32.features | 20 + - boilerplate/cairo-boilerplate-drm.c | 91 ++++ - build/Makefile.win32.features | 2 + - build/Makefile.win32.features-h | 6 + - build/configure.ac.features | 1 + - configure.ac | 25 + - perf/cairo-perf-trace.c | 3 + - perf/cairo-perf.c | 5 +- - src/Makefile.sources | 13 + - src/Makefile.win32.features | 28 + - src/cairo-debug.c | 4 + - src/cairo-drm.h | 135 +++++ - src/cairo-freelist-private.h | 59 ++- - src/cairo-freelist.c | 73 +++ - src/cairo-image-surface.c | 1 + - src/cairo-mutex-list-private.h | 3 + - src/cairo.h | 2 + - src/cairoint.h | 8 + - src/drm/cairo-drm-bo.c | 120 +++++ - src/drm/cairo-drm-gallium-surface.c | 696 ++++++++++++++++++++++++++ - src/drm/cairo-drm-intel-private.h | 182 +++++++ - src/drm/cairo-drm-intel-surface.c | 475 ++++++++++++++++++ - src/drm/cairo-drm-intel.c | 933 +++++++++++++++++++++++++++++++++++ - src/drm/cairo-drm-ioctl-private.h | 12 + - src/drm/cairo-drm-private.h | 257 ++++++++++ - src/drm/cairo-drm-radeon-private.h | 110 ++++ - src/drm/cairo-drm-radeon-surface.c | 437 ++++++++++++++++ - src/drm/cairo-drm-radeon.c | 447 +++++++++++++++++ - src/drm/cairo-drm-surface.c | 517 +++++++++++++++++++ - src/drm/cairo-drm.c | 362 ++++++++++++++ - test/cairo-test.c | 2 +- - test/get-clip.c | 1 + - 33 files changed, 5025 insertions(+), 7 deletions(-) - -commit bed2701e1c89095878d549cbca8f22d84f3dda3c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 15:32:13 2009 +0100 - - Remove clip handling from generic surface layer. - - Handling clip as part of the surface state, as opposed to being part of - the operation state, is cumbersome and a hindrance to providing true proxy - surface support. For example, the clip must be copied from the surface - onto the fallback image, but this was forgotten causing undue hassle in - each backend. Another example is the contortion the meta surface - endures to ensure the clip is correctly recorded. By contrast passing the - clip along with the operation is quite simple and enables us to write - generic handlers for providing surface wrappers. (And in the future, we - should be able to write more esoteric wrappers, e.g. automatic 2x FSAA, - trivially.) - - In brief, instead of the surface automatically applying the clip before - calling the backend, the backend can call into a generic helper to apply - clipping. For raster surfaces, clip regions are handled automatically as - part of the composite interface. For vector surfaces, a clip helper is - introduced to replay and callback into an intersect_clip_path() function - as necessary. - - Whilst this is not primarily a performance related change (the change - should just move the computation of the clip from the moment it is applied - by the user to the moment it is required by the backend), it is important - to track any potential regression: - - ppc: - Speedups - ======== - image-rgba evolution-20090607-0 1026085.22 0.18% -> 672972.07 0.77%: 1.52x speedup - ▌ - image-rgba evolution-20090618-0 680579.98 0.12% -> 573237.66 0.16%: 1.19x speedup - ▎ - image-rgba swfdec-fill-rate-4xaa-0 460296.92 0.36% -> 407464.63 0.42%: 1.13x speedup - ▏ - image-rgba swfdec-fill-rate-2xaa-0 128431.95 0.47% -> 115051.86 0.42%: 1.12x speedup - ▏ - Slowdowns - ========= - image-rgba firefox-periodic-table-0 56837.61 0.78% -> 66055.17 3.20%: 1.09x slowdown - ▏ - - NEWS | 6 + - boilerplate/cairo-boilerplate-glitz-glx.c | 4 - - boilerplate/cairo-boilerplate-pdf.c | 1 - - boilerplate/cairo-boilerplate-ps.c | 8 +- - boilerplate/cairo-boilerplate-qt.cpp | 4 +- - boilerplate/cairo-boilerplate-svg.c | 1 - - boilerplate/cairo-boilerplate-test-surfaces.c | 113 +- - boilerplate/cairo-boilerplate.c | 100 +- - boilerplate/cairo-boilerplate.h | 2 + - perf/unaligned-clip.c | 3 + - src/Makefile.sources | 7 + - src/cairo-analysis-surface-private.h | 6 +- - src/cairo-analysis-surface.c | 539 ++++----- - src/cairo-beos-surface.cpp | 409 +++---- - src/cairo-clip-private.h | 87 +- - src/cairo-clip.c | 1290 ++++++++++---------- - src/cairo-debug.c | 2 + - src/cairo-directfb-surface.c | 491 ++++---- - src/cairo-ft-font.c | 53 +- - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 216 +++- - src/cairo-glitz-surface.c | 213 ++-- - src/cairo-gstate.c | 233 +++-- - src/cairo-image-surface.c | 173 ++- - src/cairo-meta-surface-private.h | 43 +- - src/cairo-meta-surface.c | 550 ++++----- - src/cairo-os2-surface.c | 14 +- - src/cairo-paginated-private.h | 2 - - src/cairo-paginated-surface-private.h | 9 - - src/cairo-paginated-surface.c | 234 ++--- - src/cairo-path-bounds.c | 65 +- - src/cairo-path-fill.c | 11 +- - src/cairo-path-fixed-private.h | 36 +- - src/cairo-path-fixed.c | 201 +++- - src/cairo-path-in-fill.c | 27 +- - src/cairo-path-stroke.c | 8 +- - src/cairo-pattern.c | 127 +- - src/cairo-pdf-surface-private.h | 3 + - src/cairo-pdf-surface.c | 220 ++-- - src/cairo-ps-surface-private.h | 4 + - src/cairo-ps-surface.c | 367 ++++--- - src/cairo-qt-surface.cpp | 373 +++--- - src/cairo-quartz-image-surface.c | 14 +- - src/cairo-quartz-private.h | 2 + - src/cairo-quartz-surface.c | 136 ++- - src/cairo-region-private.h | 73 ++ - src/cairo-region.c | 170 ++- - src/cairo-scaled-font.c | 132 +-- - src/cairo-script-surface.c | 611 ++++++++-- - src/cairo-script.h | 10 + - src/cairo-spans-private.h | 19 +- - src/cairo-spans.c | 20 +- - src/cairo-stroke-style.c | 8 +- - src/cairo-surface-clipper-private.h | 72 ++ - src/cairo-surface-clipper.c | 138 +++ - src/cairo-surface-fallback-private.h | 21 +- - src/cairo-surface-fallback.c | 995 +++++++++------- - src/cairo-surface-private.h | 19 +- - src/cairo-surface-wrapper-private.h | 156 +++ - src/cairo-surface-wrapper.c | 449 +++++++ - src/cairo-surface.c | 857 ++++---------- - src/cairo-svg-surface-private.h | 4 +- - src/cairo-svg-surface.c | 527 +++++---- - src/cairo-traps.c | 26 +- - src/cairo-type3-glyph-surface-private.h | 9 +- - src/cairo-type3-glyph-surface.c | 94 +- - src/cairo-types-private.h | 9 +- - src/cairo-user-font.c | 30 +- - src/cairo-vg-surface.c | 122 +- - src/cairo-win32-font.c | 16 +- - src/cairo-win32-printing-surface.c | 194 ++-- - src/cairo-win32-private.h | 15 +- - src/cairo-win32-surface.c | 279 ++--- - src/cairo-xcb-surface.c | 248 ++-- - src/cairo-xlib-surface-private.h | 2 +- - src/cairo-xlib-surface.c | 492 ++++---- - src/cairo.c | 83 +- - src/cairo.h | 30 +- - src/cairoint.h | 325 ++--- - src/test-fallback-surface.c | 4 +- - src/test-fallback16-surface.c | 4 +- - src/test-null-surface.c | 35 +- - src/test-paginated-surface.c | 100 +-- - src/test-paginated-surface.h | 6 +- - src/test-wrapping-surface.c | 272 ++++ - src/test-wrapping-surface.h | 51 + - test/Makefile.am | 75 +- - test/Makefile.sources | 2 + - test/buffer-diff.c | 12 +- - test/cairo-test.c | 18 +- - test/clip-operator.pdf.argb32.ref.png | Bin 0 -> 9340 bytes - test/clip-operator.pdf.argb32.xfail.png | Bin 9340 -> 0 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 0 -> 5146 bytes - test/clip-operator.pdf.rgb24.xfail.png | Bin 5155 -> 0 bytes - test/clip-operator.svg12.argb32.xfail.png | Bin 8404 -> 8406 bytes - test/clip-operator.svg12.rgb24.xfail.png | Bin 4523 -> 4540 bytes - test/clip-operator.xlib-fallback.ref.png | Bin 0 -> 3226 bytes - test/clip-operator.xlib-fallback.rgb24.ref.png | Bin 3254 -> 0 bytes - test/clip-push-group.pdf.ref.png | Bin 0 -> 164 bytes - test/clip-push-group.ref.png | Bin 199 -> 164 bytes - test/clip-push-group.xlib.ref.png | Bin 0 -> 155 bytes - test/clip-unbounded.c | 80 ++ - test/clip-unbounded.ref.png | Bin 0 -> 100 bytes - test/clip-unbounded.rgb24.ref.png | Bin 0 -> 97 bytes - test/clip-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 100 bytes - test/clipped-group.pdf.argb32.ref.png | Bin 298 -> 0 bytes - test/clipped-group.pdf.ref.png | Bin 0 -> 310 bytes - test/clipped-group.pdf.rgb24.ref.png | Bin 298 -> 0 bytes - test/clipped-group.ref.png | Bin 350 -> 316 bytes - ...integer-translate-source.svg12.argb32.xfail.png | Bin 0 -> 16392 bytes - ...-integer-translate-source.svg12.rgb24.xfail.png | Bin 0 -> 16392 bytes - test/device-offset-fractional.pdf.argb32.ref.png | Bin 275 -> 0 bytes - test/device-offset-fractional.pdf.ref.png | Bin 277 -> 0 bytes - test/device-offset-fractional.pdf.rgb24.ref.png | Bin 275 -> 0 bytes - test/device-offset-fractional.pdf.xfail.png | Bin 0 -> 275 bytes - test/extended-blend-alpha.svg12.argb32.xfail.png | Bin 0 -> 6857 bytes - test/extended-blend-alpha.svg12.rgb24.xfail.png | Bin 0 -> 5014 bytes - test/extended-blend.svg12.argb32.xfail.png | Bin 0 -> 2273 bytes - test/extended-blend.svg12.rgb24.xfail.png | Bin 0 -> 1856 bytes - test/fill-empty.argb32.ref.png | Bin 0 -> 99 bytes - test/fill-empty.c | 62 + - test/fill-empty.rgb24.ref.png | Bin 0 -> 97 bytes - test/fill-empty.svg12.rgb24.xfail.png | Bin 0 -> 99 bytes - test/filter-nearest-offset.pdf.xfail.png | Bin 1926 -> 1867 bytes - test/filter-nearest-transformed.pdf.xfail.png | Bin 488 -> 482 bytes - ...t-text-vertical-layout-type1.pdf.argb32.ref.png | Bin 3632 -> 0 bytes - test/ft-text-vertical-layout-type1.pdf.ref.png | Bin 3968 -> 3635 bytes - ...ft-text-vertical-layout-type1.pdf.rgb24.ref.png | Bin 3632 -> 0 bytes - ...t-text-vertical-layout-type3.pdf.argb32.ref.png | Bin 3642 -> 0 bytes - test/ft-text-vertical-layout-type3.pdf.ref.png | Bin 3634 -> 3639 bytes - ...ft-text-vertical-layout-type3.pdf.rgb24.ref.png | Bin 3642 -> 0 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 3609 -> 3608 bytes - test/group-unaligned.svg.argb32.xfail.png | Bin 522 -> 520 bytes - test/group-unaligned.xlib-fallback.ref.png | Bin 496 -> 474 bytes - test/image-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - test/image-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - test/in-fill-trapezoid.c | 19 +- - test/mask-glyphs.svg.ref.png | Bin 1211170 -> 1211147 bytes - test/mask.pdf.argb32.ref.png | Bin 0 -> 7837 bytes - test/mask.pdf.argb32.xfail.png | Bin 7944 -> 0 bytes - test/mask.pdf.rgb24.ref.png | Bin 0 -> 7301 bytes - test/mask.pdf.rgb24.xfail.png | Bin 7388 -> 0 bytes - test/mask.xlib-fallback.rgb24.ref.png | Bin 7216 -> 0 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4009 -> 3868 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3905 -> 3806 bytes - test/operator-clear.xlib.argb32.ref.png | Bin 0 -> 1071 bytes - test/operator-clear.xlib.ref.png | Bin 951 -> 0 bytes - test/operator-clear.xlib.rgb24.ref.png | Bin 0 -> 951 bytes - test/operator-source.pdf.rgb24.ref.png | Bin 0 -> 3645 bytes - test/operator-source.pdf.rgb24.xfail.png | Bin 3645 -> 0 bytes - test/operator-source.svg12.argb32.xfail.png | Bin 2951 -> 2967 bytes - test/operator-source.svg12.rgb24.xfail.png | Bin 2963 -> 2976 bytes - test/operator-source.xlib-fallback.ref.png | Bin 0 -> 3177 bytes - test/operator-source.xlib-fallback.rgb24.ref.png | Bin 3193 -> 0 bytes - test/path-append.xlib-fallback.ref.png | Bin 6357 -> 6320 bytes - test/pdf-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - test/pdf-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - test/ps-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - test/ps-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - test/push-group.xlib-fallback.rgb24.ref.png | Bin 2912 -> 0 bytes - test/scale-offset-image.meta.xfail.png | Bin 0 -> 8599 bytes - test/scale-offset-image.pdf.argb32.ref.png | Bin 8692 -> 0 bytes - test/scale-offset-image.pdf.rgb24.ref.png | Bin 8691 -> 0 bytes - test/scale-offset-image.pdf.xfail.png | Bin 0 -> 8692 bytes - test/scale-offset-image.xlib-fallback.xfail.png | Bin 0 -> 8580 bytes - test/scale-offset-similar.meta.xfail.png | Bin 0 -> 9095 bytes - test/scale-offset-similar.pdf.argb32.ref.png | Bin 9278 -> 0 bytes - test/scale-offset-similar.pdf.rgb24.ref.png | Bin 9278 -> 0 bytes - test/scale-offset-similar.pdf.xfail.png | Bin 0 -> 9369 bytes - test/scale-offset-similar.xlib-fallback.xfail.png | Bin 0 -> 8580 bytes - test/self-intersecting.argb32.xfail.png | Bin 287 -> 235 bytes - test/self-intersecting.pdf.argb32.xfail.png | Bin 295 -> 285 bytes - test/self-intersecting.pdf.rgb24.xfail.png | Bin 272 -> 269 bytes - test/self-intersecting.rgb24.xfail.png | Bin 282 -> 240 bytes - test/smask-fill.xlib-fallback.ref.png | Bin 1156 -> 0 bytes - test/smask-text.xlib.ref.png | Bin 0 -> 1672 bytes - test/smask.xlib.ref.png | Bin 0 -> 3393 bytes - test/surface-pattern-big-scale-down.ps.xfail.png | Bin 0 -> 238 bytes - test/svg-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - test/svg-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - ...allback16-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - ...fallback16-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - test/text-pattern.pdf.argb32.ref.png | Bin 0 -> 1831 bytes - test/text-pattern.pdf.argb32.xfail.png | Bin 1845 -> 0 bytes - test/text-pattern.pdf.rgb24.ref.png | Bin 0 -> 1598 bytes - test/text-pattern.pdf.rgb24.xfail.png | Bin 1599 -> 0 bytes - test/unbounded-operator.svg12.argb32.xfail.png | Bin 2767 -> 2771 bytes - test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1719 -> 1731 bytes - test/user-font-proxy.svg.ref.png | Bin 16817 -> 16814 bytes - test/xlib-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes - test/xlib-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes - util/cairo-script/cairo-script-file.c | 39 +- - util/cairo-script/cairo-script-objects.c | 22 + - util/cairo-script/cairo-script-private.h | 9 +- - util/cairo-script/cairo-script-scanner.c | 52 +- - util/cairo-trace/trace.c | 119 +- - 196 files changed, 7741 insertions(+), 5903 deletions(-) - -commit f5a1cdf283a6aa1f4409ccbf3c2274fb587724fe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 14:46:16 2009 +0100 - - [gl] Simplify the common CLEAR of a surface - - Almost every surface is at sometime cleared, so catch the operation in - paint(), and emit a simple glClear() instead. - - src/cairo-gl-surface.c | 25 ++++++++++++++++++++++++- - 1 files changed, 24 insertions(+), 1 deletions(-) - -commit eed17527f62eab826af65258b60cd4545a71a22d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 14:30:46 2009 +0100 - - [gl] Do not use unchecked GL v1.5 features - - The span renderer uses ARB_vertex_buffer_object which was included into - the core as part of OpenGL 1.5. We failed to check for the required version - during initialisation, and to my surprise the i915 can only support OpenGL - 1.4 as it lacks ARB_occlusion_query. So just use the ARB extension instead - which is present on i915. - - src/cairo-gl-surface.c | 24 +++++++++++++----------- - 1 files changed, 13 insertions(+), 11 deletions(-) - -commit 6c28c7a1e268fad0ad34cac0d8a9a3951d8f3c7a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 23 08:45:58 2009 +0100 - - [perf] Add a simple report printer. - - After a run, it can be useful to reprint the results, so add - cairo-perf-print to perform that task. - - For the future, I'd like to move the performance suite over to the - git/perf style of single, multi-function binary. - - The sequence of operations that I typically do are: - - ./cairo-perf-trace -r -v -i 6 > `git describe`.`hostname`.perf - ./cairo-perf-diff-files REVA REVB - ./cairo-perf-print REVA - ./cairo-perf-compare-backends REVA - - which misses the caching available with cairo-perf-diff. 'make html' is - almost what I want, but still too prescriptive. However, that does need to - be addressed for continuous performance monitoring. - - Along the perf lines, those sequence of operations become: - ./cairo-perf record -i 6 - ./cairo-perf report - ./cairo-perf report REVA REVB - ./cairo-perf report --backends="image,xlib,gl" REVA REVB - ./cairo-perf report --html REVA REVB - - Also we want to think about installing the cairo-perf binary. So we want - to differentiate when run inside a git checkout. - - perf/Makefile.am | 8 ++++- - perf/cairo-perf-print.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 78 insertions(+), 2 deletions(-) - -commit 92ba74d760f20cd257b3916a51c8efef1c0e021e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 19:04:07 2009 +0100 - - [vg] Compile fixes for EGL boilerplate - - boilerplate/cairo-boilerplate-vg.c | 19 +++++++++---------- - 1 files changed, 9 insertions(+), 10 deletions(-) - -commit bfbe875ded0b0666a8048ef5fb598179a81c610a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 07:52:30 2009 +0100 - - [gl] Enable GL backend for cairo-perf-trace - - perf/cairo-perf-trace.c | 3 +++ - perf/cairo-perf.c | 4 +++- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit fed000620335a5fc2bda2ffeca5cbdd0ca5a158c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 07:49:05 2009 +0100 - - [NEWS] Add stub for OpenGL. - - NEWS | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit bff0b11634ffe52a5c8b2bbc9b6aee5bc3d2772c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 07:45:21 2009 +0100 - - [gl] Update reference images - - test/Makefile.am | 14 ++++++++++++++ - test/a1-image-sample.gl.xfail.png | Bin 0 -> 120 bytes - test/alpha-similar.gl.argb32.xfail.png | Bin 0 -> 99 bytes - test/alpha-similar.gl.rgb24.xfail.png | Bin 0 -> 93 bytes - test/device-offset-fractional.gl.xfail.png | Bin 0 -> 311 bytes - test/filter-nearest-offset.gl.xfail.png | Bin 0 -> 260 bytes - test/filter-nearest-transformed.gl.xfail.png | Bin 0 -> 514 bytes - test/finer-grained-fallbacks.gl.argb32.ref.png | Bin 0 -> 1075 bytes - test/mask-glyphs.gl.ref.png | Bin 0 -> 1188669 bytes - test/meta-surface-pattern.gl.argb32.ref.png | Bin 0 -> 3130 bytes - test/scale-offset-image.gl.ref.png | Bin 0 -> 9197 bytes - test/scale-offset-similar.gl.ref.png | Bin 0 -> 9197 bytes - test/source-clip-scale.gl.ref.png | Bin 0 -> 164 bytes - test/unbounded-operator.gl.argb32.xfail.png | Bin 0 -> 2805 bytes - test/unbounded-operator.gl.rgb24.xfail.png | Bin 0 -> 1355 bytes - 15 files changed, 14 insertions(+), 0 deletions(-) - -commit 653351cd2e9fbe42333cd5ce57b7b49c6da3d122 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 07:38:24 2009 +0100 - - [gl] Copy font options from image backend. - - Enable hint metrics similar to the default image backend. However, - consider using the display stored in the GLX context to query the screen - default. - - src/cairo-gl-surface.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit a2ac67274d4ef89079c47cc415144a6ac0303f70 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 00:05:07 2009 +0100 - - [gl] Add warning about missing hook for XCloseDisplay(). - - src/cairo-glx-context.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit f2f42ec70a626a69f4b29f55f9d1818942bb0b19 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 22 00:01:22 2009 +0100 - - [gl] Apply pixel sample bias for spans - - src/cairo-gl-surface.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 9e420f5d0669ec12eaaf7faf4e55642c10b95fb3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:45:00 2009 +0100 - - [gl] Another whitespace pass. - - src/cairo-gl-surface.c | 69 ++++++++++++++++++++++++----------------------- - 1 files changed, 35 insertions(+), 34 deletions(-) - -commit 222fd8b49b25c56f38ad375059240983a8f576ce -Merge: 5471603 7ee0fee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:42:34 2009 +0100 - - Merge commit 'anholt/gl-span-renderer' - -commit 5471603b527ecf43aaa72665d47929a1038aa642 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:38:05 2009 +0100 - - [gl] Use QUADS for drawing fill_rectangles() not TRIFAN - - As each rectangle is independent, we need to draw the array using QUADS. - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c3ef0c8d2011a23d73ff919dbb947ca68e1d8c1b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:31:30 2009 +0100 - - [gl] Whitespace - - Ensure we leave a space between a function call and its parameters. - - src/cairo-gl-surface.c | 90 ++++++++++++++++++++++++------------------------ - 1 files changed, 45 insertions(+), 45 deletions(-) - -commit b71c27bf4ebd19f74f22392ddb2612d843c74a38 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:26:15 2009 +0100 - - [gl] Remove dead code. - - The loop between texture_setup() and clone_similar() should be - impossible, since every compositing backend should know how to clone an - image surface. cairo-gl is no longer an exception and so this code can - safely be removed. - - src/cairo-gl-surface.c | 25 +------------------------ - 1 files changed, 1 insertions(+), 24 deletions(-) - -commit c8cc6a205a68a7c87239424aa93a29b5b166561d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 23:08:39 2009 +0100 - - [gl] Avoid temporary allocation of pixman trapezoids - - When creating the trapezoid mask, avoid having to allocate a temporary - array to hold the converted pixman trapezoids by instead rasterizing each - trapezoid separately into the mask. - - src/cairo-gl-surface.c | 82 +++++++++++++++++++++--------------------------- - 1 files changed, 36 insertions(+), 46 deletions(-) - -commit 5deb8fa213ce86759053be391966618ee0959f50 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 9 16:20:32 2009 +0100 - - [gl] Construct a dummy window for the initial context - - In order to make the initial context current we need a Drawable that - matches the context. In general, the RootWindow may not match the desired - context so we need to query the context and construct an appropriate - Drawable. - - src/cairo-glx-context.c | 70 ++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 63 insertions(+), 7 deletions(-) - -commit 911482e5ae88ba26a1b3290731968f8b8a80cd70 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 22 23:44:27 2009 +0100 - - [gl] Constrain image sources to max texture size - - src/cairo-gl-private.h | 2 ++ - src/cairo-gl-surface.c | 19 +++++++++++++++++++ - 2 files changed, 21 insertions(+), 0 deletions(-) - -commit 1ae5942a3aa9f73aa71438dc40221836b0dff7e2 -Merge: fd9df49 6a59574 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 22:28:44 2009 +0100 - - Merge commit 'anholt/gl' - - Conflicts: - boilerplate/Makefile.sources - boilerplate/cairo-boilerplate.c - build/configure.ac.features - src/cairo.h - util/cairo-script/Makefile.am - -commit fd9df4978d56bbb85ecd795afce72c0310dbcf3f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 21 20:51:46 2009 +0100 - - [perf] Don't override CAIRO_TRACE_DIR in cairo-perf-diff - - perf/cairo-perf-diff | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 2dd97ae59c482f09e42d719a941e189560f00b8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 22:19:21 2009 +0100 - - [perf] Include trace comparison in html output - - build/Makefile.am.analysis | 2 ++ - perf/Makefile.am | 2 +- - perf/cairo-perf-diff | 17 +++++++---------- - perf/make-html.py | 3 +-- - 4 files changed, 11 insertions(+), 13 deletions(-) - -commit f30cee70f5fadd1f2af60310a148f61ed4fc7069 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 22:17:30 2009 +0100 - - [perf] Search multiple directories for traces - - In view of sharing traces between multiple builder, add some system wide - directories to the search path. This should be refined to a single - canonical location before release. - - perf/cairo-perf-trace.c | 23 +++++++++++++++++++++-- - 1 files changed, 21 insertions(+), 2 deletions(-) - -commit ebac096648d638d6405152d37d7b58a0f6ad3242 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 19:54:12 2009 +0100 - - [build] And export CC_FOR_BUILD so that we can actually use it! - - build/configure.ac.tools | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ed7853d4991f17a5e6df694808d33603eecf9186 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 19:37:27 2009 +0100 - - [build] Use ${CC} as the default value for CC_FOR_BUILD - - build/configure.ac.tools | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 809f77a5cb7c17582a0ed90285a3c48c0696ed3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 13:44:48 2009 +0100 - - [test] Summarise tests that fail during the preamble. - - Some tests only run and check during the preamble phase, and those - failures were being ignored during the summary. - - test/cairo-test-runner.c | 109 ++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 85 insertions(+), 24 deletions(-) - -commit dbaa08e80b6d53f905974f3d2012f9425d9b8603 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 11:53:17 2009 +0100 - - [test] Fallback to comparing the base image references - - After looking at backend specific images, check against the base image - reference. This is useful to fallback surfaces like xlib-fallback, which - should look closer to the image backend than the xlib backend. - - test/cairo-test.c | 231 +++++++++++++++++++++++++++++++++++++---------------- - 1 files changed, 163 insertions(+), 68 deletions(-) - -commit 164e0d2ea38baacd5888bffa5bebb5d64bfee01b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 11:02:04 2009 +0100 - - [test] Misidentification of XFAIL as NEW - - cut'n'paste error compared the image against the known failure instead of - any recorded new failure, when checking for NEW fails. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2883177487ba294a0c97bafb00e2f56e5fe84d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 20 18:55:04 2009 +0100 - - Add a jhbuild moduleset. - - util/cairo.modules | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit 0c1e86d661e145981050129b163eae0fb8f4a963 -Author: Pierre Tardy <tardyp@gmail.com> -Date: Sat Jul 18 19:16:20 2009 +0100 - - Cross-compilation fix for boilerplate/test - - boilerplate/Makefile.am | 2 +- - test/Makefile.am | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit aac256b2692d15fc21abcdc9c1b9e5fd35f63f66 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 18 16:15:47 2009 +0100 - - Compile fixes for mingw32. - - Trivial typos found whilst using a cross-compiler. - - src/cairo-win32-surface.c | 1 + - util/cairo-script/cairo-script-private.h | 4 ++-- - 2 files changed, 3 insertions(+), 2 deletions(-) - -commit 922b01ad141305f909a4cfffc6c65a27c6d7a8a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 17 14:27:19 2009 +0100 - - [test] Add a simplified CLEAR test. - - Just performs a very basic masked clear. This does not exhibit the bug I was - looking for, but is still useful for its simplicity. - - test/Makefile.am | 4 ++ - test/Makefile.sources | 1 + - test/clear.argb32.ref.png | Bin 0 -> 695 bytes - test/clear.c | 86 +++++++++++++++++++++++++++++++++++++ - test/clear.rgb24.ref.png | Bin 0 -> 618 bytes - test/clear.svg12.argb32.xfail.png | Bin 0 -> 170 bytes - test/clear.svg12.rgb24.xfail.png | Bin 0 -> 170 bytes - 7 files changed, 91 insertions(+), 0 deletions(-) - -commit 52fa8760aeef38abbab0484a6978adaf4f100f90 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 15 16:37:25 2009 +0100 - - Add OpenVG backend. - - Based on the work by Øyvind Kolås and Pierre Tardy -- many thanks to - Pierre for pushing this backend for inclusion as well as testing and - reviewing my initial patch. And many more thanks to pippin for writing the - backend in the first place! - - Hacked and chopped by myself into a suitable basis for a backend. Quite a - few issues remain open, but would seem to be ready for testing on suitable - hardware. - - AUTHORS | 3 +- - NEWS | 3 + - boilerplate/Makefile.sources | 1 + - boilerplate/Makefile.win32.features | 30 + - boilerplate/cairo-boilerplate-vg.c | 350 +++++++ - build/Makefile.win32.features | 3 + - build/Makefile.win32.features-h | 9 + - build/configure.ac.features | 3 + - configure.ac | 43 + - src/Makefile.sources | 3 + - src/Makefile.win32.features | 42 + - src/cairo-vg-surface.c | 1938 +++++++++++++++++++++++++++++++++++ - src/cairo-vg.h | 103 ++ - src/cairo.h | 4 +- - test/cairo-test.c | 3 +- - test/get-clip.c | 1 + - util/cairo-trace/trace.c | 70 ++ - 17 files changed, 2606 insertions(+), 3 deletions(-) - -commit 34d5b862bce3e9273391eb5d2c384394cca94d2d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 16 14:18:13 2009 +0100 - - [xlib] Enable Render support for the extended PDF operators - - With the latest 0.11 release of renderproto we now have the ability to - use the extended PDF operators via Render. - - src/cairo-image-surface.c | 10 +++++--- - src/cairo-xlib-surface.c | 48 ++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 51 insertions(+), 7 deletions(-) - -commit 01eec61f4ffae4f492d667b6accb5ed3f6960d2c -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:59 2009 -0400 - - [qt] Remove use of unnecessary QBrush pointer - - QBrush is a implicitly shared datastructure. There is on need to layer - "explicit pointer based sharing" atop of it. - - Mozilla Bug #498871 - - src/cairo-qt-surface.cpp | 31 +++++++++++++++---------------- - 1 files changed, 15 insertions(+), 16 deletions(-) - -commit 222c12cc4e48c2c9178a7390ea8edd73d7cb56bb -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:59 2009 -0400 - - [qt] Remove use of unnecessary QPen pointer - - QPen is a implicitly shared class, so there is no need to do explicit sharing - via pointers. - - Mozilla Bug #498873 - - src/cairo-qt-surface.cpp | 22 ++++++++++------------ - 1 files changed, 10 insertions(+), 12 deletions(-) - -commit 0797b2fcaad0c17c35e67ec5d01a0556a76ee39d -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:59 2009 -0400 - - [qt] Cleanup some whitespace - - Mozilla bug #498843 - - src/cairo-qt-surface.cpp | 212 +++++++++++++++++++++++----------------------- - 1 files changed, 106 insertions(+), 106 deletions(-) - -commit d782ba04b76ae18c562840242dc535e9db48aa13 -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:58 2009 -0400 - - [qt] Add method to flush qpainter - - This is required for non-X11 rendering backends. - - Mozilla bug #498910 - - src/cairo-qt-surface.cpp | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit e713857b85ef45d923eae94d8e4c05c7b2049ca5 -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:58 2009 -0400 - - [qt] Move _opstr() inside the #if 0 to avoid warnings - - Mozilla bug #498917 - - src/cairo-qt-surface.cpp | 50 +++++++++++++++++++++++----------------------- - 1 files changed, 25 insertions(+), 25 deletions(-) - -commit 4f9551e5e533deb66401b601766bf4263192b6de -Author: Tobias Hunger <tobias.hunger@gmail.com> -Date: Thu Jul 16 00:16:57 2009 -0400 - - [qt] Reduce padding in cairo_qt_surface_t struct - - Removes 4 bytes of padding (on a 32bit system) from the datastructure by - reordering the members. - - Mozilla bug #498880 - - src/cairo-qt-surface.cpp | 27 ++++++++++++++------------- - 1 files changed, 14 insertions(+), 13 deletions(-) - -commit 1caa34103925c53b180cd614f5c6b425b5a3f271 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 15 13:26:34 2009 +0100 - - Fix build under distcheck - - Need to play a little dance to get the sources included and paths correct - whilst building source files with objdir != srcdir under distcheck. - - boilerplate/Makefile.am | 10 ++-- - boilerplate/make-cairo-boilerplate-constructors.c | 19 ++++-- - doc/public/tmpl/cairo-surface.sgml | 2 + - doc/public/tmpl/cairo.sgml | 15 ++++ - test/Makefile.am | 9 +-- - test/make-cairo-test-constructors.c | 13 +++- - util/cairo-script/csi-bind.c | 76 +++++++++++++++++++++ - 7 files changed, 125 insertions(+), 19 deletions(-) - -commit 818ad38a0e323892231469520a4b077f4dae31d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 19:07:42 2009 +0100 - - [boilerplate] Add make-...-constructors to .gitignore - - boilerplate/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 9a65b4a116a3ae451cbba2826467ad3375235a5c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 19:06:53 2009 +0100 - - [perf] Add cairo-traces to .gitignore - - perf/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5796a9240ea02dbdbef0d51a4ee71398fea858ad -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 19:04:56 2009 +0100 - - [test] Reconstruct REFERENCE_IMAGES - - Rebuild the list from scratch using the contents of my git working tree. - - test/Makefile.am | 449 +++++++++++++++++++++-------------------------------- - 1 files changed, 178 insertions(+), 271 deletions(-) - -commit 8c55ca9ebce487c5ca8b1712f8358a6361032d43 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 16:54:51 2009 +0100 - - [directfb] Silence compiler warnings. - - Add extended blend mode to operator switch. - - src/cairo-directfb-surface.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 8ad3fca2109f18b5125e7087b3059eb4225eec3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 16:51:31 2009 +0100 - - [glitz] Extended blend mode support - - Ensure that we fallback given an extended operator. - - src/cairo-glitz-surface.c | 80 +++++++++++++++++++++++++++++++++----------- - 1 files changed, 60 insertions(+), 20 deletions(-) - -commit 333d37a60fa80f325612ea94b19ec9892dff8cfb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 16:41:00 2009 +0100 - - [pdf] Silence copmiler. - - Fill in missing case values to silence the compiler, and remind us should - we every add more operators in future. - - src/cairo-pdf-surface.c | 95 ++++++++++++++++++++++++----------------------- - 1 files changed, 48 insertions(+), 47 deletions(-) - -commit 710308c64e298ae35988fb0881a33cbe92af48ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 16:31:41 2009 +0100 - - [script] Extended blend mode support. - - src/cairo-script-surface.c | 18 +++++++++++++++++- - util/cairo-script/cairo-script-operators.c | 15 +++++++++++++++ - util/cairo-trace/trace.c | 18 +++++++++++++++++- - 3 files changed, 49 insertions(+), 2 deletions(-) - -commit 100f0d94eebcec05372263b2e68c27b91b52a1c8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jul 14 16:30:36 2009 +0100 - - [cairo] Remove trailing spaces in comments. - - vim highlights these errors making my screen go red and upsets me. - So they must die. - - src/cairo.h | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit 75736603d3b976dab8ac1ef473164c618084ee60 -Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> -Date: Wed Aug 29 15:11:23 2007 +0200 - - [SVG] Add extended blend modes. - - src/cairo-svg-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 47af6cf2803737ab7248d1ce4d76f038d1f3188e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Jul 14 15:34:13 2009 +0200 - - [pdf] Add support for the extra blend modes - - HSL modes support added by Benjamin Otte <otte@gnome.org> - - src/cairo-pdf-surface-private.h | 4 + - src/cairo-pdf-surface.c | 162 ++++++++++++++++++++++++++++++++++++++- - 2 files changed, 164 insertions(+), 2 deletions(-) - -commit cf186d60b0d96cde859869237fa859e28a74a037 -Author: Benjamin Otte <otte@gnome.org> -Date: Thu Aug 30 10:16:00 2007 +0200 - - [xlib] Add support for new operators - - This is of course just making sure fallbacks get used as Render does not support - the new operators yet. - - src/cairo-xlib-surface.c | 28 +++++++++++++++++++++++++++- - 1 files changed, 27 insertions(+), 1 deletions(-) - -commit 0fd944d4bfbc2fff9960378eafd18a7d8fb9f296 -Author: Benjamin Otte <otte@gnome.org> -Date: Tue Jul 14 15:28:10 2009 +0200 - - Use new pixman extended blend operators - - It also adds extended-blend tests. - - Based on a previous patch by Emmanuel Pacaud <emmanuel.pacaud@free.fr> - - src/cairo-image-surface.c | 31 ++++++++ - src/cairo-misc.c | 30 ++++++++ - src/cairo.h | 53 +++++++++++++- - test/Makefile.am | 4 + - test/Makefile.sources | 2 + - test/extended-blend-alpha.argb32.ref.png | Bin 0 -> 9777 bytes - test/extended-blend-alpha.c | 115 +++++++++++++++++++++++++++++ - test/extended-blend-alpha.rgb24.ref.png | Bin 0 -> 5743 bytes - test/extended-blend.argb32.ref.png | Bin 0 -> 4071 bytes - test/extended-blend.c | 117 ++++++++++++++++++++++++++++++ - test/extended-blend.rgb24.ref.png | Bin 0 -> 3772 bytes - 11 files changed, 351 insertions(+), 1 deletions(-) - -commit 16387f0a7dd3b474bcaf637d3e290029b79afec1 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jul 14 11:16:24 2009 +0200 - - [configure] Bump pixman dependency - - Version 0.15.16 contains the new PDF blend mode operators. - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 655a4dbc36d95ce4a82cbc13aa9e2002b41fa4de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 13 14:31:43 2009 +0100 - - [test] Track XFAIL using expected results stored as xfail.png - - Instead of tagging the sources, which is insensitive to changes, track the - known failure modes by recording the current fail as an xfail.png - reference. (We also introduce a new.png to track a fresh error, so that - they are not lost in the noise of the old XFAILs and hopefully do not - cause everyone to fret). - - As we have removed the XFAIL tagging we find, surprise surprise, that some - tests are now working -- so review all the reference images (as also some - .ref.png now should be .xfail.png). - - Note: I've only checked image,pdf,ps,svg. The test surfaces report some - failures that probably need to addressed in source. I've not correct the - changes for win32 and quartz. Nor fixed up the experimental backends. - - test/alpha-similar.c | 2 +- - test/alpha-similar.pdf.argb32.xfail.png | Bin 0 -> 95 bytes - test/alpha-similar.pdf.rgb24.xfail.png | Bin 0 -> 93 bytes - test/alpha-similar.ps.argb32.xfail.png | Bin 0 -> 95 bytes - test/alpha-similar.ps.rgb24.xfail.png | Bin 0 -> 93 bytes - test/alpha-similar.svg.argb32.xfail.png | Bin 0 -> 99 bytes - test/alpha-similar.svg.rgb24.xfail.png | Bin 0 -> 95 bytes - test/big-line.c | 2 +- - test/big-line.ps.argb32.ref.png | Bin 0 -> 977 bytes - test/big-line.ps.rgb24.ref.png | Bin 0 -> 709 bytes - test/big-line.ps2.ref.png | Bin 1148 -> 0 bytes - test/big-line.ps2.rgb24.ref.png | Bin 830 -> 0 bytes - test/big-line.ps3.ref.png | Bin 1148 -> 0 bytes - test/big-line.ps3.rgb24.ref.png | Bin 830 -> 0 bytes - test/big-line.ref.png | Bin 1486 -> 0 bytes - test/big-line.rgb24.ref.png | Bin 1308 -> 0 bytes - test/big-trap.c | 7 +- - test/cairo-test-runner.c | 161 ++------ - test/cairo-test.c | 405 ++++++++++++++------ - test/cairo-test.h | 56 +++- - test/caps-joins-alpha.svg11.ref.png | Bin 2454 -> 0 bytes - test/caps-joins-alpha.svg12.ref.png | Bin 2454 -> 0 bytes - test/clip-fill-rule.test-fallback.rgb24.ref.png | Bin 361 -> 0 bytes - test/clip-nesting.test-fallback.rgb24.ref.png | Bin 936 -> 0 bytes - test/clip-operator.c | 2 +- - test/clip-operator.pdf.argb32.ref.png | Bin 11603 -> 0 bytes - test/clip-operator.pdf.argb32.xfail.png | Bin 0 -> 9340 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 6882 -> 0 bytes - test/clip-operator.pdf.rgb24.xfail.png | Bin 0 -> 5155 bytes - test/clip-operator.svg12.argb32.xfail.png | Bin 0 -> 8404 bytes - test/clip-operator.svg12.rgb24.xfail.png | Bin 0 -> 4523 bytes - test/clip-operator.test-fallback.argb32.ref.png | Bin 8252 -> 0 bytes - test/clip-operator.test-fallback.rgb24.ref.png | Bin 3241 -> 0 bytes - test/clip-twice.test-fallback.argb32.ref.png | Bin 1343 -> 0 bytes - test/clip-twice.test-fallback.rgb24.ref.png | Bin 1179 -> 0 bytes - test/composite-integer-translate-source.c | 2 +- - test/degenerate-arc.test-fallback.argb32.ref.png | Bin 547 -> 0 bytes - test/degenerate-arc.test-fallback.rgb24.ref.png | Bin 547 -> 0 bytes - test/degenerate-dash.c | 2 +- - test/degenerate-dash.ps.xfail.png | Bin 0 -> 1835 bytes - test/degenerate-path.c | 2 +- - test/degenerate-path.ps.argb32.xfail.png | Bin 0 -> 236 bytes - test/degenerate-path.ps.rgb24.xfail.png | Bin 0 -> 186 bytes - test/degenerate-path.ps2.argb32.ref.png | Bin 390 -> 0 bytes - test/degenerate-path.ps2.rgb24.ref.png | Bin 358 -> 0 bytes - test/degenerate-path.ps3.argb32.ref.png | Bin 390 -> 0 bytes - test/degenerate-path.ps3.rgb24.ref.png | Bin 358 -> 0 bytes - test/device-offset-scale.c | 2 +- - test/device-offset-scale.svg.xfail.png | Bin 0 -> 128 bytes - test/extend-pad-border.c | 2 +- - test/extend-pad-border.ps.ref.png | Bin 0 -> 649 bytes - test/extend-pad-border.svg.xfail.png | Bin 0 -> 1063 bytes - test/extend-pad-similar.svg.xfail.png | Bin 0 -> 270 bytes - test/extend-pad.svg.xfail.png | Bin 0 -> 270 bytes - test/fallback-resolution.c | 14 +- - test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 3750 -> 0 bytes - test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 3758 -> 0 bytes - ...fill-alpha-pattern.test-fallback.argb32.ref.png | Bin 3379 -> 0 bytes - .../fill-alpha-pattern.test-fallback.rgb24.ref.png | Bin 3379 -> 0 bytes - test/fill-alpha.test-fallback.argb32.ref.png | Bin 2824 -> 0 bytes - test/fill-alpha.test-fallback.rgb24.ref.png | Bin 2824 -> 0 bytes - test/fill-and-stroke-alpha-add.c | 2 +- - test/fill-and-stroke-alpha-add.svg12.xfail.png | Bin 0 -> 614 bytes - test/fill-degenerate-sort-order.c | 2 +- - .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin 0 -> 1901 bytes - test/fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin 0 -> 1645 bytes - ...enerate-sort-order.test-fallback.argb32.ref.png | Bin 2378 -> 0 bytes - ...generate-sort-order.test-fallback.rgb24.ref.png | Bin 2041 -> 0 bytes - test/fill-image.xlib.ref.png | Bin 0 -> 1460 bytes - test/fill-rule.test-fallback.argb32.ref.png | Bin 1979 -> 0 bytes - test/fill-rule.test-fallback.rgb24.ref.png | Bin 1703 -> 0 bytes - test/filter-bilinear-extents.pdf.ref.png | Bin 798 -> 0 bytes - test/filter-bilinear-extents.pdf.xfail.png | Bin 0 -> 401 bytes - test/filter-nearest-offset.pdf.ref.png | Bin 997 -> 0 bytes - test/filter-nearest-offset.pdf.xfail.png | Bin 0 -> 1926 bytes - test/filter-nearest-offset.svg.xfail.png | Bin 0 -> 4419 bytes - test/filter-nearest-offset.svg11.ref.png | Bin 4739 -> 0 bytes - test/filter-nearest-offset.svg12.ref.png | Bin 4739 -> 0 bytes - test/filter-nearest-transformed.pdf.ref.png | Bin 552 -> 0 bytes - test/filter-nearest-transformed.pdf.xfail.png | Bin 0 -> 488 bytes - test/filter-nearest-transformed.svg.xfail.png | Bin 0 -> 546 bytes - test/filter-nearest-transformed.svg11.ref.png | Bin 559 -> 0 bytes - test/filter-nearest-transformed.svg12.ref.png | Bin 559 -> 0 bytes - test/finer-grained-fallbacks.c | 2 +- - test/finer-grained-fallbacks.svg12.argb32.ref.png | Bin 0 -> 190 bytes - test/finer-grained-fallbacks.svg12.rgb24.ref.png | Bin 0 -> 191 bytes - ...-grained-fallbacks.test-fallback.argb32.ref.png | Bin 1111 -> 0 bytes - ...r-grained-fallbacks.test-fallback.rgb24.ref.png | Bin 854 -> 0 bytes - test/font-matrix-translation.svg.ref.png | Bin 0 -> 870 bytes - test/font-matrix-translation.svg11.argb32.ref.png | Bin 857 -> 0 bytes - test/font-matrix-translation.svg11.ref.png | Bin 970 -> 0 bytes - test/font-matrix-translation.svg11.rgb24.ref.png | Bin 857 -> 0 bytes - test/font-matrix-translation.svg12.argb32.ref.png | Bin 857 -> 0 bytes - test/font-matrix-translation.svg12.ref.png | Bin 970 -> 0 bytes - test/font-matrix-translation.svg12.rgb24.ref.png | Bin 857 -> 0 bytes - test/ft-show-glyphs-positioning.svg.ref.png | Bin 0 -> 6018 bytes - test/ft-show-glyphs-positioning.svg11.ref.png | Bin 6590 -> 0 bytes - test/ft-show-glyphs-positioning.svg12.ref.png | Bin 6590 -> 0 bytes - test/ft-show-glyphs-table.svg.ref.png | Bin 0 -> 10005 bytes - test/ft-show-glyphs-table.svg11.argb32.ref.png | Bin 9953 -> 0 bytes - test/ft-show-glyphs-table.svg11.rgb24.ref.png | Bin 9953 -> 0 bytes - test/ft-show-glyphs-table.svg12.argb32.ref.png | Bin 9953 -> 0 bytes - test/ft-show-glyphs-table.svg12.rgb24.ref.png | Bin 9953 -> 0 bytes - test/ft-text-vertical-layout-type1.svg.ref.png | Bin 0 -> 3607 bytes - ...text-vertical-layout-type1.svg11.argb32.ref.png | Bin 3614 -> 0 bytes - test/ft-text-vertical-layout-type1.svg11.ref.png | Bin 3973 -> 0 bytes - ...-text-vertical-layout-type1.svg11.rgb24.ref.png | Bin 3614 -> 0 bytes - ...text-vertical-layout-type1.svg12.argb32.ref.png | Bin 3614 -> 0 bytes - test/ft-text-vertical-layout-type1.svg12.ref.png | Bin 3973 -> 0 bytes - ...-text-vertical-layout-type1.svg12.rgb24.ref.png | Bin 3614 -> 0 bytes - ...tical-layout-type1.test-fallback.argb32.ref.png | Bin 3639 -> 0 bytes - ...rtical-layout-type1.test-fallback.rgb24.ref.png | Bin 3639 -> 0 bytes - test/ft-text-vertical-layout-type3.svg.ref.png | Bin 0 -> 3626 bytes - ...text-vertical-layout-type3.svg11.argb32.ref.png | Bin 3640 -> 0 bytes - test/ft-text-vertical-layout-type3.svg11.ref.png | Bin 3957 -> 0 bytes - ...-text-vertical-layout-type3.svg11.rgb24.ref.png | Bin 3640 -> 0 bytes - ...text-vertical-layout-type3.svg12.argb32.ref.png | Bin 3640 -> 0 bytes - test/ft-text-vertical-layout-type3.svg12.ref.png | Bin 3957 -> 0 bytes - ...-text-vertical-layout-type3.svg12.rgb24.ref.png | Bin 3640 -> 0 bytes - ...tical-layout-type3.test-fallback.argb32.ref.png | Bin 3605 -> 0 bytes - ...rtical-layout-type3.test-fallback.rgb24.ref.png | Bin 3605 -> 0 bytes - test/gradient-alpha.pdf.argb32.ref.png | Bin 126 -> 0 bytes - test/gradient-alpha.pdf.rgb24.ref.png | Bin 121 -> 0 bytes - test/gradient-constant-alpha.pdf.argb32.ref.png | Bin 116 -> 0 bytes - test/gradient-constant-alpha.pdf.rgb24.ref.png | Bin 115 -> 0 bytes - test/group-unaligned.pdf.new.png | Bin 0 -> 427 bytes - test/group-unaligned.pdf.ref.png | Bin 414 -> 0 bytes - test/group-unaligned.svg.argb32.ref.png | Bin 524 -> 0 bytes - test/group-unaligned.svg.argb32.xfail.png | Bin 0 -> 522 bytes - test/group-unaligned.svg.rgb24.ref.png | Bin 434 -> 0 bytes - test/group-unaligned.svg.rgb24.xfail.png | Bin 0 -> 425 bytes - test/huge-linear.c | 2 +- - test/huge-linear.pdf.ref.png | Bin 0 -> 1577 bytes - test/huge-radial.c | 2 +- - test/huge-radial.pdf.argb32.ref.png | Bin 0 -> 177382 bytes - test/huge-radial.pdf.rgb24.ref.png | Bin 0 -> 225358 bytes - test/large-source-roi.c | 2 +- - test/large-source-roi.ref.png | Bin 102 -> 0 bytes - test/linear-gradient.pdf.ref.png | Bin 1125 -> 0 bytes - test/linear-gradient.svg11.argb32.ref.png | Bin 988 -> 0 bytes - test/linear-gradient.svg11.ref.png | Bin 1000 -> 0 bytes - test/linear-gradient.svg11.rgb24.ref.png | Bin 988 -> 0 bytes - test/linear-gradient.svg12.argb32.ref.png | Bin 988 -> 0 bytes - test/linear-gradient.svg12.ref.png | Bin 1000 -> 0 bytes - test/linear-gradient.svg12.rgb24.ref.png | Bin 988 -> 0 bytes - test/linear-gradient.test-fallback.argb32.ref.png | Bin 923 -> 0 bytes - test/linear-gradient.test-fallback.rgb24.ref.png | Bin 923 -> 0 bytes - test/long-lines.c | 2 +- - test/long-lines.ref.png | Bin 247 -> 0 bytes - test/make-html.pl | 13 +- - test/mask-alpha.svg.rgb24.xfail.png | Bin 0 -> 585 bytes - test/mask-alpha.svg11.argb32.ref.png | Bin 642 -> 0 bytes - test/mask-alpha.svg11.rgb24.ref.png | Bin 592 -> 0 bytes - test/mask-alpha.svg12.argb32.ref.png | Bin 642 -> 0 bytes - test/mask-alpha.svg12.rgb24.ref.png | Bin 592 -> 0 bytes - test/mask-alpha.test-fallback.argb32.ref.png | Bin 627 -> 0 bytes - test/mask-ctm.svg11.argb32.ref.png | Bin 108 -> 0 bytes - test/mask-ctm.svg12.argb32.ref.png | Bin 108 -> 0 bytes - test/mask-glyphs.c | 2 +- - test/mask-glyphs.pdf.ref.png | Bin 0 -> 1187713 bytes - test/mask-glyphs.svg.ref.png | Bin 0 -> 1211170 bytes - test/mask-surface-ctm.svg11.argb32.ref.png | Bin 108 -> 0 bytes - test/mask-surface-ctm.svg12.argb32.ref.png | Bin 108 -> 0 bytes - test/mask-transformed-similar.svg.ref.png | Bin 0 -> 3365 bytes - test/mask-transformed-similar.svg11.ref.png | Bin 4051 -> 0 bytes - test/mask-transformed-similar.svg12.ref.png | Bin 4051 -> 0 bytes - test/mask.pdf.argb32.ref.png | Bin 9946 -> 0 bytes - test/mask.pdf.argb32.xfail.png | Bin 0 -> 7944 bytes - test/mask.pdf.rgb24.ref.png | Bin 8745 -> 0 bytes - test/mask.pdf.rgb24.xfail.png | Bin 0 -> 7388 bytes - test/mask.svg.argb32.xfail.png | Bin 0 -> 8613 bytes - test/mask.svg.rgb24.xfail.png | Bin 0 -> 7189 bytes - test/mask.svg11.argb32.ref.png | Bin 8682 -> 0 bytes - test/mask.svg11.rgb24.ref.png | Bin 7203 -> 0 bytes - test/mask.svg12.argb32.ref.png | Bin 8682 -> 0 bytes - test/mask.svg12.rgb24.ref.png | Bin 7203 -> 0 bytes - test/mask.test-fallback.argb32.ref.png | Bin 8457 -> 0 bytes - test/mask.test-fallback.rgb24.ref.png | Bin 7058 -> 0 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 4009 bytes - test/meta-surface-pattern.pdf.ref.png | Bin 4111 -> 0 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 3905 bytes - test/meta-surface-pattern.svg.argb32.ref.png | Bin 0 -> 3930 bytes - test/meta-surface-pattern.svg.rgb24.ref.png | Bin 0 -> 3910 bytes - test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3924 -> 0 bytes - test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 3914 -> 0 bytes - test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3924 -> 0 bytes - test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 3914 -> 0 bytes - test/operator-alpha.c | 2 +- - test/operator-alpha.svg12.argb32.xfail.png | Bin 0 -> 274 bytes - test/operator-alpha.svg12.rgb24.xfail.png | Bin 0 -> 248 bytes - test/operator-clear.c | 2 +- - test/operator-clear.pdf.argb32.ref.png | Bin 1607 -> 0 bytes - test/operator-clear.pdf.rgb24.ref.png | Bin 1402 -> 0 bytes - test/operator-clear.svg12.argb32.xfail.png | Bin 0 -> 405 bytes - test/operator-clear.svg12.rgb24.xfail.png | Bin 0 -> 535 bytes - test/operator-clear.xlib.ref.png | Bin 0 -> 951 bytes - test/operator-source.c | 2 +- - test/operator-source.pdf.argb32.ref.png | Bin 5112 -> 0 bytes - test/operator-source.pdf.rgb24.ref.png | Bin 4186 -> 0 bytes - test/operator-source.pdf.rgb24.xfail.png | Bin 0 -> 3645 bytes - test/operator-source.svg12.argb32.xfail.png | Bin 0 -> 2951 bytes - test/operator-source.svg12.rgb24.xfail.png | Bin 0 -> 2963 bytes - test/operator-source.test-fallback.argb32.ref.png | Bin 4401 -> 0 bytes - test/operator-source.test-fallback.rgb24.ref.png | Bin 3200 -> 0 bytes - test/operator.c | 2 +- - test/operator.svg12.argb32.xfail.png | Bin 0 -> 238 bytes - test/operator.svg12.rgb24.xfail.png | Bin 0 -> 242 bytes - test/over-above-source.c | 2 +- - test/over-above-source.svg12.rgb24.xfail.png | Bin 0 -> 563 bytes - .../over-above-source.test-fallback.argb32.ref.png | Bin 533 -> 0 bytes - test/over-above-source.test-fallback.rgb24.ref.png | Bin 450 -> 0 bytes - test/over-around-source.c | 2 +- - test/over-around-source.svg12.argb32.xfail.png | Bin 0 -> 559 bytes - test/over-around-source.svg12.rgb24.xfail.png | Bin 0 -> 559 bytes - ...over-around-source.test-fallback.argb32.ref.png | Bin 610 -> 0 bytes - test/over-below-source.c | 2 +- - test/over-below-source.svg12.argb32.xfail.png | Bin 0 -> 224 bytes - test/over-below-source.svg12.rgb24.xfail.png | Bin 0 -> 224 bytes - test/over-between-source.c | 2 +- - test/over-between-source.svg12.argb32.xfail.png | Bin 0 -> 224 bytes - test/over-between-source.svg12.rgb24.xfail.png | Bin 0 -> 224 bytes - ...ver-between-source.test-fallback.argb32.ref.png | Bin 578 -> 0 bytes - test/paint-source-alpha.c | 2 +- - test/paint-source-alpha.svg.ref.png | Bin 0 -> 693 bytes - test/paint-source-alpha.svg11.ref.png | Bin 756 -> 0 bytes - test/paint-source-alpha.svg12.ref.png | Bin 505 -> 0 bytes - test/paint-with-alpha.svg.ref.png | Bin 0 -> 483 bytes - test/paint-with-alpha.svg11.ref.png | Bin 516 -> 0 bytes - test/paint-with-alpha.svg12.ref.png | Bin 516 -> 0 bytes - test/path-precision.c | 9 +- - test/push-group.svg11.argb32.ref.png | Bin 3034 -> 0 bytes - test/push-group.svg12.argb32.ref.png | Bin 3034 -> 0 bytes - test/push-group.test-fallback.argb32.ref.png | Bin 3107 -> 0 bytes - test/push-group.test-fallback.rgb24.ref.png | Bin 2942 -> 0 bytes - test/radial-gradient.svg11.ref.png | Bin 91039 -> 0 bytes - test/radial-gradient.svg12.ref.png | Bin 91039 -> 0 bytes - ...ndom-intersections.test-fallback.argb32.ref.png | Bin 132312 -> 0 bytes - ...andom-intersections.test-fallback.rgb24.ref.png | Bin 132312 -> 0 bytes - test/rotate-image-surface-paint.pdf.ref.png | Bin 196 -> 0 bytes - test/rotate-image-surface-paint.pdf.xfail.png | Bin 0 -> 207 bytes - test/rotate-image-surface-paint.svg.ref.png | Bin 0 -> 209 bytes - test/rotate-image-surface-paint.svg11.ref.png | Bin 248 -> 0 bytes - test/rotate-image-surface-paint.svg12.ref.png | Bin 248 -> 0 bytes - test/scale-offset-image.c | 2 +- - test/scale-offset-image.pdf.argb32.ref.png | Bin 0 -> 8692 bytes - test/scale-offset-image.pdf.rgb24.ref.png | Bin 0 -> 8691 bytes - test/scale-offset-image.xfail.png | Bin 0 -> 8599 bytes - test/scale-offset-image.xlib.xfail.png | Bin 0 -> 9100 bytes - test/scale-offset-similar.c | 2 +- - test/scale-offset-similar.pdf.argb32.ref.png | Bin 0 -> 9278 bytes - test/scale-offset-similar.pdf.rgb24.ref.png | Bin 0 -> 9278 bytes - test/scale-offset-similar.xfail.png | Bin 0 -> 8599 bytes - test/scale-offset-similar.xlib.xfail.png | Bin 0 -> 8570 bytes - ...scale-source-surface-paint.svg.argb32.xfail.png | Bin 0 -> 229 bytes - .../scale-source-surface-paint.svg.rgb24.xfail.png | Bin 0 -> 222 bytes - ...scale-source-surface-paint.svg11.argb32.ref.png | Bin 229 -> 0 bytes - .../scale-source-surface-paint.svg11.rgb24.ref.png | Bin 243 -> 0 bytes - ...scale-source-surface-paint.svg12.argb32.ref.png | Bin 229 -> 0 bytes - .../scale-source-surface-paint.svg12.rgb24.ref.png | Bin 243 -> 0 bytes - test/self-copy-overlap.c | 2 +- - test/self-copy-overlap.ref.png | Bin 1140 -> 0 bytes - test/self-copy-overlap.rgb24.ref.png | Bin 608 -> 0 bytes - test/self-intersecting.argb32.xfail.png | Bin 0 -> 287 bytes - test/self-intersecting.c | 2 +- - test/self-intersecting.pdf.argb32.xfail.png | Bin 0 -> 295 bytes - test/self-intersecting.pdf.rgb24.xfail.png | Bin 0 -> 272 bytes - test/self-intersecting.ps.argb32.xfail.png | Bin 0 -> 186 bytes - test/self-intersecting.ps.rgb24.xfail.png | Bin 0 -> 186 bytes - test/self-intersecting.rgb24.xfail.png | Bin 0 -> 282 bytes - test/self-intersecting.xlib.argb32.xfail.png | Bin 0 -> 235 bytes - test/self-intersecting.xlib.rgb24.xfail.png | Bin 0 -> 240 bytes - test/set-source.svg11.argb32.ref.png | Bin 104 -> 0 bytes - test/set-source.svg12.argb32.ref.png | Bin 104 -> 0 bytes - test/smask-fill.c | 2 +- - test/smask-fill.svg.ref.png | Bin 0 -> 1150 bytes - test/smask-fill.svg11.argb32.ref.png | Bin 1128 -> 0 bytes - test/smask-fill.svg11.ref.png | Bin 1166 -> 0 bytes - test/smask-fill.svg11.rgb24.ref.png | Bin 1128 -> 0 bytes - test/smask-fill.svg12.argb32.ref.png | Bin 1128 -> 0 bytes - test/smask-fill.svg12.ref.png | Bin 1166 -> 0 bytes - test/smask-fill.svg12.rgb24.ref.png | Bin 1128 -> 0 bytes - test/smask-fill.test-fallback.argb32.ref.png | Bin 1148 -> 0 bytes - test/smask-fill.test-fallback.rgb24.ref.png | Bin 1148 -> 0 bytes - test/smask-image-mask.c | 2 +- - test/smask-mask.c | 2 +- - test/smask-mask.pdf.xfail.png | Bin 0 -> 4401 bytes - test/smask-mask.svg.ref.png | Bin 0 -> 2376 bytes - test/smask-mask.svg11.ref.png | Bin 2529 -> 0 bytes - test/smask-mask.svg12.ref.png | Bin 2529 -> 0 bytes - test/smask-paint.c | 2 +- - test/smask-paint.pdf.xfail.png | Bin 0 -> 4513 bytes - test/smask-paint.svg.ref.png | Bin 0 -> 2453 bytes - test/smask-paint.svg11.ref.png | Bin 2612 -> 0 bytes - test/smask-paint.svg12.ref.png | Bin 2612 -> 0 bytes - test/smask-stroke.c | 2 +- - test/smask-stroke.pdf.xfail.png | Bin 0 -> 392 bytes - test/smask-text.c | 2 +- - test/smask-text.pdf.ref.png | Bin 0 -> 1874 bytes - test/smask-text.ref.png | Bin 1777 -> 1874 bytes - test/smask-text.svg.ref.png | Bin 0 -> 1794 bytes - test/smask-text.svg11.argb32.ref.png | Bin 1791 -> 0 bytes - test/smask-text.svg11.ref.png | Bin 1886 -> 0 bytes - test/smask-text.svg11.rgb24.ref.png | Bin 1791 -> 0 bytes - test/smask-text.svg12.argb32.ref.png | Bin 1791 -> 0 bytes - test/smask-text.svg12.ref.png | Bin 1886 -> 0 bytes - test/smask-text.svg12.rgb24.ref.png | Bin 1791 -> 0 bytes - test/smask.c | 2 +- - test/smask.pdf.xfail.png | Bin 0 -> 4393 bytes - test/smask.ref.png | Bin 3587 -> 3417 bytes - test/smask.svg.ref.png | Bin 0 -> 3458 bytes - test/smask.svg11.ref.png | Bin 3634 -> 0 bytes - test/smask.svg12.ref.png | Bin 3634 -> 0 bytes - test/source-clip-scale.svg.ref.png | Bin 0 -> 116 bytes - test/source-clip-scale.svg11.ref.png | Bin 119 -> 0 bytes - test/source-clip-scale.svg12.ref.png | Bin 119 -> 0 bytes - test/surface-pattern-big-scale-down.c | 2 +- - test/surface-pattern-big-scale-down.ref.png | Bin 226 -> 191 bytes - test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 1532 -> 0 bytes - test/surface-pattern-scale-down.pdf.ref.png | Bin 0 -> 1589 bytes - test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 1532 -> 0 bytes - test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 3834 -> 0 bytes - test/surface-pattern-scale-up.pdf.ref.png | Bin 0 -> 2712 bytes - test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 3834 -> 0 bytes - test/surface-pattern.pdf.ref.png | Bin 14800 -> 0 bytes - test/surface-pattern.pdf.xfail.png | Bin 0 -> 10528 bytes - test/surface-pattern.ps.xfail.png | Bin 0 -> 2188 bytes - test/surface-pattern.ps2.ref.png | Bin 2364 -> 0 bytes - test/surface-pattern.ps3.ref.png | Bin 2364 -> 0 bytes - test/surface-pattern.svg.ref.png | Bin 16069 -> 0 bytes - test/surface-pattern.svg.xfail.png | Bin 0 -> 16069 bytes - test/text-pattern.pdf.argb32.ref.png | Bin 2334 -> 0 bytes - test/text-pattern.pdf.argb32.xfail.png | Bin 0 -> 1845 bytes - test/text-pattern.pdf.rgb24.ref.png | Bin 1915 -> 0 bytes - test/text-pattern.pdf.rgb24.xfail.png | Bin 0 -> 1599 bytes - test/text-pattern.svg.argb32.ref.png | Bin 0 -> 1745 bytes - test/text-pattern.svg.rgb24.ref.png | Bin 0 -> 1453 bytes - test/text-pattern.svg11.argb32.ref.png | Bin 1743 -> 0 bytes - test/text-pattern.svg11.rgb24.ref.png | Bin 1563 -> 0 bytes - test/text-pattern.svg12.argb32.ref.png | Bin 1743 -> 0 bytes - test/text-pattern.svg12.rgb24.ref.png | Bin 1563 -> 0 bytes - test/text-rotate.svg.ref.png | Bin 0 -> 17024 bytes - test/text-rotate.svg11.argb32.ref.png | Bin 16942 -> 0 bytes - test/text-rotate.svg11.ref.png | Bin 18301 -> 0 bytes - test/text-rotate.svg11.rgb24.ref.png | Bin 16942 -> 0 bytes - test/text-rotate.svg12.argb32.ref.png | Bin 16942 -> 0 bytes - test/text-rotate.svg12.ref.png | Bin 18301 -> 0 bytes - test/text-rotate.svg12.rgb24.ref.png | Bin 16942 -> 0 bytes - test/text-transform.svg.ref.png | Bin 0 -> 5682 bytes - test/text-transform.svg11.argb32.ref.png | Bin 5677 -> 0 bytes - test/text-transform.svg11.rgb24.ref.png | Bin 5677 -> 0 bytes - test/text-transform.svg12.argb32.ref.png | Bin 5677 -> 0 bytes - test/text-transform.svg12.rgb24.ref.png | Bin 5677 -> 0 bytes - test/trap-clip.pdf.argb32.ref.png | Bin 6746 -> 0 bytes - test/trap-clip.pdf.rgb24.ref.png | Bin 6616 -> 0 bytes - test/trap-clip.test-fallback.argb32.ref.png | Bin 5753 -> 0 bytes - test/trap-clip.test-fallback.rgb24.ref.png | Bin 5379 -> 0 bytes - test/twin.svg.ref.png | Bin 3027 -> 3040 bytes - test/unbounded-operator.c | 2 +- - test/unbounded-operator.svg12.argb32.xfail.png | Bin 0 -> 2767 bytes - test/unbounded-operator.svg12.rgb24.xfail.png | Bin 0 -> 1719 bytes - .../unbounded-operator.test-fallback.rgb24.ref.png | Bin 1306 -> 0 bytes - test/user-font-mask.svg.ref.png | Bin 0 -> 2030 bytes - test/user-font-mask.svg11.ref.png | Bin 2224 -> 0 bytes - test/user-font-proxy.svg.ref.png | Bin 0 -> 16817 bytes - test/user-font-proxy.svg11.argb32.ref.png | Bin 16836 -> 0 bytes - test/user-font-proxy.svg11.ref.png | Bin 17902 -> 0 bytes - test/user-font-proxy.svg11.rgb24.ref.png | Bin 16836 -> 0 bytes - test/user-font-proxy.svg12.argb32.ref.png | Bin 16836 -> 0 bytes - test/user-font-proxy.svg12.ref.png | Bin 17902 -> 0 bytes - test/user-font-proxy.svg12.rgb24.ref.png | Bin 16836 -> 0 bytes - test/user-font-proxy.test-fallback.argb32.ref.png | Bin 16835 -> 0 bytes - test/user-font-proxy.test-fallback.rgb24.ref.png | Bin 16835 -> 0 bytes - test/user-font-rescale.svg.ref.png | Bin 0 -> 14873 bytes - test/user-font-rescale.svg11.ref.png | Bin 15741 -> 0 bytes - test/user-font-rescale.svg12.ref.png | Bin 15741 -> 0 bytes - test/user-font.svg.ref.png | Bin 0 -> 6379 bytes - test/user-font.svg11.argb32.ref.png | Bin 6411 -> 0 bytes - test/user-font.svg11.ref.png | Bin 6134 -> 0 bytes - test/user-font.svg11.rgb24.ref.png | Bin 6411 -> 0 bytes - test/user-font.svg12.argb32.ref.png | Bin 6411 -> 0 bytes - test/user-font.svg12.ref.png | Bin 6134 -> 0 bytes - test/user-font.svg12.rgb24.ref.png | Bin 6411 -> 0 bytes - test/user-font.test-fallback.argb32.ref.png | Bin 5601 -> 0 bytes - test/user-font.test-fallback.rgb24.ref.png | Bin 5601 -> 0 bytes - 384 files changed, 438 insertions(+), 303 deletions(-) - -commit a81cf14bd6de545e9108f5c24c59e55026df86de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 13 10:58:44 2009 +0100 - - [test] Sanitise REFERENCE_IMAGES - - Add and delete files to satisfy 'make check-ref-missing'. - - test/Makefile.am | 6 ------ - test/fill-image.test-fallback.ref.png | Bin 1462 -> 0 bytes - test/fill-image.xlib.ref.png | Bin 1462 -> 0 bytes - test/group-unaligned.ref.png | Bin 0 -> 434 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4011 -> 0 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3910 -> 0 bytes - test/operator-clear.test-fallback.ref.png | Bin 1071 -> 0 bytes - test/operator-clear.xlib.ref.png | Bin 1071 -> 0 bytes - 8 files changed, 0 insertions(+), 6 deletions(-) - -commit 7f3eda4e9f9e6cb6f3a33871ed42099c822d0ea2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jul 13 10:43:34 2009 +0100 - - [test] Update reference images for gs 8.64 - - test/Makefile.am | 7 +++++-- - test/README | 2 +- - test/close-path-current-point.ps.ref.png | Bin 0 -> 1490 bytes - test/extend-pad.ps.ref.png | Bin 0 -> 314 bytes - test/fill-image.ps.ref.png | Bin 0 -> 1799 bytes - test/test-fallback16-surface-source.ps.ref.png | Bin 0 -> 292 bytes - test/user-font-proxy.ps.ref.png | Bin 0 -> 7766 bytes - test/user-font-proxy.ps2.ref.png | Bin 8171 -> 0 bytes - test/user-font-proxy.ps3.ref.png | Bin 8171 -> 0 bytes - 9 files changed, 6 insertions(+), 3 deletions(-) - -commit 0d44416b9dd8149032039cf44ea14bf4867f3c54 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Jul 12 19:21:28 2009 +0930 - - PDF: Don't round pattern y location to an integer - - Using cairo_surface_get_extents() to get page height does not work - when the page height is not an integer. - - http://lists.cairographics.org/archives/cairo/2009-July/017570.html - - src/cairo-pdf-surface.c | 10 +--------- - 1 files changed, 1 insertions(+), 9 deletions(-) - -commit 9686331cb07a8f9018f28dc7d6d6e3726e289fda -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat May 2 18:05:20 2009 +0300 - - [spans] Round rasterization grid pixel areas instead of truncating. - - When converting a grid pixel area into the range [0,255] the - GRID_AREA_TO_ALPHA() macro would truncate extra bits off the result - rather than rounding. This could cause seams between abutting - collinear edges of separately rendered polygons even when the - coordinates of the abutting edges were the same. - - Reported by Soeren Sandmann on the cairo mailing list: - - http://lists.cairographics.org/archives/cairo/2009-May/017043.html - - src/cairo-tor-scan-converter.c | 4 ++-- - test/clip-operator.ref.png | Bin 8210 -> 8191 bytes - test/clip-operator.test-paginated.argb32.ref.png | Bin 8247 -> 8189 bytes - test/fill-degenerate-sort-order.ref.png | Bin 2406 -> 2399 bytes - test/fill-rule.ref.png | Bin 2061 -> 2065 bytes - test/finer-grained-fallbacks.ref.png | Bin 1069 -> 1070 bytes - test/linear-gradient.pdf.argb32.ref.png | Bin 1112 -> 0 bytes - test/linear-gradient.pdf.ref.png | Bin 935 -> 1125 bytes - test/linear-gradient.pdf.rgb24.ref.png | Bin 1112 -> 0 bytes - test/mask-alpha.ref.png | Bin 643 -> 632 bytes - test/mask.pdf.argb32.ref.png | Bin 9918 -> 9946 bytes - test/mask.ref.png | Bin 8581 -> 8603 bytes - test/operator-clear.ref.png | Bin 1084 -> 1070 bytes - test/operator-clear.test-fallback.ref.png | Bin 0 -> 1071 bytes - test/operator-clear.xlib.ref.png | Bin 0 -> 1071 bytes - test/operator-source.ref.png | Bin 4425 -> 4395 bytes - test/radial-gradient.pdf.argb32.ref.png | Bin 79601 -> 0 bytes - test/radial-gradient.pdf.ref.png | Bin 79490 -> 79612 bytes - test/radial-gradient.pdf.rgb24.ref.png | Bin 79601 -> 0 bytes - test/trap-clip.pdf.argb32.ref.png | Bin 6745 -> 6746 bytes - test/trap-clip.pdf.rgb24.ref.png | Bin 6621 -> 6616 bytes - test/trap-clip.ref.png | Bin 5829 -> 5820 bytes - test/trap-clip.test-paginated.argb32.ref.png | Bin 5865 -> 5898 bytes - 23 files changed, 2 insertions(+), 2 deletions(-) - -commit fbd88db938bf3bb03934795da9b3d184c4f43608 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 5 14:43:50 2009 +0100 - - [path] Don't include current-point in hash - - As we don't strictly use the current-point in comparing paths, exclude it - from the hash. Similarly use the path content flags as a cheap means to - differentiate contents. - - src/cairo-path-fixed.c | 17 +++++++++-------- - 1 files changed, 9 insertions(+), 8 deletions(-) - -commit 73f8019fd2afd0ad41c2515bef9877348355d246 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 5 14:37:02 2009 +0100 - - [path] Use cairo_list_t instead of open-coding its own - - Use the cairo_list_t and its style of iterators to improve the readability - of the cairo_path_buf_t management. Note the complications that arise from - the embedding of the initial buf -- however the macros do help make the - unusual manipulations more identifiable. - - src/cairo-path-fixed-private.h | 14 ++- - src/cairo-path-fixed.c | 226 +++++++++++++++++++--------------------- - src/cairo.c | 2 +- - 3 files changed, 114 insertions(+), 128 deletions(-) - -commit a04e3726648c62a1385b67cfc16a785a468e1d13 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 5 09:21:47 2009 +0100 - - [path] Add path watch debugging - - Simple debug macro to print the path to stderr during construction. - - src/cairo-path-fixed-private.h | 9 +++++++++ - src/cairo-path-fixed.c | 26 ++++++++++++++++++++++++++ - 2 files changed, 35 insertions(+), 0 deletions(-) - -commit 1645352bfb69cc6d43fcbf3c77b4da5693af322a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 5 09:09:42 2009 +0100 - - [path] Evaluate is_box && is_region during construction - - Whilst constructing the path, if the operations continue to be - axis-aligned lines, allow the is_box and is_region flags to persist. These - are set to false as soon as a curve-to is added, a diagonal or in the case - of is_region a non-integer point. - - src/cairo-path-fixed-private.h | 8 + - src/cairo-path-fixed.c | 286 +++++++++++++++------------------------- - src/cairo.c | 2 + - src/cairoint.h | 3 - - 4 files changed, 115 insertions(+), 184 deletions(-) - -commit 4bb157672ef8cb7d486d6ccdaaa3890e3f45e17a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 23:44:09 2009 +0100 - - [test] Rename some structures within cairo-test-trace - - Simply rename a few structures so that their names are less confusing with - the mix of process and threads used to executes traces. - - test/cairo-test-trace.c | 224 +++++++++++++++++++++++----------------------- - 1 files changed, 112 insertions(+), 112 deletions(-) - -commit 53a54827f7d8ca8500f3f9674edbd7e768e8a50d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jul 5 09:22:05 2009 +0100 - - [boilerplate] Add missing header file. - - Deleted so many, and forgot to add just this little one. Sigh. - - boilerplate/cairo-boilerplate-private.h | 49 +++++++++++++++++++++++++++++++ - 1 files changed, 49 insertions(+), 0 deletions(-) - -commit ee8c50f2d6f1dba41f829c715b7bc59b5eeda50d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 22:00:09 2009 +0100 - - Remove the defunct test-meta surface - - Replace the internal test-meta surface will the freshly exported, - real meta-surface. - - boilerplate/cairo-boilerplate-test-surfaces.c | 38 --- - boilerplate/cairo-boilerplate.c | 35 +++ - src/Makefile.sources | 2 - - src/test-meta-surface.c | 358 ------------------------- - src/test-meta-surface.h | 50 ---- - util/cairo-trace/trace.c | 49 +++- - 6 files changed, 69 insertions(+), 463 deletions(-) - -commit 88cb69b10c66751f687c3745c8e9861b105de3a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 21:43:27 2009 +0100 - - [boilerpate] Move target definition to backends. - - By moving the backend target definition out of the massive amlagamated - block in cairo-boilerplate.c and into each of the - cairo-boilerplate-backend.c, we make it much easier to add new targets as - the information need only be entered in a single file and not scattered - across three. However, updating the target interface means trawling across - all the files -- except given that I found it difficult maintaining the - single massive array I do not see this as an increase in the maintenance - burden. - - boilerplate/.gitignore | 2 + - boilerplate/Makefile.am | 12 + - boilerplate/Makefile.sources | 27 +- - boilerplate/cairo-boilerplate-beos-private.h | 40 -- - boilerplate/cairo-boilerplate-beos.cpp | 48 ++- - boilerplate/cairo-boilerplate-directfb-private.h | 26 - - boilerplate/cairo-boilerplate-directfb.c | 29 +- - boilerplate/cairo-boilerplate-glitz-agl.c | 31 +- - boilerplate/cairo-boilerplate-glitz-glx.c | 31 +- - boilerplate/cairo-boilerplate-glitz-private.h | 88 --- - boilerplate/cairo-boilerplate-glitz-wgl.c | 32 +- - boilerplate/cairo-boilerplate-pdf-private.h | 60 -- - boilerplate/cairo-boilerplate-pdf.c | 48 +- - boilerplate/cairo-boilerplate-ps-private.h | 71 --- - boilerplate/cairo-boilerplate-ps.c | 73 ++- - boilerplate/cairo-boilerplate-qt-private.h | 60 -- - boilerplate/cairo-boilerplate-qt.cpp | 29 +- - boilerplate/cairo-boilerplate-quartz-private.h | 44 -- - boilerplate/cairo-boilerplate-quartz.c | 29 +- - boilerplate/cairo-boilerplate-script-private.h | 57 -- - boilerplate/cairo-boilerplate-script.c | 28 +- - boilerplate/cairo-boilerplate-svg-private.h | 72 --- - boilerplate/cairo-boilerplate-svg.c | 70 ++- - .../cairo-boilerplate-test-surfaces-private.h | 99 --- - boilerplate/cairo-boilerplate-test-surfaces.c | 117 ++++- - boilerplate/cairo-boilerplate-win32-printing.c | 43 +- - boilerplate/cairo-boilerplate-win32-private.h | 65 -- - boilerplate/cairo-boilerplate-win32.c | 28 +- - boilerplate/cairo-boilerplate-xcb-private.h | 47 -- - boilerplate/cairo-boilerplate-xcb.c | 28 +- - boilerplate/cairo-boilerplate-xlib-private.h | 71 --- - boilerplate/cairo-boilerplate-xlib.c | 207 ++++--- - boilerplate/cairo-boilerplate.c | 639 +++----------------- - boilerplate/cairo-boilerplate.h | 3 +- - boilerplate/make-cairo-boilerplate-constructors.c | 156 +++++ - test/make-cairo-test-constructors.c | 28 +- - 36 files changed, 946 insertions(+), 1592 deletions(-) - -commit 8a10ab1c04298d6c22ae8aabec5d762141a8e98f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 18:46:21 2009 +0100 - - [script] Tidy dict construction for glyphs - - Replace dict with '<< ... >>' similar to surface definitions as it is - easier to read in scripts. - - src/cairo-script-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit fef3649953a3dcc3a17d9d5858f56690a8782501 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 18:32:57 2009 +0100 - - [script] Fix the trivial errors running the test suite - - A few typos crept in breaking the script output and various refreshes of - the expected results. - - src/cairo-script-surface.c | 33 ++++++++++++++++++++--------- - test/mime-data.script.ref.png | Bin 1982 -> 2041 bytes - test/scale-offset-image.c | 2 +- - test/scale-offset-similar.c | 2 +- - util/cairo-script/cairo-script-scanner.c | 6 +++- - 5 files changed, 29 insertions(+), 14 deletions(-) - -commit 2395bba1e66a2623cb288e13effc206f86e5e62e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 18:31:49 2009 +0100 - - [any2ppm] Choose a more appropriate format for the replay content - - Actually select a format that matches the request content when replaying - the script to an image. - - test/any2ppm.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 9942a89870f7754e28ff334010c4432553cf7d91 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 18:30:24 2009 +0100 - - [boilerplate] Read whole RGB lines at a time - - Rather than read+unpack each pixel, read in a whole RGB packed line and - unpack the whole line in a single pass. - - boilerplate/cairo-boilerplate.c | 13 +++++++------ - 1 files changed, 7 insertions(+), 6 deletions(-) - -commit 23648e2fdfefba4df08bc854d725758209998e1f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 00:40:32 2009 +0100 - - [script] Prototypical binary translator - - Hook into the scanner to write out binary version of the tokenized - objects -- note we bind executable names (i.e. check to see if is an - operator and substitute the name with an operator -- this breaks - overloading of operators by scripts). - - By converting scripts to a binary form, they are more compact and - execute faster: - - firefox-world-map.trace 526850146 bytes - bound.trace 275187755 bytes - - [ # ] backend test min(s) median(s) stddev. count - [ 0] null bound 34.481 34.741 0.68% 3/3 - [ 1] null firefox-world-map 89.635 89.716 0.19% 3/3 - [ 0] drm bound 79.304 79.350 0.61% 3/3 - [ 1] drm firefox-world-map 135.380 135.475 0.58% 3/3 - [ 0] image bound 95.819 96.258 2.85% 3/3 - [ 1] image firefox-world-map 156.889 156.935 1.36% 3/3 - [ 0] xlib bound 539.130 550.220 1.40% 3/3 - [ 1] xlib firefox-world-map 596.244 613.487 1.74% 3/3 - - This trace has a lot of complex paths and the use of binary floating point - reduces the file size by about 50%, with a commensurate reduction in scan - time and significant reduction in operator lookup overhead. Note that this - test is still IO/CPU bound on my i915 with its pitifully slow flash... - - util/cairo-script/Makefile.am | 5 +- - util/cairo-script/cairo-script-file.c | 44 +- - util/cairo-script/cairo-script-interpreter.c | 85 ++- - util/cairo-script/cairo-script-interpreter.h | 9 +- - util/cairo-script/cairo-script-objects.c | 8 +- - util/cairo-script/cairo-script-operators.c | 2 +- - util/cairo-script/cairo-script-private.h | 27 +- - util/cairo-script/cairo-script-scanner.c | 1059 ++++++++++++++++++-------- - 8 files changed, 906 insertions(+), 333 deletions(-) - -commit 07c0c8c5c0820e93403623eb5c1fa2df8ca89c60 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 14:07:16 2009 +0100 - - [surface] Refactor meta-surface clone - - Whilst still obnoxious, at least moving it to a separate function is more - readable. - - src/cairo-surface.c | 140 +++++++++++++++++++++++++++++---------------------- - 1 files changed, 79 insertions(+), 61 deletions(-) - -commit 7903c80ee81777bab6eec408c10b2b59330b10f7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 13:50:15 2009 +0100 - - [meta] Cache replays when used as a pattern source - - Use the cow-snapshotting mechanism to store the meta surface replay (either - to an image inside acquire_source_image() or to a similar surface during - clone_similar()). - - Fixes Bug 17971 -- Extreme slowdown for manual convolutions in most - vector backends. - https://bugs.freedesktop.org/show_bug.cgi?id=17971 - - src/cairo-meta-surface.c | 18 ++++++++- - src/cairo-surface.c | 92 +++++++++++++++++++++++++++++++++++----------- - src/cairoint.h | 3 +- - 3 files changed, 88 insertions(+), 25 deletions(-) - -commit f353ba46a3b8c260f96588fd6bb8d07c2a09d01a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 13:49:35 2009 +0100 - - [meta] Copy extents on snapshotting. - - Need to copy across the extents as well when snapshotting. - - src/cairo-meta-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f4019be7bdff5c67d679f4de1070c25aa99a993d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 13:16:42 2009 +0100 - - [trace] Remove a few transient pattern def/undef - - It is easier on the eye to use - '1 index set-source exch pop' - rather than - 'dup /p0 exch def p0 set-source /p0 undef' - (as patterns are expected to be temporary so we strive to avoid naming - them). - - util/cairo-trace/trace.c | 42 +++++++++++++++++++++++++++++++----------- - 1 files changed, 31 insertions(+), 11 deletions(-) - -commit dcb7f1d034438c5c890490df93a86b40fea3036c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jul 4 08:08:25 2009 +0100 - - [script] Add missing include <string.h> - - As reported by Magnus Boman <captain.magnus@gmail.com>. - - Fixes Bug 22610 -- Patch to add missing include in util/cairo-script/csi-replay.c - http://bugs.freedesktop.org/show_bug.cgi?id=22610 - - util/cairo-script/csi-replay.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 97bd2228a6635bbb0eac4ce95801754957dbb7ba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 19:41:51 2009 +0100 - - [script] Insert spaces around '<<' and '>>' - - The dictionary constructors are just ordinary tokens so need space for - delimiters. - - src/cairo-script-surface.c | 62 +++++++++++++++----------------------------- - 1 files changed, 21 insertions(+), 41 deletions(-) - -commit 6003ab77e1ebefadb97338de0e7da4a76d973b1a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 18:26:50 2009 +0100 - - Export meta-surface - - The meta-surface is a vital tool to record a trace of drawing commands - in-memory. As such it is used throughout cairo. - - The value of such a surface is immediately obvious and should be - applicable for many applications. The first such case is by - cairo-test-trace which wants to record the entire graph of drawing commands - that affect a surface in the event of a failure. - - NEWS | 27 +++++ - boilerplate/Makefile.win32.features | 8 ++ - boilerplate/cairo-boilerplate.c | 12 +- - build/Makefile.win32.features-h | 1 + - build/configure.ac.features | 1 + - configure.ac | 4 + - perf/cairo-perf.c | 6 +- - src/Makefile.win32.features | 8 ++ - src/cairo-meta-surface-private.h | 14 +-- - src/cairo-meta-surface.c | 202 +++++++++++++++++++++++++++-------- - src/cairo-paginated-surface.c | 16 ++-- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-script-surface.c | 10 +- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface.c | 8 +- - src/cairo-type3-glyph-surface.c | 8 +- - src/cairo-types-private.h | 3 +- - src/cairo-user-font.c | 7 +- - src/cairo-win32-printing-surface.c | 2 +- - src/cairo.h | 22 ++++- - src/test-meta-surface.c | 16 +--- - src/test-meta-surface.h | 8 +- - test/cairo-test-trace.c | 58 ++++------- - test/get-clip.c | 5 + - 25 files changed, 296 insertions(+), 156 deletions(-) - -commit 2a9903dbbfeb3fe843f0d618d15674b37a29f3a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 12:48:40 2009 +0100 - - [script] Trim some excess verbage - - Remove some redundant defining of surfaces and contexts and of setting - defaults. In order to reduce the number of defines, we need to operate on - the operand stack more frequently - though in practice those operations - are quite rare. - - src/Makefile.sources | 1 + - src/cairo-list-private.h | 189 +++++++++++++++ - src/cairo-script-surface.c | 561 ++++++++++++++++++++++++++++++-------------- - 3 files changed, 572 insertions(+), 179 deletions(-) - -commit 28773fe79f883c32ee4e55e49f5dc3fced00c4f6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 13:17:47 2009 +0100 - - [test-meta] Initialize image - - Oops, stupid mistake - missed off the initialization of the image to NULL - from the last commit. - - src/test-meta-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ac6c3dbbaed377273b73da6e9e03bb8380a78ec4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 12:56:20 2009 +0100 - - [test-meta] Lazily allocate image - - Only allocate the image on first use, as we may never actually need to - construct the image output. - - src/test-meta-surface.c | 42 ++++++++++++++++++++++++------------------ - 1 files changed, 24 insertions(+), 18 deletions(-) - -commit fe73a9dd1413a851beeca7a0fc4ab7cb351ea9ea -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jul 3 11:24:42 2009 +0100 - - [test] Record trace to an in-memory meta-surface - - Requires hooking into test-meta-surface currently. Export meta-surface! - - The idea is that on detection of an error, we can reconstruct a minimal - trace from the meta-surface. The first step is to simply dump the trace - for the failing meta-surface. Later, we should automatically minimise - this further. - - src/test-meta-surface.c | 101 ++++++++----- - src/test-meta-surface.h | 4 + - test/Makefile.am | 3 + - test/cairo-test-trace.c | 371 +++++++++++++++++++++++++++++++++++++++++------ - 4 files changed, 397 insertions(+), 82 deletions(-) - -commit 633efe81873168506ec3594eae1f6ac38d71026c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jul 2 09:17:43 2009 +0100 - - [surface] Allocate temporary region on stack - - Avoid a very short-lived temporary heap allocation of a region. - - src/cairo-surface.c | 13 +++++-------- - 1 files changed, 5 insertions(+), 8 deletions(-) - -commit b2e2a2f31af33ff01d78c6c8786249a623017ffa -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 15:47:51 2009 +0200 - - [test] Update argb32 pdf reference image for trap-clip - - test/trap-clip.pdf.argb32.ref.png | Bin 6720 -> 6745 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 910afc7a8e5c40f4fe682ec0b0f3836a07ea721d -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 15:40:24 2009 +0200 - - [test] Mark all smask tests as XFAIL for pdf - - Those tests use linear gradients which are not correctly handled by - poppler yet. See https://bugs.freedesktop.org/show_bug.cgi?id=10942 - - test/README | 11 +++++++++++ - test/smask-fill.c | 2 +- - test/smask-image-mask.c | 2 +- - test/smask-mask.c | 2 +- - test/smask-paint.c | 2 +- - test/smask-stroke.c | 2 +- - test/smask-text.c | 2 +- - test/smask.c | 2 +- - 8 files changed, 18 insertions(+), 7 deletions(-) - -commit 5becfc2bd59956090daa8afd68db2f139dcb8392 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 14:58:40 2009 +0200 - - [test] Add pdf reference image for rotate-image-surface-paint - - Remove also argb32 and rgb24 pdf reference images. - - test/Makefile.am | 3 +-- - test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 215 -> 0 bytes - test/rotate-image-surface-paint.pdf.ref.png | Bin 0 -> 196 bytes - test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 215 -> 0 bytes - 4 files changed, 1 insertions(+), 2 deletions(-) - -commit f81203cde864af1a1fea81a438e4f4effe928808 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 14:44:19 2009 +0200 - - [test] Add pdf reference image for mask-transformed-image - - test/Makefile.am | 1 + - test/mask-transformed-image.pdf.ref.png | Bin 0 -> 3528 bytes - 2 files changed, 1 insertions(+), 0 deletions(-) - -commit 9d538ef337e9ca1600f842cd2164ff5e6629090a -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 14:42:32 2009 +0200 - - [test] Update argb32 and rgb24 pdf reference image for mask - - test/mask.pdf.argb32.ref.png | Bin 9903 -> 9918 bytes - test/mask.pdf.rgb24.ref.png | Bin 8735 -> 8745 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 97def877bb1c290735875061118bd795b9b83215 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 14:18:30 2009 +0200 - - [test] Update pdf reference image for surface-pattern - - Remove also argb32 and rgb24 pdf reference images. - - test/Makefile.am | 2 -- - test/surface-pattern.pdf.argb32.ref.png | Bin 14808 -> 0 bytes - test/surface-pattern.pdf.ref.png | Bin 14791 -> 14800 bytes - test/surface-pattern.pdf.rgb24.ref.png | Bin 14808 -> 0 bytes - 4 files changed, 0 insertions(+), 2 deletions(-) - -commit 8a6bdc63c1491dc77e8d9e192b9e44d9ff2e3c9b -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 13:33:07 2009 +0200 - - [test] Update argb32 and rgb24 pdf reference image for text-pattern - - test/text-pattern.pdf.argb32.ref.png | Bin 2151 -> 2334 bytes - test/text-pattern.pdf.rgb24.ref.png | Bin 508 -> 1915 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit b46ba7aa33ba604628f1c94449019895b1d7ef82 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 13:25:39 2009 +0200 - - [test] Update pdf reference image for text-transform - - test/text-transform.pdf.ref.png | Bin 3796 -> 5586 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 9bc7ab980d6e834dacaf4f48f199e8c95cfba94e -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 12:09:50 2009 +0200 - - [test] Update pdf reference image for filter-nearest-transformed - - Remove also argb32 and rgb24 pdf reference images. - - test/Makefile.am | 2 -- - test/filter-nearest-transformed.pdf.argb32.ref.png | Bin 488 -> 0 bytes - test/filter-nearest-transformed.pdf.ref.png | Bin 548 -> 552 bytes - test/filter-nearest-transformed.pdf.rgb24.ref.png | Bin 488 -> 0 bytes - 4 files changed, 0 insertions(+), 2 deletions(-) - -commit 27938f7e3ff357e5fe8a05e547cf83dbad7551ef -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 12:04:06 2009 +0200 - - [test] Update pdf reference image for filter-nearest-offset - - Remove also argb32 and rgb24 pdf reference images. - - test/Makefile.am | 2 -- - test/filter-nearest-offset.pdf.argb32.ref.png | Bin 4295 -> 0 bytes - test/filter-nearest-offset.pdf.ref.png | Bin 4537 -> 997 bytes - test/filter-nearest-offset.pdf.rgb24.ref.png | Bin 4295 -> 0 bytes - 4 files changed, 0 insertions(+), 2 deletions(-) - -commit e6576e8912196607fdd3613c6924e26c2ce7a951 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 11:56:18 2009 +0200 - - [test] Update argb32 pdf reference image for clip-operator - - test/clip-operator.pdf.argb32.ref.png | Bin 11604 -> 11603 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 13d9374ec13c62233312beb0feb9a47531aec2e3 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Mon Jun 29 17:36:47 2009 +0200 - - [test] Remove PDF reference images for scale-source-surface-paint - - It works with current poppler now - - test/Makefile.am | 2 -- - test/scale-source-surface-paint.pdf.argb32.ref.png | Bin 182 -> 0 bytes - test/scale-source-surface-paint.pdf.rgb24.ref.png | Bin 198 -> 0 bytes - 3 files changed, 0 insertions(+), 2 deletions(-) - -commit 3710c4184c2e87368dde5ccb25f3648b861b6059 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Mon Jun 29 17:32:54 2009 +0200 - - [test] Remove PDF reference images for paint-with-alpha - - It works with current poppler now - - test/Makefile.am | 1 - - test/paint-with-alpha.pdf.ref.png | Bin 466 -> 0 bytes - 2 files changed, 0 insertions(+), 1 deletions(-) - -commit 8162acd81a898247f19054a136af95062e3b0e91 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Mon Jun 29 12:42:52 2009 +0200 - - [test] Remove PDF reference images for paint-source-alpha - - It works with current poppler now - - test/Makefile.am | 2 -- - test/paint-source-alpha.pdf.argb32.ref.png | Bin 471 -> 0 bytes - test/paint-source-alpha.pdf.ref.png | Bin 473 -> 0 bytes - 3 files changed, 0 insertions(+), 2 deletions(-) - -commit 1e1f4fd0920cb2b0882137b4cc500dcbae42d2dc -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Tue Jun 30 11:05:50 2009 +0200 - - [test] Use poppler_page_render with a transparent surface - - Instead of using an opaque surface filled in white, use a transparent - surface and fill it in white by using CAIRO_OPERATOR_DEST_OVER after - rendering. - - test/any2ppm.c | 9 +++++---- - test/pdf2png.c | 9 +++++---- - 2 files changed, 10 insertions(+), 8 deletions(-) - -commit 700a555d194a20c00df69b963cdc5b6153e162a4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 1 19:41:42 2009 +0100 - - [surface] Expose a SURFACE_TYPE_MISMATCH nil object - - Gah, yet more error object bloat. Must finish cairo-object. - - src/cairo-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8f4611a94bda407b5944520b95599441a4ff5327 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 1 19:39:57 2009 +0100 - - [perf] Fix use-after-free when retrieving error line number - - We find out the status on destroying the script and then attempt to query - the defunct script for more info about the error. Wrong. - - perf/cairo-perf-trace.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 7c160dea5456b783d9b04b5c11bbacb9a89fa031 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 1 10:12:50 2009 +0100 - - [perf] Unbreak cairo-perf-diff builder - - perf/cairo-perf-diff | 19 ++++++++++--------- - 1 files changed, 10 insertions(+), 9 deletions(-) - -commit 3d88f99668308315db759af3dac789973caa8eae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jul 1 09:57:56 2009 +0100 - - [perf] Enable cairo-perf-trace in cairo-perf-diff - - Only as a --trace option for now. - - perf/cairo-perf-diff | 51 +++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 36 insertions(+), 15 deletions(-) - -commit 1564d67d63618e12c58dc1d65c7e68505950e4d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 30 22:22:39 2009 +0100 - - [perf] Exclude the xlib-reference target from cairo-perf - - perf/cairo-perf-trace.c | 3 ++- - perf/cairo-perf.c | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit e5b4f78bff20903fef5f55a0fcd026590ea444a4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 30 22:12:50 2009 +0100 - - [boilerplate] Only include null-test-surface >= cairo-1.9.3 - - boilerplate/cairo-boilerplate-test-surfaces.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit e0bdbb437ee699d6f75df34494a6e290dc55aa39 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 30 22:04:01 2009 +0100 - - [xlib] Remove redundant checks for src_picture==None - - Before attempting to even set the attributes on the source Picture, we - ensure that it exists. So remove the redundant safe-guards to do nothing - if it doesn't exist. - - src/cairo-xlib-surface.c | 12 +----------- - 1 files changed, 1 insertions(+), 11 deletions(-) - -commit b7f68d3518e25fb02c9d36d14de9dc0c905ffe8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 30 20:46:12 2009 +0100 - - [perf] Enable trace directory recursion. - - I have an idea to categorise traces within their own subdirectories and so - for convenience added path walking to cairo-perf-trace. Principally this - should allow for forests of symlinks of all types. - - perf/cairo-perf-trace.c | 104 ++++++++++++++++++++++++++++++----------------- - perf/cairo-perf.h | 1 + - 2 files changed, 68 insertions(+), 37 deletions(-) - -commit 6102dd0c1c26e289ad08d1cf0cc366e6298f5711 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 29 10:50:44 2009 +0100 - - [ft] Correct reference counting for implementation font face - - We are expected to return a new reference from get_implementation(), and - failing to do so was causing use-after-frees (detected by the reference - counting checks). - - src/cairo-ft-font.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 4f745fbe3329a4fd5164c7bd7fe61c0395e8d1ee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 29 10:49:51 2009 +0100 - - [test] Only run fallback-resolution for enabled targets - - A secondary check that both activates CAIRO_TEST_TARGET and prevents a - NULL-deref with the null test surface. - - test/fallback-resolution.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit d80f5580ef371a1d4b1746b4ad54d97274d2d6cd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 21:11:41 2009 +0100 - - [pattern] Mark _cairo_pattern_nil as static - - Fixes check-def.sh failure. - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 758a18b354cefca841536c7d91f8f5758456f72f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 20:56:33 2009 +0100 - - [test] Timeout support for tests - - Enforce that each test must render within 60 seconds or be considered to - have hit an infinite loop and be reported as a CRASH. The timeout value is - adjustable via CAIRO_TEST_TIMEOUT -- a value of 0 will disable. - - build/configure.ac.system | 3 +++ - test/cairo-test.c | 18 ++++++++++++++++++ - test/cairo-test.h | 2 ++ - 3 files changed, 23 insertions(+), 0 deletions(-) - -commit f7021d8f3e59d1f7fa77135366bbbd6845dff684 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 20:41:04 2009 +0100 - - [script] Enable error handling for recursive scanners - - It's conceivable that a script could execute another file and so we should - only setjmp on the first invocation. - - util/cairo-script/cairo-script-private.h | 1 + - util/cairo-script/cairo-script-scanner.c | 15 ++++++++++++--- - 2 files changed, 13 insertions(+), 3 deletions(-) - -commit 963664727b4754f92a876c36557922821706f591 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 10:49:37 2009 +0100 - - [trace] Compile fix for --enable-script - - Silly typo as pointed out by Hans Breuer <hans@breuer.org>. - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2ecafb025c8b15a86372b655e763d742a0f6ef85 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 10:09:01 2009 +0100 - - [script] Reuse glyph advance cache over multiple invocations - - Store the metric cache as user-data on the scaled-font so that we can - retrieve it on future calls to show-glyphs and friends. - - util/cairo-script/cairo-script-operators.c | 413 +++++++++------------------- - 1 files changed, 131 insertions(+), 282 deletions(-) - -commit 663da31bbe7cf6021c8d59a4d4ddd2702cfe860f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 01:17:13 2009 +0100 - - [boilerplate] Propagate original error from create_from_png() - - During cairo_boilerplate_get_image_surface_from_png() the original status - returned by cairo_image_surface_create_from_png() could have been masked - by inappropriate context construction when flattening or extracting. - Simply check after creating the surface from the png file, and return - immediately if in error. - - boilerplate/cairo-boilerplate.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2bbb69420289aa372512602db312611369e70f54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 00:57:10 2009 +0100 - - [test] Disable fallback16 testing - - Only use the RGB16_565 surface as a source during testing. We presume that - pixman is itself rigorously tested and the output is equivalent to the - image surface. Enabling this test surface would require too large of a - burden to maintain the reference images for the 16-bit backend. - - boilerplate/cairo-boilerplate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 34ac8673b2d51edeb0b29a4949d7d16c3d07a790 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 28 00:48:05 2009 +0100 - - [script] Use setjmp exception handling during scanning - - Save ~5% of overhead by using longjmp on error to terminate scanning - instead of propagating the error, incurring lots of redundant error - checks. - - util/cairo-script/cairo-script-interpreter.c | 14 +- - util/cairo-script/cairo-script-objects.c | 46 +--- - util/cairo-script/cairo-script-private.h | 53 +++-- - util/cairo-script/cairo-script-scanner.c | 390 ++++++++++++-------------- - 4 files changed, 222 insertions(+), 281 deletions(-) - -commit 2b1ec7a4d87399824dacb9803627c9322b12d894 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 22:48:19 2009 +0100 - - [cairo] Report true error via pattern from cairo_pop_group() - - Report the correct error via the returned pattern->status rather than - simply returning the NO_MEMORY nil object. - - src/cairo-pattern.c | 4 ++-- - src/cairo.c | 18 +++++++++++------- - src/cairoint.h | 4 +++- - 3 files changed, 16 insertions(+), 10 deletions(-) - -commit 5c3be3ece27b7cf6e4b1262ea18ac51b45c62389 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 22:40:15 2009 +0100 - - [cairo] Mark cr->status guard as unlikely - - For correct operation, the context should never be in error, so mark the - error context as being unlikely to optimize the common path. - - src/cairo.c | 199 +++++++++++++++++++++++++++++------------------------------ - 1 files changed, 97 insertions(+), 102 deletions(-) - -commit f3880283331f3bda374e24fd0e1de677d8d368a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 20:18:18 2009 +0100 - - [gstate] Avoid temporary allocation for transformed patterns - - Observe that patterns are not altered during an operation and so we are - safe to use the data from the original pattern without copying. (This is - enforced through the declaration that the backends operate on constant - patterns which are not allowed to be referenced or destroyed.) - - src/cairo-gstate.c | 184 ++++++++++++++++----------------------------------- - src/cairo-pattern.c | 31 +++++++++ - src/cairoint.h | 4 + - 3 files changed, 92 insertions(+), 127 deletions(-) - -commit 3759c7b34b662ccdc0486c68798aca0a6438ab7e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 19:38:30 2009 +0100 - - [perf] Enable the null-backend for trace replays. - - perf/cairo-perf-trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8d4c704129132effa10fb9242239952c2f4b7721 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 19:34:20 2009 +0100 - - [ft] Cache the resolved font face - - Keep the resolved font face alive whilst the default FcConfig remains - identical i.e. resolve the pattern again if the system configuration - changes (e.g. a new font is added or the rules are updated). This should - retain the benefits of lazily resolving font patterns whilst improving - performance by reducing the number of calls to FcFontMatch(). - - src/cairo-ft-font.c | 39 ++++++++++++++++++++++++++++++++++----- - 1 files changed, 34 insertions(+), 5 deletions(-) - -commit ddadd41a6c3d6a7cdaa07373b24325f59d3436e3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 18:07:36 2009 +0100 - - [test] Remove broken PDF reference images for push-group - - More XFAIL reference images that are now invalidated by changes in - poppler. - - test/Makefile.am | 3 --- - test/push-group.pdf.argb32.ref.png | Bin 2722 -> 0 bytes - test/push-group.pdf.ref.png | Bin 2807 -> 0 bytes - test/push-group.pdf.rgb24.ref.png | Bin 2740 -> 0 bytes - 4 files changed, 0 insertions(+), 3 deletions(-) - -commit 4d233fa4a6a16d400ba959f4c1c5d84fdd26d8fc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 18:04:37 2009 +0100 - - [test] Remove invalid smask PDF reference images - - These need to be recorded using an XFAIL reference. In the meantime, as - the poppler output has changed, just remove all the invalid PDF reference - images. - - test/Makefile.am | 19 ------------------- - test/smask-fill.pdf.argb32.ref.png | Bin 1909 -> 0 bytes - test/smask-fill.pdf.ref.png | Bin 1075 -> 0 bytes - test/smask-fill.pdf.rgb24.ref.png | Bin 1909 -> 0 bytes - test/smask-image-mask.pdf.argb32.ref.png | Bin 1651 -> 0 bytes - test/smask-image-mask.pdf.ref.png | Bin 421 -> 0 bytes - test/smask-image-mask.pdf.rgb24.ref.png | Bin 1651 -> 0 bytes - test/smask-mask.pdf.argb32.ref.png | Bin 4398 -> 0 bytes - test/smask-mask.pdf.ref.png | Bin 3731 -> 0 bytes - test/smask-mask.pdf.rgb24.ref.png | Bin 4398 -> 0 bytes - test/smask-paint.pdf.argb32.ref.png | Bin 4496 -> 0 bytes - test/smask-paint.pdf.ref.png | Bin 3800 -> 0 bytes - test/smask-paint.pdf.rgb24.ref.png | Bin 4496 -> 0 bytes - test/smask-stroke.pdf.argb32.ref.png | Bin 1417 -> 0 bytes - test/smask-stroke.pdf.ref.png | Bin 449 -> 0 bytes - test/smask-stroke.pdf.rgb24.ref.png | Bin 1417 -> 0 bytes - test/smask-text.pdf.ref.png | Bin 1806 -> 0 bytes - test/smask.pdf.argb32.ref.png | Bin 4496 -> 0 bytes - test/smask.pdf.ref.png | Bin 3800 -> 0 bytes - test/smask.pdf.rgb24.ref.png | Bin 4496 -> 0 bytes - 20 files changed, 0 insertions(+), 19 deletions(-) - -commit 86624627e4b196a78cfd9bd642299441e838e0f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 17:53:18 2009 +0100 - - [test] Add group-unaligned - - Test case for: - Bug 22441 -- Unexpected shift with push_group and pop_group - https://bugs.freedesktop.org/show_bug.cgi?id=22441 - - This is a test that demonstrates the error in the pdf backend when using - groups on surfaces with non-integer sizes. In order to create such a - surface, we need to update the boilerplate to use doubles instead of - integers when specifying the surface size. - - boilerplate/cairo-boilerplate-beos-private.h | 16 +++--- - boilerplate/cairo-boilerplate-beos.cpp | 8 +- - boilerplate/cairo-boilerplate-directfb-private.h | 8 +- - boilerplate/cairo-boilerplate-directfb.c | 8 +- - boilerplate/cairo-boilerplate-glitz-agl.c | 8 +- - boilerplate/cairo-boilerplate-glitz-glx.c | 10 ++-- - boilerplate/cairo-boilerplate-glitz-private.h | 24 ++++---- - boilerplate/cairo-boilerplate-glitz-wgl.c | 8 +- - boilerplate/cairo-boilerplate-pdf-private.h | 8 +- - boilerplate/cairo-boilerplate-pdf.c | 14 ++-- - boilerplate/cairo-boilerplate-ps-private.h | 16 +++--- - boilerplate/cairo-boilerplate-ps.c | 30 +++++----- - boilerplate/cairo-boilerplate-qt-private.h | 10 ++-- - boilerplate/cairo-boilerplate-qt.cpp | 8 +- - boilerplate/cairo-boilerplate-quartz-private.h | 8 +- - boilerplate/cairo-boilerplate-quartz.c | 8 +- - boilerplate/cairo-boilerplate-script-private.h | 8 +- - boilerplate/cairo-boilerplate-script.c | 12 ++-- - boilerplate/cairo-boilerplate-svg-private.h | 16 +++--- - boilerplate/cairo-boilerplate-svg.c | 30 +++++----- - .../cairo-boilerplate-test-surfaces-private.h | 40 +++++++------- - boilerplate/cairo-boilerplate-test-surfaces.c | 40 +++++++------- - boilerplate/cairo-boilerplate-win32-printing.c | 8 +- - boilerplate/cairo-boilerplate-win32-private.h | 16 +++--- - boilerplate/cairo-boilerplate-win32.c | 8 +- - boilerplate/cairo-boilerplate-xcb-private.h | 8 +- - boilerplate/cairo-boilerplate-xcb.c | 8 +- - boilerplate/cairo-boilerplate-xlib-private.h | 24 ++++---- - boilerplate/cairo-boilerplate-xlib.c | 45 +++++++++------ - boilerplate/cairo-boilerplate.c | 10 ++-- - boilerplate/cairo-boilerplate.h | 8 +- - test/Makefile.am | 7 ++ - test/Makefile.sources | 1 + - test/cairo-test.c | 2 +- - test/cairo-test.h | 4 +- - test/group-unaligned.c | 60 ++++++++++++++++++++ - test/group-unaligned.pdf.ref.png | Bin 0 -> 414 bytes - test/group-unaligned.ps.ref.png | Bin 0 -> 332 bytes - test/group-unaligned.svg.argb32.ref.png | Bin 0 -> 524 bytes - test/group-unaligned.svg.rgb24.ref.png | Bin 0 -> 434 bytes - test/group-unaligned.xlib-fallback.ref.png | Bin 0 -> 496 bytes - test/group-unaligned.xlib.ref.png | Bin 0 -> 466 bytes - 42 files changed, 312 insertions(+), 235 deletions(-) - -commit c506ddb58612c69b80b08be3a6d14c5bcc1ac21f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 27 16:54:37 2009 +0100 - - [pdf] Restore original surface size after emitting group mask - - A trivial fix to reset the original surface size after emitting the group. - The annoying aspect is that this should have been caught by the test suite. - Alas, no. A gentle reminder that simple line coverage is insufficient. :( - - src/cairo-pdf-surface.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit f8a2665840f12ae48798b0ffca49681e276823ba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 26 07:22:49 2009 +0100 - - [cairo] Trivial code tidy - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c7cf5317f58b382c47ad2d1b4d8db3133b0c4d4b -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Jun 24 23:33:44 2009 +0100 - - [test] Fix Makefile.am for Solaris make. - - Sun's make doesn't like conditional assignments to variables - in dependencies in the form of "target: VAR+=VAL". This - construct was used to force the test suite run in the foreground - in the check-valgrind target. It is replaced by a more - explicit set of the CAIRO_TEST_MODE environment variable. - - test/Makefile.am | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit b82e7740c102afa7b9184b2556b887cf7a0211b0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 21 22:25:08 2009 +0100 - - [atomic] Silence compiler warnings by defining an intptr_t - - Evaulate the integer sizes during configure to find one of the exact same - size as a void* to use in the conversion of the atomic ptr cmpxchg to an - atomic int cmpxchg. - - build/configure.ac.system | 3 +++ - src/cairo-atomic-private.h | 19 ++++++++++++------- - 2 files changed, 15 insertions(+), 7 deletions(-) - -commit a2d4fb50092c0cbb31a5df1bca9111957238139b -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Jun 21 14:09:10 2009 +0100 - - [test] Fix a typo in the _POSIX_SOURCE version number. - - I hope POSIX isn't around in 20000 AD! - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 80990c7f729a666fc646182a36ffd311d7396a1a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Jun 21 14:02:46 2009 +0100 - - [atomic] Use an integer __sync_val_compare_and_swap() for pointer CAS. - - Fix an implicit pointer/integer cast in _cairo_atomic_ptr_cmpxchg() - when building with LLVM/clang. - - The Intel synchronization primitives __sync_val_compare_and_swap() - are only defined by Intel for types int, long, long long and their - unsigned variants. This patch uses one of those for - _cairo_atomic_ptr_cmpxchg() instead of relying on a gcc extension of - __sync_val_compare_and_swap() to pointer types. - - src/cairo-atomic-private.h | 9 ++++++++- - src/cairo-atomic.c | 6 +++++- - 2 files changed, 13 insertions(+), 2 deletions(-) - -commit d0c1c9282164bffb76f7419873e93608dc6d9876 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 21 10:08:21 2009 +0100 - - [boilerplate] Implement a reference xlib surface - - Create an xlib target that uses a separate display, specified by - CAIRO_REFERENCE_DISPLAY, that can be used as a reference implementation - for the normal display. So this can be used by cairo-trace-test to create - a reference surface that mimics exactly the true surface, but if it - targets an Xvfb display will be entirely rendered in software. If - CAIRO_REFERENCE_DISPLAY is not set, the reference surface degrades into an - xlib-fallback surface which is a close approximation (but still has - behavioural differences). - - boilerplate/cairo-boilerplate-xlib-private.h | 11 ++++++ - boilerplate/cairo-boilerplate-xlib.c | 51 ++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 14 ++++++- - 3 files changed, 74 insertions(+), 2 deletions(-) - -commit d2244053dcca687a878b1008e3a8219f11d7bd0d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 21 08:58:08 2009 +0100 - - [perf] Force rebuild if make fails - - The build system has a singular failure whereby if a backend disappears - between on compile and the next, automake will fail to reconstruct the - Makefiles - resulting in a broken build. Attempt to fix this by removing - the build dir and recloning, which should work for any corrupt caches but - obviously will fail again at a true build failure. - - perf/cairo-perf-diff | 63 +++++++++++++++++++++++++++++-------------------- - 1 files changed, 37 insertions(+), 26 deletions(-) - -commit ef0d307d549b9cc7a98cdce2ee4bae40d0fd0bd1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 21 08:43:55 2009 +0100 - - [perf] Need to version surface types - - As cairo-perf-diff will execute the current cairo-perf against historical - revisions, any introduced api must be protect in order to compile on old - versions. - - perf/cairo-perf-trace.c | 8 ++++++++ - perf/cairo-perf.c | 6 ++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit 44b72ba6d7bdcc5f4e431af178bc7c22f13e88e0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 20 13:09:46 2009 +0100 - - [perf] Add a non-build mode to graph - - Add --show to cairo-perf-graph just to graph perf files that currently - exist and not build the missing cases. - - perf/cairo-perf-graph | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit d4dd6fcf3a4e0d7426657592ebb3d65a2ae0bc4a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 20 13:08:50 2009 +0100 - - [perf] Show speedup/slowdownn labels on graph - - Add labels show that it is clear which direction is faster on the graph. - - perf/cairo-perf-graph-widget.c | 166 ++++++++++++++++++++++++++++++++++++--- - 1 files changed, 153 insertions(+), 13 deletions(-) - -commit b71b6ecb59bf83605bb2bb10e3f8acd7dd950242 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 21:21:02 2009 +0100 - - [test] Fix the image compare - - Oh, it's a bad sign when I can't even correctly compare a bunch of pixels. - - test/cairo-test-trace.c | 101 ++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 86 insertions(+), 15 deletions(-) - -commit d544828934e479071fe5246fc0bdbbad33c097e8 -Author: M Joonas Pihlaja <rowan@sal.math.ualberta.ca> -Date: Sat Jun 20 06:16:51 2009 -0600 - - [build] Look for libpng.pc as well when configuring. - - The OpenBSD png package installs only libpng.pc and not - any of libpng{13,12,10}.pc. - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5733d8d6c35e1a77513a49267a47f6caae68e829 -Author: M Joonas Pihlaja <rowan@sal.math.ualberta.ca> -Date: Sat Jun 20 06:11:44 2009 -0600 - - [build] Remove a level of quoting from CAIRO_PARSE_VERSION. - - The m4 that comes with OpenBSD gets confused by the extra quoting - applied to the version number argument when building the - bodies of the cairo_version_{major,minor,micro} macros using - m4_bpatsubst(). Since we're making sure that the argument is always - a number, we can safely use the unquoted \2 body rather than \[\2\]. - - acinclude.m4 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3bad3efaa2fa00275c1d27c95ccbf1fcdfdfef3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 19:09:03 2009 +0100 - - [test] Add cairo-test-trace to .gitignore - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 62dc0ae46c26652da9a76b851bab594020020115 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 19:03:17 2009 +0100 - - [cairo] Offset the current path when pushing/popping groups. - - We need to translate the path in order to compensate for the device offset - applied to the group surface when pushing and popping. (The path is - transformed to device space on creation, and so needs recomputing for the - new device.) - - src/cairo.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 851c8839622619779c9169299e3efccd108d0395 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 19:00:39 2009 +0100 - - [test] Add group-clip - - Larry Ewing found an ancient and nasty bug whereby a path was not - corrected whilst pushing and popping groups. - - AUTHORS | 1 + - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/group-clip.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ - test/group-clip.ref.png | Bin 0 -> 191 bytes - 5 files changed, 60 insertions(+), 0 deletions(-) - -commit 0a34abace781976b92287dd07daa2b41e168c4f6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 18:40:43 2009 +0100 - - [test] Experiment with reference targets - - Specify another boilerplate target to use as the reference for this - target. We then use this in cairo-test-trace in preference to using the - image surface. Still not perfect, though the framework is improving. - - boilerplate/cairo-boilerplate.c | 254 ++++++++++++++++++++++----------------- - boilerplate/cairo-boilerplate.h | 5 + - test/Makefile.am | 6 +- - test/cairo-test-trace.c | 229 +++++++++++++++++++++++++++++------ - 4 files changed, 341 insertions(+), 153 deletions(-) - -commit cec8579348fb39ca879285bebfb1ee65cbae502d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 16:09:26 2009 +0100 - - [xlib] Remove redundant code to query a xrender_format from a visual - - We always query an xrender_format for a Visual upon surface creation, so - checking again in create_similar() is redundant. (It also interferes with - disabling XRender...) - - src/cairo-xlib-surface.c | 9 ++------- - 1 files changed, 2 insertions(+), 7 deletions(-) - -commit dd842a2bed1568000c9727fc35d4683db349e506 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 14:59:59 2009 +0100 - - [boilerplate] Missing static on pdf user data key. - - boilerplate/cairo-boilerplate-pdf.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2da906f4764d5fe7cbb08ec238b01e2a03696899 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 19 18:44:23 2009 +0300 - - [script] Include unistd.h if we're twiddling file descriptors. - - Including sys/mman.h doesn't pull in unistd.h on Solaris 9 so - we have to include it explicitly. - - util/cairo-script/cairo-script-operators.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 1b6dbcbbebf18d6239fcc618f3389e9c0fc981f3 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 19 18:39:53 2009 +0300 - - [trace] Compile without fontconfig. - - Use CAIRO_HAS_FC_FONT to decide whether to export - cairo_ft_font_face_create_for_pattern() or not. - - util/cairo-trace/trace.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d9b5a98a78b712a2ad64408fa47ba6aa34e29f1f -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 19 18:34:34 2009 +0300 - - [build] Require fontconfig >= 2.2.95 if we're using it at all. - - We require at least fontconfig 2.2.95 when we're using - fontconfig because we depend on the FcResultOutOfMemory - error code introduced in that version. - - configure.ac | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 84e587bbfad6586e41fac86c4d19005418115ac5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 14:41:39 2009 +0100 - - [trace] Prevent a child process from writing to the same file - - After opening a specific file or fd for ourselves, reset the - CAIRO_TRACE_FD to point to an invalid fd in order to prevent any child - processes (who inherit our environment) from attempting to trace cairo - calls. If we allow them to continue, then the two traces will intermix - and be unreplayable. - - util/cairo-trace/trace.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 18edea36ba6604e4cbdbda1ed56e6117b5768d94 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 14:14:32 2009 +0100 - - [perf] Report line of error during trace - - Query the number of new lines processed so far and report that on hitting - an error. - - perf/cairo-perf-trace.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 55721d380d5a75a9448f522f9ad48cd18a6c2f65 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 14:13:34 2009 +0100 - - [script] Report line number - - Count the number of newlines processed in the trace and provide an API for - the user to query. - - util/cairo-script/cairo-script-interpreter.c | 6 ++++++ - util/cairo-script/cairo-script-interpreter.h | 3 +++ - util/cairo-script/cairo-script-private.h | 2 ++ - util/cairo-script/cairo-script-scanner.c | 12 +++++++++--- - 4 files changed, 20 insertions(+), 3 deletions(-) - -commit 030ef4ca0023166fcb82f0a0b1512eb31beb3385 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 11:56:14 2009 +0100 - - [trace] Change the threshold at which pixel data is immediately copied - - Embed the pixels for images less than 32*32 as this catches most icons - which are frequently uploaded, but is still an unlikely size for a - destination image surface. - - util/cairo-trace/trace.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit d3330d7beba0e0d2543e40a0e0e4d81ea9a78b45 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 19 11:15:30 2009 +0100 - - [ft] Substitute twin if there are no fonts - - Fixes bug 22356 -- Spurious "out of memory" error on system without fonts - https://bugs.freedesktop.org/show_bug.cgi?id=22356 - - If FcFontMatch() fails, then it means that there are no fonts available on - the system (or it may have been a malloc error, we have no way of telling). - Instead of report NO_MEMORY and disabling all drawing, one of the - rationales for including a builtin font was so that we could continue even - in the face of this error and show *something* to the user. (This being a - last resort (and especially important for demos!) and hopefully easier to - diagnose than no output at all.) - - src/cairo-font-face-twin.c | 75 ++++++++++++++++++++++++++++++++++---------- - src/cairo-ft-font.c | 6 +++- - src/cairoint.h | 3 ++ - 3 files changed, 66 insertions(+), 18 deletions(-) - -commit 6d8b353658da1ad973e3bda9e89799a7467d8182 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 19 02:37:19 2009 +0300 - - [spans] Squash a compiler warning when creating error objects. - - Handle the new CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED status code - in the switch/case of the ..._create_in_error() functions for - creating span renderers or scan converters. - - src/cairo-spans.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7651227d3dfe4ebf40e95a72106957a9ec51dd3e -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jun 19 02:03:39 2009 +0300 - - Revert "[test] Make the xlib-fallback use the image refs." - - This reverts commit 903b39c30448d62e2cbf9d075c5256a333bd5d8f. - - The xlib-fallback actually renders mostly via traps at the moment, - so staying with xlib refs is the right thing to do. - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 729457b174cb19f4e0750486caed9582c5708930 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat May 2 23:30:02 2009 +0300 - - [test] Add trap rendered ref images for fill-image. - - The fill code path for the xlib and fallback surfaces use trapezoids - rather than spans, so there's lots of differences due to antialising - differences at the edge of the fill. This patch adds a ref image - for the xlib and test-fallback surfaces. - - test/fill-image.test-fallback.ref.png | Bin 0 -> 1462 bytes - test/fill-image.xlib.ref.png | Bin 0 -> 1462 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 8e7f667abb94262b63b4fd589f5ee06cb8974aaf -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat May 2 19:09:27 2009 +0300 - - [test] Mark scale-offset tests as XFAIL for image, xlib-fallback. - - The scale-offset tests trigger a loss-of-precision bug when - converting double matrices from cairo to pixman format. - - http://lists.cairographics.org/archives/cairo/2008-November/015671.html - - test/Makefile.am | 2 ++ - test/scale-offset-image.c | 2 +- - test/scale-offset-similar.c | 2 +- - 3 files changed, 4 insertions(+), 2 deletions(-) - -commit c12533b1358c9e5c1c3440efca4dc44ba2de9f6d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 17:46:14 2009 +0100 - - [pattern] Add _cairo_pattern_fini_snapshot - - Symmetric operation to _cairo_pattern_init_snapshot() this exists simply - to break the circular reference between the meta-surface and snapshot-cow. - - src/cairo-meta-surface.c | 24 ++++++++++++------------ - src/cairo-pattern.c | 17 +++++++++++++++++ - src/cairoint.h | 3 +++ - 3 files changed, 32 insertions(+), 12 deletions(-) - -commit 2213c447373b600c1583b2edd24775c5c031231c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 17:14:53 2009 +0100 - - [svg] Break circular snapshot reference by explicit finish - - The svg backend snapshots the meta surface which because of snapshot-cow - creates a circular reference back to the creator. So in order to break the - circular reference when we have finished with the snapshot, we need to - call cairo_surface_finish() in addition to simply destroying the surface. - - src/cairo-svg-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit cd9eef1aad87558d3f2d47cfcfa2f5b9b254692c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 16:42:56 2009 +0100 - - [scaled-font] Check the MRU font before resolving the implementor - - This should hide most of the overhead of resolving a frequently used toy font. - - src/cairo-scaled-font.c | 23 +++++++++++++++-------- - 1 files changed, 15 insertions(+), 8 deletions(-) - -commit 5ad64dfda26f97f243f13e9b766567a30fda67a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 16:39:02 2009 +0100 - - [test] Add the sha1sum of the required fonts - - (Note, I think these are currently out-of-date... But it will serve as a - useful reminder to verify and update them in future.) - - test/README | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 3063f0f44c61869bc6bb07d46bf881f1558ac015 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 16:33:12 2009 +0100 - - [scaled-font-subset] Check for matching font-face implementors - - Catch toy and user fonts which may have different font-faces for their - implementation than the original ones they were created with. - - src/cairo-scaled-font-subsets.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 6e78c94615e407d72d4778d5558dc218e0402cbc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 16:30:41 2009 +0100 - - [test] Move calls to the getters from out of the innermost loops. - - Tidy the code slightly by removing excess and unsightly calls to - cairo_test_get_context() and cairo_get_scaled_font(). - - test/show-glyphs-many.c | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit 3da32e35afa57533379c3de35459f23aef7c3d04 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 15:31:27 2009 +0100 - - [analysis] Restore nops for the analysis null surface - - Joonas reported that adding the extra routines to the null-surface as used - by the analysis surface broke user-fonts. So create a separate null - backend to be exported via the test-null surface. - - src/cairo-analysis-surface.c | 57 ++-------------- - src/test-null-surface.c | 157 +++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 161 insertions(+), 53 deletions(-) - -commit c0e01d9cd71bd958e1b31a03cea4c08a1bdf4926 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 18 14:32:53 2009 +0100 - - [xlib] Improve GC caching efficacy - - Shrink the overall size of the per-screen GC cache, but allow multiple GCs - per depth, as it quite common to need up to two temporary GCs along some - drawing paths. Decrease the number of GCs we obtain in total by returning - clean (i.e. a GC without a clip set) back to the screen pool after use. - Compensate for the increased number of put/get by performing the query - using atomic operations where available. So overall we see a dramatic - reduction on the numbers of XCreateGC and XFreeGC, of even greater benefit - for RENDER-less servers. - - src/cairo-xlib-private.h | 11 ++- - src/cairo-xlib-screen.c | 200 +++++++++++++++++++++++++++++++++++----------- - src/cairo-xlib-surface.c | 58 +++++++++----- - 3 files changed, 197 insertions(+), 72 deletions(-) - -commit 7f238f542441cc5912d14e5c6f9c49ffd0b83fad -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Jun 18 17:13:13 2009 -0400 - - Use the scanline rasterizer in the win32 backend. - - Brings http://people.mozilla.com/~jmuizelaar/world-map.html from 8fps to 13fps - in Vista on a Mac Mini - - src/cairo-win32-surface.c | 146 ++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 144 insertions(+), 2 deletions(-) - -commit d066154e62d6b4ecad15e0eef431aa2f4a56fecb -Author: Jeff Muizelaar <jeff@infidigm.net> -Date: Tue Jun 16 15:55:53 2009 -0400 - - Factor out _cairo_image_surface_span_render_row() - - This allows other backends use the same function for rendering rows. - More specifically, I intend to use this with the win32-backend. - - src/cairo-image-surface.c | 36 +++++++++++++++++++++++------------- - src/cairoint.h | 6 ++++++ - 2 files changed, 29 insertions(+), 13 deletions(-) - -commit fd142d0a6e21c492624ca8bc5019d89b0d7c5457 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 18 16:14:50 2009 +0100 - - [shave] Robuster usage of the test shell built-in. - - Solaris 9 confuses shave, resulting in an empty variable. - This patch papers over the resulting build failure from - the test shell built-in being called with an empty argument - which was unquoted. - - build/shave.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9ecee571c12e4d1645d9db2929280c9b35b1aad4 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 18 16:09:31 2009 +0100 - - [test/build] Don't test Freetype font stuff without Fontconfig. - - Most Freetype hitting tests require Fontconfig to find - them some fonts. - - test/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 742b1ad4b069653a99fc6bd4510f2b6abb6abf95 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 23:41:28 2009 +0100 - - [test] Fix checking of the fenv.h include. - - This adds a configure check for fenv.h and makes - invalid-matrix.c check for it with HAVE_FENV_H instead - of HAVE_FEDISABLEEXCEPT -- turns out Solaris doesn't - have fedisableexcept(), but it does have feclearexcept(). - - The same issue appears on OSX and was fixed in - ab86662ab499e1f29c0f8c4248771e730c281e3f. This patch - adds some configure magic. - - build/configure.ac.system | 2 +- - test/invalid-matrix.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 75f1d11d93236b19d06515b8ed2baf612b0767ab -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 21:28:04 2009 +0300 - - [test] Fallback to HUGE_VAL in place of INFINITY in invalid-matrix.c. - - GCC 3.4.3 on OpenSolaris does not recognise INFINITY. Use HUGE_VAL - instead for every compiler instead of just MSVC. - - test/invalid-matrix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d1994d1ac292cbc896cffd24094ddfa5f2b1e8a9 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 23:46:13 2009 +0300 - - [test/any2ppm] Daemonize without BSD's daemon(). - - Solaris libc doesn't provide daemon() so implement - any2ppm daemon's detaching without it. - - test/Makefile.am | 2 +- - test/any2ppm.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++---- - 2 files changed, 58 insertions(+), 6 deletions(-) - -commit aafff0b9528952fbbe9d04a70bf8c76ee701743f -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 23:50:03 2009 +0300 - - [boilerplate] Check for connect() in libsocket. - - Solaris requires -lsocket to be able to talk to - the any2ppm daemon over unix domain sockets. - - boilerplate/Makefile.am | 2 ++ - build/configure.ac.system | 4 ++++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit c4c06931690226e12622a957bbb6d652134f78b0 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 16:14:33 2009 +0300 - - [test] Make test constructors without perl. - - Remove the dependency on perl when building the test suite - by replacing the script which makes cairo-test-constructors.c - with a C program. - - test/.gitignore | 1 + - test/Makefile.am | 9 ++- - test/Makefile.win32 | 7 +- - test/make-cairo-test-constructors.c | 153 ++++++++++++++++++++++++++++++++++ - test/make-cairo-test-constructors.pl | 18 ---- - 5 files changed, 165 insertions(+), 23 deletions(-) - -commit cdd27a8d4cc3486867cff4ce81bb4e064eb74d58 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun May 24 16:19:31 2009 +0300 - - [test] Never use gcc __attribute__ magic for constructors. - - The configure test for __attribute__((constructor)) succeeds when - compiling with Sun Studio 12 on OpenSolaris but the attribute - is just ignored and has no actual effect. This causes the test - suite to not run any tests at all. With this patch we revert to - always using make-cairo-test-constructors.pl. - - build/configure.ac.system | 10 ---------- - test/Makefile.am | 7 ++----- - test/cairo-test-private.h | 2 -- - test/cairo-test-runner.c | 2 -- - test/cairo-test.h | 14 -------------- - 5 files changed, 2 insertions(+), 33 deletions(-) - -commit 46eb56a99f72b364e3eabe46f9b2995ed0696bd3 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jun 18 16:42:53 2009 +0300 - - [cairo-surface] Handle the all clipped out case for regions. - - Explicitly handle a region clip which represents that the - entire surface is clipped out by passing in a temporary - empty region to the backend set_clip_region() method. - Previously the passed in region may have been NULL even - when clip->all_clipped = TRUE. - - Fixes a bug tickled by the clip-all test case which was - brought to light by 394e139213e8f6692115c4c24818bfeb5e6d456a. - - src/cairo-surface.c | 34 +++++++++++++++++++++++++++++++--- - 1 files changed, 31 insertions(+), 3 deletions(-) - -commit 002264d572841f06930869a6c87fa2c987346dd6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 17 17:15:26 2009 +0100 - - [clip] Missing {} (coding style) - - Carl spotted that I'd slipped in a little CODING_STYLE violation. - - src/cairo-clip.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit bc87074185592eae367b6c091241957b94202fda -Author: Nis Martensen <nis.martensen@web.de> -Date: Tue Jun 16 23:27:20 2009 +0200 - - [path] Fix missing implicit move-to - - When cairo_curve_to happens to start a new subpath (e.g., after a call - to cairo_new_sub_path()), it also needs to update the last_move_point. - Otherwise the new current point after a close_path() will be at an - unexpected position. - - Therefore, call _cairo_path_fixed_move_to() explicitly. - - AUTHORS | 1 + - src/cairo-path-fixed.c | 6 +++--- - 2 files changed, 4 insertions(+), 3 deletions(-) - -commit 3c5e57e694d1a8a0a48a66e0d61d8257c23a780e -Author: Nis Martensen <nis.martensen@web.de> -Date: Tue Jun 16 23:38:50 2009 +0200 - - [test] Verify current point position after subpath closure - - Make sure cairo_close_path always takes the current point where it - should be. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/close-path-current-point.c | 95 +++++++++++++++++++++++++++++++++ - test/close-path-current-point.ref.png | Bin 0 -> 1916 bytes - 4 files changed, 97 insertions(+), 0 deletions(-) - -commit 394e139213e8f6692115c4c24818bfeb5e6d456a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 17 14:46:53 2009 +0100 - - [clip] During _clip() limit the extracted traps to the current clip extents - - By applying a tight _cairo_traps_limit() we can reduce the amount of work - we need to do when tessellating the path and extracting the trapezoids. - - src/cairo-clip.c | 39 +++++++++++++++++++++++++++++++++++---- - 1 files changed, 35 insertions(+), 4 deletions(-) - -commit 650b85ec7721fb1302284e3ca4b7f4b72358abed -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 17 14:19:19 2009 +0100 - - [clip] Avoid copying region within _cairo_clip_intersect_region() - - Within _cairo_clip_intersect_region() we can simply assign the freshly - extracted traps-region if we previously had no region set. - - src/cairo-clip.c | 12 +++--------- - 1 files changed, 3 insertions(+), 9 deletions(-) - -commit 4bc89e224f74f24272c97dec93d70f0c4dd1963c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 16 15:13:46 2009 +0100 - - [NEWS] Add release notes from 1.8.8 - - NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 68 insertions(+), 1 deletions(-) - -commit 116c93cb7fe8ad55457c53b4652e8d3117581158 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 16 11:36:36 2009 +0100 - - [cairo] Remove instance of 'return free()' - - Gah! This is a GCC-ism, so therefore it has to go. - - src/cairo.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 22587f57bd5d1b4440d936cd4655a7e8fcebdf36 -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Sun Jun 14 20:43:05 2009 +0100 - - Import Qt backend by Mozilla - - Written by Vladimir Vukicevic to enable integration with Qt embedded - devices, this backend allows cairo code to target QPainter, and use - it as a source for other cairo backends. - - This imports the sources from mozilla-central: - http://mxr.mozilla.org/mozilla-central/find?text=&kind=text&string=cairo-qpainter - renames them from cairo-qpainter to cairo-qt, and integrates the patch - by Oleg Romashin: - https://bugs.freedesktop.org/attachment.cgi?id=18953 - - And then attempts to restore 'make check' to full functionality. - - However: - - C++ does not play well with the PLT symbol hiding, and leaks into the - global namespace. 'make check' fails at check-plt.sh - - - Qt embeds a GUI into QApplication which it requires to construct any - QPainter drawable, i.e. used by the boilerplate to create a cairo-qt - surface, and this leaks fonts (cairo-ft-fonts no less) causing assertion - failures that all cairo objects are accounted for upon destruction. - - [Updated by Chris Wilson] - Acked-by: Jeff Muizelaar <jeff@infidigm.net> - Acked-by: Carl Worth <cworth@cworth.org> - - boilerplate/Makefile.sources | 3 + - boilerplate/Makefile.win32.features | 10 + - boilerplate/cairo-boilerplate-qt-private.h | 60 + - boilerplate/cairo-boilerplate-qt.cpp | 90 ++ - boilerplate/cairo-boilerplate.c | 23 + - boilerplate/cairo-boilerplate.h | 3 + - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 + - build/configure.ac.features | 1 + - configure.ac | 11 + - perf/cairo-perf-trace.c | 1 + - perf/cairo-perf.c | 3 +- - src/Makefile.am | 2 +- - src/Makefile.sources | 3 + - src/Makefile.win32.features | 14 + - src/cairo-debug.c | 42 + - src/cairo-qt-surface.cpp | 1876 ++++++++++++++++++++++++++++ - src/cairo-qt.h | 89 ++ - src/cairo-xlib-surface.c | 6 + - src/cairo.h | 4 +- - src/check-def.sh | 7 +- - src/check-preprocessor-syntax.sh | 3 +- - 22 files changed, 2247 insertions(+), 8 deletions(-) - -commit 7d3881114add18d5934073d0b04755d343ea38c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 15 15:13:43 2009 +0100 - - [perf] Report errors during replays - - perf/cairo-perf-trace.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit 061e0477e9a894241806eeacbde2f3770b751f34 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 15 15:10:50 2009 +0100 - - [perf] Report iteration count - - Show number of discard results by showing the number of statistically - valid samples out of total population count. - - perf/cairo-perf-trace.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit bab8af62e772844f08a244d99f705e318af3f58c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 15 15:01:34 2009 +0100 - - [region] Add PLT entry for cairo_region_create_rectangles() - - src/cairo-region.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 6da9c410d4696ebba0fb563a858f1625bf3b1f9e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 15 12:14:51 2009 +0100 - - Missing header file for cairo-test-null-surface. - - src/test-null-surface.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 46 insertions(+), 0 deletions(-) - -commit e5727e20f52eb0308a8ad1c44a6eb4c7c65d7ff0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 15 11:58:58 2009 +0100 - - Expose _cairo_null_surface_create() via a test surface - - Using a null surface is a convenient method to measure the overhead of the - performance testing framework, so export it although as a test-surface so - that it will only be available in development builds and not pollute - distributed libraries. - - .../cairo-boilerplate-test-surfaces-private.h | 10 ++++ - boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++++++ - boilerplate/cairo-boilerplate.c | 9 +++ - perf/cairo-perf-trace.c | 6 +- - src/Makefile.sources | 2 + - src/cairo-analysis-surface.c | 56 ++++++++++++++++++-- - src/test-null-surface.c | 48 +++++++++++++++++ - test/cairo-test.c | 14 ++++-- - util/cairo-trace/trace.c | 26 +++++++++ - 9 files changed, 175 insertions(+), 12 deletions(-) - -commit f2057061c67236a79c8bb69b84e44e151109629a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 14 09:10:08 2009 +0100 - - [trace] Add sticky bit to (system-wide) trace output dir - - Need to allow user programs to dump their traces into the common output - directory, when using /etc/ld.so.preload to capture traces for the entire - desktop. - - util/cairo-trace/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 3fe50a77ea21bcddb701a8640b5ecad9f6f5ab01 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 22:27:17 2009 +0100 - - [configure] Rephrase warning message for disabling core features. - - "strictly recommended" is an odd phrase and though the stern warning is - appropriate as replacing a system library with a more limited version is - likely to cause mayhem, we are but mere servants and should be reserved in - our parlance. - - build/configure.ac.features | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 5d57aeaa23566739ba01a0fac1c3b90ce27b28cd -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Tue May 26 17:53:37 2009 -0400 - - Reinstate cairo_region_create_rectangles() - - cairo_region_union_rectangle() is linear in the number of rectangles - in the region. There is no way to make it significantly faster without - losing the ability to return errors synchronously, so a - cairo_region_create_rectangles() is needed to avoid a large - performance regression. - - src/cairo-region.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-traps.c | 47 ++++++++++++++++++++++++++++------------------- - src/cairo.h | 4 ++++ - src/cairoint.h | 1 + - 4 files changed, 77 insertions(+), 19 deletions(-) - -commit 216a2e24c7375e48677ce30f9fe8fb3d8bbdd10d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 21:40:05 2009 +0100 - - [test] Minor tweak to cairo-test-trace - - Cleanse the code of a couple of redundant pointer manipulations. - - test/cairo-test-trace.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit 2ab4245c866bcefb755a33f7eaa6ef1277f82df1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 21:33:09 2009 +0100 - - [test] Need SOURCE when copying image data - - As cairo-test-trace does not clear the image data before reuse, using - the default OVER operator will cause differing results for each process - when inadvertently alpha blending into the shared memory region. As we - essentially want to just copy the source pixels, be explicit and set the - SOURCE operator. - - test/cairo-test-trace.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e003d665fe45905606a792e4a783f65fc7e84550 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 19:18:11 2009 +0100 - - [test] Disable compilation of cairo-test-trace without shm_open() - - Remember to only add cairo-test-trace to the list of EXTRA_PROGRAM so long - as we can actually compile it. - - test/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit c092136fe9e5fee71dfe02f945fe5676f43b2d05 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 18:59:17 2009 +0100 - - [configure] Check for shm_open() - - As needed for cairo-test-trace. - - build/configure.ac.system | 8 ++++++++ - test/Makefile.am | 4 +++- - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit f298dd92ca0b789a3d2b591753c992e1673b2d87 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 18:49:16 2009 +0100 - - [test] Remove dlmalloc - - cairo-test-trace's shared memory allocation pattern is much simpler than - anticipated as it allocates a bunch of images and then frees them all, - and so only needs a simple linear allocator. - - test/Makefile.am | 1 - - test/cairo-test-trace.c | 62 +- - test/dlmalloc.c | 5099 ----------------------------------------------- - 3 files changed, 11 insertions(+), 5151 deletions(-) - -commit 37f32f29518bdc1428c7ec137f212313e377486c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 18:31:35 2009 +0100 - - [util] Disable default build of font-view - - It's only a demonstration utility after a all and we do not need to incur - the cost of relinking it everytime we modify the main library. - - util/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0eca1b17b14057ef88ae2df500679e62ffb50118 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 17:16:20 2009 +0100 - - [surface] Give ownership of the snapshot to the snapshotter. - - Previously the reference to the newly created snapshot was owned by the - containing pattern. The consequence of this was that when the pattern was - destroyed the snapshot was cleaned up which prevent reuse of the snapshot - across multiple pages. Transferring ownership upon attachment of the - snapshot to the target means that the snapshot stays in existence until - the target itself is destroyed or modified *and* the containing pattern - is consumed. Obvious in hindsight. - - src/cairo-surface.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit a1b3392e60b6b4ff4b650f4d48d56568c1851245 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 16:37:43 2009 +0100 - - [surface] Mark cairo_surface_show_page() with begin-modification - - cairo_surface_show_page() clears the surface after presentation, so we - need to discard the snapshots here. - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1798bdd322e0d25147195198bf0c5e9506c61a15 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Jun 13 22:47:41 2009 +0930 - - Fix PDF pattern embedding - - The PDF snapshot cow patch was reusing a previously emitted surface - pattern if the surface unique id matched the current surface. This - resulted in incorrect output as the new pattern may have a different - pattern matrix. - - This patch fixes the PDF backend to always emit a new pattern but - re-use previously emitted image or metasurface XObjects. - - src/cairo-pdf-surface-private.h | 21 ++- - src/cairo-pdf-surface.c | 532 ++++++++++++++++++++++++++------------- - 2 files changed, 372 insertions(+), 181 deletions(-) - -commit f115c5479ead934774fea99d74d780e2bb1681c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 15:49:15 2009 +0100 - - [trace] Strip absolute path off name when profiling - - Carl spotted this last night, but I misinterpreted it as an old problem - caused by the application changing its working directory before its first - cairo call - thus causing cairo-trace to attempt to open a file in the new - directory. Instead the problem was attempting to trace an executable with - an absolute path, where we just tagged it with a .lzma extentsion and - attempted to pipe the output there. Obviously this fails for the user - profiling system binaries. So use basename to strip the leading path. - - util/cairo-trace/cairo-trace.in | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit c52eed6680dd13f6bc65dc4a26b6c8eab5a94a54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 15:42:43 2009 +0100 - - [trace] Handle wrapping python - - python lazily loads libcairo.so and so it is not available via RTLD_NEXT, - and we need to dlopen cairo ourselves. Similarly the linker is not able to - resolve any naked function references and so we need to ensure that all of - our own calls into the library are wrapped with DLCALL. - - util/cairo-trace/trace.c | 145 ++++++++++++++++++++++++++-------------------- - 1 files changed, 83 insertions(+), 62 deletions(-) - -commit 606790a86083d31fa50ed5e0cf621eca56c16e33 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 14:07:22 2009 +0100 - - [script] Disable compilation of examples - - Now that cairo-perf-trace exists and is a far superior replay tool, use - EXTRA_PROGRAM for the original replay tools. - - util/cairo-script/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 31b7652e1fa2ab2bd9e9df7f5517b7d678faf6aa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 12:19:51 2009 +0100 - - [test] Never, ever, blame a crashing test on external factors. - - test/cairo-test-runner.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3dde883b779b81b95f420039c02b51b029311f78 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 10:13:20 2009 +0100 - - [test] Code review after sleep - - Review cairo-test-trace.c and rewrite parts to ease understanding and fix - various bugs - such as failure to notice the slaves crashing and not - releasing our shared memory after an interrupt. - - test/cairo-test-trace.c | 400 ++++++++++++++++++++++++++++------------------- - 1 files changed, 236 insertions(+), 164 deletions(-) - -commit 1f542965f0310aed493651b8ddc1e98a4192b977 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 13 08:24:22 2009 +0100 - - [perf] Mention cairo-perf-compare-backends in the README - - perf/README | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit 3b6e4018c69f88135f8d937724acf90adb003bad -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 22:19:56 2009 +0100 - - [test] Add cairo-test-trace - - The basic premise is that we feed the trace to multiple backends in - parallel and compare the output at the end of each context (based on - the premise that contexts demarcate expose events, or their logical - equivalents) with that of the image[1] backend. Each backend is - executed in a separate process, for robustness, with the image data - residing in shared memory and synchronising over a socket. - - [1] Should be reference implementation, currently the image backend is - considered to be the reference for all other backends. - - test/Makefile.am | 16 +- - test/cairo-test-trace.c | 1225 ++++++++++++ - test/dlmalloc.c | 5099 +++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 6339 insertions(+), 1 deletions(-) - -commit a41e1275d28317c88e29b7f142cfc835673c01f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 12:32:51 2009 +0100 - - [boilerplate] Make array of targets const. - - Protect the boilerplate targets from unexpected modifications. - - boilerplate/cairo-boilerplate.c | 8 ++++---- - boilerplate/cairo-boilerplate.h | 4 ++-- - perf/cairo-perf-trace.c | 6 +++--- - perf/cairo-perf.c | 4 ++-- - perf/cairo-perf.h | 4 ++-- - test/cairo-test.h | 2 +- - 6 files changed, 14 insertions(+), 14 deletions(-) - -commit 6aebde6598c629d667b06e20111106832d139c4d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 12:25:22 2009 +0100 - - [boilerplate] Export cairo_boilerplate_get_image_target() - - A routine to scan the compiled list of targets and return the entry - corresponding to the image backend. - - boilerplate/cairo-boilerplate.c | 17 +++++++++++++++++ - boilerplate/cairo-boilerplate.h | 3 +++ - 2 files changed, 20 insertions(+), 0 deletions(-) - -commit d008167b9bcd6a24199740183bbfcabcfdccdd63 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Jun 12 12:08:22 2009 -0700 - - Makefile: Fix two typos preventing doc-publish from working - - It seems that everything up to this point in release-publish - worked fine, so with these fixes, hopefully the next run of - make release-publish will work without any snags. - - build/Makefile.am.releasing | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 98eb84cfbbf2cfdb0153c8e924099cef016a412a -Author: Carl Worth <cworth@cworth.org> -Date: Fri Jun 12 12:07:59 2009 -0700 - - Increment version to 1.9.3 after the 1.9.2 snapshot. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e9b9d2a7c17ca4b2bc2991fdc4893aed850578db -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jun 11 15:28:59 2009 -0700 - - Update version to 1.9.2 - - In preparation for the (long overdue) 1.9.2 snapshot today. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8ac8c5b428d11b11ba9fb55264cd9091368f6acb -Author: Carl Worth <cworth@cworth.org> -Date: Fri Jun 12 11:49:52 2009 -0700 - - NEWS: Fix date and name of 1.9.2 snapshot - - It's a snapshot, not a release, and the broken REFERENCE_IMAGE list - derailed me from finishing yesterday. - - NEWS | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3f474555dd00b8585ae3db848cf46984d77bd16e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 11:19:50 2009 +0100 - - [test] Add jp2.jp2 to EXTRA_DIST - - Required by test/mime-data and so triggering failures during distcheck as - it was not packaged. - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7f114b781f5c530d57530e5f76402e41cdabac6b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 11:15:16 2009 +0100 - - [doc] Workaround read-only tree during make distcheck - - This looks to be an ugly necessity to work-around the nasty issue that - we currently gtkdoc expect to be run inside the source tree. I'm sure - Behdad will be able to resolve this much more elegantly than this quick - and fragile attempt. - - build/Makefile.am.gtk-doc | 11 ++++++----- - build/configure.ac.features | 2 +- - doc/public/Makefile.am | 5 +++-- - 3 files changed, 10 insertions(+), 8 deletions(-) - -commit 1498c9c333d7579231ac44a91f00f0a49360702d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 07:38:00 2009 +0100 - - [script] Also mmap backing storage for the pattern descriptions - - These can be reasonably large and persist for long times due to the - font holdover caches, so manually swap them out to save space on tiny - swapless machines. - - util/cairo-script/cairo-script-operators.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit 80ba06803b50cc0f76039939f25372cbbe2e8d81 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 12 08:03:12 2009 +0100 - - [Makefile] Update list of reference images. - - test/Makefile.am | 1432 +++++++++++++++++++++++++++++++----------------------- - 1 files changed, 818 insertions(+), 614 deletions(-) - -commit fb21a0da8730823ff092f8e298af3d5b4e8c90e4 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jun 11 15:28:02 2009 -0700 - - Update CLEANFILES for 'make distcheck' - - This is a standard part of the release ritual. - - test/Makefile.am | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit a4f023ef2eb041fecba5f3fd2d5a1594975ca211 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jun 11 14:51:14 2009 -0700 - - NEWS: Update date for snapshot planned for today. - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 82139b42919be1acf6bade733bb2ff489e50812d -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jun 11 14:51:10 2009 -0700 - - NEWS: Explain bovine polaroids a bit more. - - It's a fun joke, but the COW snapshots feature is important enough - that we should actually tell users what it is. - - NEWS | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 4d5f66d5b1f243e58d43dc89568be9240262fd5c -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jun 11 14:42:11 2009 -0700 - - NEWS: Cleanup in preparation for 1.9.2 snapshot - - Mostly just wrapping to a reasonable line length, and some minor - wording changes. - - NEWS | 71 +++++++++++++++++++++++++++++++++++++++++------------------------ - 1 files changed, 45 insertions(+), 26 deletions(-) - -commit 19630f4b73a4fdfb9855ececd6614493e68d3b95 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Jun 10 17:39:48 2009 -0700 - - Make the warning about the need to --enable-gtk-doc more explicit. - - I must have read it three times and kept thinking, "but I *did* - just install gtk-doc", before I finally understood what it was - trying to tell me. - - build/Makefile.am.gtk-doc | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3aaea453b0f0880d6c8825be21e67821732d1635 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 22:36:01 2009 +0100 - - [script] Store fonts inside mmaped files. - - As an aide to tiny swapless systems write the rarely used bytes that - define type42 fonts into a deleted file and mmap them back into our - address space. - - build/configure.ac.system | 3 + - util/cairo-script/cairo-script-operators.c | 91 +++++++++++++++++++++++----- - 2 files changed, 78 insertions(+), 16 deletions(-) - -commit 6167f27adfd530bdf091a0e7a3e0141d5db66f00 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 22:33:00 2009 +0100 - - [script] Fix memleak of duplicated strings from files - - csi_string_new() duplicated the bytes which was not what was desired, so - implement a csi_string_new_for_bytes() to take ownership and prevent the - leak that was occuring, for example, every time we create a new font face. - - util/cairo-script/cairo-script-file.c | 5 +++-- - util/cairo-script/cairo-script-objects.c | 27 +++++++++++++++++++++++++++ - util/cairo-script/cairo-script-private.h | 6 ++++++ - 3 files changed, 36 insertions(+), 2 deletions(-) - -commit 13b56c42bfdb9ad36f9b1bd22f83d7ef3a074ddc -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Jun 11 17:32:23 2009 -0400 - - Fix compilation on OS X when compiling for 64 bit - - OS X doesn't support ATSUI in 64 bit so don't include the cairo ATSUI - API in that case. - - src/cairo-quartz-font.c | 3 ++- - src/cairo-quartz.h | 2 ++ - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 9e3019ef987f8d3ad424c13ffae5a15b08beb327 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 22:27:18 2009 +0100 - - [perf] Add libcairoperf.la to DEPENDENCIES - - It seems adding the explicit dependencies to encourage it to rebuild - components from other parts of the source tree removed the automagic - dependency of libcairoperf.la. So add it to the list. Maybe this is not - the correct solution, but it works again for now. - - perf/Makefile.am | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 55cbf525479cde8251cc9199f9db89e510d6a9c1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 15:40:27 2009 +0100 - - [perf] Fix -i getopt parsing. - - Gah, I presumed that the ':' separated options that required arguments - from stand-alone options. I was wrong. The ':' indicates that the - preceding option takes an argument. So add it back to -i. - - perf/cairo-perf-trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 614bfdc0846856653a742b035e70d009b0a716cc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 15:35:05 2009 +0100 - - [xcb] Trivial compile fix. - - Update show_glyphs() interface. - - src/cairo-xcb-surface.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit f7dbdf1fd1d7cc14491a9419c316b078247e145e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 09:39:20 2009 +0100 - - [script] Hide pixman-ops when copying pixels - - Seeing unexpected time inside pixman composite is quite disturbing when - trying to track down the apparent slowness in some benchmarks. Remove one - source of this artefact by simply memcpy'ing pixel data when trivial. - - util/cairo-script/cairo-script-operators.c | 70 ++++++++++++++++++++++------ - 1 files changed, 55 insertions(+), 15 deletions(-) - -commit ecee5663bf900ab97d2bb7ec41ade838f167e1cd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 01:05:28 2009 +0100 - - [perf] Fixup compare-backends to work with just a single test. - - perf/cairo-perf-compare-backends.c | 17 ++++++----------- - 1 files changed, 6 insertions(+), 11 deletions(-) - -commit 42c0aee1d9ff5e0182c41ed505a2b0f56e564cbb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 12:58:05 2009 +0100 - - [perf] Add a -x to exclude traces from a benchmark. - - Read names of traces to exclude from a file specified using -x on the - commandline, i.e. - $ ./cairo-perf-trace -x cairo-traces/tiny.exclude - - This is a convenient method for me to exclude certain traces for - particular machines. For example tiny cannot run - firefox-36-20090609.trace as that has a greater working set than the - available RAM on tiny. - - perf/cairo-perf-trace.c | 135 ++++++++++++++++++++++++++++++++++++++++++++--- - perf/cairo-perf.h | 2 + - 2 files changed, 130 insertions(+), 7 deletions(-) - -commit b40ce402ada8d57c5093715be530df08459d1654 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 11 09:16:29 2009 +0100 - - [NEWS] Add more notes - - NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 44 insertions(+), 6 deletions(-) - -commit 610da573e91810c53305b6bfe02eb7b714e3d08e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 10 12:59:36 2009 +0100 - - [win32-font] Non-fatal error from GetGlyphOutlineW(GGO_METRICS) - - If GetGlyphOutlineW(GGO_METRICS) fails to retreive the metrics for the - specified glyph it returns GDI_ERROR. Like ft, do not interpret this as a - fatal error but just mark the glyph as empty. - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=20255 - Bug 20255 -- cairo_scaled_font_glyph_extents breaks with invalid glyph id - - src/cairo-win32-font.c | 10 ++-------- - 1 files changed, 2 insertions(+), 8 deletions(-) - -commit 81b5dc42b0e754d602506a8ccd231df9afd71593 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 10 08:49:39 2009 +0100 - - [perf] Expand the section on cairo-perf-trace in the README - - Promote the information on how to use cairo-perf-trace and include it - immediately after the details on cairo-perf. This should make it much - clearer on how to replay the traces, and the difference between the two - benchmarks. - - perf/README | 37 ++++++++++++++++++++++++++++++++++--- - 1 files changed, 34 insertions(+), 3 deletions(-) - -commit ec92e633edd377747155b60aa225b266c38bc498 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 10 08:34:57 2009 +0100 - - [perf] Couple cairo-perf-traces into make perf - - Rather than complicating cairo-perf to extend it to perform both micro- - and macro-benchmarks, simply run the two binaries in succession during - make perf. - - For bonus points, consider whether we should hook cairo-perf-trace into - cairo-perf-diff. - - perf/Makefile.am | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 0db946cdd9fe601a060b62c5df7df3022ea5e2d6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 9 16:19:36 2009 +0100 - - [perf] Add explicit dependences for the local libraries - - Update the build rules and add the dependences for the libraries built in - other parts of cairo. - - perf/Makefile.am | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 844c809698635cf44658fcbfb5da6976890185b9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 9 12:45:53 2009 +0100 - - [boilerplate] Print out known targets on error. - - Improve the 'Cannot find target ...' error message for an incorrect - CAIRO_TEST_TARGET by actually listing the targets that have been compiled - into the test suite. - - boilerplate/cairo-boilerplate.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit ac563715506b911f142dd0e4460a6effee45119d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 23:58:56 2009 +0100 - - [test] Exercise overlapping glyphs - - Quite an expensive test that converts an image into a distorted array of - glyphs, using a perspective transformation taking the intensity of the - pixel as depth. This generates a pretty picture and many overlapping - glyphs. - - test/Makefile.am | 1 + - test/Makefile.sources | 1 + - test/mask-glyphs.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++ - test/mask-glyphs.ref.png | Bin 0 -> 1189352 bytes - 4 files changed, 177 insertions(+), 0 deletions(-) - -commit 015df191ba947e714285145c3a4ead198ba0d07e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 17:40:16 2009 +0100 - - [trace] Prevent overflowing the operand stack when recreating objects - - Objects like cairo_scaled_font_t may return a reference to a previously - defined scaled-font instead of creating a new token each time. This caused - cairo-trace to overflow its operand stack by pushing a new instance of the - old token every time. Modify the tracer such that a font token can only - appear once on the stack -- for font-faces we remove the old operand and - for scaled-fonts we simply pop, chosen to reflect expected usage. - - util/cairo-trace/trace.c | 89 ++++++++++++++++++++++++++++++++------------- - 1 files changed, 63 insertions(+), 26 deletions(-) - -commit 09492288b33c36093e50d39e4e7e632ab659a0e2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 17:38:14 2009 +0100 - - [trace] Option to re-enable mark-dirty - - Applications such as swfdec have a strictly correct use of mark-dirty and - so we need an option to re-enable mark-dirty tracing in conjunction with - --profile. - - util/cairo-trace/cairo-trace.in | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 39bac6edddb8913d07fb25f14f088967ca846a78 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 11:52:56 2009 +0100 - - [perf] Mention cairo-perf-trace early on in the README - - perf/README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 34ccaeae2d3cf1b5bdd8b97581d6e70324494356 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jun 8 00:12:28 2009 +0100 - - [perf] Continuously update the summary for traces - - perf/cairo-perf-trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 055e9b0eb650bec6ae8297e5a36f1cac22c43d56 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 23:35:57 2009 +0100 - - [test] Cache resolved scaled-font - - The intention is to stress test the solid pattern caches, so we can cheat - and avoid repeatedly resolving the toy font. - - test/solid-pattern-cache-stress.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 25c37509396a89deb644cbd6ada99137ba9d3095 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 19:23:04 2009 +0100 - - [scaled-font] Report the original-font-face - - When queried with cairo_scaled_font_get_font_face() return the original - font-face which matches the one supplied by the user, rather than the - implementation derived face. - - Fixes test/font-face-get-type. - - src/cairo-scaled-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 6d693f6bd7c629372cfb6c284ca98dc04619bfe9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 18:59:36 2009 +0100 - - [ft] Support font_face->get_implementation - - The lazy resolution of patterns was defeating the scaled_font cache as - ft-fonts that resolved to the same unscaled font were being given different - font-faces upon creation. We can keep the lazy resolution by simply asking - the ft backend to create a fully resolved ft-font-face when we need to - create a scaled-font. This font is then keyed by the resolved font-face - and so will match all future lazily resolved identical patterns. - - src/cairo-ft-font.c | 117 +++++++++++++++++++------------------------- - src/cairo-scaled-font.c | 20 +++++-- - src/cairo-toy-font-face.c | 41 ++++++++++------ - src/cairoint.h | 9 ++- - 4 files changed, 96 insertions(+), 91 deletions(-) - -commit a29426f4bffc0a3f5bb349a2ba44203394339ae8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 17:24:40 2009 +0100 - - [ft] Assert that we create an unscaled font for the resolved pattern - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7d8a0a1cdd62112ccdae2a80bb55ec9cec99b978 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 17:01:57 2009 +0100 - - [cairo] Keep a small stash of cairo contexts - - A cairo context is meant to be extremely cheap to create such that it can - be used in transient expose events. Thus these are allocated reasonably - frequently and show up malloc profiles. - - src/cairo.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 49 insertions(+), 2 deletions(-) - -commit f08fe5b550d53c93b73c6295f8a85a8dcd4a1f4a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jun 7 15:55:20 2009 +0100 - - [trace] Redirect stdout to /dev/null when compressing - - Otherwise we mix in stdout in with the trace and prevent replay. - - util/cairo-trace/cairo-trace.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 750c1b5b48dcd33ba4a4d5290c50f564bf45bc58 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 21:45:18 2009 +0100 - - [configure] Check for FcInit() - - configure.ac | 2 +- - test/cairo-test.c | 2 ++ - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit f7a562a590493904cf10b4fb9af3b42fb3f8a3a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 14:58:46 2009 +0100 - - [configure] Don't attempt to build GTK+ utilities on system without GTK+ - - configure.ac | 3 ++- - util/Makefile.am | 5 ++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 6a5957475139a7c80a6bb55fb63927e5ec8866f6 -Author: Eric Anholt <eric@anholt.net> -Date: Sun Jun 7 10:43:43 2009 +0000 - - [gl] consolidate the pixman format to GL format/type/internalformat code. - - This means that draw_image gets all the love that the pattern texture code - does. Not that I'm sure it still needs to exist. - - src/cairo-gl-surface.c | 321 ++++++++++++++++++++++++------------------------ - 1 files changed, 158 insertions(+), 163 deletions(-) - -commit cb1e5674cd7a61a2d96bd4ae8895b26686571e78 -Author: Eric Anholt <eric@anholt.net> -Date: Sun Jun 7 10:09:28 2009 +0000 - - [gl] Add support for more 16-bit image formats. - - Fixes test-fallback16-surface-source - - src/cairo-gl-surface.c | 54 ++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 48 insertions(+), 6 deletions(-) - -commit 7a95b2745ae619f6ca4631f3cdb03e12203126f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 21:36:08 2009 +0100 - - [boilerplate] Minor typo in win32-printing - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 16eb160c7794ad34c17c5b12ec586d956baf9831 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 20:09:15 2009 +0100 - - [script] Enable compilation without fontconfig - - Some insane people actually try compiling cairo with freetype and without - fontconfig... - - util/cairo-script/cairo-script-operators.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit d753ba96aba4dbbcbd0da1823be8824ba233f079 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 5 17:59:38 2009 +0100 - - [script] Manage used entries within hash tables - - Apply the patch from Karl Tomlinson, - https://bugs.freedesktop.org/attachment.cgi?id=19802, to repack the hash - table if the number of free slots falls too low. - - util/cairo-script/cairo-script-hash.c | 109 ++++++++++++++++++++---------- - util/cairo-script/cairo-script-private.h | 1 + - 2 files changed, 73 insertions(+), 37 deletions(-) - -commit 4ccfd474a36f482adcab49a8d38742121817b47e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 13:32:21 2009 +0100 - - [perf] Switch to using clock_gettime() - - Try using clock_gettime() for a high resolution stable time source in - preference to the potentially unstable TSC. - - build/configure.ac.system | 9 ++++- - perf/cairo-perf-posix.c | 72 +++++++++++++++++++++++++++++++++------------ - 2 files changed, 60 insertions(+), 21 deletions(-) - -commit 867c88ae90e4e69a556c032fa67d94a292f5d817 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 12:59:39 2009 +0100 - - [script] Add a finish method to the interpreter - - When using fonts circular references are established between the holdover - font caches and the interpreter which need manual intervention via - cairo_script_interpreter_finish() to break. - - perf/cairo-perf-trace.c | 3 +- - util/cairo-script/cairo-script-interpreter.c | 51 ++++++++++++++++++++------ - util/cairo-script/cairo-script-interpreter.h | 3 ++ - util/cairo-script/cairo-script-objects.c | 35 ++++++++++++------ - util/cairo-script/cairo-script-private.h | 3 ++ - 5 files changed, 70 insertions(+), 25 deletions(-) - -commit 098822d7ee7f14096dd269c1bc96e39da126622c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jun 6 10:35:19 2009 +0100 - - [script] Fix erroneous error return when rendering type3 glyphs - - Only return a USER_FONT_ERROR if an error occurs whilst rendering the - glyph! - - util/cairo-script/cairo-script-operators.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 24e51dd2ee04884e1f6f9f527b6675ad5f883ee2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 5 18:34:29 2009 +0100 - - [atomic] Hide compiler warnings - - Add uint variants of _cairo_atomic_int_*() to hide the compiler warnings - about sign conversions. - - src/cairo-atomic-private.h | 3 +++ - src/cairo-surface.c | 6 +++--- - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit 4ae5e2d44555a7219eb76ee187a8f588606c112f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 5 18:29:40 2009 +0100 - - [atomic] Provide mutex-based ptr cmpxchg - - To handle those CPUs where we do not have an atomic cmpxchg. - - src/cairo-atomic-private.h | 3 +++ - src/cairo-atomic.c | 13 +++++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit a1d0a06b6275cac3974be84919993e187394fe43 -Author: Thomas Jaeger <ThJaeger@gmail.com> -Date: Thu Feb 19 12:02:41 2009 -0500 - - xlib, xcb: Hand off EXTEND_PAD/EXTEND_REFLECT to Render - - Most drivers and the X server used to have incorrect RepeatPad/RepeatReflect - implementations, forcing cairo to fall back to client-side software rendering, - which is painfully slow due to pixmaps being transfered over the wire. These - issues are mostly fixed in the drivers (with the exception of radeonhd, whose - developers didn't respond) and the RepeatPad software fallback is implemented - correctly as of pixman-0.15.0, so this patch will hand off composite operations - with EXTEND_PAD/EXTEND_REFLECT source patterns to XRender. - - There is no way to detect whether the X server or the drivers use a - broken Render implementation, we make a guess based on the server - version: It's probably safe to assume that 1.7 X servers will use - fixed drivers and a recent enough version of pixman. - - AUTHORS | 1 + - src/cairo-xcb-surface.c | 15 +++++++++++++-- - src/cairo-xlib-display.c | 15 +++++++++++---- - src/cairo-xlib-private.h | 1 + - src/cairo-xlib-surface-private.h | 1 + - src/cairo-xlib-surface.c | 21 ++++++++++++++++++--- - 6 files changed, 45 insertions(+), 9 deletions(-) - -commit 60aefd0d634c531353c92b77b36424b142efeb93 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jun 5 07:30:13 2009 +0100 - - [configure] Bump pixman dependency. - - Reflect was only fixed in the 0.15 series, so require at least that - version of pixman so we can that advantage of that and drop our - workaround. - - configure.ac | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9d7a7e76b8bccc2517950976bb8557cd7b955a11 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 4 22:19:31 2009 +0100 - - [scaled-font] Close race from 16d128 - - Whilst waiting for the fontmap lock on destruction another thread may not - only have resurrected the font but also destroyed it acquired the lock - first and inserted into the holdovers before the first thread resumes. So - check that the font is not already in the holdovers array before - inserting. - - src/cairo-scaled-font-private.h | 6 +++--- - src/cairo-scaled-font.c | 33 +++++++++++++++++++++++---------- - 2 files changed, 26 insertions(+), 13 deletions(-) - -commit f4d9a4482fa1bfa37783ca139e3716c8d8649f32 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 4 14:13:06 2009 +0100 - - [pattern] Generalise the freed pattern pool - - Also cache recently freed surface and gradient patterns. With thanks to - Jonathan Morton for the inspiration and initial pointer pool code for - pixman. - - src/cairo-atomic-private.h | 1 + - src/cairo-mutex-list-private.h | 1 - - src/cairo-pattern.c | 170 ++++++++++++++++++++++++++-------------- - 3 files changed, 112 insertions(+), 60 deletions(-) - -commit 132f44dce1884c9beed8c5e6588140ee8fa9cfbe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 4 14:12:20 2009 +0100 - - valgrindify init/fini routines - - Annotate object init/fini routines to detect use-after-free for - on-stack/embedded objects. - - src/cairo-debug.c | 2 - - src/cairo-freelist.c | 7 ------ - src/cairo-gstate.c | 7 ++++++ - src/cairo-path-fixed.c | 10 ++------ - src/cairo-pattern.c | 49 +++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-pen.c | 8 +++++- - src/cairo-polygon.c | 4 +++ - src/cairo-region.c | 5 ++++ - src/cairo-stroke-style.c | 6 +++++ - src/cairo-traps.c | 4 +++ - src/cairo.c | 1 + - src/cairoint.h | 4 +++ - 12 files changed, 88 insertions(+), 19 deletions(-) - -commit e89828c5331579d0d4019b6339df09ba1e2aa32e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 21:52:02 2009 +0100 - - [freelist] valgrindify freed blocks - - Mark freed blocks as unaccessible upon free() and then as undefined - on alloc(). - - src/cairo-freelist.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit 4e11d56f8e5f409ea2476315c9d67116b213b738 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 4 11:16:48 2009 +0100 - - [perf] Update trace summary after each iteration - - Running the macro-benchmarks takes so long, feedback is important. - - perf/cairo-perf-trace.c | 29 ++++++++++++++++++++++++++++- - perf/cairo-perf.h | 1 + - 2 files changed, 29 insertions(+), 1 deletions(-) - -commit 5c2e73e74cb9aef92fdd90a91df44b417a036ebd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jun 4 10:03:45 2009 +0100 - - [perf] Enable traces to be interrupted - - Waiting for a long running benchmark can be very annoying, especially if - you just want a rough-and-ready result. So hook into SIGINT and stop the - current benchmark (after the end of the iteration) on the first ^C. A - second ^C within the same iteration will kill the program as before. - - perf/cairo-perf-trace.c | 20 +++++++++++++++++++- - 1 files changed, 19 insertions(+), 1 deletions(-) - -commit 2eaced24475622e73fbf6e3307ab46e3fe37eaef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 21:49:17 2009 +0100 - - [perf] Reconstruct interpreter for each run - - Destroy the interpreter after each run of a trace so that we collect any - left-over garbage. - - perf/cairo-perf-trace.c | 21 ++++++++++----------- - 1 files changed, 10 insertions(+), 11 deletions(-) - -commit 1b92ea250fdaef9add1a68bb8565847e6d56b023 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 20:28:49 2009 +0100 - - [ft] Don't call FT_Done_Face() on a face we do not own - - _font_map_release_face_lock_held() was being called unconditionally during - _cairo_ft_font_reset_static_data(). This presents two problems. The first - is that we call FT_Done_Face() on an object not owned by cairo, and the - second is that the bookkeeping is then incorrect which will trigger an - assert later. - - src/cairo-ft-font.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8e5295979fe087fadeff0f56c036f9d002086996 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 20:17:59 2009 +0100 - - [pattern] Typo in document - - Remove extraneous markup from program-listing. - - https://bugs.freedesktop.org/show_bug.cgi?id=20441 - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fa5d6c7afdb9b742ad653c65e8804e84f2964599 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 19:29:19 2009 +0100 - - [trace] Add a --profile mode - - To save typing when creating macro-benchmarks --profile disables - mark-dirty and caller-info and compresses the trace using LZMA. Not for - computers short on memory! - - perf/README | 11 +++++++++-- - util/cairo-trace/cairo-trace.in | 18 ++++++++++++++++++ - 2 files changed, 27 insertions(+), 2 deletions(-) - -commit 9451f0b983665d13ad777bc8fd88507fb7a317b4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 13:26:52 2009 +0100 - - [perf] Drop ticks from trace benchmarks - - Don't report the tick values for the macro-benchmarks as these are so - large as to be meaningless. - - perf/cairo-perf-trace.c | 37 ++++++++++++++++++++----------------- - 1 files changed, 20 insertions(+), 17 deletions(-) - -commit c988dc3719e345f6e1db6b0d656077a6b253b26d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 10:51:23 2009 +0100 - - [cairo] Doc typo. - - Fix conflicting sentence as pointed out by - https://bugs.freedesktop.org/show_bug.cgi?id=20183 - - src/cairo.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 35d0dd00c9f21cc4fd392d4627756f8d5b53a11b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 10:49:16 2009 +0100 - - [image] Doc typo. - - Correct parameter reference as pointed out by - https://bugs.freedesktop.org/show_bug.cgi?id=20182 - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 58459ac6435a2889b90580ddf00e69107361f431 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 10:45:51 2009 +0100 - - [font-options] Doc typo - - Remove duplicate 'with' as pointed out by - https://bugs.freedesktop.org/show_bug.cgi?id=20180 - - src/cairo-font-options.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8d39dee8e2aea2200fec460e8540838ec29cae5f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 10:40:38 2009 +0100 - - [cairo] Update documentation for bug 20154 - - Several typographical errors were pointed out in - https://bugs.freedesktop.org/show_bug.cgi?id=20154 - - src/cairo.c | 17 ++++++++--------- - 1 files changed, 8 insertions(+), 9 deletions(-) - -commit 73469e693c02e6a99a32f12ac333737b47408e5e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 09:51:52 2009 +0100 - - [cairo] Tweak error strings. - - Rewrite a few error strings so that they more closer match the - documentation. Where they differ, I believe I have chosen the more - informative combination of the two texts. - - src/cairo-misc.c | 12 ++++++------ - src/cairo.h | 4 ++-- - 2 files changed, 8 insertions(+), 8 deletions(-) - -commit ab86662ab499e1f29c0f8c4248771e730c281e3f -Author: Andrew Lavin <aj.lavin@gmail.com> -Date: Fri May 22 16:36:40 2009 -0400 - - [test] Compile fix for invalid-matrix - - Fixed test compile error on OS X that caused fenv.h not to be included. - - test/invalid-matrix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit eec547648439884a464eef832067a363cf1547e2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jun 3 08:57:15 2009 +0100 - - [perf] s/git/anongit/ - - Third time lucky? - - perf/cairo-perf-trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ce7e6339428703069f798dffcf23ec3e98cb554f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 21:54:44 2009 +0100 - - [perf] Warn if no traces were found - - perf/cairo-perf-trace.c | 28 ++++++++++++++++++++-------- - 1 files changed, 20 insertions(+), 8 deletions(-) - -commit f0366f0f3263397181699bf6bf2ed3968ea66403 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 21:48:26 2009 +0100 - - [perf] Update to point to new toplevel cairo-traces repo - - perf/cairo-perf-trace.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit c9cd2f9ca101c25d04f52578d54be36ae646049e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 18:47:07 2009 +0100 - - [cairo] PLT symbols for cairo_set_source_rgb - - Added a private use in user-font, but forgot to add a hidden symbol. - - src/cairo.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 21550a753059b4f880f03ea96148befaa34a6426 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 18:08:45 2009 +0100 - - [user-font] Set the initial colour to white - - An issue occured when using subpixel antialiasing with user-fonts and - XRender - the glyphs were transparent, as demonstrated by the font-view - example. - - The problem lies in that enabling subpixel antialiasing triggers use of an - ARGB32 image surface for rendering the glyph, but the default colour is - black (so the only information is in the alpha-channel). Given an ARGB32 - glyph XRender treats it as a per-channel mask, but since the R,G,B - channels were uniformly zero, the glyph is rendered as transparent. - - Fix this by setting the initial colour to white before rendering the image - surface for a user-font glyph, which generates the appropiate gray-level - mask by default. - - src/cairo-user-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b5799e073e4e404aea277b7640eeee2120318823 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 18:07:31 2009 +0100 - - [xlib] Use bswap_32 - - Byteswap the ARGB32 glyphs using bswap_32 instead of open-coding. - - src/cairo-xlib-surface.c | 30 +++++++++++------------------- - 1 files changed, 11 insertions(+), 19 deletions(-) - -commit 56e9765f82a64940b36a64688267fbe5d1c8919e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 14:25:04 2009 +0000 - - [util] Add font-view - - A C variant of Behdad's python example font viewer. - - util/Makefile.am | 5 ++ - util/font-view.c | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 189 insertions(+), 0 deletions(-) - -commit d331dda48017667c15f95bf7d510bce2f38111de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 15:41:19 2009 +0100 - - [perf] Missing ')' in output - - perf/cairo-perf-compare-backends.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c9ddaf8e7f0006f308aab0b87cf0425b2690d914 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Sep 7 13:09:09 2008 +0930 - - PDF: Don't embed the same pattern more than once - - The PDF surface now keeps track of all the patterns it is embedding in - a hash table keyed by the unique_id returned by the - _cairo_surface_get_unique_id(). - - src/cairo-pdf-surface-private.h | 13 +++- - src/cairo-pdf-surface.c | 134 ++++++++++++++++++++++++++++++--------- - 2 files changed, 115 insertions(+), 32 deletions(-) - -commit f7613eeecea1218d353a183078fb77bc5cf4e72e -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Tue Nov 25 20:15:15 2008 +0100 - - Add more surface snapshots providers - - This patch adds more implementation of the snapshot method. For - surface types where acquire_source_image is already making a copy - of the bits, doing another one as is the case for the fallback - implementation is a waste. - - src/cairo-glitz-surface.c | 16 +++++++++++++++- - src/cairo-quartz-surface.c | 19 ++++++++++++++++++- - src/cairo-xcb-surface.c | 17 ++++++++++++++++- - src/cairo-xlib-surface.c | 20 +++++++++++++++++++- - 4 files changed, 68 insertions(+), 4 deletions(-) - -commit cffb398f5a484000be458d04ef8f8bce3f6c7e3d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 21:07:07 2009 +0100 - - Add a generic cow-snapshotting framework - - Provide a mechanism for backends to attach and remove snapshots. This can - be used by backends to provide a cache for _cairo_surface_clone_similar(), - or by the meta-surfaces to only emit a single pattern for each unique - snapshot. - - In order to prevent stale data being returned upon a snapshot operation, - if the surface is modified (via the 5 high level operations, and on - notification of external modification) we break the association with any - current snapshot of the surface and thus preserve the current data for - their use. - - src/cairo-meta-surface.c | 1 - - src/cairo-surface-fallback.c | 2 +- - src/cairo-surface-private.h | 7 +- - src/cairo-surface.c | 272 ++++++++++++++++++++++++++++++++---------- - src/cairoint.h | 12 ++ - test/mask.c | 12 ++- - test/trap-clip.c | 12 ++- - 7 files changed, 249 insertions(+), 69 deletions(-) - -commit 7ed050fd435f17d25c7b757b02cfe200f8779fc2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 13:08:25 2009 +0100 - - [perf] Benchmark traces - - Add a variant of cairo-perf that measures the time to replay traces. - - boilerplate/cairo-boilerplate-system.c | 15 + - boilerplate/cairo-boilerplate-system.h | 4 + - perf/.gitignore | 1 + - perf/Makefile.am | 17 + - perf/README | 31 ++ - perf/cairo-perf-compare-backends.c | 10 +- - perf/cairo-perf-trace.c | 530 ++++++++++++++++++++++++++++++++ - 7 files changed, 605 insertions(+), 3 deletions(-) - -commit 403f780b292762aa45056c2fb5a48bb806521173 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 09:16:16 2009 +0100 - - [perf] Add a verbose flag for summary output with raw - - Use 'cairo-perf -v -r' to have both the summary output along with the raw - values. This gives a progress report whilst benchmarking, very reassuring - with long running tests. - - perf/cairo-perf.c | 82 +++++++++++++++++++++++++++++++++------------------- - perf/cairo-perf.h | 3 ++ - 2 files changed, 55 insertions(+), 30 deletions(-) - -commit 70fd2bbce38fca65db6725c632ee591352dfe42c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jun 2 09:00:21 2009 +0100 - - [perf] Exclude similar testing by default - - There are synchronisation issues with similar surfaces (as only the - original target surface is synced) which interferes with making - performance comparisons. (There still maybe some value should you be aware - of the limitations...) - - perf/cairo-perf.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit bc49cb377c70c4c6926ca52e34094e99a4591f14 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 30 12:28:23 2009 +0100 - - [perf] Benchmark mixing different masks and sources - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/mask.c | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 293 insertions(+), 0 deletions(-) - -commit 4aca84ddb22bc178cbc9b132b9ce06af3f4b300b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 28 18:05:26 2009 +0100 - - [perf] Add a pure glyphs performance metric - - Use the new API Behdad exposed in 1.8 to precompute a glyph string using - Cairo and then benchmark cairo_show_glyphs(). This is then equivalent to - the text benchmark but without the extra step of converting to glyphs on - every call to cairo_show_text() i.e. it shows the underlying glyph - rendering performance. - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/glyphs.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 0 deletions(-) - -commit 55f4e0e4e8c7df59bfc9e6ffea8daa065276e42f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 30 16:50:17 2009 +0100 - - [perf] Change seperators from '-' to '.' - - This allows the perf tests to use '-' in the name which is easier to read - and differentiates with using '_' to separate source and operators. - - perf/cairo-perf-compare-backends.c | 22 ++++++++++++---------- - perf/cairo-perf-cover.c | 32 ++++++++++++++++---------------- - perf/cairo-perf-report.c | 16 +++++++++++++--- - perf/cairo-perf.c | 8 ++++---- - perf/mosaic.c | 8 ++++---- - perf/pattern_create_radial.c | 4 ++-- - perf/pythagoras-tree.c | 2 +- - perf/subimage_copy.c | 4 ++-- - perf/unaligned-clip.c | 2 +- - perf/world-map.c | 4 ++-- - perf/zrusin.c | 4 ++-- - 11 files changed, 59 insertions(+), 47 deletions(-) - -commit b7c03d4e400245fc2b2d748fe808a9724e61f22f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 16:31:51 2009 +0100 - - [ps] Trivial warning fix. - - src/cairo-ps-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 99482b17a50a8ae52b7627bf624e358ed3623540 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 18:34:54 2009 +0100 - - [script] Improve caching of glyph advance - - The glyph advance cache was only enabled for glyph indices < 256, - causing a large number of misses for non-ASCII text. Improve this by - simply applying the modulus of the index to select the cache slot - which - may cause some glyph advances to be overwritten and re-queried, but - improves the hit rate. - - util/cairo-script/cairo-script-operators.c | 39 ++++++++++------------------ - 1 files changed, 14 insertions(+), 25 deletions(-) - -commit 51193f1610c0f6893768e43e90a3395ec96c28fb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 28 14:16:58 2009 +0100 - - [pattern] Pass flags to _cairo_pattern_acquire_surface() - - Allow the caller to choose whether or not various conversions take place. - The first flag is used to disable the expansion of reflected patterns into a - repeating surface. - - src/cairo-directfb-surface.c | 1 + - src/cairo-glitz-surface.c | 1 + - src/cairo-image-surface.c | 3 +++ - src/cairo-pattern.c | 13 +++++++++++-- - src/cairo-xcb-surface.c | 4 ++++ - src/cairo-xlib-surface.c | 5 +++++ - src/cairoint.h | 6 ++++++ - 7 files changed, 31 insertions(+), 2 deletions(-) - -commit 4ec451a2fa4050a60a81d01473d23ff2973f47e6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 17:35:54 2009 +0100 - - [scaled-font] Cache repeated glyphs during probing device_extents - - Maintain a local on-stack cache of recently queried glyphs to avoid - relatively expensive hash table queries. - - src/cairo-scaled-font.c | 35 +++++++++++++++++++++++------------ - 1 files changed, 23 insertions(+), 12 deletions(-) - -commit ec22ae5b1d7e8ec364813f3b1c73f538018ecb57 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 11:11:06 2009 +0100 - - [scaled-font] Compare most recently used font directly - - Avoid the relatively expensive _cairo_scaled_font_init_key() operation - when checking against the most recently used font. - - src/cairo-scaled-font.c | 28 +++++++++++++++++++++++----- - 1 files changed, 23 insertions(+), 5 deletions(-) - -commit 16d128c15edf36a6e285fe4fbd6a828b64fd7f87 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 21:10:04 2009 +0100 - - [scaled-font] Lazily acquire the font_map_lock on font destruction. - - We can defer taking the cairo_scaled_font_map_lock until we drop the - last reference to the scaled font so long as we double check the reference - count after waiting for the lock and not making assumptions about - unreferenced fonts during construction. This is significant as even - acquiring the uncontended cairo_scaled_font_map_lock during - cairo_scaled_font_destroy() was showing up as a couple of percent on text - heavy profiles (e.g. gnome-terminal). - - src/cairo-scaled-font.c | 32 +++++++++++++++++--------------- - 1 files changed, 17 insertions(+), 15 deletions(-) - -commit dc083ab30a5b781e205354c525ee054982364abd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 14:54:34 2009 +0100 - - [cairo] Track the MRU scaled font - - When observing applications two patterns emerge. The first is due to - Pango, which wraps each glyph run within a context save/restore. This - causes the scaled font to be evicted after every run and reloaded on the - next. This is caught by the MRU slot on the cairo_scaled_font_map and - prevents a relatively costly traversal of the hash table and holdovers. - - The second pattern is by applications that directly manage the rendering - of their own glyphs. The prime example of this is gnome-terminal/vte. Here - the application frequently alternates between a few scaled fonts - which - requires a hash table retrieval every time. - - By introducing a MRU slot on the gstate we are able to directly recover - the scaled font around 90% of the time. - - Of 110,000 set-scaled-fonts: - 4,000 were setting the current font - 96,000 were setting to the previous font - 2,500 were recovered from the MRU on the cairo_scaled_font_map - 7,500 needed a hash retrieval - which compares to ~106,000 hash lookups without the additional MRU slot on - the gstate. - - This translates to an elapsed time saving of ~5% when replaying a - gnome-terminal trace using the drm backend. - - src/cairo-gstate-private.h | 1 + - src/cairo-gstate.c | 18 ++++++++++++++---- - src/cairo.c | 6 ++++++ - 3 files changed, 21 insertions(+), 4 deletions(-) - -commit fda89c56ff484a8cd33cd780e8b9396d3538284d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 15:59:16 2009 +0100 - - Markup a few more functions as const/pure - - src/cairoint.h | 59 +++++++++++++++++++++++++++++-------------------------- - 1 files changed, 31 insertions(+), 28 deletions(-) - -commit f59f44c140e5f60d336423e0585d2bb8a6c0ea01 -Merge: 2da78fd 4232719 -Author: Eric Anholt <eric@anholt.net> -Date: Tue Jun 2 00:37:19 2009 -0700 - - Merge commit 'origin/master' into gl - - Felt like pulling the latest stuff, since I branched back in February. - - Conflicts: - build/configure.ac.features - src/cairo.h - util/cairo-script/csi-replay.c - -commit 2da78fd4666faa27d037ae3625ca83353a6e7629 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 14:04:21 2009 -0700 - - [gl] Drop use of packed datatypes where it's disallowed. - - I had naively assumed that GL image specification let you do useful things - and describe the most common datatypes in graphics, since we do things that - way inside of the DRI drivers. Silly me. GL_BGR and GL_RGB can't do - GL_UNSIGNED_INT_8_8_8_8{,_REV}, so no specifying 24-depth 32-bpp data with - implicit alpha. GL_BGR can't even do r5g6b5! - - This fixes 20 regressions in the test suite. - - src/cairo-gl-surface.c | 25 +++++++++++++------------ - 1 files changed, 13 insertions(+), 12 deletions(-) - -commit 69a150b7d8115babf2c60d7c5f7ca340162dc098 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 13:36:32 2009 -0700 - - [gl] Initialize has_alpha in the image surface composite fastpath. - - Fixes bilevel-image, set-source, and zero-alpha. - - src/cairo-gl-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 7ee0fee900bf30a7ca0497ab64199c9013f81cdd -Merge: 882f1d5 d3a478b -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 10:45:36 2009 -0700 - - Merge branch 'gl' into gl-span-renderer - - Conflicts: - src/cairo-gl-surface.c - -commit d3a478b6c0dca3884a68c5014185cad0a166801c -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 10:19:24 2009 -0700 - - [gl] Fix check-plt.sh for the GL surface. - - src/cairo-gl-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 1f7c393a6d63282a632a62264b99e67e26ecf38e -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 10:10:00 2009 -0700 - - [gl] Fix check-doc-syntax.sh for GL surface. - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 19bc0f2f1d75b1514b22d0bb737bad67ff8d1ee6 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Jun 1 10:09:16 2009 -0700 - - [gl] Fix check-def.sh for GL surface. - - src/cairo-gl-surface.c | 2 +- - src/cairo-gl.h | 6 ------ - 2 files changed, 1 insertions(+), 7 deletions(-) - -commit e05097c604c607d27b341cd33426001bd2d1f690 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 27 16:45:20 2009 +0100 - - [surface] Assign a unique id to the surface. - - Allocate an ever-increasing, non-zero, unique identifier to each surface. - True for the first 4-billion... - - src/cairo-pattern.c | 11 ++++++++--- - src/cairo-surface-private.h | 2 ++ - src/cairo-surface.c | 25 +++++++++++++++++++++++++ - 3 files changed, 35 insertions(+), 3 deletions(-) - -commit 45835f623f5ddda6e3258361b9d6ab27860a9198 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 12:46:46 2009 +0100 - - [cache] Expose init/fini methods so that caches can be embedded. - - The structure is already exposed, so just expose the - constructors/destructors in order to enable caches to be embedded and - remove a superfluous malloc. - - src/cairo-cache-private.h | 27 +++++++++--- - src/cairo-cache.c | 110 +++++++++++++++----------------------------- - src/cairo-scaled-font.c | 35 +++++++------- - src/cairo-types-private.h | 14 ------ - 4 files changed, 77 insertions(+), 109 deletions(-) - -commit c3aac9cf49362b726a54a33a46bd8511a10f644f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 10:37:30 2009 +0100 - - [image] Eliminate trapezoid array allocation - - By simply iterating over the array cairo_trapezoid_t, converting each one - separately to a pixman_trapezoid_t and rasterizing each one individually - we can avoid the common heap allocation. pixman performs exactly the same - iteration internally so there is no efficiency loss. - - src/cairo-image-surface.c | 92 ++++++++++++++++++++++----------------------- - 1 files changed, 45 insertions(+), 47 deletions(-) - -commit 7b2bc441387abcf3967587f571dc5741d0a53938 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 10:41:53 2009 +0100 - - [surface-fallback] Tidy pattern handling. - - Make the treatment of replacing the NULL source pattern with WHITE - consistent. As it is a solid pattern, we can skip _cairo_pattern_fini() - and so make the code more readable, and consistent along the error paths. - - src/cairo-surface-fallback.c | 83 +++++++++++++++++------------------------- - 1 files changed, 33 insertions(+), 50 deletions(-) - -commit e83e113eae9e7cb3e09719bfc0ad68450faf3ecd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 23:25:38 2009 +0100 - - [surface] Speed up cairo_surface_get_mime_data(). - - The number of mime-types attached to a surface is usually small, - typically zero. Therefore it is quicker to do a strcmp() against - each key in the private mime-data array than it is to intern the - string (i.e. compute a hash, search the hash table, and do a final - strcmp). - - src/cairo-array.c | 8 -------- - src/cairo-surface.c | 33 ++++++++++++++++++--------------- - src/cairoint.h | 6 ++++++ - 3 files changed, 24 insertions(+), 23 deletions(-) - -commit 247e76b923d54f639e2ca50c8da945c15b691158 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 08:53:45 2009 +0100 - - [script] Speed up floating-point scanner - - Hard-code frequent exponents to reduce number of calls to pow(). - - util/cairo-script/cairo-script-scanner.c | 45 ++++++++++++++++++++--------- - 1 files changed, 31 insertions(+), 14 deletions(-) - -commit c5e85835b29c7654e1c28a90b2e587afba7b6f0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 26 15:52:30 2009 +0100 - - [debug] Relax ASSERT_NOT_REACHED - - Need to actually handle random pixman image formats... - For the time being, ignore them. - - src/cairo-debug.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4232719af968ed05636fe34f2ffe2520dc02d737 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat May 30 23:03:55 2009 -0400 - - [ft] Fix vertical advance metrics of bitmap fonts (#21985) - - src/cairo-ft-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4314cae874dec2747df6be88859d7b6174eece31 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed May 27 17:56:05 2009 +0930 - - Fix typo in comment - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7dbc2fe80a4fe0dcee4a293e47ab6edcefc24e18 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 20:36:34 2009 +0100 - - [script] Simplify _dictionary_name_equal - - Just a simple return TRUE since all necessary checking is performed by - _csi_hash_table_lookup(). - - util/cairo-script/cairo-script-objects.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 0b5e92e66be94ce7cc9c31e911f23c4cb7ec77af -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 19:56:57 2009 +0100 - - [script] Check hash value between comparing keys - - util/cairo-script/cairo-script-hash.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit a364f71194aa2ea92071662f156c9b2a4d9211b4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 21:25:27 2009 +0100 - - [trace] Set output location using pwd - - Record the current working directory and pass that along to cairo-trace so - that the trace output is local to the user and not the application. This - is vital if the application is called via a script that changes directory. - - util/cairo-trace/cairo-trace.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a76e09ea656faa63fbfa159e8f52c9c9ec7d35c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 21:22:43 2009 +0100 - - [trace] Missing newlines in error messages. - - util/cairo-trace/trace.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b7f199fde25c960bf87302d5e868a7c2dffa4f5d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 12:40:35 2009 +0100 - - [pattern] Trim REPEAT source size when applicable. - - Some backends are quite constrained with surface sizes and so trigger - fallbacks when asked to clone large images. To avoid this we attempt - to trim ROIs (as these are often limited to the destination image, and - so can be accommodated by the hardware). This patch allows trimming - REPEAT sources both horizontally and vertically independently. - - src/cairo-pattern.c | 21 ++++++++++++++++++--- - 1 files changed, 18 insertions(+), 3 deletions(-) - -commit e4efc80b8e89b05afc22d74f984f4ec9012bc39b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 21:15:22 2009 +0100 - - [build] Make valgrind support user-configurable - - As the number of places where we add valgrind client requests grows, it - becomes imperative that we should be able to disable them with a simple - configure time option. - - build/configure.ac.analysis | 37 ++++++++++++++++++++++--------------- - 1 files changed, 22 insertions(+), 15 deletions(-) - -commit d840deb57b51236820dc8c320ecd7540973de873 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 22:11:22 2009 +0100 - - [in-fill] Fix typo in on-vertex test. - - Eeek! Comparing point->y against in_fill->x is a bad idea. - - src/cairo-path-in-fill.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit cfd484cd01a77b1f91e27daccfc5f240cf7c692d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon May 25 22:10:20 2009 +0100 - - [test] Change test semantics to match new in-fill definition - - The in-fill definition has changed to include queries on the edges and - vertices, so update the test case to match. - - test/in-fill-trapezoid.c | 77 ++++++++++++++++++++++++++++++++++------------ - 1 files changed, 57 insertions(+), 20 deletions(-) - -commit b71b019fe50a9188ddbecd1945606da8ba3bad53 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 27 16:32:21 2009 +0000 - - [in-fill] Treat on-edge queries as inside. - - Jeff Muizelaar noted that the treatment of edges differed with firefox's - canvas definition, which considers a point on any edge as inside. The - current implementation has a similar definition to that of flash, for - which the top and right edges are outside. Arguably, firefox has the more - intuitive definition here... - - src/cairo-path-in-fill.c | 21 ++++++++++++++++++++- - 1 files changed, 20 insertions(+), 1 deletions(-) - -commit efd0f0b2922d0801e4e0e8e75ddf9b9892a2f2e6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 20 18:49:28 2009 +0100 - - [xlib] Handle too-large images gracefully. - - Trigger a fallback to an image surface for massive patterns. - - src/cairo-xlib-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3c6838532a62c294e7f18b13b0b7f8da9a1a1e1e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 20 18:46:35 2009 +0100 - - [surface] Early return if the backend cannot clone an image - - If the backend cannot create a similar surface to hold the image, then - report back the failure before embarking upon an infinite recursion. - The UNSUPPORTED return should percolate up through the call stack and - trigger a fallback. - - src/cairo-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit bf2c7356d4c955fb770863874a0ea111e9ba02a4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 22 12:52:43 2009 +0100 - - [surface] Provide nil-surface for INVALID_SIZE - - So that we can faithfully report back failure if the user tries to create - a surface larger than the backend can support. - - src/cairo-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 6717f0d748000416172057d0aab2471377456e27 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 20 17:35:19 2009 +0100 - - [win32] Wrap win32-font usage with CAIRO_HAS_WIN32_FONT - - Bug 19251: --enable-win32=yes and --enable-win32-font=no causes - compilation failure - [https://bugs.freedesktop.org/show_bug.cgi?id=19251] - - Wrap use of the win32 font backend within win32-printing-surface within - CAIRO_HAS_WIN32_FONT ifdefs to prevent compilation failure if the user - explicitly disables the win32 font backend. - - src/cairo-win32-printing-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit c7d2b0de830f4c653fbb5016c4efdc5f0e5af0eb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed May 20 17:34:56 2009 +0100 - - [win32] Typo - - Correct function name in error string. - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 87b764908a38cbb4159ac76d8b7d1d08a24b838e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 19 15:53:55 2009 +0100 - - [gl] Add EGL target - - Split the GLX context from the GL surface to enable use of an alternative - EGL interface. - - boilerplate/Makefile.win32.features | 20 ++ - boilerplate/cairo-boilerplate-gl.c | 2 +- - build/Makefile.win32.features | 2 + - build/Makefile.win32.features-h | 6 + - build/configure.ac.features | 3 + - configure.ac | 30 +++- - src/Makefile.sources | 4 +- - src/Makefile.win32.features | 28 +++ - src/cairo-egl-context.c | 181 ++++++++++++++++++ - src/cairo-gl-private.h | 88 +++++++++ - src/cairo-gl-surface.c | 191 ++++++++----------- - src/cairo-gl.h | 41 +++- - src/cairo-glx-context.c | 136 +++++++++++++ - test/.gitignore | 2 + - test/Makefile.am | 10 + - test/egl-flowers.c | 358 +++++++++++++++++++++++++++++++++++ - test/glx-flowers.c | 256 +++++++++++++++++++++++++ - util/cairo-script/.gitignore | 2 + - util/cairo-script/Makefile.am | 15 ++ - util/cairo-script/csi-egl.c | 263 +++++++++++++++++++++++++ - util/cairo-script/csi-glx.c | 150 +++++++++++++++ - util/cairo-script/csi-replay.c | 61 ++++++ - 22 files changed, 1723 insertions(+), 126 deletions(-) - -commit 6e87e354e42d1a758a252533407e6e1829638544 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun May 17 18:14:28 2009 +0930 - - Correct the comment for the index_to_ucs4 font backend function - - src/cairoint.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 2a34992cccfd77c2acf30fe851311f16137ba32f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun May 17 18:12:39 2009 +0930 - - Ensure win32 font index_to_ucs4() sets ucs4 to -1 if lookup fails - - src/cairo-win32-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4c8e5485a10478c19e8a6cb48595473f5bb8ee8a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun May 17 18:05:42 2009 +0930 - - Fix win32 build breakage - - that was caused by c25992479aca481d326f72665ebdcf0904273eac - - src/cairo-win32-private.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 31596cf2b298054bbd3e340ae77a3388eadc0d8b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 15 17:40:26 2009 +0100 - - [debug] Check image contents using memcheck. - - As an aide to tracking down the source of uninitialised reads, run - VALGRIND_CHECK_MEM_IS_DEFINED() over the contents of image surfaces at the - boundary between backends, e.g. upon setting a glyph image or acquiring - a source image. - - src/cairo-debug.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo-ft-font.c | 2 ++ - src/cairo-pattern.c | 2 ++ - src/cairo-png.c | 2 ++ - src/cairo-scaled-font.c | 3 +++ - src/cairo-surface.c | 32 +++++++++++++++++++++++--------- - src/cairoint.h | 11 +++++++++++ - 7 files changed, 85 insertions(+), 9 deletions(-) - -commit 791a6fa399894e735d522781b15b7f18c3ecd4d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 15 16:57:49 2009 +0100 - - [memfault] Update macros to avoid namescape collision with memcheck - - Basing the macro names of the memfault skin lead to a namespace - collision with memcheck. After updating the headers, update cairo's usage - to match. - - src/cairo-malloc-private.h | 2 +- - test/cairo-test.c | 62 ++++++++++++++++++++++---------------------- - 2 files changed, 32 insertions(+), 32 deletions(-) - -commit c897f36a6b09f3591d858142e3236f256f0bd6a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 15 20:37:52 2009 +0100 - - [test] Stress the ft from-face cache - - Create a set of font faces using the same FT_Face to stress test the - handling of from-face fonts within the backend cache. - - test/ft-font-create-for-ft-face.c | 109 ++++++++++++++++++++++++++++++++++--- - 1 files changed, 102 insertions(+), 7 deletions(-) - -commit 477df1f5504a507d0c5960aa7e21375284a6f99c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 15 10:48:56 2009 +0100 - - [test] Clear expected floating point exceptions - - test/invalid-matrix deliberately feeds garbage into the API to test our - error detection. This causes FPE to be raised during the course of the - test - so they are deliberately disable for the duration. However, the - exceptions were not being cleared and so the FPE could be triggered on - the next floating point operation. This was being masked during make check, - by the fact that each test is run in its own forked process and was only - observed when multiple tests were run in foreground mode. - - build/configure.ac.system | 2 +- - test/invalid-matrix.c | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit f47a93ef30249b531e588335045d052c3dcc71bd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 9 09:55:49 2009 +0100 - - [test] Check text->path with user-fonts (twin) - - Check behaviour of user-fonts, twin in particular, when using the text as - a path. - - test/twin.c | 11 ++++++++++- - test/twin.ps.ref.png | Bin 1114 -> 2197 bytes - test/twin.ref.png | Bin 1492 -> 4038 bytes - test/twin.svg.ref.png | Bin 1487 -> 3027 bytes - 4 files changed, 10 insertions(+), 1 deletions(-) - -commit 669e7ae5c98812360bf20b798c20024ae2e9810b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 8 17:36:01 2009 +0100 - - [test] Relax APPROX_EQUALS condition - - The bounding box of the text is rounded to the nearest pixel boundaries, - so therefore the test must accept a similar level of imprecision. - - test/get-path-extents.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit fe7410c6cdc19bb366bf1e93481bf8287a14d52e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 9 19:01:06 2009 +0100 - - [test] Add a note to "Getting the elusive zero failures" - - The test suite depends upon many external factors and in order to achieve - a pass, your system must match that upon which the reference images were - generated. Add a note to read test/README in case of failures so that the - casual user is not unduly alarmed by cairo reportedly failing. - - test/cairo-test-runner.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 2f962799a77faef0e6ad62c79bd7eebc9b8c5a4b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 15 18:49:03 2009 +0100 - - [test] Fix typos that excluded backend test sources - - test/Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit c25992479aca481d326f72665ebdcf0904273eac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat May 9 10:10:14 2009 +0100 - - [xlib] Use minimal depth for similar clones. - - Damian Frank noted - [http://lists.cairographics.org/archives/cairo/2009-May/017095.html] - a performance problem with an older XServer with an - unaccelerated composite - similar problems will be seen with non-XRender - servers which will trigger extraneous fallbacks. The problem he found was - that painting an ARGB32 image onto an RGB24 destination window (using - SOURCE) was going via the RENDER protocol and not core. He was able to - demonstrate that this could be worked around by declaring the pixel data as - an RGB24 image. The issue is that the image is uploaded into a temporary - pixmap of matching depth (i.e. 32 bit for ARGB32 and 24 bit for RGB23 - data), however the core protocol can only blit between Drawables of - matching depth - so without the work-around the Drawables are mismatched - and we either need to use RENDER or fallback. - - This patch adds a content mask to _cairo_surface_clone_similar() to - provide the extra bit of information to the backends for when it is - possible for them to drop channels from the clone. This is used by the - xlib backend to only create a 24 bit source when blitting to a Window. - - src/cairo-clip.c | 1 + - src/cairo-directfb-surface.c | 2 + - src/cairo-glitz-surface.c | 3 ++ - src/cairo-image-surface.c | 4 +++ - src/cairo-pattern.c | 18 ++++++++++++-- - src/cairo-quartz-surface.c | 1 + - src/cairo-surface-fallback-private.h | 1 + - src/cairo-surface-fallback.c | 3 +- - src/cairo-surface.c | 7 +++++- - src/cairo-win32-surface.c | 3 +- - src/cairo-xcb-surface.c | 5 ++++ - src/cairo-xlib-surface.c | 42 +++++++++++++++++++++++++-------- - src/cairoint.h | 4 +++ - src/test-fallback-surface.c | 1 + - src/test-fallback16-surface.c | 2 + - test/surface-source.c | 1 + - 16 files changed, 82 insertions(+), 16 deletions(-) - -commit 0238fe2cafea2e1ed19bb222117bd73ee6898d4d -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Thu May 14 11:46:29 2009 +0100 - - [ft] Resolve mutual referencing problems with zombie faces - - Bug 21706 -- zombie ft_font_face / ft_unscaled_font mutual - referencing problems - [http://bugs.freedesktop.org/show_bug.cgi?id=21706] - - There can be more than one zombie font_face belonging to an unscaled_font, - but only the first is destroyed. This leaks the client's FT_Face - (and associated font data) as release of the FT_Face depends on release - of the font_face. - - (The reason why Firefox ends up with two different font_faces for one - unscaled_font is that load_flags for faces with artificial oblique have - FT_LOAD_NO_BITMAP set. - https://bugzilla.mozilla.org/show_bug.cgi?id=486974) - - Also it's possible for _cairo_ft_font_face_create to pull out a zombie - font_face from the unscaled_font, which would crash - _cairo_ft_font_face_scaled_font_create, as that expects non-null - font_face->unscaled (if !font-face->pattern). - - AUTHORS | 2 +- - src/cairo-ft-font.c | 38 ++++++++++++++++++++++++++++++-------- - 2 files changed, 31 insertions(+), 9 deletions(-) - -commit d6f6ec9082c86b9fd9e2389b9627f08a91c2cdd3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 8 16:43:43 2009 +0100 - - [ft] Restore the ability to lazily resolve patterns. - - I broke the ability for the ft font backend to resolve patterns whilst - fixing the font creation to propagate the error status from fontconfig - (be27e8). By adjusting the sequence of error checks we do not confuse - the absence of a match with a fatal error and thereby restoring the - lazy pattern resolution whilst ensuring error propagation. - - src/cairo-ft-font.c | 32 +++++++++++++++++--------------- - 1 files changed, 17 insertions(+), 15 deletions(-) - -commit a352fd46020e18f9d9f839f0c3f3a63c1d8c0ae1 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri May 15 15:34:05 2009 -0400 - - Only include <strings.h> for ffs() when we HAVE_FFS - - This fixes breakage caused by 3d3d10a31e04498ef91a288d89b3dec291bfc323 - - src/cairo-skiplist.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 882f1d5a60abfbf83c65fe00b31bb4c8e5c82f62 -Author: Eric Anholt <eric@anholt.net> -Date: Sun May 10 16:56:49 2009 -0700 - - [gl] Use spans directly as geometry instead of rasterizing to a temporary. - - I was hoping for a bigger win than this, but cairogears is now significantly - faster than it was with just traps. One potential problem is that adding - src texture coordinates blew up vertex size from 12 bytes to 20, and we're - emitting quite a few vertices. There's plenty of hope for the future, - though: With shaders we could remove the 2 new texcoords again by stuffing a - position to source coordinate transformation matrix in constants. Then - with EXT_geometry_shader4 plus EXT_gpu_shader4 we should be able to get the - 24 bytes for 2 vertices down to 16 or less. - - src/cairo-gl-surface.c | 316 ++++++++++++++++++++++++++---------------------- - 1 files changed, 171 insertions(+), 145 deletions(-) - -commit 7b4f2d5e6dd37232d4fa764b69065c7d96856dcc -Author: Eric Anholt <eric@anholt.net> -Date: Sun May 10 14:50:22 2009 -0700 - - [gl] Use Enable/DisableClientState for arrays for consistency. - - src/cairo-gl-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 705ee3da1372e8533f25e0b4bde072e4bf76872b -Author: Eric Anholt <eric@anholt.net> -Date: Sat May 9 12:17:12 2009 -0700 - - [gl] Add HW spans implementation using VBOs and GL_LINES. - - This is a minor performance regression over software, but is the basis for - not rasterizing the geometry into a temporary mask, which should be a - significant win. - - src/cairo-gl-surface.c | 145 +++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 124 insertions(+), 21 deletions(-) - -commit 934af24ccce9c06fc38ab7735d643d230fb3b8ad -Author: Eric Anholt <eric@anholt.net> -Date: Sat May 9 10:03:06 2009 -0700 - - [gl] Use the span renderer with an image surface temporary. - - This appears to be no performance difference in cairogears versus the traps - fallback before, but is a step towards handing the information off to the - hardware. - - src/cairo-gl-surface.c | 210 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 208 insertions(+), 2 deletions(-) - -commit 17b41fe7e3b8b493341be6384d816105aadf0cb6 -Author: Eric Anholt <eric@anholt.net> -Date: Sun May 10 10:17:27 2009 -0700 - - [gl] Use filtering of GL_NEAREST to hint to TexImage not to alloc for mipmaps. - - Gl defaults to NEAREST_MIPMAP_LINEAR on new texture objects. - This should save space or bandwidth with DRI drivers, as they'll use the - parameter as a hint, and then not have to either fix up later or waste - space for unused mipmap levels. - - src/cairo-gl-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit a438acd37c5aaedc7e7a05e6a9d8758315931b44 -Author: Eric Anholt <eric@anholt.net> -Date: Sat May 9 11:33:53 2009 -0700 - - [gl] Handle PIXMAN_b8g8r8a and PIXMAN_b8g8r8x8 in the image tex shortcut. - - src/cairo-gl-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 29768c2193b09d3bef54a178c8e3ba6f7e7cebd0 -Author: Eric Anholt <eric@anholt.net> -Date: Sat May 9 11:30:11 2009 -0700 - - [gl] Don't forget that we require ARB_texture_non_power_of_two currently. - - src/cairo-gl-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 088d2a6cc70b01f55d178d235542247180b3e5ee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 11:35:17 2009 +0100 - - [doc] Update identifiers - - doc/public/tmpl/cairo-status.sgml | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit d8fb6a03d3034cf776687bcc1f0625a8a9f2ae07 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:57:13 2009 +0100 - - [path] Define _BSD_SOURCE to enable hypot() - - hypot() is only declared for BSD/SVID/XOPEN/C99 sources. Choose BSD as - we've used that elsewhere. - - src/cairo-path-stroke.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e38f85c5de51016b8858e755e2752816c9995ab2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:42:15 2009 +0100 - - [script] Pedantic violations - - Fixup a few trivial errors with -pedantic. - - util/cairo-script/cairo-script-operators.c | 2 +- - util/cairo-script/cairo-script-private.h | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 0c00556990a842e0ee0056134c6e196c2fb372b7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:11:12 2009 +0100 - - [script] Missing include for INT32_MAX - - Avoid depending upon stdint.h, or rather cut'n'pasting Cairo's portable - defines, by using INT_MAX and limits.h instead. - - util/cairo-script/cairo-script-file.c | 3 ++- - util/cairo-script/cairo-script-objects.c | 3 ++- - util/cairo-script/cairo-script-operators.c | 13 +++++++------ - util/cairo-script/cairo-script-scanner.c | 5 +++-- - util/cairo-script/cairo-script-stack.c | 7 ++++--- - 5 files changed, 18 insertions(+), 13 deletions(-) - -commit 3d3d10a31e04498ef91a288d89b3dec291bfc323 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:10:47 2009 +0100 - - [skiplist] Missing include for ffs() - - src/cairo-skiplist.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit e5752865ab0ebefec313ab9a6f90451ef2d7af95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:58:45 2009 +0100 - - [cairo] Protect typeof against -ansi - - s/typeof/__typeof__/ to allow the [gcc-specific] macro to continue to work - despite -ansi. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5f4f2ab01ab3fa6b07ac7521dfeaf90a787a5dee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:34:47 2009 +0100 - - [cairo] Remove stray semi-colon - - Pedantic finds another victim. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d86ad461cf7a9d857bd07a6b775c84acbf35647b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 14:16:05 2009 +0100 - - [cairo] Convert C99 comments to /* ... */ - - First victim of -pedantic... - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 695f648607dd5a78cf29dcc33ed19aa223d0416a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 11:16:10 2009 +0100 - - [cairo] Fix errors reported by check-doc - - Identity a few new instances of CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED in - comments with %. - - src/cairo.h | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 849bdee199b5ebba467603a69d30bb519c10bc75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 11:36:38 2009 +0100 - - [check] Quieten output during checking headers-standalone - - Remove the duplication of the compile line and enable shave to replace it - entirely with a "CHECK $header". This should make errors more obvious. - - build/shave.in | 3 +++ - src/Makefile.am.analysis | 2 +- - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 84fad4b11bc26cfd0847660e3309eb902d783713 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 11:31:22 2009 +0100 - - [build] Fix gtk-doc interoperation with shave - - Add --tag=CC to the libtool invocations. - - build/Makefile.am.gtk-doc | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit fd72c56af833a738ddc8f188cabe03d9f8b45475 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu May 7 11:27:43 2009 +0100 - - [build] Report status of gtk-doc in summary - - build/configure.ac.features | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 428fb58a4c96391f96f48026be49a4533cd12834 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Apr 28 15:03:53 2009 -0400 - - [user-font] Add CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED - - This is useful for language bindings to signal that a method is not - implemented. - - src/cairo-misc.c | 2 ++ - src/cairo-surface.c | 1 + - src/cairo-user-font.c | 14 +++++++++++--- - src/cairo.h | 23 ++++++++++++++--------- - 4 files changed, 28 insertions(+), 12 deletions(-) - -commit f9573d03dde2c38674d36b783044715ab5104b0a -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Mar 17 19:48:12 2009 -0400 - - Err, make gtk-doc happy again - - doc/public/tmpl/cairo-status.sgml | 2 +- - src/cairo.h | 2 -- - 2 files changed, 1 insertions(+), 3 deletions(-) - -commit 30735f790aa3cef822f132932f43a4738cd8cd95 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 5 18:37:25 2009 +0100 - - [xlib] Use a similar content surface for cloning images - - Simply request a surface with a similar content to the source image when - uploading pixel data. Failing to do so prevents using a 16-bit (or - otherwise non-standard pixman image format) window as a source - in fact - it will trigger an infinite recursion. - - src/cairo-xlib-surface.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit 60e38d0530443aa9c78e74e47ba5574887ae220c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 5 17:05:39 2009 +0100 - - [surface] Convert FORMAT_INVALID during snapshots - - Currently the surface snapshotting attempts to clone the source using a - new surface of identical format. This will raise an error if the source is - an unusual xserver, for example one operating at 16bpp. The solution to - this is to create the surface using the content type rather than the - format (as elsewhere within the code base). However, we also wish to - preserve FORMAT_A1 (which is lost if we only choose the format based on - _cairo_format_from_content) as the various backends may be able to - trivially special case such bitmaps. - - src/cairo-surface-fallback.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 31f5a2e94d669b9d2785de944d4aee584fd1d76e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 5 15:52:55 2009 +0100 - - [png] Coerce FORMAT_INVALID to a known image format - - It is possible for cairo_surface_write_to_png() to acquire a non-standard - image surface when, for example, we try to dump a low bit-depth XServer. - Handle this scenario by coercing the unknown image format to a standard - type via pixman. - - src/cairo-png.c | 44 ++++++++++++++++++++++++++++++-------------- - 1 files changed, 30 insertions(+), 14 deletions(-) - -commit c488b336449a1a7ca4d3f90785afeec9e21784c3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 5 13:59:07 2009 +0100 - - [test] Create a new fallback surface to exercise 16-bit paths. - - Add a variation of test-fallback-surface that forces the use of a 16-bit - pixman format code instead of the standard 32-bit types. This creates an - image surface akin to the fallbacks used with low bit-depth xservers. - - .../cairo-boilerplate-test-surfaces-private.h | 11 + - boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++ - boilerplate/cairo-boilerplate.c | 18 ++ - src/Makefile.sources | 2 + - src/test-fallback16-surface.c | 234 ++++++++++++++++++++ - src/test-fallback16-surface.h | 52 +++++ - test/Makefile.am | 4 + - test/Makefile.sources | 3 + - test/test-fallback16-surface-source.c | 43 ++++ - test/test-fallback16-surface-source.ref.png | Bin 0 -> 268 bytes - 10 files changed, 383 insertions(+), 0 deletions(-) - -commit 1d609d672273da494fd596606b59ab1c0010ae6d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue May 5 17:11:55 2009 +0100 - - [image] Treat A1 image surfaces as BILEVEL_ALPHA - - Categorise the transparency of FORMAT_A1 image surfaces as BILEVEL_ALPHA. - - src/cairo-image-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit aac132a76a2af3719088678295169f1962a555e6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 24 10:14:36 2009 +0100 - - [image] Make _cairo_image_analayze_transparency() more format agnostic - - Use the content in preference to the format to determine - CAIRO_IMAGE_IS_OPAQUE/CAIRO_IMAGE_HAS_ALPHA. - - src/cairo-image-surface.c | 17 +++++++---------- - 1 files changed, 7 insertions(+), 10 deletions(-) - -commit 4be6de9fc6192d59c8d61e8edafed941e868a756 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 24 10:03:20 2009 +0100 - - [image] Return FORMAT_INVALID for an error surface. - - The default error value should be CAIRO_FORMAT_INVALID [-1] not 0 (which - corresponds to CAIRO_FORMAT_ARGB32). - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6675cf558719f81afe2a4331bc6adb3cda637a26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri May 1 09:31:53 2009 +0100 - - [build] Add lcov-1.7 to known list - - build/configure.ac.analysis | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 526fcdb7e6cc8b522508762b1a68a5585fddf823 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Apr 20 10:56:06 2009 +0100 - - [build] Enable shave support - - shave transforms the messy output of autotools into a pretty (quiet!) - Kbuild-like one. - - Lets see how controversial a simple change can be... - - build/.gitignore | 2 + - build/aclocal.dolt.m4 | 1 + - build/aclocal.shave.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++ - build/shave-libtool.in | 69 +++++++++++++++++++++++++++++++++++++++++ - build/shave.in | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ - configure.ac | 4 ++ - 6 files changed, 232 insertions(+), 0 deletions(-) - -commit 1ae2ddc1dd4c90d50b8c57c4de677f8ab96b1fa2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 17:19:12 2009 +0100 - - [memfault] Manually inject faults when using stack allocations - - Ensure that no assumptions are made that a small allocation will succeed - by manually injecting faults when we may be simply allocating from an - embedded memory pool. - - The main advantage in manual fault injection is improved code coverage - - from within the test suite most allocations are handled by the embedded - memory pools. - - src/cairo-array.c | 3 +++ - src/cairo-bentley-ottmann.c | 3 +++ - src/cairo-gstate.c | 3 +++ - src/cairo-hull.c | 3 +++ - src/cairo-image-surface.c | 6 ++++++ - src/cairo-malloc-private.h | 7 +++++++ - src/cairo-misc.c | 3 +++ - src/cairo-path-stroke.c | 2 ++ - src/cairo-pattern.c | 9 +++++++++ - src/cairo-pen.c | 9 +++++++++ - src/cairo-polygon.c | 5 +++++ - src/cairo-scaled-font.c | 3 +++ - src/cairo-stroke-style.c | 3 +++ - src/cairo-traps.c | 5 +++++ - 14 files changed, 64 insertions(+), 0 deletions(-) - -commit 817589e1967ebdd5e5bda1781eb76010fd8c37dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 13:01:52 2009 +0100 - - [test] Call FcInit() manually. - - Pre-initialise fontconfig whilst memfault is disabled to avoid a lot of - expensive, redundant testing of FcInit() throughout the test suite. - - test/cairo-test.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit be27e844c83c0f5cf25dee1c62768dbf70897a06 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 17:13:52 2009 +0100 - - [ft] Propagate status from font creation - - Return the true error status whel - _cairo_ft_unscaled_font_create_internal(). This ensures that the original - error is not masked and we are able to report the error during fontconfig - pattern resolution. - - src/cairo-ft-font.c | 90 +++++++++++++++++++++++++++++---------------------- - 1 files changed, 51 insertions(+), 39 deletions(-) - -commit d46c56f18c8a93d3d50be9333292c7c9b0ac0a78 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 13:00:59 2009 +0100 - - [ft] Check for pattern duplication failure. - - Check the return of FcPatternDuplicate() for failure, and propagate the - error. - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 50302f156dfba4dcb3639843d7eda819f2c6797c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 12:59:36 2009 +0100 - - [ft] Check (correctly!) for pattern duplication failure. - - Check the return from FcPatternDuplicate() for allocation failure (and not - the original pattern)! - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8bf109bd2a9c9bf755671185733def898a4f96f2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Apr 16 17:17:06 2009 +0100 - - [pattern] Silence compiler with impossible case. - - Assert that the pattern is one of the four known types, and return an - error so that the compiler knows that the local variable can not be used - uninitialised. - - src/cairo-pattern.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5a76c233bffda65140c6ada9b5f2ed7d3bcc999e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 14 11:02:40 2009 +0100 - - [type3] Propagate error from font creation. - - Perform an error check after creating a scaled-font to prevent operations - on a nil-object. - - src/cairo-type3-glyph-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d46bd67c8b3f63d6286845e814f8f1e040f89737 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 10 14:55:24 2009 +0100 - - [type3] Add status checks. - - Propagate error from the stream when creating the surface and add status - guards before writing to the potential nil object. - - src/cairo-type3-glyph-surface.c | 26 +++++++++++++++++++++++--- - 1 files changed, 23 insertions(+), 3 deletions(-) - -commit a6ffb69a54f15659dac7c6b2e1c98bd7893ccdf1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 3 17:28:05 2009 +0100 - - [type3] Check error status before emit_image(). - - Be careful not to pass an error object down to emit_image() hook, - propagate the error instead. This relieves the burden of the error check - from the callee -- which was causing an assertion failure in the ps - backend. - - src/cairo-type3-glyph-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 21d1138da9bcf9c006e0cf3f3d1d50e1c7cec1de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 10 14:53:55 2009 +0100 - - [scaled-font-subsets] Check for malloc failure. - - Check that the utf8 string is successfully allocated before writing to it, - otherwise propagate the error status back to the callers. - - src/cairo-scaled-font-subsets.c | 63 +++++++++++++++++++++----------------- - 1 files changed, 35 insertions(+), 28 deletions(-) - -commit 0f0e2d738437176e72317b37ef66fbc56c60ba93 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 10 14:52:48 2009 +0100 - - [pdf] Propagate failure from type3 glyph surface creation. - - Add an early check that we successfully created the glyph surface. - - src/cairo-pdf-surface.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 1496c5cf51a2304dfd4e9d359a0645ff44fadd3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 10 14:50:26 2009 +0100 - - [analysis] Use _cairo_region_init() - - Avoid secondary allocations of the thin region wrappers during surface - creation by embedding them into the parent structure. This has the - satisfactory side-effect of not requiring status checks which current code - lacks. - - src/cairo-analysis-surface.c | 26 +++++++++++++------------- - 1 files changed, 13 insertions(+), 13 deletions(-) - -commit ad83765a1441cb369c3e7f3de77c243297406c7a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Apr 3 09:23:58 2009 +0100 - - [xlib] Allocate bounded region on stack. - - Eliminate the extremely short-lived and oft unnecessary heap allocation - of the region by first checking to see whether the clip exceeds the - surface bounds and only then intersect the clip with a local - stack-allocated region. - - src/cairo-region.c | 23 ++++++++++++++++++ - src/cairo-xlib-surface.c | 58 ++++++++++++++++++++++++++++++---------------- - src/cairoint.h | 10 ++++++++ - 3 files changed, 71 insertions(+), 20 deletions(-) - -commit 75b06b8bdb5efaf030e063c1f66583d8fde347dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 1 11:43:16 2009 +0100 - - [pattern] Do not modify outparam on error path. - - The pdf backend was crashing as a failed pattern copy stored an invalid - pointer with the resource group. - - src/cairo-pattern.c | 21 +++++++++++---------- - 1 files changed, 11 insertions(+), 10 deletions(-) - -commit 82cccb26723697492504f395fed33afba28d84ba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Apr 14 11:01:39 2009 +0100 - - [test] Handle memfaults during surface-finish-twice - - Check and report memory allocation failures. - - test/surface-finish-twice.c | 17 +++++++++++------ - 1 files changed, 11 insertions(+), 6 deletions(-) - -commit f12d52bfcae0792729b33a1fd1b2d23bd3fc7cf3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Apr 4 19:02:15 2009 +0100 - - [test] Use xmalloc() to evade memfault. - - Do not use the simple malloc() as memfault will inject allocation failures - (unlike xmalloc() for which faults are excluded) - as this is unnecessary - inside the test harness and thus does not exercise any cairo code paths. - - test/show-glyphs-many.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ca501d99bbec432252cbb134d863801d4a792a44 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Apr 1 11:41:59 2009 +0100 - - [test] Disable signal handling under valgrind - - Capturing and handling the signals prevents valgrind from providing - backtraces for fatal signals -- which is often more useful. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f8539726368141f8b42c7817cfd59b4abfce33f3 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Apr 7 14:50:25 2009 -0400 - - [win32] Fix building with libpng and zlib - - Include zlib and libpng dependencies using something like '$(cairo_dir)/../zlib/zdll.lib' - instead of just 'zdll.lib'. Also, do similarly for the headers. - - build/Makefile.win32.common | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 1798fc6607a89811929d1f21cc71c751438f5699 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Apr 5 11:17:02 2009 +0930 - - Fix the TrueType subsetting fix in 9b496af5c - - Oops. - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fe97e815e81f4429889fd52bb525c260f9967356 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Apr 5 01:04:12 2009 +1030 - - Fix TrueType subsetting bug - - Fix incorrect counting of arguments in composite glyphs - - src/cairo-truetype-subset-private.h | 2 +- - src/cairo-truetype-subset.c | 12 +++++++----- - 2 files changed, 8 insertions(+), 6 deletions(-) - -commit 9b496af5c214283c297a52c90a04743f9da9f6a3 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Apr 5 00:44:02 2009 +1030 - - Fix buffer size check in TrueType subsetting - - Andrew Cowie reported a problem with the Charis SIL font being - embedded as a fallback font. - - The buffer size check for composite glyphs was incorrect causing the - subsetting to fail for some fonts. - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ba2ec8e1d9144c4a27917e59cb15039552eb008c -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Apr 1 13:29:12 2009 -0400 - - Remove trailing comma in cairo_region_overlap_t enum. - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2d6336624c33e9c674c192b68eb501373a96dc87 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Apr 1 11:32:58 2009 -0400 - - [test-win32] Fix static linking of the test suite. - - Previously, the test suite needed to be dynamically linked to work. - - boilerplate/Makefile.win32 | 2 +- - test/Makefile.win32 | 9 ++++++--- - test/pdiff/Makefile.win32 | 2 +- - 3 files changed, 8 insertions(+), 5 deletions(-) - -commit 0f21893b0510a188439c2d8cd448bcfcf17ef8c6 -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Wed Apr 1 08:54:30 2009 -0400 - - [region] pixman_region32_contains_point() does not allow NULL for box - - src/cairo-region.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit e46c1d7fa34b4ba89fc3e0fe6f3042a6fa8c0398 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:39:46 2009 +0100 - - [scaled-font-subset] Cleanup after failure to convert to utf16. - - Avoid leaking the local hashtable and strings after failing to convert the - string to utf16. - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 180b964aac4e058e6783778d33772f08e13b3669 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:37:44 2009 +0100 - - [scaled-font-subset] Propagate error from scaled-font to collection. - - Don't attempt to collect the sub_font if it is in error. - - src/cairo-scaled-font-subsets.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 8362c6f726979abc43ad9f7303bd45fcb03f83b3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:36:08 2009 +0100 - - [type1] Fixup error path during write_charstrings() - - On the common error path we attempted to unlock a mutex that was not - always held, so reorder the error paths appropriately. - - src/cairo-type1-fallback.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 88956cd42e9cc03cb8b4ec730062993eaaf3938d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:35:24 2009 +0100 - - [ps] Check for error during stroking. - - Add a missing error status check that caused errors during stroke to be - masked. - - src/cairo-ps-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 043352aa8d1e3aeacf3b877f45e1bc451a676e15 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:34:41 2009 +0100 - - [pdf] Prevent leak of pad_image on error path. - - Ensure that the local pad_image is destroyed after an error. - - src/cairo-pdf-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b0689f56118dd8ccda6f29901d41cf8f80983aa0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 31 10:27:15 2009 +0100 - - Check for errors during get_mime_data() - - cairo_surface_get_mime_data() may raise an error on the surface, so we - need to check lest it goes unnoticed and we generate a corrupt file. - - src/cairo-pdf-surface.c | 2 ++ - src/cairo-ps-surface.c | 2 ++ - src/cairo-svg-surface.c | 2 ++ - 3 files changed, 6 insertions(+), 0 deletions(-) - -commit 9f63cbb870892253f363ddb7aac908263672c8dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 19:09:13 2009 +0100 - - [pdf] Free compressed stream after error. - - Ensure that the compressed stream is destroyed after encountering an - error. - - src/cairo-pdf-surface.c | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit ba1a0fa601a817ff489bc5373af57977e41eb99f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 19:08:41 2009 +0100 - - [truetype] Free local names on failure. - - Ensure that all local allocations are freed on the error path. - - src/cairo-truetype-subset.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit edce97a750acf4368bd7249ec6b9a195f8584cdf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 16:50:51 2009 +0100 - - [pdf] Remove false assertion. - - The stream itself may be in an error state, so an error could be raised. - - src/cairo-pdf-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit b580a4a8d6c056ba8b47be32ea8c5b9a1d90d01e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 16:50:10 2009 +0100 - - [test] Improve fault injection coverage - - In order to exercise the meta-surfaces, we need to inject faults into - cairo_surface_finish(). - - boilerplate/cairo-boilerplate.c | 16 +++++++++++++--- - test/cairo-test.c | 35 +++++++++++++++++++++++++++++++++++ - 2 files changed, 48 insertions(+), 3 deletions(-) - -commit 80d5b53b474c94219c51ae16dcc19098a2d86165 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Tue Mar 31 05:47:44 2009 -0400 - - [region] Change name of cairo_region_empty() to cairo_region_is_empty() - - src/cairo-clip.c | 2 +- - src/cairo-region.c | 6 +++--- - src/cairo-surface-fallback.c | 2 +- - src/cairo.h | 2 +- - src/cairoint.h | 2 +- - 5 files changed, 7 insertions(+), 7 deletions(-) - -commit 77ee65fd03d06064be023f022d565c5038fe26df -Author: Jonathan Kew <jfkthame@gmail.com> -Date: Mon Mar 30 14:45:48 2009 -0400 - - [win32] Fix horizontal glyph positioning bug - - The _cairo_win32_scaled_font_backend version of show_glyphs collects - glyph runs to hand to ExtTextOutW until the y-offset changes, then flushes the - glyphs buffered so far. As each glyph is buffered, it also calculates and - buffers the dx value for the preceding glyph. - - However, when it sees a change in dy and decides to flush, it should *not* - append an entry to the dx buffer, as this would be the "dx" of the previous - glyph, and instead the new start_x value will be used for the new glyph run - that's being collected. This bug means that after any vertically-offset glyph, - the remaining glyphs in the run will get incorrect dx values (horizontal - escapement). - - Mozilla bug #475092 - - src/cairo-win32-font.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit aee71e2063b1d6d23cd8dcef7789c9cf106af32a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 13:41:00 2009 +0100 - - [test] Memfault checks. - - Don't assume an error means the test failed, check for injected allocation - errors. - - test/create-from-png.c | 164 +++++++++++++++++++++++++++++++++--------------- - 1 files changed, 113 insertions(+), 51 deletions(-) - -commit ea6197c2f5f04d5e8e8035a330c5199b37beb702 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:54:26 2009 +0100 - - [surface] Propagate region allocation failure. - - Propagate the error status from failing to allocate the region. - - src/cairo-surface.c | 21 ++++++++++----------- - 1 files changed, 10 insertions(+), 11 deletions(-) - -commit c35d226f7d3654b312e18068b8ccb47a51002a39 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:46:37 2009 +0100 - - [traps] Propagate allocation failure. - - Report failure to allocation region. - - src/cairo-traps.c | 23 ++++++++++------------- - 1 files changed, 10 insertions(+), 13 deletions(-) - -commit e238d10b30e18084bf07eb1643fdf48ef35467ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:22:18 2009 +0100 - - [region] Use const cairo_rectangle_int_t consistently. - - Add the const declaration to a couple of functions. - - src/cairo-region.c | 4 ++-- - src/cairo.h | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit de1612bdd767ca37e01938f8e41d9699531a49d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:17:49 2009 +0100 - - [region] Use _cairo_status_is_error - - Replace the open-coded version with the more readable macro. - - src/cairo-region.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f027405429d0133b2840c4b82bc553355fa5f3d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:12:41 2009 +0100 - - [region] Add leading underscore to private _cairo_region_set_error() - - Differentiate the private _cairo_region_set_error() function by using a - leading underscore. - - src/cairo-region.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit ed7188a471f73abcc4ca3e2a92685088134391c7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 30 10:07:48 2009 +0100 - - [region] Add slim_hidden_def. - - Fixes for check-plt.sh (and a few adjacent whitespace). - - src/cairo-region.c | 244 ++++++++++++++++++++++++++++------------------------ - 1 files changed, 133 insertions(+), 111 deletions(-) - -commit f31c6548f818e1d4e257d94d623705284bcc4274 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Mar 28 19:26:03 2009 +0000 - - Silence compiler warnings for CAIRO_STATUS_LAST_STATUS - - Add ASSERT_NOT_REACHED (or similar) cases to the error handling switches - to silence the compiler. - - src/cairo-misc.c | 5 +++-- - src/cairo-spans.c | 2 ++ - src/cairo-surface.c | 1 + - 3 files changed, 6 insertions(+), 2 deletions(-) - -commit 979337dd4da40abb2ea49968a2c01709d9046aab -Author: Eric Anholt <eric@anholt.net> -Date: Sat Mar 28 21:53:04 2009 -0700 - - [gl] Wire blend factors using dst alpha to constants for CAIRO_CONTENT_COLOR. - - This fixes the operator and operator-alpha tests to rgb24 destinations. - While we request an RGB texture, the returned texture has alpha bits, so when - we blend against it as a renderbuffer, we get the junk alpha values. Whether - or not this is a driver bug, we'll have this problem when we get visuals - with alpha bits for windows despite not requestiong alpha, so we have to - handle it in cairo. - - src/cairo-gl-surface.c | 22 ++++++++++++++++++---- - 1 files changed, 18 insertions(+), 4 deletions(-) - -commit 809f7dc4c83009f0a67bc8af0608b480bf7fb00e -Author: Eric Anholt <eric@anholt.net> -Date: Sat Mar 28 21:30:13 2009 -0700 - - [gl] Make sure test visuals for CAIRO_CONTENT_COLOR_ALPHA have alpha bits. - - Since we're just making FBOs, the visual chosen probably shouldn't matter, - and it doesn't on Intel. But it does seem like the right thing to do. - - boilerplate/cairo-boilerplate-gl.c | 25 ++++++++++++++++++------- - 1 files changed, 18 insertions(+), 7 deletions(-) - -commit 93c437d4b9261bc1ce3daf9cbd02d9cc4d2584cc -Author: Eric Anholt <eric@anholt.net> -Date: Sat Mar 28 20:59:01 2009 -0700 - - [gl] Use GLEW to detect required extension presence. - - configure.ac | 9 +++++++++ - src/cairo-gl-surface.c | 13 +++++++++++++ - 2 files changed, 22 insertions(+), 0 deletions(-) - -commit 62d84847c3b857b8fd5aeea3f4b5c0f2f4c91625 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Mar 28 03:58:51 2009 -0400 - - [region] Add documentation for all the new region methods. - - src/cairo-region.c | 260 +++++++++++++++++++++++++++++++++++++++++++++------ - src/cairo.h | 6 +- - 2 files changed, 232 insertions(+), 34 deletions(-) - -commit 980e9f0dbd4f21c0ccf4cc33b0b0f2f370667290 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Mar 28 03:04:28 2009 -0400 - - [region] Fix status propagation for regions - - When an operation fails, store the status code in the destination - region rather than leaving it unchanged. - - src/cairo-region.c | 66 +++++++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 52 insertions(+), 14 deletions(-) - -commit 64e490a464472cfe06d779503601d41972ed4518 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Mar 28 01:10:24 2009 -0400 - - [region] Use signed ints for width and height in cairo_rectangle_int_t - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 26999e5aa8b5d353596e31d4b3823cafe007125c -Author: Søren Sandmann <sandmann@redhat.com> -Date: Fri Mar 27 08:48:42 2009 -0400 - - [region] Add cairo_region_intersect_rectangle() and _subtract_rectangle() - - Intersecting with and subtracting rectangles is quite common, and we - already have cairo_union_rectangle(). - - src/cairo-clip.c | 27 ++++----------------------- - src/cairo-region.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-surface.c | 9 +-------- - src/cairo.h | 11 ++++++++++- - src/cairoint.h | 2 ++ - 5 files changed, 61 insertions(+), 33 deletions(-) - -commit 4b3245481cfbf96388c140421a071fd1f79ad601 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Feb 21 08:13:25 2009 -0500 - - [region] Expand rect to rectangle in a couple of names - - Specifically, - - cairo_region_union_rect -> cairo_region_union_rectangle - cairo_region_create_rect -> cairo_region_create_rectangle - - Also delete cairo_region_clear() which is not that useful. - - src/cairo-analysis-surface.c | 4 ++-- - src/cairo-clip.c | 4 ++-- - src/cairo-region.c | 16 +++------------- - src/cairo-surface-fallback.c | 2 +- - src/cairo-surface.c | 4 ++-- - src/cairo-traps.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo.h | 7 ++----- - src/cairoint.h | 5 ++--- - 9 files changed, 16 insertions(+), 30 deletions(-) - -commit bf6d9bc1758ac1971485b6565d29934d6b06bef2 -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Wed Feb 18 08:01:19 2009 -0500 - - [region] Delete cairo_region_create_rectangles() - - It was only used in _cairo_traps_extract_region() which could be - simplified significantly by calling cairo_region_union_rect() - repeatedly instead. - - src/cairo-region.c | 44 -------------------------------------- - src/cairo-traps.c | 60 ++++++++++++++++++++-------------------------------- - src/cairo.h | 4 --- - src/cairoint.h | 1 - - 4 files changed, 23 insertions(+), 86 deletions(-) - -commit e6d82afcab01cc91b88185abc8d1bfb9df5c2c19 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Wed Feb 18 00:20:46 2009 -0500 - - [region] Add slim_hidden_proto for region functions - - src/cairoint.h | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit e29103c08189cab9de34f577951219a69bd7c8e2 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Wed Feb 18 00:11:35 2009 -0500 - - [region] Move region function prototypes to cairo.h along with helper types. - - Move struct _cairo_region to cairoint.h and delete - cairo-region-private.h. Delete cairo_private from the function - definitions that had it. - - src/Makefile.sources | 1 - - src/cairo-analysis-surface.c | 1 - - src/cairo-clip-private.h | 1 - - src/cairo-region-private.h | 128 ------------------------------------------ - src/cairo-region.c | 6 +- - src/cairo-types-private.h | 6 -- - src/cairo.h | 75 ++++++++++++++++++++++++ - src/cairoint.h | 6 ++- - 8 files changed, 83 insertions(+), 141 deletions(-) - -commit 1cca5a1348d071a3c8e2ba9d3ba0d9670b9564f4 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Tue Feb 17 23:52:18 2009 -0500 - - [region] Remove underscores from _cairo_region_* - - src/cairo-analysis-surface.c | 18 +++++------- - src/cairo-clip.c | 50 +++++++++++++++++----------------- - src/cairo-directfb-surface.c | 4 +- - src/cairo-paginated-surface.c | 4 +- - src/cairo-region-private.h | 36 ++++++++++++------------ - src/cairo-region.c | 61 ++++++++++++++++++++--------------------- - src/cairo-surface-fallback.c | 20 +++++++------- - src/cairo-surface.c | 14 +++++----- - src/cairo-traps.c | 10 +++--- - src/cairo-win32-surface.c | 8 +++--- - src/cairo-xcb-surface.c | 4 +- - src/cairo-xlib-surface.c | 14 +++++----- - 12 files changed, 120 insertions(+), 123 deletions(-) - -commit fcdca966941f4f7cc908bd46df1ec9a6b0f757c1 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Tue Feb 17 22:52:50 2009 -0500 - - [region] Always define cairo_rectangle_int_t with ints - - Use ints in cairo_rectangle_int_t, no matter the fixed type. - - src/cairo-types-private.h | 38 +++++++++----------------------------- - 1 files changed, 9 insertions(+), 29 deletions(-) - -commit cfa7a384b730289233bef556fe1919f781eac684 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Tue Feb 17 23:40:02 2009 -0500 - - [region] Add _cairo_region_contains_point() - - src/cairo-region-private.h | 5 ++++- - src/cairo-region.c | 15 +++++++++++++-- - src/cairo.h | 1 + - 3 files changed, 18 insertions(+), 3 deletions(-) - -commit 15564d1949778124e553d792f85cae2b031aad45 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Tue Feb 17 05:58:34 2009 -0500 - - [region] Add _cairo_region_union - - src/cairo-region-private.h | 4 ++++ - src/cairo-region.c | 16 ++++++++++++++++ - 2 files changed, 20 insertions(+), 0 deletions(-) - -commit df883aa937d2f3ecf52048b60caff48b1c9edac9 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Tue Feb 17 06:06:40 2009 -0500 - - [region] Add a cairo_region_overlap_t type - - src/cairo-analysis-surface.c | 4 ++-- - src/cairo-region-private.h | 8 +++++++- - src/cairo-region.c | 33 ++++++++++++++++++++++++--------- - 3 files changed, 33 insertions(+), 12 deletions(-) - -commit ebd0e685ae2d76c3af96d748a33a7194c70749f3 -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Mon Feb 16 05:41:31 2009 -0500 - - [region] Consistently use rectangles in the API of regions - - Usually, rectangles are more useful than boxes, so regions should only - expose rectangles in their public API. - - Specifically, - _cairo_region_num_boxes becomes _cairo_region_num_rectangles - _cairo_region_get_box becomes _cairo_region_get_rectangle - - Remove the cairo_box_int_t type - - src/cairo-clip.c | 22 ++++++------------ - src/cairo-directfb-surface.c | 26 +++++++++++----------- - src/cairo-paginated-surface.c | 34 ++++++++++++++-------------- - src/cairo-region-private.h | 14 ++++++------ - src/cairo-region.c | 28 ++++++++++++------------ - src/cairo-surface-fallback.c | 2 +- - src/cairo-surface.c | 25 ++++++-------------- - src/cairo-traps.c | 31 +++++++++++++------------ - src/cairo-types-private.h | 6 ----- - src/cairo-win32-surface.c | 48 ++++++++++++++++++++-------------------- - src/cairo-xcb-surface.c | 24 ++++++++++---------- - src/cairo-xlib-surface.c | 29 ++++++++++++------------ - 12 files changed, 134 insertions(+), 155 deletions(-) - -commit c29aeee2d3569cd43e88adc05662bb6306987b8b -Author: Søren Sandmann <sandmann@redhat.com> -Date: Thu Dec 11 18:37:40 2008 -0500 - - [region] Change sense of _cairo_region_not_empty() to _cairo_region_empty() - - Having "not" in the name causes double negatives. - - src/cairo-clip.c | 2 +- - src/cairo-region-private.h | 2 +- - src/cairo-region.c | 6 +++--- - src/cairo-surface-fallback.c | 2 +- - 4 files changed, 6 insertions(+), 6 deletions(-) - -commit c88321d0a2b9d200b2044674d02fa0683feca74c -Author: Søren Sandmann <sandmann@redhat.com> -Date: Thu Dec 11 16:20:23 2008 -0500 - - [region] Miscellaneous bug fixes. - - - Initialize region->status in _cairo_region_create_boxes() - - Make _cairo_region_copy() actually return a region. - - Fix a bug where a NULL region could be dereferenced - - Also add an assertion that the result of cairo_region_copy() is never - NULL. - - src/cairo-clip.c | 2 ++ - src/cairo-image-surface.c | 2 +- - src/cairo-region.c | 4 +++- - 3 files changed, 6 insertions(+), 2 deletions(-) - -commit 93b285dc2c9c9ec486e0096933c3611f73374fcb -Author: Søren Sandmann <sandmann@redhat.com> -Date: Thu Dec 11 15:50:15 2008 -0500 - - [region] Get rid of clip->has_region - - src/cairo-clip-private.h | 1 - - src/cairo-clip.c | 36 +++++++++++++++--------------------- - src/cairo-surface.c | 2 +- - 3 files changed, 16 insertions(+), 23 deletions(-) - -commit e3e1b35eb9eb3cf90d882a7452580f9efe00b89a -Author: Søren Sandmann <sandmann@redhat.com> -Date: Thu Dec 11 15:29:23 2008 -0500 - - [region] Make cairo_region_t a malloced object. - - src/cairo-analysis-surface.c | 26 +++---- - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 99 ++++++++++++------------- - src/cairo-region-private.h | 42 ++++++----- - src/cairo-region.c | 168 +++++++++++++++++++++++++++++++++--------- - src/cairo-surface-fallback.c | 65 ++++++++--------- - src/cairo-surface.c | 29 ++++---- - src/cairo-traps.c | 14 ++- - src/cairo-xlib-surface.c | 16 ++-- - src/cairoint.h | 2 +- - 10 files changed, 280 insertions(+), 183 deletions(-) - -commit c2c637cf1d89fc8fdcced4467d602a55ef0b14e0 -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Mar 28 04:26:10 2009 -0400 - - Simplify _cairo_clip_intersect_region() - - The intermediate intersection region is not necessary because if the - operation fails, clip->region will end up as a pixman error region. - - src/cairo-clip.c | 19 +++++-------------- - 1 files changed, 5 insertions(+), 14 deletions(-) - -commit fe10cd6467f2ec58532dc7c713bb6d08dab08442 -Author: Bertram Felgenhauer <int-e@gmx.de> -Date: Fri Mar 27 07:10:21 2009 +0100 - - [spline] fix wrong sign in _cairo_spline_bound. - - src/cairo-spline.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 53107de63a954105f8820e5b96e2a1956cb7af8c -Author: Bertram Felgenhauer <int-e@gmx.de> -Date: Thu Mar 26 04:56:27 2009 +0100 - - [in_fill] Correctly track current point in curve_to. - - When discarding a bezier path segment, we still need to update the - current point. - - src/cairo-path-in-fill.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 578b06a978d51dc3d1d844ee7eea9ddd8329cc8d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 23 10:56:43 2009 +0000 - - [perf] Use CAIRO_LDFLAGS - - Use CAIRO_LDFLAGS in order to pull in additional link options, such as - --coverage. - - perf/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ac30ced6135c5cf0fb34a67fe8f863030c1fbeb9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 22 19:02:27 2009 +0000 - - [test] Check for surface create failure. - - If the image surface creation fails, the data pointer will be NULL leading - to a segfault -- so check! - - test/user-font-mask.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit b5a4a2c4b1b1bab25e2ff0842e3c27205ec73d51 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 22 19:00:04 2009 +0000 - - [test] Early test for memfault. - - Check the error status within after each iteration in - solid-pattern-cache-stress. - - test/solid-pattern-cache-stress.c | 41 +++++++++++++++++++++++++++---------- - 1 files changed, 30 insertions(+), 11 deletions(-) - -commit 1a7b94f934f8c9a25e60d9466651b0b7fb919656 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Mar 20 11:06:29 2009 +0000 - - [test] Check for errors during get-path-extents. - - Need to check that an error was not raised on the context before checking - whether the extents match expectations. - - test/get-path-extents.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 3b545330887209c68128fca0d1bb40bf4927c2a6 -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Sat Mar 21 11:56:18 2009 -0700 - - [win32] Use _hypot instead of hypot - - The hypot symbol is deprecated on Win32, and nonexistent on Windows CE - - src/cairo-compiler-private.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 895fce1632069ddfb8c581d2b23b1b3552e35104 -Author: Stefan Klug <Klug.Stefan@gmx.de> -Date: Fri Mar 20 17:20:22 2009 -0400 - - [wince] Use the official _WIN32_WCE define instead of WINCE - - src/cairo-misc.c | 4 ++-- - src/cairoint.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 86a935de42318c4be92a657ce8e8c452693d4414 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri Mar 20 17:14:08 2009 -0400 - - [msvc] Fix definition of CAIRO_ENSURE_UNIQUE for non-x86 - - The current definition of CAIRO_ENSURE_UNIQUE uses x86 assembly so make sure we - only compile it when targeting x86. - - src/cairo-compiler-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c932a809d6484503d7ee267d934bbc87c8d44092 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 17 12:01:13 2009 +0000 - - [test] Propagate allocation failure. - - Check for memfaults during rel-path test. - - test/rel-path.c | 19 ++++++++++++++++--- - 1 files changed, 16 insertions(+), 3 deletions(-) - -commit 7db55b37d4aef188e04771b45076f6735507c209 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 17 11:58:16 2009 +0000 - - [test] Destroy pattern on error paths. - - Destroy the pattern after encountering an error in pattern-getters test. - - test/pattern-getters.c | 29 +++++++++++++++++++++++++---- - 1 files changed, 25 insertions(+), 4 deletions(-) - -commit dc176d88ac03ae71fc32abb27329a35650801d99 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 17 10:42:37 2009 +0000 - - [test] Trivial leak on error in show-glyphs-many. - - Free the allocated glyph array after failure. - - test/show-glyphs-many.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit a4b44ca89eb9975e6af2913e50ec3c3eb566cfdd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 17 14:56:42 2009 +0000 - - [pattern] Report the true error status from getters. - - As the getters actually return an error status, use it to report any - pre-existing error status on the pattern. - - src/cairo-pattern.c | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 496bbcf58233ceecfffc52ae5b1a3a1f07516c67 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Mar 17 19:46:25 2009 -0400 - - Make CAIRO_STATUS_LAST_STATUS public - - doc/public/tmpl/cairo-status.sgml | 1 + - src/cairo.h | 12 ++++++++++-- - src/cairoint.h | 6 ------ - 3 files changed, 11 insertions(+), 8 deletions(-) - -commit 922c108365b940dbabf23358189bbaa8602446c9 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Mar 17 19:22:31 2009 -0400 - - [twin] Reorganize matching code to better reflect the code in Pango - - Makes it easier to update later. - - src/cairo-font-face-twin.c | 179 +++++++++++++++++++++++++++++++++----------- - src/cairoint.h | 4 + - 2 files changed, 138 insertions(+), 45 deletions(-) - -commit 2b4044a36f8b156ca0e58b72614659324a9b022e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Mar 17 18:52:16 2009 -0400 - - [twin] Update parsed weights and stretches from Pango - - src/cairo-font-face-twin.c | 64 ++++++++++++++++++++++++++----------------- - 1 files changed, 39 insertions(+), 25 deletions(-) - -commit 3ec94f9b5917b8f71304c982bd153e5a810f3b12 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Mar 17 00:53:30 2009 -0400 - - Support compiling without fontconfig - - Adds a new, fake, fontconfig font backend. Fontconfig can be disabled - using --disable-fc, in which case the toy text API wont find fonts and - the internal font will always be used. - - Also defines the feature macro CAIRO_HAS_FC_FONT. The two fontconfig-specific - functions in cairo-ft.h depend on that macro now. - - boilerplate/Makefile.win32.features | 10 ++++++++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 ++ - build/configure.ac.features | 1 + - configure.ac | 26 +++++++++++++------- - doc/public/cairo-sections.txt | 1 + - doc/public/tmpl/cairo-ft.sgml | 9 +++++++ - doc/public/tmpl/cairo-status.sgml | 2 +- - src/Makefile.win32.features | 14 +++++++++++ - src/cairo-ft-font.c | 43 +++++++++++++++++++++++++++++----- - src/cairo-ft.h | 23 ++++++++++++------ - src/cairo-os2-surface.c | 6 +++- - src/cairo-path-fixed.c | 2 +- - src/cairo-scaled-font.c | 4 +- - src/cairo-xlib-display.c | 2 - - src/cairo-xlib-screen.c | 23 ++++++++---------- - 16 files changed, 125 insertions(+), 45 deletions(-) - -commit 0e7bcb5e3793771d50f7d391d7b1e538ef220a80 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 16 21:32:44 2009 +0000 - - [scaled-font] Improve comments. - - Grr. I thought I had merged this in with the previous commit... - - src/cairo-scaled-font.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 9c80392ac415e7f07c71261d280ac4376d3c8471 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 16 19:31:38 2009 +0000 - - [scaled-font] Lean and mean global glyph cache. - - Jeff Muizelaar pointed out that the severe overallocation implicit in the - current version of the glyph cache is obnoxious and prevents him from - accepting the trunk into Mozilla. Jeff captured a trace of scaled font - and glyph usage during a tp run and presented his analysis in - http://lists.cairographics.org/archives/cairo/2009-March/016706.html - - Using that data, the design was changed to allocate pages of glyphs from a - capped global pool but with per-font hash tables. This should allow the - glyph cache to have tight memory bounds with fair allocation according to - usage. Note that both the old design and the 1.8 glyph cache had - essentially unbounded memory constraints, since each scaled font could - cache up to 256 glyphs (1.8) or had a reserved page (old), with no limit - on the number of active fonts. Currently the eviction policy is a simple - random strategy, this gives a 'fair' allotment of the cache, but a LRU - variant might perform better. - - On a sample run of firefox-3.0.7 perusing BBC news in 32 languages: - 1.8: cache allocation 8190x, ~1.2 MiB; elapsed 88.2s - old: cache allocation 771x, ~13.8 MiB; elapsed 81.7s - lean: cache allocation 433x, ~1.8 MiB; elapsed 82.4s - - src/cairo-cache-private.h | 5 +- - src/cairo-cache.c | 39 ++--- - src/cairo-ft-font.c | 4 +- - src/cairo-hash-private.h | 6 +- - src/cairo-hash.c | 55 ------ - src/cairo-scaled-font-private.h | 6 +- - src/cairo-scaled-font.c | 396 ++++++++++++++++++++------------------- - src/cairo-types-private.h | 3 + - src/cairoint.h | 7 +- - 9 files changed, 232 insertions(+), 289 deletions(-) - -commit 121d4bb656755b7ca89065bf87e3e4e47c49c89d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Mar 16 19:42:47 2009 +0000 - - [scaled-font] Initialise original_font_face - - Eek, attempting to use+free an uninitialised pointer! - - src/cairo-scaled-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 2df498ba452b188f2f40413c91fec5e5ed9cf967 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Mar 5 23:26:44 2009 -0800 - - [gl] Use triangle fan instead of GL_QUADS for the single quad we draw. - - This saves the driver from converting the quad into tris on its own. We'd - rather be able to specify a rect as 2-3 points and use the rectangular - rendering feature that most of our hardware has, if it was possible, but - it isn't exposed in GL. - - src/cairo-gl-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9099c7e7307a39bc630919faa65bba089fd15104 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Mar 4 09:26:17 2009 +0000 - - [trace] Disable mark dirty tracing. - - Applications like firefox have a very conservative approach and mark - surfaces dirty before every render. As we record the image data every - time, firefox traces can grow very large with redundant data - so allow - the user to disable mark dirty tracing. - - util/cairo-trace/cairo-trace.in | 19 +++++++++++++++---- - util/cairo-trace/trace.c | 27 ++++++++++++++++++++------- - 2 files changed, 35 insertions(+), 11 deletions(-) - -commit addeb32c751ac080fe634ea6f83076d018944e4a -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Mar 3 12:20:47 2009 -0500 - - [pdf] Intialize 'interpolate' - - Intialize 'interpolate' to prevent a gcc warning. Do this instead of adding a - 'default' case to the switch statement so that we still get warnings if new - filter types are added. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a8158d443e6a4bafae28a46b883cbdcfd5789eec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 3 11:21:35 2009 +0000 - - [truetype] Move the sizeof asserts to compile time. - - Eliminate the need for a runtime test on the sizeof the private structures - by performing the check at compile time. This was provoked by Ginn Chenn - noting that the test was including a private header. - - src/cairo-truetype-subset.c | 15 ++++++++++ - test/Makefile.sources | 1 - - test/truetype-tables.c | 63 ------------------------------------------- - 3 files changed, 15 insertions(+), 64 deletions(-) - -commit e4b1f871e9cbb04590df5dc6f6f7854642fa0340 -Author: Ginn Chen <Ginn.Chen@Sun.COM> -Date: Tue Mar 3 10:27:11 2009 +0000 - - [configure] Detect mkdir variant with non-gcc compilers. - - It doesn't work for non GCC compiler right now, as "-Werror -Wall" is - an error to non GCC compiler. - - I swapped the sequence of build/configure.ac.system and build/ - configure.ac.warnings, then WARN_CFLAGS can be used. - - build/configure.ac.system | 2 +- - configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit f178f55e47013a92a47a24ac04b1041963b03976 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 3 10:25:05 2009 +0000 - - [test/any2ppm] Update the cairo-script-interpreter callback. - - Reflect the current prototype which now specifies the content to use when - creating the surface. - - test/any2ppm.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 694f2eea9feecfdc437e6964d1e758fab7315af9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Mar 3 10:24:25 2009 +0000 - - [test/any2ppm] Add feature checks for daemon() - - Add the feature checks for the presence of the daemon() function call. - - test/any2ppm.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 9304984f4e20beec7b4de6a4141e2fd489130006 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 1 10:10:24 2009 +0000 - - [path] Fix regression introduced with 005436 - - The order of the multiplication of the CTM and device_transform was - reversed. - - src/cairo-path.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b30de64a8ca3de7632696f45bdb580217bd9f8a1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Mar 1 10:05:16 2009 +0000 - - [test] Add regression test for 005436 - - Jeff Muizelaar found a regression in commit 005436 and submitted this - little test to exercise it. The essence of the bug appears to be wrt to - the product of the CTM and device transform matrices. - - test/Makefile.sources | 1 + - test/path-append.c | 81 ++++++++++++++++++++++++++++++++ - test/path-append.ps.ref.png | Bin 0 -> 4516 bytes - test/path-append.ref.png | Bin 0 -> 6165 bytes - test/path-append.test-fallback.ref.png | Bin 0 -> 6461 bytes - test/path-append.xlib-fallback.ref.png | Bin 0 -> 6357 bytes - test/path-append.xlib.ref.png | Bin 0 -> 6461 bytes - 7 files changed, 82 insertions(+), 0 deletions(-) - -commit e20f1a0c76f2185760ca3a7466e25de6beedeaac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 27 16:30:05 2009 +0000 - - [in-fill] Close the path, cf fill() - - In order for in-fill treat the path equivalently to a fill, we need to - close the path after interpretation. - - src/cairo-path-in-fill.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 102ddd37bb329d41241f434ede0f9cba8424e71e -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 26 16:04:49 2009 -0500 - - [win32] Include $(OPT) flags when linking cairo.dll - - This will pass in -Zi which causes the /DEBUG flag to be passed to the - linker keeping the debug information from being discarded during link. - - src/Makefile.win32 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit eb2a73ba6d290497cabb0f917c0375eea919178e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 24 20:27:36 2009 +0000 - - [ps] Check the status of _cairo_type3_glyph_surface_create() - - Doing so serves two purposes. The first is to do an early error check and - the second is to clearly initialise the status variable. - - src/cairo-ps-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 6eb0a9d97ff7eaaee69ca10e4081cb950a543ce3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Feb 15 21:27:29 2009 +0000 - - [scaled-font] Hold reference to original font face - - As noted by Carl during his LCA talk, caching of toy fonts was broken - because we create the scaled font using the implementation font face and - lose the reference to the containing font face that is cached by the toy - font face create routines. So the toy fonts were not being preserved for - the duration of the holdover scaled fonts and we recreated a new font - face, new scaled font and new glyph caches every time we needed a font. - - src/cairo-ft-font.c | 2 +- - src/cairo-scaled-font-private.h | 2 ++ - src/cairo-scaled-font.c | 17 +++++++++++++---- - src/cairo-toy-font-face.c | 1 + - 4 files changed, 17 insertions(+), 5 deletions(-) - -commit fe7d5323f5bc734e76179b74d68fcba9b924ba94 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 19 16:00:17 2009 -0500 - - Relanding: Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error() - - When using MSVC, _cairo_error() can be folded into other identical functions. - If that happens, _cairo_error isn't really useful anymore. Using the - CAIRO_ENSURE_UNIQUE macro makes sure this doesn't happen. - - Use __asm to serve as a line delimiter. This allows us to use the - __asm{} block in a macro. - - src/cairo-compiler-private.h | 24 ++++++++++++++++++++++++ - src/cairo.c | 1 + - 2 files changed, 25 insertions(+), 0 deletions(-) - -commit 78de0e045ec0c10708052ed48df228e786839ddb -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 19 15:45:11 2009 -0500 - - Revert "Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error()" - - This reverts commit 126824f5e6279f56dab0c040394b6c326b848cf7. - - It turns out MSVC doesn't handle line continuation characters in __asm{} - blocks very well, so revert for now until I come up with something that - works. - - src/cairo-compiler-private.h | 24 ------------------------ - src/cairo.c | 1 - - 2 files changed, 0 insertions(+), 25 deletions(-) - -commit 126824f5e6279f56dab0c040394b6c326b848cf7 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 19 13:31:55 2009 -0500 - - Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error() - - When using MSVC, _cairo_error() can be folded into other identical functions. If - that happens, _cairo_error isn't really useful anymore. Using the - CAIRO_ENSURE_UNIQUE macro makes sure this doesn't happen. - - src/cairo-compiler-private.h | 24 ++++++++++++++++++++++++ - src/cairo.c | 1 + - 2 files changed, 25 insertions(+), 0 deletions(-) - -commit d4227fc9126ffbb3a967aea1bc9795e7e64ee8e1 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 19 11:45:14 2009 -0500 - - [test] Fix assert on default font family in toy-font-face - - toy-font-face was checking that cairo_toy_font_face_get_family returned "" - which is CAIRO_FONT_FAMILY_DEFAULT when the freetype font backend is the - default. However, when other font backends are the default the returned family - is different. Therefore, instead of checking for "", we check for the appropriate - string depending on the backend. - - test/toy-font-face.c | 19 +++++++++++++++---- - 1 files changed, 15 insertions(+), 4 deletions(-) - -commit 06fa7a8386b267fdbd7635b952adc75a58f62584 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Feb 18 18:43:29 2009 -0500 - - Fix a const warning in _cairo_user_data_array_foreach() - - _cairo_user_data_array_foreach() was taking a function - with a void *key parameter instead of a const void *key - to match cairo_user_data_slot_t. - - src/cairo-array.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairoint.h | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit f7b3c9df5885a1cd7981ee12b91962bdbfff47af -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon Feb 16 22:28:32 2009 -0500 - - Add test/Makefile.sources - - This lets test/Makefile.am and test/Makefile.win32 share a common list of sources. - It also makes test/Makefile.win32 useful again. - - test/Makefile.am | 251 ++++--------------------------------------------- - test/Makefile.sources | 251 +++++++++++++++++++++++++++++++++++++++++++++++++ - test/Makefile.win32 | 125 +++++-------------------- - 3 files changed, 293 insertions(+), 334 deletions(-) - -commit e380beae5382df547a1b538de94e90c0e2339141 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Feb 16 14:01:43 2009 +0200 - - [sdl] Remove new backend. - - The SDL backend makes invalid assumptions about SDL_Surface locking - semantics and doesn't deal correctly with the unpremultiplied pixel - format supported by SDL. Removed as per discussion on the mailing list. - - http://lists.cairographics.org/archives/cairo/2009-February/016595.html - - boilerplate/Makefile.sources | 3 - - boilerplate/Makefile.win32.features | 10 - - boilerplate/cairo-boilerplate-sdl-private.h | 56 ---- - boilerplate/cairo-boilerplate-sdl.c | 69 ----- - boilerplate/cairo-boilerplate.c | 15 - - build/Makefile.win32.features | 1 - - build/Makefile.win32.features-h | 3 - - build/configure.ac.features | 1 - - configure.ac | 8 - - doc/public/tmpl/cairo-surface.sgml | 1 - - perf/Makefile.am | 4 - - perf/cairo-perf.c | 4 - - src/Makefile.sources | 3 - - src/Makefile.win32.features | 14 - - src/cairo-sdl-surface.c | 418 --------------------------- - src/cairo-sdl.h | 54 ---- - src/cairo.h | 2 - - test/Makefile.am | 4 - - test/cairo-test-runner.c | 4 - - test/get-clip.c | 1 - - 20 files changed, 0 insertions(+), 675 deletions(-) - -commit 79a72e63585d7fce7898f2c8bd997c6d88f8895f -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Mon Feb 16 05:44:15 2009 -0500 - - Delete _cairo_region_boxes_fini() - - src/cairo-region.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit f6daa664c1b2c894ba3baf2e7a72566bda1fd636 -Author: Søren Sandmann <sandmann@daimi.au.dk> -Date: Sun Feb 15 18:55:17 2009 -0500 - - Delete _cairo_region_get_boxes() in favor of _cairo_region_get_box() - - The _cairo_region_get_boxes() interface was difficult to use and often - caused unnecessary memory allocation. With _cairo_region_get_box() it - is possible to access the boxes of a region without allocating a big - temporary array. - - src/cairo-clip.c | 21 +++++++---------- - src/cairo-directfb-surface.c | 21 +++++++---------- - src/cairo-paginated-surface.c | 19 ++++++--------- - src/cairo-region-private.h | 10 ++------ - src/cairo-region.c | 39 ++++++++------------------------ - src/cairo-sdl-surface.c | 21 +++++++---------- - src/cairo-surface.c | 44 ++++++++++++++----------------------- - src/cairo-win32-surface.c | 48 +++++++++++++++++++--------------------- - src/cairo-xcb-surface.c | 26 +++++++++------------ - src/cairo-xlib-surface.c | 31 +++++++++++--------------- - 10 files changed, 112 insertions(+), 168 deletions(-) - -commit 54228cb5fe0c41b10f0ec4a206b5fac28823cde6 -Author: Eric Anholt <eric@anholt.net> -Date: Sun Feb 15 14:29:55 2009 -0800 - - [gl] Use textures and not fbo-based surfaces for image surface patterns. - - This cuts the BO allocation overhead for traps in more than half, and reduces - the load on the accelerator. - - src/cairo-gl-surface.c | 191 ++++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 176 insertions(+), 15 deletions(-) - -commit fcb13d262c5a09e56dc25c76103ef4ba623929ff -Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> -Date: Sun Feb 15 15:59:10 2009 -0500 - - Simplify region handling in xlib surface - - src/cairo-xlib-surface.c | 11 +++-------- - 1 files changed, 3 insertions(+), 8 deletions(-) - -commit b43e7aee98a8d69677f7e6d2584fe01f550f896b -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri Feb 13 12:15:23 2009 -0500 - - [wince] We don't need cairo_win32_tmpfile on Windows CE - - _cairo_win32_tmpfile() uses _open_osfhandle() which is not available - on Windows CE. However, Windows CE doesn't have the permisions problems - that necessitated _cairo_win32_tmpfile() in the first place so we can just - use tmpfile() on Windows CE. - - src/cairo-misc.c | 5 ++++- - src/cairoint.h | 2 +- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit fa66291c8862ed592fca469ceab0ac9b1d270835 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 28 14:22:58 2009 +0000 - - [perf] Test non-antialiased fill. - - Just because the i915 can special case such fills using a single-pass - tessellation in the stencil buffer. - - perf/fill.c | 21 +++++++++++++++++++++ - 1 files changed, 21 insertions(+), 0 deletions(-) - -commit aab9ed3432f0ea7b8b24990de4aa134bb599a3e5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 30 10:22:47 2009 +0000 - - [perf] Env variable to ignore similar targets whilst benchmarking. - - Use CAIRO_TEST_IGNORE_SIMILAR to skip similar targets. - - perf/cairo-perf.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 655f6987334b991763a5ab7746dbfd73c6b05f3e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 6 20:11:17 2009 +0000 - - [perf] Split can_run? into a separate precondition. - - Allow tests to skip unnecessary setup when pruning the list of perf cases. - - perf/box-outline.c | 3 +++ - perf/cairo-perf.c | 24 ++++++++++++++++-------- - perf/cairo-perf.h | 4 ++++ - perf/composite-checker.c | 3 +++ - perf/dragon.c | 3 +++ - perf/fill.c | 3 +++ - perf/intersections.c | 3 +++ - perf/long-dashed-lines.c | 3 +++ - perf/long-lines.c | 3 +++ - perf/mosaic.c | 3 +++ - perf/paint-with-alpha.c | 3 +++ - perf/paint.c | 3 +++ - perf/pattern_create_radial.c | 3 +++ - perf/pythagoras-tree.c | 3 +++ - perf/rectangles.c | 3 +++ - perf/rounded-rectangles.c | 3 +++ - perf/spiral.c | 3 +++ - perf/stroke.c | 3 +++ - perf/subimage_copy.c | 3 +++ - perf/tessellate.c | 3 +++ - perf/text.c | 3 +++ - perf/twin.c | 3 +++ - perf/unaligned-clip.c | 3 +++ - perf/world-map.c | 3 +++ - perf/zrusin.c | 3 +++ - 25 files changed, 89 insertions(+), 8 deletions(-) - -commit 798581a1b5a8a56ce9d16c5b21eab82851061732 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 30 22:12:49 2009 +0000 - - [perf] Extend range of testing. - - Primarily to test longer glyph runs, but also test large upper bounds for - strokes and fills. - - perf/cairo-perf.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 1522fac5c71708fc9e98e03da9f51926c1e3769c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 3 17:18:53 2009 +0000 - - [perf] Fix infinite loop in text - - The row would wrap-around with the character index, causing an infinite - loop when trying to fill a window of size 512x512 and above. - - perf/text.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 187e3473512e40fa1d046783e797ec3a198b09b2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 13 13:09:32 2009 +0000 - - [test] Free ref_name in fallback-resolution. - - Trivial leak of a few thousand bytes. - - test/fallback-resolution.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 005436758c5679f76cc462841678fb93d6c7e0ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 3 10:20:26 2009 +0000 - - [path] Inline path ops during append_to_context() - - By inlining the operations, and most significantly, precomputing the - combined user-to-backend matrix, we can achieve a speed up of over 50%, - which is a noticeable performance boost in swfdec - where append-to-path - accounts for over 35% [inclusive] of the time for a h/w accelerated - backend. - - src/cairo-path.c | 76 +++++++++++++++++++++++++++++++++++++++++------------- - 1 files changed, 58 insertions(+), 18 deletions(-) - -commit d295942b9d4da3be3318cd5fe2d3b0b1fe005d11 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 31 00:56:45 2009 +0000 - - Inline _cairo_restrict_value() - - This is one instance where the function call overhead dominated the - function call in both time and size. - - src/cairo-misc.c | 9 --------- - src/cairo-pattern.c | 32 ++++++++++++++++---------------- - src/cairo.c | 14 ++++++++------ - src/cairoint.h | 13 +++++++++++-- - 4 files changed, 35 insertions(+), 33 deletions(-) - -commit cc8a09567ca034e7d95e2ef8a3ec833b12c9f87a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 13 13:23:50 2009 +0000 - - [surface] Move the meta-data copy-on-snapshot to the generic layer. - - As pointed out by Paolo Bonzini, copying the meta data for a snapshot is - common for all backends and so should be handled by the generic layer. - - src/cairo-surface-fallback.c | 11 ----------- - src/cairo-surface.c | 30 +++++++++++++++++++++++++++--- - 2 files changed, 27 insertions(+), 14 deletions(-) - -commit adaf70a93f4449e85997bcde531b76c9044758ea -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 13 12:56:46 2009 +0000 - - [surface] Separate the mime-data from the user-data. - - Move the mime-data into its own array so that it cannot be confused with - user-data and we do not need to hard-code the copy list during - snapshotting. The copy-on-snapshotting code becomes far simpler and will - accommodate all future mime-types. - - Keeping mime-data separate from user-data is important due to the - principle of least surprise - the API is different and so it would be - surprising if you queried for user-data and were returned an opaque - mime-data pointer, and vice versa. (Note this should have been prevented - by using interned strings, but conceptually it is cleaner to make the - separation.) Also it aides in trimming the user data arrays which are - linearly searched. - - Based on the original patch by Adrian Johnson: - http://cgit.freedesktop.org/~ajohnson/cairo/commit/?h=metadata&id=37e607cc777523ad12a2d214708d79ecbca5b380 - - src/cairo-array.c | 36 ++++++++++++++++++++++++++++++++++++ - src/cairo-surface-fallback.c | 27 +++++++-------------------- - src/cairo-surface-private.h | 1 + - src/cairo-surface.c | 42 +++++++++++++++++++++--------------------- - src/cairoint.h | 14 ++++++++++++-- - 5 files changed, 77 insertions(+), 43 deletions(-) - -commit 2280de9d0282a599309ec12dc576bae54857f873 -Merge: 17ce858 de7270c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 13 10:08:21 2009 +0000 - - Merge branch '1.8' - -commit de7270cb1e9510cb230e80045c812fa68fcfa585 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Feb 13 10:03:22 2009 +0000 - - [cairo] Describe the restrictions upon cairo_set_tolerance() - - Truc Troung reported that the behaviour of - cairo_set_tolerance()/cairo_get_tolerance() was inconsistent with the - documentation, i.e. we failed to mention that the tolerance would be - restricted to the smalled fixed-point value. - - Add a sentence to the documentation that describes the restriction without - mentioning what that is... Hopefully that is sufficient detail to - accommodate the reporter, without exposing internal implementation details. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=20095 - Bug 20095 - The cairo_set_tolerance() function behavior is inconsistency - with the spec - - src/cairo.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 17ce8584e7142d13bd7a777c9570e5548a06a90c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Feb 12 18:26:57 2009 +0000 - - [NEWS] Add API changes. - - Scan the public headers for obvious additions. - - NEWS | 20 +++++++++++++++++++- - 1 files changed, 19 insertions(+), 1 deletions(-) - -commit 2df611a3810eb64c8ed22dfae5f3d3157eef7e6a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Feb 10 10:28:28 2009 +0000 - - [script] Expose a normal xlib window for replay - - Provide a visible surface for replaying scripts against. - - util/cairo-script/csi-replay.c | 122 +++++++++++++++++++++------------------ - 1 files changed, 66 insertions(+), 56 deletions(-) - -commit 8e1f103540392b17c51b4fb4b3c3480430cbc212 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 12 12:02:17 2009 -0500 - - Divert pclose to _pclose for MSVC - - Commit bf62798b1284533e28b78717dac8070ca6d29e54 added a diversion for - popen but not for pclose. This is needed for linking the boilerplate - with the test suite. - - src/cairo-compiler-private.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4c6e7a16032fb223f4224d4355c2ea046cd8fc4b -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 11 05:09:23 2009 -0800 - - [gl] Add support for constant color directly, not through a texture. - - src/cairo-gl-surface.c | 337 +++++++++++++++++++++++++++++++++++------------- - 1 files changed, 248 insertions(+), 89 deletions(-) - -commit 31fb7382d22c9293c093b60716ee4e393fa0d5cf -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 11 05:09:51 2009 -0800 - - [gl] Fix some memory leaks on boilerplate-based runs. - - boilerplate/cairo-boilerplate-gl.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit df96fc1f92b68ef3e76750d0891377980e039b09 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Feb 9 15:42:09 2009 -0800 - - [gl] Avoid re-binding the same draw buffer. - - The driver could be smarter and avoid a lot of the cost, but this is easy - and avoids needing much driver smarts. - - src/cairo-gl-surface.c | 30 ++++++++++++++++++++---------- - 1 files changed, 20 insertions(+), 10 deletions(-) - -commit fb6937565be558e7ff8ba3dd815a427721783cba -Author: Eric Anholt <eric@anholt.net> -Date: Mon Feb 9 15:30:21 2009 -0800 - - [gl] Add interface for creating surfaces from window backbuffers. - - src/cairo-gl-surface.c | 85 +++++++++++++++++++++++++++++++++++++++++++++-- - src/cairo-gl.h | 9 ++--- - 2 files changed, 85 insertions(+), 9 deletions(-) - -commit 6cc3d8dcc0fe418c56a519180163bd49fbdb9730 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Feb 9 12:30:20 2009 -0800 - - [gl] Fix unantialiased-shapes tests. - - src/cairo-gl-surface.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 23a8c58dc13bd9ff44f235bee8e4e7240831728a -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 5 11:00:59 2009 -0800 - - [gl] Fix infinite recursion on compositing A1 images. - - We could do this fast, but let's do it correct first. - - src/cairo-gl-surface.c | 28 ++++++++++++++++++++++++++++ - 1 files changed, 28 insertions(+), 0 deletions(-) - -commit b6dde667fa1c72c6da1970244c4f28c48a38f493 -Author: Eric Anholt <eric@anholt.net> -Date: Mon Feb 2 23:22:49 2009 -0800 - - [gl] Add support for composite and composite_trapezoids. - - This is a simple implementation that uses GL_ARB_texture_env_combine after - converting everything to GL surfaces (FBOs). - - src/cairo-gl-surface.c | 375 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 373 insertions(+), 2 deletions(-) - -commit 38a1061bbcf3e69acc05c35f2084d462b43f5477 -Merge: b3e2433 e7d4bc3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Feb 12 10:46:29 2009 +0000 - - Merge branch '1.8' - -commit e7d4bc3d864b1b42bb1cae031036ddf6a4445d3c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Feb 12 10:42:24 2009 +0000 - - [png] Correct documentation to avoid reference to NULL - - As pointed out by Truc Truong, - cairo_image_surface_create_from_png_stream() cannot return NULL and so the - documentation was incorrect. - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=20075 - Bug 20075 There is a misprint in the spec for - cairo_image_surface_create_from_png_stream() function - - src/cairo-png.c | 17 +++++++++++++++-- - 1 files changed, 15 insertions(+), 2 deletions(-) - -commit b3e2433f1e78e8799a9f57bfb6da108016687fc9 -Author: Søren Sandmann <sandmann@redhat.com> -Date: Wed Feb 11 17:55:15 2009 -0500 - - Correct the reference image for the rotate-image-surface-paint test - - test/rotate-image-surface-paint.ref.png | Bin 190 -> 191 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 41cbd935f9dba276db716e2c71ac21dc60505be9 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Feb 11 15:24:20 2009 -0500 - - [test] Add cairo_test_NaN and use it in place of strtod - - strtod("NaN") returns 0.0 with the MSVC runtime so we - need to generate NaN some other way. - - test/cairo-test.h | 15 +++++++++++++++ - test/invalid-matrix.c | 2 +- - test/user-font-rescale.c | 2 +- - 3 files changed, 17 insertions(+), 2 deletions(-) - -commit 70297f257d4dc0accb5183b806d43a033887acb7 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Feb 10 17:58:28 2009 -0500 - - [test] Add crtdbg.h include - - crtdbg.h is required for _CrtSetReportMode() and _CrtSetReportFile(). - - test/cairo-test-runner.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit b9f0c4b25223830ce73f7e3adef85a0e97a31c0e -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Feb 10 17:57:00 2009 -0500 - - Use _cairo_round() instead of round() - - MSVC doesn't have round() and the code probably wants - to round in the same direction regardless of whether - the values are negative or positive. - - src/cairo-font-face-twin.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit dffdbd85157395bceb27d30d6426aa47173f6a18 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Feb 10 17:53:39 2009 -0500 - - Add _cairo_round() - - _cairo_round() has the same behaviour as _cairo_lround() except - it returns a double instead of an integer. - - src/cairoint.h | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 41e46c7754fff3a99927979925300a7588b9962f -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Feb 10 11:44:20 2009 -0500 - - [test] Don't embed preprocessor directives inside macros - - MSVC can't handle this. GCC will warn with -pedantic, but I'm not - sure we want to enable that. - - test/user-font-mask.c | 11 ++++++----- - test/user-font-proxy.c | 10 +++++----- - test/user-font.c | 10 +++++----- - 3 files changed, 16 insertions(+), 15 deletions(-) - -commit fe40d3bdb0d0cb93169b935e44d14b15e014fa6d -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon Feb 9 23:43:04 2009 -0500 - - [test] Allocate glyph array with malloc - - Keeping it on the stack causes a stack overflow of Window's - default 1mb stack. - - test/show-glyphs-many.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 50f8c2e4f3407ef237afd94c7317b1e185ccc9dc -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon Feb 9 23:39:38 2009 -0500 - - [test] define isnan() on MSVC - - Needed for user-font-rescale.c - - test/cairo-test.h | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit dd9fc47418b86610d7896fcf585037c96beaa66f -Author: Jeff Muizelaar <jeff@infidigm.net> -Date: Mon Feb 9 16:31:08 2009 -0500 - - Remove zero size data array for compilation with MSVC - - MSVC doesn't support zero sized arrays very well. For example, zero - sized arrays in arrays. - - src/cairo-tor-scan-converter.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit a6c8f18a391407044b33340cf13c49368a2e810e -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon Feb 9 15:59:01 2009 -0500 - - [test] Avoid C99 designated initializers - - MSVC doesn't support these so we shouldn't use them. - - test/path-precision.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 3d2fcec948b93f75ba49b898633a84f60d419779 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Mon Feb 9 15:12:41 2009 -0500 - - [test] Define INFINITY on MSVC - - 1./0. produces a compiler error on MSVC so we'll use HUGEVAL instead. - - test/cairo-test.h | 3 --- - test/invalid-matrix.c | 4 ++-- - 2 files changed, 2 insertions(+), 5 deletions(-) - -commit 6fb4c6200c840d438e1c9cdd2c9e7b0f140863d8 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 5 10:29:01 2009 -0800 - - [gl] Clamp surface size to a minimum of (1,1) in create_similar. - - Fixes clip-zero test. - - src/cairo-gl-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit a8a40810275ff0a59f5767034372523d34fbbd1b -Author: Eric Anholt <eric@anholt.net> -Date: Thu Feb 5 09:43:38 2009 -0800 - - [gl] clear surfaces to transparent on creation - - src/cairo-gl-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit e7eb6dab12b9d622b80e4202d753324f7161b269 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 29 22:31:56 2009 -0800 - - [gl] Hook up fill_rectangles. - - First actual "acceleration" for cairogears. Actually slows things down since - we're now pingponging between cpu and gpu. - - src/cairo-gl-surface.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 118 insertions(+), 1 deletions(-) - -commit 2ad5c3fc8fdb5941bdedcda3c972b3bae426fb32 -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 4 13:10:47 2009 -0800 - - [gl] Add a shortcut from image to gl in clone_similar. - - src/cairo-gl-surface.c | 27 +++++++++++++++++++++++++++ - 1 files changed, 27 insertions(+), 0 deletions(-) - -commit d9d56bb2ed552dd40415af53105a98b9d6ba39ab -Author: Eric Anholt <eric@anholt.net> -Date: Wed Feb 4 13:06:31 2009 -0800 - - [gl] Make create_similar actually create similar instead of image. - - src/cairo-gl-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 90b30219b945d6cce941a1b702c9b789a60d8b27 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 29 22:27:39 2009 -0800 - - [gl] Replace all-software implementation with all-GL-read/drawpixels. - - src/cairo-gl-surface.c | 315 +++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 282 insertions(+), 33 deletions(-) - -commit c22ca79863a54b4293e607c8e4d515868c216842 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Feb 6 12:56:48 2009 -0500 - - Don't distribute cairo-features.h (#19992) - - Second time I fix this bug. Mabe we should add a test for it! - - src/Makefile.am | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit a55655a82de8dee0f171efb2f7dfb1da341ecdd6 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Feb 6 12:47:38 2009 -0500 - - [test] Fix "make dist" - - doc/public/tmpl/cairo-status.sgml | 1 + - test/Makefile.am | 1 - - 2 files changed, 1 insertions(+), 1 deletions(-) - -commit af5ca7249f7628a8b0758f51934e3c1f6d9f4f36 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Feb 5 16:46:50 2009 -0500 - - [test] Fix the definition of INFINITY - - In my defence, even with INFINITY as 0, I was seeing new asserts on win32. - Caught by Jeremy Lea. - - test/invalid-matrix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 235de8d7a492ccd132fb83f78d33b408bd76aec1 -Author: Eric Anholt <eric@anholt.net> -Date: Thu Jan 29 09:19:01 2009 -0800 - - [gl] Add basics for GL surface backend using test-fallback as base. - - boilerplate/Makefile.sources | 3 + - boilerplate/Makefile.win32.features | 10 + - boilerplate/cairo-boilerplate-gl-private.h | 59 ++++++ - boilerplate/cairo-boilerplate-gl.c | 124 ++++++++++++ - boilerplate/cairo-boilerplate.c | 25 +++ - build/Makefile.win32.features | 1 + - build/Makefile.win32.features-h | 3 + - build/configure.ac.features | 1 + - configure.ac | 7 + - perf/cairo-perf.c | 1 + - src/Makefile.sources | 4 + - src/Makefile.win32.features | 14 ++ - src/cairo-gl-surface.c | 287 ++++++++++++++++++++++++++++ - src/cairo-gl.h | 89 +++++++++ - src/cairo-mutex-list-private.h | 4 + - src/cairo.h | 4 +- - 16 files changed, 635 insertions(+), 1 deletions(-) - -commit 83ec4b16b7b9a27439fee2d84c50e30a1ec2d68c -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Feb 4 14:04:05 2009 -0500 - - Elaborate the meaning of arithmetic rounding as done by _cairo_lround() - - src/cairo-misc.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2676b3bdd6fbeef62d34c100718f76fe5bbe647d -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Feb 3 14:18:44 2009 -0500 - - [test] Define INFINITY if it hasn't been defined. - - This lets us use more of invalid-matrix on win32 - - test/cairo-test.h | 3 +++ - test/invalid-matrix.c | 22 ++-------------------- - 2 files changed, 5 insertions(+), 20 deletions(-) - -commit 6b0c2c8ba61b6fdaad4c77e1a7c02c13c70e03c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 31 11:58:19 2009 +0000 - - [directfb] Don't access the scaled_font->glyphs cache directly - - Not only does it no longer exist, but doing so bypassed the locking - mechanisms and sanity checks! - - Spotted by Lance Hepler. - - src/cairo-directfb-surface.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit d63c1ab3ffcb64220a05c80e674324f524f29dc2 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 31 22:10:57 2009 -0500 - - [util/malloc-stats] Do a single backtrace_symbols() call - - I was hoping that this may speed things up, but it didn't. :( - - util/malloc-stats.c | 58 +++++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 50 insertions(+), 8 deletions(-) - -commit 64d1c7587041f765b393e1802a10cce02b807ad1 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 31 21:34:21 2009 -0500 - - [util] Fix memset bug in malloc-stats - - util/malloc-stats.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -commit b02aeb367dc4bada5412798fa93ce74f3d861273 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 31 21:33:42 2009 -0500 - - [util] Don't link backtrace-symbols into malloc-stats - - On my rawhide machine, seems like the glibc backgrace-symbols is now as - good as our private backtrace-symbols. - - util/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7375f4c76bb169cc24d5d714520c337172d3cf69 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 30 21:54:56 2009 +0000 - - Trivial warning fixes. - - Cleanup a few compiler warnings about unused variables and mismatching - pointer types. - - src/cairo-bentley-ottmann.c | 1 - - src/cairo-ps-surface.c | 4 ++-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -commit f10eaadf89fa94172a81c05a59febab3f7e32396 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 30 21:50:24 2009 +0000 - - Revert "[png] Complete the idempotent read_png() -> write_png()" - - This reverts commit 564d64a1323c5cbcde2dd9365ac790fe8aa1c5a6. - - In hindsight, and with further discussion with Jeff Muizelaar, this - behaviour of using the stored contents from the mime-data is completely - the opposite of the users' expectations. When the user calls - cairo_surface_write_to_png(), usually in the course of debugging their - rendering code, they expect the precise contents of the surface to be - saved. - - src/cairo-png.c | 14 -------------- - 1 files changed, 0 insertions(+), 14 deletions(-) - -commit dd11d905a54a123ddf619e5f0194fb1800ba643d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 30 10:09:29 2009 +0000 - - [util] Use a hash-table for malloc-stats. - - At Behdad's request, convert the array of allocators into a simple hash - table (large static number of buckets + chaining) in order to speed up - malloc profiling. - - util/malloc-stats.c | 150 +++++++++++++++++++++++++++++++++++---------------- - 1 files changed, 103 insertions(+), 47 deletions(-) - -commit 322fb00066cc4655122fcf7d738a0cbbe46fcdd1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 22:05:06 2009 +0000 - - [test] Compile again without memfault. - - Hide the valgrind macro when not using memfault. - - test/cairo-test.c | 26 ++++++++++++++++---------- - 1 files changed, 16 insertions(+), 10 deletions(-) - -commit 5e6d25e204b681c5d5fba90abfe4d7401f23460f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 20:47:09 2008 +0000 - - [skiplist] Provide an initial stack allocated pool. - - Since we only need to allocate elts for intersection events and edges, the - number of elts in flight at any one time is actually quite small and can - usually be accommodated from an embedded pool. - - src/cairo-bentley-ottmann.c | 33 ++++++++++----------------------- - src/cairo-skiplist-private.h | 9 +++++---- - src/cairo-skiplist.c | 13 ++++++------- - 3 files changed, 21 insertions(+), 34 deletions(-) - -commit dd4276c6618aa250637e4499bc7cb0a35b24448c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 30 13:49:24 2008 +0000 - - [stroker] Rectilinear dashing. - - Extend the rectilinear stroker to handle dashes, so that for pixel-aligned - dashed strokes we completely avoid tessellation overhead. - - src/cairo-matrix.c | 3 +- - src/cairo-path-stroke.c | 492 +++++++++++++++++++++++++------ - src/cairo-pen.c | 11 +- - src/cairo-stroke-style.c | 18 +- - src/cairoint.h | 11 +- - test/Makefile.am | 4 +- - test/leaky-dashed-rectangle.pdf.ref.png | Bin 0 -> 347 bytes - test/leaky-dashed-rectangle.ps.ref.png | Bin 0 -> 444 bytes - test/leaky-dashed-rectangle.ps2.ref.png | Bin 444 -> 0 bytes - test/leaky-dashed-rectangle.ps3.ref.png | Bin 444 -> 0 bytes - test/leaky-dashed-rectangle.ref.png | Bin 366 -> 347 bytes - 11 files changed, 437 insertions(+), 102 deletions(-) - -commit 7f95288c03a400bf770165d427ef623d924b3b47 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 09:47:01 2009 +0000 - - [ft] Improve error status propagation. - - Propagate the error status from deep within the bowels, in order to reduce - the number of duplicate _cairo_error() and generally clean up the return - values. - - src/cairo-ft-font.c | 65 +++++++++++++++++++++++++-------------------------- - 1 files changed, 32 insertions(+), 33 deletions(-) - -commit 53bd2ae2ce27f9b954f34bc9921d798c9a074125 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 21:36:27 2009 +0000 - - [ft] Distinguish fatal backend errors whilst constructing scaled fonts. - - We now have the ability to distinguish an error case where the backend is - left in an inconsistent state from a transitory error. For the former we - need to report the error condition via the return value, which will be - propagated to the font-face. For the latter we just construct an in-error - scaled font nil-object which is passed back to the user. - - src/cairo-ft-font.c | 38 ++++++++++++++++++++++++++------------ - 1 files changed, 26 insertions(+), 12 deletions(-) - -commit f17aeedab31753974cce027f92571107425b1bcd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 21:11:41 2009 +0000 - - [scaled-font] Differentiate fatal error when creating fonts - - We only want to set the error state on the backend when it implies that - the font-face is in an inconsistent state. For example, this may be due to - a locking error in the backend or that we have detected a corrupt font. - - In contrast, if we merely fail to allocated the scaled font then we just - wish to return that error to the user, without making the font-face itself - inert. - - src/cairo-scaled-font.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 58cab06c4c2c49bbecb11efaae6b41d30c06eff0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 20:52:29 2009 +0000 - - [scaled-font] Guard against invalid matrices when creating the scaled font. - - Check the user input for validity before passing the values on to the - backend. Currently the error is detected by the backend and the error is - propagated onto the font-face. - - src/cairo-scaled-font.c | 22 ++++++++++++++++++++-- - 1 files changed, 20 insertions(+), 2 deletions(-) - -commit 97c88f2af04b6bc5161fa2b567b5e922d7fd326a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 20:51:02 2009 +0000 - - [surface] Fix memleak of along set_mime_data() error path - - Free the mime_data holder if we fail to attach it to the surface. - - src/cairo-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit d20e5fc2d95c61ab04e085bf3a99d2cb958421a5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 15:08:58 2009 +0000 - - [ps] Free images after emitting patterns. - - Ensure that the temporary images are freed after we finish with the - pattern. - - Note that we are using 3 members of the surface for temporary storage - whilst emitting patterns, this should be reviewed. - - src/cairo-ps-surface-private.h | 3 +++ - src/cairo-ps-surface.c | 18 ++++++++++++++++-- - 2 files changed, 19 insertions(+), 2 deletions(-) - -commit e6102dbe028ca93db936b2f4cd6368e2ba0a2209 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 14:00:13 2009 +0000 - - [png] Avoid a double free of the memory stream after error. - - _cairo_memory_stream_destroy() finalizes the stream even if the stream was - in error and that error is reported back to the caller - so ensure we - don't try to free the stream again. - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0f3e366f8bbbaa80b518eb1b0297a6122901ce66 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 26 10:54:45 2009 +0000 - - [font-face] Close a race when resurrecting fonts. - - Paul Messmer provided a thorough analysis of a race between destroying the - final reference on a font and a concurrent recreation of the font - - demonstrating how it is possible for the create() to return the font that - was in the process of being freed. - - To stop the race, we need to recheck the reference count upon taking the - mutex guarding the hash table. - - src/cairo-ft-font.c | 6 ++++++ - src/cairo-toy-font-face.c | 6 ++++++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -commit 312b5680a5754c8e7ee1332206b81449cf9bf8a3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 21:13:15 2009 +0000 - - [cff-subset] Free ps_name. - - Ensure ps_name is freed along error paths and by the normal destructor. - - src/cairo-cff-subset.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 5176507fcb61ae1ec1143aa0b6b098bc92575c48 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 13:37:54 2009 +0000 - - [truetype] Free font name. - - Remember to free the font name on destruction. - - src/cairo-truetype-subset.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ab0ac1b8a84b0d259602f0029a3b5552466f35a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 09:45:11 2009 +0000 - - [truetype] Initialise font_name - - Ensure the font_name is initialized to NULL. - - src/cairo-cff-subset.c | 2 ++ - src/cairo-truetype-subset.c | 1 + - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit 8388af137841679b7c510980daf3cec1427b6e6b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 09:50:38 2009 +0000 - - [test] Trivial fixes for error paths. - - Kill a few leaks along error paths in the test code. - - test/create-from-png-stream.c | 36 ++++++++++++++++++++++++++++-------- - test/mime-data.c | 4 ++++ - 2 files changed, 32 insertions(+), 8 deletions(-) - -commit 3752f690b467432ab5b1058d450cb79d719a794a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 09:49:41 2009 +0000 - - [test] Suppress suppressed memfault report - - Check to see if there are any *unsuppressed* memfaults before declaring - unreported faults. - - test/cairo-test.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 8dc4c0da9b13b16c593e874d59c13a89a77a2481 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 13:17:24 2009 +0000 - - [toy-font] Fix unwind behaviour following error during construction. - - We failed to cleanup the font face correctly after an allocation failure - during _cairo_toy_font_face_init() leading to memleaks and live entries - being left in the font-face hash tables. - - src/cairo-toy-font-face.c | 43 +++++++++++++++++++++---------------------- - 1 files changed, 21 insertions(+), 22 deletions(-) - -commit 1d52fbc8f4f70e9e2419a6ed66cd907552d1d13b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 12:51:52 2009 +0000 - - [tessellator] Memleak on error path. - - Add a missing _cairo_skip_list_fini() after failure to allocate the - events. - - src/cairo-bentley-ottmann.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 6b5d2bf1a742b34a58d65f188fe15ffbf2f83118 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 10:42:42 2009 +0000 - - [trace] Comment out the redundant wrapping of FT_Open_Face() - - Remove the left-over debugging spew, but leave a comment to hopefully - clarify the situation with wrapping FT_Open_Face(). - - util/cairo-trace/trace.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit faa004033cde21cd81890c7f82abae8eb766bb4b -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jan 22 11:52:54 2009 +1100 - - cairo-trace: Print name of trace file. - - It's just a lot easier to use cairo-trace if it tells you - what file it just created. - - util/cairo-trace/trace.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit d108b2777fcd6ef4fa45aeeef457dc58522e325b -Author: Daniel Holbert <dholbert@mozilla.com> -Date: Fri Jan 23 10:18:48 2009 +0000 - - Spelling corrections: s/it's/its/ - - As a fun itch to scratch, I've been fixing incorrect uses of the - contraction "it's" in comments within the mozilla source tree (tracked - in https://bugzilla.mozilla.org/show_bug.cgi?id=458167 ), and I ran - across 6 instances of this typo in mozilla's snapshot of cairo. - - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-ft-font.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-mutex-impl-private.h | 2 +- - src/cairo-pdf-operators.c | 2 +- - src/cairo-surface-fallback.c | 2 +- - 5 files changed, 5 insertions(+), 5 deletions(-) - -commit 6394ec3048f31b867d9588853fa400c6c630c6f1 -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Mon Dec 15 09:32:43 2008 +0100 - - [surface] add CAIRO_STATUS_INVALID_SIZE - - Adds an error code replacing CAIRO_STATUS_NO_MEMORY in one case where it - is not really appropriate. CAIRO_STATUS_INVALID_SIZE is used by several - backends that do not support image sizes beyond 2^15 pixels on each side. - - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-misc.c | 4 +++- - src/cairo-os2-surface.c | 9 +++++---- - src/cairo-quartz-image-surface.c | 5 +++-- - src/cairo-quartz-surface.c | 4 ++-- - src/cairo-spans.c | 2 ++ - src/cairo-surface.c | 1 + - src/cairo-xlib-surface.c | 7 +++---- - src/cairo.h | 6 ++++-- - src/cairoint.h | 2 +- - 9 files changed, 24 insertions(+), 16 deletions(-) - -commit 46acfd2e85dd6f7a73e1172d363d509c769376f2 -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Tue Dec 23 08:31:30 2008 +0100 - - [glitz] use image fallback if the cairo_content_t is unsupported - - The agreement on the mailing list was that returning NULL is the right - thing to do, and indeed the callers of _cairo_glitz_surface_create_similar - are prepared to receive NULL and return CAIRO_STATUS_INT_UNSUPPORTED in - that case. - - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - - src/cairo-glitz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 01d20b79daf0abe0f69ccec4ecd5122c5bfe9a4e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 23 10:09:37 2009 +0000 - - [scaled-font] Fix up syntax in doc comments - - The old NULL vs %NULL conflict. - - src/cairo-scaled-font-subsets-private.h | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit aaec63d48386ec825cd4d6e67b6adf7c5fd3b167 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 21 15:04:47 2008 +0000 - - [scaled-font] Global glyph cache - - Currently glyphs are cached independently in each font i.e. each font - maintains a cache of up to 256 glyphs, and there can be as many scaled fonts - in use as the application needs and references (we maintain a holdover - cache of 512 scaled fonts as well). - - Alternatively, as in this patch, we can maintain a global pool of glyphs - split between all open fonts. This allows a heavily used individual font - to cache more glyphs than we could allow if we used per-font glyph caches, - but at the same time maintains fairness across all fonts (by using random - replacement) and provides a cap on the maximum number of global glyphs. - - The glyphs are allocated in pages, which are cached in the global pool. - Using pages means we can exploit spatial locality within the font - (nearby indices are typically used in clusters) to reduce frequency of small - allocations and allow the scaled font to reserve a single MRU page of - glyphs. This caching dramatically reduces the cairo overhead during the - cairo-perf benchmarks, and drastically reduces the number of allocations - made by the application (for example browsing multi-lingual site with - firefox). - - boilerplate/cairo-boilerplate.c | 5 +- - src/cairo-cache-private.h | 8 + - src/cairo-cache.c | 36 +++-- - src/cairo-hash-private.h | 4 + - src/cairo-hash.c | 117 +++++++++++---- - src/cairo-mutex-list-private.h | 1 + - src/cairo-scaled-font-private.h | 6 +- - src/cairo-scaled-font.c | 306 ++++++++++++++++++++++++++++----------- - src/cairoint.h | 9 +- - 9 files changed, 351 insertions(+), 141 deletions(-) - -commit 54f6a49ebb18cf396823d0d70b95e4e264142171 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 19 15:36:29 2009 +0000 - - [bounds] Skip spline evaluation based on bounding bbox of control points. - - The bounding polygon of the control points, defines the extents of the - spline. Therefore if the control points are entirely contained within the - current path extents, so is the spline and we do not need to evaluate its - tight bounds. - - src/cairo-path-bounds.c | 21 +++++++++++++++++++-- - 1 files changed, 19 insertions(+), 2 deletions(-) - -commit e217c4da7bc5c4817e0d829ff61dd2bd5b3145a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 19 15:28:05 2009 +0000 - - [in-stroke] Check point against extents before computing path. - - We can avoid tessellating the path entirely by first checking whether the - query point is inside the path extents. - - src/cairo-gstate.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 48f9a0e6da0dd24ea9c809876ef3c745dcfd0d52 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 15 00:26:03 2009 +0000 - - [spline] Correct the definition of a cubic Bezier curve. - - Add the missing coefficients for p1 and p2 so the derivation of the - derivative and the solution for its inflection points stands correct. - - src/cairo-spline.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit ee7ac5681fa6a74b68beeae667d96d1421050fc9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 21 12:04:06 2009 +0000 - - [path] A degenerate curve_to becomes a line_to. - - Be consistent. - - src/cairo-path-fixed.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 778ced4879b09f7482bd41c398bf2d984754ed0b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 14 18:55:32 2009 +0000 - - [path] Rename _cairo_path_fixed_approximate_extents() - - Rename approximate_extents() to approximate_clip_extents() so that it is - consistent with the fill and stroke variants and clearer under what - circumstances you may wish to use it. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-clip.c | 4 ++-- - src/cairo-path-bounds.c | 4 ++-- - src/cairo-surface-fallback.c | 2 +- - src/cairoint.h | 4 ++-- - 5 files changed, 8 insertions(+), 8 deletions(-) - -commit 75f7c420b624049c1f6c51795679f8029cd2231d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 21 13:09:41 2009 +0000 - - [perf] Remove a redundant clear during source init. - - After a short wild goose chase to see why - cairo_image_surface_fill_rectangles() was appearing in the profile, - tweak init_and_set_source_surface() to remove the redundant clear and - to propagate any errors in the auxiliary context. - - perf/cairo-perf-cover.c | 7 ++----- - 1 files changed, 2 insertions(+), 5 deletions(-) - -commit 706f6de68da65911f434d2065dcb143649fa793e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jan 18 16:47:59 2009 +0000 - - [perf] Add another variation on the many-rectangles case - - This variation aims to show the difference between calling fill once - per-rectangle, or once for all rectangles. - - perf/rectangles.c | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit ff5d37a8ad063e84e88f453a403715bc85f8a3ec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 29 10:09:11 2009 +0000 - - [mutex] Civilise the comment. - - Note bene that Behdad does not like people shouting. - - src/cairo-mutex-impl-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f4ff6128d7fb6e4b5ba361a597fc6c0c88d5ec00 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Jan 28 17:16:32 2009 -0500 - - Avoid "empty body in an if-statement" warning - - Use '(void)expr;' instead of 'if (expr) ;' to avoid getting the warning. - 'if (expr) {}' is an option, however '(void)expr;' seems like a more common - idiom and getting warnings for __attribute__((warn_unsed_result)) functions is - probably prefered. - - src/cairo-mutex-impl-private.h | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 41feeedcc14bf8caef3c039de49f4f28143712c7 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Dec 3 23:58:22 2008 +1030 - - Use PS font name in PS TrueType fonts - - src/cairo-ps-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit b7a9e1d4ac3972bc3d215070124b6a9eda68d3e3 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Dec 3 23:58:05 2008 +1030 - - Embed full font name in PDF TrueType and CFF fonts - - if the full font name was available in the font. - - src/cairo-pdf-surface.c | 32 ++++++++++++++++++++++++-------- - 1 files changed, 24 insertions(+), 8 deletions(-) - -commit 6f2db9a4b07cde2c4932ea481228abc248e90145 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Dec 3 23:57:38 2008 +1030 - - Use PS font name in CFF and TrueType PDF font subsets - - James Cloos found that the font name in embedded fonts should be the - PostScript font name (nameID=6 in the name table). - - http://lists.cairographics.org/archives/cairo/2008-December/015919.html - - src/cairo-cff-subset.c | 70 ++++++++++++++-------- - src/cairo-pdf-surface.c | 16 +++--- - src/cairo-scaled-font-subsets-private.h | 19 +++++-- - src/cairo-truetype-subset.c | 97 ++++++++++++++++++++++--------- - 4 files changed, 136 insertions(+), 66 deletions(-) - -commit 2ed08f7801a2af27e35afcf57f00f4bf5d48384a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Dec 3 23:56:01 2008 +1030 - - Factor out duplicate code in truetype and cff subsetting - - The code for reading the font name from the name table has been moved - to a new function: _cairo_truetype_read_font_name(). - - src/cairo-cff-subset.c | 60 ++----------- - src/cairo-scaled-font-subsets-private.h | 18 ++++ - src/cairo-truetype-subset.c | 149 ++++++++++++++++++------------- - 3 files changed, 114 insertions(+), 113 deletions(-) - -commit 1deb1e451022b9dd5aa6ecb0b580b006047b630e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Nov 25 23:11:01 2008 +1030 - - PDF: Include subset tag in font name - - PDF requires font names of subsetted fonts to be preprended with - "XXXXXX+" where XXXXXX is a sequence of 6 uppercase letters unique the - font and the set of glyphs in the subset. - - src/cairo-pdf-surface.c | 112 +++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 104 insertions(+), 8 deletions(-) - -commit c4e54629bb444ed3e850ca8deec175936b90c4e4 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Jan 22 12:26:55 2009 +1100 - - Add details to test/COPYING about license of bundled fonts. - - Just the public-doamin 6x13.pcf file for now, but Adrian will - be bundling more soon. - - test/COPYING | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 6801f28f6dfeb21eec44052e75156e9d2b82422e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 14 13:59:28 2009 +0000 - - [perf] Add a utility to compare backends. - - A minor variation on cairo-perf-diff-files that compares tests with the - same name for multiple backends. - - perf/.gitignore | 1 + - perf/Makefile.am | 8 +- - perf/cairo-perf-compare-backends.c | 393 ++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-diff-files.c | 2 +- - perf/cairo-perf-graph-files.c | 2 +- - perf/cairo-perf-report.c | 43 ++++- - perf/cairo-perf.h | 9 +- - 7 files changed, 448 insertions(+), 10 deletions(-) - -commit 4c79cd480db1cf10b6018bce3ea966587efc6081 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Jan 13 12:52:52 2009 +0000 - - [perf] Tweak dragon to hit fill_rectangles(). - - Add a second dragon path that is pixel-aligned and uses a solid pattern, - so that it can be drawn using fill-rectangles. - - perf/dragon.c | 42 +++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 41 insertions(+), 1 deletions(-) - -commit de9e6b5a3f4e4752e0f99e3ae20ac263a5aae4bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 12 01:00:30 2009 +0000 - - [perf] Cover linear gradient with 3 stops. - - The i915 is able to special case gradients with just 2 color stops to - avoid creating temporary gradient textures, so add a 3 stop linear - gradient to compare the speed difference. - - perf/cairo-perf-cover.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 36 insertions(+), 0 deletions(-) - -commit 7cbc55f21624159dfa58a9a50ec004af9368ab3d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 10 00:12:06 2009 +0000 - - [perf] Add scaled similar surface sources. - - Cover the similar source with min/mag scale factors as well, so we can - compare the performance impact with scaled image sources. This is useful - to distinguish between transport overhead and transform cost. - - perf/cairo-perf-cover.c | 44 ++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 40 insertions(+), 4 deletions(-) - -commit afce1cfe987eeec6516aed1eb8fd97c2d3b9b07b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 9 14:22:36 2009 +0000 - - [scaled-font] Avoid repeated lookup of the same unicode during text->glyphs - - Performing the unicode to index is quite expensive, the - FcFreeTypeCharIndex() taking over 12% in the cairo-perf text benchmarks. - By adding a simple cache of translated unicode indices, we save around 25% - of the lookups during benchmarks, with a relative reduction in runtime. - - src/cairo-scaled-font.c | 63 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 41 insertions(+), 22 deletions(-) - -commit 49eca78a4265432e285af58435219e8b804b38bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Jan 12 12:42:46 2009 +0000 - - [test] Add a huge-radial test case. - - Also test the handling of radial gradients with large radii. - - test/Makefile.am | 11 +++-- - test/huge-linear.c | 67 +++++++++++++++++++++++++++++++++ - test/huge-linear.ps3.ref.png | Bin 0 -> 1786 bytes - test/huge-linear.ref.png | Bin 0 -> 1619 bytes - test/huge-pattern.c | 65 -------------------------------- - test/huge-pattern.pdf.argb32.ref.png | Bin 2430 -> 0 bytes - test/huge-pattern.pdf.ref.png | Bin 2716 -> 0 bytes - test/huge-pattern.pdf.rgb24.ref.png | Bin 2817 -> 0 bytes - test/huge-pattern.ps3.ref.png | Bin 1786 -> 0 bytes - test/huge-pattern.ref.png | Bin 1619 -> 0 bytes - test/huge-radial.c | 69 ++++++++++++++++++++++++++++++++++ - test/huge-radial.ps3.ref.png | Bin 0 -> 18449 bytes - test/huge-radial.ref.png | Bin 0 -> 41702 bytes - 13 files changed, 142 insertions(+), 70 deletions(-) - -commit 7709d1d9d43a42dd8f9293f18141c57c76ca0970 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Jan 7 21:12:21 2009 +0000 - - [test] Add fill-image. - - A filled equivalent of stroke-image, that checks that the pattern - matrices are applied correctly during fills - useful with the - segregation between fills and strokes introduced by spans. - - test/Makefile.am | 2 + - test/fill-image.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++ - test/fill-image.ref.png | Bin 0 -> 1317 bytes - 3 files changed, 85 insertions(+), 0 deletions(-) - -commit 5605e4bfcd0b6e3e34eed3785bc8ae51b24a7385 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Jan 4 11:26:45 2009 +0000 - - [test] Propagate failure from painting large-source-roi - - Use cairo_get_target() to propagate any failure when creating the - large-source. - - test/large-source-roi.c | 28 ++++++++++++++++++++-------- - 1 files changed, 20 insertions(+), 8 deletions(-) - -commit 59a14f622389ae3f34f93c78b709df2ad6d1d624 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Jan 10 13:09:06 2009 -0500 - - Comment win32 maintainer-clean files again - - Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit cc5119173918623ce13363f4b25cd06076fc3fbc -Author: Søren Sandmann Pedersen <sandmann@redhat.com> -Date: Sat Jan 10 12:13:40 2009 -0500 - - Uncomment win32 maintainer-clean files to make Makefile.am syntactically correct - - Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 06deaa98b67f9e674a6933a8f54dae6a45faf6ff -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 9 15:55:24 2009 -0500 - - [build] Include all generated win32 build files in the repo - - So a git clone can be built on win32. The files only change after adding - new backends. - - Makefile.am | 4 +- - boilerplate/.gitignore | 2 +- - boilerplate/Makefile.am | 2 +- - boilerplate/Makefile.win32.features | 233 ++++++++++++++++++++++++++ - build/.gitignore | 4 +- - build/Makefile.win32.features | 22 +++ - build/Makefile.win32.features-h | 70 ++++++++ - src/.gitignore | 3 +- - src/Makefile.am | 2 +- - src/Makefile.win32.features | 311 +++++++++++++++++++++++++++++++++++ - 10 files changed, 644 insertions(+), 9 deletions(-) - -commit a5c1cdf2b030959309e1645bd115f058f1367296 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Nov 13 12:11:12 2008 +0200 - - [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents. - - This fixes the clip-all test case crashing for me. - - src/cairo-clip.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8157bc8a2dc0d555606d19ad52ae7a603471edd6 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sun Jan 4 04:14:28 2009 +0200 - - [test] Stress test using large source images. - - This test attempts to trigger failures in those backend clone_similar - methods that have size restrictions on the resulting image. It also - triggers errors in scaling down large image surfaces as the image - backend also fails this test. - - test/Makefile.am | 2 + - test/large-source-roi.c | 64 +++++++++++++++++++++++++++++++++++++++++ - test/large-source-roi.ref.png | Bin 0 -> 102 bytes - 3 files changed, 66 insertions(+), 0 deletions(-) - -commit 388ae177e4100698289819429fa1f8e6958d1c60 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 3 22:51:28 2009 +0000 - - [boilerplate] Remove CAIRO_BOILERPLATE_LOG() - - The variadic macro is only used within boilerplate/ so replace it with a - simple, and portable, call to fprintf. - - boilerplate/cairo-boilerplate-beos.cpp | 19 +++---------------- - boilerplate/cairo-boilerplate-glitz-agl.c | 10 +++++----- - boilerplate/cairo-boilerplate-glitz-glx.c | 6 +++--- - boilerplate/cairo-boilerplate-glitz-wgl.c | 10 +++++----- - boilerplate/cairo-boilerplate-system.c | 16 ++++++++-------- - boilerplate/cairo-boilerplate-xcb.c | 4 ++-- - boilerplate/cairo-boilerplate.h | 4 ---- - test/cairo-test.h | 1 - - 8 files changed, 26 insertions(+), 44 deletions(-) - -commit 5f816ccd25d1cd303fc1e9e44e80c1207b2a424a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 3 22:30:55 2009 +0000 - - [boilerplate] Redefine DEBUG() for portability concerns - - Behdad warned that using an empty variadic macro was non-portable. - - boilerplate/cairo-boilerplate-xlib.c | 18 +++++++++--------- - boilerplate/cairo-boilerplate.h | 2 +- - 2 files changed, 10 insertions(+), 10 deletions(-) - -commit acb2717372f3862ddbde8cfdc814132808b71f86 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 3 21:50:55 2009 +0000 - - [quartz] Define RTLD_DEFAULT - - RTLD_DEFAULT is a gnu-ism (at least according to the manpage on my linux - system) so declare _GNU_SOURCE before including dlfcn.h and failing that - provide our own definition. - - src/cairo-quartz-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ff1f5de5511ba0b7842b53223c26986e4bcdc38a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Jan 3 11:44:58 2009 +0000 - - [boilerplate] Suppress xlib warnings on stderr - - If we cannot test the xlib backend simply because there is no Display, - just report UNTESTED and do not clutter the output with superfluous - warnings [see the output from the buildbots for an example]. However, - keep the warnings around so that a developer can re-enable them - and so simply move them to a new "lower priority" macro. - - boilerplate/cairo-boilerplate-xlib.c | 18 +++++++++--------- - boilerplate/cairo-boilerplate.h | 4 ++++ - 2 files changed, 13 insertions(+), 9 deletions(-) - -commit 75538962c8af11b1ec669caca6259b7769b5cc1d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 17:45:26 2009 +0000 - - [boilerplate] Check the return of pclose() - - pclose() returns the child exit status, so we can use that to detect - errors in the convertor process. - - boilerplate/cairo-boilerplate.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 333158ec85cf3c610cc8965fc3f99d72b534cc2e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 15:36:39 2009 +0000 - - [configure] Replace awk comparator with an aclocal version - - As reported in https://bugs.freedesktop.org/show_bug.cgi?id=19283, the - fallback freetype version compare is broken inside the configure script as - the $1-$3 arguments are interpreted as the script is constructed. To avoid - making that awk comparison any more complicated, we import a version compare - from the autoconf archives - such that we have a reusable macro for the - furture. - - build/aclocal.compare.m4 | 162 ++++++++++++++++++++++++++++++++++++++++++++++ - configure.ac | 18 ++---- - 2 files changed, 168 insertions(+), 12 deletions(-) - -commit dc33ae24619f4602c23716e9e407f8dd4f1b4a1d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 14:29:53 2009 +0000 - - [boilerplate] Use pclose() after popen - - Joonas pointed out that we should be using pclose() on a stream returned - by popen(). - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f230ce7658910c7f4f8feb722b77a2141824f963 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 14:03:35 2009 +0000 - - [path] Fix typo in bounds for empty path. - - We set the width to be zero, twice, and the height not even once! - - src/cairo-path-bounds.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 163c326c82a45c1f3ee84bbfaee2cc2e6dc1fafc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 13:46:16 2009 +0000 - - [test] Free test name - - Adding the missing free for the converted test name. - - test/cairo-test.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit dd65be740c475daf75c602fc79ff25977674d9cf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 13:42:53 2009 +0000 - - [test/pdf-mime-data] Free data on error paths. - - Cleanup the allocated buffers on error. - - test/pdf-mime-data.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 65f9760d661a0eb2edf9e53fb1b74666ce0ba3b9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 13:43:33 2009 +0000 - - [toy-font-face] Return defaults for error objects. - - Similar to the behaviour of the other objects, we return the default - conditions if the object is in any error (and not just a nil object). - - src/cairo-toy-font-face.c | 28 ++++++++++++++++++++++++---- - 1 files changed, 24 insertions(+), 4 deletions(-) - -commit d478d5ed5ce7c19a02e11435bcf69e867c6705d9 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 2 06:48:54 2009 -0500 - - [doc] Give a small hint about Twin font - - Though, the details are not documented yet. I'm not sure how much of it - I do want to document. - - src/cairo-toy-font-face.c | 2 +- - src/cairo.c | 7 +++++++ - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit a023104400f7f08775e9e52c304f5df2bc96382d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Jan 2 10:32:39 2009 +0000 - - [trace] Adopt _cairo_dtostr - - In order to have locale-independent output of decimal values, we need to - manually transform such numbers into strings. As this is a solved problem - for cairo, we adopt _cairo_output_stream_printf() and in particular the - _cairo_dtostr() routine for our own printf processing. - - util/cairo-trace/trace.c | 920 +++++++++++++++++++++++++++------------------- - 1 files changed, 546 insertions(+), 374 deletions(-) - -commit c601f308430f4d33929109fb9170b9322edca3c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Jan 1 16:55:08 2009 +0000 - - [cairo] Early return if we attempt to set the same colour. - - Profiling a silly video renderer that called set-source; rectangle; fill; - for each pixel, we can shave 5% off the cairo overhead by introducing an - early return if we attempt to reset the current colour. - - src/cairo.c | 30 ++++++++++++++++++++++++++++++ - 1 files changed, 30 insertions(+), 0 deletions(-) - -commit fb3522f33a565576002595bf03e07f6c8b16a471 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 19:19:54 2008 +0000 - - [os2] Fix memory leak of surface on error path - - Of we fail to create the mutex, free the surface before returning the - failure. - - Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19208. - - src/cairo-os2-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8d23c3a6c2ab0ae168afb695e2b8c5f121ed2be3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 19:17:28 2008 +0000 - - [quartz] Delay allocation of string until after guard. - - Fixes a memory leak should we bail due to the version of Quartz being - insufficient. - - Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19209. - - src/cairo-quartz-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 9c9ed8f0b5ce8bc3036dcb0bf841ffaa24797cfa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 13:04:31 2008 +0000 - - [scaled-font] Post-process hash value. - - Mix the bits within the hash value to reduce clustering. - - src/cairo-scaled-font.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 555dd6b97ec432787d83242727164d25b459cf54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 13:02:00 2008 +0000 - - [scaled-font] Switch to a constant loop for hashing. - - As we only use the FNV hash for hashing matrices, expose the constant size - to the compiler so that it can perform its magic. - - src/cairo-scaled-font.c | 18 ++++++++---------- - 1 files changed, 8 insertions(+), 10 deletions(-) - -commit f5274f5847519208865159fa9bb254d76ba8ddac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 16:31:28 2008 +0000 - - Iterate over hash table using foreach() in destructors. - - Don't use the remarkably inefficient _cairo_hash_table_random_entry() to - remove all entries from the hash table! - - src/cairo-cff-subset.c | 21 +++++++++++---------- - src/cairo-ft-font.c | 47 ++++++++++++++++++++++------------------------- - 2 files changed, 33 insertions(+), 35 deletions(-) - -commit 1c4ea84b24f3f7e480f9c50b5bd77ac703c36ef0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 20:32:44 2008 +0000 - - [cairo] Early return if we attempt to set the same scaled_font - - If the application calls cairo_set_scaled_font() with the current - scaled font, we can return early as it is a no-op. - - src/cairo.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b661f3d27ba77cdf470a86f6320b1bb31d92a9f0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 18:34:16 2008 +0000 - - [cairo] Embed a second gstate. - - Experiment with embedding a second gstate into the initial context to - reduce allocations. - - src/cairo-private.h | 2 +- - src/cairo.c | 12 ++++++------ - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit 8abd21bd3afc143501f66fdcdc0c6c4139df490b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 23 15:09:15 2008 +0000 - - [script] Call the context creation hook - - Hook in the creation hook so applications can record or even modify the - contexts used in replay. - - util/cairo-script/cairo-script-operators.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 2c9323d3942cbf93b100f711000f48a3eb869271 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 14:11:37 2008 +0000 - - [script] more targets - - util/cairo-script/csi-replay.c | 101 ++++++++++++++++++++++++++++++++++----- - 1 files changed, 88 insertions(+), 13 deletions(-) - -commit fd96cea4fefeeee8bcccde663faa559151e2606e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 12:54:53 2008 +0000 - - [script] Improve array construction. - - Limit the memory allocation to the initial array size and perform a direct - copy from the operand stack to the array. - - util/cairo-script/cairo-script-objects.c | 27 ++++++++++++---- - util/cairo-script/cairo-script-operators.c | 45 +++++++++++---------------- - util/cairo-script/cairo-script-private.h | 1 + - util/cairo-script/cairo-script-scanner.c | 2 +- - util/cairo-script/cairo-script-stack.c | 2 +- - 5 files changed, 41 insertions(+), 36 deletions(-) - -commit ecb8dce27c769158fe4a92432a90b24a96f8afa9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 18:32:44 2008 +0000 - - [script] Recreate surface content. - - Use the content recorded in the trace, defaulting to COLOR_ALPHA, to - determine the replayed surface type. - - util/cairo-script/cairo-script-interpreter.h | 1 + - util/cairo-script/cairo-script-operators.c | 8 ++- - util/cairo-script/csi-exec.c | 1 + - util/cairo-script/csi-replay.c | 80 +++++++++++++++++++------- - util/cairo-trace/trace.c | 8 ++- - 5 files changed, 74 insertions(+), 24 deletions(-) - -commit d21529b9ef31228182d2f61bb4f7beb6319b10c4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 15:38:13 2008 +0000 - - [trace] Correct escaped characters in string literal. - - Laziness caused the control character to be used instead of its - replacement in the escaped string! - - util/cairo-trace/trace.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit ca39c4bf7f90646b70b2bbe9e7318fcfae99e35e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 15:35:40 2008 +0000 - - [trace] Correct a couple of typos. - - A couple of minor typos in the escaped characters strings. - - util/cairo-trace/trace.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 1f2fec7388092c8fea87651f9094ca2e0be2104b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 19 18:04:03 2008 +0000 - - [trace] Fix OBO in emit_glyphs() - - The largest index that will fit within 8 bits is 255 not 256! - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7ebe9e68371e4e77139d9abeb7feb390203b1c8e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 21:59:16 2008 +0000 - - [trace] Minor tidy. - - Improve scoping of variables. - - util/cairo-trace/trace.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 931556005a1946c5e730afc7977551a2bc5be42c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 21:57:19 2008 +0000 - - [trace] Remove the forced switching to C locale - - This interferes with the application being traced. It is not clear from - printf(3) whether "%.f" is locale dependent or not - but until we have a - failure do not break applications unnecessarily! - - util/cairo-trace/cairo-trace.in | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit d0f41b92bf9a9ee313dde6f451b26fffb65a0906 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 17:26:43 2008 +0000 - - [trace] Do not force the output filename. - - Handle the case of tracing an application that spawns it own graphical - children but using the autonaming facility within cairo-trace. Currently - the traced process tree would all attempt to write to the same file, - creating a broken trace. This means sacrificing the display of the output - name, but allows use for a wider range of applications. - - util/cairo-trace/cairo-trace.in | 25 ++++++------------------- - 1 files changed, 6 insertions(+), 19 deletions(-) - -commit 19e8c5c7f4a561f2454380c8f4098a832d716d28 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 19:27:33 2008 +0000 - - [test] Fix mismatched free. - - A couple of strings allocated using glib functions but freed with system - malloc. - - Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19210. - - test/pdf2png.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6662eede2af2da50bff1902e694204c69e84f036 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 19:14:23 2008 +0000 - - [perf] Fix errors reported by cppcheck - - Trivial mistakes, identified in bugs - http://bugs.freedesktop.org/show_bug.cgi?id=19206 and - http://bugs.freedesktop.org/show_bug.cgi?id=19207. - - perf/cairo-perf-graph-files.c | 2 +- - perf/cairo-perf-report.c | 7 ++++--- - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit 8419c4f124c6ffa75b44901dccab33df8bb6287a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 20 15:34:41 2008 +0000 - - [perf] Correct another reference to '<cairo>' - - I think that's the last use of the old internal name for twin! - - perf/twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 14d94d9354170003ec15847873a273c1752cf9f2 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Jan 2 02:56:38 2009 -0500 - - Fix various README typos - - HACKING | 2 +- - src/README | 4 ++-- - util/README | 6 ++++++ - 3 files changed, 9 insertions(+), 3 deletions(-) - -commit 28a72648ba7abe02ebd4df7234424e333b85dc9c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Dec 30 13:48:47 2008 -0500 - - [gstate] Change the glyph dropping safety margin from 2em to 10em - - The small margin caused bugs with math fonts. See: - https://bugzilla.mozilla.org/show_bug.cgi?id=460023 - - src/cairo-gstate.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit fa63c43532de4a38d59d2746c34c815d18121062 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Dec 29 16:11:29 2008 +0000 - - [spline] Be pedantic and propagate errors. - - We know that the current users will always return SUCCESS, but propagate - the status return for future users. - - src/cairo-path-bounds.c | 6 ++---- - src/cairo-spline.c | 15 +++++++++++---- - src/cairo-types-private.h | 2 +- - src/cairoint.h | 2 +- - 4 files changed, 15 insertions(+), 10 deletions(-) - -commit 7df082dd8aaa9d31479a8bb1f6f1dfe07f52019a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Dec 29 16:06:36 2008 +0000 - - [test] Update twin reference images - - Subsequent to recent tweaks, update the reference images for twin. - - test/Makefile.am | 6 ++---- - test/twin.c | 2 +- - test/twin.pdf.ref.png | Bin 1669 -> 0 bytes - test/twin.ps.ref.png | Bin 0 -> 1114 bytes - test/twin.ps2.ref.png | Bin 1095 -> 0 bytes - test/twin.ps3.ref.png | Bin 1095 -> 0 bytes - test/twin.ref.png | Bin 1712 -> 1492 bytes - test/twin.svg.ref.png | Bin 0 -> 1487 bytes - test/twin.svg11.argb32.ref.png | Bin 1797 -> 0 bytes - test/twin.svg11.ref.png | Bin 1662 -> 0 bytes - test/twin.svg11.rgb24.ref.png | Bin 1797 -> 0 bytes - test/twin.svg12.argb32.ref.png | Bin 1797 -> 0 bytes - test/twin.svg12.ref.png | Bin 1662 -> 0 bytes - test/twin.svg12.rgb24.ref.png | Bin 1797 -> 0 bytes - 14 files changed, 3 insertions(+), 5 deletions(-) - -commit e10af38799eb77f1a7b5f75e76c733353c7b8622 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Dec 29 12:54:13 2008 +0000 - - make "make check" happy again - - Add the missing scoping that caused check-plt to complain. - - src/cairo-font-face-twin.c | 6 ++++-- - src/cairo-scaled-font.c | 2 ++ - src/cairo.c | 4 ++++ - src/cairoint.h | 8 +++++++- - 4 files changed, 17 insertions(+), 3 deletions(-) - -commit 010085622674bd02098742f401409da8e7c1b1dc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Dec 29 12:45:13 2008 +0000 - - [path] Remove tolerance from path bounders - - With Behdad's analytical analysis of the spline bbox, tolerance is now - redundant for the path extents and the approximate bounds, so remove it - from the functions parameters. - - src/cairo-analysis-surface.c | 3 +-- - src/cairo-gstate.c | 3 +-- - src/cairo-path-bounds.c | 18 ++++++------------ - src/cairo-surface-fallback.c | 1 - - src/cairoint.h | 5 +---- - 5 files changed, 9 insertions(+), 21 deletions(-) - -commit 84b81388bef4a2f300580081415fe09947edb96e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Dec 29 12:16:53 2008 +0000 - - [test] Draw spline bbox - - Add the stroked extents to the spline-decomposition test. - - test/Makefile.am | 6 +-- - test/spline-decomposition.c | 63 +++++++++++++++++++++++++++++++ - test/spline-decomposition.pdf.ref.png | Bin 20404 -> 19156 bytes - test/spline-decomposition.ps.ref.png | Bin 0 -> 9090 bytes - test/spline-decomposition.ps2.ref.png | Bin 8957 -> 0 bytes - test/spline-decomposition.ps3.ref.png | Bin 8957 -> 0 bytes - test/spline-decomposition.ref.png | Bin 20402 -> 19107 bytes - test/spline-decomposition.svg.ref.png | Bin 0 -> 19156 bytes - test/spline-decomposition.svg11.ref.png | Bin 20404 -> 0 bytes - test/spline-decomposition.svg12.ref.png | Bin 20404 -> 0 bytes - 10 files changed, 65 insertions(+), 4 deletions(-) - -commit efb17160904eda8fdb21fa1fd10a09081cf5cb3e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 16:06:27 2008 -0500 - - [_cairo_spline_bound] Protect against b == 0 - - src/cairo-spline.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 0b59e29004bb19eb9bd458bbe6a48a7c367f72d0 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 02:49:39 2008 -0500 - - [_cairo_spline_bound] Simplify condition - - src/cairo-spline.c | 14 +++++++++----- - 1 files changed, 9 insertions(+), 5 deletions(-) - -commit 3bf1b7d574620b1ab3c1fa50977a23d36ab04a40 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 02:41:39 2008 -0500 - - [_cairo_spline_bound] Fix the check for feasible solutions - - Also make it more strict. The only times we call sqrt now is - when a solution in (0,1) exists. - - src/cairo-spline.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 7f840d156c1212eeb0fddad4b4a6844a9c070bd5 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 02:02:30 2008 -0500 - - [spline] Save a couple more muls - - src/cairo-spline.c | 26 +++++++++++++------------- - 1 files changed, 13 insertions(+), 13 deletions(-) - -commit 3292f9906b3637564c37863dde5d214b0fee2885 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 01:59:12 2008 -0500 - - [spline] Do some checks to avoid calling sqrt() if no feasible solution exists - - src/cairo-spline.c | 27 ++++++++++++++++++++------- - 1 files changed, 20 insertions(+), 7 deletions(-) - -commit efe4d2ce99e65f9841951d3ff3e0536973bfb12c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 01:22:40 2008 -0500 - - [spline] Simplify code - - src/cairo-spline.c | 19 +++++++++---------- - 1 files changed, 9 insertions(+), 10 deletions(-) - -commit 8672178bf6c7f3a38e11e224f1d484b1f0c7fd7b -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Dec 28 01:20:37 2008 -0500 - - [spline] Remove duplicated code by using a macro - - src/cairo-spline.c | 50 +++++++++++++++++++++----------------------------- - 1 files changed, 21 insertions(+), 29 deletions(-) - -commit ef0f6c3ca311c41c9062e1298b020eae1212984e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 27 23:13:45 2008 -0500 - - [spline] Add an analytical bounder for splines - - The way this works is very simple: Once for X, and once for Y, it - takes the derivative of the bezier equation, equals it to zero and - solves to find the extreme points, and if the extreme points are - interesting, adds them to the bounder. - - Not the fastest algorithm out there, but my estimate is that if - _de_casteljau() ends up breaking a stroke in at least 10 pieces, - then the new bounder is faster. Would be good to see some real - perf data. - - src/cairo-path-bounds.c | 18 ++----- - src/cairo-spline.c | 131 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 6 ++ - 3 files changed, 141 insertions(+), 14 deletions(-) - -commit f2f62c7c4402a28a65c8171238d163af6b2fb95a -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 20:28:54 2008 -0500 - - [twin] Micro-optimize - - src/cairo-font-face-twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 50bc2bc0170be2a9c84ae3064525b18190e22b48 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 27 11:46:24 2008 +0000 - - [path] Simply track the current point for bounds. - - The idea is to track always update the current point, but not add it - during a move-to. - - src/cairo-path-bounds.c | 25 +++++++++++-------------- - 1 files changed, 11 insertions(+), 14 deletions(-) - -commit 078ebb01ba0b99ab4973ba479fe438f0674aa102 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 27 11:29:15 2008 +0000 - - [path] Initialise spline from current point - - Joonas spotted that the breakage with the curve bounds was the result of - initialising the spline using the original move to point and not the - current point. - - Fixes: Bug 19256 Gnome Foot in gnome-games rendered incorrectly - (https://bugs.freedesktop.org/show_bug.cgi?id=19256) - - src/cairo-path-bounds.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 4320ea68875cc015dfecdf5ed40195e276efca07 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 26 00:01:01 2008 +0000 - - [trace] Fix up positional arguments - - James Cloos pointed out that the correct form to use is "$@" when - executing the command line. - - util/cairo-trace/cairo-trace.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit e76a676c8f3d6dc9199cf0bc0856af0c659f4a16 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 25 09:51:51 2008 +0000 - - [twin] Trivial spelling correction. - - This ain't no decadent descendent of the Hershey font... - - src/cairo-font-face-twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9332c0a8eaf266e99555df9ad7769f8b5804cbfd -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 16:38:04 2008 -0500 - - [util] Add waterfall - - util/Makefile.am | 3 +- - util/waterfall | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 99 insertions(+), 1 deletions(-) - -commit ab1febbf22a641feb2fda4b21156b2bd45df039b -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 16:35:33 2008 -0500 - - [twin] Resnap margin under monospace - - src/cairo-font-face-twin.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit 3c91d9f5a2a290653a56242eed6acae4f16e99e3 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 16:30:01 2008 -0500 - - [twin] Adjust margins - - src/cairo-font-face-twin.c | 114 +++++++++++++++++++++++++++----------------- - 1 files changed, 70 insertions(+), 44 deletions(-) - -commit 0b5c60bae1fb0924bbd43daab38932052e10b3be -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 15:48:46 2008 -0500 - - [twin] Clean up hinting - - src/cairo-font-face-twin.c | 89 +++++++++++++++++++++----------------------- - 1 files changed, 42 insertions(+), 47 deletions(-) - -commit 6e7a2c4ce32ddfb0e58a74fcba8c4e46e46d32a4 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 15:34:50 2008 -0500 - - [twin] Fix monospace for narrow glyphs - - src/cairo-font-face-twin.c | 23 ++++++++++++++--------- - 1 files changed, 14 insertions(+), 9 deletions(-) - -commit e8e6ae1294f11addcbc8a95db471bb48a50b0b1a -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 15:15:15 2008 -0500 - - [twin] Cache pen and other properties on the scaled font - - src/cairo-font-face-twin.c | 170 ++++++++++++++++++++++++++------------------ - 1 files changed, 101 insertions(+), 69 deletions(-) - -commit e133cc14469e8ebb8311bf8db206147f6b07786d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 14:56:32 2008 -0500 - - [twin] Don't stretch pen - - src/cairo-font-face-twin.c | 11 +++++------ - 1 files changed, 5 insertions(+), 6 deletions(-) - -commit dec4d791f4cc626d1fa52d68518f787210240812 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 14:24:08 2008 -0500 - - [twin] Minor shuffling - - src/cairo-font-face-twin.c | 142 +++++++++++++++++++++++++------------------- - 1 files changed, 81 insertions(+), 61 deletions(-) - -commit c3de08ee2fcfb0e092f0299e249b0f5fe56b87bf -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 14:11:52 2008 -0500 - - [twin] Further reduce weight - - src/cairo-font-face-twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5c201ef5cfdfdd4e19db7e0995b85fbb3f2e6090 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 26 00:05:19 2008 -0500 - - [scaled-font] Make cairo_debug_reset_static_data() work again - - I broke it in a5983929f8f07f384f78e0b604e22037cf5ed716 - - src/cairo-debug.c | 2 ++ - src/cairo-scaled-font.c | 4 +--- - src/cairoint.h | 3 +++ - 3 files changed, 6 insertions(+), 3 deletions(-) - -commit 730ed68ec1ac10dcb9c7c69759f72fcaa3ea82e5 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 23:29:02 2008 -0500 - - [pattern] Fix comment typo - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a5f4a97aa4122d8c4b8f31053d421a52c356e270 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 02:48:26 2008 -0500 - - [twin] Don't hint pen if hint-style is SLIGHT - - src/cairo-font-face-twin.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0c7eaf6e0a2c2f0db634f8120fcbc03f7e8fd751 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 02:44:19 2008 -0500 - - [twin] Improve glyph hints - - src/cairo-font-face-twin-data.c | 202 ++++++++++++++++++++++----------------- - 1 files changed, 116 insertions(+), 86 deletions(-) - -commit e6205ea5a38c9de4c08b313a1beb70d4a38b0676 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 02:10:16 2008 -0500 - - [twin] Improve hinting - - src/cairo-font-face-twin.c | 90 +++++++++++++++++-------------------------- - 1 files changed, 36 insertions(+), 54 deletions(-) - -commit da8658b67510daaefd542b80e6a997bbdfd82d44 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 01:35:36 2008 -0500 - - [twin] Hint dots - - src/cairo-font-face-twin-data.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit f4c81e18f85c6a68d682301abfd75e7c208c1e1a -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 01:29:41 2008 -0500 - - [twin] Disable pen hinting if hinting is off - - src/cairo-font-face-twin.c | 27 +++++++++++++++++++-------- - 1 files changed, 19 insertions(+), 8 deletions(-) - -commit af91fc1974ce2dfbaab187e22769cdfb9e6279d9 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 01:24:46 2008 -0500 - - [twin] Optimize hinting - - src/cairo-font-face-twin.c | 7 +------ - 1 files changed, 1 insertions(+), 6 deletions(-) - -commit 439959d1af1f6c4ce174a3fee524eacfc18a00bd -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 25 01:06:47 2008 -0500 - - [twin] Implement hinting - - src/cairo-font-face-twin.c | 148 ++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 129 insertions(+), 19 deletions(-) - -commit 9f9f5317dca6a9988a0a62aaa60393570157af63 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 22:29:59 2008 -0500 - - [util] Fix pangram - - util/cairo-view | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8296bc74c8687a2f52e06174e9dc70d32d1181c8 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 18:00:04 2008 -0500 - - [twin] Reduce the weight just a bit, such that bold doesn't look as bad - - src/cairo-font-face-twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b2f89625453e2a15da175ea5b4ca5af6c2201d96 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 17:29:21 2008 -0500 - - [twin] Adjust baseline - - src/cairo-font-face-twin.c | 11 ++++------- - 1 files changed, 4 insertions(+), 7 deletions(-) - -commit f980d017d2360634f391eb1129317446bfe42cc9 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 17:00:43 2008 -0500 - - [twin] Remove serif setting - - I don't think I'm going to implement serif-drawing soon, so, remove the - infrastructure. Can always be added back later. - - src/cairo-font-face-twin.c | 21 ++------------------- - 1 files changed, 2 insertions(+), 19 deletions(-) - -commit 1116febb40cb5e5f7eafe97999d1143347819b3f -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 16:32:25 2008 -0500 - - [twin] Implement small-caps - - src/cairo-font-face-twin.c | 27 ++++++++++++++++----------- - 1 files changed, 16 insertions(+), 11 deletions(-) - -commit 6767673961401c7ab7b92eb8dfbb345efb560741 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 16:13:12 2008 -0500 - - [twin] Implement stretch - - src/cairo-font-face-twin.c | 27 +++++++++++++++++++++------ - 1 files changed, 21 insertions(+), 6 deletions(-) - -commit 0656e947f11356877014df93bd083123c7313dc3 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 15:43:17 2008 -0500 - - [twin] Implement slant - - src/cairo-font-face-twin.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 9d493fcd16fb770f21fa732b08834f3a435fe1f2 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 15:36:57 2008 -0500 - - [twin] Disable the serif mode - - src/cairo-font-face-twin.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 6c1d21bf8947f5b11702626ddfd9bac18073188d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 03:47:21 2008 -0500 - - [twin] Implement monospace - - src/cairo-font-face-twin.c | 30 +++++++++++++++++++++++------- - 1 files changed, 23 insertions(+), 7 deletions(-) - -commit 5def8c587b2b897bfebc6d77a6a3e13355cae2f2 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 24 03:45:06 2008 -0500 - - [twin] Fix dots - - src/cairo-font-face-twin-data.c | 54 +++++++++++++++++++++++--------------- - 1 files changed, 33 insertions(+), 21 deletions(-) - -commit a303bbaea332df20b81f068366d701d66913c043 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Dec 23 16:12:56 2008 -0500 - - [font-face-get-type] Fix test to cleanup the surface and context properly - - Destroy the context and the surface even when the test fails. - - I ran into this because cairo_debug_reset_static_data() is called between the - tests on the quartz backend (it doesn't fork) and isn't on other backends? This - is perhaps a mistake... - - test/font-face-get-type.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 52cc31a7fa6570e538762631359a92e7b717710e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Dec 23 13:48:52 2008 -0500 - - [util] Add cairo-view - - util/Makefile.am | 3 +- - util/cairo-view | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 115 insertions(+), 1 deletions(-) - -commit 418c7ef133840c10eb0be7e75c7dd11533fbe897 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Dec 23 02:39:17 2008 -0500 - - [twin] Adjust font extents - - src/cairo-font-face-twin.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 96e41c28e980f313c51a0eed81681e7e48752797 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 20 23:30:59 2008 -0500 - - [twin] Minor cleanup - - src/cairo-font-face-twin.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 556f6ce364d81f9309162d21deb86a3d5b8b9a6e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 20 23:16:53 2008 -0500 - - [twin] close_path the Q - - src/cairo-font-face-twin-data.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6929ed800d19f359af7436636e8adc6203083a10 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 20 20:25:01 2008 -0500 - - [twin] Fix serif option parsing. Also make serif and weight do something - - src/cairo-font-face-twin.c | 20 ++++++++++++++++---- - 1 files changed, 16 insertions(+), 4 deletions(-) - -commit d423339fcef3c41225196c4371fb2c133ca61144 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 20 19:39:58 2008 -0500 - - [twin] Add face properties - - Just parse them now. We don't use them yet. - - src/cairo-font-face-twin.c | 191 ++++++++++++++++++++++++++++++++++++++++++-- - src/cairo-user-font.c | 4 +- - src/cairoint.h | 6 +- - 3 files changed, 189 insertions(+), 12 deletions(-) - -commit 93672d842f2b2c840bb9e73901faa4ce5df9c792 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 23 15:00:47 2008 +0000 - - [test] Fix reference handling in user-font-rescale - - user-font-rescale stored the current font on the context in order to - create a rescaling proxy font. As we failed to take a reference to the - font, it caught us by surprise when the font disappeared as we modified - the context before creating our proxy. Ho hum. - - test/user-font-rescale.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 5ad65dc4be5964265946de59a951f2304d64159e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Dec 23 14:56:48 2008 +1030 - - Document PDF restrict_to_version API - - doc/public/cairo-sections.txt | 4 ++++ - doc/public/tmpl/cairo-pdf.sgml | 35 +++++++++++++++++++++++++++++++++++ - src/cairo-pdf.h | 2 ++ - 3 files changed, 41 insertions(+), 0 deletions(-) - -commit 1869e0240bcc93c93e8abd1c8f930cf08ca8ee24 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Dec 23 14:37:30 2008 +1030 - - Document cairo_surface_(set|get)_mime_data() and mime types - - doc/public/cairo-sections.txt | 5 +++ - doc/public/tmpl/cairo-surface.sgml | 50 ++++++++++++++++++++++++++++++++++- - 2 files changed, 53 insertions(+), 2 deletions(-) - -commit 1f894033f077731485e1228f7e071e75c37a9947 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Dec 23 03:14:38 2008 +0200 - - [spans] Close open subpaths when filling with a scan converter. - - As reported by Christian Persch, open subpaths weren't being - closed when rendering to an image surface: - - http://bugs.freedesktop.org/show_bug.cgi?id=19240 - - src/cairo-spans.c | 53 +++++++++++++++++++++++++++++++---------------------- - 1 files changed, 31 insertions(+), 22 deletions(-) - -commit 0aa34c6435eaa260292cf10d270ebbf3314c7924 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Dec 23 02:18:14 2008 +0200 - - [svg] Fix build when building only the svg vector surface. - - The SVG vector surface pulls in font subsetting and that in turns - uses the PDF operators in cairo-type3-glyph-surface.c. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 38ec6e302cdd703447f169d95121d434c7495501 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Dec 23 02:05:32 2008 +0200 - - [test] Fix any2ppm build when building without the full complement of surfaces. - - It was complaining about g_init_type () being used without the proper includes - which would have been pulled in by the svg or poppler includes. - - test/any2ppm.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6ce97907edfa8a7b09abfc090a9c03d235de2ada -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Dec 22 11:09:27 2008 +1030 - - win32-font: truncate instead of fail if toy font name too long - - http://lists.cairographics.org/archives/cairo/2008-December/016109.html - - src/cairo-win32-font.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -commit d99583bae680fea852e957afdf674e2031aa7928 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Dec 21 17:03:17 2008 +1030 - - Fix win32 font breakage - - as a result of the toy font face changes in f7ab65e9b0c0f08be8d294e90131baa2decf1f1d - - src/cairo-win32-font.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit a5983929f8f07f384f78e0b604e22037cf5ed716 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Dec 20 01:18:12 2008 -0500 - - [toy-font-face] Move toy font face code in a file of its own - - src/Makefile.sources | 1 + - src/cairo-debug.c | 2 +- - src/cairo-font-face.c | 449 ------------------------------------ - src/cairo-mutex-list-private.h | 2 +- - src/cairo-os2-surface.c | 9 +- - src/cairo-scaled-font.c | 4 +- - src/cairo-toy-font-face.c | 489 ++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 5 +- - 8 files changed, 497 insertions(+), 464 deletions(-) - -commit 8bf49b27aeea8179b5862a424fb3ef1934be6e0e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Dec 19 20:46:36 2008 -0500 - - [font-face] Use cairo_font_face_t instead of toy, for nil objects - - And with a NULL backend. We are not supposed to read the nil objects - afterall. - - If this causes crashes, the crash site should be fixed. - - src/cairo-font-face.c | 55 +++++++++---------------------------------------- - src/cairoint.h | 2 +- - 2 files changed, 11 insertions(+), 46 deletions(-) - -commit e3675f8ac0acb285b2d669c0a44322623dac5fe9 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri Dec 19 08:50:26 2008 -0500 - - Fix definition of _cairo_quartz_font_face_backend - - Removes the NULL so that _cairo_quartz_font_face_scaled_font_create - is in the correct location. - - src/cairo-quartz-font.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit fa7d96e1236cdfa0016f96e5c7b6bd209c405cba -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Fri Dec 19 08:47:07 2008 -0500 - - Fix compilation of quartz surface. - - Declares _cairo_quartz_scaled_font_backend ahead of time and makes it static. - Also, removes the 'static' from the _cairo_quartz_font_backend definition. - - src/cairo-quartz-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit f8886ad1b30ec9c29ec5ac3e9cd5519dbc9e7b65 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 18 20:50:20 2008 -0500 - - [scaled-font-zero-matrix] Destrory scaled font and font options - - Oops. - - test/scaled-font-zero-matrix.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4567692326daf592ab432670c6d33b49f940dd35 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 18 18:03:40 2008 -0500 - - Add test creating a scaled font with a zero ctm matrix - - test/Makefile.am | 1 + - test/scaled-font-zero-matrix.c | 59 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 60 insertions(+), 0 deletions(-) - -commit 18054ef00c69f62804e08734fd2c3286373b451f -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 18 18:01:52 2008 -0500 - - [test] Quartz doesn't like being forked - - When the cairo-test-suite forks CoreFoundation complains with: - "The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec(). - When forked so avoid doing it in the test suite for now. In the future we should investigate - the possibility of a work around. - - test/cairo-test-runner.c | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit b4e0d489bb0317fdd935ad2d29830e48b5ce4f6c -Merge: 813cbf1 f60da9a -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 18 17:25:17 2008 -0500 - - Merge branch '1.8' - - Conflicts: - NEWS - build/Makefile.am.changelog - cairo-version.h - src/cairo-gstate.c - -commit f60da9a379890a3a4cd74cdad48e73c22cb74160 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 18 17:07:25 2008 -0500 - - Fix _compute_transform to check for nearly degenerate matrices - - If a matrix was something like [0 .000001 0, .000001 0 0] the old code would - assume that xx and yy were greater than 0 and turn the nearly degenerate matrix - into an actual degenerate one. This caused things to blow up later on. Now we - check that our nearly rectangular matrices are not nearly degenerate, and let - the nearly degenerate ones fall through to the non-rectangular path. - - Note: I'm not sure why NEARLY_ZERO(d) is fabs(d) < 1/65536 instead of some - other value. Hopefully, it's a useful definition. - - This problem was found by a test case attached to: - https://bugzilla.mozilla.org/show_bug.cgi?id=467423 - - src/cairo-win32-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 813cbf13ddbd3d4b708b3b362dd6c108966f44d5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 14:52:03 2008 +0000 - - [path] Separate the approx. bounds into 3 distinct functions - - Based on feedback from Jeff Muizelaar, there is a case for a very quick - and dirty extents approximation based solely on the curve control points - (for example when computing the clip intersect rectangle of a path) and - by moving the stroke extension into a core function we can clean up the - interface for all users, and centralise the logic of approximating the - stroke extents. - - src/cairo-analysis-surface.c | 32 ++++++------- - src/cairo-clip.c | 14 +++--- - src/cairo-path-bounds.c | 101 +++++++++++++++++++++++++++++++++++++++-- - src/cairo-rectangle.c | 10 ---- - src/cairo-surface-fallback.c | 10 ++-- - src/cairoint.h | 19 +++++--- - 6 files changed, 134 insertions(+), 52 deletions(-) - -commit dea40e61babe608315b6d365094cf518814b134e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 11:50:00 2008 +0000 - - [path] Return the fixed-point bounds of the path - - When analysing the stroke extents, we need the original fixed-point - extents so that we do not incur an OBO when we round-to-integer a second - time. We also need a more accurate estimate than simply using the control - points of the curve, so pass in tolerance and decompose until someone - discovers a cheaper algorithm to determine the precise aligned bounding - box of a bezier curve. - - src/cairo-analysis-surface.c | 30 ++++++------- - src/cairo-clip.c | 25 ++++++----- - src/cairo-path-bounds.c | 95 +++++++++++++++++++++--------------------- - src/cairo-rectangle.c | 10 ++++ - src/cairo-surface-fallback.c | 9 +++- - src/cairoint.h | 9 +++- - 6 files changed, 98 insertions(+), 80 deletions(-) - -commit 3a53e0261b1b5af21bf37e2a211eefd501bd5358 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 11:10:17 2008 +0000 - - [test] Update twin reference images. - - Closing the 'o' in twin has removed a slight artefact - update the reference - images to match. - - test/twin.pdf.ref.png | Bin 1673 -> 1669 bytes - test/twin.ref.png | Bin 1718 -> 1712 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit c2478de26cc1781b8f8604191a9f75ad29eac746 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 10:50:45 2008 +0000 - - [twin] Switch internal users to the new name. - - s/<cairo>/@cairo:/ - - doc/tutorial/src/twin.c | 2 +- - test/twin.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 3424b5f8c8cb1f2ef16b9e8429e64f720106f4d8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 10:47:44 2008 +0000 - - [scaled-font] Make check-doc happy - - Replace a structure marker '#' with a macro marker '%'. - - src/cairo-scaled-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 449bf0bb7bff38da1c5d0286cb4f22c858bcc3a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 10:45:22 2008 +0000 - - [script] Silence incorrect compiler warnings - - Bah, the compiler failed to do its IPA correctly and wrongly complained - about potential use of uninitialised out-params guarded by the return - value. Silence them! - - util/cairo-script/cairo-script-operators.c | 38 ++++++++++++++-------------- - 1 files changed, 19 insertions(+), 19 deletions(-) - -commit ce0b136a441382b25d0932cd66a906a30a693365 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 20:34:45 2008 +0000 - - Query the backend to see if we can repaint the solid pattern. - - If we are dithering on the Xlib backend we can not simply repaint the - surface used for a solid pattern and must recreate it from scratch. - However, for ordinary XRender usage we do not want to have to pay that - price - so query the backend to see if we can reuse the surface. - - src/cairo-analysis-surface.c | 2 ++ - src/cairo-meta-surface.c | 1 + - src/cairo-paginated-surface.c | 1 + - src/cairo-pdf-surface.c | 1 + - src/cairo-script-surface.c | 1 + - src/cairo-surface.c | 41 ++++++++++++++++++++++++----------------- - src/cairo-xlib-surface.c | 12 +++++++++++- - src/cairoint.h | 5 +++++ - src/test-meta-surface.c | 1 + - src/test-paginated-surface.c | 1 + - 10 files changed, 48 insertions(+), 18 deletions(-) - -commit 0df43251d4b4641d16c0a2e2c49d18dd2a9c832e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 23:45:39 2008 +0000 - - [replay] Take advantage of unresolved fonts - - As Behdad has changed the underlying ft-font to accept unresolved patterns, - take advantage of that to simplify the replay code. - - util/cairo-script/cairo-script-operators.c | 16 ++-------------- - 1 files changed, 2 insertions(+), 14 deletions(-) - -commit 97a00bdd4eefade8d0808b5572bcdbba26c9c8f3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 17:32:07 2008 +0000 - - [cairoint.h] Wrap macro in parenthesis - - Ensure that the stride calculation macro is not influenced by surrounding - precedence issues by enclosing it in a pair of parenthesis. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit aa65e756d496f4c3a8b43d2100e17dc39c2c26b7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 5 11:21:11 2008 +0000 - - [script] Avoid creating 0x0 windows - - XCreateWindow dies if asked to create a 0x0 window, so don't and use a 1x1 - pixel window for a zero-sized surface. - - util/cairo-script/csi-replay.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 6458903c95c2bba3f1b9ceaaafb6979d180ab039 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 10:07:32 2008 +0000 - - [image] Eliminate the short-lived context used for coercing. - - When coercing from one image format to another we performed a paint - operation using a temporary context - this is overkill as we can just call - _cairo_surface_paint() directly. - - src/cairo-image-surface.c | 42 ++++++++++++++++++++++---------------- - src/cairo-scaled-font.c | 40 +++++++++++++++++++----------------- - src/cairo-svg-surface.c | 18 +++++++--------- - src/cairo-type3-glyph-surface.c | 20 +++-------------- - src/cairoint.h | 4 +- - 5 files changed, 59 insertions(+), 65 deletions(-) - -commit 9b46d13b6cd58c711010df89a41b216c5cc8c881 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 23:52:32 2008 +0000 - - [trace] Runtime version check. - - Check that the application is using cairo >= 1.9 before attempting to - query the mime-data. - - util/cairo-trace/trace.c | 47 ++++++++++++++++++++++++--------------------- - 1 files changed, 25 insertions(+), 22 deletions(-) - -commit 2d790daa957471670f4ae0d3b22da89e4ee7111f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 18 00:47:08 2008 +0000 - - [pattern] Use a solid pattern for a uniform gradient. - - If each color stop in a gradient is identical, replace the gradient - surface with a simple solid surface. As seen in the wild. - - src/cairo-pattern.c | 54 ++++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 39 insertions(+), 15 deletions(-) - -commit 25a4677200ea6689be0dca9d533842dc7da54837 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 17 09:29:35 2008 +0000 - - [analysis] Use approximate extents. - - Use the approximate path based extents to avoid tessellation. - - src/cairo-analysis-surface.c | 54 +++++++++++++---------------------------- - 1 files changed, 17 insertions(+), 37 deletions(-) - -commit 18bca91411e9ba6e1e58dbc945a0567d2661568f -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Dec 18 02:12:14 2008 -0500 - - [twin] close_path the 'o' - - src/cairo-font-face-twin-data.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5ee6aad471d460f960a5e7a5a8e35aca0f0af60e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 18:05:51 2008 -0500 - - [toy] Use twin font if font backend returns UNSUPPORTED - - src/cairo-font-face.c | 19 ++++++++----------- - 1 files changed, 8 insertions(+), 11 deletions(-) - -commit eb069094ea4471b3e63881fe0f8b958ad8924c7d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 17:30:34 2008 -0500 - - Treat any toy family starting with "@cairo:" as request for twin - - src/cairo-font-face.c | 3 ++- - src/cairoint.h | 2 +- - 2 files changed, 3 insertions(+), 2 deletions(-) - -commit 32c66109059398e88f50335bef75fa8c0e51c4c8 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Dec 17 17:43:37 2008 -0500 - - Call _cairo_error when propagating error status from the font_face. - - src/cairo-gstate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1d72e53c3e99f93aa59967c76f1b1b4c035b9130 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Dec 17 17:42:18 2008 -0500 - - Add a missing _cairo_error() to a bunch of status returns. - - src/cairo-misc.c | 4 ++-- - src/cairo-scaled-font.c | 14 +++++++------- - src/cairo.c | 2 +- - 3 files changed, 10 insertions(+), 10 deletions(-) - -commit af3a892c3ef6a7c1d28d523944bbb67e59edc1de -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 16:45:28 2008 -0500 - - [ft] Remove stale comment - - src/cairo-ft-font.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 0137b9bd320783264d865a397392b0ee14fd69b3 -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Wed Dec 17 16:40:12 2008 -0500 - - [ft] Don't call FT_Done_Face() on faces we did not create - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e4d7c87b5e449a743a68dd256faaa3242f191a44 -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Wed Dec 17 16:40:12 2008 -0500 - - [ft] Don't call FT_Done_Face() on faces we did not create - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6778a5f67ae2e35e809cf4464530e2bb05870378 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 16:19:45 2008 -0500 - - [.gitignore] Update - - build/.gitignore | 2 ++ - src/.gitignore | 1 + - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit 26f471999973c538e45db0ae9f0227fbe5dedf24 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 16:08:32 2008 -0500 - - [scaled-font] Improve docs - - src/cairo-scaled-font.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit f7ab65e9b0c0f08be8d294e90131baa2decf1f1d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Dec 17 06:25:50 2008 -0500 - - Clean up toy font face handling - - This commit moves the toy-to-real mapping from the scaled font creation - time to font face creation. A toy font face will keep an internal ref - to an implementation face. Then cairo_scaled_font_create() will simply - substitute the implementation face before creating anything. - - This also modifies the cairo-ft toy creation in that we now create a - non-resolved pattern and store it in a cairo-ft font-face. We then - do the resolving and unscaled font creation at scaled-font creation - time. This also means that cairo_ft_font_face_create_for_pattern() - now accepts non-resolved patterns too, and does the right thing about - them. As much as that can be called right. - - Some testing of toy font creation performance is in order, as is testing - win32 and quartz font backends. - - src/cairo-font-face.c | 143 +++++++++--------- - src/cairo-ft-font.c | 371 ++++++++++++++++++++++++++++------------------- - src/cairo-quartz-font.c | 208 ++++++++++----------------- - src/cairo-scaled-font.c | 19 +-- - src/cairo-user-font.c | 62 +------- - src/cairo-win32-font.c | 20 +-- - src/cairoint.h | 40 ++--- - 7 files changed, 412 insertions(+), 451 deletions(-) - -commit 43edb4dd7b8d0614a6c2be15dfa72f980dd55f1d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 12 18:10:58 2008 +0000 - - Fix compilation with gcov - - We need to add --coverage to LDFLAGS, so create CAIRO_LDFLAGS and use that - to populate AM_LDFLAGS. - - boilerplate/Makefile.am | 1 + - build/configure.ac.analysis | 6 +++++- - build/configure.ac.features | 1 + - src/Makefile.am | 3 ++- - test/Makefile.am | 17 +++++++++-------- - 5 files changed, 18 insertions(+), 10 deletions(-) - -commit bcea3151d66495f03d67ce71274203d0515caf4c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 12 14:08:11 2008 +0000 - - [test] Add missing joins.ref.png - - Missed this file when adding the reference images for joins. - - test/joins.ref.png | Bin 0 -> 5879 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 8cec548854d86dac8f0c99e99461421c8ad653b1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 14:06:07 2008 +0000 - - [NEWS] Add notes for 1.8.6 - - Add the historical blurb for 1.8.6. - - NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 49 insertions(+), 0 deletions(-) - -commit 0a1d194ad85398c8711268fd9ba679f8609206a1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 14:53:27 2008 +0000 - - [perf] Fix for git-1.6 - - git-1.6 moved all the subcommands out of the PATH so update our usage. - - perf/cairo-perf-graph | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1c2eba92c16207a48f9c8f52065fbf9a65d16fcd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 13:05:01 2008 +0000 - - [RELEASING] Update Makefile for git-1.6 - - Git moved all the subcommands out of the PATH, so we need to update our - usage. - - build/Makefile.am.changelog | 4 ++-- - build/Makefile.am.releasing | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 2fa6b6353740b7941e90e50bf6b0eb5f06aa11b5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 11:40:12 2008 +0000 - - [RELEASING] Correct a few minor typos. - - As I was reading through the instructions, take the opportunity to fix a - few spelling mistakes. - - RELEASING | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 1950abd14c28d58913c085d3829eb99a078cf2d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 11:26:56 2008 +0000 - - [doc] Fix erroneous doc comment. - - A normal comment was marked as a gtk-doc entry and thus causing gtk-doc to - complain. - - src/cairo-path-fixed.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9485cd947f982ecd1e4f8d948786af3265d6eb74 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 16:35:14 2008 +0000 - - Increment version to 1.8.7 after the 1.8.6 release. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2a2eddcfb8fc73f3decdb91c00e8e6d5282e09c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 14:07:11 2008 +0000 - - Increment version to 1.8.6 - - In preparation for the next stable release. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ef7c42a7d390064b2a5b08e14d5f65b8ea4628e3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 14:06:07 2008 +0000 - - [NEWS] Add notes for 1.8.6 - - Add the historical blurb for 1.8.6. - - NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 50 insertions(+), 0 deletions(-) - -commit ce91e6ac360e1dbe57a4e729b68d84499603e9ae -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 14:53:27 2008 +0000 - - [perf] Fix for git-1.6 - - git-1.6 moved all the subcommands out of the PATH so update our usage. - - perf/cairo-perf-graph | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f8372509aff662e9cbabeb99560b01019395c15e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 13:05:01 2008 +0000 - - [RELEASING] Update Makefile for git-1.6 - - Git moved all the subcommands out of the PATH, so we need to update our - usage. - - build/Makefile.am.changelog | 4 ++-- - build/Makefile.am.releasing | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 9faa9a214994fe27a0cb27a298881f23c2050bbe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 11:40:12 2008 +0000 - - [RELEASING] Correct a few minor typos. - - As I was reading through the instructions, take the opportunity to fix a - few spelling mistakes. - - RELEASING | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit b1be4196513263bdbf58944ea6ac87708a399c5f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Dec 14 11:26:56 2008 +0000 - - [doc] Fix erroneous doc comment. - - A normal comment was marked as a gtk-doc entry and thus causing gtk-doc to - complain. - - src/cairo-path-fixed.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 79bd32a6ccb1a882ddd2b1585ab155f568bf5ec7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 6 13:32:37 2008 +0200 - - [perf-diff] Fix cairo-perf-diff for git 1.6 - - Since git 1.6 the plumbing commands aren't installed in the user's - path by default. This patch fixes cairo-perf-diff to find the - git-sh-setup command from git's lib dir. - (cherry picked from commit 0c0f4862c52d68776024f125b003ade455044b27) - - perf/cairo-perf-diff | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 97b5240beeb9206f4dbda6ffce33b51aa16eec2f -Author: Julien Danjou <julien@danjou.info> -Date: Tue Nov 18 10:01:49 2008 +0100 - - [xcb] check for render extension presence - - Otherwise this may leads to an invalid memory access to r. - - Fixes: Bug 18588 - XCB backend fails with missing render. - https://bugs.freedesktop.org/show_bug.cgi?id=18588 - - Signed-off-by: Julien Danjou <julien@danjou.info> - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - (cherry picked from commit 834f1d7b7097dcc3a32f6c65d21e87fd272d924a) - - AUTHORS | 1 + - src/cairo-xcb-surface.c | 8 ++++++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 6fed98c0d3b0708ad5171654179a482fa7d88805 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 5 21:14:45 2008 +0000 - - [gstate] Remove culled glyphs from clusters. - - Sascha Steinbiss reported a bug where the PDF backend was reading beyond - the end of the glyph array: - http://lists.cairographics.org/archives/cairo/2008-December/015976.html. - - It transpires that in the early glyph culling in the gstate we were - not updating the clusters to skip culled glyphs. - - src/cairo-gstate.c | 223 +++++++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 176 insertions(+), 47 deletions(-) - -commit 2b7c6f361a3cfe309ff0bcb606b808acbf36aa0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 12:33:12 2008 +0000 - - [skiplist] Allocate elements in chunks. - - Use a pool allocator to preallocate a chunk from which to allocate the - skiplist elements (if we failed to reallocate from the freelists). - - src/cairo-bentley-ottmann.c | 33 ++++++++++++---- - src/cairo-skiplist-private.h | 3 +- - src/cairo-skiplist.c | 85 +++++++++++++++++++++++++++++++++-------- - 3 files changed, 94 insertions(+), 27 deletions(-) - -commit 903b39c30448d62e2cbf9d075c5256a333bd5d8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 4 15:22:01 2008 +0000 - - [test] Make the xlib-fallback use the image refs. - - The xlib-fallback is closer to the image than the xlib backend, so prefer - not to use the xlib.ref.png. - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 792057539bf814cc00447a0a53978e0af3efe270 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 3 10:52:59 2008 +0000 - - [test] Only delete output images beneath output. - - We were using an overly-liberal find that also deleted copied output for - use in CAIRO_REF_DIR if that directory was below test/. So only delete - files below output/ (which should only be used by cairo-test). - - test/Makefile.am | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 913cbad25e08a07c05b8c2e6ddd3c343ca2462b2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 2 13:06:50 2008 +0000 - - [test] Add a simple joins test case - - Exercise joins between short (<LINE_WIDTH) lines - used in debugging - stroke-to-path. - - test/Makefile.am | 3 + - test/joins.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ - test/joins.ps.ref.png | Bin 0 -> 5496 bytes - 3 files changed, 112 insertions(+), 0 deletions(-) - -commit 9f4f41de7d20ee46ee8ca06716cbc18e55cfcf86 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 2 13:05:30 2008 +0000 - - [tutorial] Correct twin font name - - We changed the name for the builtin font from "cairo" to "<cairo>" to - reduce possible naming conflicts - update the tutorial to match. - - doc/tutorial/src/twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4ff884fe4df64234a7da4635d78ffafabe00f18c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 30 19:18:15 2008 +0000 - - [test] Check idempotency of append_path() -> copy_path() - - The API should preserve the precision across the public interface so that - the user is able to retrieve the co-ordinates that he used to construct - the path. However since we transform the path to a 24.8 fixed-point - internal represent we currently incur a precision-loss - the affects of - which can be seen in the miter-precision test case for example. It is - planned to move to keeping the path as doubles until the backend - explicitly requests the fixed-point coodinates (and some backends, e.g. - pdf, might only ever use the doubles). Then, barring rounding errors - during path transformations, we should be able to return the exact path - the user set (under an identity CTM, of course ;-). - - test/Makefile.am | 1 + - test/path-precision.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 109 insertions(+), 0 deletions(-) - -commit fe4af195a7880336894a5fbae86740ef55c14cbf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 30 13:48:11 2008 +0000 - - [test] Add a rectilinear-dash test case. - - Exercise dashing on pixel-aligned boundaries to test extending the - rectilinear stroker to handle dashes. - - test/Makefile.am | 2 + - test/rectilinear-dash.c | 176 +++++++++++++++++++++++++++++++++++++++++ - test/rectilinear-dash.ref.png | Bin 0 -> 291 bytes - 3 files changed, 178 insertions(+), 0 deletions(-) - -commit 1d68ee73f8d406671d25a1ab6c3cfb096a7a6ce7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 23 08:59:56 2008 +0000 - - [pattern] Compute the combined color content. - - When multiplying two colors together, the combined content is simply the - or of the their contents. - - src/cairo-pattern.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 30cef3116ed960a94323477154896a03c4fb30bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 11 01:45:31 2008 +0000 - - [spans] Add a sentinel cell to the cell_list. - - By terminating the list with a cell for INT_MAX, we remove a few - conditionals from the hot-paths. - - src/cairo-tor-scan-converter.c | 25 +++++++++++++++---------- - 1 files changed, 15 insertions(+), 10 deletions(-) - -commit 3b2bb95249afdc3a705d0ce5205019e7d9d31020 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 11 01:22:37 2008 +0000 - - [spans] Embed 64 edge buckets into polygon - - Frequently we only need a few y-buckets, so embed 64 into the parent - structure. - - src/cairo-tor-scan-converter.c | 40 ++++++++++++---------------------------- - 1 files changed, 12 insertions(+), 28 deletions(-) - -commit 70235df72e3f33482527090d7039d8cab7ef6ff9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 11 00:32:13 2008 +0000 - - [spans] Pool capacity is in bytes not elements. - - Set the polygon capacity to a shade under 8k, not 200 bytes, reducing the - number of malloc calls made by the scan convertor by a factor of 40! - - src/cairo-tor-scan-converter.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6f284587a4ef829a1666fe730e590b59e4eedd5e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 13:50:23 2008 +0000 - - [script] Add examples - - Add some simple examples to demonstrate CairoScript, courtesy of M Joonas - Philaja. - - configure.ac | 1 + - util/cairo-script/Makefile.am | 2 + - util/cairo-script/examples/Makefile.am | 10 + - util/cairo-script/examples/dragon.cs | 48 + - util/cairo-script/examples/hilbert.cs | 51 + - util/cairo-script/examples/infinichess.cs | 29 + - util/cairo-script/examples/interference.cs | 46 + - util/cairo-script/examples/pythagoras-tree.cs | 53 + - util/cairo-script/examples/sierpinski.cs | 37 + - .../examples/wedgeAnnulus_crop_ybRings.cs | 30 + - util/cairo-script/examples/world-map.cs | 209 +++ - util/cairo-script/examples/zrusin.cs | 1333 ++++++++++++++++++++ - 12 files changed, 1849 insertions(+), 0 deletions(-) - -commit 463dc2891312e3658875d6964a91e7e875de4b38 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 21:09:14 2008 +0000 - - [script] Allocate the interned strings from a permanent pool - - Reduce memory fragmentation by allocating the permanent strings from a - single pool. - - util/cairo-script/cairo-script-interpreter.c | 52 ++++++++++++++++++++----- - util/cairo-script/cairo-script-private.h | 4 ++ - 2 files changed, 45 insertions(+), 11 deletions(-) - -commit adc9c90d79cf4bf5e3789ceadab6a49da746274a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 21:00:11 2008 +0000 - - [script] Freed object cache. - - Cache the last freed object to reduce malloc pressure. - - util/cairo-script/cairo-script-hash.c | 3 - - util/cairo-script/cairo-script-interpreter.c | 16 ++-- - util/cairo-script/cairo-script-objects.c | 118 +++++++++++++++++-------- - util/cairo-script/cairo-script-private.h | 5 +- - 4 files changed, 91 insertions(+), 51 deletions(-) - -commit 1042909796295234d8aadf674824d306d7bcc9b5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 17:56:19 2008 +0000 - - [script] Replay multiple files. - - Iterate over the argument vector and replay each file on the command line. - - util/cairo-script/csi-replay.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit c5c04528b51b9025f48fb0f3b1c4a8dc98acb214 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 17:30:21 2008 +0000 - - [script] Slab allocator - - Allocate small objects from a pool and maintain a per-size free-list. - - util/cairo-script/cairo-script-interpreter.c | 65 +++++++++++++++++++++++++- - util/cairo-script/cairo-script-private.h | 22 +++++++++ - 2 files changed, 85 insertions(+), 2 deletions(-) - -commit 83f0e6cf6245c0b3fd7a9b572e5dcea9b633a644 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 16:46:05 2008 +0000 - - [script] Inline the stack push - - Frequently to push an object onto the stack all we need is to simply - perform the struct copy - so inline it and only call the out-of-line - function if we need to enlarge the stack. - - util/cairo-script/cairo-script-interpreter.c | 20 ++++++------ - util/cairo-script/cairo-script-operators.c | 43 ++++++-------------------- - util/cairo-script/cairo-script-private.h | 14 ++++++++- - util/cairo-script/cairo-script-stack.c | 13 +++---- - 4 files changed, 39 insertions(+), 51 deletions(-) - -commit 565b3d6ad64fe9d35ebddb4f6b46e492740ee59f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 15:16:02 2008 +0000 - - [script] Switch to hyphens. - - Using hyphen in the operators is easier to read than underscores. - - src/cairo-script-surface.c | 60 +++++----- - util/cairo-script/cairo-script-operators.c | 189 ++++++++++++++++++---------- - util/cairo-trace/trace.c | 114 +++++++++--------- - 3 files changed, 211 insertions(+), 152 deletions(-) - -commit 3abfd836a021a2950b7eea97f3b30011d58efcc8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 14:34:41 2008 +0000 - - [script] Null constructor - - Expose 'null', principally for comparison purposes. - - util/cairo-script/cairo-script-operators.c | 8 +++++++- - util/cairo-script/cairo-script-private.h | 7 +++++++ - 2 files changed, 14 insertions(+), 1 deletions(-) - -commit 7540ac7f23db47ee3f58a557ce91aaf1c0bc72d5 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Dec 9 07:52:21 2008 +0200 - - [script] Reverse direction of bitshift. - - Positive shift counts should shift left according to PostScript. - - util/cairo-script/cairo-script-operators.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4be479cc63a783da18652528f33bd08427a74fe7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 13:20:06 2008 +0000 - - [script] Add simple to integer converter - - Simple operator to coerce the type of the object on top of the stack to - integer. - - util/cairo-script/cairo-script-operators.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 6711b591b9efd8f116f2683f17d52e9a9ddfbaba -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 12:34:30 2008 +0000 - - [script] Simple replay. - - Basic script executer. - - util/cairo-script/.gitignore | 1 + - util/cairo-script/Makefile.am | 5 ++++- - util/cairo-script/csi-exec.c | 29 +++++++++++++++++++++++++++++ - 3 files changed, 34 insertions(+), 1 deletions(-) - -commit 177a68ef3ecd1717b81c93c53f8c7ae27838e2e5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 13:21:19 2008 +0000 - - [script] Add a few mathematical constants - - Just pi and the sqrt(2) for the moment, more to come on demand. - - util/cairo-script/cairo-script-interpreter.c | 26 ++++++++++++++++++++++++++ - util/cairo-script/cairo-script-operators.c | 17 +++++++++++++++++ - util/cairo-script/cairo-script-private.h | 8 ++++++++ - 3 files changed, 51 insertions(+), 0 deletions(-) - -commit 5dfaa22a578ff6561e8d15a8c08546c840476313 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 12:26:09 2008 +0000 - - [script] Add repeat operator. - - Simple operator to repeat procedure n times. - - util/cairo-script/cairo-script-operators.c | 37 +++++++++++++++++++++++++++- - 1 files changed, 36 insertions(+), 1 deletions(-) - -commit 738cb327450821db2d3689e514376c0d9bc55e87 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Dec 9 05:59:19 2008 +0200 - - [script] Fix \t escapes in string literals. - - Typo \r -> \t. - - util/cairo-script/cairo-script-scanner.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 265ebd372a4fd510bc29c749a46393ee7caace41 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Dec 8 10:14:33 2008 +0200 - - [script] Flesh out the relational comparison operators to be more PostScript-like. - - The relational comparison operators can now compare strings vs names - by content as well as performing automatic type promotions on the - numeric types. For other types relational comparisons succeeed - only if the values compare equal according to the eq operator, and - put the interpreter into a type-error state otherwise. - - util/cairo-script/cairo-script-objects.c | 103 ++++++++++++++++++++ - util/cairo-script/cairo-script-operators.c | 144 +++++----------------------- - util/cairo-script/cairo-script-private.h | 5 + - 3 files changed, 132 insertions(+), 120 deletions(-) - -commit 05afec7a8ac590d0d53a254895796f36a8b0eaf3 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Dec 8 10:06:53 2008 +0200 - - [script] Implement the ne operator. - - util/cairo-script/cairo-script-operators.c | 19 ++++++++++++++++++- - 1 files changed, 18 insertions(+), 1 deletions(-) - -commit 1aeb96dc287b516955db1909995e45fe26d4f87a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Dec 8 10:03:57 2008 +0200 - - [script] Implement PostScript-like semantics for the eq operator. - - The eq operator would only work for some types and put the - interpreter in an error state if passed objects it didn't - know how to compare. It would also not compare strings - by value nor allow strings to be compared to names. - This patch makes any two objects comparable. - - util/cairo-script/cairo-script-objects.c | 92 ++++++++++++++++++++++++++++ - util/cairo-script/cairo-script-operators.c | 64 +------------------- - util/cairo-script/cairo-script-private.h | 4 + - 3 files changed, 97 insertions(+), 63 deletions(-) - -commit 620028fd19b091f525964b689ebd3a70e1636da2 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Dec 8 09:23:37 2008 +0200 - - [script] Don't segfault when hashing empty strings. - - Check for the empty string. - - util/cairo-script/cairo-script-interpreter.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 4ba77f776509caad030edf818a076ea9b071ad23 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Mon Dec 8 07:16:14 2008 +0200 - - [script] Fix dictionary construction to access the right stack slots. - - It bound values to themselves and ignored keys. - - util/cairo-script/cairo-script-operators.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit af53297a97eec505ac2a90768badda72056c6e3b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Dec 11 00:35:20 2008 +0000 - - [cairo] Use a stack buffer for text path. - - First try to allocate glyphs from the stack, similar to cairo_show_text(). - - src/cairo.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit 09589e20e14476df609581027d14628f52091e71 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 23:45:44 2008 +0000 - - [clip] Intersect to region extents. - - When querying the intersection of a rectangle with the clip region, the - result only depends upon the region extents so we do not need to perform - an expensive region-region intersection computation. - - src/cairo-clip.c | 18 +++++------------- - src/cairo-surface-fallback.c | 1 - - 2 files changed, 5 insertions(+), 14 deletions(-) - -commit c5acb125e9509570c407a069f7e89acfbadda57b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 23:06:22 2008 +0000 - - [surface] Avoid a short-lived context during fallback_clone_similar() - - We can paint to the surface directly without need of a temporary context, - so do so. - - src/cairo-surface-fallback.c | 41 +++++++++++++++++++---------------------- - 1 files changed, 19 insertions(+), 22 deletions(-) - -commit 888f62feaa73be326d41a485c0bcf81a3e466ee1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 17:42:16 2008 +0000 - - [test] Propagate error from path - - If the path is in error, just append it to the context so that the error - is propagated correctly. - - test/copy-path.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit f13f63e3d85d28a17a3cb60b7d1a7b552f2b6872 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 08:54:03 2008 +0000 - - [test/clip-nesting] Propagate status from sub-context. - - Use cairo_path_append() to propagate an error status from a child context - to it parent so that it is properly reported under memfault. - - test/clip-nesting.c | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit e6e33b036f9de5087a72cf1de9c0a4ce97c75812 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Dec 10 08:50:57 2008 +0000 - - [test/solid-pattern-cache-stress] Propagate status from sub-contexts. - - Use a cairo_append_path() to set an arbitrary error status on the parent - context, in order to propagate errors from a child. - - test/solid-pattern-cache-stress.c | 32 +++++++++++++++++++++++++------- - 1 files changed, 25 insertions(+), 7 deletions(-) - -commit bcb2724920aa1bca1a9a82b5017d3180f5f9523e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 9 20:44:25 2008 +0000 - - [path] Mark points as const during _cairo_path_fixed_interpret() - - Use const to document the read-only nature of the arguments passed to the - callbacks. - - src/cairo-path-bounds.c | 33 +++-------- - src/cairo-path-fill.c | 33 ++--------- - src/cairo-path-fixed.c | 86 +++++++++++++--------------- - src/cairo-path-in-fill.c | 12 ++-- - src/cairo-path-stroke.c | 108 ++++++++++++------------------------ - src/cairo-path.c | 26 +++++---- - src/cairo-pdf-operators.c | 12 ++-- - src/cairo-pen.c | 4 +- - src/cairo-quartz-surface.c | 11 +++- - src/cairo-rectangle.c | 6 +- - src/cairo-scaled-font.c | 12 ++-- - src/cairo-script-surface.c | 12 ++-- - src/cairo-spans.c | 18 ++---- - src/cairo-svg-surface.c | 15 +++-- - src/cairo-type1-fallback.c | 16 +++--- - src/cairo-types-private.h | 3 +- - src/cairo-win32-printing-surface.c | 12 ++-- - src/cairoint.h | 12 ++-- - 18 files changed, 186 insertions(+), 245 deletions(-) - -commit 68b29cafa597128e7cae86608e04ecae6070dad9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 9 20:15:34 2008 +0000 - - [spline] Propagate errors during add point. - - Yikes! The callback could fail so we need to propagate the error status. - - src/cairo-path-fill.c | 11 +++-------- - src/cairo-path-fixed.c | 7 ++----- - src/cairo-path-in-fill.c | 7 ++----- - src/cairo-path-stroke.c | 14 ++++++-------- - src/cairo-pen.c | 23 ++++++++++++----------- - src/cairo-spline.c | 40 ++++++++++++++++++++-------------------- - src/cairo-types-private.h | 6 +++++- - src/cairoint.h | 9 ++------- - 8 files changed, 52 insertions(+), 65 deletions(-) - -commit 2f3905dec38a710234aba30e1983b80ea3066a50 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 9 19:21:35 2008 +0000 - - [image] Set status on error path. - - We failed to set the status after cairo_image_surface_create() returned an - error. - - src/cairo-image-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit dfc49a67e62bea359b33413e9b882e92952431de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 9 14:44:51 2008 +0000 - - [test] Trim the number of fallback resolutions tested. - - Simplify the test matrix to only include testing the fallback-resolution - of a uniform scale in one or both axes. - - test/Makefile.am | 20 --- - test/fallback-resolution.c | 222 ++++++++++++++----------- - test/fallback-resolution.ppi150x150.ref.png | Bin 8043 -> 8058 bytes - test/fallback-resolution.ppi150x300.ref.png | Bin 6848 -> 0 bytes - test/fallback-resolution.ppi150x37.5.ref.png | Bin 13176 -> 0 bytes - test/fallback-resolution.ppi150x600.ref.png | Bin 6338 -> 0 bytes - test/fallback-resolution.ppi150x72.ref.png | Bin 8370 -> 8303 bytes - test/fallback-resolution.ppi150x75.ref.png | Bin 10445 -> 0 bytes - test/fallback-resolution.ppi300x150.ref.png | Bin 6851 -> 0 bytes - test/fallback-resolution.ppi300x300.ref.png | Bin 5637 -> 5639 bytes - test/fallback-resolution.ppi300x37.5.ref.png | Bin 12870 -> 0 bytes - test/fallback-resolution.ppi300x600.ref.png | Bin 4848 -> 0 bytes - test/fallback-resolution.ppi300x72.ref.png | Bin 7053 -> 7014 bytes - test/fallback-resolution.ppi300x75.ref.png | Bin 9617 -> 0 bytes - test/fallback-resolution.ppi37.5x150.ref.png | Bin 12728 -> 0 bytes - test/fallback-resolution.ppi37.5x300.ref.png | Bin 11981 -> 0 bytes - test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 14098 -> 14092 bytes - test/fallback-resolution.ppi37.5x600.ref.png | Bin 11654 -> 0 bytes - test/fallback-resolution.ppi37.5x72.ref.png | Bin 12990 -> 12906 bytes - test/fallback-resolution.ppi37.5x75.ref.png | Bin 13787 -> 0 bytes - test/fallback-resolution.ppi600x150.ref.png | Bin 6096 -> 0 bytes - test/fallback-resolution.ppi600x300.ref.png | Bin 4812 -> 0 bytes - test/fallback-resolution.ppi600x37.5.ref.png | Bin 12401 -> 0 bytes - test/fallback-resolution.ppi600x600.ref.png | Bin 4104 -> 4090 bytes - test/fallback-resolution.ppi600x72.ref.png | Bin 6398 -> 6326 bytes - test/fallback-resolution.ppi600x75.ref.png | Bin 8974 -> 0 bytes - test/fallback-resolution.ppi72x150.ref.png | Bin 8069 -> 8061 bytes - test/fallback-resolution.ppi72x300.ref.png | Bin 6803 -> 6911 bytes - test/fallback-resolution.ppi72x37.5.ref.png | Bin 13147 -> 13167 bytes - test/fallback-resolution.ppi72x600.ref.png | Bin 6245 -> 6214 bytes - test/fallback-resolution.ppi72x72.ref.png | Bin 8409 -> 8416 bytes - test/fallback-resolution.ppi72x75.ref.png | Bin 10628 -> 10620 bytes - test/fallback-resolution.ppi75x150.ref.png | Bin 9940 -> 0 bytes - test/fallback-resolution.ppi75x300.ref.png | Bin 9003 -> 0 bytes - test/fallback-resolution.ppi75x37.5.ref.png | Bin 14020 -> 0 bytes - test/fallback-resolution.ppi75x600.ref.png | Bin 8455 -> 0 bytes - test/fallback-resolution.ppi75x72.ref.png | Bin 10202 -> 10119 bytes - test/fallback-resolution.ppi75x75.ref.png | Bin 12101 -> 12127 bytes - 38 files changed, 121 insertions(+), 121 deletions(-) - -commit 0ebbcd671c362d98a60214872fa48aee1e42dde1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 9 14:30:58 2008 +0000 - - [test] Fix memleak from fallback-resolution. - - The test-name was being recreated for every pass, but was never freed. - - test/fallback-resolution.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit a9697e5fb04d045fe7aaf0cee80c41eb9d09e1c1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 12 11:08:13 2008 +0000 - - [test] Exercise glyph culling. - - Sascha Steinbiss reported an issue with glyph culling, - http://lists.cairographics.org/archives/cairo/2008-December/015976.html, - whereby we failed to update the text clusters upon culling the glyphs in - the gstate and proceeded to read beyond the end of the glyph array in the - PDF backend. This test case setups a similar condition as reported, by - trying to write a wide string into a small box. - - test/Makefile.am | 3 ++ - test/culled-glyphs.c | 62 +++++++++++++++++++++++++++++++++++++++++ - test/culled-glyphs.ps.ref.png | Bin 0 -> 372 bytes - test/culled-glyphs.ref.png | Bin 0 -> 434 bytes - 4 files changed, 65 insertions(+), 0 deletions(-) - -commit 095a1fd7860bd1f6d4116766ade0ec9a382bb957 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 5 21:14:45 2008 +0000 - - [gstate] Remove culled glyphs from clusters. - - Sascha Steinbiss reported a bug where the PDF backend was reading beyond - the end of the glyph array: - http://lists.cairographics.org/archives/cairo/2008-December/015976.html. - - It transpires that in the early glyph culling in the gstate we were - not updating the clusters to skip culled glyphs. - - src/cairo-gstate.c | 223 +++++++++++++++++++++++++++++++++++++++++----------- - src/cairo.c | 9 ++- - 2 files changed, 183 insertions(+), 49 deletions(-) - -commit 834f1d7b7097dcc3a32f6c65d21e87fd272d924a -Author: Julien Danjou <julien@danjou.info> -Date: Tue Nov 18 10:01:49 2008 +0100 - - [xcb] check for render extension presence - - Otherwise this may leads to an invalid memory access to r. - - Fixes: Bug 18588 - XCB backend fails with missing render. - https://bugs.freedesktop.org/show_bug.cgi?id=18588 - - Signed-off-by: Julien Danjou <julien@danjou.info> - Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - - AUTHORS | 1 + - src/cairo-xcb-surface.c | 8 ++++++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit e184bf0d3592c8703b1193d37553cdcdee313139 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Dec 12 10:12:43 2008 +0000 - - Fix compilation with --enable-png=no - - Adrian Johnson spotted that the build was broken if the PNG functions were - disabled. Fix. - - src/cairoint.h | 1 - - util/cairo-script/cairo-script-operators.c | 8 ++++++++ - util/cairo-trace/trace.c | 4 ++++ - 3 files changed, 12 insertions(+), 1 deletions(-) - -commit 391c6026402dee09bb34816637114cea990cd93a -Merge: 2f1b581 d93bf10 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 11 14:41:01 2008 -0500 - - Merge branch '1.8' - -commit 2f1b581f54713c899f3b03af1e0ac8c38c36c385 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 11 10:34:37 2008 -0500 - - [quartz] Create a copy instead of increasing the reference - - The pattern could be stack allocated so we can't take a reference to it. - - Some testing of quartz shows that it doesn't deal with malloc failure particularily - well. In the best case CGFunctionCreate returns NULL, in the worst case it just crashes. - Quartz does seem to be able to handle a NULL CGFunctionRef, so returning NULL if - we fail to copy the pattern avoids complicating the code to deal with - propagating the failure and shouldn't cause any additional crashes. - - Based on a patch by Paolo Bonzini. - - src/cairo-quartz-surface.c | 16 ++++++++++++++-- - 1 files changed, 14 insertions(+), 2 deletions(-) - -commit f7b3f1b7d70a271575d3bb233b7ee51a21861c05 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Dec 10 17:54:59 2008 -0500 - - [quartz] Propagate const patterns through the casts - - As part of this avoid using cairo_pattern_get_matrix() because it requires a - 'cairo_pattern_t *' instead of 'const cairo_pattern *' - - Also, make a copy of the pattern before pasing it in to cairo_set_source() - - src/cairo-quartz-surface.c | 39 +++++++++++++++++++++++---------------- - 1 files changed, 23 insertions(+), 16 deletions(-) - -commit d93bf10edc7e432349524221a3d1b0f0b2ec8090 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Dec 10 17:02:55 2008 -0500 - - [quartz] Create a copy of the pattern so that the reference counts are balanced - - The pattern could be stack allocated so we can't take a reference to it; - instead make a copy. - - Based on a patch by Paolo Bonzini. - - src/cairo-quartz-surface.c | 16 ++++++++++++++-- - 1 files changed, 14 insertions(+), 2 deletions(-) - -commit db4c427e8460b0e326691bd6d3784178a713eb33 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Dec 9 12:03:11 2008 -0500 - - [quartz] Change some pattern casts to access to the base class - - Avoiding casts gives us some more type safety. - - src/cairo-quartz-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 5f60e2e00455f2894c7ce3805a029c806f21514a -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Dec 9 11:41:10 2008 -0500 - - Reorganize the (set|get)_antialias prototypes - - Move _cairo_gstate_set_antialias() and _cairo_gstate_get_antialias() into the - gstate section of cairoint.h - - src/cairoint.h | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 673640a3b3931995897b01d49c5dd8d82b50dac2 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 4 17:53:06 2008 -0500 - - [win32] Use MOD instead of the '%' operator - - Repeat should be handled using MOD instead of '%' so that negative numbers - are handled as expected. E.g. -1 mod 600 = 599, not 495 as the '%' operator - gives. This was causing https://bugzilla.mozilla.org/show_bug.cgi?id=466258 - - Patch from Robert O'Callahan - - src/cairo-win32-surface.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 5e06085b483dcaaa7b1b29b13cd2813c7e51e02a -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Aug 1 23:28:15 2008 +0300 - - [cairo-spans] Render clip mask surfaces with spans if we can. - - Generating surface masks for clipping can also benefit from span - rendering sometimes. - - src/cairo-clip.c | 140 ++++++++++++++++++++ - test/clip-fill-rule.pdf.argb32.ref.png | Bin 0 -> 509 bytes - test/clip-fill-rule.rgb24.ref.png | Bin 380 -> 390 bytes - test/clip-fill-rule.test-paginated.rgb24.ref.png | Bin 0 -> 361 bytes - test/clip-fill-rule.xlib.rgb24.ref.png | Bin 0 -> 380 bytes - test/clip-nesting.pdf.argb32.ref.png | Bin 0 -> 850 bytes - test/clip-nesting.rgb24.ref.png | Bin 955 -> 963 bytes - test/clip-nesting.test-fallback.rgb24.ref.png | Bin 0 -> 936 bytes - test/clip-nesting.test-paginated.rgb24.ref.png | Bin 0 -> 936 bytes - test/clip-nesting.xlib.rgb24.ref.png | Bin 0 -> 955 bytes - test/clip-operator.pdf.argb32.ref.png | Bin 11600 -> 11604 bytes - test/clip-operator.ps3.argb32.ref.png | Bin 7574 -> 7576 bytes - test/clip-operator.ref.png | Bin 8247 -> 8210 bytes - test/clip-operator.test-paginated.argb32.ref.png | Bin 0 -> 8247 bytes - test/clip-twice.pdf.argb32.ref.png | Bin 1458 -> 1498 bytes - test/clip-twice.ref.png | Bin 1362 -> 1342 bytes - test/clip-twice.rgb24.ref.png | Bin 1198 -> 1203 bytes - test/clip-twice.test-fallback.argb32.ref.png | Bin 0 -> 1343 bytes - test/clip-twice.test-fallback.rgb24.ref.png | Bin 0 -> 1179 bytes - test/clip-twice.test-paginated.argb32.ref.png | Bin 0 -> 1361 bytes - test/clip-twice.test-paginated.rgb24.ref.png | Bin 0 -> 1199 bytes - test/clip-twice.xlib.ref.png | Bin 0 -> 1362 bytes - test/clip-twice.xlib.rgb24.ref.png | Bin 0 -> 1198 bytes - test/device-offset-fractional.pdf.argb32.ref.png | Bin 0 -> 275 bytes - test/device-offset-fractional.pdf.rgb24.ref.png | Bin 0 -> 275 bytes - test/filter-nearest-offset.pdf.argb32.ref.png | Bin 0 -> 4295 bytes - test/filter-nearest-offset.pdf.rgb24.ref.png | Bin 0 -> 4295 bytes - test/filter-nearest-transformed.pdf.argb32.ref.png | Bin 0 -> 488 bytes - test/filter-nearest-transformed.pdf.rgb24.ref.png | Bin 0 -> 488 bytes - test/linear-gradient.pdf.argb32.ref.png | Bin 1118 -> 1112 bytes - test/linear-gradient.pdf.rgb24.ref.png | Bin 1118 -> 1112 bytes - test/mask.pdf.argb32.ref.png | Bin 9956 -> 9903 bytes - test/mask.ref.png | Bin 8571 -> 8581 bytes - test/mask.svg11.argb32.ref.png | Bin 8625 -> 8682 bytes - test/mask.svg12.argb32.ref.png | Bin 8625 -> 8682 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4017 -> 4011 bytes - test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3928 -> 3924 bytes - test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3928 -> 3924 bytes - test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 209 -> 215 bytes - test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 207 -> 215 bytes - test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 2386 -> 1532 bytes - test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 2386 -> 1532 bytes - test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 4247 -> 3834 bytes - test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 4247 -> 3834 bytes - test/surface-pattern.pdf.argb32.ref.png | Bin 0 -> 14808 bytes - test/surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 14808 bytes - test/trap-clip.pdf.rgb24.ref.png | Bin 6642 -> 6621 bytes - test/trap-clip.ref.png | Bin 5865 -> 5829 bytes - test/trap-clip.test-paginated.argb32.ref.png | Bin 0 -> 5865 bytes - 49 files changed, 140 insertions(+), 0 deletions(-) - -commit 18634c37026a2d6147443cb6d991576f62b07e6d -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jul 24 20:47:14 2008 +0300 - - [cairo-spans] Hook up filling paths with spans to cairo-surface-fallback.c. - - This speeds up the mask generation step in cairo_fill() for the image - surface by up to 10x in especially favourable cases. - - image-rgba twin-800 7757.80 0.20% -> 749.41 0.29%: 10.36x speedup - image-rgba spiral-diag-pixalign-nonzero-fill-512 15.16 0.44% -> 3.45 8.80%: 5.54x speedup - - More typical simple non-rectilinear geometries are sped up by 30-50%. - This patch does not affect any stroking operations or any fill - operations of pixel aligned rectilinear geometries; those are still - rendered using trapezoids. - - src/cairo-surface-fallback.c | 86 +++++++++++++++++++- - test/clip-fill-rule.test-fallback.rgb24.ref.png | Bin 0 -> 361 bytes - test/clip-operator.pdf.argb32.ref.png | Bin 12125 -> 11600 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 7367 -> 6882 bytes - test/clip-operator.ps2.rgb24.ref.png | Bin 3624 -> 3736 bytes - test/clip-operator.ps3.argb32.ref.png | Bin 0 -> 7574 bytes - test/clip-operator.ps3.rgb24.ref.png | Bin 3624 -> 3736 bytes - test/clip-operator.ref.png | Bin 8271 -> 8247 bytes - test/clip-operator.rgb24.ref.png | Bin 3258 -> 3279 bytes - test/clip-operator.test-fallback.argb32.ref.png | Bin 0 -> 8252 bytes - test/clip-operator.test-fallback.rgb24.ref.png | Bin 0 -> 3241 bytes - test/clip-operator.xlib-fallback.rgb24.ref.png | Bin 0 -> 3254 bytes - test/clip-operator.xlib.ref.png | Bin 0 -> 8271 bytes - test/clip-operator.xlib.rgb24.ref.png | Bin 0 -> 3258 bytes - test/clip-twice.pdf.argb32.ref.png | Bin 0 -> 1458 bytes - test/clipped-group.pdf.argb32.ref.png | Bin 0 -> 298 bytes - test/clipped-group.pdf.rgb24.ref.png | Bin 0 -> 298 bytes - test/degenerate-arc.ref.png | Bin 616 -> 544 bytes - test/degenerate-arc.test-fallback.argb32.ref.png | Bin 0 -> 547 bytes - test/degenerate-arc.test-fallback.rgb24.ref.png | Bin 0 -> 547 bytes - test/degenerate-arc.xlib.ref.png | Bin 0 -> 616 bytes - test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 3887 -> 3750 bytes - test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 3840 -> 3758 bytes - test/fill-alpha-pattern.ps3.argb32.ref.png | Bin 0 -> 4070 bytes - test/fill-alpha-pattern.ps3.rgb24.ref.png | Bin 0 -> 4473 bytes - test/fill-alpha-pattern.ref.png | Bin 3653 -> 3374 bytes - ...fill-alpha-pattern.test-fallback.argb32.ref.png | Bin 0 -> 3379 bytes - .../fill-alpha-pattern.test-fallback.rgb24.ref.png | Bin 0 -> 3379 bytes - test/fill-alpha-pattern.xlib.ref.png | Bin 0 -> 3653 bytes - test/fill-alpha.ref.png | Bin 2989 -> 2728 bytes - test/fill-alpha.test-fallback.argb32.ref.png | Bin 0 -> 2824 bytes - test/fill-alpha.test-fallback.rgb24.ref.png | Bin 0 -> 2824 bytes - test/fill-alpha.xlib.ref.png | Bin 0 -> 2989 bytes - test/fill-degenerate-sort-order.ref.png | Bin 2397 -> 2406 bytes - test/fill-degenerate-sort-order.rgb24.ref.png | Bin 2060 -> 2052 bytes - ...enerate-sort-order.test-fallback.argb32.ref.png | Bin 0 -> 2378 bytes - ...generate-sort-order.test-fallback.rgb24.ref.png | Bin 0 -> 2041 bytes - test/fill-degenerate-sort-order.xlib.ref.png | Bin 0 -> 2397 bytes - test/fill-degenerate-sort-order.xlib.rgb24.ref.png | Bin 0 -> 2060 bytes - test/fill-missed-stop.pdf.argb32.ref.png | Bin 0 -> 452 bytes - test/fill-rule.ref.png | Bin 1979 -> 2061 bytes - test/fill-rule.rgb24.ref.png | Bin 1722 -> 1780 bytes - test/fill-rule.test-fallback.argb32.ref.png | Bin 0 -> 1979 bytes - test/fill-rule.test-fallback.rgb24.ref.png | Bin 0 -> 1703 bytes - test/fill-rule.xlib.ref.png | Bin 0 -> 1979 bytes - test/fill-rule.xlib.rgb24.ref.png | Bin 0 -> 1722 bytes - test/finer-grained-fallbacks.ps2.argb32.ref.png | Bin 0 -> 1173 bytes - test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 1096 -> 1154 bytes - test/finer-grained-fallbacks.ps3.argb32.ref.png | Bin 0 -> 1173 bytes - test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 1096 -> 1154 bytes - test/finer-grained-fallbacks.ref.png | Bin 1111 -> 1069 bytes - test/finer-grained-fallbacks.rgb24.ref.png | Bin 1114 -> 839 bytes - ...-grained-fallbacks.test-fallback.argb32.ref.png | Bin 0 -> 1111 bytes - ...r-grained-fallbacks.test-fallback.rgb24.ref.png | Bin 0 -> 854 bytes - test/finer-grained-fallbacks.xlib.ref.png | Bin 0 -> 1111 bytes - test/finer-grained-fallbacks.xlib.rgb24.ref.png | Bin 0 -> 1114 bytes - test/font-matrix-translation.svg11.argb32.ref.png | Bin 0 -> 857 bytes - test/font-matrix-translation.svg11.rgb24.ref.png | Bin 0 -> 857 bytes - test/font-matrix-translation.svg12.argb32.ref.png | Bin 0 -> 857 bytes - test/font-matrix-translation.svg12.rgb24.ref.png | Bin 0 -> 857 bytes - test/ft-show-glyphs-table.svg11.argb32.ref.png | Bin 0 -> 9953 bytes - test/ft-show-glyphs-table.svg11.rgb24.ref.png | Bin 0 -> 9953 bytes - test/ft-show-glyphs-table.svg12.argb32.ref.png | Bin 0 -> 9953 bytes - test/ft-show-glyphs-table.svg12.rgb24.ref.png | Bin 0 -> 9953 bytes - ...t-text-vertical-layout-type1.pdf.argb32.ref.png | Bin 0 -> 3632 bytes - ...ft-text-vertical-layout-type1.pdf.rgb24.ref.png | Bin 0 -> 3632 bytes - test/ft-text-vertical-layout-type1.ref.png | Bin 3980 -> 3643 bytes - ...text-vertical-layout-type1.svg11.argb32.ref.png | Bin 0 -> 3614 bytes - ...-text-vertical-layout-type1.svg11.rgb24.ref.png | Bin 0 -> 3614 bytes - ...text-vertical-layout-type1.svg12.argb32.ref.png | Bin 0 -> 3614 bytes - ...-text-vertical-layout-type1.svg12.rgb24.ref.png | Bin 0 -> 3614 bytes - ...tical-layout-type1.test-fallback.argb32.ref.png | Bin 0 -> 3639 bytes - ...rtical-layout-type1.test-fallback.rgb24.ref.png | Bin 0 -> 3639 bytes - test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 0 -> 3980 bytes - ...t-text-vertical-layout-type3.pdf.argb32.ref.png | Bin 0 -> 3642 bytes - ...ft-text-vertical-layout-type3.pdf.rgb24.ref.png | Bin 0 -> 3642 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 3934 -> 3609 bytes - ...text-vertical-layout-type3.svg11.argb32.ref.png | Bin 0 -> 3640 bytes - ...-text-vertical-layout-type3.svg11.rgb24.ref.png | Bin 0 -> 3640 bytes - ...text-vertical-layout-type3.svg12.argb32.ref.png | Bin 0 -> 3640 bytes - ...-text-vertical-layout-type3.svg12.rgb24.ref.png | Bin 0 -> 3640 bytes - ...tical-layout-type3.test-fallback.argb32.ref.png | Bin 0 -> 3605 bytes - ...rtical-layout-type3.test-fallback.rgb24.ref.png | Bin 0 -> 3605 bytes - test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 0 -> 3934 bytes - test/huge-pattern.pdf.argb32.ref.png | Bin 0 -> 2430 bytes - test/linear-gradient.pdf.argb32.ref.png | Bin 0 -> 1118 bytes - test/linear-gradient.pdf.rgb24.ref.png | Bin 0 -> 1118 bytes - test/linear-gradient.ref.png | Bin 1021 -> 983 bytes - test/linear-gradient.svg11.argb32.ref.png | Bin 0 -> 988 bytes - test/linear-gradient.svg11.rgb24.ref.png | Bin 0 -> 988 bytes - test/linear-gradient.svg12.argb32.ref.png | Bin 0 -> 988 bytes - test/linear-gradient.svg12.rgb24.ref.png | Bin 0 -> 988 bytes - test/linear-gradient.test-fallback.argb32.ref.png | Bin 0 -> 923 bytes - test/linear-gradient.test-fallback.rgb24.ref.png | Bin 0 -> 923 bytes - test/linear-gradient.xlib.ref.png | Bin 0 -> 1021 bytes - test/mask-alpha.ref.png | Bin 640 -> 643 bytes - test/mask-alpha.svg11.argb32.ref.png | Bin 615 -> 642 bytes - test/mask-alpha.svg11.rgb24.ref.png | Bin 0 -> 592 bytes - test/mask-alpha.svg12.argb32.ref.png | Bin 615 -> 642 bytes - test/mask-alpha.svg12.rgb24.ref.png | Bin 0 -> 592 bytes - test/mask-alpha.test-fallback.argb32.ref.png | Bin 0 -> 627 bytes - test/mask-alpha.xlib.ref.png | Bin 0 -> 640 bytes - test/mask-alpha.xlib.rgb24.ref.png | Bin 0 -> 599 bytes - test/mask.pdf.argb32.ref.png | Bin 8881 -> 9956 bytes - test/mask.pdf.rgb24.ref.png | Bin 8267 -> 8735 bytes - test/mask.ref.png | Bin 8476 -> 8571 bytes - test/mask.rgb24.ref.png | Bin 7041 -> 7216 bytes - test/mask.svg11.argb32.ref.png | Bin 8527 -> 8625 bytes - test/mask.svg11.rgb24.ref.png | Bin 7935 -> 7203 bytes - test/mask.svg12.argb32.ref.png | Bin 8527 -> 8625 bytes - test/mask.svg12.rgb24.ref.png | Bin 7935 -> 7203 bytes - test/mask.test-fallback.argb32.ref.png | Bin 0 -> 8457 bytes - test/mask.test-fallback.rgb24.ref.png | Bin 0 -> 7058 bytes - test/mask.xlib-fallback.rgb24.ref.png | Bin 0 -> 7216 bytes - test/mask.xlib.ref.png | Bin 0 -> 8476 bytes - test/mask.xlib.rgb24.ref.png | Bin 0 -> 7041 bytes - test/meta-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 4017 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 4009 -> 3910 bytes - test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3924 -> 3928 bytes - test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 4593 -> 3914 bytes - test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3924 -> 3928 bytes - test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 4593 -> 3914 bytes - test/operator-clear.pdf.argb32.ref.png | Bin 1614 -> 1607 bytes - test/operator-clear.ps2.argb32.ref.png | Bin 0 -> 1156 bytes - test/operator-clear.ps3.argb32.ref.png | Bin 0 -> 1156 bytes - test/operator-source.pdf.argb32.ref.png | Bin 5149 -> 5112 bytes - test/operator-source.pdf.rgb24.ref.png | Bin 4354 -> 4186 bytes - test/operator-source.ref.png | Bin 4420 -> 4425 bytes - test/operator-source.rgb24.ref.png | Bin 3201 -> 3231 bytes - test/operator-source.test-fallback.argb32.ref.png | Bin 0 -> 4401 bytes - test/operator-source.test-fallback.rgb24.ref.png | Bin 0 -> 3200 bytes - test/operator-source.xlib-fallback.rgb24.ref.png | Bin 0 -> 3193 bytes - test/operator-source.xlib.ref.png | Bin 0 -> 4420 bytes - test/operator-source.xlib.rgb24.ref.png | Bin 0 -> 3201 bytes - test/over-above-source.ps2.argb32.ref.png | Bin 636 -> 558 bytes - test/over-above-source.ps3.argb32.ref.png | Bin 636 -> 558 bytes - test/over-above-source.ref.png | Bin 538 -> 560 bytes - test/over-above-source.rgb24.ref.png | Bin 461 -> 466 bytes - .../over-above-source.test-fallback.argb32.ref.png | Bin 0 -> 533 bytes - test/over-above-source.test-fallback.rgb24.ref.png | Bin 0 -> 450 bytes - test/over-above-source.xlib.ref.png | Bin 0 -> 538 bytes - test/over-above-source.xlib.rgb24.ref.png | Bin 0 -> 461 bytes - test/over-around-source.pdf.argb32.ref.png | Bin 0 -> 585 bytes - test/over-around-source.ps2.argb32.ref.png | Bin 632 -> 522 bytes - test/over-around-source.ps3.argb32.ref.png | Bin 632 -> 522 bytes - test/over-around-source.ref.png | Bin 614 -> 645 bytes - ...over-around-source.test-fallback.argb32.ref.png | Bin 0 -> 610 bytes - test/over-around-source.xlib.ref.png | Bin 0 -> 614 bytes - test/over-around-source.xlib.rgb24.ref.png | Bin 0 -> 503 bytes - test/over-below-source.pdf.argb32.ref.png | Bin 0 -> 464 bytes - test/over-between-source.ps2.argb32.ref.png | Bin 678 -> 551 bytes - test/over-between-source.ps3.argb32.ref.png | Bin 678 -> 551 bytes - test/over-between-source.ref.png | Bin 575 -> 612 bytes - ...ver-between-source.test-fallback.argb32.ref.png | Bin 0 -> 578 bytes - test/over-between-source.xlib.ref.png | Bin 0 -> 575 bytes - test/over-between-source.xlib.rgb24.ref.png | Bin 0 -> 473 bytes - test/push-group.pdf.argb32.ref.png | Bin 0 -> 2722 bytes - test/push-group.pdf.rgb24.ref.png | Bin 2714 -> 2740 bytes - test/push-group.ref.png | Bin 3126 -> 3060 bytes - test/push-group.rgb24.ref.png | Bin 2961 -> 2912 bytes - test/push-group.svg11.argb32.ref.png | Bin 2935 -> 3034 bytes - test/push-group.svg12.argb32.ref.png | Bin 2935 -> 3034 bytes - test/push-group.test-fallback.argb32.ref.png | Bin 0 -> 3107 bytes - test/push-group.test-fallback.rgb24.ref.png | Bin 0 -> 2942 bytes - test/push-group.xlib-fallback.rgb24.ref.png | Bin 0 -> 2912 bytes - test/push-group.xlib.ref.png | Bin 0 -> 3126 bytes - test/push-group.xlib.rgb24.ref.png | Bin 0 -> 2961 bytes - test/radial-gradient.pdf.argb32.ref.png | Bin 0 -> 79601 bytes - test/radial-gradient.pdf.rgb24.ref.png | Bin 0 -> 79601 bytes - test/random-intersections.ref.png | Bin 148722 -> 133462 bytes - ...ndom-intersections.test-fallback.argb32.ref.png | Bin 0 -> 132312 bytes - ...andom-intersections.test-fallback.rgb24.ref.png | Bin 0 -> 132312 bytes - test/random-intersections.xlib.ref.png | Bin 0 -> 148722 bytes - test/smask-fill.pdf.argb32.ref.png | Bin 0 -> 1909 bytes - test/smask-fill.pdf.rgb24.ref.png | Bin 0 -> 1909 bytes - test/smask-fill.ref.png | Bin 1223 -> 1156 bytes - test/smask-fill.svg11.argb32.ref.png | Bin 0 -> 1128 bytes - test/smask-fill.svg11.rgb24.ref.png | Bin 0 -> 1128 bytes - test/smask-fill.svg12.argb32.ref.png | Bin 0 -> 1128 bytes - test/smask-fill.svg12.rgb24.ref.png | Bin 0 -> 1128 bytes - test/smask-fill.test-fallback.argb32.ref.png | Bin 0 -> 1148 bytes - test/smask-fill.test-fallback.rgb24.ref.png | Bin 0 -> 1148 bytes - test/smask-fill.xlib-fallback.ref.png | Bin 0 -> 1156 bytes - test/smask-fill.xlib.ref.png | Bin 0 -> 1223 bytes - test/smask-image-mask.pdf.argb32.ref.png | Bin 0 -> 1651 bytes - test/smask-image-mask.pdf.rgb24.ref.png | Bin 0 -> 1651 bytes - test/smask-mask.pdf.argb32.ref.png | Bin 0 -> 4398 bytes - test/smask-mask.pdf.rgb24.ref.png | Bin 0 -> 4398 bytes - test/smask-paint.pdf.argb32.ref.png | Bin 0 -> 4496 bytes - test/smask-paint.pdf.rgb24.ref.png | Bin 0 -> 4496 bytes - test/smask-stroke.pdf.argb32.ref.png | Bin 0 -> 1417 bytes - test/smask-stroke.pdf.rgb24.ref.png | Bin 0 -> 1417 bytes - test/smask-text.svg11.argb32.ref.png | Bin 0 -> 1791 bytes - test/smask-text.svg11.rgb24.ref.png | Bin 0 -> 1791 bytes - test/smask-text.svg12.argb32.ref.png | Bin 0 -> 1791 bytes - test/smask-text.svg12.rgb24.ref.png | Bin 0 -> 1791 bytes - test/smask.pdf.argb32.ref.png | Bin 0 -> 4496 bytes - test/smask.pdf.rgb24.ref.png | Bin 0 -> 4496 bytes - test/text-pattern.pdf.argb32.ref.png | Bin 1823 -> 2151 bytes - test/text-pattern.svg11.argb32.ref.png | Bin 1733 -> 1743 bytes - test/text-pattern.svg12.argb32.ref.png | Bin 1733 -> 1743 bytes - test/text-rotate.svg11.argb32.ref.png | Bin 0 -> 16942 bytes - test/text-rotate.svg11.rgb24.ref.png | Bin 0 -> 16942 bytes - test/text-rotate.svg12.argb32.ref.png | Bin 0 -> 16942 bytes - test/text-rotate.svg12.rgb24.ref.png | Bin 0 -> 16942 bytes - test/text-transform.svg11.argb32.ref.png | Bin 0 -> 5677 bytes - test/text-transform.svg11.rgb24.ref.png | Bin 0 -> 5677 bytes - test/text-transform.svg12.argb32.ref.png | Bin 0 -> 5677 bytes - test/text-transform.svg12.rgb24.ref.png | Bin 0 -> 5677 bytes - test/trap-clip.pdf.argb32.ref.png | Bin 5809 -> 6720 bytes - test/trap-clip.pdf.rgb24.ref.png | Bin 5768 -> 6642 bytes - test/trap-clip.ps2.argb32.ref.png | Bin 5690 -> 4849 bytes - test/trap-clip.ref.png | Bin 5772 -> 5865 bytes - test/trap-clip.rgb24.ref.png | Bin 5365 -> 5457 bytes - test/trap-clip.test-fallback.argb32.ref.png | Bin 0 -> 5753 bytes - test/trap-clip.test-fallback.rgb24.ref.png | Bin 0 -> 5379 bytes - test/trap-clip.xlib.ref.png | Bin 0 -> 5772 bytes - test/trap-clip.xlib.rgb24.ref.png | Bin 0 -> 5365 bytes - test/twin.svg11.argb32.ref.png | Bin 0 -> 1797 bytes - test/twin.svg11.rgb24.ref.png | Bin 0 -> 1797 bytes - test/twin.svg12.argb32.ref.png | Bin 0 -> 1797 bytes - test/twin.svg12.rgb24.ref.png | Bin 0 -> 1797 bytes - test/unbounded-operator.pdf.argb32.ref.png | Bin 0 -> 2713 bytes - test/unbounded-operator.ps2.argb32.ref.png | Bin 0 -> 2713 bytes - test/unbounded-operator.ps3.argb32.ref.png | Bin 0 -> 2713 bytes - test/unbounded-operator.rgb24.ref.png | Bin 1315 -> 1341 bytes - .../unbounded-operator.test-fallback.rgb24.ref.png | Bin 0 -> 1306 bytes - test/unbounded-operator.xlib.rgb24.ref.png | Bin 0 -> 1315 bytes - test/user-font-proxy.pdf.argb32.ref.png | Bin 0 -> 16937 bytes - test/user-font-proxy.pdf.rgb24.ref.png | Bin 0 -> 16937 bytes - test/user-font-proxy.ref.png | Bin 18121 -> 16937 bytes - test/user-font-proxy.svg11.argb32.ref.png | Bin 0 -> 16836 bytes - test/user-font-proxy.svg11.rgb24.ref.png | Bin 0 -> 16836 bytes - test/user-font-proxy.svg12.argb32.ref.png | Bin 0 -> 16836 bytes - test/user-font-proxy.svg12.rgb24.ref.png | Bin 0 -> 16836 bytes - test/user-font-proxy.test-fallback.argb32.ref.png | Bin 0 -> 16835 bytes - test/user-font-proxy.test-fallback.rgb24.ref.png | Bin 0 -> 16835 bytes - test/user-font-proxy.xlib.ref.png | Bin 0 -> 18121 bytes - test/user-font.ref.png | Bin 6183 -> 6082 bytes - test/user-font.svg11.argb32.ref.png | Bin 0 -> 6411 bytes - test/user-font.svg11.rgb24.ref.png | Bin 0 -> 6411 bytes - test/user-font.svg12.argb32.ref.png | Bin 0 -> 6411 bytes - test/user-font.svg12.rgb24.ref.png | Bin 0 -> 6411 bytes - test/user-font.test-fallback.argb32.ref.png | Bin 0 -> 5601 bytes - test/user-font.test-fallback.rgb24.ref.png | Bin 0 -> 5601 bytes - test/user-font.xlib.ref.png | Bin 0 -> 6183 bytes - 246 files changed, 85 insertions(+), 1 deletions(-) - -commit 85b81a3e59401e2fc68209634f7622694e7d30e1 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 11 13:10:20 2008 +0300 - - [cairo-spans] Implement a span renderer for cairo_image_surface_t. - - This implementation first produces an A8 alpha mask and then - pixman_image_composites the result to the destination with the source. - Clipping is handled by pixman when it is region clipping or by - cairo-surface-fallback when it is something more complex. - - src/cairo-image-surface.c | 273 ++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 233 insertions(+), 40 deletions(-) - -commit 7994fc06ad66e31fcbc16f6e8cd9ad226022ec8c -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Aug 28 22:16:07 2008 +0300 - - [cairo-spans] New cairo_tor_scan_converter_t. - - Imports a new polygon scan converter implementation from the - repository at - - http://cgit.freedesktop.org/~joonas/glitter-paths/ - - Glitter paths is a stand alone polygon rasteriser derived from David - Turner's reimplementation of Tor Anderssons's 15x17 supersampling - rasteriser from the Apparition graphics library. The main new feature - in this implementation is cheaply choosing per-scan line between doing - fully analytical coverage computation for an entire row at a time - vs. using a supersampling approach. - - src/Makefile.sources | 1 + - src/cairo-spans-private.h | 10 + - src/cairo-spans.c | 18 +- - src/cairo-tor-scan-converter.c | 2003 ++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 2027 insertions(+), 5 deletions(-) - -commit 2078e5b20fdff76ada6e13b29b2775b7dcd35439 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jul 31 01:58:08 2008 +0300 - - [cairo-spans] New _cairo_path_fixed_fill_using_spans(). - - Adds a helper function for backends to use for filling a path using - spans. - - src/cairo-spans-private.h | 10 +++ - src/cairo-spans.c | 145 +++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 155 insertions(+), 0 deletions(-) - -commit 4a9b274eebe674bbc5c66dc3e33256723cdf9829 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 11 00:59:47 2008 +0300 - - [cairo-spans] Add a check/create_span_renderer backend methods. - - A surface will have the chance to use span rendering at cairo_fill() - time by creating a renderer for a specific combination of - pattern/dst/op before the path is scan converted. The protocol is to - first call check_span_renderer() to see if the surface wants to render - with spans and then later call create_span_renderer() to create the - renderer for real once the extents of the path are known. - - No backends have an implementation yet. - - src/cairo-analysis-surface.c | 4 +++ - src/cairo-beos-surface.cpp | 2 + - src/cairo-directfb-surface.c | 2 + - src/cairo-glitz-surface.c | 2 + - src/cairo-image-surface.c | 2 + - src/cairo-meta-surface.c | 2 + - src/cairo-os2-surface.c | 2 + - src/cairo-paginated-surface.c | 2 + - src/cairo-pdf-surface.c | 2 + - src/cairo-ps-surface.c | 2 + - src/cairo-quartz-image-surface.c | 2 + - src/cairo-quartz-surface.c | 2 + - src/cairo-script-surface.c | 2 + - src/cairo-sdl-surface.c | 2 + - src/cairo-surface.c | 53 ++++++++++++++++++++++++++++++++++++ - src/cairo-svg-surface.c | 2 + - src/cairo-type3-glyph-surface.c | 2 + - src/cairo-win32-printing-surface.c | 2 + - src/cairo-win32-surface.c | 2 + - src/cairo-xcb-surface.c | 2 + - src/cairo-xlib-surface.c | 2 + - src/cairoint.h | 30 ++++++++++++++++++++ - src/test-fallback-surface.c | 2 + - src/test-meta-surface.c | 2 + - src/test-paginated-surface.c | 2 + - 25 files changed, 131 insertions(+), 0 deletions(-) - -commit 948c3526dcdbc440395fff4ce9bf4b7553930d92 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Oct 24 17:37:30 2008 +0300 - - [cairo-spans] New abstract types for scan converting polygons. - - A cairo_span_renderer_t implementation can be provided by a surface if - it wants to render paths as horizontal spans of the alpha component of - a mask. Its job is to composite a source pattern to the destination - surface when given spans of alpha coverage for a row while taking care - of backend specific clipping. - - A cairo_scan_converter_t takes edges of a flattened path and generates - spans for a span renderer to render. - - src/Makefile.sources | 2 + - src/cairo-spans-private.h | 124 +++++++++++++++++++++++ - src/cairo-spans.c | 242 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 1 + - 4 files changed, 369 insertions(+), 0 deletions(-) - -commit 4b227143b3daab75148cd54c9e7580d509864e0d -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Jul 31 01:54:53 2008 +0300 - - [cairo-spans] Introduce a type to track which pixels combine in a compositing op. - - A cairo_composite_rectangles_t contains the coordinates of rectangular - windows into each of the source pattern, mask, clip and destination - surface containing the pixels that will combine in a compositing - operation. The idea is to have a uniform way to represent all the - translations involved rather than overloading parameters like src_x/y, - dst_x/y, etc., sometimes with different incompatible meanings across - functions. - - src/cairo-rectangle.c | 21 +++++++++++++++++++++ - src/cairo-types-private.h | 24 ++++++++++++++++++++++++ - src/cairoint.h | 7 +++++++ - 3 files changed, 52 insertions(+), 0 deletions(-) - -commit a370d077bc697588b6dac2556afa0b95ff83a77d -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Jul 25 16:35:14 2008 +0300 - - [path-fixed] New _cairo_path_fixed_is_region(). - - We want to hit the current fast paths for rendering axis aligned - rectilinear paths rather than spans, and for that we need to be able - to identify regional paths. - - src/cairo-path-fixed.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 3 + - 2 files changed, 99 insertions(+), 0 deletions(-) - -commit 6acb8223930081f70b422ef93a49ea645c2cc12d -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Sep 12 19:32:12 2008 +0300 - - [path-fixed] Avoid extra indirection when iterating already flat paths. - - Perform a plain iteration rather than a flattening one if the path - knows it doesn't have any curves. - - src/cairo-path-fixed.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 0c0f4862c52d68776024f125b003ade455044b27 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Dec 6 13:32:37 2008 +0200 - - [perf-diff] Fix cairo-perf-diff for git 1.6 - - Since git 1.6 the plumbing commands aren't installed in the user's - path by default. This patch fixes cairo-perf-diff to find the - git-sh-setup command from git's lib dir. - - perf/cairo-perf-diff | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit afba0c312958852586b846ec615cff1bd3e5cde7 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Sep 12 17:41:45 2008 +0300 - - [perf] Add perf tests to hit rectilinear code paths. - - These tests look at the differences in code paths - hit by filling paths that are rectilinear (or not) and - pixel aligned (or not) with the even-odd and non-zero - fill rules. The paths are not simple, so they don't - hit the special case quad/triangle tessellator. - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/spiral.c | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 204 insertions(+), 1 deletions(-) - -commit 8ec58113df417e1ec1d331ab65267c34e6d32096 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Fri Sep 12 17:32:40 2008 +0300 - - [perf] Explicitly test rendering a path with lots of intersections. - - We don't have one just for this purpose. The only other - path with many intersections that gets actually rendered is zrusin-another, - but that might be sped up in the future (say by identifying - collinearities up front or something like that.) - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/intersections.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 101 insertions(+), 1 deletions(-) - -commit 08b486c9aa1d6ad01f1b17a16dcb4d695e8cbf7d -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Thu Dec 4 17:53:06 2008 -0500 - - [win32] Use MOD instead of the '%' operator - - Repeat should be handled using MOD instead of '%' so that negative numbers - are handled as expected. E.g. -1 mod 600 = 599, not 495 as the '%' operator - gives. This was causing https://bugzilla.mozilla.org/show_bug.cgi?id=466258 - - Patch from Robert O'Callahan - - src/cairo-win32-surface.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 540de34453d16092acd2978b513831a02f01f59f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 26 12:53:29 2008 +0000 - - [matrix] Optimise invert for simple scaling|translation matrices. - - Peter Hercek reported, and provided a very useful test case for, a bug - that caused his applications to crash with Cairo detecting an - non-invertible pattern matrix and thus asserting the impossible happened. - Bisecting revealed that the bug first appeared with 3c18d95 and - disappeared with 0d0c6a1. Since neither of these explain the crash, - further investigation revealed a compiler bug (gcc 4.3.3 20081130, - earlier versions have different bugs!) that caused the matrix inversion - to be invalid iff _cairo_matrix_scalar_multiply() was inlined (i.e. -O0, - or an explicit noinline atttribute on that function prevented the bug, as - did -msse.) So we apply this workaround to hide the bug in the stable - series... - - The matrix is quite often just a simple scale and translate (or even - identity!). For this class of matrix, we can skip the full adjoint - rearrangement and determinant calculation and just compute the inverse - directly. - (cherry picked from commit 0d0c6a199c5b631299c72dce80d66ac0f4936a64) - - src/cairo-matrix.c | 26 +++++++++++++++++++++++++- - 1 files changed, 25 insertions(+), 1 deletions(-) - -commit aff32019a70600fec5040a5a73c4f0b688826064 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sun Nov 30 23:28:59 2008 -0500 - - [Makefile.am] Use top_srcdir instead of srcdir - - Doesn't make much difference here, but makes our intention clear. - - build/Makefile.am.changelog | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 51a75ad932af4a3c3da96ef98de79328afa200c3 -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Sun Nov 30 20:42:49 2008 +0800 - - glitz: Replace specified color with an opaque one if dst surface don't have an alpha channel. - - Otherwise if underlying glitz drawable has an alpha channel, glitz_set_rectangles - will set its alpha channel to specified value instead of opaque one and effects following - composite operations since glitz draws to attached drawable then copies its content to - the dst surface. With this commit, three test cases such as operator, operator-alpha and - unbounded-operator passes now. - - src/cairo-glitz-surface.c | 18 ++++++++++++------ - 1 files changed, 12 insertions(+), 6 deletions(-) - -commit 7247017cf5e6b497a5836d9081ee153d27c6b15e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 29 11:47:25 2008 +0000 - - Fix up a couple of likely(malloc==NULL) - - Adrian Johnson spotted that I marked a few malloc failures as likely, - whoops. - - src/cairo-cff-subset.c | 4 ++-- - src/cairo-clip.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 1659db2c1f4cc72e51fb43d119822ec7aaa77ac0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 29 10:37:58 2008 +0000 - - [test] Fix surface leak from device-offset-positive. - - A forgotten cairo_surface_destroy() caused the similar surface to be - leaked during the test. - - test/device-offset-positive.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 0d757a793d7fe2860c6a522124a123864fc97f0a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 29 10:36:34 2008 +0000 - - [png] Fix leak of original png data on error path. - - The error path was missing a _cairo_output_stream_destroy() to cleanup a - copy of the incoming PNG data. - - src/cairo-png.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit e6963a5bfebda69a1ef0a986cede84bcd955b6d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 17:26:55 2008 +0000 - - Mark allocation failures as unlikely. - - Use the gcc likelihood annotation to indicate that allocation failures are - extremely unlikely. - - src/cairo-analysis-surface.c | 4 +- - src/cairo-array.c | 4 +- - src/cairo-base85-stream.c | 2 +- - src/cairo-bentley-ottmann.c | 13 +++---- - src/cairo-cache.c | 6 ++-- - src/cairo-cff-subset.c | 66 +++++++++++++++++++------------------- - src/cairo-clip.c | 8 ++-- - src/cairo-deflate-stream.c | 2 +- - src/cairo-directfb-surface.c | 2 +- - src/cairo-font-face.c | 6 ++-- - src/cairo-ft-font.c | 25 ++++++++------- - src/cairo-gstate.c | 17 +++++----- - src/cairo-hash.c | 6 ++-- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 12 +++--- - src/cairo-lzw.c | 4 +- - src/cairo-meta-surface.c | 24 +++++++------- - src/cairo-misc.c | 24 +++++++++----- - src/cairo-output-stream.c | 14 ++++---- - src/cairo-paginated-surface.c | 2 +- - src/cairo-path-fixed.c | 4 +- - src/cairo-path-stroke.c | 4 +- - src/cairo-path.c | 8 ++-- - src/cairo-pattern.c | 36 ++++++++++---------- - src/cairo-pdf-operators.c | 6 ++-- - src/cairo-pdf-surface.c | 34 ++++++++++---------- - src/cairo-pen.c | 8 ++-- - src/cairo-png.c | 14 ++++---- - src/cairo-polygon.c | 2 +- - src/cairo-ps-surface.c | 16 +++++----- - src/cairo-region.c | 2 +- - src/cairo-scaled-font-subsets.c | 28 ++++++++-------- - src/cairo-scaled-font.c | 29 ++++++++--------- - src/cairo-script-surface.c | 14 ++++---- - src/cairo-sdl-surface.c | 2 +- - src/cairo-skiplist.c | 2 +- - src/cairo-stroke-style.c | 2 +- - src/cairo-surface-fallback.c | 2 +- - src/cairo-surface.c | 4 +- - src/cairo-svg-surface.c | 16 +++++----- - src/cairo-traps.c | 4 +- - src/cairo-truetype-subset.c | 30 +++++++++--------- - src/cairo-type1-fallback.c | 15 ++++----- - src/cairo-type1-subset.c | 22 ++++++------ - src/cairo-type3-glyph-surface.c | 2 +- - src/cairo-user-font.c | 2 +- - src/cairo-xlib-display.c | 4 +- - src/cairo-xlib-screen.c | 2 +- - src/cairo-xlib-surface.c | 25 +++++++-------- - src/cairo-xlib-visual.c | 2 +- - src/cairo.c | 4 +- - src/test-fallback-surface.c | 2 +- - src/test-meta-surface.c | 2 +- - src/test-paginated-surface.c | 2 +- - 54 files changed, 300 insertions(+), 294 deletions(-) - -commit d1801c23fae3777c7c59e084894a3410f7a1f932 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 15:38:37 2008 +0000 - - Mark if(status) as being unlikely. - - The error paths should be hit very rarely during normal operation, so mark - them as being unlikely so gcc may emit better code. - - src/cairo-analysis-surface.c | 24 ++-- - src/cairo-array.c | 6 +- - src/cairo-cache.c | 4 +- - src/cairo-cff-subset.c | 208 ++++++++++++------------ - src/cairo-clip.c | 23 ++-- - src/cairo-font-face.c | 14 +- - src/cairo-ft-font.c | 44 +++--- - src/cairo-gstate.c | 66 ++++---- - src/cairo-image-surface.c | 16 +- - src/cairo-lzw.c | 4 +- - src/cairo-meta-surface.c | 42 +++--- - src/cairo-misc.c | 6 +- - src/cairo-output-stream.c | 2 +- - src/cairo-paginated-surface.c | 38 +++--- - src/cairo-path-fill.c | 6 +- - src/cairo-path-fixed.c | 14 +- - src/cairo-path-stroke.c | 56 ++++---- - src/cairo-path.c | 6 +- - src/cairo-pattern.c | 34 ++-- - src/cairo-pdf-operators.c | 60 ++++---- - src/cairo-pdf-surface.c | 334 +++++++++++++++++++------------------- - src/cairo-pen.c | 6 +- - src/cairo-png.c | 14 +- - src/cairo-ps-surface.c | 122 +++++++------- - src/cairo-scaled-font-subsets.c | 30 ++-- - src/cairo-scaled-font.c | 72 ++++---- - src/cairo-script-surface.c | 160 ++++++++++---------- - src/cairo-sdl-surface.c | 4 +- - src/cairo-surface-fallback.c | 82 +++++----- - src/cairo-surface.c | 60 ++++---- - src/cairo-svg-surface.c | 84 +++++----- - src/cairo-traps.c | 12 +- - src/cairo-truetype-subset.c | 98 ++++++------ - src/cairo-type1-fallback.c | 44 +++--- - src/cairo-type1-subset.c | 46 +++--- - src/cairo-type3-glyph-surface.c | 10 +- - src/cairo-user-font.c | 18 +- - src/cairo-xlib-screen.c | 4 +- - src/cairo-xlib-surface.c | 92 ++++++------ - src/cairo.c | 138 ++++++++-------- - 40 files changed, 1053 insertions(+), 1050 deletions(-) - -commit f0804d4856496a46d0b2270d5815856bf63b4cf8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 28 23:58:55 2008 +0000 - - [test] Exercise caps and joins under reflection. - - The nature of the joins depends critically upon whether the joint is - clockwise or counter-clockwise, so extend the basic caps-joins test to - exercise both conditions i.e. repeat the test under a reflection. - - test/Makefile.am | 6 ++- - test/caps-joins-curve.c | 111 ++++++++++++++++++++++++++++++++++++++ - test/caps-joins-curve.ps.ref.png | Bin 0 -> 3728 bytes - test/caps-joins-curve.ref.png | Bin 0 -> 5132 bytes - test/caps-joins.c | 40 ++++++++++---- - test/caps-joins.ps.ref.png | Bin 0 -> 2282 bytes - test/caps-joins.ps2.ref.png | Bin 1459 -> 0 bytes - test/caps-joins.ps3.ref.png | Bin 1459 -> 0 bytes - test/caps-joins.ref.png | Bin 1488 -> 2380 bytes - test/dash-curve.ref.png | Bin 39642 -> 39696 bytes - 10 files changed, 143 insertions(+), 14 deletions(-) - -commit f39dd86e292e9af3438acb041a3a7330fb4a3b22 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 27 00:23:11 2008 +0000 - - [test] Add simple cap test. - - Add a test case that only exercises capping, useful for developing - new strokers. - - test/Makefile.am | 3 ++ - test/caps.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ - test/caps.ps.ref.png | Bin 0 -> 1466 bytes - test/caps.ref.png | Bin 0 -> 1601 bytes - 4 files changed, 90 insertions(+), 0 deletions(-) - -commit f2982e103c27cad1edf648dadcfffe1a15763efd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 17:23:33 2008 +0000 - - [fill] Allow rectangles to be implicitly closed. - - Also scan for appendages of simple rectangles. - - src/cairo-path-fill.c | 2 +- - src/cairo-path-fixed-private.h | 4 ++-- - src/cairo-path-fixed.c | 14 +++++++++----- - 3 files changed, 12 insertions(+), 8 deletions(-) - -commit d2bcf1d76defda861e1a7f2271046851083ad694 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 28 17:12:03 2008 +0000 - - [path] Carefully check for no more points. - - As the empty path points to an embedded buf, we cannot rely on the buf - pointer being NULL to mark end-of-path. - - src/cairo-path-fixed-private.h | 10 +++++----- - src/cairo-path-fixed.c | 15 ++++++++++++--- - 2 files changed, 17 insertions(+), 8 deletions(-) - -commit 424aba9be558e89b4d42554ca6a5042574e3df75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 20:38:24 2008 +0000 - - [check] Search for the word NOTE - - Add word boundary markers around the regexp so that we only match for the - word NOTE and not on substrings like GL_NOTEQUAL. - - src/check-doc-syntax.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 36147140ce56d8d3492b971a9b6ceff97e212e01 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 28 18:54:02 2008 +0000 - - [perf] Fix build - - If automake detects the use of cairo_perf_LDADD in an unused conditional - that overrides the default - so we need to manually set cairo_perf_LDADD. - - perf/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ed6bd4766cb47e97b1a6ecb81eff5bf4673d549b -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Fri Nov 28 07:54:41 2008 +0800 - - image: Use unsigned long to compute color masks. - - Use unsigned long in the first place to prevent compiler from - expanding signed bit to all upper bits. e.g, a alpha mask 0xff0000 - will expand to 0xffffffffff00000 on 64 bit platform which is not - what we expected. - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 41cb91d417e7c0dc1cc767ea0fb38a1f8b3f4e43 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Wed Nov 26 23:49:12 2008 +0200 - - [script] Use the in-tree libcairo for csi-replay. - - csi-replay was missing the in-tree libcairo.la so the build was - failing while looking for new symbols from the system libcairo. - - util/cairo-script/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f5634818f1e5cc0adaa326662c099a75f4e615eb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 14:56:38 2008 +0000 - - [os2] Move include cairo.h before os2.h - - The defines need to come first, but we specify that cairo.h is the first - header file to be included by files. - - src/cairo-os2.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2f0f9a1a593db43dd04507c5989cd0af4b1486de -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Nov 13 10:50:41 2008 +0100 - - [os2] Fix includes - - Patch from Dave Yeo to make cairo-os2.h include os2.h directly so the - header is standalone. - - src/cairo-os2-private.h | 11 ----------- - src/cairo-os2-surface.c | 5 ----- - src/cairo-os2.h | 8 ++++++++ - 3 files changed, 8 insertions(+), 16 deletions(-) - -commit 5591cb58fd94483ec3dc7c169ae8cf0a6b7841bd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 17:43:22 2008 +0000 - - [script] Only use zlib if available. - - Conditionally link against zlib - replaying a script will fail if the - trace uses a compressed format. - - configure.ac | 5 ++++- - util/cairo-script/Makefile.am | 2 +- - util/cairo-script/cairo-script-file.c | 5 ++++- - util/cairo-script/cairo-script-operators.c | 2 ++ - 4 files changed, 11 insertions(+), 3 deletions(-) - -commit 9432c0c9b89ed6b3d369b377cf884918cd6180db -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 17:33:35 2008 +0000 - - [script] Link the interpreter against the built library. - - Ensure we correctly link against the version of cairo just built. - - util/cairo-script/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 815e5b962ef8477c344da0f0b52c1f85c9854777 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 17:30:29 2008 +0000 - - [script] Add a fallback image surface for replay - - If we do not have a native windowing surface compiled into the library, - just replay the script to an image surface. - - util/cairo-script/csi-replay.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 5e376523628d5e2078e395ea7263a04bacd37c47 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 17:26:57 2008 +0000 - - [skiplist] Check for ffs() - - Wine at least does not provide ffs(), so check at configure time and - open-code a replacement. - - build/configure.ac.system | 2 +- - src/cairo-skiplist.c | 11 +++++++++++ - 2 files changed, 12 insertions(+), 1 deletions(-) - -commit 60282b866aab359840b4bcaa6aaccaca2eccd3d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 16:58:29 2008 +0000 - - [glitz] Fix clone_similar(). - - Clone similar open-coded various image surface functions and failed to - clone a sub-region resulting in failures for mask-transformed-* and - large-source. - - src/cairo-glitz-surface.c | 458 ++++++++++++++------------------------------- - 1 files changed, 137 insertions(+), 321 deletions(-) - -commit 47275c7ece06c0d02f2d7c9aa81d87a7144392b0 -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Wed Nov 26 15:56:48 2008 +0100 - - [test] Fix glitz-surface-source test - - The recent changes to separate glitz/agl broke the compilation of the - glitz-surface-source test. - - test/glitz-surface-source.c | 96 ++++++++++++++++++++++++++++++++- - test/glitz-surface-source.ps2.ref.png | Bin 0 -> 376 bytes - test/glitz-surface-source.ps3.ref.png | Bin 0 -> 376 bytes - 3 files changed, 94 insertions(+), 2 deletions(-) - -commit a84ea7829065b7e1d33d6fed6bcf0c7c8abd383a -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Wed Nov 26 15:49:00 2008 +0100 - - [test] Add quartz-surface-source test - - Add a simple test to exercise using a Quartz surface as a source. - - test/Makefile.am | 6 ++++- - test/quartz-surface-source.c | 42 ++++++++++++++++++++++++++++++++ - test/quartz-surface-source.ps2.ref.png | Bin 0 -> 376 bytes - test/quartz-surface-source.ps3.ref.png | Bin 0 -> 376 bytes - test/quartz-surface-source.ref.png | Bin 0 -> 332 bytes - 5 files changed, 47 insertions(+), 1 deletions(-) - -commit 993941cfd701eb222b81cdddeabf6f7ff2daa150 -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Wed Nov 26 13:32:11 2008 +0000 - - [perf] Fix SDL compilation for MacOS X - - The attached patch makes the SDL tests compile under Mac OS X. The - problem is: - - 1) that <SDL_main.h> should be included in files that define the main - function for SDL Mac OS X programs (this is not true with the upcoming - SDL 1.3 release). - - 2) that -lSDLmain, because it is statically linked, needs the Cocoa - framework in the LDADD of the main program. Again, 1.3 will not require - this. - - perf/Makefile.am | 4 ++++ - perf/cairo-perf.c | 4 ++++ - test/Makefile.am | 4 ++++ - test/cairo-test-runner.c | 4 ++++ - 4 files changed, 16 insertions(+), 0 deletions(-) - -commit 8a5b55ca6c69671a138f65ab15bcf93163f24a37 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 13:26:40 2008 +0000 - - [matrix] Impose a maximum number of refinement iterations - - Ensure we do not loop forever trying to minimise the error between the - pixman and cairo matrices - for instance when the FPU is not running at - full precision. - - src/cairo-matrix.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 4218699642c621eb3098a5251ef88d8c7d8a96d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 11:54:29 2008 +0000 - - [skiplist] Use ffs() - - Use ffs() [find-first-set-bit] instead of open-coding, which is about 25% - faster on my test machine. - - src/cairo-skiplist.c | 11 +---------- - 1 files changed, 1 insertions(+), 10 deletions(-) - -commit 039437c9cfaeed7a2cc1977623ab8bda9854b58a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 26 10:31:09 2008 +0000 - - [png] Use FILE* instead of void*. - - Adrian Johnson reported that cygwin complained about the use of the void * - within feof() as it was using a macro and attempted a to deference the - void*... - - src/cairo-png.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 8fa3cd95641e9138406d651b0734ee84f1da60d2 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Nov 26 06:40:47 2008 +1030 - - Change uint to uint32_t - - src/cairo-image-info.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e828f7330633cd839f094bf8409de0bcff17c95c -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Wed Nov 26 00:09:11 2008 +0800 - - glitz: Apply fixup to unbounded operators to clear area outside of mask - - src/cairo-glitz-surface.c | 79 +++++++++++++++++++++++++++++++++++++------- - 1 files changed, 66 insertions(+), 13 deletions(-) - -commit 449e7518bee5d0238138176b3b71d137c6fc01e7 -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Tue Nov 25 22:55:24 2008 +0800 - - glitz: set correct parameters for linear and radial pattern. - - Glitz expects 16.16 fixed point, but we use 24.8 fixed point by default. - - src/cairo-glitz-surface.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 3bde440e00ba19e968b854c1505dc4d1ace83504 -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Tue Nov 25 22:36:53 2008 +0800 - - glitz: fixup another stupid bug in fill_rectangles. - - Wny I doesn't notice them before. Without fixes it fills n_rect times of - the first one in the rectangle list. - - src/cairo-glitz-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 4ac38f7c2bde67cab37805cab8a2effb2a8617e4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 11:52:01 2008 +0000 - - [fill] Emit rectangles for GdkRegion - - Scan the path for a series of consistently wound rectangles. - - src/cairo-path-fill.c | 85 ++++++++++++++++++++++------ - src/cairo-path-fixed-private.h | 17 ++++++ - src/cairo-path-fixed.c | 124 +++++++++++++++++++++++++++++++++++++--- - 3 files changed, 201 insertions(+), 25 deletions(-) - -commit 23df74e5ffd6be876f3c19ee9d71683f5a0ed6f4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 11:45:30 2008 +0000 - - [xlib] Cosmetic tweak. - - Tightly scope the local rects. - - src/cairo-xlib-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 06fabd6cbd0ad187f5f9f155d6b7962f76ec5dda -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 12:05:26 2008 +0000 - - [path] Fix up extents. - - Forgot to round the box to the integer rectangle and missed why only - testing on image. Very naughty. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-path-bounds.c | 20 +++++++++++--------- - 2 files changed, 12 insertions(+), 10 deletions(-) - -commit 1f44fb97f3973aa90c4f27bcf9341149370c825d -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Tue Nov 25 20:45:03 2008 +0800 - - cairo-script: add $(top_builddir)/src to CPPPATH. - - $(top_builddir)/src is needed to find cairo-features.h while - building out of tree. - - util/cairo-script/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 487c708b3b6727eb2f8d3714edeae356a7cbbd40 -Author: Paolo Bonzini <bonzini@gnu.org> -Date: Tue Nov 25 20:40:37 2008 +0800 - - [boilerplate] fix compilation for glitz-agl - - As suggested on the list, this splits the cairo-boilerplate-glitz.c - file in three separate files, one for each backend. Furthermore, - it fixes a few problems in compilation of the AGL backend test harness. - - boilerplate/Makefile.sources | 6 +- - boilerplate/cairo-boilerplate-glitz-agl.c | 166 ++++++++ - boilerplate/cairo-boilerplate-glitz-glx.c | 244 ++++++++++++ - boilerplate/cairo-boilerplate-glitz-private.h | 6 + - boilerplate/cairo-boilerplate-glitz-wgl.c | 164 ++++++++ - boilerplate/cairo-boilerplate-glitz.c | 517 ------------------------- - 6 files changed, 585 insertions(+), 518 deletions(-) - -commit ca80b8c652dde4449216da9d11691202eef97bbd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 10:25:24 2008 +0000 - - [pdf] Add a default case to silence the compiler. - - The foolish compiler was emitting a warning about a potential - uninitialized variable even though the switch was fully populated. - - src/cairo-pdf-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b8991a1c69ae5d8fb630296a3c689aa8d1546671 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 10:11:59 2008 +0000 - - [in-fill] Add the implicit close-path during move-to. - - When interpreting a fixed-path for a fill operation, any move-to - implicitly closes the current path. - - src/cairo-gstate.c | 12 ++++++------ - src/cairo-path-in-fill.c | 23 +++++++++++++---------- - src/cairo.c | 11 ++++------- - src/cairoint.h | 4 ++-- - 4 files changed, 25 insertions(+), 25 deletions(-) - -commit 59de6fb89e80ee6aeeb2984b545ceb9bb9f0f7bb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 25 10:04:50 2008 +0000 - - [path] Compute approximate extents. - - When computing the bounds of the clip path, we care more for a fast result - than absolute precision as the extents are only used as a guide to trim - the future operations. So computing the extents of the path suffices. - - src/cairo-analysis-surface.c | 16 ++-------- - src/cairo-clip.c | 29 +++---------------- - src/cairo-gstate.c | 13 ++------ - src/cairo-path-bounds.c | 63 ++++++++++++++++++++++++++++++++++++++--- - src/cairo-surface.c | 8 +++-- - src/cairo.c | 10 ++---- - src/cairoint.h | 8 ++++- - 7 files changed, 84 insertions(+), 63 deletions(-) - -commit b6bf047494fc308fff00d818b2920d8ba4aa7aed -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 21 15:27:31 2008 +0000 - - [clip] Check for error surface - - The update to use a NULL backend with an error surface broke creating a - context from an error surface. - - src/cairo-clip.c | 2 +- - src/cairo.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 721cad9b24c2ad049320950d231ed84046c5b8ab -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Nov 24 22:41:03 2008 +1030 - - Fix typo - - src/cairo-misc.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 70e4c532722bbcad1eca50438e6ab2cdd0ea9b53 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Nov 24 22:38:30 2008 +1030 - - Document location of image format specifications - - src/cairo-image-info.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 4ca644af274bda4603e7d02dbeca8641bbb3ff79 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Nov 24 00:29:54 2008 +1030 - - Win32-print: Add PNG embedding support - - src/cairo-win32-printing-surface.c | 106 +++++++++++++++++++++++++++--------- - src/cairo-win32-private.h | 3 + - 2 files changed, 82 insertions(+), 27 deletions(-) - -commit f59a3e03fc91dc4a1769b07bda77a364cc570bc8 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 22:27:49 2008 +1030 - - Add PNG get info function - - src/cairo-image-info-private.h | 5 ++++ - src/cairo-image-info.c | 46 ++++++++++++++++++++++++++++++++++----- - 2 files changed, 45 insertions(+), 6 deletions(-) - -commit 1892907e24d9f9f31942c6962aaa6d2ff9553ce7 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 21:36:40 2008 +1030 - - PDF: Disable PDF 1.5 features when version 1.4 is selected - - JPEG 2000 image embedding and ActualText marked content are - PDF 1.5 features. - - src/cairo-pdf-operators-private.h | 5 +++++ - src/cairo-pdf-operators.c | 8 ++++++++ - src/cairo-pdf-surface.c | 7 +++++++ - 3 files changed, 20 insertions(+), 0 deletions(-) - -commit c4a57385fa2e69020f43519bea21b98182bf5fd7 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 21:12:08 2008 +1030 - - PDF: Add cairo_pdf_surface_restrict_to_version API - - Now that we are using PDF 1.5 features, add an api to select between - version 1.4 or 1.5. - - src/cairo-pdf-surface-private.h | 2 + - src/cairo-pdf-surface.c | 116 +++++++++++++++++++++++++++++++++++++-- - src/cairo-pdf.h | 24 ++++++++ - 3 files changed, 136 insertions(+), 6 deletions(-) - -commit d85e836911d661275c29f2348a047e5d911f9004 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 21:03:22 2008 +1030 - - PDF: Add newline to end of binary streams - - PDF requires white space before the "endstream" - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b87d81ef0bb52570385a3c9e331651cbeb87b2bb -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 19:29:26 2008 +1030 - - Add image/jp2 to mime-data test - - test/jp2.jp2 | Bin 0 -> 2999 bytes - test/mime-data.c | 7 ++++++- - test/mime-data.pdf.ref.png | Bin 4466 -> 6482 bytes - test/mime-data.ps.ref.png | Bin 4466 -> 4554 bytes - test/mime-data.ref.png | Bin 155 -> 185 bytes - test/mime-data.svg.ref.png | Bin 6153 -> 6264 bytes - 6 files changed, 6 insertions(+), 1 deletions(-) - -commit 7fdb712cbaadc95c02f607a9f6c995f8beb01342 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 18:56:12 2008 +1030 - - PDF: Add JPEG2000 image embedding - - Requires increasing the PDF version to 1.5. - - src/cairo-pdf-surface.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 51 insertions(+), 1 deletions(-) - -commit 0746efbf0718095920d9258942d32a7023d22131 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 18:47:13 2008 +1030 - - Add JPEG2000 mimetype and image info function - - src/cairo-image-info-private.h | 4 ++ - src/cairo-image-info.c | 100 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-surface-fallback.c | 1 + - src/cairo.h | 1 + - 4 files changed, 106 insertions(+), 0 deletions(-) - -commit 5de1e4de938d03406ce3364c6c1baa958f210410 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 23 18:33:58 2008 +1030 - - Move cairo-jpeg-info.c to cairo-image-info.c - - Other image formats will be added to the same file. - - src/Makefile.sources | 4 +- - src/cairo-image-info-private.h | 54 ++++++++++++++ - src/cairo-image-info.c | 141 ++++++++++++++++++++++++++++++++++++ - src/cairo-jpeg-info-private.h | 54 -------------- - src/cairo-jpeg-info.c | 141 ------------------------------------ - src/cairo-pdf-surface.c | 6 +- - src/cairo-ps-surface.c | 6 +- - src/cairo-svg-surface.c | 6 +- - src/cairo-win32-printing-surface.c | 6 +- - 9 files changed, 209 insertions(+), 209 deletions(-) - -commit 63180edf6f7cc81beda626190ca1055efa330fda -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Sun Nov 23 11:42:26 2008 +0800 - - glitz: set clone_offset_{x, y} on success in clone_similar. - - With this fix, glitz backend passes 135 test cases and fails 66 test cases. - - src/cairo-glitz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 36c1b3e5919f119a054e425ca03f7ce810d3e7ec -Author: Luo Jinghua <sunmoon1997@gmail.com> -Date: Sun Nov 23 10:27:49 2008 +0800 - - glitz: fixup a stupid bug in get_image. - - _pixman_format_from_masks returns a boolean instead of cairo status code. - Without this fix, get_image bails out over and over again even operations - was completed successfully. :-( - - src/cairo-glitz-surface.c | 14 +++++++++----- - 1 files changed, 9 insertions(+), 5 deletions(-) - -commit c8b70aacc6b5523e2f73bebf4f61e876de1c3b3f -Author: Nicolas Bruguier <gandalfn@club-internet.fr> -Date: Sat Nov 22 18:16:17 2008 +0800 - - glitz: bring glitz backend to more or less working state. - - Thanks Nicolas Bruguier for writing the original patch and - thanks Paolo Bonzini for pointing out. This patch converts 24.8 - fixed point values into 16.16 ones before passing them down to glitz. - And I fixed a use-after-free issue in _cairo_glitz_surface_set_clip_region. - glitz_surface_set_clip_region takes the pointer and doesn't copy the - clip boxes, the original code frees the clip boxes immediately after - setting clip region. Keeping the box around with the life time of clip - region fixes the bug. - - src/cairo-glitz-surface.c | 329 ++++++++++++++++++++++----------------------- - 1 files changed, 163 insertions(+), 166 deletions(-) - -commit 77e60df32fa59328bd32095c77f8c360805b5db7 -Author: Maarten Maathuis <madman2003@gmail.com> -Date: Sat Nov 8 15:29:40 2008 +0100 - - cairo-xcb: avoid leaking memory - - src/cairo-xcb-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 361962b7fb4385f164673991670b6fce0839d32a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 08:42:30 2008 +0000 - - [directfb] Compile fix with debug enabled. - - Fix a trivial compile failure reported here: - Bug 18322 - bug in _cairo_directfb_surface_release_source_image function - (http://bugs.freedesktop.org/show_bug.cgi?id=18322) - - src/cairo-directfb-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f15b1f26becf28457e9ccf8903257a0dec25d547 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 23:19:19 2008 +0000 - - [region] Use the caller supplied array for extracting boxes. - - Allow the user to pass in a pre-allocated array and use it if the number - of boxes permits. This eliminates the frequent allocations during clipping - by toolkits. - - src/cairo-directfb-surface.c | 6 ++++-- - src/cairo-glitz-surface.c | 1 + - src/cairo-paginated-surface.c | 3 +++ - src/cairo-region.c | 11 ++++++----- - src/cairo-sdl-surface.c | 1 + - src/cairo-surface.c | 15 ++++++++------- - src/cairo-win32-surface.c | 3 ++- - src/cairo-xcb-surface.c | 1 + - src/cairo-xlib-surface-private.h | 2 +- - src/cairo-xlib-surface.c | 13 ++++++++----- - 10 files changed, 35 insertions(+), 21 deletions(-) - -commit 9d2c55c661885c06eed44e810004c2ebe07038d3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 21:53:34 2008 +0000 - - [traps] Embed sufficient traps to accommodate a stroke rectangle - - Small numbers of traps are frequently generated from either a path of a - single line, or that of a rectangle. Therefore should embed sufficient - storage with cairo_traps_t to accommodate the stroke of a single rectangle - (e.g. a pango unknown glyph hexbox) to avoid frequent allocations. - - src/cairoint.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a11442154d958d5c9694eb944a715a6c689fda85 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 18:00:40 2008 +0000 - - [cairo] Allocate glyphs on the stack for show_text(). - - First try to use a stack buffer for the glyphs and clusters if the user - calls cairo_show_text() - for example, as pango does to draw the unknown hex - box. - - src/cairo.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -commit 9556266ffcb1c34187730af90bb847950d6db66e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 09:40:25 2008 +0000 - - [surface] Make the error surfaces have a NULL backend. - - By using a NULL backend for the error surfaces, instead of a pointer to - the image surface backend end, we save a few lookup/redirections during - dynamic linking. - - src/cairo-surface.c | 22 ++++++---------------- - 1 files changed, 6 insertions(+), 16 deletions(-) - -commit cfd2c73826f5bf20624fbdf5b16fd08fbe18a914 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 09:36:02 2008 +0000 - - [image] Trim image surface size by a few bytes - - Convert an infrequently accessed series of cairo_bool_t and short enums - to a common bitfield. - - src/cairo-image-surface.c | 11 ++++++----- - src/cairoint.h | 7 ++++--- - 2 files changed, 10 insertions(+), 8 deletions(-) - -commit 1f48b36933b5ff082edf3e221563c15c3bf16b75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 20 12:41:18 2008 +0000 - - [script] Build fix for ! HAS_FT_FONT - - Correct the macro definition used when compiling without FreeType. - - util/cairo-script/cairo-script-operators.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 0d5e533b6cc43c4ebc030140933247cf160d47cd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 17:03:13 2008 +0000 - - [trace] Correctly push font-face onto the operand stack. - - We tried to push a reference to an undefined font-face, now we just copy - from the operand stack. - - util/cairo-trace/trace.c | 61 +++++++++++++++++++++++++++------------------- - 1 files changed, 36 insertions(+), 25 deletions(-) - -commit b426346b482e2687081433213ae107cb7b2ebe58 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 16:04:57 2008 +0000 - - [trace] Construct matrices directly - - Avoid building a temporary array by constructing the matrix directly. - - util/cairo-trace/trace.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 727ff2bd7260f26c9390079258c43e6890ef2284 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 14:25:20 2008 +0000 - - [xlib] Explicitly track whether the GC has clip_rects. - - Simplify the logic and remove some pessimism from the code by explicitly - tracking when we set clip rectangles on the GC. - - src/cairo-xlib-surface-private.h | 1 + - src/cairo-xlib-surface.c | 6 +++--- - 2 files changed, 4 insertions(+), 3 deletions(-) - -commit 63a86a470fb88ee876414164e7e26789c1065b82 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 14:04:01 2008 +0000 - - [surface] Replay meta surfaces to a similar surface. - - When cloning a meta-surface, first attempt to replay it to a similar - surface rather than a full-sized image buffer. - - src/cairo-surface.c | 30 ++++++++++++++++++++++++++++-- - 1 files changed, 28 insertions(+), 2 deletions(-) - -commit 7657bda0172f823fba61db4f66e0166c7619fbd2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 18 11:23:33 2007 +0000 - - [perf/pythagoras_tree] Another fractal. - - Test lots of rectangles and recursion path construction. - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/pythagoras-tree.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 90 insertions(+), 1 deletions(-) - -commit abd0a2627d198eddb628bbc1f2974435a74655a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Dec 18 10:49:23 2007 +0000 - - [perf/dragon] Add a dragon curve perf case. - - Inspired by http://labs.trolltech.com/blogs/2007/08/31/rasterizing-dragons/ - and http://en.wikipedia.org/wiki/Dragon_curve, add a performance test case - to measure drawing this space-filling fractal curve. - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/dragon.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 170 insertions(+), 1 deletions(-) - -commit 81ef772aa0bf512ec5ad8752da160117498bdb30 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 11:00:35 2008 +0000 - - [xlib] Mark GC as dirty if we have an outstanding clip. - - Ginn Chen reported a regression with Firefox where "the whole area of web - page is transparent until it redraws", and bisected it to the change to - lazily clear the clip. - - The bug would appears to be when we have an inconsistent GC clip - i.e. - the clip on the surface has been cleared, but we have not yet used and - thus cleared the GC, so that we did not mark the GC as having a clip set - when we freed it. - - src/cairo-xlib-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit c41b99268dd2424d09ab12ca560d5db30b6b6faf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 11:49:04 2008 +0000 - - Conditionally include byteswap.h - - Fixup compilation by copying the checks from cairo-wideint-private.h to - conditionally include byteswap.h and provide fallback implementations. - - util/cairo-script/cairo-script-interpreter.c | 1 - - util/cairo-script/cairo-script-operators.c | 1 - - util/cairo-script/cairo-script-private.h | 17 +++++++++++++++++ - util/cairo-script/cairo-script-scanner.c | 1 - - util/cairo-trace/trace.c | 17 ++++++++++++++++- - 5 files changed, 33 insertions(+), 4 deletions(-) - -commit 8345fedbe4d4d003c1f26a78ac7c512c04d04173 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 11:44:42 2008 +0000 - - [spline] Fix compile. - - Do not return the result of a void function. gcc chose to not warn about - this when removing the return parameter... - - src/cairo-spline.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit b6c371a47f33ec10d4d6130cc15677761df2bdfd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 08:44:24 2008 +0000 - - [pattern] Cosmetic. - - surface is equal to pattern->surface at this point. - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7894abbe6d43b10ab2a92d99bdd6a08878e9022c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 19 08:37:26 2008 +0000 - - [test] Support foreground only execution. - - Add an option to prevent forking - which makes it difficult to - valgrind/gdb individual tests. - - test/Makefile.am | 1 + - test/cairo-test-runner.c | 120 +++++++++++++++++++++++++--------------------- - 2 files changed, 67 insertions(+), 54 deletions(-) - -commit 645df0c6d2a3d9999bb18ddb8bb9995b3d597554 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 16:37:59 2008 +0000 - - [scaled-font] Clean-up compiler warning. - - gcc warns that the status may be used uninitialized, so fix it. - - src/cairo-scaled-font-subsets.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 2fdee490745a6c3a75691907aadf8ae38c57234c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 17 12:22:39 2008 +0000 - - [compiler] likelihood macros - - Behdad prefers these to be upper-case to be consistent with G_UNLIKELY and - friends. However, as I intend to use these for nearly all instances of - if(status), I suggest that we keep to the short and not so loud: - if (unlikely (status)) - return status; - - src/cairo-compiler-private.h | 8 ++++---- - src/cairo-hash.c | 2 +- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 97edc680c189205ac2f4e150009f1f1cbe55ba1a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 10:49:27 2008 +0000 - - [twin] Reduce tolerance. - - As the glyphs are rendered to cache, ensure that they are rendered at the - highest quality settings. - - src/cairo-font-face-twin.c | 1 + - src/cairo.c | 1 + - src/cairoint.h | 1 + - test/Makefile.am | 1 + - test/twin.pdf.ref.png | Bin 0 -> 1673 bytes - test/twin.ref.png | Bin 1673 -> 1718 bytes - 6 files changed, 4 insertions(+), 0 deletions(-) - -commit e50538863a2c063eba61b36cc08eff6eeb712956 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 10:45:19 2008 +0000 - - [twin] Tweak line width. - - Slightly increase line width to eliminate internal holes in the characters - where the strokes were not quite overlapping. - - src/cairo-font-face-twin.c | 2 +- - test/twin.c | 2 +- - test/twin.ps2.ref.png | Bin 1167 -> 1095 bytes - test/twin.ps3.ref.png | Bin 1167 -> 1095 bytes - test/twin.ref.png | Bin 1836 -> 1673 bytes - test/twin.svg11.ref.png | Bin 1773 -> 1662 bytes - test/twin.svg12.ref.png | Bin 1773 -> 1662 bytes - 7 files changed, 2 insertions(+), 2 deletions(-) - -commit 91c17d33324b51a3876bc6ce778c684111139303 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 18 00:32:54 2008 +0000 - - [trace] Simple unbounded cache for symbol lookups. - - Reparsing the dwarf info for every lookup is very slow, so cache the - symbol lookups. This initial implementation is unbounded in the simple - belief that the actual number of unique lookups during a program's - lifetime should be fairly small. (Extending to a bounded MRU list is left - as an exercise for the reader.) - - util/cairo-trace/lookup-symbol.c | 70 ++++++++++++++++++++++++++++++++----- - util/cairo-trace/trace.c | 9 +++-- - 2 files changed, 65 insertions(+), 14 deletions(-) - -commit 2839a0e800d6cc12b28da44f30a9e278ceac65aa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 16 20:04:55 2008 +0000 - - [script] Add a simple replay. - - A very simple replay program for trace replay. - - util/cairo-script/.gitignore | 1 + - util/cairo-script/Makefile.am | 7 +++- - util/cairo-script/csi-replay.c | 85 ++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 92 insertions(+), 1 deletions(-) - -commit b091c5bfcad170fd563699a1c8b11e7d25d159a2 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Tue Nov 18 00:20:38 2008 +0200 - - BIBLIOGRAPHY: Cite Hars & Petruska's Pseudorandom Recursions paper. - - BIBLIOGRAPHY | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 3a82f943988413e0d3fada9932bb385f4cbdb3c7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 16 18:21:52 2008 +0000 - - [test] Add util/cairo-script to include path. - - any2ppm needs the include path for cairo-script-interpreter so that it can - be built without an existing install. - - test/Makefile.am | 3 ++- - test/any2ppm.c | 3 --- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit 997fa6a7729b72b25d9275929bf190e71eed1b9d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 16 17:43:40 2008 +0000 - - [configure] Remove old line for CairoScript testing. - - CairoScript testing should now be unconditional so remove the surplus - message. - - build/configure.ac.features | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit a2eff7c7deb9b41c387472bb91b9a7b9c8f319f0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 16 16:19:25 2008 +0000 - - [test] Add build rule for libcairo-script-interpreter.la - - Add a rule to build the cairo-script-interpreter on behalf of any2ppm. - - test/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit bf309aab6072ee1004073e71bccdf3c8040a8ad6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 15 11:36:41 2008 +0000 - - [configure] Delete CAN_TEST_SCRIPT - - A CairoScript interpreter is built under utils and so is always available. - - configure.ac | 3 --- - test/any2ppm.c | 8 -------- - 2 files changed, 0 insertions(+), 11 deletions(-) - -commit d7873eecc598a558a2a862add8e9b056c4a23a4a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 14 17:18:47 2008 +0000 - - [spline] Eliminate intermediate allocations during spline decomposition. - - The spline decomposition code allocates and stores points in a temporary - buffer which is immediately consumed by the caller. If the caller supplies - a callback that handles each point computed along the spline, then we can - use the point immediately and avoid the allocation. - - src/cairo-bentley-ottmann.c | 12 +-- - src/cairo-path-fill.c | 23 ++--- - src/cairo-path-fixed.c | 27 ++--- - src/cairo-path-in-fill.c | 21 ++-- - src/cairo-path-stroke.c | 101 +++++++++-------- - src/cairo-pen.c | 254 ++++++++++++++++++++++++++++--------------- - src/cairo-polygon.c | 23 ++-- - src/cairo-spline.c | 121 ++++----------------- - src/cairo-types-private.h | 13 +- - src/cairoint.h | 65 ++++++++--- - 10 files changed, 331 insertions(+), 329 deletions(-) - -commit 3bf8379408ce9b1e08d130bcd1076766e36f1bef -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 14 09:50:29 2008 +0000 - - [type1] Propagate fatal NO_MEMORY erro from FreeType. - - If FreeType fails to load the glyph, check for a fatal error before - falling back (and effectively masking the fatal condition). - - src/cairo-type1-subset.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit db9ed77d8aa4f4b4c8410e52e5bbd16ffa94ee24 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 20:36:14 2008 +0000 - - [cairo] FLush surface on cairo_destroy() - - When discussing the implications of snapshot cow, one of the questions - that we raised was what happens on cairo_destroy()? The lifetime of the - context implicitly marks the extents of the drawing operations, typically - the expose event (or perhaps one phase of it). Therefore at the end of the - sequence we implicitly wish to flush the graphics events to the surface. - - src/cairo.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 032be9849dfc32ec8802a4f086619755a3a397f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 16:36:01 2008 +0000 - - [skiplist] Inline testing. - - Add a loop to create a skip list to allow manual checking. - - src/Makefile.am | 5 ++++- - src/cairo-skiplist.c | 36 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 40 insertions(+), 1 deletions(-) - -commit e44c1f26e48cfb2f74834b6a8ef8532b0bd28982 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Sat Oct 18 01:15:44 2008 +0300 - - Use a smaller and faster random number generator. - - The previous LFSR generator used a large table to be speedy. The - replacement generator is the single stage generator (1) from section - 5.4 of [HP2007], requires no tables or extra state. I've run the - generator through Rob Brown's extended Dieharder test suite and it - passes all but one self-proclaimed buggy test (-d2) and the 2D sphere - minimum distance test (-d12). - - [HP2007] Hars L. and Petruska G., ``Pseudorandom Recursions: Small and Fast Pseurodandom Number Generators for Embedded Applications'', - Hindawi Publishing Corporation - EURASIP Journal on Embedded Systems - Volume 2007, Article ID 98417, 13 pages - doi:10.1155/2007/98417 - http://www.hindawi.com/getarticle.aspx?doi=10.1155/2007/98417&e=cta - - src/cairo-skiplist.c | 200 +++----------------------------------------------- - 1 files changed, 11 insertions(+), 189 deletions(-) - -commit a4c5371b5e6d0df71efc75fee6f6a8fe8c6d3488 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 14:56:38 2008 +0000 - - [os2] Move include cairo.h before os2.h - - The defines need to come first, but we specify that cairo.h is the first - header file to be included by files. - - src/cairo-os2.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 456252a1c2b00685bee18c01bf27738d6125b4f8 -Merge: 3b11997 ab61544 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Nov 14 15:27:34 2008 +0100 - - Merge branch '1.8' - - Conflicts: - - NEWS - cairo-version.h - -commit ab61544b30406a49abc1f559d81129edce6d41ec -Author: Carl Worth <cworth@cworth.org> -Date: Fri Nov 14 13:17:01 2008 +0100 - - Increment version to 1.8.5 after the 1.8.4 release. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 66e8f142e381501d114888c2d1fc1e7f6d6a9857 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Nov 14 11:08:40 2008 +0100 - - Increment version to 1.8.4 - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b9c1344ad82d38bb86fa85fbb565b2de64aa0e35 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Nov 14 11:07:10 2008 +0100 - - NEWS: Add notes for cairo 1.8.4 - - Just a few bug fixes here. - - NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 52 insertions(+), 0 deletions(-) - -commit 3b11997a23baa9e38e87b584ee29f4888a5d92f7 -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Nov 13 18:01:47 2008 +0200 - - [cairo-script] Remove outdated #error to allow compilation to succeed. - - The interpreter doesn't depend on the script surface anymore. - - util/cairo-script/cairo-script-interpreter.h | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit d654d528de16769932131da80f4b925151d50103 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Nov 13 16:45:15 2008 +0100 - - Blacklist "X.Org" < 7.0 with the buggy_repeat workaround. - - This is in response to a report that a 6.9 server crashes with - cairo's extend-reflect test: - - https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2 - - src/cairo-xlib-display.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 35a1ba0ddc45f9cc785c6f8a37b6bb49c953e047 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Nov 13 16:36:20 2008 +0100 - - Document the buggy_repeat workaround more carefully. - - It's a confusing condition, so let's be explicit about where - the various numbers come from. - - src/cairo-xlib-display.c | 54 ++++++++++++++++++++++++++++++++------------- - 1 files changed, 38 insertions(+), 16 deletions(-) - -commit cdfffc7420e005b2a7d1979feef8bd304183126c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 11:07:45 2008 +0000 - - Add CairoScript interpreter - - Add a CairoScript interpreter library and use it to replay the test output - for the CairoScript backend. The library is also used by the currently - standalone Sphinx debugger [git://anongit.freedesktop.org/~ickle/sphinx]. - The syntax/operator semantics are not yet finalized, but are expected to - mature before the next stable release. - - configure.ac | 20 +- - test/Makefile.am | 4 +- - test/any2ppm.c | 43 +- - util/Makefile.am | 2 +- - util/cairo-script/COPYING | 17 + - util/cairo-script/Makefile.am | 21 + - util/cairo-script/cairo-script-file.c | 1018 +++++ - util/cairo-script/cairo-script-hash.c | 448 ++ - util/cairo-script/cairo-script-interpreter.c | 473 +++ - util/cairo-script/cairo-script-interpreter.h | 104 + - util/cairo-script/cairo-script-objects.c | 666 +++ - util/cairo-script/cairo-script-operators.c | 5791 ++++++++++++++++++++++++++ - util/cairo-script/cairo-script-private.h | 853 ++++ - util/cairo-script/cairo-script-scanner.c | 1180 ++++++ - util/cairo-script/cairo-script-stack.c | 196 + - 15 files changed, 10802 insertions(+), 34 deletions(-) - -commit a856371bef496da0e84226f4fd2fc3cb72e955ac -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 10:45:34 2008 +0000 - - Add CairoScript backend. - - A new meta-surface backend for serialising drawing operations to a - CairoScript file. The principal use (as currently envisaged) is to provide - a round-trip testing mechanism for CairoScript - i.e. we can generate - script files for every test in the suite and check that we can replay them - with perfect fidelity. (Obviously this does not provide complete coverage - of CairoScript's syntax, but should give reasonable coverage over the - operators.) - - boilerplate/Makefile.sources | 3 + - boilerplate/cairo-boilerplate-script-private.h | 57 + - boilerplate/cairo-boilerplate-script.c | 125 ++ - boilerplate/cairo-boilerplate.c | 16 + - build/configure.ac.features | 2 + - configure.ac | 16 + - doc/public/tmpl/cairo-surface.sgml | 1 + - src/Makefile.sources | 3 + - src/cairo-base85-stream.c | 1 + - src/cairo-cache-private.h | 2 +- - src/cairo-cache.c | 41 +- - src/cairo-deflate-stream.c | 1 + - src/cairo-ft-font.c | 12 + - src/cairo-ft-private.h | 3 + - src/cairo-gstate.c | 3 +- - src/cairo-output-stream-private.h | 19 +- - src/cairo-output-stream.c | 43 +- - src/cairo-path-fixed-private.h | 11 + - src/cairo-path-fixed.c | 164 ++ - src/cairo-pattern.c | 255 +++ - src/cairo-pdf-operators.c | 1 + - src/cairo-ps-surface.c | 2 + - src/cairo-scaled-font-private.h | 9 +- - src/cairo-scaled-font.c | 5 + - src/cairo-script-surface.c | 2598 ++++++++++++++++++++++++ - src/cairo-script.h | 74 + - src/cairo-types-private.h | 1 + - src/cairo.h | 4 +- - src/cairoint.h | 18 + - test/Makefile.am | 4 +- - test/any2ppm.c | 87 +- - test/mime-data.script.ref.png | Bin 0 -> 1982 bytes - 32 files changed, 3540 insertions(+), 41 deletions(-) - -commit 47a56e08501ec9375f75c15e35a68c77b313ada4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 10 16:51:52 2008 +0100 - - [type1] Bind the RD procedure - - As the RD procedure may be called several hundred times for a full font, - it is worth binding. - - src/cairo-type1-fallback.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0769d39d0093ec3bff5b72ecbfcef1bae2f03be2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 11:13:22 2008 +0000 - - Add predicate likelihood macros. - - Define the couple of standard macros that we can use to guide gcc - optimisations of which code path will be most likely taken. - - src/cairo-compiler-private.h | 17 +++++++++++++++++ - 1 files changed, 17 insertions(+), 0 deletions(-) - -commit b06c50cc54140a662adacde6336a3e7777f26ac3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 11:21:26 2008 +0000 - - [cairoint.h] Remove unused PLT entries. - - Trim the slim_hidden_proto/def to match the currently used functions. - - src/cairo-pattern.c | 1 - - src/cairo.c | 3 --- - src/cairoint.h | 16 ++++++---------- - 3 files changed, 6 insertions(+), 14 deletions(-) - -commit 20fc2a2f92e27082a8806b9acb4b904dc84da672 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 11 11:35:14 2008 +0000 - - [in-fill] Fixup boundary insideness testing - - Benjamin Otte noticed that the top-left vertex was now included within the - fill extents. Having updated the test case to check the insideness - conditions as defined by flash, fix the edge handling to match. - - src/cairo-path-in-fill.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9afad537301529a5a4b4ddf8b7e4425002ea39c7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 11 10:22:17 2008 +0000 - - [test] Expand in-fill-trapezoid - - Test vertices and edges of a rectangle to probe 'corner-cases', using the - insideness conditions from flash. - - test/in-fill-trapezoid.c | 34 ++++++++++++++++++++++++++++++++++ - 1 files changed, 34 insertions(+), 0 deletions(-) - -commit cebc84f367a81eedebf7ab0b6b082691923c3ef7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 8 00:06:38 2008 +0000 - - [hash] Separate out unique patterns of iterating over the table. - - Avoid unnecessary conditionals for the hotpaths by separating out the - iteration over the elements into their distinct modes. - - src/cairo-font-face.c | 2 +- - src/cairo-hash.c | 185 ++++++++++++++++++++++------------------------- - src/cairo-scaled-font.c | 11 ++- - 3 files changed, 93 insertions(+), 105 deletions(-) - -commit 5f0aa274459fa182d1f82d393224c46ce2b12785 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 13 10:45:15 2008 +0000 - - [trace] Add caller line info. - - Use lookup_symbol() on the return address to identify the caller and emit - useful debug info to the trace. - - util/cairo-trace/cairo-trace.in | 27 +++++++- - util/cairo-trace/lookup-symbol.c | 72 +++++++++----------- - util/cairo-trace/trace.c | 134 ++++++++++++++++++++++++++++++++++---- - 3 files changed, 178 insertions(+), 55 deletions(-) - -commit 4cd6b0c0b9862f398877cb23c294399b480ac8d0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 12 00:37:40 2008 +0000 - - [trace] Check for an undefined pattern and use index instead. - - util/cairo-trace/trace.c | 20 ++++++++++++++++++-- - 1 files changed, 18 insertions(+), 2 deletions(-) - -commit 76f249a49399744d6d936e36ca4d68ab4a1f3d3b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 11 09:12:50 2008 +0000 - - [trace] Detect and report broken traces. - - We cannot trace the cairo-script-interpreter as that uses Cairo's private - symbols. - - util/cairo-trace/trace.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 01e2021b2b7b66e7cdb9c4b0326fd5793759848b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 10 16:15:28 2008 +0000 - - [trace] Trace mark-dirty - - Capture the image data on mark dirty and record in the trace. - - util/cairo-trace/cairo-trace.in | 2 +- - util/cairo-trace/trace.c | 121 +++++++++++++++++++++++++++++++++----- - 2 files changed, 106 insertions(+), 17 deletions(-) - -commit 8f3d0b55f50168f061a01eecfcb4ebecbff0e1c6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 11 09:25:24 2008 +0000 - - [trace] Add unstable warning. - - Add warning that CairoScript is unfinished and I may radically alter the - format/syntax/language before release. - - util/cairo-trace/trace.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7ad2635ebe84ba7c050a7f00c5389cdc31ab1172 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 11 09:46:38 2008 +0000 - - [trace] Disable stdout by default. - - Don't hog the terminal when we save to a trace file anyway. - - util/cairo-trace/cairo-trace.in | 48 +++++++++++++++++++++++--------------- - 1 files changed, 29 insertions(+), 19 deletions(-) - -commit efa9e1088cbf1b5331cc0bab3348520f3b91ae4b -Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> -Date: Thu Nov 13 12:11:12 2008 +0200 - - [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents. - - This fixes the clip-all test case crashing for me. - - src/cairo-clip.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 279a7cef349cf5aa87cdeacb9424413f51117fe8 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Nov 13 10:50:41 2008 +0100 - - [os2] Fix includes - - Patch from Dave Yeo to make cairo-os2.h include os2.h directly so the - header is standalone. - - src/cairo-os2-private.h | 11 ----------- - src/cairo-os2-surface.c | 5 ----- - src/cairo-os2.h | 8 ++++++++ - 3 files changed, 8 insertions(+), 16 deletions(-) - -commit 0a682034a04fa7fc1407e7bc093ae01f4b385ad7 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Nov 11 13:26:09 2008 -0500 - - Make the clipping implementation comment clearer - - When reviewing the spans changes, I reread this comment and it wasn't as clear - as it could be. - - src/cairo-clip.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 4fdd856569a67636aaf29bc1a76eed44418db484 -Author: Peter Weilbacher <mozilla@weilbacher.org> -Date: Tue Nov 11 15:37:09 2008 +0100 - - README: adapt pixman version requirement to match configure.ac - - README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9c0042840c70c14e3e608ac3849edf5f1ef99816 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Tue Nov 11 08:41:31 2008 -0500 - - [quartz] Add the proper propagation of extents - - This fixes the problems introduced by d682d275b90f7326df76d2764c513c8b6d5b551b - - src/cairo-quartz-surface.c | 24 +++++++++++++----------- - 1 files changed, 13 insertions(+), 11 deletions(-) - -commit 57551a91168a68399add9e5c324fba03961b7747 -Author: Jeff Muizelaar <jeff@infidigm.net> -Date: Tue Nov 11 08:31:23 2008 -0500 - - [quartz] Fix fallout caused by const cairo_pattern_t * - - 794460186459981cd43ca38f3eba07e3f6bf8908 broke the quartz backend. - Fix it by adding const to the appropriate parameters in the function - declarations and copying the pattern when needed. - - src/cairo-quartz-surface.c | 41 ++++++++++++++++++++++++----------------- - 1 files changed, 24 insertions(+), 17 deletions(-) - -commit 164069b339843837e04e2522a615f03a83b362c0 -Author: Maarten Maathuis <madman2003@gmail.com> -Date: Sat Nov 8 15:29:40 2008 +0100 - - cairo-xcb: avoid leaking memory - - src/cairo-xcb-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5badcf6e370b9808374a1fa547383b236a9dcd21 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 8 11:17:34 2008 +0000 - - [trace] Use a string literal for the type. - - In order that the string is interned and so is only allocated the once. - - util/cairo-trace/trace.c | 28 ++++++++++++++-------------- - 1 files changed, 14 insertions(+), 14 deletions(-) - -commit 1d0faefbc8700833e9bde8a9c825b02b0f3cf910 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 7 22:48:21 2008 +0000 - - [trace] Record the XID as a number - - Don't waste string constants (which get interned) for a simple number! - - util/cairo-trace/trace.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 899a159b133e22f71e2a176785c91e78838c3fee -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 8 11:16:03 2008 +0000 - - [trace] Remove stray /source - - An accidental /source was pushing pushed onto the operand stack and never - used. - - util/cairo-trace/trace.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit f1cae5c52a5ee71b7933fca702bb525d98936838 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 7 20:52:08 2008 +0000 - - [ps] Trivial compile warning clenaup. - - Add a missing const to silence the compiler. - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2b32c8b9e572c96ce8ba5c7d43b568f18f6da295 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 7 20:30:33 2008 +0000 - - [hash] Return lookup entry. - - Use the return value to return the result from _cairo_hash_table_lookup() - (as opposed to filling an output parameter on the stack) as this (a) - results in cleaner code (no strict-alias breaking pointer casts), (b) - produces a smaller binary and (c) is measurably faster. - - src/cairo-cache-private.h | 5 +-- - src/cairo-cache.c | 8 ++---- - src/cairo-cff-subset.c | 24 ++++++++----------- - src/cairo-font-face.c | 9 +++---- - src/cairo-ft-font.c | 6 ++-- - src/cairo-hash-private.h | 7 ++--- - src/cairo-hash.c | 24 ++++++------------- - src/cairo-misc.c | 7 ++--- - src/cairo-scaled-font-subsets.c | 47 +++++++++++++++++++-------------------- - src/cairo-scaled-font.c | 18 ++++++-------- - 10 files changed, 67 insertions(+), 88 deletions(-) - -commit d15fb9344bf86dd52cda0b43d3dfc49397fd84ec -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Fri Nov 7 20:06:35 2008 +0000 - - [hash] Set is_unique when finding an available for inserts - - As we obey the rule in Cairo that we only insert if we know that there is - no existing entry in the hash table, we can therefore perform a much quicker - search knowing that the key is unique. - - src/cairo-hash.c | 16 +++++++--------- - 1 files changed, 7 insertions(+), 9 deletions(-) - -commit cd2e18ddc65959a736fc7b7f6bbd3e76af0495a9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 7 18:35:39 2008 +0000 - - [test] Fix-up rgb byte packing - - Another embarrassing, but thankfully, trivial bug. - - boilerplate/cairo-boilerplate.c | 2 ++ - test/any2ppm.c | 14 +++++++++----- - 2 files changed, 11 insertions(+), 5 deletions(-) - -commit 2554d1759835a174b89107808d81d044c3e2e098 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Nov 7 13:26:46 2008 +0000 - - [surface] Pass a separate closure for the mime-type destroy notifier. - - A limitation of the current API was that the destroy notifier was called - on the mime-data block. This prevents the user from passing in a pointer - to a managed block, for example a mime-data block belonging to a - ref-counted object. We can overcome this by allowing the user to specify - the closure to be used with the destroy notifier. - - src/cairo-png.c | 3 ++- - src/cairo-surface.c | 9 ++++++--- - src/cairo-types-private.h | 1 + - src/cairo.h | 11 ++++++----- - test/mime-data.c | 3 ++- - test/pdf-mime-data.c | 4 +++- - util/cairo-trace/trace.c | 6 ++++-- - 7 files changed, 24 insertions(+), 13 deletions(-) - -commit ff0bd64e9436026f11e85eafcd74e9a0131c8b9f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 6 01:22:39 2008 +0000 - - [NEWS] Add a few notes. - - Help Carl with a speedy snapshot by writing a few notes about what has been - added so far to 1.9. - - NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 42 insertions(+), 0 deletions(-) - -commit 13627b46209f9239d10a155f2de7e53c0585e4c2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 6 01:04:52 2008 +0000 - - [in-fill] Fix transposed arguments. - - Silly typo that escaped the test suite. - - src/cairo-path-in-fill.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9dee7af41f4f5a4c1285e9d7951148e78659c064 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 6 01:02:23 2008 +0000 - - [test] Add off-centre tests to in-fill-trapezoid. - - Reading through the previous commit spotted that the arguments to - edge_compare_for_y_against_x were transposed, but the test-suite had - failed to catch detect it. This is due that in order to actually - solve the equation we need to have a diagonal edge passing near an - off-centre point of interest, which was not among the test cases. So add - some off-centre tests to fully exercise the code. - - test/in-fill-trapezoid.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 66 insertions(+), 0 deletions(-) - -commit f5965cb7d6559e051c2581fe446d0b9f40427eb2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 23:48:52 2008 +0000 - - [in-fill] Avoid tessellation by counting number of edge crossing to -∞ - - Benjamin Otte reports that in one particular benchmark cairo_in_fill() is - a hotspot in the profile. Currently we tessellate the entire path and then - search for a containing trapezoid. This is very expensive compared to the - simple method of counting the number of edge crossing between the point of - interest and x=-∞. For example, this speeds tessellate-256 up by almost 3 - orders of magnitude. - - src/Makefile.sources | 1 + - src/cairo-gstate.c | 30 +----- - src/cairo-path-in-fill.c | 264 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 9 ++ - 4 files changed, 279 insertions(+), 25 deletions(-) - -commit 0ac98461597420d3dfe52e405c6b3322d32f4854 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Nov 6 00:04:11 2008 +0000 - - [test] Add WINDING variants to in-fill test - - Check cairo_in_fill() with some WINDING tests as well as the current - EVEN_ODD. - - test/in-fill-trapezoid.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 56 insertions(+), 0 deletions(-) - -commit 476d5daa9bfc5e9014d1b6572853d1d78ce6a6d9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 19:29:04 2008 +0000 - - [trace] Only build if we have zlib. - - Use the configure check for libz and do not attempt to build the trace - unless we have zlib. - - configure.ac | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 34564aa84a4642dceba75efdeef438be6c6896c8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 19:27:49 2008 +0000 - - [test/pdf2png] Remove dependency on GdkPixbuf - - It's appears to be dropped from the current poppler trunk, so just use our - own venerable cairo_surface_write_ton_png(). - - configure.ac | 2 +- - test/pdf2png.c | 32 +++++++++++++++++++------------- - 2 files changed, 20 insertions(+), 14 deletions(-) - -commit 564d64a1323c5cbcde2dd9365ac790fe8aa1c5a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 18:47:34 2008 +0000 - - [png] Complete the idempotent read_png() -> write_png() - - Write out the original PNG mime-data if attached to the surface during - cairo_surface_write_to_png(). Similar to how the compressed alternate - representations are handled by the other backends. - - Note: by automatically attaching and using the mime-data in preference to - the image data, we break the read_from_png(); draw(); write_to_png() - cycle. - - src/cairo-png.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit ec559822cfe6df0006ca2db2aa3a11699326865c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 18:11:36 2008 +0000 - - [trace] Use the mime-type image representation - - When emitting image data, first check to see if we have a pre-compressed - alternate representation. - - util/cairo-trace/trace.c | 303 ++++++++++++++++++++++++++++++++-------------- - 1 files changed, 214 insertions(+), 89 deletions(-) - -commit d63267e4e7e148836dcfc4c8e2a8396ddaab70d8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 17:18:51 2008 +0000 - - [test] Update mime-data to check image/png - - Add a "image/png" mime-type test. - - test/Makefile.am | 1 + - test/mime-data.c | 67 +++++++++++++++++++++++++++++--------------- - test/mime-data.pdf.ref.png | Bin 4345 -> 4466 bytes - test/mime-data.ps.ref.png | Bin 4345 -> 4466 bytes - test/mime-data.ref.png | Bin 127 -> 155 bytes - test/mime-data.svg.ref.png | Bin 0 -> 6153 bytes - test/png.png | Bin 0 -> 2096 bytes - 7 files changed, 45 insertions(+), 23 deletions(-) - -commit e4ec5c762f6d01cc5af28dc0a256e268a04101aa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 16:44:49 2008 +0000 - - [svg] Embed original PNG data. - - Embed the attached PNG representation of a surface in preference to - re-encoding the surface. - - src/cairo-svg-surface.c | 38 ++++++++++++++++++++++++++++++++++++++ - 1 files changed, 38 insertions(+), 0 deletions(-) - -commit e40d62a0fe96b8b937017a3bc2f18766c411ec41 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 16:38:34 2008 +0000 - - [png] Attach the png representation to cairo_surface_create_from_png(). - - Attach the original png data as an alternate representation for image - surfaces created by cairo_surface_create_from_png(). - - src/cairo-output-stream-private.h | 5 ++ - src/cairo-output-stream.c | 28 ++++++++- - src/cairo-png.c | 127 +++++++++++++++++++++++-------------- - src/cairo-surface-fallback.c | 20 +++--- - src/cairo.h | 1 + - 5 files changed, 122 insertions(+), 59 deletions(-) - -commit 89616dee8f11c6a7de3fa476b13661420648786f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 16:41:13 2008 +0000 - - [surface] Don't allocate a structure for mime_data == NULL. - - If the user attempts to clear the attached mime data representation, just - clear the user data slot and do not allocate an empty structure. - - src/cairo-surface.c | 21 ++++++++++++--------- - 1 files changed, 12 insertions(+), 9 deletions(-) - -commit a1ab11df01962bea5752f5a5b53926a26a6f34ae -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Nov 5 11:50:20 2008 -0500 - - Define RepeatNone, etc if the available Render version doesn't (#18385) - - src/cairo-xlib-xrender-private.h | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 43cfaec39cc742ddfbf566b36391d620400e10be -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Wed Nov 5 11:50:20 2008 -0500 - - Define RepeatNone, etc if the available Render version doesn't (#18385) - - src/cairo-xlib-xrender-private.h | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 199c0e71139fe9baf83e74ea69c01629ace5f9a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 15:12:19 2008 +0000 - - [svg] Embed jpeg data. - - Support jpeg embedding for svg output. - - src/cairo-svg-surface.c | 50 +++++++++++++++++++++++++++++++++++++++++++--- - test/Makefile.am | 1 + - 2 files changed, 47 insertions(+), 4 deletions(-) - -commit 2261590875b4be7aa258c51e766f68974750e9e7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 15:11:32 2008 +0000 - - [trace] Trim a few bytes from glyph arrays - - Remove some redundant whitespace from the glyph arrays to improve - readability and shrink the output file size. - - util/cairo-trace/trace.c | 65 +++++++++++++++++++++++++++------------------- - 1 files changed, 38 insertions(+), 27 deletions(-) - -commit 248dd97075b50cd91619022098ed5dd35a66b5df -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Thu Nov 6 00:17:53 2008 +1030 - - win32-printing: Implement JPEG support - - src/cairo-win32-printing-surface.c | 91 ++++++++++++++++++++++++++++++++---- - src/cairo-win32-private.h | 3 + - 2 files changed, 85 insertions(+), 9 deletions(-) - -commit 29621bd3995c5269fd6f73ab501383433bd29768 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 12:16:47 2008 +0000 - - [matrix] Remove stray offset from previous commit. - - I moved the pixel centre to xc,yc but forgot to remove it during - compensation - as caught by the test suite. - - Refresh a couple of reference images that depend upon exact pixel-centre - rounding conditions. - - src/cairo-matrix.c | 8 ++++---- - test/rotate-image-surface-paint.ref.png | Bin 232 -> 190 bytes - test/surface-pattern.pdf.ref.png | Bin 14776 -> 14791 bytes - test/surface-pattern.ref.png | Bin 11044 -> 11100 bytes - test/surface-pattern.svg.ref.png | Bin 16151 -> 16069 bytes - 5 files changed, 4 insertions(+), 4 deletions(-) - -commit e811173311ebe76d47eebcf5c6c5c798f9d3ea72 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 10:59:15 2008 +0000 - - [matrix] Compensate pixman_matrix in device space. - - We wish to reduce the visible error when converting to a pixman matrix, so - perform the compensation in device space instead of pattern space. - - src/cairo-image-surface.c | 4 +- - src/cairo-matrix.c | 53 +++++++++++++++++++++++++++----------------- - 2 files changed, 34 insertions(+), 23 deletions(-) - -commit c95eebc92316ad50840fab1cec6c14b6c3e50fa5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 09:56:02 2008 +0000 - - [pattern] Split the translation between the matrix and [xy]_offset - - pixman limits the src] co-ordinates (and thus [xy]_offset] to 16bits, - so we need to be careful how much of the translation vector to push into - [xy]_offset. Since the range is the same for both, split the integer - component between the matrix and the offset. - - test/scale-offset* now at least shows the source image, even if it is - misplaced. - - src/cairo-pattern.c | 7 +++++-- - test/scale-offset-image.ps.ref.png | Bin 7445 -> 7289 bytes - test/scale-offset-image.ref.png | Bin 10005 -> 9953 bytes - test/scale-offset-similar.ps.ref.png | Bin 7819 -> 7860 bytes - test/scale-offset-similar.ref.png | Bin 10005 -> 9953 bytes - 5 files changed, 5 insertions(+), 2 deletions(-) - -commit d1b8186fd75922e73e62ef8f2ebb011e334ebe36 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 01:16:25 2008 +0000 - - [trace] Correct emission of set_font_face and set_source - - set_font_face was not consuming it's operand but blithely placing an - undefined font_face onto the operand stack, whereas set_source was - performing invalid exchanges on the stack. - - util/cairo-trace/trace.c | 36 +++++++++++++++++++++++++++--------- - 1 files changed, 27 insertions(+), 9 deletions(-) - -commit 4a4b10271a614ee9bf982994b8f9ec6b6102ee10 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 00:02:09 2008 +0000 - - [trace] Capture foreign drawables. - - If we attempt to use a surface as a source before we write to it, record - the surface contents. - - util/cairo-trace/trace.c | 102 +++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 93 insertions(+), 9 deletions(-) - -commit 432fe1ec2792153ec2559ef52aece3fcdc9c5df4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 15:30:23 2008 +0000 - - [trace] Mark filter mode as immediate. - - Be consistent and use "//" for the filter mode to indicate a constant. - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 68309481aa9295026e3e7e6407c793f899b5e600 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Nov 5 08:03:01 2008 +0000 - - [test] Mark targets with is_meta? - - Allow tests to skip targets based on whether they are a meta surface or - not. - - boilerplate/cairo-boilerplate.c | 40 +++++++++++++++++++++++--------------- - boilerplate/cairo-boilerplate.h | 1 + - test/cairo-test.c | 13 +++++++++++- - 3 files changed, 37 insertions(+), 17 deletions(-) - -commit 8855f9583e84ae2e6d981e21133f590bff2065ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 20:04:02 2008 +0000 - - [test] Add scale-offset-(similar|image) - - Add a test case for the scaling bug reported by Michel Iwaniec: - http://lists.cairographics.org/archives/cairo/2008-November/015660.html - - test/Makefile.am | 6 ++ - test/scale-offset-image.c | 142 +++++++++++++++++++++++++++++++++ - test/scale-offset-image.ps.ref.png | Bin 0 -> 7445 bytes - test/scale-offset-image.ref.png | Bin 0 -> 10005 bytes - test/scale-offset-similar.c | 143 ++++++++++++++++++++++++++++++++++ - test/scale-offset-similar.ps.ref.png | Bin 0 -> 7819 bytes - test/scale-offset-similar.ref.png | Bin 0 -> 10005 bytes - 7 files changed, 291 insertions(+), 0 deletions(-) - -commit aad980900314bd032468f41a3216769c66e62097 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 19:11:55 2008 +0000 - - [test] Only depend on any2ppm if we build it. - - Do not add a dependency to any2ppm if it has been deconfigured. - - test/Makefile.am | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 59bdeba9abd7bef15c6855d707c4cf92b623cb00 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 18:42:05 2008 +0000 - - [matrix] Minimise pixman conversion error. - - Minimise the error of the pixman matrix about the centre of the displayed - area rather than the origin. - - src/cairo-image-surface.c | 25 +++++++++++++++++-------- - src/cairo-matrix.c | 24 ++++++++++++++---------- - src/cairo-pattern.c | 3 ++- - src/cairo-xlib-surface.c | 33 +++++++++++++++++++++++---------- - src/cairoint.h | 4 +++- - test/Makefile.am | 3 +-- - test/surface-pattern.pdf.ref.png | Bin 15996 -> 14776 bytes - test/surface-pattern.ref.png | Bin 11439 -> 11044 bytes - test/surface-pattern.svg.ref.png | Bin 0 -> 16151 bytes - test/surface-pattern.svg11.ref.png | Bin 17663 -> 0 bytes - test/surface-pattern.svg12.ref.png | Bin 17663 -> 0 bytes - 11 files changed, 60 insertions(+), 32 deletions(-) - -commit 068d465bb3541cc0ffc3cb9daa0848365c0a6a24 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 14:57:21 2008 +0000 - - [trace] Fix emission of cairo_scaled_font_create() - - In the case where the font face was no longer on the operand stack, the - font face would not have been passed to cairo_scaled_font_create(). - - util/cairo-trace/trace.c | 27 +++++++++++++-------------- - 1 files changed, 13 insertions(+), 14 deletions(-) - -commit a3d56c60e85176526d6cce139441b6921acc9218 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 14:06:02 2008 +0000 - - [trace] Use a common directory by default. - - If called directly (e.g. via /etc/ld.so.preload) put the output trace into - a central directory, and not the pwd. - - util/cairo-trace/Makefile.am | 10 ++++++++-- - util/cairo-trace/trace.c | 8 ++++++-- - 2 files changed, 14 insertions(+), 4 deletions(-) - -commit 3f7a21c5c93d8648ded097757852df44fc9fcaeb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 13:46:10 2008 +0000 - - [test] Add jpeg.jpg to EXTRA_DIST - - Forgot to add the new file to the distribution with the previous commit. - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 9900a2adf3e43e752bd421f00e81873b41db4c30 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 13:41:02 2008 +0000 - - [test] Update mime-data jpeg reference data. - - <adrianj> ickle_: If we are going to use a different image for jpeg in - mime-data maybe we could create a jpg that contains the text "jpeg". That - way when support for the other image formats is added the mime-data test - could have one image for each type with each image and it is easy to see - that each image is the correct one. - - test/jpeg.jpg | Bin 0 -> 2316 bytes - test/mime-data.c | 6 +++--- - test/mime-data.pdf.ref.png | Bin 96 -> 4345 bytes - test/mime-data.ps.ref.png | Bin 368 -> 4345 bytes - test/mime-data.ref.png | Bin 263 -> 127 bytes - 5 files changed, 3 insertions(+), 3 deletions(-) - -commit c13a09ddb411287224c15728b14f23fef472f7d0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 13:00:36 2008 +0000 - - [test] Use a different jpeg image for mime-data - - Detect when we successfully encode the JPEG data from the mime-type by - using a completely image. - - test/Makefile.am | 3 +++ - test/mime-data.c | 6 +++++- - test/mime-data.pdf.ref.png | Bin 0 -> 96 bytes - test/mime-data.ps.ref.png | Bin 0 -> 368 bytes - test/scarab.jpg | Bin 0 -> 9650 bytes - 5 files changed, 8 insertions(+), 1 deletions(-) - -commit 8407470409ad9cb93263a1c2da7dd7446d3f897e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 12:45:47 2008 +0000 - - [test] Adapt pdf-mime-data for non-srcdir build. - - Need to look for reference/input images from srcdir as well. - - test/Makefile.am | 2 +- - test/pdf-mime-data.c | 44 ++++++++++++++++++++++++++++++++------------ - 2 files changed, 33 insertions(+), 13 deletions(-) - -commit 8007618837c0292b6ebc6a4f954c5049d4e99d8a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 12:31:10 2008 +0000 - - [test] Fix compilation of imagediff. - - imagediff broke once again. - - test/Makefile.am | 3 ++- - test/imagediff.c | 17 +++++++++++++++++ - 2 files changed, 19 insertions(+), 1 deletions(-) - -commit 282d7744275f623ce550638df953ef279d2209f0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 12:53:15 2008 +0000 - - [mime-type] Request the mime-data for the source surface, not ourselves! - - Fixup a typo I introduced that caused us to request the jpeg data for the - destination surface and not the source. - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 5 ++--- - 2 files changed, 3 insertions(+), 4 deletions(-) - -commit aa616abc9ab02e333cf0cad4f524b15c710bf449 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 11:18:22 2008 +0000 - - [png] Use RGB for opaque images. - - If the ARGB32 is opaque, discard the alpha channel - so we should generate - byte identical output to the reference images. - - src/cairo-png.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 30976635d7072c06d00e39b106e41be7b08c6c49 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Nov 4 22:52:45 2008 +1030 - - PS: Implement JPEG embedding - - src/cairo-ps-surface.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 101 insertions(+), 3 deletions(-) - -commit 73bc278c7a4630cd9299c974771ffd6e9245d0ac -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Tue Nov 4 22:25:26 2008 +1030 - - Add pdf mime data test - - To test that images in PDF files correctly embedded the mime data. - - test/Makefile.am | 2 + - test/pdf-mime-data.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 153 insertions(+), 0 deletions(-) - -commit 3f18d38fbdc661d34e0fd951e0fd3aa1aa2cbcc9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 10:31:48 2008 +0000 - - [win32] Compile fix for extend-pad extents. - - Update the show_glyphs() prototype to include the extents argument. - - src/cairo-win32-printing-surface.c | 3 ++- - src/cairo-win32-private.h | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit 5ba95b7e1287ade0b8a1acf2f5cb73fa1f44c451 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 09:22:28 2008 +0000 - - [trace] Convert [1 0 0 1 0 0] to identity - - Simplify the trace/replay by replacing the identity array with the - identity operator. - - util/cairo-trace/trace.c | 34 +++++++++++++++++++++++++--------- - 1 files changed, 25 insertions(+), 9 deletions(-) - -commit 3664b32195b101ebab9a5f9087095306f8969c80 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Nov 4 10:38:41 2008 +0000 - - [trace] Remove more @..@ from Makefile.am - - Use $(..) for make variable substitution as opposed to incorrectly using - @..@ for substitution by configure. - - util/cairo-trace/Makefile.am | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 1d8ad69abb88f6e0283b6ce2aadc5d801b8e3722 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Nov 4 01:51:06 2008 -0500 - - [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363) - - build/aclocal.dolt.m4 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 310026ab42c2078e2749c886c74c5b38cab41671 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Nov 4 01:51:06 2008 -0500 - - [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363) - - build/aclocal.dolt.m4 | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 90217550120f129004bc555b59ced28b4b25a4d4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 23:45:12 2008 +0000 - - [mime-data] Copy a reference to the mime-data on snapshotting. - - Instead of doing a full-copy of the mime data (which can be 10K-100K, - or even larger) just copy a reference to the original mime to the - snapshot surface (as suggested by Behdad). - - src/cairo-surface-fallback.c | 29 +++------------- - src/cairo-surface.c | 79 +++++++++++++++++++++++++++++------------- - src/cairo-types-private.h | 2 + - src/cairoint.h | 5 +++ - 4 files changed, 67 insertions(+), 48 deletions(-) - -commit 4f032ca35a7086b76775e4b53c6b99ba4e1eb3cb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 23:23:09 2008 +0000 - - [trace] Install cairo-trace.so into $(libdir)/cairo - - Install the auxiliary library into the cairo subdirectory within the - lib path, so that it doesn't clutter $(libdir) and sets a precedent for - future auxiliary libraries. - - util/cairo-trace/Makefile.am | 7 ++++--- - util/cairo-trace/cairo-trace.in | 13 ++++++++++--- - 2 files changed, 14 insertions(+), 6 deletions(-) - -commit c80a1c68c19f876c9f55b7c6d62b18ae110b11d0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 23:16:09 2008 +0000 - - [configure] Make trace consistent. - - Remove the debianism from the comments for HAVE_BFD and comply with - Behdad's guidelines on using $(...) within Makefile.am. - - configure.ac | 5 ++--- - util/cairo-trace/Makefile.am | 6 +++--- - 2 files changed, 5 insertions(+), 6 deletions(-) - -commit 43e2370b024f66d995c514fd53414d3d8588a481 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 14:20:35 2008 +0000 - - [test] Update extend-pad. - - extend-pad was not a clear demonstration of the EXTEND_PAD mode, so revamp - it to show the filter extending a 4 pixel surface to cover the entire - output. However, this hides a discrepancy with the vector surfaces that we - cannot prevent the external renders from applying an interpolation to the - border pixels, so we copy the original test to extend-pad-border to check - the desired behaviour on boundary pixels. - - test/Makefile.am | 4 ++ - test/extend-pad-border.c | 95 +++++++++++++++++++++++++++++++++++++++ - test/extend-pad-border.ref.png | Bin 0 -> 616 bytes - test/extend-pad-similar.c | 82 +++++++++++++++++++++++++++++++++ - test/extend-pad-similar.ref.png | Bin 0 -> 315 bytes - test/extend-pad.c | 50 ++++++++------------- - test/extend-pad.ref.png | Bin 616 -> 315 bytes - 7 files changed, 200 insertions(+), 31 deletions(-) - -commit b3462c5616ae24fd391ad0872d2fbb98c6cd0c92 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 13:10:42 2008 +0000 - - [test] Convert a few residual '-out.*' - - Catch a few -out.* hiding in boilerplate. - - boilerplate/cairo-boilerplate-pdf.c | 2 +- - boilerplate/cairo-boilerplate-ps.c | 2 +- - boilerplate/cairo-boilerplate-svg.c | 2 +- - boilerplate/cairo-boilerplate-win32-printing.c | 2 +- - test/Makefile.am | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -commit 34586860ef08e6aab988ba227997dfe376f9d319 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 12:11:14 2008 +0000 - - [trace] Big-endian compile fixes. - - A few typos. - - util/cairo-trace/trace.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit ca83df55a63eab1821dbc009f65b3b09d61f5b62 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 11:46:31 2008 +0000 - - [trace] Wrap test surfaces. - - Wrap the test surfaces to avoid crashes whilst tracing the test suite. - - util/cairo-trace/trace.c | 116 ++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 108 insertions(+), 8 deletions(-) - -commit 2c08f3f83b1acd168cd74b300272970658179a0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 11:30:38 2008 +0000 - - [trace] Autodetect -lbfd during configure - - Stop being lazy and detect libbfd during configure. - - configure.ac | 10 ++++++++++ - util/cairo-trace/Makefile.am | 2 +- - util/cairo-trace/lookup-symbol.c | 6 +++--- - 3 files changed, 14 insertions(+), 4 deletions(-) - -commit 8fc3d0ffebea5622332327cdef9222486cc85581 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 11:01:22 2008 +0000 - - [mime-data] Allow embedding of arbitrary mime-types. - - Use the surface user-data array allow to store an arbitrary set of - alternate image representations keyed by an interned string (which - ensures that it has a unique key in the user-visible namespace). - - Update the API to mirror that of cairo_surface_set_user_data() [i.e. - return a status indicator] and switch internal users of the mime-data to - the public functions. - - src/cairo-debug.c | 2 + - src/cairo-jpeg-info-private.h | 6 +- - src/cairo-jpeg-info.c | 19 +++---- - src/cairo-misc.c | 98 +++++++++++++++++++++++++++++++++++ - src/cairo-mutex-list-private.h | 1 + - src/cairo-pdf-surface.c | 16 +++--- - src/cairo-surface-fallback.c | 37 +++++++++---- - src/cairo-surface-private.h | 4 -- - src/cairo-surface.c | 91 ++++++++++++++++++++++++++------- - src/cairo-types-private.h | 7 +++ - src/cairo.h | 4 +- - src/cairoint.h | 8 +++ - test/Makefile.am | 3 + - test/mime-data.c | 111 ++++++++++++++++++++++++++++++++++++++++ - test/mime-data.ref.png | Bin 0 -> 263 bytes - test/romedalen.jpg | Bin 0 -> 11400 bytes - util/cairo-trace/trace.c | 2 +- - 17 files changed, 351 insertions(+), 58 deletions(-) - -commit afef83a1fae028b45cefd6b4698e7b32ad4d6fc7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Nov 3 09:40:35 2008 +0000 - - Compile tidy. - - Fix a few minor compiler warnings. - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-surface.c | 6 +++--- - 3 files changed, 5 insertions(+), 5 deletions(-) - -commit f77723fc88c12ebf6f5bff5a1797649d134ecc5d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 2 19:59:53 2008 +0000 - - [pdf] Missing status check. - - Check that stream was successfully opened before attempting to write to - it. - - src/cairo-pdf-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 04e3bb932eeac4f403b512087b96a164d082d52c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Nov 2 21:51:37 2008 +0000 - - [trace] Emit set_mime_data(). - - Wrap the new cairo_surface_set_mime_data() function. - - util/cairo-trace/trace.c | 30 ++++++++++++++++++++++++++++-- - 1 files changed, 28 insertions(+), 2 deletions(-) - -commit 350fa7b98e5045a4fa05f64a1ad7d8167036be34 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Nov 1 13:12:43 2008 +0000 - - [trace] Fix boundary terminations - - Don't increment the terminator! - - util/cairo-trace/trace.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f3cbc5cf4580da83b7edacfd381afee3d571c659 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 23:47:16 2008 +0000 - - [trace] Use utf8 len in show_text_glyphs(). - - Honour the parameter specifying the length of the utf8 string when - emitting show_text_glyphs. - - util/cairo-trace/trace.c | 36 ++++++++++++++++++++---------------- - 1 files changed, 20 insertions(+), 16 deletions(-) - -commit 6434cddb899d750b815d71f8f51ae3e4568dd3c0 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 2 11:42:33 2008 +1030 - - type1-subset: return unsupported on FT errors - - and let type1-fallback handle it. This fixes the bug reported by - Peter Weilbacher in - http://lists.cairographics.org/archives/cairo/2008-October/015569.html - - src/cairo-type1-subset.c | 12 ++++-------- - 1 files changed, 4 insertions(+), 8 deletions(-) - -commit 1685bbee1bf1ebc015ada94f77756d8d10c7818d -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 2 19:50:59 2008 +1030 - - test/README: fix typo - - test/README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 540ac11113015f0fd6856d016cb38fec5282b6ce -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 2 11:42:33 2008 +1030 - - type1-subset: return unsupported on FT errors - - and let type1-fallback handle it. This fixes the bug reported by - Peter Weilbacher in - http://lists.cairographics.org/archives/cairo/2008-October/015569.html - - src/cairo-type1-subset.c | 12 ++++-------- - 1 files changed, 4 insertions(+), 8 deletions(-) - -commit 3707178fa48e23b85c5640f3cee72e19f49c700b -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Sep 8 10:26:58 2008 +0930 - - PDF: Implement JPEG image embedding - - src/Makefile.sources | 2 + - src/cairo-jpeg-info-private.h | 54 ++++++++++++++++ - src/cairo-jpeg-info.c | 142 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 55 ++++++++++++++++ - 4 files changed, 253 insertions(+), 0 deletions(-) - -commit 3c684347f49a581bfba35202ec61a5f6334acd4a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Sep 7 20:46:20 2008 +0930 - - Add cairo_surface_set_mime_data() - - Currently only handles jpeg data. - - src/cairo-surface-fallback.c | 15 +++++++++ - src/cairo-surface-private.h | 4 ++ - src/cairo-surface.c | 67 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 15 +++++++++ - 4 files changed, 101 insertions(+), 0 deletions(-) - -commit a39a4f52ac4a057f579e881a9a929029bcc514d1 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 21:02:26 2008 +0930 - - PS: meta-surface patterns with EXTEND_PAD are unsupported - - We have to use fallback images for this. - - src/cairo-ps-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 19ee13ca2b5b1e08a7fc965516be514d2fe40232 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 21:01:17 2008 +0930 - - PS: Implement EXTEND_PAD for image patterns - - Images with EXTEND_PAD are painted into a new image the size of the - operation extents. The new image is then embedded in the PS file with - the pattern matrix adjusted to ensure the image origin is in the - correct location. - - src/cairo-ps-surface-private.h | 1 + - src/cairo-ps-surface.c | 99 +++++++++++++++++++++++++++++++++------- - 2 files changed, 83 insertions(+), 17 deletions(-) - -commit e639b536711c07bc09355205f476ab3f73012268 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 21:00:30 2008 +0930 - - PDF: meta-surface patterns with EXTEND_PAD are unsupported - - We have to use fallback images for this. - - src/cairo-pdf-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 6c92edd9a3b0c79857cfa8dee482efa56f40c714 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 20:56:49 2008 +0930 - - PDF: Implement EXTEND_PAD for image patterns - - Images with EXTEND_PAD are painted into a new image the size of the - operation extents. The new image is then embedded in the PDF file with - the pattern matrix adjusted to ensure the image origin is in the - correct location. - - src/cairo-pdf-surface.c | 70 +++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 62 insertions(+), 8 deletions(-) - -commit d146cb4056ab54cf85454a6fe9d36282ca7a3f2e -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 20:56:01 2008 +0930 - - PDF: Store the operation extents in each pattern - - The extents will be used by EXTEND_PAD patterns as well as any other - pattern that can benefit from knowing the extents of the operation it - will be used with. - - src/cairo-pdf-surface-private.h | 1 + - src/cairo-pdf-surface.c | 30 ++++++++++++++++++++++++------ - 2 files changed, 25 insertions(+), 6 deletions(-) - -commit fb7cfdd94d4e436e066d884f6dc294efd896b344 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 20:52:08 2008 +0930 - - Make meta-surface store and replay extents of each operation - - To be able to provide the extents of each operation to the backend - during the render phase the meta-surface needs to store the extents - computed by the analysis surface during the analysis phase. - - The extents argument is either a pointer to the extents of the operation - stored in the meta-surface or NULL. During analysis the analysis surface - writes the extents to the meta-surface. During the render phase the extents - is made available to paginated surface backends. - - src/cairo-analysis-surface.c | 12 ++++++++++++ - src/cairo-meta-surface-private.h | 1 + - src/cairo-meta-surface.c | 33 +++++++++++++++++++++++++++------ - 3 files changed, 40 insertions(+), 6 deletions(-) - -commit d682d275b90f7326df76d2764c513c8b6d5b551b -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 1 20:50:53 2008 +0930 - - Add an extents argument to the high level surface backend functions - - Add a "cairo_rectangle_int_t *extents" argument to to the following - backend functions: - paint - mask, - stroke - fill - show_glyphs - show_text_glyphs - - This will be used to pass the extents of each operation computed by - the analysis surface to the backend. This is required for implementing - EXTEND_PAD. - - src/cairo-analysis-surface.c | 49 ++++++++++++++++++++++-------------- - src/cairo-directfb-surface.c | 3 +- - src/cairo-gstate.c | 12 ++++---- - src/cairo-meta-surface.c | 27 +++++++++++-------- - src/cairo-paginated-surface.c | 27 +++++++++++-------- - src/cairo-pdf-surface.c | 18 +++++++++---- - src/cairo-ps-surface.c | 12 ++++++--- - src/cairo-quartz-surface.c | 15 +++++++--- - src/cairo-surface.c | 45 +++++++++++++++++++-------------- - src/cairo-svg-surface.c | 24 +++++++++++------ - src/cairo-type3-glyph-surface.c | 17 ++++++++---- - src/cairo-win32-printing-surface.c | 12 ++++++--- - src/cairo-win32-surface.c | 3 +- - src/cairo-xlib-surface.c | 8 +++-- - src/cairoint.h | 39 +++++++++++++++++++--------- - src/test-meta-surface.c | 25 +++++++++++------- - src/test-paginated-surface.c | 25 +++++++++++------- - 17 files changed, 223 insertions(+), 138 deletions(-) - -commit ed2081d97401741db10b0244eaba7ff31ae63346 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sun Nov 2 15:05:07 2008 +1030 - - Specify a background color for XFAIL text - - To improve readability on terminals with a white background. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 81c3009c077ddab40df052bffaa646526e2b8dfc -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Oct 31 16:45:58 2008 -0400 - - [boilerplate/Makefile.win32] Only build source files, not headers - - boilerplate/Makefile.win32 | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit d5f88c28021907ad761a1bf1c311bfd206db617e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Oct 31 13:43:37 2008 -0400 - - [.gitignore] Add - - util/cairo-trace/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 49bd253fd36dc93219a5414c6e7a6daeaa9c63b9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 16:40:49 2008 +0000 - - [tessellator] Refine the math comments. - - First of a simple substitution for -?-, as they are very confusing in - context with other minus signs floating around. - - Carl has promised to go over these docs with me at the HackFest in order - to improve them (and verify them). - - src/cairo-bentley-ottmann.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) - -commit ab8a0bfd82f8f474714d7aae4ceff4e7848c9b4b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 16:09:13 2008 +0000 - - Add a COPYING file to each aux. source directory - - Include a COPYING inside perf/, test/, util/ to clarify the licensing - conditions beneath the respective directories. This is because cairo - itself (libcairo.so) is LGPL-2.1/MPL-1.1 but that only relates to src/. - The auxiliary source files are under a mix of free licenses and we wish to - be clear just what license applies to each file. - - In particular, cairo-trace needs to include the GPL terms and conditions. - - COPYING | 17 +- - perf/COPYING | 5 + - perf/Makefile.am | 2 +- - test/COPYING | 5 + - test/Makefile.am | 2 +- - util/COPYING | 4 + - util/Makefile.am | 1 + - util/cairo-trace/COPYING | 5 + - util/cairo-trace/COPYING-GPL-3 | 674 ++++++++++++++++++++++++++++++++++++++++ - util/cairo-trace/Makefile.am | 5 +- - 10 files changed, 709 insertions(+), 11 deletions(-) - -commit c554f18d78fff71aff2d79309b19155de407363d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 15:37:58 2008 +0000 - - [util] Add cairo-trace. - - This tool can be used to trace all the cairo function calls made by an - applications. This is useful for either extracting a test case triggering - a bug from an application, or simply to get a general idea of how an - application is using cairo. - - After make install, cairo-trace program arguments, will print out all the - cairo calls to the terminal and also capture theme in ./program.$pid.trace - - The format of the output is CairoScript, watch this space for more - cairo-script tools! - - build/configure.ac.system | 2 + - configure.ac | 17 + - util/Makefile.am | 6 + - util/README | 8 - - util/cairo-trace/Makefile.am | 21 + - util/cairo-trace/cairo-trace.in | 58 + - util/cairo-trace/lookup-symbol.c | 290 ++++ - util/cairo-trace/lookup-symbol.h | 24 + - util/cairo-trace/trace.c | 3345 ++++++++++++++++++++++++++++++++++++++ - 9 files changed, 3763 insertions(+), 8 deletions(-) - -commit 992f74d884c9ea83f7b51c6959dd93718027b99a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 13:50:55 2008 +0000 - - [test] Use '.' as the field separator in the names - - We frequently use '-' within the test name or format name and so we - encounter confusion as '-' is also used as the field separator. At times - this has caused a new test to break an old test because the new test would - match one of the old test's target specific reference images. So switch - everything over to use '.' between fields (test name, target, format, - subtest, etc.). - - test/.gitignore | 8 +- - test/Makefile.am | 1402 ++++++++++---------- - test/a1-image-sample-ref.png | Bin 148 -> 0 bytes - test/a1-image-sample.ref.png | Bin 0 -> 148 bytes - test/a1-mask-ref.png | Bin 131 -> 0 bytes - test/a1-mask.ref.png | Bin 0 -> 131 bytes - test/a1-traps-sample-ref.png | Bin 148 -> 0 bytes - test/a1-traps-sample.ref.png | Bin 0 -> 148 bytes - test/a8-mask-ref.png | Bin 128 -> 0 bytes - test/a8-mask.ref.png | Bin 0 -> 128 bytes - test/alpha-similar-ref.png | Bin 99 -> 0 bytes - test/alpha-similar-rgb24-ref.png | Bin 99 -> 0 bytes - test/alpha-similar.ref.png | Bin 0 -> 99 bytes - test/alpha-similar.rgb24.ref.png | Bin 0 -> 99 bytes - test/big-line-ps2-ref.png | Bin 1148 -> 0 bytes - test/big-line-ps2-rgb24-ref.png | Bin 830 -> 0 bytes - test/big-line-ps3-ref.png | Bin 1148 -> 0 bytes - test/big-line-ps3-rgb24-ref.png | Bin 830 -> 0 bytes - test/big-line-quartz-ref.png | Bin 1075 -> 0 bytes - test/big-line-quartz-rgb24-ref.png | Bin 941 -> 0 bytes - test/big-line-ref.png | Bin 1486 -> 0 bytes - test/big-line-rgb24-ref.png | Bin 1308 -> 0 bytes - test/big-line.ps2.ref.png | Bin 0 -> 1148 bytes - test/big-line.ps2.rgb24.ref.png | Bin 0 -> 830 bytes - test/big-line.ps3.ref.png | Bin 0 -> 1148 bytes - test/big-line.ps3.rgb24.ref.png | Bin 0 -> 830 bytes - test/big-line.quartz.ref.png | Bin 0 -> 1075 bytes - test/big-line.quartz.rgb24.ref.png | Bin 0 -> 941 bytes - test/big-line.ref.png | Bin 0 -> 1486 bytes - test/big-line.rgb24.ref.png | Bin 0 -> 1308 bytes - test/bilevel-image-ref.png | Bin 131 -> 0 bytes - test/bilevel-image.ref.png | Bin 0 -> 131 bytes - test/bitmap-font-ref.png | Bin 950 -> 0 bytes - test/bitmap-font-rgb24-ref.png | Bin 890 -> 0 bytes - test/bitmap-font.ref.png | Bin 0 -> 950 bytes - test/bitmap-font.rgb24.ref.png | Bin 0 -> 890 bytes - test/cairo-test.c | 68 +- - test/cairo-test.h | 1 + - test/caps-joins-alpha-quartz-ref.png | Bin 2466 -> 0 bytes - test/caps-joins-alpha-ref.png | Bin 2463 -> 0 bytes - test/caps-joins-alpha-svg11-ref.png | Bin 2454 -> 0 bytes - test/caps-joins-alpha-svg12-ref.png | Bin 2454 -> 0 bytes - test/caps-joins-alpha.quartz.ref.png | Bin 0 -> 2466 bytes - test/caps-joins-alpha.ref.png | Bin 0 -> 2463 bytes - test/caps-joins-alpha.svg11.ref.png | Bin 0 -> 2454 bytes - test/caps-joins-alpha.svg12.ref.png | Bin 0 -> 2454 bytes - test/caps-joins-ps2-ref.png | Bin 1459 -> 0 bytes - test/caps-joins-ps3-ref.png | Bin 1459 -> 0 bytes - test/caps-joins-ref.png | Bin 1488 -> 0 bytes - test/caps-joins.ps2.ref.png | Bin 0 -> 1459 bytes - test/caps-joins.ps3.ref.png | Bin 0 -> 1459 bytes - test/caps-joins.ref.png | Bin 0 -> 1488 bytes - test/caps-sub-paths-ref.png | Bin 197 -> 0 bytes - test/caps-sub-paths.ref.png | Bin 0 -> 197 bytes - test/clip-all-ref.png | Bin 118 -> 0 bytes - test/clip-all.ref.png | Bin 0 -> 118 bytes - test/clip-empty-ref.png | Bin 118 -> 0 bytes - test/clip-empty.ref.png | Bin 0 -> 118 bytes - test/clip-fill-rule-pixel-aligned-ref.png | Bin 195 -> 0 bytes - test/clip-fill-rule-pixel-aligned-rgb24-ref.png | Bin 184 -> 0 bytes - test/clip-fill-rule-pixel-aligned.ref.png | Bin 0 -> 195 bytes - test/clip-fill-rule-pixel-aligned.rgb24.ref.png | Bin 0 -> 184 bytes - test/clip-fill-rule-ps2-argb32-ref.png | Bin 310 -> 0 bytes - test/clip-fill-rule-ps2-rgb24-ref.png | Bin 302 -> 0 bytes - test/clip-fill-rule-ps3-argb32-ref.png | Bin 310 -> 0 bytes - test/clip-fill-rule-ps3-rgb24-ref.png | Bin 302 -> 0 bytes - test/clip-fill-rule-ref.png | Bin 431 -> 0 bytes - test/clip-fill-rule-rgb24-ref.png | Bin 380 -> 0 bytes - test/clip-fill-rule.ps2.argb32.ref.png | Bin 0 -> 310 bytes - test/clip-fill-rule.ps2.rgb24.ref.png | Bin 0 -> 302 bytes - test/clip-fill-rule.ps3.argb32.ref.png | Bin 0 -> 310 bytes - test/clip-fill-rule.ps3.rgb24.ref.png | Bin 0 -> 302 bytes - test/clip-fill-rule.ref.png | Bin 0 -> 431 bytes - test/clip-fill-rule.rgb24.ref.png | Bin 0 -> 380 bytes - test/clip-nesting-ps2-argb32-ref.png | Bin 651 -> 0 bytes - test/clip-nesting-ps2-rgb24-ref.png | Bin 636 -> 0 bytes - test/clip-nesting-ps3-argb32-ref.png | Bin 651 -> 0 bytes - test/clip-nesting-ps3-rgb24-ref.png | Bin 636 -> 0 bytes - test/clip-nesting-quartz-ref.png | Bin 1067 -> 0 bytes - test/clip-nesting-quartz-rgb24-ref.png | Bin 956 -> 0 bytes - test/clip-nesting-ref.png | Bin 1050 -> 0 bytes - test/clip-nesting-rgb24-ref.png | Bin 955 -> 0 bytes - test/clip-nesting.ps2.argb32.ref.png | Bin 0 -> 651 bytes - test/clip-nesting.ps2.rgb24.ref.png | Bin 0 -> 636 bytes - test/clip-nesting.ps3.argb32.ref.png | Bin 0 -> 651 bytes - test/clip-nesting.ps3.rgb24.ref.png | Bin 0 -> 636 bytes - test/clip-nesting.quartz.ref.png | Bin 0 -> 1067 bytes - test/clip-nesting.quartz.rgb24.ref.png | Bin 0 -> 956 bytes - test/clip-nesting.ref.png | Bin 0 -> 1050 bytes - test/clip-nesting.rgb24.ref.png | Bin 0 -> 955 bytes - test/clip-operator-pdf-argb32-ref.png | Bin 12125 -> 0 bytes - test/clip-operator-pdf-rgb24-ref.png | Bin 7367 -> 0 bytes - test/clip-operator-ps2-rgb24-ref.png | Bin 3624 -> 0 bytes - test/clip-operator-ps3-ref.png | Bin 8188 -> 0 bytes - test/clip-operator-ps3-rgb24-ref.png | Bin 3624 -> 0 bytes - test/clip-operator-quartz-ref.png | Bin 9539 -> 0 bytes - test/clip-operator-quartz-rgb24-ref.png | Bin 4412 -> 0 bytes - test/clip-operator-ref.png | Bin 8271 -> 0 bytes - test/clip-operator-rgb24-ref.png | Bin 3258 -> 0 bytes - test/clip-operator.pdf.argb32.ref.png | Bin 0 -> 12125 bytes - test/clip-operator.pdf.rgb24.ref.png | Bin 0 -> 7367 bytes - test/clip-operator.ps2.rgb24.ref.png | Bin 0 -> 3624 bytes - test/clip-operator.ps3.ref.png | Bin 0 -> 8188 bytes - test/clip-operator.ps3.rgb24.ref.png | Bin 0 -> 3624 bytes - test/clip-operator.quartz.ref.png | Bin 0 -> 9539 bytes - test/clip-operator.quartz.rgb24.ref.png | Bin 0 -> 4412 bytes - test/clip-operator.ref.png | Bin 0 -> 8271 bytes - test/clip-operator.rgb24.ref.png | Bin 0 -> 3258 bytes - test/clip-push-group-ps2-argb32-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-ps2-rgb24-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-ps3-argb32-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-ps3-rgb24-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-quartz-ref.png | Bin 203 -> 0 bytes - test/clip-push-group-ref.png | Bin 199 -> 0 bytes - test/clip-push-group.ps2.argb32.ref.png | Bin 0 -> 179 bytes - test/clip-push-group.ps2.rgb24.ref.png | Bin 0 -> 179 bytes - test/clip-push-group.ps3.argb32.ref.png | Bin 0 -> 179 bytes - test/clip-push-group.ps3.rgb24.ref.png | Bin 0 -> 179 bytes - test/clip-push-group.quartz.ref.png | Bin 0 -> 203 bytes - test/clip-push-group.ref.png | Bin 0 -> 199 bytes - test/clip-twice-ps2-argb32-ref.png | Bin 575 -> 0 bytes - test/clip-twice-ps2-rgb24-ref.png | Bin 541 -> 0 bytes - test/clip-twice-ps3-argb32-ref.png | Bin 575 -> 0 bytes - test/clip-twice-ps3-rgb24-ref.png | Bin 541 -> 0 bytes - test/clip-twice-quartz-ref.png | Bin 1171 -> 0 bytes - test/clip-twice-quartz-rgb24-ref.png | Bin 1111 -> 0 bytes - test/clip-twice-ref.png | Bin 1362 -> 0 bytes - test/clip-twice-rgb24-ref.png | Bin 1198 -> 0 bytes - test/clip-twice.ps2.argb32.ref.png | Bin 0 -> 575 bytes - test/clip-twice.ps2.rgb24.ref.png | Bin 0 -> 541 bytes - test/clip-twice.ps3.argb32.ref.png | Bin 0 -> 575 bytes - test/clip-twice.ps3.rgb24.ref.png | Bin 0 -> 541 bytes - test/clip-twice.quartz.ref.png | Bin 0 -> 1171 bytes - test/clip-twice.quartz.rgb24.ref.png | Bin 0 -> 1111 bytes - test/clip-twice.ref.png | Bin 0 -> 1362 bytes - test/clip-twice.rgb24.ref.png | Bin 0 -> 1198 bytes - test/clipped-group-ps2-ref.png | Bin 343 -> 0 bytes - test/clipped-group-ps3-ref.png | Bin 343 -> 0 bytes - test/clipped-group-ref.png | Bin 350 -> 0 bytes - test/clipped-group.ps2.ref.png | Bin 0 -> 343 bytes - test/clipped-group.ps3.ref.png | Bin 0 -> 343 bytes - test/clipped-group.ref.png | Bin 0 -> 350 bytes - test/clipped-surface-ref.png | Bin 401 -> 0 bytes - test/clipped-surface.ref.png | Bin 0 -> 401 bytes - test/close-path-ps2-ref.png | Bin 309 -> 0 bytes - test/close-path-ps3-ref.png | Bin 309 -> 0 bytes - test/close-path-ref.png | Bin 312 -> 0 bytes - test/close-path.ps2.ref.png | Bin 0 -> 309 bytes - test/close-path.ps3.ref.png | Bin 0 -> 309 bytes - test/close-path.ref.png | Bin 0 -> 312 bytes - test/composite-integer-translate-over-ps2-ref.png | Bin 15783 -> 0 bytes - test/composite-integer-translate-over-ps3-ref.png | Bin 15783 -> 0 bytes - test/composite-integer-translate-over-ref.png | Bin 16385 -> 0 bytes - ...osite-integer-translate-over-repeat-ps2-ref.png | Bin 448 -> 0 bytes - ...osite-integer-translate-over-repeat-ps3-ref.png | Bin 448 -> 0 bytes - ...composite-integer-translate-over-repeat-ref.png | Bin 401 -> 0 bytes - ...osite-integer-translate-over-repeat.ps2.ref.png | Bin 0 -> 448 bytes - ...osite-integer-translate-over-repeat.ps3.ref.png | Bin 0 -> 448 bytes - ...composite-integer-translate-over-repeat.ref.png | Bin 0 -> 401 bytes - test/composite-integer-translate-over.ps2.ref.png | Bin 0 -> 15783 bytes - test/composite-integer-translate-over.ps3.ref.png | Bin 0 -> 15783 bytes - test/composite-integer-translate-over.ref.png | Bin 0 -> 16385 bytes - .../composite-integer-translate-source-ps2-ref.png | Bin 15783 -> 0 bytes - .../composite-integer-translate-source-ps3-ref.png | Bin 15783 -> 0 bytes - test/composite-integer-translate-source-ref.png | Bin 16385 -> 0 bytes - .../composite-integer-translate-source.ps2.ref.png | Bin 0 -> 15783 bytes - .../composite-integer-translate-source.ps3.ref.png | Bin 0 -> 15783 bytes - test/composite-integer-translate-source.ref.png | Bin 0 -> 16385 bytes - test/copy-path-ps2-ref.png | Bin 474 -> 0 bytes - test/copy-path-ps3-ref.png | Bin 474 -> 0 bytes - test/copy-path-ref.png | Bin 579 -> 0 bytes - test/copy-path.ps2.ref.png | Bin 0 -> 474 bytes - test/copy-path.ps3.ref.png | Bin 0 -> 474 bytes - test/copy-path.ref.png | Bin 0 -> 579 bytes - test/create-for-stream.c | 2 +- - test/create-from-png-alpha-ref.png | Bin 150 -> 0 bytes - test/create-from-png-gray-alpha-ref.png | Bin 142 -> 0 bytes - test/create-from-png-gray-ref.png | Bin 124 -> 0 bytes - test/create-from-png-indexed-alpha-ref.png | Bin 172 -> 0 bytes - test/create-from-png-indexed-ref.png | Bin 159 -> 0 bytes - test/create-from-png-ref.png | Bin 131 -> 0 bytes - test/create-from-png-stream-ref.png | Bin 100 -> 0 bytes - test/create-from-png-stream.c | 2 +- - test/create-from-png-stream.ref.png | Bin 0 -> 100 bytes - test/create-from-png.alpha.ref.png | Bin 0 -> 150 bytes - test/create-from-png.c | 16 +- - test/create-from-png.gray-alpha.ref.png | Bin 0 -> 142 bytes - test/create-from-png.gray.ref.png | Bin 0 -> 124 bytes - test/create-from-png.indexed-alpha.ref.png | Bin 0 -> 172 bytes - test/create-from-png.indexed.ref.png | Bin 0 -> 159 bytes - test/create-from-png.ref.png | Bin 0 -> 131 bytes - test/dash-caps-joins-ps2-argb32-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-ps2-rgb24-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-ps3-argb32-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-ps3-rgb24-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-quartz-ref.png | Bin 4727 -> 0 bytes - test/dash-caps-joins-ref.png | Bin 4718 -> 0 bytes - test/dash-caps-joins.ps2.argb32.ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins.ps2.rgb24.ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins.ps3.argb32.ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins.ps3.rgb24.ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins.quartz.ref.png | Bin 0 -> 4727 bytes - test/dash-caps-joins.ref.png | Bin 0 -> 4718 bytes - test/dash-curve-ps2-ref.png | Bin 27293 -> 0 bytes - test/dash-curve-ps3-ref.png | Bin 27293 -> 0 bytes - test/dash-curve-quartz-ref.png | Bin 47965 -> 0 bytes - test/dash-curve-ref.png | Bin 39642 -> 0 bytes - test/dash-curve.ps2.ref.png | Bin 0 -> 27293 bytes - test/dash-curve.ps3.ref.png | Bin 0 -> 27293 bytes - test/dash-curve.quartz.ref.png | Bin 0 -> 47965 bytes - test/dash-curve.ref.png | Bin 0 -> 39642 bytes - test/dash-no-dash-ref.png | Bin 152 -> 0 bytes - test/dash-no-dash.ref.png | Bin 0 -> 152 bytes - test/dash-offset-negative-ref.png | Bin 171 -> 0 bytes - test/dash-offset-negative.ref.png | Bin 0 -> 171 bytes - test/dash-scale-ps2-argb32-ref.png | Bin 6318 -> 0 bytes - test/dash-scale-ps2-rgb24-ref.png | Bin 6316 -> 0 bytes - test/dash-scale-ps3-argb32-ref.png | Bin 6318 -> 0 bytes - test/dash-scale-ps3-rgb24-ref.png | Bin 6316 -> 0 bytes - test/dash-scale-quartz-ref.png | Bin 8079 -> 0 bytes - test/dash-scale-ref.png | Bin 8058 -> 0 bytes - test/dash-scale.ps2.argb32.ref.png | Bin 0 -> 6318 bytes - test/dash-scale.ps2.rgb24.ref.png | Bin 0 -> 6316 bytes - test/dash-scale.ps3.argb32.ref.png | Bin 0 -> 6318 bytes - test/dash-scale.ps3.rgb24.ref.png | Bin 0 -> 6316 bytes - test/dash-scale.quartz.ref.png | Bin 0 -> 8079 bytes - test/dash-scale.ref.png | Bin 0 -> 8058 bytes - test/dash-state-ps2-ref.png | Bin 10219 -> 0 bytes - test/dash-state-ps3-ref.png | Bin 10219 -> 0 bytes - test/dash-state-quartz-ref.png | Bin 8698 -> 0 bytes - test/dash-state-ref.png | Bin 9389 -> 0 bytes - test/dash-state.ps2.ref.png | Bin 0 -> 10219 bytes - test/dash-state.ps3.ref.png | Bin 0 -> 10219 bytes - test/dash-state.quartz.ref.png | Bin 0 -> 8698 bytes - test/dash-state.ref.png | Bin 0 -> 9389 bytes - test/dash-zero-length-ps2-ref.png | Bin 319 -> 0 bytes - test/dash-zero-length-ps2-rgb24-ref.png | Bin 304 -> 0 bytes - test/dash-zero-length-ps3-ref.png | Bin 319 -> 0 bytes - test/dash-zero-length-ps3-rgb24-ref.png | Bin 304 -> 0 bytes - test/dash-zero-length-ref.png | Bin 238 -> 0 bytes - test/dash-zero-length-rgb24-ref.png | Bin 218 -> 0 bytes - test/dash-zero-length.ps2.ref.png | Bin 0 -> 319 bytes - test/dash-zero-length.ps2.rgb24.ref.png | Bin 0 -> 304 bytes - test/dash-zero-length.ps3.ref.png | Bin 0 -> 319 bytes - test/dash-zero-length.ps3.rgb24.ref.png | Bin 0 -> 304 bytes - test/dash-zero-length.ref.png | Bin 0 -> 238 bytes - test/dash-zero-length.rgb24.ref.png | Bin 0 -> 218 bytes - test/degenerate-arc-ps2-ref.png | Bin 585 -> 0 bytes - test/degenerate-arc-ps3-ref.png | Bin 585 -> 0 bytes - test/degenerate-arc-ref.png | Bin 616 -> 0 bytes - test/degenerate-arc.ps2.ref.png | Bin 0 -> 585 bytes - test/degenerate-arc.ps3.ref.png | Bin 0 -> 585 bytes - test/degenerate-arc.ref.png | Bin 0 -> 616 bytes - test/degenerate-dash-ref.png | Bin 2005 -> 0 bytes - test/degenerate-dash.ref.png | Bin 0 -> 2005 bytes - test/degenerate-path-ps2-argb32-ref.png | Bin 390 -> 0 bytes - test/degenerate-path-ps2-rgb24-ref.png | Bin 358 -> 0 bytes - test/degenerate-path-ps3-argb32-ref.png | Bin 390 -> 0 bytes - test/degenerate-path-ps3-rgb24-ref.png | Bin 358 -> 0 bytes - test/degenerate-path-quartz-ref.png | Bin 232 -> 0 bytes - test/degenerate-path-quartz-rgb24-ref.png | Bin 198 -> 0 bytes - test/degenerate-path-ref.png | Bin 257 -> 0 bytes - test/degenerate-path-rgb24-ref.png | Bin 224 -> 0 bytes - test/degenerate-path.ps2.argb32.ref.png | Bin 0 -> 390 bytes - test/degenerate-path.ps2.rgb24.ref.png | Bin 0 -> 358 bytes - test/degenerate-path.ps3.argb32.ref.png | Bin 0 -> 390 bytes - test/degenerate-path.ps3.rgb24.ref.png | Bin 0 -> 358 bytes - test/degenerate-path.quartz.ref.png | Bin 0 -> 232 bytes - test/degenerate-path.quartz.rgb24.ref.png | Bin 0 -> 198 bytes - test/degenerate-path.ref.png | Bin 0 -> 257 bytes - test/degenerate-path.rgb24.ref.png | Bin 0 -> 224 bytes - test/degenerate-pen-ps2-ref.png | Bin 865 -> 0 bytes - test/degenerate-pen-ps3-ref.png | Bin 865 -> 0 bytes - test/degenerate-pen-quartz-ref.png | Bin 1144 -> 0 bytes - test/degenerate-pen-ref.png | Bin 1139 -> 0 bytes - test/degenerate-pen.ps2.ref.png | Bin 0 -> 865 bytes - test/degenerate-pen.ps3.ref.png | Bin 0 -> 865 bytes - test/degenerate-pen.quartz.ref.png | Bin 0 -> 1144 bytes - test/degenerate-pen.ref.png | Bin 0 -> 1139 bytes - test/device-offset-fractional-pdf-ref.png | Bin 277 -> 0 bytes - test/device-offset-fractional-ps2-ref.png | Bin 200 -> 0 bytes - test/device-offset-fractional-ps3-ref.png | Bin 200 -> 0 bytes - test/device-offset-fractional-ref.png | Bin 269 -> 0 bytes - test/device-offset-fractional.pdf.ref.png | Bin 0 -> 277 bytes - test/device-offset-fractional.ps2.ref.png | Bin 0 -> 200 bytes - test/device-offset-fractional.ps3.ref.png | Bin 0 -> 200 bytes - test/device-offset-fractional.ref.png | Bin 0 -> 269 bytes - test/device-offset-positive-ref.png | Bin 139 -> 0 bytes - test/device-offset-positive-rgb24-ref.png | Bin 130 -> 0 bytes - test/device-offset-positive.ref.png | Bin 0 -> 139 bytes - test/device-offset-positive.rgb24.ref.png | Bin 0 -> 130 bytes - test/device-offset-ref.png | Bin 137 -> 0 bytes - test/device-offset-rgb24-ref.png | Bin 130 -> 0 bytes - test/device-offset-scale-ref.png | Bin 145 -> 0 bytes - test/device-offset-scale.ref.png | Bin 0 -> 145 bytes - test/device-offset.ref.png | Bin 0 -> 137 bytes - test/device-offset.rgb24.ref.png | Bin 0 -> 130 bytes - test/extend-pad-ref.png | Bin 616 -> 0 bytes - test/extend-pad.ref.png | Bin 0 -> 616 bytes - test/extend-reflect-ps2-ref.png | Bin 146990 -> 0 bytes - test/extend-reflect-ps3-ref.png | Bin 146990 -> 0 bytes - test/extend-reflect-ref.png | Bin 153571 -> 0 bytes - test/extend-reflect-similar-ps2-ref.png | Bin 146990 -> 0 bytes - test/extend-reflect-similar-ps3-ref.png | Bin 146990 -> 0 bytes - test/extend-reflect-similar-ref.png | Bin 153571 -> 0 bytes - test/extend-reflect-similar.ps2.ref.png | Bin 0 -> 146990 bytes - test/extend-reflect-similar.ps3.ref.png | Bin 0 -> 146990 bytes - test/extend-reflect-similar.ref.png | Bin 0 -> 153571 bytes - test/extend-reflect.ps2.ref.png | Bin 0 -> 146990 bytes - test/extend-reflect.ps3.ref.png | Bin 0 -> 146990 bytes - test/extend-reflect.ref.png | Bin 0 -> 153571 bytes - test/extend-repeat-ps2-ref.png | Bin 119246 -> 0 bytes - test/extend-repeat-ps3-ref.png | Bin 119246 -> 0 bytes - test/extend-repeat-ref.png | Bin 108622 -> 0 bytes - test/extend-repeat-similar-ps2-ref.png | Bin 119246 -> 0 bytes - test/extend-repeat-similar-ps3-ref.png | Bin 119246 -> 0 bytes - test/extend-repeat-similar-ref.png | Bin 108622 -> 0 bytes - test/extend-repeat-similar.ps2.ref.png | Bin 0 -> 119246 bytes - test/extend-repeat-similar.ps3.ref.png | Bin 0 -> 119246 bytes - test/extend-repeat-similar.ref.png | Bin 0 -> 108622 bytes - test/extend-repeat.ps2.ref.png | Bin 0 -> 119246 bytes - test/extend-repeat.ps3.ref.png | Bin 0 -> 119246 bytes - test/extend-repeat.ref.png | Bin 0 -> 108622 bytes - test/fallback-resolution-ppi150x150-ref.png | Bin 8043 -> 0 bytes - test/fallback-resolution-ppi150x300-ref.png | Bin 6848 -> 0 bytes - test/fallback-resolution-ppi150x37.5-ref.png | Bin 13176 -> 0 bytes - test/fallback-resolution-ppi150x600-ref.png | Bin 6338 -> 0 bytes - test/fallback-resolution-ppi150x72-ref.png | Bin 8370 -> 0 bytes - test/fallback-resolution-ppi150x75-ref.png | Bin 10445 -> 0 bytes - test/fallback-resolution-ppi300x150-ref.png | Bin 6851 -> 0 bytes - test/fallback-resolution-ppi300x300-ref.png | Bin 5637 -> 0 bytes - test/fallback-resolution-ppi300x37.5-ref.png | Bin 12870 -> 0 bytes - test/fallback-resolution-ppi300x600-ref.png | Bin 4848 -> 0 bytes - test/fallback-resolution-ppi300x72-ref.png | Bin 7053 -> 0 bytes - test/fallback-resolution-ppi300x75-ref.png | Bin 9617 -> 0 bytes - test/fallback-resolution-ppi37.5x150-ref.png | Bin 12728 -> 0 bytes - test/fallback-resolution-ppi37.5x300-ref.png | Bin 11981 -> 0 bytes - test/fallback-resolution-ppi37.5x37.5-ref.png | Bin 14098 -> 0 bytes - test/fallback-resolution-ppi37.5x600-ref.png | Bin 11654 -> 0 bytes - test/fallback-resolution-ppi37.5x72-ref.png | Bin 12990 -> 0 bytes - test/fallback-resolution-ppi37.5x75-ref.png | Bin 13787 -> 0 bytes - test/fallback-resolution-ppi600x150-ref.png | Bin 6096 -> 0 bytes - test/fallback-resolution-ppi600x300-ref.png | Bin 4812 -> 0 bytes - test/fallback-resolution-ppi600x37.5-ref.png | Bin 12401 -> 0 bytes - test/fallback-resolution-ppi600x600-ref.png | Bin 4104 -> 0 bytes - test/fallback-resolution-ppi600x72-ref.png | Bin 6398 -> 0 bytes - test/fallback-resolution-ppi600x75-ref.png | Bin 8974 -> 0 bytes - test/fallback-resolution-ppi72x150-ref.png | Bin 8069 -> 0 bytes - test/fallback-resolution-ppi72x300-ref.png | Bin 6803 -> 0 bytes - test/fallback-resolution-ppi72x37.5-ref.png | Bin 13147 -> 0 bytes - test/fallback-resolution-ppi72x600-ref.png | Bin 6245 -> 0 bytes - test/fallback-resolution-ppi72x72-ref.png | Bin 8409 -> 0 bytes - test/fallback-resolution-ppi72x75-ref.png | Bin 10628 -> 0 bytes - test/fallback-resolution-ppi75x150-ref.png | Bin 9940 -> 0 bytes - test/fallback-resolution-ppi75x300-ref.png | Bin 9003 -> 0 bytes - test/fallback-resolution-ppi75x37.5-ref.png | Bin 14020 -> 0 bytes - test/fallback-resolution-ppi75x600-ref.png | Bin 8455 -> 0 bytes - test/fallback-resolution-ppi75x72-ref.png | Bin 10202 -> 0 bytes - test/fallback-resolution-ppi75x75-ref.png | Bin 12101 -> 0 bytes - test/fallback-resolution.c | 11 +- - test/fallback-resolution.ppi150x150.ref.png | Bin 0 -> 8043 bytes - test/fallback-resolution.ppi150x300.ref.png | Bin 0 -> 6848 bytes - test/fallback-resolution.ppi150x37.5.ref.png | Bin 0 -> 13176 bytes - test/fallback-resolution.ppi150x600.ref.png | Bin 0 -> 6338 bytes - test/fallback-resolution.ppi150x72.ref.png | Bin 0 -> 8370 bytes - test/fallback-resolution.ppi150x75.ref.png | Bin 0 -> 10445 bytes - test/fallback-resolution.ppi300x150.ref.png | Bin 0 -> 6851 bytes - test/fallback-resolution.ppi300x300.ref.png | Bin 0 -> 5637 bytes - test/fallback-resolution.ppi300x37.5.ref.png | Bin 0 -> 12870 bytes - test/fallback-resolution.ppi300x600.ref.png | Bin 0 -> 4848 bytes - test/fallback-resolution.ppi300x72.ref.png | Bin 0 -> 7053 bytes - test/fallback-resolution.ppi300x75.ref.png | Bin 0 -> 9617 bytes - test/fallback-resolution.ppi37.5x150.ref.png | Bin 0 -> 12728 bytes - test/fallback-resolution.ppi37.5x300.ref.png | Bin 0 -> 11981 bytes - test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 0 -> 14098 bytes - test/fallback-resolution.ppi37.5x600.ref.png | Bin 0 -> 11654 bytes - test/fallback-resolution.ppi37.5x72.ref.png | Bin 0 -> 12990 bytes - test/fallback-resolution.ppi37.5x75.ref.png | Bin 0 -> 13787 bytes - test/fallback-resolution.ppi600x150.ref.png | Bin 0 -> 6096 bytes - test/fallback-resolution.ppi600x300.ref.png | Bin 0 -> 4812 bytes - test/fallback-resolution.ppi600x37.5.ref.png | Bin 0 -> 12401 bytes - test/fallback-resolution.ppi600x600.ref.png | Bin 0 -> 4104 bytes - test/fallback-resolution.ppi600x72.ref.png | Bin 0 -> 6398 bytes - test/fallback-resolution.ppi600x75.ref.png | Bin 0 -> 8974 bytes - test/fallback-resolution.ppi72x150.ref.png | Bin 0 -> 8069 bytes - test/fallback-resolution.ppi72x300.ref.png | Bin 0 -> 6803 bytes - test/fallback-resolution.ppi72x37.5.ref.png | Bin 0 -> 13147 bytes - test/fallback-resolution.ppi72x600.ref.png | Bin 0 -> 6245 bytes - test/fallback-resolution.ppi72x72.ref.png | Bin 0 -> 8409 bytes - test/fallback-resolution.ppi72x75.ref.png | Bin 0 -> 10628 bytes - test/fallback-resolution.ppi75x150.ref.png | Bin 0 -> 9940 bytes - test/fallback-resolution.ppi75x300.ref.png | Bin 0 -> 9003 bytes - test/fallback-resolution.ppi75x37.5.ref.png | Bin 0 -> 14020 bytes - test/fallback-resolution.ppi75x600.ref.png | Bin 0 -> 8455 bytes - test/fallback-resolution.ppi75x72.ref.png | Bin 0 -> 10202 bytes - test/fallback-resolution.ppi75x75.ref.png | Bin 0 -> 12101 bytes - test/fill-alpha-pattern-pdf-argb32-ref.png | Bin 3887 -> 0 bytes - test/fill-alpha-pattern-pdf-rgb24-ref.png | Bin 3840 -> 0 bytes - test/fill-alpha-pattern-ps3-ref.png | Bin 4380 -> 0 bytes - test/fill-alpha-pattern-ref.png | Bin 3653 -> 0 bytes - test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 0 -> 3887 bytes - test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 0 -> 3840 bytes - test/fill-alpha-pattern.ps3.ref.png | Bin 0 -> 4380 bytes - test/fill-alpha-pattern.ref.png | Bin 0 -> 3653 bytes - test/fill-alpha-ref.png | Bin 2989 -> 0 bytes - test/fill-alpha.ref.png | Bin 0 -> 2989 bytes - test/fill-and-stroke-alpha-add-quartz-ref.png | Bin 603 -> 0 bytes - test/fill-and-stroke-alpha-add-ref.png | Bin 591 -> 0 bytes - test/fill-and-stroke-alpha-add.quartz.ref.png | Bin 0 -> 603 bytes - test/fill-and-stroke-alpha-add.ref.png | Bin 0 -> 591 bytes - test/fill-and-stroke-alpha-quartz-ref.png | Bin 550 -> 0 bytes - test/fill-and-stroke-alpha-ref.png | Bin 519 -> 0 bytes - test/fill-and-stroke-alpha.quartz.ref.png | Bin 0 -> 550 bytes - test/fill-and-stroke-alpha.ref.png | Bin 0 -> 519 bytes - test/fill-and-stroke-ps2-argb32-ref.png | Bin 310 -> 0 bytes - test/fill-and-stroke-ps2-rgb24-ref.png | Bin 319 -> 0 bytes - test/fill-and-stroke-ps3-argb32-ref.png | Bin 310 -> 0 bytes - test/fill-and-stroke-ps3-rgb24-ref.png | Bin 319 -> 0 bytes - test/fill-and-stroke-quartz-ref.png | Bin 286 -> 0 bytes - test/fill-and-stroke-quartz-rgb24-ref.png | Bin 264 -> 0 bytes - test/fill-and-stroke-ref.png | Bin 279 -> 0 bytes - test/fill-and-stroke-rgb24-ref.png | Bin 257 -> 0 bytes - test/fill-and-stroke.ps2.argb32.ref.png | Bin 0 -> 310 bytes - test/fill-and-stroke.ps2.rgb24.ref.png | Bin 0 -> 319 bytes - test/fill-and-stroke.ps3.argb32.ref.png | Bin 0 -> 310 bytes - test/fill-and-stroke.ps3.rgb24.ref.png | Bin 0 -> 319 bytes - test/fill-and-stroke.quartz.ref.png | Bin 0 -> 286 bytes - test/fill-and-stroke.quartz.rgb24.ref.png | Bin 0 -> 264 bytes - test/fill-and-stroke.ref.png | Bin 0 -> 279 bytes - test/fill-and-stroke.rgb24.ref.png | Bin 0 -> 257 bytes - test/fill-degenerate-sort-order-quartz-ref.png | Bin 2470 -> 0 bytes - ...fill-degenerate-sort-order-quartz-rgb24-ref.png | Bin 2098 -> 0 bytes - test/fill-degenerate-sort-order-ref.png | Bin 2397 -> 0 bytes - test/fill-degenerate-sort-order-rgb24-ref.png | Bin 2060 -> 0 bytes - test/fill-degenerate-sort-order.quartz.ref.png | Bin 0 -> 2470 bytes - ...fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin 0 -> 2098 bytes - test/fill-degenerate-sort-order.ref.png | Bin 0 -> 2397 bytes - test/fill-degenerate-sort-order.rgb24.ref.png | Bin 0 -> 2060 bytes - test/fill-missed-stop-ps2-argb32-ref.png | Bin 564 -> 0 bytes - test/fill-missed-stop-ps2-rgb24-ref.png | Bin 531 -> 0 bytes - test/fill-missed-stop-ps3-argb32-ref.png | Bin 564 -> 0 bytes - test/fill-missed-stop-ps3-rgb24-ref.png | Bin 531 -> 0 bytes - test/fill-missed-stop-ref.png | Bin 466 -> 0 bytes - test/fill-missed-stop-rgb24-ref.png | Bin 394 -> 0 bytes - test/fill-missed-stop.ps2.argb32.ref.png | Bin 0 -> 564 bytes - test/fill-missed-stop.ps2.rgb24.ref.png | Bin 0 -> 531 bytes - test/fill-missed-stop.ps3.argb32.ref.png | Bin 0 -> 564 bytes - test/fill-missed-stop.ps3.rgb24.ref.png | Bin 0 -> 531 bytes - test/fill-missed-stop.ref.png | Bin 0 -> 466 bytes - test/fill-missed-stop.rgb24.ref.png | Bin 0 -> 394 bytes - test/fill-rule-ps2-argb32-ref.png | Bin 2253 -> 0 bytes - test/fill-rule-ps2-rgb24-ref.png | Bin 2031 -> 0 bytes - test/fill-rule-ps3-argb32-ref.png | Bin 2253 -> 0 bytes - test/fill-rule-ps3-rgb24-ref.png | Bin 2031 -> 0 bytes - test/fill-rule-quartz-ref.png | Bin 2079 -> 0 bytes - test/fill-rule-quartz-rgb24-ref.png | Bin 1790 -> 0 bytes - test/fill-rule-ref.png | Bin 1979 -> 0 bytes - test/fill-rule-rgb24-ref.png | Bin 1722 -> 0 bytes - test/fill-rule.ps2.argb32.ref.png | Bin 0 -> 2253 bytes - test/fill-rule.ps2.rgb24.ref.png | Bin 0 -> 2031 bytes - test/fill-rule.ps3.argb32.ref.png | Bin 0 -> 2253 bytes - test/fill-rule.ps3.rgb24.ref.png | Bin 0 -> 2031 bytes - test/fill-rule.quartz.ref.png | Bin 0 -> 2079 bytes - test/fill-rule.quartz.rgb24.ref.png | Bin 0 -> 1790 bytes - test/fill-rule.ref.png | Bin 0 -> 1979 bytes - test/fill-rule.rgb24.ref.png | Bin 0 -> 1722 bytes - test/filter-bilinear-extents-pdf-ref.png | Bin 798 -> 0 bytes - test/filter-bilinear-extents-ps2-ref.png | Bin 556 -> 0 bytes - test/filter-bilinear-extents-ps3-ref.png | Bin 556 -> 0 bytes - test/filter-bilinear-extents-ref.png | Bin 1340 -> 0 bytes - test/filter-bilinear-extents.pdf.ref.png | Bin 0 -> 798 bytes - test/filter-bilinear-extents.ps2.ref.png | Bin 0 -> 556 bytes - test/filter-bilinear-extents.ps3.ref.png | Bin 0 -> 556 bytes - test/filter-bilinear-extents.ref.png | Bin 0 -> 1340 bytes - test/filter-nearest-offset-pdf-ref.png | Bin 4537 -> 0 bytes - test/filter-nearest-offset-ps2-ref.png | Bin 255 -> 0 bytes - test/filter-nearest-offset-ps3-ref.png | Bin 255 -> 0 bytes - test/filter-nearest-offset-ref.png | Bin 248 -> 0 bytes - test/filter-nearest-offset-svg11-ref.png | Bin 4739 -> 0 bytes - test/filter-nearest-offset-svg12-ref.png | Bin 4739 -> 0 bytes - test/filter-nearest-offset.pdf.ref.png | Bin 0 -> 4537 bytes - test/filter-nearest-offset.ps2.ref.png | Bin 0 -> 255 bytes - test/filter-nearest-offset.ps3.ref.png | Bin 0 -> 255 bytes - test/filter-nearest-offset.ref.png | Bin 0 -> 248 bytes - test/filter-nearest-offset.svg11.ref.png | Bin 0 -> 4739 bytes - test/filter-nearest-offset.svg12.ref.png | Bin 0 -> 4739 bytes - test/filter-nearest-transformed-pdf-ref.png | Bin 548 -> 0 bytes - test/filter-nearest-transformed-ref.png | Bin 570 -> 0 bytes - test/filter-nearest-transformed-svg11-ref.png | Bin 559 -> 0 bytes - test/filter-nearest-transformed-svg12-ref.png | Bin 559 -> 0 bytes - test/filter-nearest-transformed.pdf.ref.png | Bin 0 -> 548 bytes - test/filter-nearest-transformed.ref.png | Bin 0 -> 570 bytes - test/filter-nearest-transformed.svg11.ref.png | Bin 0 -> 559 bytes - test/filter-nearest-transformed.svg12.ref.png | Bin 0 -> 559 bytes - test/finer-grained-fallbacks-ps2-ref.png | Bin 1356 -> 0 bytes - test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 1096 -> 0 bytes - test/finer-grained-fallbacks-ps3-ref.png | Bin 1356 -> 0 bytes - test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 1096 -> 0 bytes - test/finer-grained-fallbacks-ref.png | Bin 1111 -> 0 bytes - test/finer-grained-fallbacks-rgb24-ref.png | Bin 1114 -> 0 bytes - test/finer-grained-fallbacks.ps2.ref.png | Bin 0 -> 1356 bytes - test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 0 -> 1096 bytes - test/finer-grained-fallbacks.ps3.ref.png | Bin 0 -> 1356 bytes - test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 0 -> 1096 bytes - test/finer-grained-fallbacks.ref.png | Bin 0 -> 1111 bytes - test/finer-grained-fallbacks.rgb24.ref.png | Bin 0 -> 1114 bytes - test/font-matrix-translation-ps2-argb32-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-ps2-rgb24-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-ps3-argb32-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-ps3-rgb24-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-quartz-ref.png | Bin 1090 -> 0 bytes - test/font-matrix-translation-ref.png | Bin 1006 -> 0 bytes - test/font-matrix-translation-svg11-ref.png | Bin 970 -> 0 bytes - test/font-matrix-translation-svg12-ref.png | Bin 970 -> 0 bytes - test/font-matrix-translation.ps2.argb32.ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation.ps2.rgb24.ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation.ps3.argb32.ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation.ps3.rgb24.ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation.quartz.ref.png | Bin 0 -> 1090 bytes - test/font-matrix-translation.ref.png | Bin 0 -> 1006 bytes - test/font-matrix-translation.svg11.ref.png | Bin 0 -> 970 bytes - test/font-matrix-translation.svg12.ref.png | Bin 0 -> 970 bytes - test/ft-show-glyphs-positioning-pdf-ref.png | Bin 3133 -> 0 bytes - test/ft-show-glyphs-positioning-ps2-ref.png | Bin 2269 -> 0 bytes - test/ft-show-glyphs-positioning-ps3-ref.png | Bin 2269 -> 0 bytes - test/ft-show-glyphs-positioning-ref.png | Bin 3444 -> 0 bytes - test/ft-show-glyphs-positioning-svg11-ref.png | Bin 6590 -> 0 bytes - test/ft-show-glyphs-positioning-svg12-ref.png | Bin 6590 -> 0 bytes - test/ft-show-glyphs-positioning.pdf.ref.png | Bin 0 -> 3133 bytes - test/ft-show-glyphs-positioning.ps2.ref.png | Bin 0 -> 2269 bytes - test/ft-show-glyphs-positioning.ps3.ref.png | Bin 0 -> 2269 bytes - test/ft-show-glyphs-positioning.ref.png | Bin 0 -> 3444 bytes - test/ft-show-glyphs-positioning.svg11.ref.png | Bin 0 -> 6590 bytes - test/ft-show-glyphs-positioning.svg12.ref.png | Bin 0 -> 6590 bytes - test/ft-show-glyphs-table-ps2-ref.png | Bin 5687 -> 0 bytes - test/ft-show-glyphs-table-ps3-ref.png | Bin 5687 -> 0 bytes - test/ft-show-glyphs-table-ref.png | Bin 11439 -> 0 bytes - test/ft-show-glyphs-table.ps2.ref.png | Bin 0 -> 5687 bytes - test/ft-show-glyphs-table.ps3.ref.png | Bin 0 -> 5687 bytes - test/ft-show-glyphs-table.ref.png | Bin 0 -> 11439 bytes - test/ft-text-antialias-none-ps2-argb32-ref.png | Bin 335 -> 0 bytes - test/ft-text-antialias-none-ps3-argb32-ref.png | Bin 335 -> 0 bytes - test/ft-text-antialias-none-ref.png | Bin 336 -> 0 bytes - test/ft-text-antialias-none.ps2.argb32.ref.png | Bin 0 -> 335 bytes - test/ft-text-antialias-none.ps3.argb32.ref.png | Bin 0 -> 335 bytes - test/ft-text-antialias-none.ref.png | Bin 0 -> 336 bytes - test/ft-text-vertical-layout-type1-pdf-ref.png | Bin 3968 -> 0 bytes - test/ft-text-vertical-layout-type1-ps2-ref.png | Bin 1846 -> 0 bytes - test/ft-text-vertical-layout-type1-ps3-ref.png | Bin 1846 -> 0 bytes - test/ft-text-vertical-layout-type1-ref.png | Bin 3980 -> 0 bytes - test/ft-text-vertical-layout-type1-svg11-ref.png | Bin 3973 -> 0 bytes - test/ft-text-vertical-layout-type1-svg12-ref.png | Bin 3973 -> 0 bytes - test/ft-text-vertical-layout-type1.pdf.ref.png | Bin 0 -> 3968 bytes - test/ft-text-vertical-layout-type1.ps2.ref.png | Bin 0 -> 1846 bytes - test/ft-text-vertical-layout-type1.ps3.ref.png | Bin 0 -> 1846 bytes - test/ft-text-vertical-layout-type1.ref.png | Bin 0 -> 3980 bytes - test/ft-text-vertical-layout-type1.svg11.ref.png | Bin 0 -> 3973 bytes - test/ft-text-vertical-layout-type1.svg12.ref.png | Bin 0 -> 3973 bytes - test/ft-text-vertical-layout-type3-pdf-ref.png | Bin 3634 -> 0 bytes - test/ft-text-vertical-layout-type3-ps2-ref.png | Bin 1804 -> 0 bytes - test/ft-text-vertical-layout-type3-ps3-ref.png | Bin 1804 -> 0 bytes - test/ft-text-vertical-layout-type3-ref.png | Bin 3934 -> 0 bytes - test/ft-text-vertical-layout-type3-svg11-ref.png | Bin 3957 -> 0 bytes - test/ft-text-vertical-layout-type3-svg12-ref.png | Bin 3957 -> 0 bytes - test/ft-text-vertical-layout-type3.pdf.ref.png | Bin 0 -> 3634 bytes - test/ft-text-vertical-layout-type3.ps2.ref.png | Bin 0 -> 1804 bytes - test/ft-text-vertical-layout-type3.ps3.ref.png | Bin 0 -> 1804 bytes - test/ft-text-vertical-layout-type3.ref.png | Bin 0 -> 3934 bytes - test/ft-text-vertical-layout-type3.svg11.ref.png | Bin 0 -> 3957 bytes - test/ft-text-vertical-layout-type3.svg12.ref.png | Bin 0 -> 3957 bytes - test/get-group-target-ref.png | Bin 134 -> 0 bytes - test/get-group-target.ref.png | Bin 0 -> 134 bytes - test/glitz-surface-source-ref.png | Bin 268 -> 0 bytes - test/glitz-surface-source.ref.png | Bin 0 -> 268 bytes - test/glyph-cache-pressure-ps2-ref.png | Bin 1454 -> 0 bytes - test/glyph-cache-pressure-ps3-ref.png | Bin 1454 -> 0 bytes - test/glyph-cache-pressure-quartz-ref.png | Bin 3654 -> 0 bytes - test/glyph-cache-pressure-ref.png | Bin 3223 -> 0 bytes - test/glyph-cache-pressure.ps2.ref.png | Bin 0 -> 1454 bytes - test/glyph-cache-pressure.ps3.ref.png | Bin 0 -> 1454 bytes - test/glyph-cache-pressure.quartz.ref.png | Bin 0 -> 3654 bytes - test/glyph-cache-pressure.ref.png | Bin 0 -> 3223 bytes - test/gradient-alpha-pdf-argb32-ref.png | Bin 126 -> 0 bytes - test/gradient-alpha-pdf-rgb24-ref.png | Bin 121 -> 0 bytes - test/gradient-alpha-ps2-argb32-ref.png | Bin 134 -> 0 bytes - test/gradient-alpha-ps2-rgb24-ref.png | Bin 130 -> 0 bytes - test/gradient-alpha-ps3-argb32-ref.png | Bin 134 -> 0 bytes - test/gradient-alpha-ps3-rgb24-ref.png | Bin 130 -> 0 bytes - test/gradient-alpha-ref.png | Bin 147 -> 0 bytes - test/gradient-alpha-rgb24-ref.png | Bin 142 -> 0 bytes - test/gradient-alpha.pdf.argb32.ref.png | Bin 0 -> 126 bytes - test/gradient-alpha.pdf.rgb24.ref.png | Bin 0 -> 121 bytes - test/gradient-alpha.ps2.argb32.ref.png | Bin 0 -> 134 bytes - test/gradient-alpha.ps2.rgb24.ref.png | Bin 0 -> 130 bytes - test/gradient-alpha.ps3.argb32.ref.png | Bin 0 -> 134 bytes - test/gradient-alpha.ps3.rgb24.ref.png | Bin 0 -> 130 bytes - test/gradient-alpha.ref.png | Bin 0 -> 147 bytes - test/gradient-alpha.rgb24.ref.png | Bin 0 -> 142 bytes - test/gradient-constant-alpha-pdf-argb32-ref.png | Bin 116 -> 0 bytes - test/gradient-constant-alpha-pdf-rgb24-ref.png | Bin 115 -> 0 bytes - test/gradient-constant-alpha-ps3-ref.png | Bin 124 -> 0 bytes - test/gradient-constant-alpha-ps3-rgb24-ref.png | Bin 124 -> 0 bytes - test/gradient-constant-alpha-ref.png | Bin 117 -> 0 bytes - test/gradient-constant-alpha-rgb24-ref.png | Bin 116 -> 0 bytes - test/gradient-constant-alpha.pdf.argb32.ref.png | Bin 0 -> 116 bytes - test/gradient-constant-alpha.pdf.rgb24.ref.png | Bin 0 -> 115 bytes - test/gradient-constant-alpha.ps3.ref.png | Bin 0 -> 124 bytes - test/gradient-constant-alpha.ps3.rgb24.ref.png | Bin 0 -> 124 bytes - test/gradient-constant-alpha.ref.png | Bin 0 -> 117 bytes - test/gradient-constant-alpha.rgb24.ref.png | Bin 0 -> 116 bytes - test/gradient-zero-stops-ref.png | Bin 105 -> 0 bytes - test/gradient-zero-stops-rgb24-ref.png | Bin 105 -> 0 bytes - test/gradient-zero-stops.ref.png | Bin 0 -> 105 bytes - test/gradient-zero-stops.rgb24.ref.png | Bin 0 -> 105 bytes - test/group-paint-ref.png | Bin 118 -> 0 bytes - test/group-paint.ref.png | Bin 0 -> 118 bytes - test/huge-pattern-pdf-ref.png | Bin 2716 -> 0 bytes - test/huge-pattern-pdf-rgb24-ref.png | Bin 2817 -> 0 bytes - test/huge-pattern-ps3-ref.png | Bin 1786 -> 0 bytes - test/huge-pattern-ref.png | Bin 1619 -> 0 bytes - test/huge-pattern.pdf.ref.png | Bin 0 -> 2716 bytes - test/huge-pattern.pdf.rgb24.ref.png | Bin 0 -> 2817 bytes - test/huge-pattern.ps3.ref.png | Bin 0 -> 1786 bytes - test/huge-pattern.ref.png | Bin 0 -> 1619 bytes - test/image-surface-source-ps2-ref.png | Bin 376 -> 0 bytes - test/image-surface-source-ps3-ref.png | Bin 376 -> 0 bytes - test/image-surface-source-ref.png | Bin 332 -> 0 bytes - test/image-surface-source.ps2.ref.png | Bin 0 -> 376 bytes - test/image-surface-source.ps3.ref.png | Bin 0 -> 376 bytes - test/image-surface-source.ref.png | Bin 0 -> 332 bytes - test/infinite-join-ps2-ref.png | Bin 218 -> 0 bytes - test/infinite-join-ps3-ref.png | Bin 218 -> 0 bytes - test/infinite-join-ref.png | Bin 194 -> 0 bytes - test/infinite-join.ps2.ref.png | Bin 0 -> 218 bytes - test/infinite-join.ps3.ref.png | Bin 0 -> 218 bytes - test/infinite-join.ref.png | Bin 0 -> 194 bytes - test/large-clip-ref.png | Bin 350 -> 0 bytes - test/large-clip.ref.png | Bin 0 -> 350 bytes - test/large-font-ref.png | Bin 6936 -> 0 bytes - test/large-font.ref.png | Bin 0 -> 6936 bytes - test/large-source-ref.png | Bin 137 -> 0 bytes - test/large-source.ref.png | Bin 0 -> 137 bytes - test/leaky-dash-ps2-argb32-ref.png | Bin 286 -> 0 bytes - test/leaky-dash-ps2-rgb24-ref.png | Bin 284 -> 0 bytes - test/leaky-dash-ps3-argb32-ref.png | Bin 286 -> 0 bytes - test/leaky-dash-ps3-rgb24-ref.png | Bin 284 -> 0 bytes - test/leaky-dash-quartz-ref.png | Bin 241 -> 0 bytes - test/leaky-dash-ref.png | Bin 243 -> 0 bytes - test/leaky-dash.ps2.argb32.ref.png | Bin 0 -> 286 bytes - test/leaky-dash.ps2.rgb24.ref.png | Bin 0 -> 284 bytes - test/leaky-dash.ps3.argb32.ref.png | Bin 0 -> 286 bytes - test/leaky-dash.ps3.rgb24.ref.png | Bin 0 -> 284 bytes - test/leaky-dash.quartz.ref.png | Bin 0 -> 241 bytes - test/leaky-dash.ref.png | Bin 0 -> 243 bytes - test/leaky-dashed-rectangle-ps2-ref.png | Bin 444 -> 0 bytes - test/leaky-dashed-rectangle-ps3-ref.png | Bin 444 -> 0 bytes - test/leaky-dashed-rectangle-ref.png | Bin 366 -> 0 bytes - test/leaky-dashed-rectangle.ps2.ref.png | Bin 0 -> 444 bytes - test/leaky-dashed-rectangle.ps3.ref.png | Bin 0 -> 444 bytes - test/leaky-dashed-rectangle.ref.png | Bin 0 -> 366 bytes - test/leaky-dashed-stroke-ps2-ref.png | Bin 5511 -> 0 bytes - test/leaky-dashed-stroke-ps3-ref.png | Bin 5511 -> 0 bytes - test/leaky-dashed-stroke-ref.png | Bin 9214 -> 0 bytes - test/leaky-dashed-stroke.ps2.ref.png | Bin 0 -> 5511 bytes - test/leaky-dashed-stroke.ps3.ref.png | Bin 0 -> 5511 bytes - test/leaky-dashed-stroke.ref.png | Bin 0 -> 9214 bytes - test/leaky-polygon-ps2-ref.png | Bin 354 -> 0 bytes - test/leaky-polygon-ps3-ref.png | Bin 354 -> 0 bytes - test/leaky-polygon-ref.png | Bin 368 -> 0 bytes - test/leaky-polygon.ps2.ref.png | Bin 0 -> 354 bytes - test/leaky-polygon.ps3.ref.png | Bin 0 -> 354 bytes - test/leaky-polygon.ref.png | Bin 0 -> 368 bytes - test/line-width-ref.png | Bin 201 -> 0 bytes - test/line-width-scale-ps2-ref.png | Bin 3911 -> 0 bytes - test/line-width-scale-ps3-ref.png | Bin 3911 -> 0 bytes - test/line-width-scale-quartz-ref.png | Bin 6434 -> 0 bytes - test/line-width-scale-ref.png | Bin 6445 -> 0 bytes - test/line-width-scale.ps2.ref.png | Bin 0 -> 3911 bytes - test/line-width-scale.ps3.ref.png | Bin 0 -> 3911 bytes - test/line-width-scale.quartz.ref.png | Bin 0 -> 6434 bytes - test/line-width-scale.ref.png | Bin 0 -> 6445 bytes - test/line-width.ref.png | Bin 0 -> 201 bytes - test/linear-gradient-pdf-ref.png | Bin 935 -> 0 bytes - test/linear-gradient-ps3-ref.png | Bin 779 -> 0 bytes - test/linear-gradient-quartz-ref.png | Bin 1164 -> 0 bytes - test/linear-gradient-ref.png | Bin 1021 -> 0 bytes - test/linear-gradient-reflect-pdf-argb32-ref.png | Bin 248 -> 0 bytes - test/linear-gradient-reflect-pdf-rgb24-ref.png | Bin 248 -> 0 bytes - test/linear-gradient-reflect-ps3-ref.png | Bin 314 -> 0 bytes - test/linear-gradient-reflect-quartz-ref.png | Bin 878 -> 0 bytes - test/linear-gradient-reflect-ref.png | Bin 216 -> 0 bytes - test/linear-gradient-reflect.pdf.argb32.ref.png | Bin 0 -> 248 bytes - test/linear-gradient-reflect.pdf.rgb24.ref.png | Bin 0 -> 248 bytes - test/linear-gradient-reflect.ps3.ref.png | Bin 0 -> 314 bytes - test/linear-gradient-reflect.quartz.ref.png | Bin 0 -> 878 bytes - test/linear-gradient-reflect.ref.png | Bin 0 -> 216 bytes - test/linear-gradient-svg11-ref.png | Bin 1000 -> 0 bytes - test/linear-gradient-svg12-ref.png | Bin 1000 -> 0 bytes - test/linear-gradient.pdf.ref.png | Bin 0 -> 935 bytes - test/linear-gradient.ps3.ref.png | Bin 0 -> 779 bytes - test/linear-gradient.quartz.ref.png | Bin 0 -> 1164 bytes - test/linear-gradient.ref.png | Bin 0 -> 1021 bytes - test/linear-gradient.svg11.ref.png | Bin 0 -> 1000 bytes - test/linear-gradient.svg12.ref.png | Bin 0 -> 1000 bytes - test/long-dashed-lines-ps2-ref.png | Bin 1516 -> 0 bytes - test/long-dashed-lines-ps3-ref.png | Bin 1516 -> 0 bytes - test/long-dashed-lines-quartz-ref.png | Bin 2313 -> 0 bytes - test/long-dashed-lines-ref.png | Bin 2116 -> 0 bytes - test/long-dashed-lines.ps2.ref.png | Bin 0 -> 1516 bytes - test/long-dashed-lines.ps3.ref.png | Bin 0 -> 1516 bytes - test/long-dashed-lines.quartz.ref.png | Bin 0 -> 2313 bytes - test/long-dashed-lines.ref.png | Bin 0 -> 2116 bytes - test/long-lines-ref.png | Bin 247 -> 0 bytes - test/long-lines.ref.png | Bin 0 -> 247 bytes - test/mask-alpha-quartz-argb32-ref.png | Bin 641 -> 0 bytes - test/mask-alpha-ref.png | Bin 640 -> 0 bytes - test/mask-alpha-rgb24-ref.png | Bin 599 -> 0 bytes - test/mask-alpha-svg11-argb32-ref.png | Bin 615 -> 0 bytes - test/mask-alpha-svg12-argb32-ref.png | Bin 615 -> 0 bytes - test/mask-alpha.quartz.argb32.ref.png | Bin 0 -> 641 bytes - test/mask-alpha.ref.png | Bin 0 -> 640 bytes - test/mask-alpha.rgb24.ref.png | Bin 0 -> 599 bytes - test/mask-alpha.svg11.argb32.ref.png | Bin 0 -> 615 bytes - test/mask-alpha.svg12.argb32.ref.png | Bin 0 -> 615 bytes - test/mask-ctm-ref.png | Bin 129 -> 0 bytes - test/mask-ctm-rgb24-ref.png | Bin 124 -> 0 bytes - test/mask-ctm-svg11-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-ctm-svg12-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-ctm.ref.png | Bin 0 -> 129 bytes - test/mask-ctm.rgb24.ref.png | Bin 0 -> 124 bytes - test/mask-ctm.svg11.argb32.ref.png | Bin 0 -> 108 bytes - test/mask-ctm.svg12.argb32.ref.png | Bin 0 -> 108 bytes - test/mask-pdf-argb32-ref.png | Bin 8881 -> 0 bytes - test/mask-pdf-rgb24-ref.png | Bin 8267 -> 0 bytes - test/mask-quartz-ref.png | Bin 10682 -> 0 bytes - test/mask-quartz-rgb24-ref.png | Bin 8418 -> 0 bytes - test/mask-ref.png | Bin 8476 -> 0 bytes - test/mask-rgb24-ref.png | Bin 7041 -> 0 bytes - test/mask-surface-ctm-ref.png | Bin 129 -> 0 bytes - test/mask-surface-ctm-rgb24-ref.png | Bin 124 -> 0 bytes - test/mask-surface-ctm-svg11-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-surface-ctm-svg12-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-surface-ctm.ref.png | Bin 0 -> 129 bytes - test/mask-surface-ctm.rgb24.ref.png | Bin 0 -> 124 bytes - test/mask-surface-ctm.svg11.argb32.ref.png | Bin 0 -> 108 bytes - test/mask-surface-ctm.svg12.argb32.ref.png | Bin 0 -> 108 bytes - test/mask-svg11-argb32-ref.png | Bin 8527 -> 0 bytes - test/mask-svg11-rgb24-ref.png | Bin 7935 -> 0 bytes - test/mask-svg12-argb32-ref.png | Bin 8527 -> 0 bytes - test/mask-svg12-rgb24-ref.png | Bin 7935 -> 0 bytes - test/mask-transformed-image-ref.png | Bin 4516 -> 0 bytes - test/mask-transformed-image.ref.png | Bin 0 -> 4516 bytes - test/mask-transformed-similar-pdf-ref.png | Bin 4213 -> 0 bytes - test/mask-transformed-similar-ref.png | Bin 4516 -> 0 bytes - test/mask-transformed-similar-svg11-ref.png | Bin 4051 -> 0 bytes - test/mask-transformed-similar-svg12-ref.png | Bin 4051 -> 0 bytes - test/mask-transformed-similar.pdf.ref.png | Bin 0 -> 4213 bytes - test/mask-transformed-similar.ref.png | Bin 0 -> 4516 bytes - test/mask-transformed-similar.svg11.ref.png | Bin 0 -> 4051 bytes - test/mask-transformed-similar.svg12.ref.png | Bin 0 -> 4051 bytes - test/mask.pdf.argb32.ref.png | Bin 0 -> 8881 bytes - test/mask.pdf.rgb24.ref.png | Bin 0 -> 8267 bytes - test/mask.quartz.ref.png | Bin 0 -> 10682 bytes - test/mask.quartz.rgb24.ref.png | Bin 0 -> 8418 bytes - test/mask.ref.png | Bin 0 -> 8476 bytes - test/mask.rgb24.ref.png | Bin 0 -> 7041 bytes - test/mask.svg11.argb32.ref.png | Bin 0 -> 8527 bytes - test/mask.svg11.rgb24.ref.png | Bin 0 -> 7935 bytes - test/mask.svg12.argb32.ref.png | Bin 0 -> 8527 bytes - test/mask.svg12.rgb24.ref.png | Bin 0 -> 7935 bytes - test/meta-surface-pattern-pdf-ref.png | Bin 4111 -> 0 bytes - test/meta-surface-pattern-pdf-rgb24-ref.png | Bin 4009 -> 0 bytes - test/meta-surface-pattern-ps2-argb32-ref.png | Bin 3257 -> 0 bytes - test/meta-surface-pattern-ps2-rgb24-ref.png | Bin 3873 -> 0 bytes - test/meta-surface-pattern-ps3-argb32-ref.png | Bin 3257 -> 0 bytes - test/meta-surface-pattern-ps3-rgb24-ref.png | Bin 3873 -> 0 bytes - test/meta-surface-pattern-quartz-ref.png | Bin 4572 -> 0 bytes - test/meta-surface-pattern-quartz-rgb24-ref.png | Bin 4063 -> 0 bytes - test/meta-surface-pattern-ref.png | Bin 3072 -> 0 bytes - test/meta-surface-pattern-rgb24-ref.png | Bin 3162 -> 0 bytes - test/meta-surface-pattern-svg11-argb32-ref.png | Bin 3924 -> 0 bytes - test/meta-surface-pattern-svg11-rgb24-ref.png | Bin 4593 -> 0 bytes - test/meta-surface-pattern-svg12-argb32-ref.png | Bin 3924 -> 0 bytes - test/meta-surface-pattern-svg12-rgb24-ref.png | Bin 4593 -> 0 bytes - test/meta-surface-pattern.pdf.ref.png | Bin 0 -> 4111 bytes - test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 4009 bytes - test/meta-surface-pattern.ps2.argb32.ref.png | Bin 0 -> 3257 bytes - test/meta-surface-pattern.ps2.rgb24.ref.png | Bin 0 -> 3873 bytes - test/meta-surface-pattern.ps3.argb32.ref.png | Bin 0 -> 3257 bytes - test/meta-surface-pattern.ps3.rgb24.ref.png | Bin 0 -> 3873 bytes - test/meta-surface-pattern.quartz.ref.png | Bin 0 -> 4572 bytes - test/meta-surface-pattern.quartz.rgb24.ref.png | Bin 0 -> 4063 bytes - test/meta-surface-pattern.ref.png | Bin 0 -> 3072 bytes - test/meta-surface-pattern.rgb24.ref.png | Bin 0 -> 3162 bytes - test/meta-surface-pattern.svg11.argb32.ref.png | Bin 0 -> 3924 bytes - test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 0 -> 4593 bytes - test/meta-surface-pattern.svg12.argb32.ref.png | Bin 0 -> 3924 bytes - test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 0 -> 4593 bytes - test/miter-precision-ps2-ref.png | Bin 865 -> 0 bytes - test/miter-precision-ps3-ref.png | Bin 865 -> 0 bytes - test/miter-precision-ref.png | Bin 931 -> 0 bytes - test/miter-precision.ps2.ref.png | Bin 0 -> 865 bytes - test/miter-precision.ps3.ref.png | Bin 0 -> 865 bytes - test/miter-precision.ref.png | Bin 0 -> 931 bytes - test/move-to-show-surface-ref.png | Bin 100 -> 0 bytes - test/move-to-show-surface.ref.png | Bin 0 -> 100 bytes - test/multi-page.c | 4 +- - test/new-sub-path-ps2-argb32-ref.png | Bin 556 -> 0 bytes - test/new-sub-path-ps2-rgb24-ref.png | Bin 423 -> 0 bytes - test/new-sub-path-ps3-argb32-ref.png | Bin 556 -> 0 bytes - test/new-sub-path-ps3-rgb24-ref.png | Bin 423 -> 0 bytes - test/new-sub-path-quartz-ref.png | Bin 383 -> 0 bytes - test/new-sub-path-quartz-rgb24-ref.png | Bin 357 -> 0 bytes - test/new-sub-path-ref.png | Bin 386 -> 0 bytes - test/new-sub-path-rgb24-ref.png | Bin 355 -> 0 bytes - test/new-sub-path.ps2.argb32.ref.png | Bin 0 -> 556 bytes - test/new-sub-path.ps2.rgb24.ref.png | Bin 0 -> 423 bytes - test/new-sub-path.ps3.argb32.ref.png | Bin 0 -> 556 bytes - test/new-sub-path.ps3.rgb24.ref.png | Bin 0 -> 423 bytes - test/new-sub-path.quartz.ref.png | Bin 0 -> 383 bytes - test/new-sub-path.quartz.rgb24.ref.png | Bin 0 -> 357 bytes - test/new-sub-path.ref.png | Bin 0 -> 386 bytes - test/new-sub-path.rgb24.ref.png | Bin 0 -> 355 bytes - test/nil-surface-ref.png | Bin 107 -> 0 bytes - test/nil-surface-rgb24-ref.png | Bin 106 -> 0 bytes - test/nil-surface.ref.png | Bin 0 -> 107 bytes - test/nil-surface.rgb24.ref.png | Bin 0 -> 106 bytes - test/operator-alpha-ref.png | Bin 280 -> 0 bytes - test/operator-alpha-rgb24-ref.png | Bin 229 -> 0 bytes - test/operator-alpha.ref.png | Bin 0 -> 280 bytes - test/operator-alpha.rgb24.ref.png | Bin 0 -> 229 bytes - test/operator-clear-pdf-argb32-ref.png | Bin 1614 -> 0 bytes - test/operator-clear-pdf-rgb24-ref.png | Bin 1402 -> 0 bytes - test/operator-clear-quartz-ref.png | Bin 1459 -> 0 bytes - test/operator-clear-quartz-rgb24-ref.png | Bin 1293 -> 0 bytes - test/operator-clear-ref.png | Bin 1084 -> 0 bytes - test/operator-clear-rgb24-ref.png | Bin 965 -> 0 bytes - test/operator-clear.pdf.argb32.ref.png | Bin 0 -> 1614 bytes - test/operator-clear.pdf.rgb24.ref.png | Bin 0 -> 1402 bytes - test/operator-clear.quartz.ref.png | Bin 0 -> 1459 bytes - test/operator-clear.quartz.rgb24.ref.png | Bin 0 -> 1293 bytes - test/operator-clear.ref.png | Bin 0 -> 1084 bytes - test/operator-clear.rgb24.ref.png | Bin 0 -> 965 bytes - test/operator-ref.png | Bin 238 -> 0 bytes - test/operator-rgb24-ref.png | Bin 217 -> 0 bytes - test/operator-source-pdf-argb32-ref.png | Bin 5149 -> 0 bytes - test/operator-source-pdf-rgb24-ref.png | Bin 4354 -> 0 bytes - test/operator-source-quartz-ref.png | Bin 4637 -> 0 bytes - test/operator-source-quartz-rgb24-ref.png | Bin 3533 -> 0 bytes - test/operator-source-ref.png | Bin 4420 -> 0 bytes - test/operator-source-rgb24-ref.png | Bin 3201 -> 0 bytes - test/operator-source.pdf.argb32.ref.png | Bin 0 -> 5149 bytes - test/operator-source.pdf.rgb24.ref.png | Bin 0 -> 4354 bytes - test/operator-source.quartz.ref.png | Bin 0 -> 4637 bytes - test/operator-source.quartz.rgb24.ref.png | Bin 0 -> 3533 bytes - test/operator-source.ref.png | Bin 0 -> 4420 bytes - test/operator-source.rgb24.ref.png | Bin 0 -> 3201 bytes - test/operator.ref.png | Bin 0 -> 238 bytes - test/operator.rgb24.ref.png | Bin 0 -> 217 bytes - test/over-above-source-ps2-argb32-ref.png | Bin 636 -> 0 bytes - test/over-above-source-ps3-argb32-ref.png | Bin 636 -> 0 bytes - test/over-above-source-quartz-ref.png | Bin 530 -> 0 bytes - test/over-above-source-quartz-rgb24-ref.png | Bin 456 -> 0 bytes - test/over-above-source-ref.png | Bin 538 -> 0 bytes - test/over-above-source-rgb24-ref.png | Bin 461 -> 0 bytes - test/over-above-source.ps2.argb32.ref.png | Bin 0 -> 636 bytes - test/over-above-source.ps3.argb32.ref.png | Bin 0 -> 636 bytes - test/over-above-source.quartz.ref.png | Bin 0 -> 530 bytes - test/over-above-source.quartz.rgb24.ref.png | Bin 0 -> 456 bytes - test/over-above-source.ref.png | Bin 0 -> 538 bytes - test/over-above-source.rgb24.ref.png | Bin 0 -> 461 bytes - test/over-around-source-ps2-argb32-ref.png | Bin 632 -> 0 bytes - test/over-around-source-ps2-rgb24-ref.png | Bin 538 -> 0 bytes - test/over-around-source-ps3-argb32-ref.png | Bin 632 -> 0 bytes - test/over-around-source-ps3-rgb24-ref.png | Bin 538 -> 0 bytes - test/over-around-source-quartz-ref.png | Bin 612 -> 0 bytes - test/over-around-source-quartz-rgb24-ref.png | Bin 491 -> 0 bytes - test/over-around-source-ref.png | Bin 614 -> 0 bytes - test/over-around-source-rgb24-ref.png | Bin 503 -> 0 bytes - test/over-around-source.ps2.argb32.ref.png | Bin 0 -> 632 bytes - test/over-around-source.ps2.rgb24.ref.png | Bin 0 -> 538 bytes - test/over-around-source.ps3.argb32.ref.png | Bin 0 -> 632 bytes - test/over-around-source.ps3.rgb24.ref.png | Bin 0 -> 538 bytes - test/over-around-source.quartz.ref.png | Bin 0 -> 612 bytes - test/over-around-source.quartz.rgb24.ref.png | Bin 0 -> 491 bytes - test/over-around-source.ref.png | Bin 0 -> 614 bytes - test/over-around-source.rgb24.ref.png | Bin 0 -> 503 bytes - test/over-below-source-ps2-argb32-ref.png | Bin 503 -> 0 bytes - test/over-below-source-ps3-argb32-ref.png | Bin 503 -> 0 bytes - test/over-below-source-ref.png | Bin 434 -> 0 bytes - test/over-below-source-rgb24-ref.png | Bin 392 -> 0 bytes - test/over-below-source.ps2.argb32.ref.png | Bin 0 -> 503 bytes - test/over-below-source.ps3.argb32.ref.png | Bin 0 -> 503 bytes - test/over-below-source.ref.png | Bin 0 -> 434 bytes - test/over-below-source.rgb24.ref.png | Bin 0 -> 392 bytes - test/over-between-source-ps2-argb32-ref.png | Bin 678 -> 0 bytes - test/over-between-source-ps3-argb32-ref.png | Bin 678 -> 0 bytes - test/over-between-source-quartz-ref.png | Bin 570 -> 0 bytes - test/over-between-source-quartz-rgb24-ref.png | Bin 467 -> 0 bytes - test/over-between-source-ref.png | Bin 575 -> 0 bytes - test/over-between-source-rgb24-ref.png | Bin 473 -> 0 bytes - test/over-between-source.ps2.argb32.ref.png | Bin 0 -> 678 bytes - test/over-between-source.ps3.argb32.ref.png | Bin 0 -> 678 bytes - test/over-between-source.quartz.ref.png | Bin 0 -> 570 bytes - test/over-between-source.quartz.rgb24.ref.png | Bin 0 -> 467 bytes - test/over-between-source.ref.png | Bin 0 -> 575 bytes - test/over-between-source.rgb24.ref.png | Bin 0 -> 473 bytes - test/paint-ref.png | Bin 116 -> 0 bytes - test/paint-repeat-ref.png | Bin 145 -> 0 bytes - test/paint-repeat.ref.png | Bin 0 -> 145 bytes - test/paint-source-alpha-pdf-argb32-ref.png | Bin 471 -> 0 bytes - test/paint-source-alpha-pdf-ref.png | Bin 473 -> 0 bytes - test/paint-source-alpha-ref.png | Bin 256 -> 0 bytes - test/paint-source-alpha-svg11-ref.png | Bin 756 -> 0 bytes - test/paint-source-alpha-svg12-ref.png | Bin 505 -> 0 bytes - test/paint-source-alpha.pdf.argb32.ref.png | Bin 0 -> 471 bytes - test/paint-source-alpha.pdf.ref.png | Bin 0 -> 473 bytes - test/paint-source-alpha.ref.png | Bin 0 -> 256 bytes - test/paint-source-alpha.svg11.ref.png | Bin 0 -> 756 bytes - test/paint-source-alpha.svg12.ref.png | Bin 0 -> 505 bytes - test/paint-with-alpha-pdf-ref.png | Bin 466 -> 0 bytes - test/paint-with-alpha-ref.png | Bin 256 -> 0 bytes - test/paint-with-alpha-svg11-ref.png | Bin 516 -> 0 bytes - test/paint-with-alpha-svg12-ref.png | Bin 516 -> 0 bytes - test/paint-with-alpha.pdf.ref.png | Bin 0 -> 466 bytes - test/paint-with-alpha.ref.png | Bin 0 -> 256 bytes - test/paint-with-alpha.svg11.ref.png | Bin 0 -> 516 bytes - test/paint-with-alpha.svg12.ref.png | Bin 0 -> 516 bytes - test/paint.ref.png | Bin 0 -> 116 bytes - test/pass-through-ref.png | Bin 221 -> 0 bytes - test/pass-through-rgb24-ref.png | Bin 179 -> 0 bytes - test/pass-through.ref.png | Bin 0 -> 221 bytes - test/pass-through.rgb24.ref.png | Bin 0 -> 179 bytes - test/pattern-getters-ref.png | Bin 107 -> 0 bytes - test/pattern-getters.ref.png | Bin 0 -> 107 bytes - test/pdf-features.c | 2 +- - test/pdf-surface-source-ref.png | Bin 268 -> 0 bytes - test/pdf-surface-source.c | 2 +- - test/pdf-surface-source.ref.png | Bin 0 -> 268 bytes - test/pixman-rotate-ref.png | Bin 260 -> 0 bytes - test/pixman-rotate-rgb24-ref.png | Bin 244 -> 0 bytes - test/pixman-rotate.ref.png | Bin 0 -> 260 bytes - test/pixman-rotate.rgb24.ref.png | Bin 0 -> 244 bytes - test/png.c | 2 +- - test/ps-features.c | 2 +- - test/ps-surface-source-ref.png | Bin 268 -> 0 bytes - test/ps-surface-source.c | 2 +- - test/ps-surface-source.ref.png | Bin 0 -> 268 bytes - test/push-group-pdf-ref.png | Bin 2807 -> 0 bytes - test/push-group-pdf-rgb24-ref.png | Bin 2714 -> 0 bytes - test/push-group-ref.png | Bin 3126 -> 0 bytes - test/push-group-rgb24-ref.png | Bin 2961 -> 0 bytes - test/push-group-svg11-argb32-ref.png | Bin 2935 -> 0 bytes - test/push-group-svg12-argb32-ref.png | Bin 2935 -> 0 bytes - test/push-group.pdf.ref.png | Bin 0 -> 2807 bytes - test/push-group.pdf.rgb24.ref.png | Bin 0 -> 2714 bytes - test/push-group.ref.png | Bin 0 -> 3126 bytes - test/push-group.rgb24.ref.png | Bin 0 -> 2961 bytes - test/push-group.svg11.argb32.ref.png | Bin 0 -> 2935 bytes - test/push-group.svg12.argb32.ref.png | Bin 0 -> 2935 bytes - test/radial-gradient-pdf-ref.png | Bin 79490 -> 0 bytes - test/radial-gradient-quartz-ref.png | Bin 92334 -> 0 bytes - test/radial-gradient-ref.png | Bin 91159 -> 0 bytes - test/radial-gradient-svg11-ref.png | Bin 91039 -> 0 bytes - test/radial-gradient-svg12-ref.png | Bin 91039 -> 0 bytes - test/radial-gradient.pdf.ref.png | Bin 0 -> 79490 bytes - test/radial-gradient.quartz.ref.png | Bin 0 -> 92334 bytes - test/radial-gradient.ref.png | Bin 0 -> 91159 bytes - test/radial-gradient.svg11.ref.png | Bin 0 -> 91039 bytes - test/radial-gradient.svg12.ref.png | Bin 0 -> 91039 bytes - test/random-intersections-ps2-ref.png | Bin 89253 -> 0 bytes - test/random-intersections-ps3-ref.png | Bin 89253 -> 0 bytes - test/random-intersections-quartz-ref.png | Bin 197778 -> 0 bytes - test/random-intersections-ref.png | Bin 148722 -> 0 bytes - test/random-intersections.ps2.ref.png | Bin 0 -> 89253 bytes - test/random-intersections.ps3.ref.png | Bin 0 -> 89253 bytes - test/random-intersections.quartz.ref.png | Bin 0 -> 197778 bytes - test/random-intersections.ref.png | Bin 0 -> 148722 bytes - test/rectangle-rounding-error-ref.png | Bin 231 -> 0 bytes - test/rectangle-rounding-error.ref.png | Bin 0 -> 231 bytes - test/rectilinear-fill-ref.png | Bin 162 -> 0 bytes - test/rectilinear-fill.ref.png | Bin 0 -> 162 bytes - test/rectilinear-miter-limit-ps2-ref.png | Bin 221 -> 0 bytes - test/rectilinear-miter-limit-ps3-ref.png | Bin 221 -> 0 bytes - test/rectilinear-miter-limit-ref.png | Bin 177 -> 0 bytes - test/rectilinear-miter-limit.ps2.ref.png | Bin 0 -> 221 bytes - test/rectilinear-miter-limit.ps3.ref.png | Bin 0 -> 221 bytes - test/rectilinear-miter-limit.ref.png | Bin 0 -> 177 bytes - test/rectilinear-stroke-ref.png | Bin 213 -> 0 bytes - test/rectilinear-stroke.ref.png | Bin 0 -> 213 bytes - test/reflected-stroke-ps2-ref.png | Bin 3898 -> 0 bytes - test/reflected-stroke-ps3-ref.png | Bin 3898 -> 0 bytes - test/reflected-stroke-quartz-ref.png | Bin 5293 -> 0 bytes - test/reflected-stroke-ref.png | Bin 5704 -> 0 bytes - test/reflected-stroke.ps2.ref.png | Bin 0 -> 3898 bytes - test/reflected-stroke.ps3.ref.png | Bin 0 -> 3898 bytes - test/reflected-stroke.quartz.ref.png | Bin 0 -> 5293 bytes - test/reflected-stroke.ref.png | Bin 0 -> 5704 bytes - test/rel-path-ps2-rgb24-ref.png | Bin 243 -> 0 bytes - test/rel-path-ps3-rgb24-ref.png | Bin 243 -> 0 bytes - test/rel-path-quartz-ref.png | Bin 212 -> 0 bytes - test/rel-path-quartz-rgb24-ref.png | Bin 228 -> 0 bytes - test/rel-path-ref.png | Bin 212 -> 0 bytes - test/rel-path-rgb24-ref.png | Bin 228 -> 0 bytes - test/rel-path.ps2.rgb24.ref.png | Bin 0 -> 243 bytes - test/rel-path.ps3.rgb24.ref.png | Bin 0 -> 243 bytes - test/rel-path.quartz.ref.png | Bin 0 -> 212 bytes - test/rel-path.quartz.rgb24.ref.png | Bin 0 -> 228 bytes - test/rel-path.ref.png | Bin 0 -> 212 bytes - test/rel-path.rgb24.ref.png | Bin 0 -> 228 bytes - test/rgb24-ignore-alpha-ref.png | Bin 116 -> 0 bytes - test/rgb24-ignore-alpha.ref.png | Bin 0 -> 116 bytes - test/rotate-image-surface-paint-pdf-argb32-ref.png | Bin 209 -> 0 bytes - test/rotate-image-surface-paint-pdf-rgb24-ref.png | Bin 207 -> 0 bytes - test/rotate-image-surface-paint-ps2-ref.png | Bin 212 -> 0 bytes - test/rotate-image-surface-paint-ps3-ref.png | Bin 212 -> 0 bytes - test/rotate-image-surface-paint-quartz-ref.png | Bin 257 -> 0 bytes - test/rotate-image-surface-paint-ref.png | Bin 232 -> 0 bytes - test/rotate-image-surface-paint-svg11-ref.png | Bin 248 -> 0 bytes - test/rotate-image-surface-paint-svg12-ref.png | Bin 248 -> 0 bytes - test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 0 -> 209 bytes - test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 0 -> 207 bytes - test/rotate-image-surface-paint.ps2.ref.png | Bin 0 -> 212 bytes - test/rotate-image-surface-paint.ps3.ref.png | Bin 0 -> 212 bytes - test/rotate-image-surface-paint.quartz.ref.png | Bin 0 -> 257 bytes - test/rotate-image-surface-paint.ref.png | Bin 0 -> 232 bytes - test/rotate-image-surface-paint.svg11.ref.png | Bin 0 -> 248 bytes - test/rotate-image-surface-paint.svg12.ref.png | Bin 0 -> 248 bytes - test/scale-down-source-surface-paint-ref.png | Bin 133 -> 0 bytes - test/scale-down-source-surface-paint.ref.png | Bin 0 -> 133 bytes - test/scale-source-surface-paint-pdf-argb32-ref.png | Bin 182 -> 0 bytes - test/scale-source-surface-paint-pdf-rgb24-ref.png | Bin 198 -> 0 bytes - test/scale-source-surface-paint-ref.png | Bin 147 -> 0 bytes - test/scale-source-surface-paint-rgb24-ref.png | Bin 136 -> 0 bytes - ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 229 -> 0 bytes - .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 243 -> 0 bytes - ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 229 -> 0 bytes - .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 243 -> 0 bytes - test/scale-source-surface-paint.pdf.argb32.ref.png | Bin 0 -> 182 bytes - test/scale-source-surface-paint.pdf.rgb24.ref.png | Bin 0 -> 198 bytes - test/scale-source-surface-paint.ref.png | Bin 0 -> 147 bytes - test/scale-source-surface-paint.rgb24.ref.png | Bin 0 -> 136 bytes - ...scale-source-surface-paint.svg11.argb32.ref.png | Bin 0 -> 229 bytes - .../scale-source-surface-paint.svg11.rgb24.ref.png | Bin 0 -> 243 bytes - ...scale-source-surface-paint.svg12.argb32.ref.png | Bin 0 -> 229 bytes - .../scale-source-surface-paint.svg12.rgb24.ref.png | Bin 0 -> 243 bytes - test/select-font-face-ps2-ref.png | Bin 959 -> 0 bytes - test/select-font-face-ps3-ref.png | Bin 959 -> 0 bytes - test/select-font-face-quartz-ref.png | Bin 2970 -> 0 bytes - test/select-font-face-ref.png | Bin 2473 -> 0 bytes - test/select-font-face.ps2.ref.png | Bin 0 -> 959 bytes - test/select-font-face.ps3.ref.png | Bin 0 -> 959 bytes - test/select-font-face.quartz.ref.png | Bin 0 -> 2970 bytes - test/select-font-face.ref.png | Bin 0 -> 2473 bytes - test/self-copy-overlap-ref.png | Bin 1140 -> 0 bytes - test/self-copy-overlap-rgb24-ref.png | Bin 608 -> 0 bytes - test/self-copy-overlap.ref.png | Bin 0 -> 1140 bytes - test/self-copy-overlap.rgb24.ref.png | Bin 0 -> 608 bytes - test/self-copy-ps2-ref.png | Bin 335 -> 0 bytes - test/self-copy-ps3-ref.png | Bin 335 -> 0 bytes - test/self-copy-ref.png | Bin 291 -> 0 bytes - test/self-copy.ps2.ref.png | Bin 0 -> 335 bytes - test/self-copy.ps3.ref.png | Bin 0 -> 335 bytes - test/self-copy.ref.png | Bin 0 -> 291 bytes - test/self-intersecting-ref.png | Bin 242 -> 0 bytes - test/self-intersecting-rgb24-ref.png | Bin 304 -> 0 bytes - test/self-intersecting.ref.png | Bin 0 -> 242 bytes - test/self-intersecting.rgb24.ref.png | Bin 0 -> 304 bytes - test/set-source-ref.png | Bin 120 -> 0 bytes - test/set-source-rgb24-ref.png | Bin 120 -> 0 bytes - test/set-source-svg11-argb32-ref.png | Bin 104 -> 0 bytes - test/set-source-svg12-argb32-ref.png | Bin 104 -> 0 bytes - test/set-source.ref.png | Bin 0 -> 120 bytes - test/set-source.rgb24.ref.png | Bin 0 -> 120 bytes - test/set-source.svg11.argb32.ref.png | Bin 0 -> 104 bytes - test/set-source.svg12.argb32.ref.png | Bin 0 -> 104 bytes - test/show-glyphs-many-ref.png | Bin 118 -> 0 bytes - test/show-glyphs-many.ref.png | Bin 0 -> 118 bytes - test/show-text-current-point-ps2-ref.png | Bin 1356 -> 0 bytes - test/show-text-current-point-ps3-ref.png | Bin 1356 -> 0 bytes - test/show-text-current-point-quartz-ref.png | Bin 3093 -> 0 bytes - test/show-text-current-point-ref.png | Bin 2411 -> 0 bytes - test/show-text-current-point.ps2.ref.png | Bin 0 -> 1356 bytes - test/show-text-current-point.ps3.ref.png | Bin 0 -> 1356 bytes - test/show-text-current-point.quartz.ref.png | Bin 0 -> 3093 bytes - test/show-text-current-point.ref.png | Bin 0 -> 2411 bytes - test/skew-extreme-ps2-ref.png | Bin 1048 -> 0 bytes - test/skew-extreme-ps3-ref.png | Bin 1048 -> 0 bytes - test/skew-extreme-ref.png | Bin 1012 -> 0 bytes - test/skew-extreme.ps2.ref.png | Bin 0 -> 1048 bytes - test/skew-extreme.ps3.ref.png | Bin 0 -> 1048 bytes - test/skew-extreme.ref.png | Bin 0 -> 1012 bytes - test/smask-fill-pdf-ref.png | Bin 1075 -> 0 bytes - test/smask-fill-ref.png | Bin 1223 -> 0 bytes - test/smask-fill-svg11-ref.png | Bin 1166 -> 0 bytes - test/smask-fill-svg12-ref.png | Bin 1166 -> 0 bytes - test/smask-fill.pdf.ref.png | Bin 0 -> 1075 bytes - test/smask-fill.ref.png | Bin 0 -> 1223 bytes - test/smask-fill.svg11.ref.png | Bin 0 -> 1166 bytes - test/smask-fill.svg12.ref.png | Bin 0 -> 1166 bytes - test/smask-image-mask-pdf-ref.png | Bin 421 -> 0 bytes - test/smask-image-mask-ref.png | Bin 643 -> 0 bytes - test/smask-image-mask.pdf.ref.png | Bin 0 -> 421 bytes - test/smask-image-mask.ref.png | Bin 0 -> 643 bytes - test/smask-mask-pdf-ref.png | Bin 3731 -> 0 bytes - test/smask-mask-ref.png | Bin 2523 -> 0 bytes - test/smask-mask-svg11-ref.png | Bin 2529 -> 0 bytes - test/smask-mask-svg12-ref.png | Bin 2529 -> 0 bytes - test/smask-mask.pdf.ref.png | Bin 0 -> 3731 bytes - test/smask-mask.ref.png | Bin 0 -> 2523 bytes - test/smask-mask.svg11.ref.png | Bin 0 -> 2529 bytes - test/smask-mask.svg12.ref.png | Bin 0 -> 2529 bytes - test/smask-paint-pdf-ref.png | Bin 3800 -> 0 bytes - test/smask-paint-ref.png | Bin 2639 -> 0 bytes - test/smask-paint-svg11-ref.png | Bin 2612 -> 0 bytes - test/smask-paint-svg12-ref.png | Bin 2612 -> 0 bytes - test/smask-paint.pdf.ref.png | Bin 0 -> 3800 bytes - test/smask-paint.ref.png | Bin 0 -> 2639 bytes - test/smask-paint.svg11.ref.png | Bin 0 -> 2612 bytes - test/smask-paint.svg12.ref.png | Bin 0 -> 2612 bytes - test/smask-pdf-ref.png | Bin 3800 -> 0 bytes - test/smask-ps2-ref.png | Bin 3669 -> 0 bytes - test/smask-ps3-ref.png | Bin 3669 -> 0 bytes - test/smask-ref.png | Bin 3587 -> 0 bytes - test/smask-stroke-pdf-ref.png | Bin 449 -> 0 bytes - test/smask-stroke-ref.png | Bin 1845 -> 0 bytes - test/smask-stroke.pdf.ref.png | Bin 0 -> 449 bytes - test/smask-stroke.ref.png | Bin 0 -> 1845 bytes - test/smask-svg11-ref.png | Bin 3634 -> 0 bytes - test/smask-svg12-ref.png | Bin 3634 -> 0 bytes - test/smask-text-pdf-ref.png | Bin 1806 -> 0 bytes - test/smask-text-ps2-ref.png | Bin 2023 -> 0 bytes - test/smask-text-ps3-ref.png | Bin 2023 -> 0 bytes - test/smask-text-ref.png | Bin 1777 -> 0 bytes - test/smask-text-svg11-ref.png | Bin 1886 -> 0 bytes - test/smask-text-svg12-ref.png | Bin 1886 -> 0 bytes - test/smask-text.pdf.ref.png | Bin 0 -> 1806 bytes - test/smask-text.ps2.ref.png | Bin 0 -> 2023 bytes - test/smask-text.ps3.ref.png | Bin 0 -> 2023 bytes - test/smask-text.ref.png | Bin 0 -> 1777 bytes - test/smask-text.svg11.ref.png | Bin 0 -> 1886 bytes - test/smask-text.svg12.ref.png | Bin 0 -> 1886 bytes - test/smask.pdf.ref.png | Bin 0 -> 3800 bytes - test/smask.ps2.ref.png | Bin 0 -> 3669 bytes - test/smask.ps3.ref.png | Bin 0 -> 3669 bytes - test/smask.ref.png | Bin 0 -> 3587 bytes - test/smask.svg11.ref.png | Bin 0 -> 3634 bytes - test/smask.svg12.ref.png | Bin 0 -> 3634 bytes - test/solid-pattern-cache-stress-ref.png | Bin 107 -> 0 bytes - test/solid-pattern-cache-stress.ref.png | Bin 0 -> 107 bytes - test/source-clip-ref.png | Bin 133 -> 0 bytes - test/source-clip-scale-pdf-ref.png | Bin 113 -> 0 bytes - test/source-clip-scale-ps2-argb32-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-ps2-rgb24-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-ps3-argb32-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-ps3-rgb24-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-quartz-ref.png | Bin 148 -> 0 bytes - test/source-clip-scale-ref.png | Bin 161 -> 0 bytes - test/source-clip-scale-svg11-ref.png | Bin 119 -> 0 bytes - test/source-clip-scale-svg12-ref.png | Bin 119 -> 0 bytes - test/source-clip-scale.pdf.ref.png | Bin 0 -> 113 bytes - test/source-clip-scale.ps2.argb32.ref.png | Bin 0 -> 183 bytes - test/source-clip-scale.ps2.rgb24.ref.png | Bin 0 -> 183 bytes - test/source-clip-scale.ps3.argb32.ref.png | Bin 0 -> 183 bytes - test/source-clip-scale.ps3.rgb24.ref.png | Bin 0 -> 183 bytes - test/source-clip-scale.quartz.ref.png | Bin 0 -> 148 bytes - test/source-clip-scale.ref.png | Bin 0 -> 161 bytes - test/source-clip-scale.svg11.ref.png | Bin 0 -> 119 bytes - test/source-clip-scale.svg12.ref.png | Bin 0 -> 119 bytes - test/source-clip.ref.png | Bin 0 -> 133 bytes - test/source-surface-scale-paint-ref.png | Bin 139 -> 0 bytes - test/source-surface-scale-paint-rgb24-ref.png | Bin 133 -> 0 bytes - test/source-surface-scale-paint.ref.png | Bin 0 -> 139 bytes - test/source-surface-scale-paint.rgb24.ref.png | Bin 0 -> 133 bytes - test/spline-decomposition-pdf-ref.png | Bin 20404 -> 0 bytes - test/spline-decomposition-ps2-ref.png | Bin 8957 -> 0 bytes - test/spline-decomposition-ps3-ref.png | Bin 8957 -> 0 bytes - test/spline-decomposition-ref.png | Bin 20402 -> 0 bytes - test/spline-decomposition-svg11-ref.png | Bin 20404 -> 0 bytes - test/spline-decomposition-svg12-ref.png | Bin 20404 -> 0 bytes - test/spline-decomposition.pdf.ref.png | Bin 0 -> 20404 bytes - test/spline-decomposition.ps2.ref.png | Bin 0 -> 8957 bytes - test/spline-decomposition.ps3.ref.png | Bin 0 -> 8957 bytes - test/spline-decomposition.ref.png | Bin 0 -> 20402 bytes - test/spline-decomposition.svg11.ref.png | Bin 0 -> 20404 bytes - test/spline-decomposition.svg12.ref.png | Bin 0 -> 20404 bytes - test/stroke-ctm-caps-ps2-ref.png | Bin 1079 -> 0 bytes - test/stroke-ctm-caps-ps3-ref.png | Bin 1079 -> 0 bytes - test/stroke-ctm-caps-quartz-ref.png | Bin 1109 -> 0 bytes - test/stroke-ctm-caps-ref.png | Bin 1057 -> 0 bytes - test/stroke-ctm-caps.ps2.ref.png | Bin 0 -> 1079 bytes - test/stroke-ctm-caps.ps3.ref.png | Bin 0 -> 1079 bytes - test/stroke-ctm-caps.quartz.ref.png | Bin 0 -> 1109 bytes - test/stroke-ctm-caps.ref.png | Bin 0 -> 1057 bytes - test/stroke-image-pdf-ref.png | Bin 1554 -> 0 bytes - test/stroke-image-ps2-ref.png | Bin 2121 -> 0 bytes - test/stroke-image-ps3-ref.png | Bin 2121 -> 0 bytes - test/stroke-image-quartz-ref.png | Bin 1802 -> 0 bytes - test/stroke-image-ref.png | Bin 1866 -> 0 bytes - test/stroke-image.pdf.ref.png | Bin 0 -> 1554 bytes - test/stroke-image.ps2.ref.png | Bin 0 -> 2121 bytes - test/stroke-image.ps3.ref.png | Bin 0 -> 2121 bytes - test/stroke-image.quartz.ref.png | Bin 0 -> 1802 bytes - test/stroke-image.ref.png | Bin 0 -> 1866 bytes - test/surface-pattern-big-scale-down-ref.png | Bin 226 -> 0 bytes - test/surface-pattern-big-scale-down.ref.png | Bin 0 -> 226 bytes - test/surface-pattern-pdf-ref.png | Bin 15996 -> 0 bytes - test/surface-pattern-ps2-ref.png | Bin 2364 -> 0 bytes - test/surface-pattern-ps3-ref.png | Bin 2364 -> 0 bytes - test/surface-pattern-ref.png | Bin 11439 -> 0 bytes - test/surface-pattern-scale-down-pdf-argb32-ref.png | Bin 2386 -> 0 bytes - test/surface-pattern-scale-down-pdf-rgb24-ref.png | Bin 2386 -> 0 bytes - test/surface-pattern-scale-down-ps2-ref.png | Bin 1324 -> 0 bytes - test/surface-pattern-scale-down-ps3-ref.png | Bin 1324 -> 0 bytes - test/surface-pattern-scale-down-quartz-ref.png | Bin 3188 -> 0 bytes - test/surface-pattern-scale-down-ref.png | Bin 1784 -> 0 bytes - test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 0 -> 2386 bytes - test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 0 -> 2386 bytes - test/surface-pattern-scale-down.ps2.ref.png | Bin 0 -> 1324 bytes - test/surface-pattern-scale-down.ps3.ref.png | Bin 0 -> 1324 bytes - test/surface-pattern-scale-down.quartz.ref.png | Bin 0 -> 3188 bytes - test/surface-pattern-scale-down.ref.png | Bin 0 -> 1784 bytes - test/surface-pattern-scale-up-pdf-argb32-ref.png | Bin 4247 -> 0 bytes - test/surface-pattern-scale-up-pdf-rgb24-ref.png | Bin 4247 -> 0 bytes - test/surface-pattern-scale-up-ps2-ref.png | Bin 943 -> 0 bytes - test/surface-pattern-scale-up-ps3-ref.png | Bin 943 -> 0 bytes - test/surface-pattern-scale-up-ref.png | Bin 4061 -> 0 bytes - test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 0 -> 4247 bytes - test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 0 -> 4247 bytes - test/surface-pattern-scale-up.ps2.ref.png | Bin 0 -> 943 bytes - test/surface-pattern-scale-up.ps3.ref.png | Bin 0 -> 943 bytes - test/surface-pattern-scale-up.ref.png | Bin 0 -> 4061 bytes - test/surface-pattern-svg11-ref.png | Bin 17663 -> 0 bytes - test/surface-pattern-svg12-ref.png | Bin 17663 -> 0 bytes - test/surface-pattern.pdf.ref.png | Bin 0 -> 15996 bytes - test/surface-pattern.ps2.ref.png | Bin 0 -> 2364 bytes - test/surface-pattern.ps3.ref.png | Bin 0 -> 2364 bytes - test/surface-pattern.ref.png | Bin 0 -> 11439 bytes - test/surface-pattern.svg11.ref.png | Bin 0 -> 17663 bytes - test/surface-pattern.svg12.ref.png | Bin 0 -> 17663 bytes - test/svg-clip.c | 2 +- - test/svg-surface-source-ref.png | Bin 268 -> 0 bytes - test/svg-surface-source.c | 2 +- - test/svg-surface-source.ref.png | Bin 0 -> 268 bytes - test/svg-surface.c | 2 +- - test/text-antialias-gray-quartz-ref.png | Bin 1041 -> 0 bytes - test/text-antialias-gray-ref.png | Bin 1084 -> 0 bytes - test/text-antialias-gray.quartz.ref.png | Bin 0 -> 1041 bytes - test/text-antialias-gray.ref.png | Bin 0 -> 1084 bytes - test/text-antialias-none-quartz-ref.png | Bin 300 -> 0 bytes - test/text-antialias-none-ref.png | Bin 298 -> 0 bytes - test/text-antialias-none.quartz.ref.png | Bin 0 -> 300 bytes - test/text-antialias-none.ref.png | Bin 0 -> 298 bytes - test/text-antialias-subpixel-quartz-ref.png | Bin 1065 -> 0 bytes - test/text-antialias-subpixel-ref.png | Bin 1102 -> 0 bytes - test/text-antialias-subpixel.quartz.ref.png | Bin 0 -> 1065 bytes - test/text-antialias-subpixel.ref.png | Bin 0 -> 1102 bytes - test/text-glyph-range-ps2-ref.png | Bin 1389 -> 0 bytes - test/text-glyph-range-ps3-ref.png | Bin 1389 -> 0 bytes - test/text-glyph-range-ref.png | Bin 2211 -> 0 bytes - test/text-glyph-range.ps2.ref.png | Bin 0 -> 1389 bytes - test/text-glyph-range.ps3.ref.png | Bin 0 -> 1389 bytes - test/text-glyph-range.ref.png | Bin 0 -> 2211 bytes - test/text-pattern-pdf-argb32-ref.png | Bin 1823 -> 0 bytes - test/text-pattern-pdf-rgb24-ref.png | Bin 508 -> 0 bytes - test/text-pattern-ps3-argb32-ref.png | Bin 966 -> 0 bytes - test/text-pattern-ps3-rgb24-ref.png | Bin 924 -> 0 bytes - test/text-pattern-quartz-ref.png | Bin 2158 -> 0 bytes - test/text-pattern-quartz-rgb24-ref.png | Bin 1874 -> 0 bytes - test/text-pattern-ref.png | Bin 1717 -> 0 bytes - test/text-pattern-rgb24-ref.png | Bin 1414 -> 0 bytes - test/text-pattern-svg11-argb32-ref.png | Bin 1733 -> 0 bytes - test/text-pattern-svg11-rgb24-ref.png | Bin 1563 -> 0 bytes - test/text-pattern-svg12-argb32-ref.png | Bin 1733 -> 0 bytes - test/text-pattern-svg12-rgb24-ref.png | Bin 1563 -> 0 bytes - test/text-pattern.pdf.argb32.ref.png | Bin 0 -> 1823 bytes - test/text-pattern.pdf.rgb24.ref.png | Bin 0 -> 508 bytes - test/text-pattern.ps3.argb32.ref.png | Bin 0 -> 966 bytes - test/text-pattern.ps3.rgb24.ref.png | Bin 0 -> 924 bytes - test/text-pattern.quartz.ref.png | Bin 0 -> 2158 bytes - test/text-pattern.quartz.rgb24.ref.png | Bin 0 -> 1874 bytes - test/text-pattern.ref.png | Bin 0 -> 1717 bytes - test/text-pattern.rgb24.ref.png | Bin 0 -> 1414 bytes - test/text-pattern.svg11.argb32.ref.png | Bin 0 -> 1733 bytes - test/text-pattern.svg11.rgb24.ref.png | Bin 0 -> 1563 bytes - test/text-pattern.svg12.argb32.ref.png | Bin 0 -> 1733 bytes - test/text-pattern.svg12.rgb24.ref.png | Bin 0 -> 1563 bytes - test/text-rotate-pdf-ref.png | Bin 16639 -> 0 bytes - test/text-rotate-ps2-ref.png | Bin 6851 -> 0 bytes - test/text-rotate-ps3-ref.png | Bin 6851 -> 0 bytes - test/text-rotate-quartz-ref.png | Bin 17820 -> 0 bytes - test/text-rotate-ref.png | Bin 17775 -> 0 bytes - test/text-rotate-svg11-ref.png | Bin 18301 -> 0 bytes - test/text-rotate-svg12-ref.png | Bin 18301 -> 0 bytes - test/text-rotate.pdf.ref.png | Bin 0 -> 16639 bytes - test/text-rotate.ps2.ref.png | Bin 0 -> 6851 bytes - test/text-rotate.ps3.ref.png | Bin 0 -> 6851 bytes - test/text-rotate.quartz.ref.png | Bin 0 -> 17820 bytes - test/text-rotate.ref.png | Bin 0 -> 17775 bytes - test/text-rotate.svg11.ref.png | Bin 0 -> 18301 bytes - test/text-rotate.svg12.ref.png | Bin 0 -> 18301 bytes - test/text-transform-pdf-ref.png | Bin 3796 -> 0 bytes - test/text-transform-ps2-ref.png | Bin 4154 -> 0 bytes - test/text-transform-ps3-ref.png | Bin 4154 -> 0 bytes - test/text-transform-ref.png | Bin 6200 -> 0 bytes - test/text-transform.pdf.ref.png | Bin 0 -> 3796 bytes - test/text-transform.ps2.ref.png | Bin 0 -> 4154 bytes - test/text-transform.ps3.ref.png | Bin 0 -> 4154 bytes - test/text-transform.ref.png | Bin 0 -> 6200 bytes - test/transforms-ps2-ref.png | Bin 418 -> 0 bytes - test/transforms-ps3-ref.png | Bin 418 -> 0 bytes - test/transforms-ref.png | Bin 361 -> 0 bytes - test/transforms.ps2.ref.png | Bin 0 -> 418 bytes - test/transforms.ps3.ref.png | Bin 0 -> 418 bytes - test/transforms.ref.png | Bin 0 -> 361 bytes - test/translate-show-surface-ref.png | Bin 100 -> 0 bytes - test/translate-show-surface.ref.png | Bin 0 -> 100 bytes - test/trap-clip-pdf-argb32-ref.png | Bin 5809 -> 0 bytes - test/trap-clip-pdf-rgb24-ref.png | Bin 5768 -> 0 bytes - test/trap-clip-ps2-argb32-ref.png | Bin 5690 -> 0 bytes - test/trap-clip-ps2-rgb24-ref.png | Bin 5617 -> 0 bytes - test/trap-clip-ps3-argb32-ref.png | Bin 5591 -> 0 bytes - test/trap-clip-ps3-rgb24-ref.png | Bin 5512 -> 0 bytes - test/trap-clip-quartz-ref.png | Bin 6041 -> 0 bytes - test/trap-clip-quartz-rgb24-ref.png | Bin 5385 -> 0 bytes - test/trap-clip-ref.png | Bin 5772 -> 0 bytes - test/trap-clip-rgb24-ref.png | Bin 5365 -> 0 bytes - test/trap-clip.pdf.argb32.ref.png | Bin 0 -> 5809 bytes - test/trap-clip.pdf.rgb24.ref.png | Bin 0 -> 5768 bytes - test/trap-clip.ps2.argb32.ref.png | Bin 0 -> 5690 bytes - test/trap-clip.ps2.rgb24.ref.png | Bin 0 -> 5617 bytes - test/trap-clip.ps3.argb32.ref.png | Bin 0 -> 5591 bytes - test/trap-clip.ps3.rgb24.ref.png | Bin 0 -> 5512 bytes - test/trap-clip.quartz.ref.png | Bin 0 -> 6041 bytes - test/trap-clip.quartz.rgb24.ref.png | Bin 0 -> 5385 bytes - test/trap-clip.ref.png | Bin 0 -> 5772 bytes - test/trap-clip.rgb24.ref.png | Bin 0 -> 5365 bytes - test/twin-ps2-ref.png | Bin 1167 -> 0 bytes - test/twin-ps3-ref.png | Bin 1167 -> 0 bytes - test/twin-ref.png | Bin 1836 -> 0 bytes - test/twin-svg11-ref.png | Bin 1773 -> 0 bytes - test/twin-svg12-ref.png | Bin 1773 -> 0 bytes - test/twin.ps2.ref.png | Bin 0 -> 1167 bytes - test/twin.ps3.ref.png | Bin 0 -> 1167 bytes - test/twin.ref.png | Bin 0 -> 1836 bytes - test/twin.svg11.ref.png | Bin 0 -> 1773 bytes - test/twin.svg12.ref.png | Bin 0 -> 1773 bytes - test/unantialiased-shapes-quartz-ref.png | Bin 4394 -> 0 bytes - test/unantialiased-shapes-ref.png | Bin 4459 -> 0 bytes - test/unantialiased-shapes.quartz.ref.png | Bin 0 -> 4394 bytes - test/unantialiased-shapes.ref.png | Bin 0 -> 4459 bytes - test/unbounded-operator-quartz-ref.png | Bin 4066 -> 0 bytes - test/unbounded-operator-quartz-rgb24-ref.png | Bin 1918 -> 0 bytes - test/unbounded-operator-ref.png | Bin 2777 -> 0 bytes - test/unbounded-operator-rgb24-ref.png | Bin 1315 -> 0 bytes - test/unbounded-operator.quartz.ref.png | Bin 0 -> 4066 bytes - test/unbounded-operator.quartz.rgb24.ref.png | Bin 0 -> 1918 bytes - test/unbounded-operator.ref.png | Bin 0 -> 2777 bytes - test/unbounded-operator.rgb24.ref.png | Bin 0 -> 1315 bytes - test/user-font-mask-pdf-ref.png | Bin 1927 -> 0 bytes - test/user-font-mask-ps2-ref.png | Bin 1927 -> 0 bytes - test/user-font-mask-ps3-ref.png | Bin 1927 -> 0 bytes - test/user-font-mask-ref.png | Bin 6011 -> 0 bytes - test/user-font-mask-svg11-ref.png | Bin 2224 -> 0 bytes - test/user-font-mask.pdf.ref.png | Bin 0 -> 1927 bytes - test/user-font-mask.ps2.ref.png | Bin 0 -> 1927 bytes - test/user-font-mask.ps3.ref.png | Bin 0 -> 1927 bytes - test/user-font-mask.ref.png | Bin 0 -> 6011 bytes - test/user-font-mask.svg11.ref.png | Bin 0 -> 2224 bytes - test/user-font-proxy-pdf-ref.png | Bin 18111 -> 0 bytes - test/user-font-proxy-ps2-ref.png | Bin 8171 -> 0 bytes - test/user-font-proxy-ps3-ref.png | Bin 8171 -> 0 bytes - test/user-font-proxy-ref.png | Bin 18121 -> 0 bytes - test/user-font-proxy-svg11-ref.png | Bin 17902 -> 0 bytes - test/user-font-proxy-svg12-ref.png | Bin 17902 -> 0 bytes - test/user-font-proxy.pdf.ref.png | Bin 0 -> 18111 bytes - test/user-font-proxy.ps2.ref.png | Bin 0 -> 8171 bytes - test/user-font-proxy.ps3.ref.png | Bin 0 -> 8171 bytes - test/user-font-proxy.ref.png | Bin 0 -> 18121 bytes - test/user-font-proxy.svg11.ref.png | Bin 0 -> 17902 bytes - test/user-font-proxy.svg12.ref.png | Bin 0 -> 17902 bytes - test/user-font-ps2-ref.png | Bin 5043 -> 0 bytes - test/user-font-ps3-ref.png | Bin 5043 -> 0 bytes - test/user-font-ref.png | Bin 6183 -> 0 bytes - test/user-font-rescale-ps2-ref.png | Bin 8041 -> 0 bytes - test/user-font-rescale-ps3-ref.png | Bin 8041 -> 0 bytes - test/user-font-rescale-ref.png | Bin 15937 -> 0 bytes - test/user-font-rescale-svg11-ref.png | Bin 15741 -> 0 bytes - test/user-font-rescale-svg12-ref.png | Bin 15741 -> 0 bytes - test/user-font-rescale.ps2.ref.png | Bin 0 -> 8041 bytes - test/user-font-rescale.ps3.ref.png | Bin 0 -> 8041 bytes - test/user-font-rescale.ref.png | Bin 0 -> 15937 bytes - test/user-font-rescale.svg11.ref.png | Bin 0 -> 15741 bytes - test/user-font-rescale.svg12.ref.png | Bin 0 -> 15741 bytes - test/user-font-svg11-ref.png | Bin 6134 -> 0 bytes - test/user-font-svg12-ref.png | Bin 6134 -> 0 bytes - test/user-font.ps2.ref.png | Bin 0 -> 5043 bytes - test/user-font.ps3.ref.png | Bin 0 -> 5043 bytes - test/user-font.ref.png | Bin 0 -> 6183 bytes - test/user-font.svg11.ref.png | Bin 0 -> 6134 bytes - test/user-font.svg12.ref.png | Bin 0 -> 6134 bytes - test/xlib-expose-event-ref.png | Bin 40736 -> 0 bytes - test/xlib-expose-event.c | 4 +- - test/xlib-expose-event.ref.png | Bin 0 -> 40736 bytes - test/xlib-surface-source-ps2-ref.png | Bin 376 -> 0 bytes - test/xlib-surface-source-ps3-ref.png | Bin 376 -> 0 bytes - test/xlib-surface-source-ref.png | Bin 268 -> 0 bytes - test/xlib-surface-source.ps2.ref.png | Bin 0 -> 376 bytes - test/xlib-surface-source.ps3.ref.png | Bin 0 -> 376 bytes - test/xlib-surface-source.ref.png | Bin 0 -> 268 bytes - test/zero-alpha-ref.png | Bin 115 -> 0 bytes - test/zero-alpha.ref.png | Bin 0 -> 115 bytes - 1412 files changed, 782 insertions(+), 752 deletions(-) - -commit e90073f7ddc6f461a935bc360c409b04f1fe9f74 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Sep 3 16:38:03 2008 +0100 - - [test] Build test suite into single binary. - - Avoid calling libtool to link every single test case, by building just one - binary from all the sources. - - This binary is then given the task of choosing tests to run (based on user - selection and individual test requirement), forking each test into its own - process and accumulating the results. - - Makefile.am | 1 + - boilerplate/cairo-boilerplate.c | 658 +++++++++------ - boilerplate/cairo-boilerplate.h | 1 + - build/configure.ac.noversion | 12 + - build/configure.ac.system | 57 ++ - build/configure.ac.version | 8 - - configure.ac | 16 + - doc/public/tmpl/cairo-surface.sgml | 1 + - test/.gitignore | 237 +------ - test/Makefile.am | 572 +++++++------- - test/README | 28 +- - test/a1-image-sample.c | 20 +- - test/a1-mask.c | 38 +- - test/a1-traps-sample.c | 20 +- - test/a8-mask.c | 37 +- - test/alpha-similar.c | 23 +- - test/big-line.c | 22 +- - test/big-trap.c | 22 +- - test/bilevel-image.c | 20 +- - test/bitmap-font.c | 22 +- - test/cairo-test-private.h | 74 ++ - test/cairo-test-runner.c | 907 +++++++++++++++++++++ - test/cairo-test.c | 594 ++++++++------ - test/cairo-test.h | 99 ++- - test/caps-joins-alpha.c | 26 +- - test/caps-joins.c | 27 +- - test/caps-sub-paths.c | 21 +- - test/clip-all.c | 21 +- - test/clip-empty.c | 20 +- - test/clip-fill-rule-pixel-aligned.c | 22 +- - test/clip-fill-rule.c | 20 +- - test/clip-nesting.c | 20 +- - test/clip-operator.c | 21 +- - test/clip-push-group.c | 20 +- - test/clip-twice.c | 20 +- - test/clip-zero.c | 20 +- - test/clipped-group.c | 20 +- - test/clipped-surface.c | 19 +- - test/close-path.c | 18 +- - test/composite-integer-translate-over-repeat.c | 20 +- - test/composite-integer-translate-over.c | 22 +- - test/composite-integer-translate-source.c | 22 +- - test/copy-path.c | 33 +- - test/create-for-stream.c | 53 +- - test/create-from-png-stream.c | 20 +- - test/create-from-png.c | 82 +- - test/dash-caps-joins.c | 26 +- - test/dash-curve.c | 20 +- - test/dash-no-dash.c | 20 +- - test/dash-offset-negative.c | 20 +- - test/dash-scale.c | 26 +- - test/dash-state.c | 22 +- - test/dash-zero-length.c | 20 +- - test/degenerate-arc.c | 20 +- - test/degenerate-dash.c | 20 +- - test/degenerate-path.c | 21 +- - test/degenerate-pen.c | 20 +- - test/device-offset-fractional.c | 20 +- - test/device-offset-positive.c | 20 +- - test/device-offset-scale.c | 21 +- - test/device-offset.c | 20 +- - test/extend-pad.c | 20 +- - test/extend-reflect-similar.c | 22 +- - test/extend-reflect.c | 22 +- - test/extend-repeat-similar.c | 22 +- - test/extend-repeat.c | 22 +- - test/fallback-resolution.c | 28 +- - test/fill-alpha-pattern.c | 20 +- - test/fill-alpha.c | 20 +- - test/fill-and-stroke-alpha-add.c | 20 +- - test/fill-and-stroke-alpha.c | 20 +- - test/fill-and-stroke.c | 20 +- - test/fill-degenerate-sort-order.c | 20 +- - test/fill-missed-stop.c | 19 +- - test/fill-rule.c | 20 +- - test/filter-bilinear-extents.c | 22 +- - test/filter-nearest-offset.c | 21 +- - test/filter-nearest-transformed.c | 19 +- - test/finer-grained-fallbacks.c | 20 +- - test/font-face-get-type.c | 28 +- - test/font-matrix-translation.c | 20 +- - test/font-options.c | 17 +- - test/ft-font-create-for-ft-face.c | 21 +- - test/ft-show-glyphs-positioning.c | 20 +- - test/ft-show-glyphs-table.c | 21 +- - test/ft-text-antialias-none.c | 20 +- - test/ft-text-vertical-layout-type1.c | 23 +- - test/ft-text-vertical-layout-type3.c | 20 +- - test/get-and-set.c | 20 +- - test/get-clip.c | 21 +- - test/get-group-target.c | 20 +- - test/get-path-extents.c | 20 +- - test/get-xrender-format.c | 35 +- - test/glyph-cache-pressure.c | 20 +- - test/gradient-alpha.c | 20 +- - test/gradient-constant-alpha.c | 20 +- - test/gradient-zero-stops.c | 22 +- - test/group-paint.c | 20 +- - test/huge-pattern.c | 21 +- - test/image-surface-source.c | 8 +- - test/in-fill-empty-trapezoid.c | 24 +- - test/in-fill-trapezoid.c | 20 +- - test/infinite-join.c | 22 +- - test/invalid-matrix.c | 20 +- - test/large-clip.c | 22 +- - test/large-font.c | 22 +- - test/large-source.c | 20 +- - test/leaky-dash.c | 22 +- - test/leaky-dashed-rectangle.c | 20 +- - test/leaky-dashed-stroke.c | 20 +- - test/leaky-polygon.c | 20 +- - test/line-width-scale.c | 20 +- - test/line-width-zero.c | 20 +- - test/line-width.c | 20 +- - test/linear-gradient-reflect.c | 21 +- - test/linear-gradient.c | 20 +- - test/long-dashed-lines.c | 20 +- - test/long-lines.c | 24 +- - test/make-cairo-test-constructors.pl | 18 + - test/mask-alpha.c | 20 +- - test/mask-ctm.c | 21 +- - test/mask-surface-ctm.c | 20 +- - test/mask-transformed-image.c | 19 +- - test/mask-transformed-similar.c | 19 +- - test/mask.c | 23 +- - test/meta-surface-pattern.c | 20 +- - test/miter-precision.c | 22 +- - test/move-to-show-surface.c | 20 +- - test/multi-page.c | 30 +- - test/new-sub-path.c | 22 +- - test/nil-surface.c | 20 +- - test/operator-alpha.c | 21 +- - test/operator-clear.c | 20 +- - test/operator-source.c | 20 +- - test/operator.c | 21 +- - test/over-above-source.c | 20 +- - test/over-around-source.c | 20 +- - test/over-below-source.c | 20 +- - test/over-between-source.c | 20 +- - test/paint-repeat.c | 20 +- - test/paint-source-alpha.c | 20 +- - test/paint-with-alpha.c | 20 +- - test/paint.c | 20 +- - test/pattern-get-type.c | 21 +- - test/pattern-getters.c | 20 +- - test/pdf-features.c | 31 +- - test/pdf-surface-source.c | 10 +- - test/pixman-rotate.c | 20 +- - test/png.c | 56 +- - test/ps-features.c | 29 +- - test/ps-surface-source.c | 10 +- - test/pthread-show-text.c | 41 +- - test/push-group.c | 20 +- - test/radial-gradient.c | 22 +- - test/random-intersections.c | 21 +- - test/rectangle-rounding-error.c | 22 +- - test/rectilinear-fill.c | 20 +- - test/rectilinear-miter-limit.c | 20 +- - test/rectilinear-stroke.c | 21 +- - test/reflected-stroke.c | 21 +- - test/rel-path.c | 20 +- - test/rgb24-ignore-alpha.c | 20 +- - test/rotate-image-surface-paint.c | 22 +- - test/scale-down-source-surface-paint.c | 20 +- - test/scale-source-surface-paint.c | 20 +- - test/select-font-face.c | 28 +- - test/select-font-no-show-text.c | 20 +- - test/self-copy-overlap.c | 22 +- - test/self-copy.c | 20 +- - test/self-intersecting.c | 22 +- - test/set-source.c | 20 +- - test/show-glyphs-many.c | 20 +- - test/show-text-current-point.c | 22 +- - test/skew-extreme.c | 20 +- - test/smask-fill.c | 20 +- - test/smask-image-mask.c | 20 +- - test/smask-mask.c | 20 +- - test/smask-paint.c | 20 +- - test/smask-stroke.c | 20 +- - test/smask-text.c | 20 +- - test/smask.c | 20 +- - test/solid-pattern-cache-stress.c | 20 +- - test/source-clip-scale.c | 20 +- - test/source-clip.c | 20 +- - test/source-surface-scale-paint.c | 20 +- - test/spline-decomposition.c | 20 +- - test/stroke-ctm-caps.c | 20 +- - test/stroke-image.c | 20 +- - test/surface-finish-twice.c | 20 +- - test/surface-pattern-big-scale-down.c | 20 +- - test/surface-pattern-scale-down-pdf-rgb24-ref.png | Bin 0 -> 2386 bytes - test/surface-pattern-scale-down.c | 21 +- - test/surface-pattern-scale-up.c | 21 +- - test/surface-pattern.c | 24 +- - test/surface-source.c | 15 +- - test/svg-clip.c | 26 +- - test/svg-surface-source.c | 11 +- - test/svg-surface.c | 26 +- - test/text-antialias-gray.c | 20 +- - test/text-antialias-none.c | 20 +- - test/text-antialias-subpixel.c | 20 +- - test/text-cache-crash.c | 40 +- - test/text-glyph-range-ps2-ref.png | Bin 0 -> 1389 bytes - test/text-glyph-range-ps3-ref.png | Bin 0 -> 1389 bytes - test/text-glyph-range-ref.png | Bin 1810 -> 2211 bytes - test/text-glyph-range-rgb24-ref.png | Bin 1645 -> 0 bytes - test/text-glyph-range.c | 62 +- - test/text-pattern.c | 54 +- - test/text-rotate.c | 22 +- - test/text-transform.c | 22 +- - test/text-zero-len.c | 20 +- - test/toy-font-face.c | 16 +- - test/transforms.c | 20 +- - test/translate-show-surface.c | 20 +- - test/trap-clip.c | 22 +- - test/truetype-tables.c | 18 +- - test/twin.c | 20 +- - test/unantialiased-shapes.c | 20 +- - test/unbounded-operator.c | 20 +- - test/user-data.c | 17 +- - test/user-font-mask.c | 28 +- - test/user-font-proxy.c | 28 +- - test/user-font-rescale.c | 20 +- - test/user-font.c | 28 +- - test/xlib-expose-event.c | 28 +- - test/xlib-surface-source.c | 8 +- - test/xlib-surface.c | 36 +- - test/zero-alpha.c | 20 +- - 228 files changed, 3770 insertions(+), 4123 deletions(-) - -commit 8457972d40088cda165f31fdd7bd9b4c19c6e095 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 02:16:54 2008 +0000 - - [type3] Whitespace. - - Tightly scope the output stream. - - src/cairo-type3-glyph-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 08f4d49a9464bc19bc2ca7f2356a6eb8d62f5daf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 02:03:41 2008 +0000 - - [xlib] Intialise clip_dirty. - - Eeek, forgot to set the clip_dirty to 0 on construction. - - src/cairo-xlib-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b722d5b2b988d43931648d8377a9433d75f7d95f -Merge: 05fce5b 710f7d3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 02:24:25 2008 +0000 - - Merge branch '1.8' - -commit 710f7d30d348517602293f123525aef7677d69cf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 31 02:14:53 2008 +0000 - - [scaled-font] Fix typo that prevented meta_surface lookup. - - test/text-glyph-range was crashing since we requested the meta_surface but - the glyph wrongly believed it already had the meta_surface but was - checking for a path instead. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 05fce5bced9718ffa803f5a87df00f96809d1f53 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Apr 5 13:32:51 2008 +1030 - - PS/PDF: Set image Interpolation flag - - If the filter mode is anything other than DEFAILT, FAST or NEAREST set the - Interpolate flag in the image dictionary so that a smoothing filter is - applied when rasterising the vector file. - - As we have no control over the implementation of the Interpolate filter - (the PS/PDF specifications leave it undefined) we need to capture the - output of poppler/GS and update our reference images. (For a couple of - tests, the filtering is irrelevant so for those we set the filter to - NEAREST.) - - Note that GhostScript's Interpolate filter does not work on rotated images - (and a variety of other transformations) so several of the PS reference - images have use nearest-neighbour sampling instead of a bilinear filter. - - src/cairo-pdf-surface.c | 28 ++++++++-- - src/cairo-ps-surface.c | 28 +++++++++- - test/Makefile.am | 54 ++++++++++++++------ - test/bilevel-image.c | 1 + - test/composite-integer-translate-over-ps2-ref.png | Bin 0 -> 15783 bytes - test/composite-integer-translate-over-ps3-ref.png | Bin 0 -> 15783 bytes - ...osite-integer-translate-over-repeat-ps2-ref.png | Bin 0 -> 448 bytes - ...osite-integer-translate-over-repeat-ps3-ref.png | Bin 0 -> 448 bytes - .../composite-integer-translate-source-ps2-ref.png | Bin 0 -> 15783 bytes - .../composite-integer-translate-source-ps3-ref.png | Bin 0 -> 15783 bytes - test/create-from-png-stream.c | 1 + - test/create-from-png.c | 1 + - test/device-offset-fractional-ps2-ref.png | Bin 201 -> 200 bytes - test/device-offset-fractional-ps3-ref.png | Bin 201 -> 200 bytes - test/extend-reflect-ps2-ref.png | Bin 153322 -> 146990 bytes - test/extend-reflect-ps3-ref.png | Bin 153322 -> 146990 bytes - test/extend-reflect-similar-ps2-ref.png | Bin 153322 -> 146990 bytes - test/extend-reflect-similar-ps3-ref.png | Bin 153322 -> 146990 bytes - test/extend-repeat-ps2-ref.png | Bin 0 -> 119246 bytes - test/extend-repeat-ps3-ref.png | Bin 0 -> 119246 bytes - test/extend-repeat-similar-ps2-ref.png | Bin 0 -> 119246 bytes - test/extend-repeat-similar-ps3-ref.png | Bin 0 -> 119246 bytes - test/filter-bilinear-extents-ps2-ref.png | Bin 173 -> 556 bytes - test/filter-bilinear-extents-ps3-ref.png | Bin 173 -> 556 bytes - test/image-surface-source-ps2-ref.png | Bin 0 -> 376 bytes - test/image-surface-source-ps3-ref.png | Bin 0 -> 376 bytes - test/image-surface-source-ref.png | Bin 268 -> 332 bytes - test/stroke-image-ps2-ref.png | Bin 1786 -> 2121 bytes - test/stroke-image-ps3-ref.png | Bin 1786 -> 2121 bytes - test/surface-pattern-pdf-argb32-ref.png | Bin 14880 -> 0 bytes - test/surface-pattern-pdf-ref.png | Bin 0 -> 15996 bytes - test/surface-pattern-ps2-argb32-ref.png | Bin 2520 -> 0 bytes - test/surface-pattern-ps2-ref.png | Bin 0 -> 2364 bytes - test/surface-pattern-ps3-argb32-ref.png | Bin 2520 -> 0 bytes - test/surface-pattern-ps3-ref.png | Bin 0 -> 2364 bytes - test/surface-pattern-scale-down-pdf-argb32-ref.png | Bin 1565 -> 2386 bytes - test/surface-pattern-scale-down-ps2-argb32-ref.png | Bin 1400 -> 0 bytes - test/surface-pattern-scale-down-ps2-ref.png | Bin 0 -> 1324 bytes - test/surface-pattern-scale-down-ps3-argb32-ref.png | Bin 1400 -> 0 bytes - test/surface-pattern-scale-down-ps3-ref.png | Bin 0 -> 1324 bytes - test/surface-pattern-scale-down.c | 3 +- - test/surface-pattern-scale-up-pdf-argb32-ref.png | Bin 3886 -> 4247 bytes - test/surface-pattern-scale-up-pdf-rgb24-ref.png | Bin 0 -> 4247 bytes - test/surface-pattern-scale-up-ps2-argb32-ref.png | Bin 1011 -> 0 bytes - test/surface-pattern-scale-up-ps2-ref.png | Bin 0 -> 943 bytes - test/surface-pattern-scale-up-ps3-argb32-ref.png | Bin 1011 -> 0 bytes - test/surface-pattern-scale-up-ps3-ref.png | Bin 0 -> 943 bytes - test/surface-pattern-scale-up-ref.png | Bin 3825 -> 4061 bytes - test/surface-pattern-scale-up.c | 6 ++- - test/surface-pattern.c | 6 ++- - test/xlib-surface-source-ps2-ref.png | Bin 0 -> 376 bytes - test/xlib-surface-source-ps3-ref.png | Bin 0 -> 376 bytes - 52 files changed, 98 insertions(+), 30 deletions(-) - -commit 2c53bdb82a955c672c8fee2b1b4c991af2654ae0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 21:12:53 2008 +0100 - - [paginated] Emit fallback images using FILTER_NEAREST. - - Fallback images should (in theory) be emitted at native resolution, so - disable filtering to avoid introducing potential artifacts into cairo's - ideal output. - - src/cairo-paginated-surface.c | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit f03d3f9f7f923730cdc4c5f21364f752f705086a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 19:24:29 2008 +0000 - - [boilerplate] Remove #if VERSION>1.9.0 - - Remove the obsolete #if statement. - - boilerplate/cairo-boilerplate.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit ef98eb26f7484019b023cd4c93dce44f23e3a594 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 19:23:17 2008 +0000 - - [test] Reenable device offset testing. - - Restore device offset testing that was temporarily disable in the run up - to the 1.8 release. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4f2f46ef1bd793a712df045178b3d00d027e3ba6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 19:14:07 2008 +0000 - - Restore the ability to choose the internal font. - - Behdad wants to include the feature with 1.10, so we enable it as early as - possible in 1.9 dev cycle to generate as much feedback as possible. - - The first change is to use "<cairo>" as being a name unlikely to clash - with any real font names. - - This reverts commits: - a824d284be23793a5c48b9ae833dcb7b2d5fff80, - 292233685534aed712dfd45e8ccf498b792ce496, - e0046aaf417a61da008dc6374871fa3687ba94ab, - f534bd549e1e2283735d1eabb60c015a5949a735. - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/twin.c | 50 +++++++++++++++++++++++++++++++++++++++ - src/cairo-font-face.c | 6 +++- - src/cairoint.h | 1 + - test/.gitignore | 1 + - test/Makefile.am | 6 ++++ - test/twin-ps2-ref.png | Bin 0 -> 1167 bytes - test/twin-ps3-ref.png | Bin 0 -> 1167 bytes - test/twin-ref.png | Bin 0 -> 1836 bytes - test/twin-svg11-ref.png | Bin 0 -> 1773 bytes - test/twin-svg12-ref.png | Bin 0 -> 1773 bytes - test/twin.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++ - 14 files changed, 125 insertions(+), 2 deletions(-) - -commit 52c3fc58b52c77282998f9ad75657a6bec5956f8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 13:04:37 2008 +0100 - - [tessellator] Simplify dequeuing by using a sentinel value. - - Instead of maintaining an index and comparing it to the count, just mark - the last startstop event with NULL and stop dequeuing events upon seeing - that sentinel value. (Removes an unreadable line, and cachegrind hints - that it may be a tiny bit faster.) - - src/cairo-bentley-ottmann.c | 32 ++++++++++++++++---------------- - 1 files changed, 16 insertions(+), 16 deletions(-) - -commit ef9e0a5d1d74ac92a1fcde5a657c866a8e6509e6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 22:09:37 2008 +0100 - - [tessellator] Use a combsort for sorting the event queue. - - In my experiments using cairo-perf, the inlined combsort is ~20% quicker - than the library qsort. - - src/Makefile.sources | 1 + - src/cairo-bentley-ottmann.c | 39 ++++++++++++----------- - src/cairo-combsort-private.h | 71 ++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 92 insertions(+), 19 deletions(-) - -commit b1461308416fa83d1de0016a9d4804b68a1f1d8f -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Oct 30 14:18:18 2008 -0400 - - [Makefile.am.releasing] Symlink /manual and /cairo-manual.tar.gz only for releases - - And not for snapshots. Also symlink /cairo-manual-X.Y.Z.tar.gz for all - versions. - - build/Makefile.am.releasing | 13 +++++++++++-- - 1 files changed, 11 insertions(+), 2 deletions(-) - -commit e3a7f522a6b96729b2a0122f8c430c24dc17fc5a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 23:33:32 2008 +0100 - - [tessellator] Perform cheap checks before computing intersect. - - First check if we can reject the intersection without having to perform - the full divides, based on analysing: - t * (ady*bdx - bdy*adx) = bdy * (ax - bx) - bdx * (ay - by) - s * (ady*bdx - bdy*adx) = ady * (ax - bx) - adx * (ay - by) - and excluding the result if by inspection we know that - (s, t) <= 0 || (s, t) => 1. - - Doing so virtually eliminates all division and speeds up the strokes (when - performing self-intersection elimination using the tessellator) perf cases - by about 5%. - - src/cairo-bentley-ottmann.c | 51 ++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 50 insertions(+), 1 deletions(-) - -commit 553fde4bb3e913de7e26bf416166d69bae4d02e1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 4 13:15:08 2008 +0100 - - [tessellator] Simplify special cases of edges to compare. - - Use our prior knowledge of the inputs and trivial conditions to simplify - the edge equations and in many common conditions, such as vertical edges - and common points, reduce the operations down to a just returning the - non-degenerate 32 bit value. This adds an overhead of a few conditionals, - but on the fast paths we actually generate fewer branches and many fewer - arithmetic operations such that it improves performance of the fill - performance tests by around 10%. - - src/cairo-bentley-ottmann.c | 136 ++++++++++++++++++++++++++++++++++--------- - 1 files changed, 108 insertions(+), 28 deletions(-) - -commit cc109df2a70e953d71e3e6fc4e6e54cce4ba0d47 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 15:50:20 2008 +0000 - - [test] Update .gitignore - - Add a couple of new programs to gitignore. - - test/.gitignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7d546bba213c3b89404bb3c58a5665343abfcd51 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 29 15:46:10 2008 +0000 - - [xlib] Eliminate shadowed variable. - - Cleanup a minor -Wshadow warning. - - src/cairo-xlib-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit e3388b8180e38f79e0d5b66cc640c3d5c37db2a8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 29 15:45:09 2008 +0000 - - [cff-subset] Eliminate shadowed variable. - - Cleanup a minor -Wshadow warning. - - src/cairo-cff-subset.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3e18114aff21acfa73a7d13a419719375ae9b5a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 29 15:43:23 2008 +0000 - - [user-font] Eliminate shadowed variable - - Cleanup a minor -Wshadow warning. - - src/cairo-user-font.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit d073537e82b57738068a7e1cf1d36ce452876804 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 29 15:41:44 2008 +0000 - - [scaled-font] Eliminate shadowed variable. - - Cleanup a minor -Wshadow warning. - - src/cairo-scaled-font.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 6429e3f39468ef4f865681b3b5988d35906deeb0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 17:38:09 2008 +0000 - - [xlib] Only set Picture clip as necessary. - - Only set ClipRectangles on a new Picture, avoiding redundant calls to - clear the non-existent ClipMask otherwise. - - src/cairo-xlib-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit cd45258c5bf6a06f7bd3f2bfaf928e423a9b70e1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 16:54:10 2008 +0000 - - [xlib] Only clear the GC clip mask as necessary. - - Avoid redundant calls to XSetClipMask() for clean GCs. - - src/cairo-xlib-private.h | 10 ++++++++-- - src/cairo-xlib-screen.c | 8 ++++++-- - src/cairo-xlib-surface.c | 7 ++++--- - 3 files changed, 18 insertions(+), 7 deletions(-) - -commit d384f864992fbf7513446a70158135a08e704678 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 16:33:51 2008 +0000 - - [xlib] Propagate real status from get_screen_info(). - - Return the real error from _cairo_xlib_screen_info_get() in order to avoid - having to create a fake NO_MEMORY error. - - src/cairo-xlib-private.h | 6 +++- - src/cairo-xlib-screen.c | 66 +++++++++++++++++++++++++-------------------- - src/cairo-xlib-surface.c | 6 ++-- - 3 files changed, 44 insertions(+), 34 deletions(-) - -commit e25b106e9c33e220fb104afb0929e766647b6de9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 16:27:58 2008 +0000 - - [xlib] Propagate real status from get_display() - - Avoid throwing away the error and inventing a new NO_MEMORY error for - _cairo_xlib_display_get(). - - src/cairo-xlib-display.c | 13 ++++++++----- - src/cairo-xlib-private.h | 4 ++-- - src/cairo-xlib-surface.c | 14 ++++++++------ - 3 files changed, 18 insertions(+), 13 deletions(-) - -commit 2555f83b11ee23829cfdeaae703420ca3e572fa1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 16:22:49 2008 +0000 - - [xlib] Avoid repeated calls to XRenderQueryVersion - - Use the value determined during display initialisation in order to avoid - redundant XRenderQueryFormats requests. - - src/cairo-xlib-display.c | 6 ++++-- - src/cairo-xlib-private.h | 2 ++ - src/cairo-xlib-surface.c | 7 ++----- - 3 files changed, 8 insertions(+), 7 deletions(-) - -commit 0d0c6a199c5b631299c72dce80d66ac0f4936a64 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 26 12:53:29 2008 +0000 - - [matrix] Optimise invert for simple scaling|translation matrices. - - The matrix is quite often just a simple scale and translate (or even - identity!). For this class of matrix, we can skip the full adjoint - rearrangement and determinant calculation and just compute the inverse - directly. - - src/cairo-matrix.c | 26 +++++++++++++++++++++++++- - 1 files changed, 25 insertions(+), 1 deletions(-) - -commit 74876b00cd969d5cfc209fa903dfad50bda59361 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 25 11:33:52 2008 +0100 - - [xlib] Exploit compaction of XRenderFillRectangle() - - libXrender amalgamates sequences of XRenderFillRectangle() into a single - XRenderFillRectangles request (when permissible). Since it is common for a - cairo application to draw rectangles individually in order to exploit fast - paths within cairo [rectilinear fills], it is a reasonably common pattern. - - src/cairo-xlib-surface.c | 50 +++++++++++++++++++++++++++++---------------- - 1 files changed, 32 insertions(+), 18 deletions(-) - -commit 64726ccfb99ba964420f3a840fd707998927e902 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 24 17:06:04 2008 +0100 - - [traps] Whitespace. - - Fixup whitespace in line with CODING_STYLE and rest of file. - - src/cairo-region.c | 6 +++--- - src/cairo-traps.c | 33 ++++++++++++++++++++------------- - 2 files changed, 23 insertions(+), 16 deletions(-) - -commit d5543005e7b7cc08f97578f301182ef4807a05fe -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 24 09:00:45 2008 +0100 - - [surface] Only copy font options if the target surface has them. - - No need to copy font options if the similar surface is from the same - backend and no special options have been applied by the user. Doing so - breaks lazy initialisation of backend specific options. - - src/cairo-surface.c | 18 +++++++++++------- - 1 files changed, 11 insertions(+), 7 deletions(-) - -commit a0023758104b700751ba8d7a66d75db139eea6cb -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 24 08:39:29 2008 +0100 - - [xlib] Defer querying of font options until first use - - Constructing the font options cause the initialisation of Xlc and invoke - several round-trips to the X server, significantly delaying the creation - of the first surface. By deferring that operation until the first use of - fonts then we avoid that overhead for very simple applications (like the - test suite) and should improve start-up latency for larger application. - - src/cairo-xlib-private.h | 4 ++++ - src/cairo-xlib-screen.c | 28 +++++++++++++++++++++++++--- - src/cairo-xlib-surface.c | 2 +- - 3 files changed, 30 insertions(+), 4 deletions(-) - -commit 6706590d4e7ad19dae0b8e3efe6f573d5688e19a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 16:22:48 2008 +0100 - - [pattern] Reduce likelihood of range overflow with large downscaling. - - Exploit the auxiliary offset vector in the attributes to reduce - likelihood of range overflow in the translation components when converting - the pattern matrix to fixed-point pixman_matrix_t. - - An example of this is bug 9148 - Bug 9148 - invalid rendering when painting large scaled-down surfaces - (https://bugs.freedesktop.org/show_bug.cgi?id=9148) - but the issue is perhaps even more likely with high resolution fallback - images. - - src/cairo-pattern.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit c0af8c70635d641fc5770afc0cd6e9285122fd72 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 16:49:23 2008 +0100 - - [pattern] Tweak REFLECT HACK - - In order to workaound a directfb bug, tweak the reflect->repeat pattern so - that it covers the destination rectangle. Although the number of paint() - increases, the number of read/written pixels remain the same so that - performance should not deteriorate, but instead be improved by using a - cloned source. The early return of the REFLECT surface is discarded so - that the latter optimisations for surface sources can be applied. One side - effect of this is that acquire_source_image() is removed due to its lax - reference counting which thereby exposes the ROI optimisations for image - destinations as well. - - src/cairo-pattern.c | 279 +++++++++++++++++++++++++-------------------------- - src/cairoint.h | 1 - - 2 files changed, 136 insertions(+), 144 deletions(-) - -commit 234623b3d5884b02a0619de8ddd57bbed36ef4fd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 14:55:26 2008 +0100 - - [pattern] Support unbounded surfaces. - - An unbounded surface should just report an infinite pattern extent and not - return UNSUPPORTED from _cairo_pattern_get_extents(). - - src/cairo-pattern.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2836be6f7565684e86b3cc8a3d2db4ba690b3718 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 14:42:47 2008 +0100 - - Cleanup 'status && status != UNSUPPORTED' - - Replace instances of 'status && status != UNSUPPORTED' with the more - readable _cairo_status_is_error(). - - src/cairo-analysis-surface.c | 14 +++++++------- - src/cairo-clip.c | 4 ++-- - src/cairo-pdf-surface.c | 8 ++++---- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-scaled-font-subsets.c | 4 ++-- - 5 files changed, 17 insertions(+), 17 deletions(-) - -commit 13ba43eb8ffc3bb6c8881d91824102a8df86d928 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 12:28:25 2008 +0100 - - [matrix] Optimize finding the bounding box under an orthogonal matrix. - - We frequently need to find the bounds of a pattern under an identity - matrix, or a simple scale+translation. For these cases we do not need to - transform each corner and search for the bounds as the matrix is x/y - separable and so allows us to inspect the results for the extreme x/y - points independently. - - src/cairo-matrix.c | 42 +++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 41 insertions(+), 1 deletions(-) - -commit 6ed957fc242d7890117f4dea121c03ec2523470c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 22:02:05 2008 +0100 - - [gstate] Use _cairo_pattern_black for the default source. - - Avoid allocating a default source pattern by using the static black pattern - object. The one complication is that we need to ensure that the static - pattern does leak to the application, so we replace it with an allocated - solid pattern within _cairo_gstate_get_source(). - - src/cairo-gstate.c | 9 +++++++-- - src/cairo-pattern.c | 12 +++++++----- - src/cairo.c | 6 +++--- - src/cairoint.h | 2 +- - 4 files changed, 18 insertions(+), 11 deletions(-) - -commit 794460186459981cd43ca38f3eba07e3f6bf8908 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 19:24:44 2008 +0100 - - [pattern] Avoid needless copying of patterns. - - Only copy the pattern if we need to modify it, e.g. preserve a copy in a - snapshot or a soft-mask, or to modify the matrix. Otherwise we can - continue to use the original pattern and mark it as const in order to - generate compiler warnings if we do attempt to write to it. - - src/cairo-analysis-surface.c | 37 ++++---- - src/cairo-directfb-surface.c | 33 +++---- - src/cairo-glitz-surface.c | 42 ++++----- - src/cairo-gstate.c | 117 ++++++++++++++-------- - src/cairo-image-surface.c | 6 +- - src/cairo-meta-surface.c | 12 +- - src/cairo-paginated-surface.c | 12 +- - src/cairo-pattern.c | 70 +++++-------- - src/cairo-pdf-surface.c | 88 +++++++++++------ - src/cairo-ps-surface.c | 39 ++++---- - src/cairo-quartz-surface.c | 10 +-- - src/cairo-scaled-font.c | 2 +- - src/cairo-sdl-surface.c | 22 ++-- - src/cairo-surface-fallback-private.h | 45 +++++---- - src/cairo-surface-fallback.c | 65 ++++++------ - src/cairo-surface.c | 181 ++++++++++++++++++++------------- - src/cairo-svg-surface.c | 50 +++++----- - src/cairo-type3-glyph-surface.c | 18 ++-- - src/cairo-win32-font.c | 26 +++--- - src/cairo-win32-printing-surface.c | 51 +++++----- - src/cairo-win32-private.h | 2 +- - src/cairo-win32-surface.c | 6 +- - src/cairo-xcb-surface.c | 42 ++++---- - src/cairo-xlib-surface.c | 14 ++-- - src/cairoint.h | 74 +++++++------- - src/test-meta-surface.c | 28 +++--- - src/test-paginated-surface.c | 40 ++++---- - 27 files changed, 605 insertions(+), 527 deletions(-) - -commit 9d2189afbd2aa1413f620a4d35016ef3be3fc0e9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 18:29:02 2008 +0100 - - [pattern] Do not recompute the inverse if setting an identical matrix. - - More micro-optimisation. - - src/cairo-pattern.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2c277ddbea42222130b8b1c2a2b4934503b40188 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 18:17:49 2008 +0100 - - [matrix] Avoid error correction overhead for translation matrices. - - We can only correct rounding errors between cairo and pixman matrices for - scaled matrices - so skip the inversion and point transformation overhead - for simple translation matrices. - - src/cairo-matrix.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 57a1d932f3e9d79f3259a536ec2f45f020d46de5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 18:12:10 2008 +0100 - - [array] Rearrange user_data_fini() to optimize common case. - - Micro-optimisation to avoid the _cairo_array_index() for the common case - of 0 elements. - - src/cairo-array.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 2852127c72fa6cfe246e6ece0433be6c3f2a93ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 18:04:30 2008 +0100 - - [cairoint] Add a few cairo_pure. - - Start marking up the prototypes with function attributes - first the - obvious pure functions. - - src/cairoint.h | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit cf072c7203dfce989ee60e56352f548329d3d616 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 14:35:49 2008 +0000 - - [sdl] Add new backend. - - Add a new backend to allow easy interoperability with the Simple - DirectMedia Layer. - - boilerplate/Makefile.sources | 3 + - boilerplate/cairo-boilerplate-sdl-private.h | 56 ++++ - boilerplate/cairo-boilerplate-sdl.c | 69 +++++ - boilerplate/cairo-boilerplate.c | 13 + - build/configure.ac.features | 1 + - configure.ac | 8 + - src/Makefile.sources | 3 + - src/cairo-sdl-surface.c | 418 +++++++++++++++++++++++++++ - src/cairo-sdl.h | 54 ++++ - src/cairo.h | 4 +- - 10 files changed, 628 insertions(+), 1 deletions(-) - -commit 31ada1ea15d14c0a843728b105340c270e4e4613 -Merge: 30f2df1 ab15d76 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 16:56:07 2008 +0000 - - Merge branch '1.8' - -commit ab15d7627506a837fea7101661425bb923ef5b4f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 16:54:23 2008 +0000 - - [test] Remove XFAIL from user-font-mask - - user-font-mask should PASS modulo the scaling anomalies in the external - renderers, so remove it from the XFAIL list. - - test/Makefile.am | 15 ++++++--------- - test/user-font-mask-pdf-ref.png | Bin 0 -> 1927 bytes - test/user-font-mask-ps2-ref.png | Bin 0 -> 1927 bytes - test/user-font-mask-ps3-ref.png | Bin 0 -> 1927 bytes - test/user-font-mask-svg11-ref.png | Bin 0 -> 2224 bytes - 5 files changed, 6 insertions(+), 9 deletions(-) - -commit 540f555840ba4076e3ab86669daf9bee5695afa2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 14:38:44 2008 +0100 - - [analysis] Only limit to mask extends if bounded by mask. - - The extents of cairo_mask() is only limited to the mask if the operation - is bounded by the mask. - - src/cairo-analysis-surface.c | 8 ++++++-- - test/clip-operator-pdf-argb32-ref.png | Bin 11145 -> 12125 bytes - test/clip-operator-pdf-rgb24-ref.png | Bin 6530 -> 7367 bytes - test/operator-clear-pdf-argb32-ref.png | Bin 1438 -> 1614 bytes - test/operator-clear-pdf-rgb24-ref.png | Bin 1170 -> 1402 bytes - test/operator-source-pdf-argb32-ref.png | Bin 4694 -> 5149 bytes - test/operator-source-pdf-rgb24-ref.png | Bin 3848 -> 4354 bytes - 7 files changed, 6 insertions(+), 2 deletions(-) - -commit 4b2998893930e4bab19646e6f0a0c8d2a47f12a2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 14:34:30 2008 +0100 - - Review users of cairo_rectangle_int_t for incorrect unsigned promotion. - - Adrian Johnson discovered cases where we mistakenly compared the result - of unsigned arithmetic where we need signed quantities. Look for similar - cases in the users of cairo_rectangle_int_t. - - src/cairo-analysis-surface.c | 48 ++++++++++++++++++++++------------- - src/cairo-clip.c | 43 ++++++++++++++++--------------- - src/cairo-gstate.c | 4 +- - src/cairo-pattern.c | 13 ++++++--- - src/cairo-rectangle.c | 6 +++- - src/cairo-region-private.h | 3 +- - src/cairo-region.c | 3 +- - src/cairo-surface-fallback.c | 31 +++++++++++++++-------- - src/cairo-surface.c | 27 +++++++++++--------- - src/cairo-win32-surface.c | 4 +- - src/cairo-xcb-surface.c | 56 +++++++++++++---------------------------- - src/cairo-xlib-surface.c | 52 ++++++++++++-------------------------- - src/cairoint.h | 2 +- - 13 files changed, 144 insertions(+), 148 deletions(-) - -commit 0e4156121f05b14f800289ea34c5382de1f20869 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 13:37:41 2008 +0100 - - [rectangle] Fix unsigned promotion whilst computing intersect. - - _cairo_rectangle_intersect() incorrectly allows unsigned promotion during - its arithmetic. - - src/cairo-rectangle.c | 31 +++++++++++++++++-------------- - src/cairoint.h | 3 ++- - 2 files changed, 19 insertions(+), 15 deletions(-) - -commit 2464b8a0a9f7db7421c257eb4e3ac0d98af34761 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 13:36:19 2008 +0100 - - [pattern] Allow the projected surface extents to be negative. - - In order to handle projection of analysis surface with user-fonts we need - to accommodate patterns extending into negative coordinate space. - - src/cairo-pattern.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit d5d29075bdbb7f412fa6dc182573da18fd81af54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 23 15:24:13 2008 +0100 - - [gstate] Allocate temporary variable for backend_to_user transform. - - _cairo_gstate_backend_to_user_rectangle() requires that its input - arguments are non-NULL and describe the input rectangle to be transformed. - However, we were passing through output parameters from the public API - which were allowed to be NULL. So we need to allocate temporary variables - in which to compute the output rectangle, but only copy them as required. - - src/cairo-gstate.c | 69 +++++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 50 insertions(+), 19 deletions(-) - -commit 30f2df1dec419a10408b53ecd26cebfcf607bf27 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 30 08:40:35 2008 -0700 - - Fix typo in bug URL. - - Thanks to AndrewR in IRC for pointing out the typo. - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b598dcd1b1726184506de6a9d253f6091a000922 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 30 08:29:51 2008 -0700 - - Fix release-publish to also update the current manual. - - That is, the vesion that appears as: - - http://cairographics.org/manual - and: - http://cairographics.org/cairo-manual.tar.gz - - It was silly that we previously required a manual step to - upload the documentation (which we regularly forgot to do) - and that it uploaded with a date in the name rather than a - version. So we just drop the old doc-publish Makefile target - now as it's just not useful anymore. - - RELEASING | 3 ++- - build/Makefile.am.releasing | 18 ++++-------------- - 2 files changed, 6 insertions(+), 15 deletions(-) - -commit 91183a503e3b7bed11e0149783d3974e26daf623 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 30 08:26:55 2008 -0700 - - RELEASING: Mention that a versioned manual is uploaded. - - RELEASING | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 5037fa238e820419824773fa2ea475c949e23a8c -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 30 08:23:06 2008 -0700 - - Increment version to 1.9.1 - - We're finalyl opening the 1.9 development series in order to land - lots of exciting new features that people have been working on. - - cairo-version.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d53537e8b5e3a8345983d8a0529cb230fa2886d1 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Oct 30 08:20:59 2008 -0700 - - Increment version to 1.8.3 after the 1.8.2 release. - - Thanks to Chris Wilson (who else?) for the last-minute bug fix. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f7c958d97221375fdcbb6c58c3b58c07676b7589 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 21:02:04 2008 -0700 - - Increment cairo version to 1.8.2. - - Hurrah! We're finally there. - - cairo-version.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 42711a5586cba5db5451ce2400ee5fe655700391 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 09:54:47 2008 +0000 - - [xlib] Fix _draw_image_surface() with opaque images. - - If the image was opaque with no alpha channel, we filled the output alpha - with 0. Typically, the destination surface for dithering is an RGB window, - so this bug went unnoticed. However, test/xlib-expose-event is an example - where we generate an intermediate alpha-only pixmap for use as a stencil - and this was failing as the mask was left completely transparent. The - simple solution is to ensure that for opaque images, the output alpha is - set to the maximum permissible value. - - src/cairo-xlib-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit c3940d342ac506055c2ce6b7e9b27f92d8a63999 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 09:59:48 2008 +0000 - - [xlib] whitespace - - Tweak the whitespace to lose some unnecessary line wrapping, casts and - blanks. - - src/cairo-xlib-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit e51648b601de274559800c63575c7f7e0288f596 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Oct 30 04:43:45 2008 -0400 - - [test/xlib-expose-event] Save the output image to disk - - test/xlib-expose-event.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f534bd549e1e2283735d1eabb60c015a5949a735 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 21:28:56 2008 -0700 - - Remove test/twin-ref.png. - - I missed this in a previous commit, (I think I had used a - pattern of twin-*-ref.png which of course didn't match - this file). - - test/twin-ref.png | Bin 1836 -> 0 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit cf97966c07bc64ff4b169d1d8239407883a26747 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 21:01:01 2008 -0700 - - NEWS: Finish the entry for the 1.8.2 release. - - Add some summarizing paragraphs and organize bug-fixes and optimizations - into separate sections. - - NEWS | 93 ++++++++++++++++++++++++++++++++++++++++++++---------------------- - 1 files changed, 62 insertions(+), 31 deletions(-) - -commit b6741cffef6e86d59fa4809d32de14b9c5e8afbf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 01:15:45 2008 +0000 - - [NEWS] Spot another couple of typos. - - Proof-reading is difficult, even with the squiggly lines. - - NEWS | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit d20cc827791e177eb73a9003c6704b7a5bc49f71 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 30 01:06:08 2008 +0000 - - [NEWS] Correct a couple of typos. - - Whilst Carl's not looking, fix a couple of typos -- in particular the one - calling me a bug! ;-) - - NEWS | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 0ceda81dfdfc4adcec28c71be7822caa0627d818 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 17:38:36 2008 -0700 - - NEWS: Add long list of bugs fixed for 1.8.2. - - (Still need to add a paragraph or two summarizing the release.) - - NEWS | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 110 insertions(+), 0 deletions(-) - -commit e0046aaf417a61da008dc6374871fa3687ba94ab -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 16:25:00 2008 -0700 - - Remove twin perf case. - - This performance test relied on the recently-removed ability - to select the internal twin-based font family with a name of - "cairo". - - Presumably, we'll want to bring this performance case back when - some other means of requesting that font face is added. - - perf/Makefile.am | 1 - - perf/cairo-perf.c | 1 - - perf/cairo-perf.h | 1 - - perf/twin.c | 50 -------------------------------------------------- - 4 files changed, 0 insertions(+), 53 deletions(-) - -commit 292233685534aed712dfd45e8ccf498b792ce496 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 16:25:00 2008 -0700 - - Remove twin test case. - - This test relied on the recently-removed ability to select - the internal twin-based font family with a name of "cairo". - - Presumably, we'll want to bring this test case back when - some other means of requesting that font face is added. - - test/.gitignore | 1 - - test/Makefile.am | 6 ---- - test/twin-ps2-ref.png | Bin 1167 -> 0 bytes - test/twin-ps3-ref.png | Bin 1167 -> 0 bytes - test/twin-svg11-ref.png | Bin 1773 -> 0 bytes - test/twin-svg12-ref.png | Bin 1773 -> 0 bytes - test/twin.c | 60 ----------------------------------------------- - 7 files changed, 0 insertions(+), 67 deletions(-) - -commit a824d284be23793a5c48b9ae833dcb7b2d5fff80 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 16:21:42 2008 -0700 - - Remove the ability to select the internal font face with a name of "cairo". - - It's not fair to steal this name from the namespace of family names. - There are definitely cairo.ttf files that exist out there, and people - may already be using these, (or may use them in the future), with - cairo_select_font_face and a family name of "cairo". - - In place of this, we'll want to come up with some other new, and - documented API for selecting the internal font face. - - src/cairo-font-face.c | 6 ++---- - src/cairoint.h | 1 - - 2 files changed, 2 insertions(+), 5 deletions(-) - -commit f039da8d9172a6fb60082901c8dc56c7159ecd24 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 16:17:24 2008 -0700 - - Add doltcompile and doltlibtool to .gitignore. - - These generated files were recently added to our build system. - We definitely don't want to see them in git-status output. - - .gitignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 81439b3bc8656b34c13b3cc7b5b6a9f03a3c8c54 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 29 16:15:12 2008 -0700 - - Add missing files to CLEANFILES and DISTCLEANFILES. - - Without these files in these lists, "make distcheck" is unhappy. - - Makefile.am | 4 +++- - test/Makefile.am | 9 +++++++++ - 2 files changed, 12 insertions(+), 1 deletions(-) - -commit dd0416f5d47a946498219616f53abdad81d4fc38 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 18:01:09 2008 -0700 - - Add recently added reference images to REFERENCE_IMAGES list. - - This is just part of the make-distcheck routine for me. I know - Behdad added a test to check for missing images in the list, but - it doesn't seem to be getting run automatically as part of - 'make test' nor 'make distcheck', (or if it it, then I'm not - noticing its output). - - test/Makefile.am | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 9cd9644c1d993f86c6eb7bee692fe642d6d280b1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 29 21:56:36 2008 +0000 - - [test] Add a pass-through test. - - Check that colour values are correctly passed through all the backends. - Simple test of the most fundamental functionality. - - test/.gitignore | 1 + - test/Makefile.am | 3 + - test/pass-through-ref.png | Bin 0 -> 221 bytes - test/pass-through-rgb24-ref.png | Bin 0 -> 179 bytes - test/pass-through.c | 99 +++++++++++++++++++++++++++++++++++++++ - 5 files changed, 103 insertions(+), 0 deletions(-) - -commit cec689eab628b59ee1d69e241c5d336760304ea0 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 17:18:34 2008 -0700 - - RELEASING: Suggest running 'make distcheck' against Xvfb. - - This avoids hitting driver-specific bugs in the X server, and is - better than doing 'DISPLAY= make distcheck' which simply disables - all xlib testing completely. - - RELEASING | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 0ca6ba18e398db7ed8f8bca5faa93d48aa3a4878 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 17:15:42 2008 -0700 - - Add note to test/README on running with Xvfb. - - This X server has been tested to run through the test suite with - no unexpected failures, and it avoids hitting any X-driver-specific - bugs. - - test/README | 17 +++++++++++++++++ - 1 files changed, 17 insertions(+), 0 deletions(-) - -commit eed67717649c343e42ce102a4d78a245dba48925 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 17:12:15 2008 -0700 - - Disable the svg12 target in boilerplate. - - This target was added to the boilerplate during 1.8.1. It currently - shows many failures in the test suite. These failures likely fall - into three different classes: - - * Tests needing new svg12-specific reference images - - * Tests exercising bugs in librsvg - - * Tests exercising existing cairo bugs - - We haven't gone through the effort to separate these, but even for - the tests that are exercising actual cairo bugs, these are likely - bugs that existed in the cairo 1.8.0 release and not regressions. - - Because of that, in this commit I'm conditionally disabling the - testing of the svg12 target. As soon as we increment the cairo - version to 1.9.0 or higher, this target will get re-enabled - automatically and we can begin the work to separate the tests as - described above and also fix the bugs. - - boilerplate/cairo-boilerplate.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit a94928ddfa066f6e6824775b9d0b6008f3fcbf26 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 15:55:38 2008 -0700 - - Add svg-specific reference images for the twin test. - - A bit annoying that I have to add the same image as both -svg11 - and -svg12 but that's all the support we have in the current - test suite. I suppose I could avoid doing that by figuring out - why this test case cannot successfully roundtrip through librsvg - and back through cairo. - - test/twin-svg11-ref.png | Bin 0 -> 1773 bytes - test/twin-svg12-ref.png | Bin 0 -> 1773 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 53554ea8892893098b29a27a23c069f0ee584a06 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 15:50:44 2008 -0700 - - Add ps2-specific reference images for trap-clip test. - - These are quite similar to the existing ps3-specific reference images. - I definitely don't see any reason why this output should be considered - a failure. - - test/trap-clip-ps2-argb32-ref.png | Bin 0 -> 5690 bytes - test/trap-clip-ps2-rgb24-ref.png | Bin 0 -> 5617 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 10fd16a05d8549753179ab5cca855539fb7dec94 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 15:41:40 2008 -0700 - - Mark user-font-mask as XFAIL. - - This test is expected to fail due to a couple of known bugs. Chris - has fixes for both bugs, but is holding off on them until after 1.8.2 - to prevent introducing any possible new bugs with his fixes. - - test/Makefile.am | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 655546243f57ae2a5c1813bd45994b18061f1c74 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 15:35:35 2008 -0700 - - Rename user-font-image test to user-font-mask. - - Otherwise the reference image (user-font-image-ref.png) gets - interpreted as an image-specific reference image for the - user-font test case resulting in a bogus failure. - - test/Makefile.am | 4 +- - test/user-font-image-ref.png | Bin 6011 -> 0 bytes - test/user-font-image.c | 254 ------------------------------------------ - test/user-font-mask-ref.png | Bin 0 -> 6011 bytes - test/user-font-mask.c | 254 ++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 256 insertions(+), 256 deletions(-) - -commit 42d2d1b6d3b187b5dbdb630783d7c9bf90c66fb2 -Author: Carl Worth <cworth@cworth.org> -Date: Tue Oct 28 12:48:03 2008 -0700 - - Correct NEWS to say 'release' instead of 'snapshot' for 1.8.0 - - A copy-and-paste bug strikes again. - - NEWS | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 1327ec232cfca675647fb03876487c92fb638354 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 10:00:38 2008 +0000 - - [image] Remove invalid assert. - - The assert can fail for an error surface. - - TODO: Decide what values should be returned from getters for error - surfaces. - - src/cairo-image-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 9481d999df8d399543bdbb45b85bd24b1725bece -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 09:59:01 2008 +0000 - - [image] Check create_for_data() to ensure a valid minimum stride. - - Double check that the user is not being silly by passing in a stride that - is too small for the width. evince/poppler is one such example... - - src/cairo-image-surface.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 88f628b3972819c0f6ce8e5f06d0f7e6abb9d661 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 28 09:11:23 2008 +0000 - - [perf] Fix rectangular case of unaligned-clip. - - Janoos spotted that the unaligned clip actually degenerated to an empty - clip due to a typo when constructing the second rectangle. Simply use a - cairo_rectangle() instead. - - perf/unaligned-clip.c | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - -commit 1522805f39c505ff05231e67de5a6e6686081d46 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 27 20:57:56 2008 -0400 - - [Makefile.am.releasing] Fix typo - - build/Makefile.am.releasing | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3386794d96d2b1616af9db5b7df1fc5c7a5796a7 -Author: Carl Worth <cworth@cworth.org> -Date: Mon Oct 27 14:09:19 2008 -0700 - - Add creation of a versioned manual to the release-publish target. - - This arranges so that a versioned manual will be available of the form: - - http://cairographics.org/manual-X.Y.Z - - for all future releases and snapshots. We're going through the process - of manually doing all former releases, such as: - - http://cairographics.org/manual-1.2.0/ - - which the LSB folks wanted to reference. - - build/Makefile.am.releasing | 27 ++++++++++++++++++--------- - 1 files changed, 18 insertions(+), 9 deletions(-) - -commit a1a7ec6a056fa36389a48c0f53884ae7e92ebc1a -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Oct 27 23:13:05 2008 +1030 - - Change ps to ps3 in test/README - - The ps target no longer exists. - - test/README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 670d942fe3dafbed5ceca234e760f29f793233cb -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Oct 27 23:04:16 2008 +1030 - - Change user-font-image test to use a pattern - - This can be used to expose a bug in _cairo_rectangle_intersect() by - changing: - - fixed_scale = 1024 to 1 in cairo-user-font.c - - and - - cairo_matrix_translate (&matrix, 0, -8) to (&matrix, 0, -9) in - user-font-image.c - - This will cause cairo_text_extents (cr, text, &extents) in - user-font-image.c to return a height of 8388683. - - test/user-font-image-ref.png | Bin 5502 -> 6011 bytes - test/user-font-image.c | 13 +++++++++++-- - 2 files changed, 11 insertions(+), 2 deletions(-) - -commit cdacf55e1b16a6982c681fab212405fc4af4f1db -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Mon Oct 27 22:07:04 2008 +1030 - - Add user-font-image test - - Draws bitmap glyphs using cairo_mask(). This test exposes a bug in the - calculation of the glyph extents. - - test/Makefile.am | 2 + - test/user-font-image-ref.png | Bin 0 -> 5502 bytes - test/user-font-image.c | 245 ++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 247 insertions(+), 0 deletions(-) - -commit 22e2dac819de3c082424ebf3ce8f64c9c4797e8a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 26 10:21:37 2008 +0000 - - [stroke] Ensure we record the first face for a dashed path. - - If the first face was outside the bounds then we skipped it, and so a - close would incorrectly connect to the first visible face. - - src/cairo-path-stroke.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 64fb3290f00bafc4a10e6432226f669a51fa0bc6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 26 09:54:03 2008 +0000 - - [stroke] _cairo_stroker_line_to_dashed() whitespace - - A couple of comment spelling mistakes and rearrange whitespace to more - closely match CODING_STYLE. - - src/cairo-path-stroke.c | 57 ++++++++++++++++++++++++++++++++-------------- - 1 files changed, 39 insertions(+), 18 deletions(-) - -commit 88935947d11762c91e282fb129c493afc6f2f1a6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 26 08:19:31 2008 +0000 - - [test] Add leaky-dashed-stroke - - A test case for a leak whilst closing a dashed stroke extracted from the - report by Jeff Muizelaar who found the artifact whilst looking at - firefox http://people.mozilla.com/~jmuizelaar/BerlinDistricts-check.svg - - test/.gitignore | 1 + - test/Makefile.am | 4 + - test/leaky-dashed-stroke-ps2-ref.png | Bin 0 -> 5511 bytes - test/leaky-dashed-stroke-ps3-ref.png | Bin 0 -> 5511 bytes - test/leaky-dashed-stroke-ref.png | Bin 0 -> 9214 bytes - test/leaky-dashed-stroke.c | 174 ++++++++++++++++++++++++++++++++++ - 6 files changed, 179 insertions(+), 0 deletions(-) - -commit 195fd27cc64c7aaf18a6d48ccd9d94548331fd4d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 22:04:53 2008 +0100 - - [build] Use AC_LINK_IFELSE for testing linker flags. - - Richard Hult reported that -Wl,--allow-shlib-undefined was incorrectly - being identified as supported by gcc under Mac OS/X: - - configure:25103: checking whether gcc supports -Wl,--allow-shlib-undefined - configure:25117: gcc -c -Werror -Wl,--allow-shlib-undefined conftest.c - >&5 - i686-apple-darwin9-gcc-4.0.1: --allow-shlib-undefined: linker input file - unused because linking not done - - So instead of just checking whether the compiler accepts the flag, check - that we can actually link a dummy file. - - build/aclocal.cairo.m4 | 20 ++++++++++++++++++++ - build/configure.ac.warnings | 2 +- - 2 files changed, 21 insertions(+), 1 deletions(-) - -commit d692284ab8f90d7402621f1a07aaddcf11d87ef5 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Oct 23 01:45:35 2008 -0400 - - [test/user-font] Exercise glyph 0 - - Previously there was a bug in cairo and/or poppler causing glyph 0 of - user fonts to not show up. This is fixed now, so we exercise glyph 0. - - test/user-font.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit e6219f7116311d999054dc31df081aa66a0cd2d3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 17:53:05 2008 +0100 - - [win32] Correct error paths in text_to_glyphs(). - - Carl spotted that 1db894 introduced an error into text_to_glyphs() such - that following an allocation error the code would attempt to thaw an - unfrozen glyph cache, leading to an attempt to unlock an unlocked mutex - - which causes a deadlock under win32. - - src/cairo-win32-font.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 09651a1c1a4856607423e9b06c1f7c397ba4f304 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 22:39:48 2008 +0100 - - Twin perf case - - perf/Makefile.am | 3 ++- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/twin.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 54 insertions(+), 1 deletions(-) - -commit 954ebacb71071c53c4e4092b469417f01478bc2d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 15:43:56 2008 +0100 - - Map toy font face to implementation. - - Quartz fonts and user fonts use an indirect font face when creating a - scaled font for the toy font face. This means that they insert a scaled - font into the font map that has a different font face to the one that is - initially searched upon. The result is that when we try to create an - identical scaled font, we fail to find the existing scaled font and - attempt to insert a duplicate into the hash table - which triggers an - assert. - - In order to avoid creating duplicate fonts, we add a new method to the - font backends that allows cairo_scaled_font_create() to peek at the - font_face that will be used to actually implement the scaled font - constructor - thus we are able to use the correct font_face as part of the - hash key. - - src/cairo-font-face.c | 34 +++++++++++++++++++++++++++++ - src/cairo-ft-font.c | 2 + - src/cairo-quartz-font.c | 55 +++++++++++++++++++++++++++++++++++++--------- - src/cairo-scaled-font.c | 11 ++++++++- - src/cairo-user-font.c | 37 ++++++++++++++++++++++++------- - src/cairo-win32-font.c | 2 + - src/cairoint.h | 8 ++++++ - 7 files changed, 128 insertions(+), 21 deletions(-) - -commit 5e4a1cb0b830f069d99c9512563c82ad628587e3 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Wed Oct 22 21:36:42 2008 +1030 - - Don't add a notdef glyph to Type 3 font subsets - - This allows user-fonts to use glyph 0 when embedding in PS/PDF. - According to ISO32000 Type 3 fonts do not require a notdef glyph. - - src/cairo-pdf-surface.c | 19 +++------- - src/cairo-ps-surface.c | 21 ++++------- - src/cairo-scaled-font-subsets.c | 59 ++++++++++++++++++------------ - src/cairo-type3-glyph-surface-private.h | 6 --- - src/cairo-type3-glyph-surface.c | 16 -------- - 5 files changed, 48 insertions(+), 73 deletions(-) - -commit 170686d4b0ed913a1a175f3f354ec5796814b416 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 22 01:01:06 2008 +0100 - - [cairoint] Remove the duplicate prototype. - - In the previous commit I added comments and a duplicate prototype. Remove - the duplicate - but keep the comments. - - src/cairoint.h | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 1db8949f2baf1e620e1d5ef73a66de211420bd0a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 22:48:17 2008 +0100 - - Ensure that the scaled font is frozen for the lifetime of the scaled glyph. - - After discussing the scaled font locking with Behdad, it transpired that it - is not sufficient for a font to be locked for the lifetime of a scaled glyph, - but that the scaled font's glyph cache must be frozen for the glyph' - lifetime. If the cache is not frozen, then there is a possibility that the - glyph may be evicted before the reference goes out of scope i.e. the glyph - becomes invalid whilst we are trying to use it. - - Since the freezing of the cache is the stronger barrier, we remove the - locking/unlocking of the mutex from the backends and instead move the - mutex acquisition into the freeze/thaw routines. Then update the rule on - acquiring glyphs to enforce that the cache is frozen and review the usage - of freeze/thaw by all the backends to ensure that the cache is frozen for - the lifetime of the glyph. - - src/cairo-directfb-surface.c | 4 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-gstate.c | 4 - - src/cairo-meta-surface.c | 2 - - src/cairo-mutex-impl-private.h | 3 +- - src/cairo-mutex-type-private.h | 3 + - src/cairo-paginated-surface.c | 2 - - src/cairo-pdf-surface.c | 2 - - src/cairo-scaled-font-subsets.c | 30 +++--- - src/cairo-scaled-font.c | 81 ++++++++++----- - src/cairo-surface-fallback.c | 1 + - src/cairo-surface.c | 4 - - src/cairo-svg-surface.c | 4 +- - src/cairo-type1-fallback.c | 9 ++- - src/cairo-type3-glyph-surface.c | 18 ++-- - src/cairo-user-font.c | 1 - - src/cairo-win32-font.c | 12 ++- - src/cairo-xcb-surface.c | 216 +++++++++++++++++++++++---------------- - src/cairo-xlib-surface.c | 57 ++++++---- - src/cairoint.h | 4 + - src/test-meta-surface.c | 25 +---- - src/test-paginated-surface.c | 25 +---- - 22 files changed, 280 insertions(+), 229 deletions(-) - -commit b2cbbceb4ca57816a498c2c1e676b19182c34e12 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 19:44:42 2008 +0100 - - [test/meta-surface-pattern] Propagate errors. - - Use cairo_get_target() to propagate any errors from the secondary context. - - test/meta-surface-pattern.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 9d4262ebe07bacacd6e743dea616b37ac51eac01 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Oct 21 17:44:47 2008 -0400 - - [build] Use dolt - - Dolt is a hack to speed up libtool-based build systems: - - http://dolt.freedesktop.org/ - - It's completely transparent to the user. Brings make time - of cairo from 70s down to 20s. Yay! - - build/aclocal.dolt.m4 | 177 +++++++++++++++++++++++++++++++++++++++++++++++++ - configure.ac | 1 + - 2 files changed, 178 insertions(+), 0 deletions(-) - -commit 5a822046cc66d8405618370c1071433016969020 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:22:48 2008 +0100 - - [test/xlib-expose-event] Propagate errors. - - Use cairo_get_target() to propagate errors from secondary contexts. - - test/xlib-expose-event.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 21223cc12ca00c52c0b39dc60db410f29e4e76c9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:29:12 2008 +0100 - - [test/unbounded-operator] Propagate errors. - - Use cairo_get_target() to propagate errors from secondary contexts. - - test/unbounded-operator.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 4c8de6d99d337338d6fd57134247515f9815b5e5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:21:37 2008 +0100 - - [test/surface-pattern-scale-up] Propagate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/surface-pattern-scale-up.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit e8de7d1c3605fa6d89640fb4e0631c07e5366348 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:20:54 2008 +0100 - - [test/surface-pattern-scale-down] Propagate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/surface-pattern-scale-down.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit b5551cfce2969358746dadae90cbe1add012e29c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:19:40 2008 +0100 - - [test/rotate-image-surface-paint] Proapgate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/rotate-image-surface-paint.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 6d41ffbbed2ad3bab2b1a58e1e5d9e1570a37926 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:18:37 2008 +0100 - - [test/pixman-rotate] Propagate errors - - Use cairo_get_target() to propagate errors from the secondary context. - - test/pixman-rotate.c | 33 ++++++++++++++++----------------- - 1 files changed, 16 insertions(+), 17 deletions(-) - -commit 64949b81735ee4e43772224d10031f7edfbc8068 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:17:13 2008 +0100 - - [test/operator-source] Propagate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/operator-source.c | 12 ++++-------- - 1 files changed, 4 insertions(+), 8 deletions(-) - -commit 971f030b7dca7ce24e54d0465900e6984020345e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:27:17 2008 +0100 - - [test/operator-clear] Propagate errors. - - Use cairo_get_target() to propagate errors from secondary contexts. - - test/operator-clear.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 9b919b0e91b6c64acbcbfc05c72610188327be67 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:14:51 2008 +0100 - - [test/extend-pad] Propagate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/extend-pad.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 69415b4fc6387acda7498847f8181c802c8b0982 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:25:38 2008 +0100 - - [test/device-offset-scale] Propagate errors - - Use cairo_get_target() to propagate errors from the secondary contexts. - - test/device-offset-scale.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 9ab296123ef49259a67e8dc43708023da2759283 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:14:01 2008 +0100 - - [test/device-offset-positive] Propagate errors. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/device-offset-positive.c | 12 +++++------- - 1 files changed, 5 insertions(+), 7 deletions(-) - -commit 594fa0836f2526e0a7f44fc7184f7f09de7dd41f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 11:12:11 2008 +0100 - - [test/device-offset] Propagate error. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/device-offset.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 29da47be60b0373ff93769f9f373a20b15a01e0f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 10:42:41 2008 +0100 - - [ps] Check for an empty font subset. - - Return early before trying to emit an empty subset into the document - - avoids a potential use of an uninitialised status variable. - - src/cairo-ps-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit fd1f3c27e093b1f51f0c1a381cc02cbf8f9889d7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 21 09:17:56 2008 +0100 - - [configure] Check for atomic xchg. - - Bug 18140 identifies a case where we have an atomic increment, but not an - atomic exchange. We need both to implement atomic reference counting, so - add a second check to detect whether __sync_val_compare_and_swap - generates a non-atomic instruction. - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18140. - - build/aclocal.cairo.m4 | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 71e4f7e3a10e6c9794360473d0114b27b42bcead -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 23:54:57 2008 +0100 - - Add API documentation for NULL filenames and write_funcs. - - Mention in the API docs that you can pass a NULL filename to - cairo_(pdf|ps|svg)_surface_create in order to construct a queryable - surface without generating any temporary files. Similarly when passing a - NULL write_func to cairo_pdf_surface_create_for_stream et al. - - src/cairo-pdf-surface.c | 10 ++++++++-- - src/cairo-ps-surface.c | 10 ++++++++-- - src/cairo-svg-surface.c | 10 ++++++++-- - 3 files changed, 24 insertions(+), 6 deletions(-) - -commit 6cb2b29434ffd5e718868d90e31cb050904b3ea7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 23:22:16 2008 +0100 - - [mutex] s/HOLDS_MUTEX/MUTEX_IS_LOCKED/ - - Behdad prefers the latter to keep a clean namespace. - - src/cairo-mutex-impl-private.h | 2 +- - src/cairo-mutex-type-private.h | 4 ++-- - src/cairo-scaled-font.c | 18 +++++++++--------- - 3 files changed, 12 insertions(+), 12 deletions(-) - -commit ae9d17c015867002895c8aa4e1c6dd1ef370dd20 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 22:31:17 2008 +0100 - - [directfb] Unbounded operators are unsupported. - - Currently the emulation of Porter-Duff operators does not correctly - handle the unbounded operators. - - src/cairo-directfb-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 1f35f31c4ee50dcc2f7c8616b9bbb5c45b4ed707 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 22:14:41 2008 +0100 - - [directfb] Fallback for SATURATE - - We're unable to satisfactorily emulate SATURATE using the src/dst blend - modes, so fallback. (Might just be a bug in libdirectfb...) - - src/cairo-directfb-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit c7951c4a368baaeeadca4e2a18d3ad45225380a0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 22:04:58 2008 +0100 - - [directfb] Perfom text fallback if emulating clip regions. - - Fallback if we have a clip that is not a simple region. - - src/cairo-directfb-surface.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit 98933fd4b8579b68623a8212015769b058db43f5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 20:59:14 2008 +0100 - - [directfb] When blitting check if we need the un-premultiplied color. - - When blitting whether we need to use the premultiplied color is dependent - upon the destination surface capabilities. - - src/cairo-color.c | 3 ++ - src/cairo-directfb-surface.c | 75 ++++++++++++++++++++++++++++------------- - 2 files changed, 54 insertions(+), 24 deletions(-) - -commit 4af8aa5f4d31141a6a4ba914cc860aff5d342d5b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 20:15:12 2008 +0100 - - [directfb] Apply clip to release_dest_image() - - We need to respect the current clip when copying the fallback image back to - the target surface. - - src/cairo-directfb-surface.c | 23 ++++++++++++++--------- - 1 files changed, 14 insertions(+), 9 deletions(-) - -commit 0ba5085ba06fd1c0ff1ebc88111d4573675a2e17 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 19:41:20 2008 +0100 - - [directfb] Fix OBO in clip. - - DirectFB seems to use inclusive upper bounds. - - src/cairo-directfb-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2743e84171fd2a548ac37b1fdd3611d319acded0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 19:32:21 2008 +0100 - - [directfb] Force NEAREST. - - The current version of DirectFB does not support any filters, so set - NEAREST on the source patterns so that we can fully optimize the pattern - inside core. - - src/cairo-directfb-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit f1669d31c0064b8ffbc7db2527fed85488fb305c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 19:03:33 2008 +0100 - - [directfb] Track the empty clip rectangle. - - A region with no extents means everything should be clipped out, so we - need an extra flag to disambiguate when we have 0 clip rectangles. - - src/cairo-directfb-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit ebe3048f9b74ff949795a807a7076ec756150ede -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 18:59:03 2008 +0100 - - [directfb] Cap the maximum surface size to use for the font cache. - - Fallback if we need to create a cache larger than the maximum usable - surface. - - src/cairo-directfb-surface.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 6f35c2d13e4cb736634bf446d3b8ee38cc6a6b9b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 18:39:45 2008 +0100 - - [directfb] Only use the pure BLIT for integer translations. - - If we have non-integer translation on a source pattern then we need to use - STRECTHBLIT (the core takes care to optimize NEAREST patterns to integer - translations so that this will only be used when interpolation is - required). - - src/cairo-directfb-surface.c | 30 +++++++++++++++++++++++------- - 1 files changed, 23 insertions(+), 7 deletions(-) - -commit 55bb7087b0236fe27980efda829f7b72e047b316 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 16:47:41 2008 +0100 - - [directfb] Tweak _categorize_operation(). - - Explicitly list the extend modes that are supported/unsupported and - immediately check for an unsupported operation. - - src/cairo-directfb-surface.c | 37 +++++++++++++++++++++++++------------ - 1 files changed, 25 insertions(+), 12 deletions(-) - -commit edb65213ec975e517165bc3b623f676a12917d0c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 16:46:08 2008 +0100 - - [directfb] Support ROI cloning. - - Only clone the ROI in order to efficiently handle large sources. - - src/cairo-directfb-surface.c | 11 ++++------- - 1 files changed, 4 insertions(+), 7 deletions(-) - -commit 4006e49ac1e96a983346f97be97bfd850f247ab0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 16:45:06 2008 +0100 - - [directfb] Rename backend structure. - - Use _cairo_directfb_surface_backend for consistency with other backends. - - src/cairo-directfb-surface.c | 37 ++++++++++++++++++++++++------------- - 1 files changed, 24 insertions(+), 13 deletions(-) - -commit 7e31ddbb08a6a7cf1db06c950c3768e54a5f4cfa -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 13:04:20 2008 +0100 - - [directfb] Whitespace. - - Trim lots of trailing whitespace and fix up according to CODING_STYLE. - - src/cairo-directfb-surface.c | 1478 +++++++++++++++++++++--------------------- - 1 files changed, 733 insertions(+), 745 deletions(-) - -commit d49563280b80dd85275057b6442d2f4ece8d724c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 12:49:52 2008 +0100 - - [directfb] Simplify return from _directfb_get_operator(). - - Used only as a predicate, so simply return a boolean. - - src/cairo-directfb-surface.c | 138 +++++++++++++++++++++--------------------- - 1 files changed, 68 insertions(+), 70 deletions(-) - -commit b17d0ded8cd42d84e97ca2c1fbd4aefedd570b8e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 12:48:02 2008 +0100 - - [directfb] Use the solid pattern cache. - - The dfb backend recreated a solid color surface for every colour, - completely bypassing the solid pattern cache. - - src/cairo-directfb-surface.c | 72 ++++++++++------------------------------- - 1 files changed, 18 insertions(+), 54 deletions(-) - -commit 786bea48df0dc6d76b2ad00409804a803fe2f4b6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 12:19:50 2008 +0100 - - [boilerplate/directfb] Create ARGB surfaces on demand. - - Create an RGB or ARGB surface depending upon the content type of the test - target, with the result that the directfb rgb24 target no longer - unconditionally fails. - - boilerplate/cairo-boilerplate-directfb.c | 23 +++++++++++++---------- - 1 files changed, 13 insertions(+), 10 deletions(-) - -commit 4ba9ccc6ab5926d59696f86193f42df2195d7cda -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 23:07:38 2008 +0100 - - [configure.ac.analysis] s/safe/_save/ - - Rename the temporary variable in line with the convention used by the rest - of the build system. - - build/configure.ac.analysis | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3a45b07af9743a26305c2576f838b4f3ef83bbb8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 10:37:46 2008 +0100 - - [perf] Free images for composite-checker - - Fix memleak of the image surfaces. - - perf/composite-checker.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 86356a9578dc248a755aceb7a04aef67a6c529b3 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 20 17:12:21 2008 +0100 - - [test] Add degenerate-dash to XFAIL. - - PS (ghostscript) interprets the degenerate end-caps quite differently, and - perhaps slightly more rationally... Add this to XFAIL, until we have a - definitive specification on how we should behave. - - test/Makefile.am | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 83d2552e4cafc9f86a8055abdf6caa685ed4922b -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 20 17:59:09 2008 -0400 - - Remove CAIRO_BEGIN_DECLS uses that ickle introduced while merging - - src/cairo-mutex-impl-private.h | 2 -- - src/cairo-mutex-type-private.h | 2 -- - 2 files changed, 0 insertions(+), 4 deletions(-) - -commit eab37f76b0f26a7b007dd51debf4d4901310c8b0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 22:12:18 2008 +0100 - - [directfb] Return an error surface on create() failure. - - Do not return NULL but an NO_MEMORY error surface if we fail to allocate - the surface during creation. - - src/cairo-directfb-surface.c | 21 ++++++++++----------- - 1 files changed, 10 insertions(+), 11 deletions(-) - -commit 6a02f53dd191605986b15e4757b16f599fe8de5f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 14:21:15 2008 +0100 - - [directfb] Simplifiy ADD_TRI - - Simplify the ADD_TRI macro to make the code more readable. - - src/cairo-directfb-surface.c | 30 +++++++++++++----------------- - 1 files changed, 13 insertions(+), 17 deletions(-) - -commit aba457fe64f12598043b11ae076f0a93fe05eba7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 14:03:24 2008 +0100 - - [directfb] Add missing error status - - We jumped to the ERROR path without setting an error status - assume - NO_MEMORY. - - src/cairo-directfb-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 610451e4a7b079d30a73384a76f0aaab250c2970 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 12:45:45 2008 +0100 - - [directfb] Correct fixed-to-double conversion. - - The trapezoid calculations had not been updated after the 16.16->24.8 - switch. Use _cairo_fixed_to_double() rather than open-coding. - - src/cairo-directfb-surface.c | 110 ++++++++++++++++++++--------------------- - 1 files changed, 54 insertions(+), 56 deletions(-) - -commit 8e0950ced8837a35b9dc0254860250f9fa1a9613 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 12:11:13 2008 +0100 - - [boilerplate/directfb] Gracefully handle failure to create surface. - - Simply return NULL indicating failure to create the target surface rather - than aborting the test (allowing other targets to be tested). - - boilerplate/cairo-boilerplate-directfb.c | 230 +++++++++++++++++------------- - 1 files changed, 130 insertions(+), 100 deletions(-) - -commit 801df1b87a585ebf71e6d3d74b815f3470b81ae9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 11:55:20 2008 +0100 - - [directfb] Fix error propagation from surface_create() - - Do not mask fatal errors, but correctly propagate the error status. - - src/cairo-directfb-surface.c | 208 +++++++++++++++++++++++------------------- - 1 files changed, 114 insertions(+), 94 deletions(-) - -commit 476d17fa788fcf173e58b963540c6557f846ceed -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 11:35:27 2008 +0100 - - [directfb] Compile fix. - - Fixup compilation after 901f0b. - - src/cairo-directfb-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d72969289db62b38ca024a41c0d8e0df480e7f8c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 09:47:33 2008 +0100 - - [image] Remove unused variable. - - Cleanup the compiler warning for the unused status after code shuffling. - - src/cairo-image-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit f2ff7944264c23cbec856be3e85f240a93184f80 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 11:56:19 2008 +0100 - - [perf] A crude tool to visualise performance changes across a series. - - Generate a cairo-perf-diff graph for a series of commits in order to be - able to identify significant commits. Still very crude, but minimally - functional. - - configure.ac | 3 + - perf/.gitignore | 1 + - perf/Makefile.am | 26 ++- - perf/Makefile.win32 | 6 +- - perf/cairo-perf-diff | 12 +- - perf/cairo-perf-diff-files.c | 458 ------------------------------- - perf/cairo-perf-graph | 205 ++++++++++++++ - perf/cairo-perf-graph-files.c | 593 ++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-graph-widget.c | 450 ++++++++++++++++++++++++++++++ - perf/cairo-perf-graph.h | 63 +++++ - perf/cairo-perf-report.c | 456 ++++++++++++++++++++++++++++++ - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 61 ++++- - perf/cairo-stats.h | 8 - - 14 files changed, 1865 insertions(+), 478 deletions(-) - -commit 41c8eefc6d432ab213f6f405c3d6346adb7f7931 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 22:24:32 2008 +0100 - - [output-stream] Protect against NULL write_func. - - Allow the user to specify a NULL write_func for the output stream so that - a dummy surface can be created, for example, for querying target font - options or font extents. - - Currently we do not perform any sanity checks at the user entry point and - will generate a mysterious SEGV during cairo_surface_finish() - which may - not immediately be obvious that it is due to a NULL write_func. - - src/cairo-output-stream.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 84e4a825fffe3d78e95dec3406a86da6a23144c2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 22:15:17 2008 +0100 - - [output-stream] Accept a NULL filename - - Principally to support creating a dummy vector surface (i.e. - cairo_ps_surface_create (NULL, 1, 1)) that can be used to determine font - extents (or target font options) before opening an output file, but also - because we currently fail to do any sanity checking at the entry point. - - src/cairo-output-stream.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 52ea38f97b1b90e395c667619770482b10e5672e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:44:29 2008 +0100 - - [meta] Acquire scaled_font mutex for glyph_path(). - - The caller of _cairo_scaled_font_glyph_path() is expected to be holding - the scaled_font->mutex. - - src/cairo-meta-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 299ea0580a646dc55fd0156f1904fe4b45ec5725 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:37:38 2008 +0100 - - [user-font] Review locks under error conditions. - - Simplify the error handling by only relinquishing the global - scaled_font_map mutex if we successfully insert the placeholder font. The - result is that on the error path, there are no changes to global state and - thus we can entirely skip the user-font initialisation and - re-registration. - - src/cairo-scaled-font.c | 44 ++++++++++++++++++++++---------------------- - src/cairo-user-font.c | 39 +++++++++++++++++++++++---------------- - src/cairoint.h | 2 +- - 3 files changed, 46 insertions(+), 39 deletions(-) - -commit c76a8481f372fab8981231b257fdcc69466263d2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:36:34 2008 +0100 - - [analysis] Check for error surfaces. - - If the target surface is an error surface, ensure that we return the - appropriate error surface. Likewise, avoid writing to error surfaces. - - src/cairo-analysis-surface.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 5b28b0b903cb2fdb8a5614659d528bf12488389e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:35:48 2008 +0100 - - [ps] Destroy type3 surface on error. - - After an error, ensure that the local type3 surface is destroyed. - - src/cairo-ps-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 6b17c6da47c42dd04ed2acad723c25b6da41b51c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:34:17 2008 +0100 - - [type3] Acquire scaled_font mutex whilst looking up glyphs. - - When looking up the glyph in the shared scaled_font glyph cache, the - caller is required to have taken the scaled_font->mutex. - - src/cairo-type3-glyph-surface.c | 50 +++++++++++++++++++++++--------------- - 1 files changed, 30 insertions(+), 20 deletions(-) - -commit f56cf93181e73b4ba74f25ce14f7ed6c7cf36e83 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 22:13:53 2008 +0100 - - [user-font] Check for error objects. - - Check that the user has not passed in an inert error object before any - attempts to write to it and return the default values. - - src/cairo-user-font.c | 71 ++++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 59 insertions(+), 12 deletions(-) - -commit 1f9f9d936b296dbe796b1436c7da7fa3462f7d59 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:39:56 2008 +0100 - - [pdf] Acquire scaled_font mutex for show_text_glyphs(). - - We need to be holding the scaled font mutex over a call to draw text - glyphs from within an smask group. - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 12fb8c9b7c808ab20bee466aa28ee368559fd902 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:33:07 2008 +0100 - - [type1] Acquire scaled_font mutex. - - In order to perform glyph lookups we need to be holding the mutex for the - scaled_font. - - src/cairo-type1-fallback.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ca5f868a73b35eda737ae6596efff91f82eeea75 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:26:20 2008 +0100 - - [scaled-font] Zero font extents for an error surface. - - Do not attempt to read from the error object, but just return zero - extents. - - src/cairo-scaled-font.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit 1ddf0b2a5c1f3d20b9a91acf7aae021f6b738485 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 10:35:38 2008 +0100 - - [surface] Reorder asserts to make no assumptions about error objects. - - If the surface is in error, then we cannot assume anything about the - validity of its contents other than the error status (and reference - count). This is for the cases were the surface is replaced by a nil - surface, and in future where the error surface may be replaced by a tiny - error object. - - src/cairo-surface.c | 94 +++++++++++++++++++++++++------------------------- - 1 files changed, 47 insertions(+), 47 deletions(-) - -commit 644e78ca4e6f72499fcf763acd53fa7235b0226d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 20:34:13 2008 +0100 - - [svg] Lock the scaled_font whilst emitting glyphs. - - We need to hold the scaled_font mutex whilst looking upon glyphs so lock - the font whilst iterating over the font subset. - - src/cairo-svg-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4587e9e4f5c46656108b05f7a4841f78df14de26 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 19:11:09 2008 +0100 - - [scaled-font-subsets] Add locking to unscaled font. - - During map_glyph() we are passed a locked scaled_font for which we are - asked to add a glyph from that font into the active subsets for the - surface. This means that we eventually call scaled_glyph_lookup() to load - the glyph. But first, we attempt to find an existing an existing sub_font - for glyph, creating a new sub_font as necessary (possibly using an - entirely different unhinted scaled font). So before accessing the glyph - cache we need to make sure that we are holding the appropriate mutexes. - - src/cairo-scaled-font-subsets.c | 23 +++++++++++++++++------ - 1 files changed, 17 insertions(+), 6 deletions(-) - -commit d3a6651237a276c410885578c41fb505f83372ed -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 14:37:42 2008 +0100 - - [xlib] Set return code after failing to allocate glyph surface. - - Although we checked for an allocation error, we missed propagating the - status to the return error code. - - src/cairo-xlib-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit bfc3a72cff1a3f9641dae7c9f121598a14eb9a5a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 14:06:03 2008 +0100 - - [gstate] Propagate error from clip. - - During clip transformation we query the clip extents which can trigger a - fatal error. Check and propagate. - - src/cairo-gstate.c | 33 +++++++++++++++++++++++---------- - 1 files changed, 23 insertions(+), 10 deletions(-) - -commit 7975cf3f2c0bc28b8b3c916d5ba725abb38b300d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 13:21:28 2008 +0100 - - [paginated] Free local reference to target on error path. - - On the error path we must destroy the local reference to the target - surface. - - src/cairo-paginated-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4662204a2a02d50e674f121d82bbb4fe1b8f1436 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 12:44:45 2008 +0100 - - [test-paginated] Fix double free of surface along error path. - - The ownership of the surface is transferred to the paginated surface, so - we do not need to destroy it ourselves along the error path. - - src/test-paginated-surface.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit bf3202fcfd281be3fa62c2d6719377a8f2a0dec4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 12:33:22 2008 +0100 - - [xlib] Fix double free of Pixmap along error path. - - If the paint fails then we attempt to free the Pixmap ourselves and via - the cairo_surface_destroy (as it also believes that it owns the Pixmap). - - src/cairo-xlib-surface.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 901f0b540c764e131dd9745def329308af61b3d5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 12:19:09 2008 +0100 - - Review backend->create_similar() - - Avoid masking fatal errors by enforcing any error to be returned via an - error surface, so that the NULL return only means UNSUPPORTED. A few - backends called their create_similar() directly, without correctly checking - for a potential NULL (for example, the directfb backend was a timebomb, - since it used NULL to indicate out-of-memory). - - src/cairo-directfb-surface.c | 18 ++++++++++-------- - src/cairo-glitz-surface.c | 17 +++++++++++------ - src/cairo-quartz-surface.c | 4 ++-- - src/cairo-surface.c | 8 ++------ - src/cairo-win32-surface.c | 18 +++++++++++++----- - src/cairo-xcb-surface.c | 2 ++ - 6 files changed, 40 insertions(+), 27 deletions(-) - -commit 9529699028a5c7a3b0f81f945d25f26285247a11 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 19 09:35:07 2008 +0100 - - [test/user-font-rescale] Check and propagate errors. - - We need to check the error status on set_user_data() to be sure that the - data has been set and error otherwise. - - test/user-font-rescale.c | 63 +++++++++++++++++++++++++++++---------------- - 1 files changed, 40 insertions(+), 23 deletions(-) - -commit 683de2fea2d8cdeea9759cbf3ab7492d634e7af2 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 18 00:01:39 2008 +0100 - - [test/user-font[-proxy]] Check for error from set_user_data(). - - Check in case we fail to attach our user_data. - - test/user-font-proxy.c | 69 +++++++++++++++++++++++++++--------------------- - test/user-font.c | 24 +++++++++++++--- - 2 files changed, 58 insertions(+), 35 deletions(-) - -commit 198392990082e01443bbda5c0cbe6dc8bf090baf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 22:14:49 2008 +0100 - - [test/bitmap] Leak on error path. - - Free the FcPattern on error. - - test/bitmap-font.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 0409be426cb7f67974346a93213dd4675b59776c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 14:26:15 2008 +0100 - - [test/font-matrix-translation] Check for OOM - - First check that querying the extents did not trigger NO_MEMORY. - - test/font-matrix-translation.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 21360bf6748b30cf58d54561e40a1aa711d8d7af -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 20:44:51 2008 +0100 - - [test/source-surface-big-scaled-down] Propagate error. - - Propagate error to source. - - test/surface-pattern-big-scale-down.c | 43 +++++++++++++++++++------------- - 1 files changed, 25 insertions(+), 18 deletions(-) - -commit 794160c35baf39593942ba71b45e4e75d2a87103 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 20:37:43 2008 +0100 - - [test/surface-pattern] Propagate error. - - Use cairo_get_target() to propagate error from secondary context. - - test/surface-pattern.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 0f48cce8d90cf95afcf86d71a932ab4e504b909b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 20:31:57 2008 +0100 - - [test/source-clip-scale] Propagate error. - - Use cairo_get_target() to propagate error from secondary context. - - test/source-clip-scale.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 6cdbd132ceba159bb7e3ac5612aa79293b21e95a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 20:22:49 2008 +0100 - - [test/source-clip] Propagate error. - - Use cairo_get_target() to propagate error from the secondary context. - - test/source-clip.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f86f233b3e49c3f401b2fa02987b2193485e8be5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 20:14:06 2008 +0100 - - [test/smask] Propagate error. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/smask.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 4490a6c363a8745ba89bfa890519a570d098086e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 19:15:17 2008 +0100 - - [test/stroke-image] Propagate error - - Use cairo_get_target() to propagate errors from the secondary context. - - test/stroke-image.c | 19 +++++++++++-------- - 1 files changed, 11 insertions(+), 8 deletions(-) - -commit 6e6d7e52a3c16787633e5059ae36f2fb0d03148a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 19:02:31 2008 +0100 - - [test/mask] Propagate error from secondary context. - - Reset the source every time so that the error is propagate from the - secondary context using cairo_get_target(). - - test/mask.c | 6 +----- - 1 files changed, 1 insertions(+), 5 deletions(-) - -commit a56d4530d6149e2c4fc884a5cfeede2d6ff6d3b6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:54:21 2008 +0100 - - [test/smask-text] Propagate error. - - Use cairo_get_target() to propagate error from the secondary context. - - test/smask-text.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit b1e884cd89ab2b83d3b8e072414e4e3f63e3a023 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:52:55 2008 +0100 - - [test/smask-stroke] Propagate error. - - Use cairo_get_target() to propagate the error from the secondary context. - - test/smask-stroke.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit 546fbc2c0cf87abd627477056bf19063c5aa001a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:50:25 2008 +0100 - - [test/smask-paint] Propagate error. - - Use cairo_get_target() to propagate errors from the secondary context. - - test/smask-paint.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 8bd69132827fa539d9dfb65bd00e00c079827360 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:49:02 2008 +0100 - - [test/smask-mask] Propagate error. - - Use cairo_get_target() to propagate errors from the secondary contexts. - - test/smask-mask.c | 46 ++++++++++++++++++++++------------------------ - 1 files changed, 22 insertions(+), 24 deletions(-) - -commit 9c0fe6c61e92044e8599f49e75d38edcdd6be960 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:45:07 2008 +0100 - - [test/smask-image-mask] Propagate error. - - Use cairo_get_target() to propagate any error status from the secondary - context. - - test/smask-image-mask.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 373d6c76b65e826f81873b51461bdf3c30024c06 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:43:26 2008 +0100 - - [test/smask-fill] Propagate error status. - - Use cairo_get_target() to propagate the error from the secondary context. - - test/smask-fill.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit bb05beaab626d2fca6d219bfd8148dde71073b39 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 15:27:11 2008 +0100 - - [test/show-glyphs-many] Check for NO_MEMORY - - As we do a manual status check, we need to perform a full check. - - test/show-glyphs-many.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit c0a4ef76e17dfd43d248c13b7f0665da9b847316 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 14:57:42 2008 +0100 - - [test/composite-integer-translate-over-repeat] Propagate error. - - Use cairo_get_target() to propagate any errors from the secondary context. - - test/composite-integer-translate-over-repeat.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 4a9e0f0e5ba17a322bbf0f38b2fb418211571d48 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 16:50:32 2008 +0100 - - [test/mask] Propagate error from secondary context. - - Use cairo_get_target() to infect the primary context with any errors - raised whilst drawing the mask. - - test/mask.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit eaec1caa94ac871eb881ac354c4442ddd2a308ea -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 16:20:28 2008 +0100 - - [test/ft-text-*] Check for errors from fontconfig. - - If a match cannot be found, or if any other error occured, then fontconfig - will return NULL. Check and propagate. - - test/ft-text-antialias-none.c | 31 ++++++++++++++++++++++++++----- - test/ft-text-vertical-layout-type1.c | 31 ++++++++++++++++++++++++++----- - test/ft-text-vertical-layout-type3.c | 31 ++++++++++++++++++++++++++----- - 3 files changed, 78 insertions(+), 15 deletions(-) - -commit 336eddfdbb31865e3669ceb775089c63ce1db27f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 17:19:12 2008 +0100 - - [test/get-clip] Check the status on the secondary context. - - As we solely use a secondary context, we must manually report NO_MEMORY - errors whilst running under memfault. - - test/cairo-test.c | 14 +++++++- - test/cairo-test.h | 4 ++ - test/get-clip.c | 98 +++++++++++++++++++++++++++-------------------------- - 3 files changed, 67 insertions(+), 49 deletions(-) - -commit d48f9340514c258cfece1b72d2f7e3f7b2d3c7b1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 14:05:14 2008 +0100 - - [test/clip-operator] Propagate error from secondary context. - - Use the cairo_get_target() to propagate any errors from the secondary - context. - - test/clip-operator.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit d11014386f739f43ec5f290714d7c51cc638f172 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 5 13:37:07 2007 +0100 - - Add support for lockdep. - - lockdep is a valgrind skin which performs pthread locking correctness - validation. In particular it allows one to write assert(HOLDS_LOCK(mutex)) - which both documents the preconditions for a function and enforces them - when the program is run under lockdep. - - As an aide to lockdep (as it works by intercepting the pthread functions), - all the mutexes should be initialised and destroyed using - pthread_mutex_init() and pthread_mutex_destroy() rather than using static - initializers and no-ops. - - src/cairo-mutex-impl-private.h | 14 ++++++++++++++ - src/cairo-mutex-type-private.h | 6 +++++- - src/cairo-scaled-font.c | 13 +++++++++++++ - 3 files changed, 32 insertions(+), 1 deletions(-) - -commit bccfdf7d93c2a92a342127fc212770f4053cb2cf -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 13:47:27 2008 +0100 - - [test] Add support for memfault. - - Add the core support to cairo-test for running the test-suite under a - malloc fault injector. This commit contains the adjustments to - cairo_test_run() to repeat the test if it detects a failure due to fault - injection and complains if it detects unreported faults or memory leaks. - - build/configure.ac.analysis | 17 +++ - test/cairo-test.c | 271 +++++++++++++++++++++++++++++++++--------- - test/cairo-test.h | 10 ++- - 3 files changed, 239 insertions(+), 59 deletions(-) - -commit 974fabfe059f9744116d20fd9f8b59f1b8c34b70 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 17 18:52:51 2008 +0100 - - [ft] Add more comments about FT_Face lifetime issues. - - Currently we only have an example of how to call FT_Done after the last - reference to the FT cairo_font_face_t has been dropped, but do not - actually explain why this needs to be done. So add a couple of sentences - to clarify the likely lifetime of the FT_Face once exposed to cairo. - - src/cairo-ft-font.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 5fcfc7ebc9a2d1d947898d269be7ba91d27c5261 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 17:13:45 2008 +0100 - - [test/README] Document all fonts used. - - Do a little leg-work to answer a query in a bug report and document the - results. - - test/README | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit c1164a574d3e2cc4746384875d5c2781114c0ea4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Oct 16 08:49:13 2008 +0100 - - [type1] Add comment to warn about read() as macro. - - In case we are ever tempted to simplify the function pointer, warn that it - may alias with a macro. - - src/cairo-type1-subset.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ff9ee74b37a88cba2e996bf0cdae1af6b6c6fe30 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Thu Oct 16 17:29:33 2008 +1030 - - Revert unintended changes to test/fallback-resolution.c in the previous commit - - test/fallback-resolution.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5911c6966de832fa350a6e9a4d587b7c3b3b4825 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Thu Oct 16 17:22:48 2008 +1030 - - Use correct inverse ctm for stroke in meta surface replay - - This fixes #9189 Dashed strokes too long in fallback images - - src/cairo-meta-surface.c | 2 +- - test/fallback-resolution.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 6afcd821182137e8c3f128f9600e97cff79978b8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 22:41:26 2008 +0100 - - [test] Add a spline test. - - Test the decomposition of 5 different types of spline curve. Useful test - for future experiments in improving the decomposition algorithm. - - Note: the vector targets all need separate reference images due to their - lack of support for cairo_set_tolerance(). Also GS strokes the Bezier - curve differently using offset curves and opposed to transcribing the - outline of a pen. - - test/.gitignore | 1 + - test/Makefile.am | 7 + - test/spline-decomposition-pdf-ref.png | Bin 0 -> 20404 bytes - test/spline-decomposition-ps2-ref.png | Bin 0 -> 8957 bytes - test/spline-decomposition-ps3-ref.png | Bin 0 -> 8957 bytes - test/spline-decomposition-ref.png | Bin 0 -> 20402 bytes - test/spline-decomposition-svg11-ref.png | Bin 0 -> 20404 bytes - test/spline-decomposition-svg12-ref.png | Bin 0 -> 20404 bytes - test/spline-decomposition.c | 416 +++++++++++++++++++++++++++++++ - 9 files changed, 424 insertions(+), 0 deletions(-) - -commit 91b0dc92c8ede189d942188f92068f189907e239 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 22:27:53 2008 +0100 - - [build] Add -fno-common. - - Generate a warning if two files define a global variable with the same - name, instead of silently merging them to reference the same location. - - build/configure.ac.warnings | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b94b600b34793cecd9a66d37dd34a6619738e2c2 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Oct 15 13:41:03 2008 -0400 - - [quartz] Completely remove CAIRO_HAS_QUARTZ_IMAGE_SURFACE check - - Instead of fixing the check in d36b02dc662e623bee58a69c32b149a242cbf52b, just - remove it. Conditionally compilation will keep cairo-quartz-image-surface.c - from being compiled in when it is not configured to be. Suggested by Behdad. - - src/cairo-quartz-image-surface.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit d36b02dc662e623bee58a69c32b149a242cbf52b -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Oct 15 12:45:11 2008 -0400 - - [quartz] Rebalance 'CAIRO_HAS_QUARTZ_IMAGE_SURFACE' #ifdef - - Fixes compilation by re-adding '#ifdef CAIRO_HAS_QUARTZ_IMAGE_SURFACE' which - was, I assume, unintentionally removed by - 2cf4b3161c19b9b0349bd2aa94855fd0822968be. - - src/cairo-quartz-image-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 83162360a44c4d4701f0ade2e2ee813f79186439 -Author: Jeff Muizelaar <jmuizelaar@mozilla.com> -Date: Wed Oct 15 10:34:12 2008 -0400 - - Fix quratz_image typo in Makefile.sources. - - src/Makefile.sources | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 877e77fa3e85c09c29e64ca5ae7329346db029cc -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 12:20:00 2008 +0100 - - [glitz] Disable caching of solid surfaces. - - glitz currently has no mechanism to release resources upon connection - closure (ala XCloseDisplay) and so will attempt invalid accesses when - evicting old surfaces from the solid pattern cache. - - src/cairo-glitz-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit fc04a1e0dbc3cefa51c7602e0a23dba886813fe5 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 12:13:40 2008 +0100 - - [boilerplate] Fixup compilation for gliitz. - - Convert a few old references to cairo_boilerplate_surface_set_user_data. - - boilerplate/cairo-boilerplate-glitz.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit e17f02add019d9acf461a1ad1245ba5be00cf336 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 10:52:33 2008 +0100 - - [type1] Protect against read macro - - POSIX allows for any of its functions to be implemented as a macro, - inflicting damage upon innocent function pointers that happen to share - the same name. - - face->stream->read() is one such example. - - As it's outside of our control (being a FT_Face) we cannot simply rename - the data member, so we need to explicitly dereference it as a function - pointer in order to disambiguate it for the compiler. - - src/cairo-type1-subset.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit bc872a5f5fb9b6318dc78d132da46a6b201f75c7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 10:21:05 2008 +0100 - - [xlib] Handle 4,20,24,28 depth XImages - - Bug 9102 cairo doesn't support 24 bits per pixel mode on X11 - (https://bugs.freedesktop.org/show_bug.cgi?id=9102) - is a reminder that that we need to support many obscure XImage formats. - With Carl's and Behdad's work to support psuedocolor we have a mechanism - in place to handle any format that is not natively handled by pixman. The - only piece we were missing was extending the swapper to handle all-known - formats and putting in defensive checks that pixels were correctly aligned - in accordance with pixman's requirements. - - src/cairo-image-surface.c | 13 ++++---- - src/cairo-xlib-surface.c | 70 +++++++++++++++++++++++++++++++++++++------- - src/cairoint.h | 2 +- - 3 files changed, 66 insertions(+), 19 deletions(-) - -commit 1728fa352011c570ce1bcc3bd14897e789c85252 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 15 09:23:01 2008 +0100 - - [svg] Add notes about why we shouldn't add DOCTYPE. - - Emmanuel Pacaud did some research into adding DOCTYPE after we had a - complaint that our SVG output failed to be validated by batik. The - conclusion he came to was that the validation of SVG was incomplete and - misleading, i.e. our output might generate false negatives leading to more - confusion. - - src/cairo-svg-surface.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit e9f5ee6efe7725c1e0e32fa9e85cca61ecb93440 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 14:42:48 2008 +0100 - - [doc] Fix a few gtk-doc errors. - - gtk-doc insists on a non-empty long description, even for trivial - functions that are fully described by their input arguments and return - value. Grrr. - - src/cairo-gstate.c | 4 ++++ - src/cairo-os2-surface.c | 2 ++ - src/cairo-scaled-font.c | 14 +++++++------- - src/cairo-surface.c | 4 +++- - src/cairo-unicode.c | 6 ++++-- - 5 files changed, 20 insertions(+), 10 deletions(-) - -commit 595414bb787d570ac95fc91c58c370558e9d5a54 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 14:24:49 2008 +0100 - - [test/fallback-resolution] Extend to cover separate ppi x/y. - - Adrian Johnson proposed a hack that fixed the current test by simply - scaling the dashed stroke by device_transform.xx. Obviously this exposes a - deficiency in the test case. So add an outer loop to iterate over several - common ppi for both x and y and in doing so reveal more ugly artifacts in - the current fallback code. - - test/Makefile.am | 42 +++++- - test/fallback-resolution-ppi150-ref.png | Bin 8043 -> 0 bytes - test/fallback-resolution-ppi150x150-ref.png | Bin 0 -> 8043 bytes - test/fallback-resolution-ppi150x300-ref.png | Bin 0 -> 6848 bytes - test/fallback-resolution-ppi150x37.5-ref.png | Bin 0 -> 13176 bytes - test/fallback-resolution-ppi150x600-ref.png | Bin 0 -> 6338 bytes - test/fallback-resolution-ppi150x72-ref.png | Bin 0 -> 8370 bytes - test/fallback-resolution-ppi150x75-ref.png | Bin 0 -> 10445 bytes - test/fallback-resolution-ppi300-ref.png | Bin 5637 -> 0 bytes - test/fallback-resolution-ppi300x150-ref.png | Bin 0 -> 6851 bytes - test/fallback-resolution-ppi300x300-ref.png | Bin 0 -> 5637 bytes - test/fallback-resolution-ppi300x37.5-ref.png | Bin 0 -> 12870 bytes - test/fallback-resolution-ppi300x600-ref.png | Bin 0 -> 4848 bytes - test/fallback-resolution-ppi300x72-ref.png | Bin 0 -> 7053 bytes - test/fallback-resolution-ppi300x75-ref.png | Bin 0 -> 9617 bytes - test/fallback-resolution-ppi37.5-ref.png | Bin 14098 -> 0 bytes - test/fallback-resolution-ppi37.5x150-ref.png | Bin 0 -> 12728 bytes - test/fallback-resolution-ppi37.5x300-ref.png | Bin 0 -> 11981 bytes - test/fallback-resolution-ppi37.5x37.5-ref.png | Bin 0 -> 14098 bytes - test/fallback-resolution-ppi37.5x600-ref.png | Bin 0 -> 11654 bytes - test/fallback-resolution-ppi37.5x72-ref.png | Bin 0 -> 12990 bytes - test/fallback-resolution-ppi37.5x75-ref.png | Bin 0 -> 13787 bytes - test/fallback-resolution-ppi600-ref.png | Bin 4104 -> 0 bytes - test/fallback-resolution-ppi600x150-ref.png | Bin 0 -> 6096 bytes - test/fallback-resolution-ppi600x300-ref.png | Bin 0 -> 4812 bytes - test/fallback-resolution-ppi600x37.5-ref.png | Bin 0 -> 12401 bytes - test/fallback-resolution-ppi600x600-ref.png | Bin 0 -> 4104 bytes - test/fallback-resolution-ppi600x72-ref.png | Bin 0 -> 6398 bytes - test/fallback-resolution-ppi600x75-ref.png | Bin 0 -> 8974 bytes - test/fallback-resolution-ppi72-ref.png | Bin 8409 -> 0 bytes - test/fallback-resolution-ppi72x150-ref.png | Bin 0 -> 8069 bytes - test/fallback-resolution-ppi72x300-ref.png | Bin 0 -> 6803 bytes - test/fallback-resolution-ppi72x37.5-ref.png | Bin 0 -> 13147 bytes - test/fallback-resolution-ppi72x600-ref.png | Bin 0 -> 6245 bytes - test/fallback-resolution-ppi72x72-ref.png | Bin 0 -> 8409 bytes - test/fallback-resolution-ppi72x75-ref.png | Bin 0 -> 10628 bytes - test/fallback-resolution-ppi75-ref.png | Bin 12101 -> 0 bytes - test/fallback-resolution-ppi75x150-ref.png | Bin 0 -> 9940 bytes - test/fallback-resolution-ppi75x300-ref.png | Bin 0 -> 9003 bytes - test/fallback-resolution-ppi75x37.5-ref.png | Bin 0 -> 14020 bytes - test/fallback-resolution-ppi75x600-ref.png | Bin 0 -> 8455 bytes - test/fallback-resolution-ppi75x72-ref.png | Bin 0 -> 10202 bytes - test/fallback-resolution-ppi75x75-ref.png | Bin 0 -> 12101 bytes - test/fallback-resolution.c | 199 +++++++++++++------------ - 44 files changed, 139 insertions(+), 102 deletions(-) - -commit 0d3e152d2fe28b22a27dd6b9f82e2047aea3be94 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 13:44:47 2008 +0100 - - [check-doc-syntax.sh] Allow quoting. - - func_regexp was incorrectly complaining that cairo_pure was a function without - parenthesis. The simplest solution appeared to be allow quoting of - 'cairo_pure'. - - src/cairo-compiler-private.h | 22 +++++++++++----------- - src/check-doc-syntax.sh | 6 +++--- - 2 files changed, 14 insertions(+), 14 deletions(-) - -commit 02a7ca80f9f9b62deff6c8ba4dc58fee0cebcaa6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 11:08:43 2008 +0100 - - [pattern] Correctly optimize away fractional translations. - - As is so often the case, reading the commit log gives you fresh insight in - the problem - often called confessional debugging... - - We can simplify the problem by ignoring attr->[xy]_offset, for the time - being, and focus on computing the correct matrix. This is comparatively - simple as all we need to do is perform the appropriate rounding on the - translation vector. - - src/cairo-pattern.c | 18 ++++++++++-------- - 1 files changed, 10 insertions(+), 8 deletions(-) - -commit 9886cb3353eb02ce5b99d555a35b13b8347f8e87 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 10:23:41 2008 +0100 - - [pattern] Only perform non-integer optimization for identity matrices. - - A complication I realised after pushing 3eb4bc3 was handling larger - sampled areas. Extending the test case revealed that the optimization - was broken for anything but the identity transform (after removing the - translation). Correctness first, leaving the "pixel-exact" solution for - interested reader... - - src/cairo-pattern.c | 16 ++++++---------- - test/filter-nearest-transformed-pdf-ref.png | Bin 373 -> 548 bytes - test/filter-nearest-transformed-ref.png | Bin 151 -> 570 bytes - test/filter-nearest-transformed-svg11-ref.png | Bin 217 -> 559 bytes - test/filter-nearest-transformed-svg12-ref.png | Bin 217 -> 559 bytes - test/filter-nearest-transformed.c | 24 ++++++++++++++++++++++++ - 6 files changed, 30 insertions(+), 10 deletions(-) - -commit 8dc3deecb8e0ca2f84d996096230f27ab4c24c18 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 14 08:17:23 2008 +0100 - - Add documentation for function attributes 'pure' and 'const'. - - Carl suggested that cairo_pure and cairo_const are pretty opaque, even to - the developer who added them, so it is extremely important that they have - a good description so that they are used correctly and perhaps ported to - other compilers. - - src/cairo-compiler-private.h | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit 6aa1143d5a8ec45fc793102a64e956d7d1c7ad01 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 13 23:49:17 2008 +0100 - - Update documentation to remove references to cairo_has_show_text_glyphs(). - - With the addition of cairo_show_text_glyphs() came a couple of functions - to query whether the target supported the extended attributes. However, - at Carl's request cairo_has_show_text_glyphs() was removed - but the - documentation was not updated to reflect that. - - NEWS | 2 +- - src/cairo-surface.c | 3 --- - src/cairo.c | 6 +++--- - 3 files changed, 4 insertions(+), 7 deletions(-) - -commit b2053945df35d4d7eea9fe3200e9c018705309d1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 13 23:39:47 2008 +0100 - - [scaled-font] Correct documentation for cairo_scaled_font_create(). - - Fix the documentation not to suggest that NULL is a legal value for - font_options (as we temporarily made it during the 1.[57] dev cycle). - - src/cairo-scaled-font.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 3eb4bc37577e905d93a1935e7a9cd33ae8dbda15 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 13 23:26:04 2008 +0100 - - [pattern] Optimize away fractional translation for NEAREST patterns. - - As identified in bug 15479, - Unpredictable performance of cairo-xlib with non-integer translations of a - source surface pattern - (https://bugs.freedesktop.org/show_bug.cgi?id=15479), - source surfaces with a fractional translation hit slow paths for some - drivers, causing seemingly random performance variations. As a work-around - Owen Taylor proposed that cairo could convert non-integer translations on - NEAREST sources patterns to their integer equivalents. - - The messy detail involved here is replicating the rounding mode used by - pixman for the sample offset, but otherwise the conversion is fairly - trivial. - - src/cairo-pattern.c | 35 +++++++++ - test/.gitignore | 1 + - test/Makefile.am | 5 + - test/filter-nearest-transformed-pdf-ref.png | Bin 0 -> 373 bytes - test/filter-nearest-transformed-ref.png | Bin 0 -> 151 bytes - test/filter-nearest-transformed-svg11-ref.png | Bin 0 -> 217 bytes - test/filter-nearest-transformed-svg12-ref.png | Bin 0 -> 217 bytes - test/filter-nearest-transformed.c | 103 +++++++++++++++++++++++++ - 8 files changed, 144 insertions(+), 0 deletions(-) - -commit ceab32e2c3d51c0dd29b105a5a390cdd8aa58f8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 12 12:11:12 2008 +0100 - - [win32] win32 also uses font subsets. - - Include win32 in the list of font subset users, fixes build when - cross-compiling. - - src/cairoint.h | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 1d3453eee50e4343995c5d3f225d18289fbcebec -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 12 11:21:14 2008 +0100 - - [pattern] Rescale the linear pattern matrix to avoid overflow. - - As proof-of-principle, compute a scale factor to avoid overflow when - converting a linear pattern to pixman_fixed_t. Fixes test/huge-pattern, - but the principle should be extended to handle more cases of overflow. - - src/cairo-pattern.c | 48 ++++++++++++++++++++++++++++++---- - test/Makefile.am | 5 ++- - test/huge-pattern-pdf-ref.png | Bin 0 -> 2716 bytes - test/huge-pattern-pdf-rgb24-ref.png | Bin 0 -> 2817 bytes - test/huge-pattern-ps3-ref.png | Bin 0 -> 1786 bytes - 5 files changed, 45 insertions(+), 8 deletions(-) - -commit ab1d106cba7aa4abe5f7253c089aadd15e0bb06d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 11 19:52:28 2008 +0100 - - [xlib] Use the cached xrender formats. - - Use the cached formats for consistency and simplify several double pointer - dereferences. - - src/cairo-xlib-surface.c | 64 ++++++++++++++++++++++++++++----------------- - 1 files changed, 40 insertions(+), 24 deletions(-) - -commit 6736faba3ebe4eae4c1d2aeeb3153eb6f12a32de -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 11 18:10:16 2008 +0100 - - [test/any2ppm] Do not attempt to compile PS without spectre - - Since CAN_TEST_PS_SURFACE does not currently require spectre, we were - attempting to compile in spectre support for any2ppm even on systems - without libspectre installed. Fix that by adding a separate flag for - CAIRO_HAS_SPECTRE. - - configure.ac | 5 ++++- - test/Makefile.am | 2 +- - test/any2ppm.c | 28 ++++++++++++++++++++-------- - 3 files changed, 25 insertions(+), 10 deletions(-) - -commit b35871116243724b59738fce00b512818c83ea17 -Author: Benjamin Otte <otte@gnome.org> -Date: Sat Oct 11 00:18:11 2008 +0100 - - [test] Add huge pattern. - - Add a test case to exercise range overflow during gradient construction. - - test/.gitignore | 1 + - test/Makefile.am | 4 ++ - test/huge-pattern-ref.png | Bin 0 -> 1619 bytes - test/huge-pattern.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 79 insertions(+), 0 deletions(-) - -commit 77070270813d2ca40d422e5301f75222d19e1d8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 10 22:24:01 2008 +0100 - - [test] Use _POSIX_C_SOURCE for flockfile. - - From bug 18010 (https://bugs.freedesktop.org/show_bug.cgi?id=18010), - in order to make flockfile() available we need to set _POSIX_C_SOURCE and - according to the man page, the appropriate feature check is - _POSIX_THREAD_SAFE_FUNCTIONS. - - test/cairo-test.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 34ff7e4ac42acfb2ab9921da21933113518bd8a0 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Oct 11 23:44:37 2008 +1030 - - Check that reads in truetype_reverse_cmap are within valid data - - Bulia Byak reported a bug where cairo was crashing with a particular - font. The font had an incorrect entry in the cmap table that caused - cairo to read from outside of the buffer allocated for the cmap. - - src/cairo-truetype-subset.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit a16ef6ead2b02120ca482aa3d2667e51b0c67e78 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 10 18:03:49 2008 +0100 - - [INSTALL] Mention pkg-config requirement - - Mention that building the configure script requires at least version 0.16 - of pkg-config. - - See the old bug: - Bug 4702 PKG_PROG_PKG_CONFIG: command not found - (https://bugs.freedesktop.org/show_bug.cgi?id=4702) - - INSTALL | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit eba9d87d541d89804f70e56874538a249de08502 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 10 16:51:07 2008 +0100 - - [image] Warn about a potential NULL return after finish(). - - Improve the wording as suggested by - https://bugs.freedesktop.org/show_bug.cgi?id=12659 - to warn about the possibility of returning NULL even if the passed in - surface was an image surface. - - src/cairo-image-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ac3e4b4bea574c94de77ec15878d116b619ee3f4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Oct 10 14:00:32 2008 +0100 - - [xlib] Disable XRender support if the surface has no xrender_format - - Bug 11734: - XRender crashes due to NULL pointer from Cairo on SGI O2 - (https://bugs.freedesktop.org/show_bug.cgi?id=1173) - is an example of a case where we try to perform an XRender operation on a - surface with a format that was not supported by the XRender extension. By - marking the extension version as -1 on those surfaces, the current checks - for SURFACE_RENDER_HAS_* always correctly return false and prevent us try - to create a Picture with a NULL xrender_format. - - src/cairo-xlib-surface.c | 37 ++++++++++++++++++++++++------------- - 1 files changed, 24 insertions(+), 13 deletions(-) - -commit 8ac8e8c523abaa5db24c5303c671ff3487bf0801 -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Sun Sep 21 14:29:30 2008 +0200 - - [test] Add ps2png check program using libspectre - - Add a simple program to compliment pdf2png and svg2png. - - configure.ac | 1 + - test/Makefile.am | 8 ++++ - test/ps2png.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 122 insertions(+), 0 deletions(-) - -commit 3e6afb353da1fee624b519f5a96b3303c7eb91ae -Author: Carlos Garcia Campos <carlosgc@gnome.org> -Date: Thu Oct 9 12:11:51 2008 +0100 - - [test/any2ppm] Enable PS conversion using libspectre. - - Complete the vector trilogy using libspectre to provide a similar - interface (to poppler and librsvg) around GhostScript. - - AUTHORS | 1 + - configure.ac | 20 ++++++++++++--- - test/Makefile.am | 4 +- - test/any2ppm.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++- - 4 files changed, 90 insertions(+), 8 deletions(-) - -commit ddd1615a1777181c6e8db1dbafacb68535ed163a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 23:13:03 2008 +0100 - - [pattern] Remove incorrect assert. - - It's possible to reach that point without setting the filter to NEAREST, - for example if using FAST or GAUSSIAN. - - src/cairo-pattern.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit c647c0bbca8694a14f5f5807b8349f0b0bb4987d -Author: Benjamin Otte <otte@gnome.org> -Date: Thu Oct 9 13:21:27 2008 +0200 - - [TEST] make imagediff work again - - It seems to have bitrotten - - test/imagediff.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit f644d78dc138a7ba920a108dfb058e9f0fdb5302 -Author: Björn Lindqvist <bjourne@gmail.com> -Date: Wed Oct 8 20:08:25 2008 +0100 - - [perf] Add composite performance test. - - Add a new test case to Cairo for checking the performance of Cairo's - equivalent to GDK's gdk_pixbuf_composite_color() operation. That is an - operation that happens to be extremely useful when viewing or editing - transparent images so I think it is important that it is as fast as - possible. - - AUTHORS | 1 + - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/composite-checker.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 112 insertions(+), 0 deletions(-) - -commit 96b083d3f0e47f919cb6d0f06735427eaea21565 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 18:53:46 2008 +0100 - - [test] Exercise degenerate dashes. - - Add a test case to capture the current behaviour when a segment ends on - an off/on dash transition. - - Originally filed as bug: - Miter artifacts for dashed strokes - https://bugs.freedesktop.org/show_bug.cgi?id=17973 - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/degenerate-dash-ref.png | Bin 0 -> 2005 bytes - test/degenerate-dash.c | 97 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 0 deletions(-) - -commit 6487a147a2129f588aae900b048b2a801ef95ec0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 15:26:03 2008 +0100 - - [cairo.h] Be defensive when checking for _MSC_VER - - Since cairo.h is a public header file, we need to be careful so that it - can be compiled by random compilers and even users specifying "-Werror - -Wundef" (mentioning no names, Company). So replace the bare (and legal) - #if _MSC_VER - with - #if defined (_MSC_VER) - just in case. - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 59141e56a723f741c87e2eaa37bf96e243ac5728 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 13:50:28 2008 +0100 - - [win32] Restore fine-grained fallback support for printing. - - Missed updating win32 when implementing the new paginated API to query - support for the fine-grained fallbacks. - - (Thanks to Adrian for spotting this oversight.) - - src/cairo-win32-printing-surface.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 565c02a37e2d140a20867081eea9bb5de9999b1c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 8 11:06:42 2008 +0100 - - [svg] Use finer-grained fallbacks for SVG 1.2 - - The use of fine-grained fallbacks requires the native support of the - SOURCE operator applied to an image on the target surface. SVG 1.2 - introduces the "comp-op:src" mode fulfilling this criteria - so we can - enable fine-grained fallbacks for 1.2+. - - Update test/fine-grained-fallbacks to exercise this pathway in SVG 1.2 - - as SVG natively supported all the current operations within that test. - This reveals yet another librsvg bug in handling SVG 1.2. - - src/cairo-paginated-private.h | 9 ++- - src/cairo-paginated-surface.c | 47 +++++--------- - src/cairo-pdf-surface.c | 14 +++- - src/cairo-ps-surface.c | 8 ++ - src/cairo-svg-surface.c | 34 +++++++--- - test/Makefile.am | 4 +- - test/finer-grained-fallbacks-ps2-argb32-ref.png | Bin 1047 -> 0 bytes - test/finer-grained-fallbacks-ps2-ref.png | Bin 0 -> 1356 bytes - test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 819 -> 1096 bytes - test/finer-grained-fallbacks-ps3-argb32-ref.png | Bin 1047 -> 0 bytes - test/finer-grained-fallbacks-ps3-ref.png | Bin 0 -> 1356 bytes - test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 819 -> 1096 bytes - test/finer-grained-fallbacks-ref.png | Bin 796 -> 1111 bytes - test/finer-grained-fallbacks-rgb24-ref.png | Bin 590 -> 1114 bytes - test/finer-grained-fallbacks.c | 79 ++++++++++++++++++++++- - 15 files changed, 147 insertions(+), 48 deletions(-) - -commit 0c777a3e0de0d48289432a3d66be68f8779b08a0 -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Tue Oct 7 15:20:33 2008 -0700 - - [win32] Use wide-char versions of some API functions, for compat with Windows Mobile - - src/cairo-win32-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit cf572b58e1197dac0ff1795b27b142c3e044cf45 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 09:55:03 2008 +0100 - - [tessellator] Compile fixes for !HAVE_INT64_T - - Fixup a couple of instances of implicit down-casting to 32bits from a - 64bit wide integer and add a new is_zero() predicate. - - src/cairo-bentley-ottmann.c | 14 +++++++------- - src/cairo-wideint-private.h | 10 +++++++++- - 2 files changed, 16 insertions(+), 8 deletions(-) - -commit 6b8c0559620ab23c4df1f381d2e95ffc307d2e2f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 09:43:45 2008 +0100 - - [tessellator] Avoid implicit promotion to 64bit integer. - - Avoid passing a 32bit integer as a cairo_int64_t in case we do not have a - 64bit native integral type. As a side-effect this means we can also use a - narrower multiply. - - src/cairo-bentley-ottmann.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit eaa4bd13926728e9da97a23df8a465ef2296049a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 21:09:16 2008 +0100 - - [pattern] After cloning adjust [xy]_offset if possible. - - For the simple case where the pattern matrix only contains an integer - translation then care is taken to convert that to a identity source matrix - with the translation applied to the [xy]_offsets. 5b97ee6525 broke this - guarantee by applying the clone offsets to the source matrix. So when the - source matrix is identity we can simply adjust the [xy]_offsets and - preserve the identity matrix. (This idea can be extended further by - removing any integer translation from the source matrix and storing it in - the [xy]_offsets as a means to extend the limited precision in - pixman_matrix_t - encountered when downscaling large images offset onto - the target surface.) - - src/cairo-pattern.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 552cc09e6be2b704dc32f986c84640d50316c25c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 21:05:57 2008 +0100 - - [xlib] Check integer translation for XCopyArea. - - A precondition for using the core XCopyArea protocol is that the source - attributes contain only integer translations. However, we failed to apply - any integer translations from the source matrix to the XCopyArea offsets. - This worked prior to 5b97ee6525 as - _cairo_pattern_acquire_surface_for_surface() was careful to only generate - an identity matrix if the pattern matrix only contained an integer - translation (and thus we would use XCopyArea in the xlib backend). - - src/cairo-xlib-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 308485a3fc70bc4455a01990443c1f954b8a66f8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Oct 7 20:19:10 2008 +0100 - - [test] Add a test for a reported regression by Michael Natterer. - - mitch reported on irc that expose events in the gimp were suffering from - artifacts which he tracked down to a bug with clipping and source - surfaces. This is the cairo test case for that regression. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/clipped-surface-ref.png | Bin 0 -> 401 bytes - test/clipped-surface.c | 70 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 73 insertions(+), 0 deletions(-) - -commit 28a3b546b91290f3377777adedcf7ab71e599188 -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Tue Oct 7 10:25:46 2008 -0700 - - [win32] create_similar should fall back to DIBs if DDB creation fail - - src/cairo-win32-surface.c | 43 +++++++++++++++++-------------------------- - 1 files changed, 17 insertions(+), 26 deletions(-) - -commit 4ae37a97b3e415591caa611533f44db5a29cfb72 -Author: Vladimir Vukicevic <vladimir@pobox.com> -Date: Tue Oct 7 10:18:41 2008 -0700 - - [quartz] initialize do_reflect field correctly for pattern draws - - src/cairo-quartz-surface.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 8cf399b944294645833088ee2ac1313093948b66 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 18:59:15 2008 +0100 - - [test] Add a test to exercise the internal twin font - - Although Behdad promises that the rendering is subject to improvement, - introduce a test to check consistency across platforms and update as - required. - - test/.gitignore | 1 + - test/Makefile.am | 4 +++ - test/twin-ps2-ref.png | Bin 0 -> 1167 bytes - test/twin-ps3-ref.png | Bin 0 -> 1167 bytes - test/twin-ref.png | Bin 0 -> 1836 bytes - test/twin.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 65 insertions(+), 0 deletions(-) - -commit 1f813ff04022a36a91bf9d1b0f7f2ae1c63b399f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 17:55:37 2008 +0100 - - [array] Silence gtk-doc complaints. - - gtk-doc fails make check for array as it insists that even the simplest - functions must have a long description and cannot be entirely described by - their arguments and return value. - - src/cairo-array.c | 26 ++++++++++++++++++++------ - 1 files changed, 20 insertions(+), 6 deletions(-) - -commit 7cb9ccb4cb2106bb59e181ee284f8dcc5504eb7a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 17:44:03 2008 +0100 - - Fixup a couple of trivials doc warnings. - - Correct the 'Returns' statement to match what gtk-doc expects. - - src/cairo-cache.c | 3 +-- - src/cairo-pattern.c | 5 ++--- - 2 files changed, 3 insertions(+), 5 deletions(-) - -commit d6f0351b6cbb0d542a069eb5d0a7377eb85a6e4e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 17:17:04 2008 +0100 - - [skiplist] Avoid repeated calls to compare on the same element when inserting. - - During insertion we must traverse the skiplist in order to find the - insertion point for the new element. As we descend each level, the next - element in the chain for this level is sometimes the same as the one we - just compared against (and know that the new element is greater than). - Hence we can skip the search on that level and descend to the next. During - world_map this reduces the number of calls into _sweep_line_elt_compare() - by ~2.5% (and when performing trapezoidation on strokes gives a similar - speed up of about 2% - not bad for the addition of a single line.) - - src/cairo-skiplist.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 1440399625ae0579d0748475fc924cfe74339a21 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 16:15:29 2008 +0100 - - [hull] Replace open-coding of 64bit arithmetic. - - Use primitives from cairo-wideint-private.h - in this case it helps to - make the code more readable as well as reduce dependence on native 64bit - integers. - - src/cairo-hull.c | 31 +++++++++++++++++++------------ - 1 files changed, 19 insertions(+), 12 deletions(-) - -commit c6a6bf580fa7036e4c28137f8c038beb5c347244 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 16:13:21 2008 +0100 - - [slope] Replace open-coding 64bit integer arithmetic. - - Prefer to use the operations form cairo-wideint-private.h in order to - improve readability and reduce our assumptions on the availability of - 64bit integers. - - src/cairo-slope.c | 14 ++++++-------- - 1 files changed, 6 insertions(+), 8 deletions(-) - -commit 5e3fcb7934f568bb7e304a1c434a9370b693df17 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Oct 6 17:02:54 2008 +0100 - - [wideint] Declare the wideint arithmetic functions as const. - - 'const' is a stricter form of 'pure' in that functions declared with that - attribute do not access any values other than their arguments (in - contrast to 'pure' which is allowed to read from global memory). - - src/cairo-compiler-private.h | 2 ++ - src/cairo-wideint-private.h | 2 +- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 9430bf57ebc86c79e28128e54aeb5a194c9cad03 -Author: Carl Worth <cworth@cworth.org> -Date: Mon Oct 6 14:00:37 2008 -0700 - - Fix scrambled version number in generated documentation. - - In the cairo 1.8.0 release the documentation would get generated with - the second and third version components transposed, (so it would say - 1.0.8). Fix the obviously mistaken transposition. - - doc/public/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5beae8f530fe7056fa965cb5ca7b345a667e8122 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 6 12:43:42 2008 -0400 - - [Makefile.am.releasing] Make 'make snapshot' print a banner when done - - Copied from "make distcheck" implementation. Prints something like: - - ============================================================= - cairo-1.8.1-20081006-38de89 archives ready for distribution: - cairo-1.8.1-20081006-38de89.tar.gz - ============================================================= - - build/Makefile.am.releasing | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 38de895d3863bd2e6fe921ad6cc6eeff15102701 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 6 12:11:18 2008 -0400 - - [RELEASING] Fix sample distcheck output to reflect current versioning - - RELEASING | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit f8018cf193823356270c8e7f21f3108fbe44679c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 6 11:45:08 2008 -0400 - - [boilerplate] Fix "make dist" - - The cairo-boilerplate-ps/pdf/svg.h files where removed in commit - 9841d9d58ea286f798626d325d50a85bf3f02c8f but the Makefile.sources - listing was not updated. - - boilerplate/Makefile.sources | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 6578ac148ecdd236b0860923e5dee87291c9966c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 6 11:39:47 2008 -0400 - - [twin-font] Make the stroke lighter - - I'm still to fine-tune the font and add hinting and bold/oblique support. - In the mean time though, a lighter stroke produces much nicer glyphs. - - src/cairo-font-face-twin.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2fb7753903daf5c207b22034682a250161af22ad -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Oct 6 11:39:00 2008 -0400 - - [Makefile.am.releasing] Exclude uid/gid from tarball - - By setting GNU tar options --owner=0 --group=0 - - build/Makefile.am.releasing | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 589564c3b02d5b0505806924bd051323717791a3 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Oct 4 01:36:07 2008 -0400 - - [user-font] Fix comment re backend interface - - src/cairo-user-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c98c1cb5325bbc05c88ea350ff99d6eaf56fd339 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 5 10:39:10 2008 +0100 - - [wideint] Mark functions as pure - - Take advantage of the gcc function attribute 'pure', which tells gcc that - the function result only depends upon its arguments and it has zero side - effects (e.g. it does not clobber memory). This gives gcc greater - opportunity to rearrange and optimize the wideint arithmetic. - - src/cairo-compiler-private.h | 6 ++++++ - src/cairo-wideint-private.h | 2 +- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 76dd4603d01068b1b377312ced6b44fe5419794f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Oct 5 10:15:49 2008 +0100 - - [tessellator] Replace open-coding _cairo_int64_cmp(). - - We often use the construct: - if (_cairo_int64_lt (A, B) - return -1; - if (_cairo_int64_gt (A, B) - return 1; - return 0; - to compare two large integers (int64, or int128) which does twice the - required work on CPUs without large integer support. So replace it with a - single wideint function _cairo_int64_cmp() and therefore allow - opportunities to both shrink the code size and write a more efficient - comparison. (The primarily motivation is to simply replace each block with - a single more expressive line.) - - src/cairo-bentley-ottmann.c | 19 ++-------------- - src/cairo-wideint-private.h | 10 ++++++++- - src/cairo-wideint.c | 48 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 60 insertions(+), 17 deletions(-) - -commit 6eead4a5f746e182eabfcda9959cd9cc53d95a89 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 4 12:39:21 2008 +0100 - - [stroke] Simplify dash-off logic. - - Remove a redundant level of if-else branching (and remove a duplicate - code) block by testing dash_on first. - - src/cairo-path-stroke.c | 65 ++++++++++++++++++++-------------------------- - 1 files changed, 28 insertions(+), 37 deletions(-) - -commit 4aa0991a11f03a47735dcfafe43d9505b939554e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 4 20:22:18 2008 +0100 - - [test] Mark fallback-resolution as XFAIL. - - There appears to be no simple solution here, as it seems to be a - fundamental flaw in the design of the meta-surface wrt to replaying into - a fallback image. (I may be wrong, but if Carl found no easy solution then - I feel no shame for my own failure ;-) - - test/Makefile.am | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit ae87382a84770f8656c369d258f705b8ac20049c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Oct 4 10:54:25 2008 +0100 - - [tessellator] Special case edge comparisons when on either end-point. - - If the sweep-line is currently on an end-point of a line, - then we know its precise x value and can use a cheaper comparator. - Considering that we often need to compare events at end-points (for - instance on a start event), this happens frequently enough to warrant - special casing. - - src/cairo-bentley-ottmann.c | 100 +++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 96 insertions(+), 4 deletions(-) - -commit ab23c2995356821537b9a0facdff87c339a05d2a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 1 12:18:16 2008 +0100 - - [tessellator] Direct comparison of result in edges_compare_x_for_y. - - We need to compare the x-coordinate of a line at a for a particular y, - without loss of precision. - - The x-coordinate along an edge for a given y is: - X = A_x + (Y - A_y) * A_dx / A_dy - - So the inequality we wish to test is: - A_x + (Y - A_y) * A_dx / A_dy -?- B_x + (Y - B_y) * B_dx / B_dy, - where -?- is our inequality operator. - - By construction we know that A_dy and B_dy (and (Y - A_y), (Y - B_y)) are - all positive, so we can rearrange it thus without causing a sign - change: - A_dy * B_dy * (A_x - B_x) -?- (Y - B_y) * B_dx * A_dy - - (Y - A_y) * A_dx * B_dy - - Given the assumption that all the deltas fit within 32 bits, we can compute - this comparison directly using 128 bit arithmetic. - - src/cairo-bentley-ottmann.c | 97 ++++++++++++++++++++++++------------------ - src/cairo-wideint-private.h | 1 + - 2 files changed, 56 insertions(+), 42 deletions(-) - -commit 7db03ac68cd556c903c07a2e2f8b75ec51263d12 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 1 12:34:36 2008 +0100 - - [tessellator] Use abort() instead of exit(). - - More friendly when debugging, as the debug will (by default) catch the - SIGTRAP and break at the offending test. - - src/cairo-bentley-ottmann.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 59e569576d00e9c1cb66a77cf447c3cc3fb038e7 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 19:04:39 2008 +0100 - - [traps] Discard trivially empty trapezoid. - - The convex_quad tessellator (and possibly even the more general polygon - tessellator) will generate empty trapezoids when given a - rectangle which can be trivially discarded before inserting into traps. - - src/cairo-traps.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 7a2329e9c8afbfecb88c6c50bd63aa03ea7f9f81 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 1 09:49:45 2008 +0100 - - [traps] Reset extents on clearing. - - When clearing the array of current trapezoids, reset the extents to - infinite so that they are properly recomputed. - - src/cairo-traps.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 8ec24a443d45b012df9b1a14b00a0b5b1c43e2ea -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 23:19:01 2008 +0100 - - [xlib] Share the common conditions for starting a new xGlyphElt using a macro. - - Move the predicate for starting a new glyph elt into a macro so that it - can be shared between _cairo_xlib_surface_emit_glyphs() and - _emit_glyph_chunks() without code duplication. - - src/cairo-xlib-surface.c | 39 ++++++++++++++++++++++----------------- - 1 files changed, 22 insertions(+), 17 deletions(-) - -commit a593338b2c2cdaff808947436f8fb9a52d74c695 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 1 16:24:33 2008 +0100 - - [xcb] Return false from _cairo_xcb_surface_is_similar(). - - _cairo_xcb_surface_is_similar() is currently only used by the pattern - cache to determine whether to keep the surface in the solid color cache. - This is fundamentally broken without hooking into Display closure as it - keeps a reference to an expired picture. So in order to prevent spurious - application crashes, disable the caching for xcb. - - src/cairo-xcb-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 65f1575f6b2392d59410f40281a52654053bd2a8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed Oct 1 16:16:45 2008 +0100 - - [xcb] Compile fix. - - Must compile xcb more often. Especially after copying code over from xlib. - - src/cairo-xcb-surface.c | 41 ++++++++++++++++++++++++----------------- - 1 files changed, 24 insertions(+), 17 deletions(-) - -commit e76432f7544d5b3b9157f09e18acc167d9ee90a3 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Sat Oct 4 00:35:43 2008 -0400 - - [win32] Use -MDd and -LDd instead of -MD and -LD for debug build - - As reported by Damian Frank: - - "I ran into a hitch with the Makefile.win32 infrastructure. It uses -MD and - -LD when linking regardless of the config, but it should be using -MDd and - -LDd for the debug config. I believe both the Makefile.win32.common and - src/Makefile.win32 files include erroneous declarations. This produces - warnings at link time about a mismatch when linking against properly created - debug libs (for instance, I had a zlib built as "LIB ASM Debug" that linked - properly against the debug runtime). - - This problem applies to pixman too; can you pass this along to the - maintainer?" - - Would be delighted to if someone commits a fix to pixman reading this - commit message. - - build/Makefile.win32.common | 8 ++++++-- - src/Makefile.win32 | 2 +- - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit 8ea9cb187a198c64bfb79af8001d95eab29715b4 -Author: Carl Worth <cworth@cworth.org> -Date: Wed Oct 1 14:12:18 2008 -0700 - - Use symbolic constants for Render repeat modes. - - Names like RepeatNone and RepeatNormal are much easier to - read and understand than bare 0 and 1. - - src/cairo-xlib-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2c58a2c3851afac0386fcf0bf8504a937231185c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 17:55:01 2008 -0400 - - [xlib] Start a new glyph element every 128 glyphs - - Xrender has limits at 252 glyphs. We play safe and fast and limit - elements to 128 glyphs. That's plenty, no measurable performance - hit expected. - - src/cairo-xlib-surface.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit fd7e09c7e66876b8492424e1c7d1260c12cc17f3 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 17:46:06 2008 -0400 - - [xlib] Allow room for glyph element padding - - Xrender pads glyph elements to 4byte boundaries. We didn't consider - that in our request size calculations. We do now. - - src/cairo-xlib-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit c01fb77abbaf28c03aa6a21ebb997638dbdf950b -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 17:41:51 2008 -0400 - - [xlib] s/_cairo_xlib_surface_emit_glyphs_chunk/_emit_glyphs_chunk/ - - For readability's sake. - - src/cairo-xlib-surface.c | 34 +++++++++++++++++----------------- - 1 files changed, 17 insertions(+), 17 deletions(-) - -commit c2ba25df1aec1cebfc4ce85e06a4187950675820 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 17:40:56 2008 -0400 - - [xlib] Add comment about glyph chunk invariant - - src/cairo-xlib-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit e983458e1fba15153815430c83619da53929139d -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 17:26:46 2008 -0400 - - Revert "[xlib] Correct calculation of XRenderComposite* request size." - - This reverts commit 0eb0c26474a19477554bfd580aa5f8ae77c29779. - The change was too drastic and overlooked some subleties of the old - code, but the main reason for the revert is that it introduced an - ugly duplicated glyph flush block. I'm working on a more incremental - fix. - - src/cairo-xlib-surface.c | 123 +++++++++++++++++----------------------------- - 1 files changed, 45 insertions(+), 78 deletions(-) - -commit 32a158528884562f4b22a81da3fa352ee1061835 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Tue Sep 30 15:20:36 2008 -0400 - - [configure.ac] Require autoconf >= 2.59 and automake >= 1.9.6 - - These are the versions available on RHEL5 (two years old now), and - we know cairo works with them. There's evidence that our build system - does not work with older automake, and we've been requiring autoconf 2.58 - but no one ever tested 2.58 with the new build system. It's very likely - that 2.58 doesn't work and needs some macro backporting. In any case, - no one reported that they have 2.58 when I asked on the list. - - configure.ac | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0eb0c26474a19477554bfd580aa5f8ae77c29779 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 13:33:25 2008 +0100 - - [xlib] Correct calculation of XRenderComposite* request size. - - show-glyphs-many is triggering an assertion failure within xlib. The cause - appears to be that we are submitting an overlong request. - - Reviewing the code and comparing with libXrender/src/Glyph.c I found two - points to address. - - 1. When encountering the first 2-byte, or 4-byte glyph and thus triggering - the recalculation of the current request_size, we did not check that there - was enough room for the expanded request. In case there is not, we need to - emit the current request (before expansion) and reset. - - 2. Subtleties in how XRenderCompositeText* constructs the binary protocol - buffer require that xGlyphElts are aligned to 32-bit boundaries and that - it inserts an additional xGlyphElt every 252 glyphs when width==1 or - every 254 glyphs for width==2 || width==4. Thus we need to explicitly - compute how many bytes would be required to add this glyph in accordance - with the above. - - Considering the complexity (and apparent fragility since we require tight - coupling to XRender) of the code, I'm sure there are more bugs to be - found. - - src/cairo-xlib-surface.c | 123 +++++++++++++++++++++++++++++----------------- - 1 files changed, 78 insertions(+), 45 deletions(-) - -commit 02a56a4c84cd07a2c33134974680bad7f17f733d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 15:08:54 2008 +0100 - - [test/show-glyphs-many] Exercise xlib boundary conditions. - - Within _cairo_xlib_surface_emit_glyphs() there are a number of - complications to do with packing as many glyphs as possible into a - single XRenderCompositeGlyph*() call. Essentially these consist of - choosing the right function and packing for the current glyphs, describing - runs of glyphs and ensuring that we do not exceed the maximum request size - within a single call. So we add to the test case we an attempt to show 64k - 2-byte glyphs and an attempt to mix 64k 1-byte and 2-byte glyphs, with the - change-over point chosen to overflow the maximum request size, should - _cairo_xlib_surface_emit_glyphs() naively resize the current request. - - test/show-glyphs-many.c | 83 ++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 64 insertions(+), 19 deletions(-) - -commit 2a347a92b0a27a42840f9538cb98f792be12b277 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 13:29:35 2008 +0100 - - [test/show-glyphs-many] Re-enable test to trigger crash in xlib. - - Moral of this story is bugs cluster. If we made a mistake, especially in a - complicated bit of code that is interfacing with another library, then we - are likely to make a similar mistake in future. Disabling this test hid a - regression between 1.4 and 1.6. - - test/Makefile.am | 15 +-------------- - test/show-glyphs-many.c | 9 +++++++++ - 2 files changed, 10 insertions(+), 14 deletions(-) - -commit fade54e71a48919cc3e8311e202960c66eab74bf -Author: Torsten Schönfeld <kaffeetisch@gmx.de> -Date: Tue Sep 30 11:47:53 2008 +0100 - - [doc] Add links to solid pattern constructors. - - Add links for the solid pattern constructors to the language bindings - guidelines in line with the other pattern types. - - doc/public/language-bindings.xml | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d9f50d7841fa0216df157ba632483c8b27c50119 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 11:03:29 2008 +0100 - - [test/filter-nearest-offset] Remove XFAIL status - - I swear that when I said that it was a rounding error, I was looking at an - image where the squares were overlapping the lines and had a listing of - all the coordinates used. However, the current output on all the machines - I have to hand is correct so I believe the underlying bug to be fixed. - - Update the reference images for the external renderers because (a) GS - exhibits the same bug cairo had and (b) librvsg/PDF do not use NEAREST - when applying surface patterns, so the squares are blurred as a result. - - test/Makefile.am | 8 +++++--- - test/filter-nearest-offset-pdf-ref.png | Bin 0 -> 4537 bytes - test/filter-nearest-offset-ps2-ref.png | Bin 0 -> 255 bytes - test/filter-nearest-offset-ps3-ref.png | Bin 0 -> 255 bytes - test/filter-nearest-offset-svg11-ref.png | Bin 0 -> 4739 bytes - test/filter-nearest-offset-svg12-ref.png | Bin 0 -> 4739 bytes - test/filter-nearest-offset.c | 3 +-- - 7 files changed, 6 insertions(+), 5 deletions(-) - -commit 7d5e6a18d5e72366e19cb806cbdad5ed180b53da -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 10:04:12 2008 +0100 - - [test/filter-nearest-offset] Paint a grey background + Add a test for the computation of approximate extents used by most + backends to esimate the region affected by drawing operations. - Avoid requiring (an absent!) rgb24 ref image by using an opaque grey - background. Confirm the reference image is identical to the old one - (modulo the background change) using GIMP. + Based on: + http://lists.cairographics.org/archives/cairo/2010-December/021331.html - test/filter-nearest-offset-ref.png | Bin 254 -> 248 bytes - test/filter-nearest-offset.c | 6 ++++++ - 2 files changed, 6 insertions(+), 0 deletions(-) + test/Makefile.am | 5 +++ + test/Makefile.sources | 1 + + test/bug-extents.c | 59 ++++++++++++++++++++++++++++++++++++++ + test/bug-extents.image16.ref.png | Bin 0 -> 7576 bytes + test/bug-extents.ps.ref.png | Bin 0 -> 5844 bytes + test/bug-extents.quartz.ref.png | Bin 0 -> 9310 bytes + test/bug-extents.ref.png | Bin 0 -> 9162 bytes + test/bug-extents.xlib.ref.png | Bin 0 -> 9234 bytes + 8 files changed, 65 insertions(+), 0 deletions(-) -commit 35be08715595aa0bda48ce0b3cb11711eee55c64 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Tue Sep 30 10:54:45 2008 +0100 +commit f832ff7f22499bfa8e907f9fb059d56857d11e68 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Nov 28 16:58:20 2010 +0100 - [Makefile.am] Only rerun headers-standalone if a header file has changed + test: Fix ref images - Use a stamp to mark the time that the headers were last checked and only - rerun the test if any have been modified since. + The corners of the boxes in these ref images were not correct. - src/.gitignore | 1 + - src/Makefile.am.analysis | 4 +++- - 2 files changed, 4 insertions(+), 1 deletions(-) + test/clip-stroke.image16.ref.png | Bin 1308 -> 1305 bytes + test/clip-stroke.ref.png | Bin 1442 -> 1447 bytes + test/clipped-group.image16.ref.png | Bin 281 -> 270 bytes + test/clipped-group.ref.png | Bin 289 -> 289 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) -commit 6da8d8ea62399d94281a2a262a630ef113062d0c -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 17:56:34 2008 +0100 +commit ff35af3fd73e59ea29b1a322c833f7dd24b0b8bc +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Nov 28 14:32:51 2010 +0100 - [pattern] Fix up OBO introduced to cloned area + image: Fix compositing of unaligned boxes - In the midst of porting 5eec3e378afd6ff9991cea8e42b8478eb3e79773 I failed - to include the pad in the floor() and ceil() which introduces two - potential off-by-one errors into each dimension of the region of interest - of the source surface. - - src/cairo-pattern.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit e3f9e40df74b0334c2b544790fd3485ba527bd55 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Sep 29 11:49:04 2008 -0400 - - Fix residues of the Makefile.*.config Makefile.*.features renaming + The input of _fill_unaligned_boxes is (supposed to be) composed only + of disjoint rectangles, that can safely be passed to the rectilinear + span converter, but this function artificially introduces intersecting + rectangles when drawing non-aligned boxes. - They just don't seem to want to die... - - boilerplate/Makefile.win32 | 2 +- - src/Makefile.sources | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit d703f964aa7d1d4c8ec0b8a5dee437c222ce8629 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 16:37:35 2008 +0100 - - Clean up compile warnings. + Using non-intersecting rectangles is easy and makes the code correct. - A couple of unchecked status returns (which should always be - CAIRO_STATUS_SUCCESS) and an unused variable. - - src/cairo-surface.c | 8 ++++++-- - src/cairo-svg-surface.c | 1 - - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit 1310df44edcf0b9fee648c8f8688d4a1177cde68 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Mon Sep 29 11:34:19 2008 -0400 - - [text_to_glyphs] Further enhance the docs + Fixes rectilinear-grid. - The most complex public cairo API deserves more doc love... + Reviewed-by: Uli Schlachter <psychon@znc.in> - src/cairo-scaled-font.c | 8 +++++--- - src/cairo-user-font.c | 5 +++++ - src/cairo.h | 2 +- - 3 files changed, 11 insertions(+), 4 deletions(-) + src/cairo-image-surface.c | 22 ++++++++++++++-------- + 1 files changed, 14 insertions(+), 8 deletions(-) -commit 41c66a9dfa9f4e7b9839db9dc362f5fa48797561 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 15:28:28 2008 +0100 +commit 7b29f1d5d85ebb7e92e9759692233c80a4687a07 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Nov 26 17:55:35 2010 +0100 - [test/xlib-surface-source] Fix ill-timed XCloseDisplay + test: Add rectilinear-grid - Sigh - finding a crasher in xlib seemed too good to be true. And it was. - The bug is due to the coupling of the XCloseDisplay with the user_data on - the source surface. + The rectilinear scan converter assumes disjoint rects as input, but + cairo-image passes intersecting rectangles to it. - This was an externally trigger XCloseDisplay whilst the user had live - surfaces, so I consider this a gross application bug and therefore does - not require graceful handling within cairo-xlib. However, I'm willing to - listen to reason... + This test shows that image and any backends passing through it for the + rasterization (fallbacks, vector backends whose renderer is + cairo-based) fail in compute the corners of intersecting rectangles + correctly. - test/surface-source.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/rectilinear-grid.c | 78 +++++++++++++++++++++++++++++++++ + test/rectilinear-grid.image16.ref.png | Bin 0 -> 638 bytes + test/rectilinear-grid.ref.png | Bin 0 -> 569 bytes + 5 files changed, 81 insertions(+), 0 deletions(-) -commit 63ee963c63a73cf6d9272e15a7d8f7b63f12e77b -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 15:09:23 2008 +0100 +commit 9ec51baa779a30041ea944643d4d0b8333bb759b +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Nov 26 21:41:17 2010 +1030 - [user-font] Rewrite text_to_glyphs allocation instructions. - - Resolve the seemingly conflicting two paragraphs that instruct the writer - of a user-font on when to allocate the glyphs array during text_to_glyphs, - so that it is consistent with itself and the code. In particular, I could - find no indication in the code that num_glyphs is preset to -1 (it should - be a user parameter reflecting the number of entries in the supplied glyph - buffer) and the callback must allocate the array using - cairo_glyph_allocate(). + PDF: Add missing clipper_reset + (cherry picked from commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf) - src/cairo.h | 33 ++++++++++++++------------------- - 1 files changed, 14 insertions(+), 19 deletions(-) + src/cairo-pdf-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit c23dbc4c616aed05dfe71901ce7ac0cadcbfb13d -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 13:54:12 2008 +0100 +commit 841a2df7359e2b491aed7ed8c043cce669357ae3 +Author: Markus Stange <mstange@themasta.com> +Date: Fri Nov 5 09:23:44 2010 +0100 - [test/surface-source] Modify to trigger a crash. + Fix type of _cairo_memory_stream_destroy parameter - Whilst investigating: - Bug 7360 painting huge surfaces fails - https://bugs.freedesktop.org/show_bug.cgi?id=7360 - I found a particular combination of operations that cause a crash within - xlib, so I'm committing the test for posterity. + In 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 + _cairo_memory_stream_destroy was changed to take an unsigned long + instead of unsigned int, and the two callsites in cairo-gl-shaders.c + weren't updated. - test/surface-source.c | 50 +++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 38 insertions(+), 12 deletions(-) + src/cairo-gl-shaders.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit 3b33d49d37a5751e7848516c468b323e19c34bea -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 08:14:24 2008 +0100 +commit b6a97499c71af60a3f15d131d51eb53fb21b48ff +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 5 10:36:38 2010 +0200 - [test/filter-bilinear-extents] Remove XFAIL. - - With the reintroduction of Carl Worth's and Owen Taylor's work to expand - pattern extents as necessary to include extra samples due to the filter - radius, we expect filter-bilinear-extents to PASS. This patch series is - important as it factors out our assumptions about filter radius into a - single function and cleans up the code in its wake. - - However, since the external PS/PDF renderers do not necessarily use the same - filter as cairo (and currently they only use NEAREST due to lack of - /Interpolate emission in those backends) we can expect differences in test - output. So add the respective reference images to capture current - expectations and to highlight future changes. + xcb: Do not return value in void function - Fixes bugs: - Bug 15349 - bad clipping with EXTEND_NONE - [https://bugs.freedesktop.org/show_bug.cgi?id=15349], - Bug 15367 -Improve filtering handling in cairo-pattern.c - [https://bugs.freedesktop.org/show_bug.cgi?id=15367] + Sun Studio Compiler complains: + "cairo-xcb-surface.c", line 585: void function cannot return value + even if the returned value is void. + Some minor code restructuring removes the issue. - test/Makefile.am | 35 +++++++++++++++++++++++++++++- - test/filter-bilinear-extents-pdf-ref.png | Bin 0 -> 798 bytes - test/filter-bilinear-extents-ps2-ref.png | Bin 0 -> 173 bytes - test/filter-bilinear-extents-ps3-ref.png | Bin 0 -> 173 bytes - 4 files changed, 34 insertions(+), 1 deletions(-) + src/cairo-xcb-surface.c | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) -commit 5eec3e378afd6ff9991cea8e42b8478eb3e79773 -Author: Owen W. Taylor <otaylor@fishsoup.net> -Date: Mon Sep 29 00:53:59 2008 +0100 +commit e71588c80d5c6112fa9f7c6ea369d90f9284199f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 24 16:40:53 2010 +0200 - [pattern] Improve handling of filter radius and optimize when possible. - - Factor out common filter analysis code from _cairo_pattern_get_extents() - so that we can share it with _cairo_pattern_acquire_surface_for_surface() - as well. During the analysis of the filter determine whether the pattern - matrix maps source pixels exactly onto destination pixels and if so convert - the filter to NEAREST - generalising the existing conversion to NEAREST. + test: Add romedalen images copyright information - (Patch ported to master by Chris Wilson, all bugs are his.) + romedalen.png and romedalen.jpg have been bundled into the test + suite without an explicit copyright notice. - src/cairo-matrix.c | 29 +++++++++++++ - src/cairo-pattern.c | 113 +++++++++++++++++++++++++++++++++++---------------- - src/cairoint.h | 3 + - 3 files changed, 110 insertions(+), 35 deletions(-) + test/COPYING | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) -commit 7d7057cf8896a3558fadc35d160d3bc667972800 -Author: Carl Worth <cworth@cworth.org> -Date: Fri Apr 4 19:00:28 2008 -0700 +commit 2b3d8de11a536d668084ea6d2bf295da1d1cdc11 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Oct 16 22:51:28 2010 +0200 - _cairo_pattern_get_extents: Fix to allow for expansion based on filter - - This fixes the filter-bilinear-extents test case and the - related bug entry: + Fix degenerate arcs - bad clipping with EXTEND_NONE - http://bugs.freedesktop.org/show_bug.cgi?id=15349 + Make sure that degenerate arcs become a move_to-line_to sequence + instead of just a move_to. - Though there are still differences in the PDF and PostScript - backends, (primarily because we can't capture cairo's filter - modes in those file formats). + Fixes get-path-extents. - src/cairo-pattern.c | 22 ++++++++++++++++++++ - test/paint-source-alpha-svg11-ref.png | Bin 505 -> 756 bytes - ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 182 -> 229 bytes - .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 192 -> 243 bytes - ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 182 -> 229 bytes - .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 192 -> 243 bytes - 6 files changed, 22 insertions(+), 0 deletions(-) + src/cairo-arc.c | 4 ++++ + src/cairo.c | 1 + + 2 files changed, 5 insertions(+), 0 deletions(-) -commit 6ef4bd4ecfa30f00ad0fe6e5e5f1d1a0a5dfe8e3 -Author: Owen W. Taylor <otaylor@fishsoup.net> -Date: Sun Sep 28 23:30:22 2008 +0100 +commit fafca7ace250e3f4f9c60584f0ddff187c690068 +Author: Joerg Sonnenberger <joerg@NetBSD.org> +Date: Tue Oct 12 22:07:37 2010 +0200 - [pattern] Fix acquiring outside of source bounds - - Restrict the area we acquire from the source image to the bounds of - the source image, even when we have an identity matrix. This handles - circumstances where the pattern extents may be enlarged due to - filtering, for example when applying a bilinear filter. - - This patch replaces the open-coded rectangle intersection which has - already proven itself to be a source of bugs. - - (Patch ported to master by Chris Wilson, all bugs are his.) + LD_PRELOAD is supported on DragonFly. - src/cairo-pattern.c | 63 ++++++++++++++++++++++++++------------------------- - 1 files changed, 32 insertions(+), 31 deletions(-) + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 6d0f2c4421e34a078469a81646a52dfa47b4dcf1 -Author: Owen W. Taylor <otaylor@fishsoup.net> -Date: Mon Sep 29 00:02:18 2008 +0100 +commit c20d55eb1c1eb1c6f51a21c7eb205ba4c2c125e8 +Author: Erik Zeek <zeekec@mad.scientist.com> +Date: Thu Nov 4 17:57:03 2010 +0100 - [pattern] Remove the hack to support cloning surface patterns. + Fix build on gentoo - Remove instances (abuses) of calling _cairo_pattern_acquire_surface() on - a known-surface-pattern with a hack to say "give me the entire surface". - If you know you just want the entire surface as an image surface, that - can be done more simply. + The problem is probably caused by a change in the behavior of autoconf + (2.67). - (Split from original patch on - https://bugs.freedesktop.org/attachment.cgi?id=15703, by Chris Wilson - - as usual all bugs are his.) + See http://bugs.gentoo.org/336329 - src/cairo-pattern.c | 5 +--- - src/cairo-svg-surface.c | 16 +------------ - src/cairo-win32-printing-surface.c | 41 ++++++++++++++++------------------- - 3 files changed, 22 insertions(+), 40 deletions(-) + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit 117f643e49615295eb37af24efffd8327429cbf9 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 22:42:30 2008 +0100 +commit 8ef5161da307361e20dad68df74512c5afcbb012 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Nov 6 15:46:48 2010 +0100 - [test/filter-bilinear-extents] Extend testing. + configure: Correct reporting of tee backend - First, explicitly set the filter mode to BILINEAR in case the default should - ever change. And then draw a second pattern with extents that in theory - are larger than the source surface in order to test handling of acquiring - out-of-bounds extents. + Since 9f33f8453b4949cfdc63169d3acd7238f89379c2 tee is not compiled in + anymore by default. Reporting it as always enabled is misleading. - test/filter-bilinear-extents.c | 45 +++++++++++++++++++++++++++------------ - 1 files changed, 31 insertions(+), 14 deletions(-) + build/configure.ac.features | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 3ff86a4510b718a3154b56b052be786f9495a3b0 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 08:38:31 2008 +0100 +commit a6b503961b7ffd6a0725ad7d98ec1c46e2f15f25 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 22 23:41:33 2010 +0100 - [test] Disable caching of SVG fail/pass surfaces. + ps: Fix painting - As we use cairo to convert SVG files back to an image, that process is - dependent upon changes within our library and so we cannot skip the - conversion if the SVG file happens to match a previous run. Fortunately, - librsvg is quick enough that this is not a major issue. - - boilerplate/cairo-boilerplate.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 24b22f0d2161f7a4ce75ceb2a86a77737027ee56 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Mon Sep 29 07:52:09 2008 +0100 - - [glitz] Compile fix for typo. + Painting of some pattern was broken because the paint operation was + implemented as a fill to a rect containing the clip, but this rect was + not transformed as appropriate (using the cairo_to_ps matrix). + PDF simply fills the whole surface rect, so we implement the same + behavior in PS. - I wonder whether merely fixing a compile error in glitz will do anything - towards its utility... Anyway fix the missing comma as reported by - Shunichi Fuji and correct the asserts. + Fixes clip-group-shapes-circles, clip-stroke, linear-gradient-extend, + linear-gradient-one-stop, radial-gradient-one-stop. - src/cairo-glitz-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + src/cairo-ps-surface.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) -commit 4f449107afba8ca96cd16e8dec283db124105dc8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 21:05:36 2008 +0100 +commit b8347e33539402ef64d652bc0f67522e4d02d51c +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 21 00:37:29 2010 +1030 - [test/fallback-resolution] Exercise a couple of outstanding bugs. - - Use dashes to exercise bugs: - https://bugs.freedesktop.org/show_bug.cgi?id=9189 - https://bugs.freedesktop.org/show_bug.cgi?id=17223 - Note bug 17223 indicates that this is still relevant for win32 printing - where fallbacks are used if the dash offset is non-zero. + PS: Fix regression - incorrect EPS bounding box - And use a pattern to exercise the (fixed) regression: - https://bugs.launchpad.net/inkscape/+bug/234546 + https://bugs.freedesktop.org/show_bug.cgi?id=24688 + (cherry picked from commit bb4055dac6a937b3412170a332b5effe4bbeff7d) - test/fallback-resolution-ppi150-ref.png | Bin 2397 -> 8043 bytes - test/fallback-resolution-ppi300-ref.png | Bin 1591 -> 5637 bytes - test/fallback-resolution-ppi37.5-ref.png | Bin 4681 -> 14098 bytes - test/fallback-resolution-ppi600-ref.png | Bin 1121 -> 4104 bytes - test/fallback-resolution-ppi72-ref.png | Bin 2497 -> 8409 bytes - test/fallback-resolution-ppi75-ref.png | Bin 3575 -> 12101 bytes - test/fallback-resolution.c | 40 ++++++++++++++++++++++++++++- - 7 files changed, 38 insertions(+), 2 deletions(-) + src/cairo-analysis-surface.c | 40 ++++++++++------------------------------ + 1 files changed, 10 insertions(+), 30 deletions(-) -commit 0a7d781ab020171e70bd1dc66ff1556106e5be3f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 18:57:15 2008 +0100 +commit cfff4f30a0eaa29b817cb32616c2da5a27921332 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 20 23:54:00 2010 +1030 - [perf] Add rounded rectangle perf case. + PS: Fix regression - missing page content in EPS output - Add the performance test case to compare the speed of filling a rounded - rectangle (one with camphered corners) as opposed to an ordinary - rectangle. Since the majority of the pixels are identical, ideally the two - cases would take similar times (modulo the additional overhead in the more - complex path). + https://bugs.freedesktop.org/show_bug.cgi?id=24688 + (cherry picked from commit d3746448d78fcedf8f8f9a7d0fca47f1bd6a5b67) - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/rectangles.c | 22 +++++++++- - perf/rounded-rectangles.c | 111 +++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 135 insertions(+), 1 deletions(-) + src/cairo-ps-surface.c | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) -commit d52b55cb1b2a4e9b5fd8dd12592a227f8f6a93fc -Author: Karl Tomlinson <karlt+@karlt.net> -Date: Sun Sep 28 17:51:23 2008 +0100 +commit ed87ddddb3994f126e0f2d18fa23da6bc5ed579e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 20 00:50:04 2010 +1030 - [xlib] _surfaces_compatible() can return true for different picture formats - - _surfaces_compatible in cairo-xlib-surface returns true for surfaces with - different xrender_format when each has the same depth and no (NULL) - visual. - - Common picture formats will not have the same depth, but - it is possible to create a surface with a non-standard xrender_format - having the same depth as another xrender_format with - cairo_xlib_surface_create_with_xrender_format. - - Both cairo_xlib_surface_create_with_xrender_format and - _cairo_xlib_surface_create_similar_with_format create surfaces with no - visual. - - The same issue exists in the xcb backend. + PS/PDF: Fix regression when changing page size to a larger size - Fixes bug https://bugs.freedesktop.org/show_bug.cgi?id=16564. + https://bugs.freedesktop.org/show_bug.cgi?id=24691 + (cherry picked from commit e7c5f470436220668e50201d775a9fec47162a67) - AUTHORS | 1 + - src/cairo-xcb-surface.c | 4 +++- - src/cairo-xlib-surface.c | 4 +++- - 3 files changed, 7 insertions(+), 2 deletions(-) + src/cairo-paginated-surface.c | 28 ++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 10 ++++++++-- + src/cairo-ps-surface.c | 6 ++++++ + 3 files changed, 42 insertions(+), 2 deletions(-) -commit b6b54e2f2736bfa9f76b7b6fc0da5d35a71fe846 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 17:13:11 2008 +0100 +commit ccff76433e1cd068e5534d0ab633c27b0faf47d2 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Nov 10 20:09:53 2010 +1030 - [svg] Compile fix for last commit. + PDF: Restrict ActualText to PDF version >= 1.5 - Sorry - badly merged patch (missed a chunk). - - src/cairo-svg-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit cff3bcba68233101c5518801b64e37d2f0e70ae8 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 17:06:32 2008 +0100 - - [svg] Check that the mask is supported. + The use of ActualText in a marked content sequence is a PDF 1.5 + feature. - During the analyze phase we also need to check whether we can emit the mask - without requiring fallbacks. + A 'use_actual_text' flag linked to the PDF version has already been + implemented in pdf-operators but for some reason this flag had not + been used to control the use of ActualText. + (cherry picked from commit 3afd7cd031ab9097e37c3e89d86ec41d015fdeb8) - src/cairo-svg-surface.c | 17 +++++++++++++++-- - 1 files changed, 15 insertions(+), 2 deletions(-) + src/cairo-pdf-operators.c | 31 ++++++++++++++++++------------- + 1 files changed, 18 insertions(+), 13 deletions(-) -commit 8ad3031359d74bdff4b1e3ef8d0af047821f1795 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 17:04:15 2008 +0100 +commit e0967ff83c24aaf6d6b3a93a627872820be9012b +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 21:15:30 2010 +1030 - [svg] Enable the assertion that paint() is supported. - - The XXX comment before the disabled assert is misleading as the final - fallback image paint operation should never trigger UNSUPPORTED. + Fix type1-fallback bbox + (cherry picked from commit 74873c82242e9c124b69e05d0f8abdf78983d62d) - src/cairo-svg-surface.c | 13 ++++--------- - 1 files changed, 4 insertions(+), 9 deletions(-) + src/cairo-type1-fallback.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) -commit 95e637f9ac9e4256f7ba73e8f048f8e559631c82 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 16:54:59 2008 +0100 +commit 1413a44f64982e5196ca338c7cee5dfe19cd4b40 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 6 18:44:54 2010 +1030 - [paginated] Set paginated mode before every replay. - - Previously we were replaying full page fallbacks without updating the - mode - this was upsetting SVG. + configure.ac.features: s/Meta/Recording/ + (cherry picked from commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e) - src/cairo-paginated-surface.c | 23 ++++++++++++++--------- - 1 files changed, 14 insertions(+), 9 deletions(-) + build/configure.ac.features | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 36b98589911ab57762317ec95cbff41681c1e0b6 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 16:24:40 2008 +0100 +commit e9bb70d2dee4ef7a54e3971f09a08df30c2b5287 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Nov 5 11:40:00 2010 -0400 - [svg] Kill _cairo_svg_surface_force_fallbacks. + Fix degenerate vertical path bounds. - It is not used, but refuses to die! + 6b77567b6ef28710c7707ab82c7fa95c810152d1 made vertical + path bounds with no area return extents of 0,0. This fixes + the problem by not assuming degenerate path bounds are 0,0 - src/cairo-svg-surface.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) + src/cairo-path-bounds.c | 4 +++- + test/get-path-extents.c | 40 ++++++++++++++++++++++++++++++++-------- + 2 files changed, 35 insertions(+), 9 deletions(-) -commit 57851464f920d52444d19d25e78293fa0f40c5f9 -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Sep 28 17:02:23 2008 +0200 +commit 91a6fe64236985d30f5794d760698deafd9e6511 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 1 21:15:07 2010 +0100 - [SVG] make backend handle new operators gracefully + image: Use correct size for allocation + + In 06e9caf86199e8261a07db6d4774628fa147728d the type of the variables + was changed, but the type used to compute the allocation size was not. - Previously, the SVG backend would rash when new operators were added to - cairo.h, now it returns UNSUPPORTED. - Also unsupported operators can now be set as NULL, so image fallbacks can - be used properly. - Should use fallbacks instead of color-dodge for CAIRO_OPERATOR_STURATE? + Fixes a crash in user-font-mask (test-fallback backend). + (cherry picked from commit c7027c9d89d9a13d6cbc1727fc8513c908878db9) - src/cairo-svg-surface.c | 45 +++++++++++++++++++++++++++++++-------------- - 1 files changed, 31 insertions(+), 14 deletions(-) + src/cairo-image-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) -commit fda80cc852a109fe60e3277a1847bc5c24f35d8e -Author: Benjamin Otte <otte@gnome.org> -Date: Sun Sep 28 14:57:49 2008 +0200 +commit 83259f6ed60e00d0c25ca81c9ff9adfc017ebf5f +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Oct 28 13:57:05 2010 +0200 - [SVG] use _cairo_operator_bounded_by_source() - - previously, the code was duplicating its functionality + build: Don't build cairo-fdr when the tee surface is off - src/cairo-svg-surface.c | 27 ++++++++++++--------------- - 1 files changed, 12 insertions(+), 15 deletions(-) + util/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) -commit 3c18d95b293eddaa25232bc06398c78bc8043cb4 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 15:57:37 2008 +0100 +commit efc2440526c609338d68354ddf38031d1fa7c2c4 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 28 21:21:00 2010 +1030 - Compute device_transform_inverse. - - Because we can independently set either the device scale or the device - offset, we need to be careful and recompute the inverse rather than simply - assuming that the original contents of the device transform is identity. + PDF: Don't use the currently set color after a 'Q' operator - Fixes regression https://bugs.launchpad.net/inkscape/+bug/234546. + https://bugs.freedesktop.org/show_bug.cgi?id=31140 + (cherry picked from commit e23bcfd4300870034f07b1ecd1bb4d2ac95d9785) - src/cairo-surface.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) + src/cairo-pdf-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 9841d9d58ea286f798626d325d50a85bf3f02c8f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sun Sep 28 13:34:50 2008 +0100 - - Automate error checking for fallback-resolution. - - For this we extend the boilerplate get_image() routines to extract a - single page out of a paginated document and then proceed to manually - check each page of the fallback-resolution test. - - (Well that's the theory, in practice SVG doesn't support multiple pages - and so we just generate a new surface for each resolution. But the - infrastructure is in place so that we can automate other tests, - e.g. test/multi-pages.) - - boilerplate/cairo-boilerplate-pdf-private.h | 5 + - boilerplate/cairo-boilerplate-pdf.c | 29 +- - boilerplate/cairo-boilerplate-pdf.h | 33 -- - boilerplate/cairo-boilerplate-ps-private.h | 9 +- - boilerplate/cairo-boilerplate-ps.c | 33 +- - boilerplate/cairo-boilerplate-ps.h | 33 -- - boilerplate/cairo-boilerplate-svg-private.h | 5 + - boilerplate/cairo-boilerplate-svg.c | 36 +- - boilerplate/cairo-boilerplate-svg.h | 33 -- - .../cairo-boilerplate-test-surfaces-private.h | 1 + - boilerplate/cairo-boilerplate-test-surfaces.c | 7 +- - boilerplate/cairo-boilerplate-win32-printing.c | 5 + - boilerplate/cairo-boilerplate-win32-private.h | 1 + - boilerplate/cairo-boilerplate.c | 74 ++-- - boilerplate/cairo-boilerplate.h | 7 + - src/cairo-svg-surface.c | 6 +- - test/Makefile.am | 6 + - test/cairo-test.c | 36 +- - test/cairo-test.h | 12 + - test/fallback-resolution-ppi150-ref.png | Bin 0 -> 2397 bytes - test/fallback-resolution-ppi300-ref.png | Bin 0 -> 1591 bytes - test/fallback-resolution-ppi37.5-ref.png | Bin 0 -> 4681 bytes - test/fallback-resolution-ppi600-ref.png | Bin 0 -> 1121 bytes - test/fallback-resolution-ppi72-ref.png | Bin 0 -> 2497 bytes - test/fallback-resolution-ppi75-ref.png | Bin 0 -> 3575 bytes - test/fallback-resolution.c | 413 +++++++++++++++----- - 26 files changed, 486 insertions(+), 298 deletions(-) - -commit cca1fc6358e9d0213dd2b41a5bfd1629eec6511e -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 21:53:21 2008 +0100 +commit f47830dbbc34c7068ccdd8f7f9042e8734c9e408 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Oct 24 11:32:41 2010 +1030 - [test] Fix target specific tests for recent SVG/PS version split. + Type 1 subset: Fix glyph advance - A few tests explicitly checked whether the "ps" or "svg" target was - enabled and this broke because of the name change. So fixup, to run - the generic test if either PS or SVG target is enabled as appropriate. + https://bugs.freedesktop.org/show_bug.cgi?id=31062 + (cherry picked from commit 6dc0b19adb6da690ad5944623081b9cdb42de066) - test/create-for-stream.c | 8 ++++++-- - test/fallback-resolution.c | 8 ++++++-- - test/multi-page.c | 4 +++- - test/ps-features.c | 4 +++- - test/svg-clip.c | 4 +++- - test/svg-surface.c | 4 +++- - 6 files changed, 24 insertions(+), 8 deletions(-) + src/cairo-type1-subset.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) -commit 39e4a0bcd04191eecfc593653a4ba32a28fcac6a -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 19:33:51 2008 +0100 +commit f747ea81fb91239690b1785bce9ed29cb58c9098 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 14 19:28:13 2010 +1030 - [test] Update list of REFERENCE_IMAGES + PDF: Fix regression in EXTEND_NONE gradients - A few typos, deletions and additions from the inclusion of versioned - SVG/PS testing. - - test/Makefile.am | 50 +++++++++++++++++++++++++++++++------------------- - 1 files changed, 31 insertions(+), 19 deletions(-) - -commit 260362e5728e2591bb50f565ef04ba951d95de79 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 19:16:34 2008 +0100 - - [cairo-test] Fix cairo_test_file_is_older(). + The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern() + must be identical to the test in + _cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will + reference a smask that does not exist. - It did not even compile, so no longer it wasn't deleting cached results - if you updated the reference images. + The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can + draw EXTEND_NONE gradients with opaque color stops without requiring a + smask. + (cherry picked from commit 7a17ef31760c49b81fd2890814f5b2aeb8c6b3a3) - test/cairo-test.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) + src/cairo-pdf-surface.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) -commit ffbb67303c1a4d986096ba046bb3256314b9f1b1 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 18:54:45 2008 +0100 +commit 7450a3c8a7843334d6e16af3ecef88915b5d9f26 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 19:18:28 2010 +0930 - [test/gradient-constant-alpha] Remove ps2 reference images. + pdf-operators: fix bug that was causing unnecessary repositioning of text - PostScript level 2 has no support for gradients and so should uses image - fallbacks and hence do not require the GS specific reference images. + This optimizes the output to increase the maximum amount of text that + is emitted with a single Tj operator. + (cherry picked from commit 165a14b5646d582781d119874f549ec9a02d7f53) - test/Makefile.am | 2 -- - test/gradient-constant-alpha-ps2-ref.png | Bin 124 -> 0 bytes - test/gradient-constant-alpha-ps2-rgb24-ref.png | Bin 124 -> 0 bytes - 3 files changed, 0 insertions(+), 2 deletions(-) + src/cairo-pdf-operators-private.h | 1 + + src/cairo-pdf-operators.c | 7 ++++++- + 2 files changed, 7 insertions(+), 1 deletions(-) -commit 4fa9f8c0608c137d9aa277039cb286c8294e6a2f -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 17:42:06 2008 +0100 +commit 43c93f2b101f534f8aa4213403af3281fcdc17fb +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 1 17:41:28 2010 +0930 - [test/large-source] Remove stale comment. + Fix font metrics in PDF Type 1 fonts - Delete a reference to an old limitation of pixman. + edcefa87 introduced a bug in the Type 1 font metrics in PDF files. + (cherry picked from commit 3f817dcfd39ffdb73ac694fd90a47d9d3a42af74) - test/large-source.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) + src/cairo-type1-subset.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) -commit 35f1e2fa4f15c562e5cc41578b413c6874e131bc +commit 66ace8cd33c0ebe88972f0c4d5c0effeacb1cea3 Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 17:37:32 2008 +0100 +Date: Wed Sep 29 13:46:02 2010 +0100 - [test/operator*] Remove XFAIL descriptions. + image: The a8 in-place span compositing is only valid for SOURCE - The tests should now pass, so remove the line claiming that they fail - for unknown reasons. + Fixes test/a8-clear. + + Reported-by: Jeremy Moles <jeremy@emperorlinux.com> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - test/operator-alpha.c | 3 +-- - test/operator.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) + src/cairo-image-surface.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) -commit 871f683367b1a1647b607f9221e1fc2eddc6e5dd -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 17:24:57 2008 +0100 - - clone_similar(): s/device_offset/clone_offset/ - - A little bit of sleep and reflection suggested that the use of - device_offset_[xy] was confusing and clone_offset_[xy] more consistent - with the function naming. - - src/cairo-directfb-surface.c | 12 ++++++------ - src/cairo-glitz-surface.c | 18 +++++++++--------- - src/cairo-image-surface.c | 6 +++--- - src/cairo-pattern.c | 6 +++--- - src/cairo-quartz-surface.c | 16 ++++++++-------- - src/cairo-surface-fallback-private.h | 4 ++-- - src/cairo-surface-fallback.c | 8 ++++---- - src/cairo-surface.c | 16 ++++++++-------- - src/cairo-win32-private.h | 4 ++-- - src/cairo-win32-surface.c | 8 ++++---- - src/cairo-xcb-surface.c | 12 ++++++------ - src/cairo-xlib-surface.c | 12 ++++++------ - src/cairoint.h | 10 +++++----- - src/test-fallback-surface.c | 8 ++++---- - 14 files changed, 70 insertions(+), 70 deletions(-) - -commit 95c3c069326a77a28eb49053c0ace9f1977e0378 +commit 05faebd5845c68005f5b96428952faae5a67208f Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 17:13:32 2008 +0100 +Date: Wed Sep 29 13:23:24 2010 +0100 - [surface] Only return early for no traps if the operator is bounded by a mask. - - If the operator is unbounded, then its area of effect extends beyond - the definition of the mask by the trapezoids and so we must always perform - the image composition. + test: Add a8-clear - Fixes test/operator*. - - src/cairo-surface-fallback.c | 4 +--- - test/Makefile.am | 2 -- - 2 files changed, 1 insertions(+), 5 deletions(-) - -commit 922a5801164c2b2340a7b4a950820b07e72adadc -Merge: 0c43170 1e45da4 -Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> -Date: Sat Sep 27 11:55:50 2008 +0200 + Reported-by: Jeremy Moles <jeremy@emperorlinux.com> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/a8-clear.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ + test/a8-clear.ref.png | Bin 0 -> 271 bytes + 4 files changed, 66 insertions(+), 0 deletions(-) -commit 0c4317085ecfc112214cdfe2abd66d9df8038282 -Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> -Date: Sat Sep 27 11:47:32 2008 +0200 +commit ac6fd51fe4e500973e0939983d00aa81c8acf556 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 29 13:25:08 2010 +0100 - [svg] Fix comp-op for paint, mask and show_glyphs operations. - - In paint and show_glyphs, the compositing operator was not emitted at all. - In mask, the operator was also emitted for the mask itself, which is - wrong. - - SVG clear and source differ from cairo as it also affects the - destination if the source pixel are completely transparent. We need to emit - an additional clip-to-self property. + image: Silence a compile warning - Librsvg does not support clip-to-self, so it renders the SVG - test outputs incorrectly. + cairo-image-surface.c: In function ‘_cairo_image_reset_static_data’: + cairo-image-surface.c:1006: warning: old-style function definition - This patch also remove a lot of useless spaces in the style property - strings (I know, this should go in another commit). + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-svg-surface.c | 196 +++++++++++++++++++++++++++-------------------- - 1 files changed, 113 insertions(+), 83 deletions(-) + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 1e45da48b555b707225c1521068011cabbcc976f -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Sep 27 14:38:22 2008 +0930 +commit 75e2b7c7b52be6663fac05925b9b4cc5f3b42f9f +Author: Tim Janik <timj@gtk.org> +Date: Thu Sep 23 13:55:11 2010 +0200 - Update ref images in Makefile.am + cairo: docu fix for cairo_set_source_surface - test/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) + src/cairo.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit c0535e8e3394f0b78867785e65cf89dbb31875d5 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Sat Sep 27 14:31:50 2008 +0930 +commit 4cf5260e99e3e7588e45ee179c57b75588b95987 +Author: Kouhei Sutou <kou@cozmixng.org> +Date: Sun Sep 12 10:36:27 2010 +0900 - Remove miter-precision from XFAIL + xml: fix a typo to correct the indentation after <path></path> - The miter-precision PS output prints correctly on my LaserJet 4050. So - file a Ghostscript bug, supply PS ref images and remove from XFAIL. + Signed-off-by: Kouhei Sutou <kou@cozmixng.org> - test/Makefile.am | 1 - - test/README | 5 +++++ - test/miter-precision-ps2-ref.png | Bin 0 -> 865 bytes - test/miter-precision-ps3-ref.png | Bin 0 -> 865 bytes - test/miter-precision.c | 2 +- - 5 files changed, 6 insertions(+), 2 deletions(-) + src/cairo-xml-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) -commit 5b97ee65259cafb335c1a2c53f1a55dfcb175e20 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Sat Sep 27 00:18:07 2008 +0100 - - Allow cloning sub-regions of similar surfaces. - - Previously the rule for clone_similar() was that the returned surface - had exactly the same size as the original, but only the contents within - the region of interest needed to be copied. This caused failures for very - large images in the xlib-backend (see test/large-source). - - The obvious solution to allow cloning only the region of interest seemed - to be to simply set the device offset on the cloned surface. However, this - fails as a) nothing respects the device offset on the surface at that - layer in the compositing stack and b) possibly returning references to the - original source surface provides further confusion by mixing in another - source of device offset. - - The second method was to add extra out parameters so that the - device offset could be returned separately and, for example, mixed into - the pattern matrix. Not as elegant, a couple of extra warts to the - interface, but it works - one less XFAIL... - - src/cairo-clip.c | 6 ++++++ - src/cairo-directfb-surface.c | 14 +++++++++----- - src/cairo-glitz-surface.c | 10 ++++++++++ - src/cairo-image-surface.c | 3 +++ - src/cairo-pattern.c | 15 +++++++++++++-- - src/cairo-quartz-surface.c | 10 +++++++++- - src/cairo-surface-fallback-private.h | 2 ++ - src/cairo-surface-fallback.c | 8 ++++++-- - src/cairo-surface.c | 24 ++++++++++++++++++------ - src/cairo-win32-private.h | 2 ++ - src/cairo-win32-surface.c | 8 ++++++-- - src/cairo-xcb-surface.c | 18 ++++++++++++++---- - src/cairo-xlib-surface.c | 21 +++++++++++++++------ - src/cairoint.h | 11 +++++++++-- - src/test-fallback-surface.c | 4 ++++ - test/Makefile.am | 1 - - 16 files changed, 126 insertions(+), 31 deletions(-) - -commit 7f3a48f90b409653a2d4fb802779ecb7508e4d6e -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 13:27:42 2008 -0400 +commit 0f070bd5ff9ad17b90852e8a7ba102c6b4b050f6 +Author: Tomáš Chvátal <scarabeus@gentoo.org> +Date: Sat Sep 11 22:55:23 2010 +0200 - [cairo.h] Don't define cairo_public to __declspec(dllimport) for static build + Fix posix calls in configure.ac test code. + + Fixes https://bugs.gentoo.org/show_bug.cgi?id=336779 - That define should target win32 DLL builds only. We can't tell though, - so we require user to define CAIRO_WIN32_STATIC_BUILD to signal that. + Signed-off-by: Tomáš Chvátal <scarabeus@gentoo.org> - src/cairo-system.c | 2 +- - src/cairo.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + configure.ac | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) -commit b6e910f4b636e947cefb310125979ce742e87730 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 12:36:33 2008 -0400 +commit f59771051badc2ea708437c5faa27d0895f787d6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 18 08:48:36 2010 +0100 - [README.win32] Update wording from Tor Lillqvist + drm: Add missing header file for tarball - README.win32 | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) + src/Makefile.sources | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) -commit fc12267405e98497c9f086d49fa6501d8f671a68 +commit 8fca990be7fca609e834703e60dd888c13fc637f Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 26 17:10:52 2008 +0100 +Date: Fri Sep 10 13:35:11 2010 +0100 - [scaled-font] Spelling fix. + cairo: Remove trailing comma from cairo_device_t - Arbitrary spelling fix. + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30115 + Reported-by: Murray Cumming <murrayc@murrayc.com> - src/cairo-scaled-font.c | 2 +- + src/cairo.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -commit e0f214710760a0e0332207cb3009e3119867bd13 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 26 16:49:57 2008 +0100 - - [boilerplate] Add a PS 2 target. - - Ensure that we can generate PS2 output when required by creating a PS - level 2 target and using GhostScript for conformance testing. - - boilerplate/cairo-boilerplate-ps-private.h | 29 ++- - boilerplate/cairo-boilerplate-ps.c | 55 ++++- - boilerplate/cairo-boilerplate.c | 23 ++- - test/Makefile.am | 286 +++++++++++++------- - test/big-line-ps-ref.png | Bin 1148 -> 0 bytes - test/big-line-ps-rgb24-ref.png | Bin 830 -> 0 bytes - test/big-line-ps2-ref.png | Bin 0 -> 1148 bytes - test/big-line-ps2-rgb24-ref.png | Bin 0 -> 830 bytes - test/big-line-ps3-ref.png | Bin 0 -> 1148 bytes - test/big-line-ps3-rgb24-ref.png | Bin 0 -> 830 bytes - test/caps-joins-ps-ref.png | Bin 1459 -> 0 bytes - test/caps-joins-ps2-ref.png | Bin 0 -> 1459 bytes - test/caps-joins-ps3-ref.png | Bin 0 -> 1459 bytes - test/clip-fill-rule-ps-argb32-ref.png | Bin 310 -> 0 bytes - test/clip-fill-rule-ps-rgb24-ref.png | Bin 302 -> 0 bytes - test/clip-fill-rule-ps2-argb32-ref.png | Bin 0 -> 310 bytes - test/clip-fill-rule-ps2-rgb24-ref.png | Bin 0 -> 302 bytes - test/clip-fill-rule-ps3-argb32-ref.png | Bin 0 -> 310 bytes - test/clip-fill-rule-ps3-rgb24-ref.png | Bin 0 -> 302 bytes - test/clip-nesting-ps-argb32-ref.png | Bin 651 -> 0 bytes - test/clip-nesting-ps-rgb24-ref.png | Bin 636 -> 0 bytes - test/clip-nesting-ps2-argb32-ref.png | Bin 0 -> 651 bytes - test/clip-nesting-ps2-rgb24-ref.png | Bin 0 -> 636 bytes - test/clip-nesting-ps3-argb32-ref.png | Bin 0 -> 651 bytes - test/clip-nesting-ps3-rgb24-ref.png | Bin 0 -> 636 bytes - test/clip-operator-ps-rgb24-ref.png | Bin 3624 -> 0 bytes - test/clip-operator-ps2-rgb24-ref.png | Bin 0 -> 3624 bytes - test/clip-operator-ps3-ref.png | Bin 0 -> 8188 bytes - test/clip-operator-ps3-rgb24-ref.png | Bin 0 -> 3624 bytes - test/clip-push-group-ps-argb32-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-ps-rgb24-ref.png | Bin 179 -> 0 bytes - test/clip-push-group-ps2-argb32-ref.png | Bin 0 -> 179 bytes - test/clip-push-group-ps2-rgb24-ref.png | Bin 0 -> 179 bytes - test/clip-push-group-ps3-argb32-ref.png | Bin 0 -> 179 bytes - test/clip-push-group-ps3-rgb24-ref.png | Bin 0 -> 179 bytes - test/clip-twice-ps-argb32-ref.png | Bin 575 -> 0 bytes - test/clip-twice-ps-rgb24-ref.png | Bin 541 -> 0 bytes - test/clip-twice-ps2-argb32-ref.png | Bin 0 -> 575 bytes - test/clip-twice-ps2-rgb24-ref.png | Bin 0 -> 541 bytes - test/clip-twice-ps3-argb32-ref.png | Bin 0 -> 575 bytes - test/clip-twice-ps3-rgb24-ref.png | Bin 0 -> 541 bytes - test/clipped-group-ps-ref.png | Bin 343 -> 0 bytes - test/clipped-group-ps2-ref.png | Bin 0 -> 343 bytes - test/clipped-group-ps3-ref.png | Bin 0 -> 343 bytes - test/close-path-ps-ref.png | Bin 309 -> 0 bytes - test/close-path-ps2-ref.png | Bin 0 -> 309 bytes - test/close-path-ps3-ref.png | Bin 0 -> 309 bytes - test/copy-path-ps-ref.png | Bin 474 -> 0 bytes - test/copy-path-ps2-ref.png | Bin 0 -> 474 bytes - test/copy-path-ps3-ref.png | Bin 0 -> 474 bytes - test/dash-caps-joins-ps-argb32-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-ps-rgb24-ref.png | Bin 3870 -> 0 bytes - test/dash-caps-joins-ps2-argb32-ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins-ps2-rgb24-ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins-ps3-argb32-ref.png | Bin 0 -> 3870 bytes - test/dash-caps-joins-ps3-rgb24-ref.png | Bin 0 -> 3870 bytes - test/dash-curve-ps-ref.png | Bin 27293 -> 0 bytes - test/dash-curve-ps2-ref.png | Bin 0 -> 27293 bytes - test/dash-curve-ps3-ref.png | Bin 0 -> 27293 bytes - test/dash-scale-ps-argb32-ref.png | Bin 6318 -> 0 bytes - test/dash-scale-ps-rgb24-ref.png | Bin 6316 -> 0 bytes - test/dash-scale-ps2-argb32-ref.png | Bin 0 -> 6318 bytes - test/dash-scale-ps2-rgb24-ref.png | Bin 0 -> 6316 bytes - test/dash-scale-ps3-argb32-ref.png | Bin 0 -> 6318 bytes - test/dash-scale-ps3-rgb24-ref.png | Bin 0 -> 6316 bytes - test/dash-state-ps-ref.png | Bin 10219 -> 0 bytes - test/dash-state-ps2-ref.png | Bin 0 -> 10219 bytes - test/dash-state-ps3-ref.png | Bin 0 -> 10219 bytes - test/dash-zero-length-ps-ref.png | Bin 319 -> 0 bytes - test/dash-zero-length-ps-rgb24-ref.png | Bin 304 -> 0 bytes - test/dash-zero-length-ps2-ref.png | Bin 0 -> 319 bytes - test/dash-zero-length-ps2-rgb24-ref.png | Bin 0 -> 304 bytes - test/dash-zero-length-ps3-ref.png | Bin 0 -> 319 bytes - test/dash-zero-length-ps3-rgb24-ref.png | Bin 0 -> 304 bytes - test/degenerate-arc-ps-ref.png | Bin 585 -> 0 bytes - test/degenerate-arc-ps2-ref.png | Bin 0 -> 585 bytes - test/degenerate-arc-ps3-ref.png | Bin 0 -> 585 bytes - test/degenerate-path-ps-argb32-ref.png | Bin 390 -> 0 bytes - test/degenerate-path-ps-rgb24-ref.png | Bin 358 -> 0 bytes - test/degenerate-path-ps2-argb32-ref.png | Bin 0 -> 390 bytes - test/degenerate-path-ps2-rgb24-ref.png | Bin 0 -> 358 bytes - test/degenerate-path-ps3-argb32-ref.png | Bin 0 -> 390 bytes - test/degenerate-path-ps3-rgb24-ref.png | Bin 0 -> 358 bytes - test/degenerate-pen-ps-ref.png | Bin 865 -> 0 bytes - test/degenerate-pen-ps2-ref.png | Bin 0 -> 865 bytes - test/degenerate-pen-ps3-ref.png | Bin 0 -> 865 bytes - test/device-offset-fractional-ps-ref.png | Bin 201 -> 0 bytes - test/device-offset-fractional-ps2-ref.png | Bin 0 -> 201 bytes - test/device-offset-fractional-ps3-ref.png | Bin 0 -> 201 bytes - test/extend-reflect-ps-ref.png | Bin 153322 -> 0 bytes - test/extend-reflect-ps2-ref.png | Bin 0 -> 153322 bytes - test/extend-reflect-ps3-ref.png | Bin 0 -> 153322 bytes - test/extend-reflect-similar-ps-ref.png | Bin 153322 -> 0 bytes - test/extend-reflect-similar-ps2-ref.png | Bin 0 -> 153322 bytes - test/extend-reflect-similar-ps3-ref.png | Bin 0 -> 153322 bytes - test/fill-alpha-pattern-ps-ref.png | Bin 4380 -> 0 bytes - test/fill-alpha-pattern-ps3-ref.png | Bin 0 -> 4380 bytes - test/fill-and-stroke-ps-argb32-ref.png | Bin 310 -> 0 bytes - test/fill-and-stroke-ps-rgb24-ref.png | Bin 319 -> 0 bytes - test/fill-and-stroke-ps2-argb32-ref.png | Bin 0 -> 310 bytes - test/fill-and-stroke-ps2-rgb24-ref.png | Bin 0 -> 319 bytes - test/fill-and-stroke-ps3-argb32-ref.png | Bin 0 -> 310 bytes - test/fill-and-stroke-ps3-rgb24-ref.png | Bin 0 -> 319 bytes - test/fill-missed-stop-ps-argb32-ref.png | Bin 564 -> 0 bytes - test/fill-missed-stop-ps-rgb24-ref.png | Bin 531 -> 0 bytes - test/fill-missed-stop-ps2-argb32-ref.png | Bin 0 -> 564 bytes - test/fill-missed-stop-ps2-rgb24-ref.png | Bin 0 -> 531 bytes - test/fill-missed-stop-ps3-argb32-ref.png | Bin 0 -> 564 bytes - test/fill-missed-stop-ps3-rgb24-ref.png | Bin 0 -> 531 bytes - test/fill-rule-ps-argb32-ref.png | Bin 2253 -> 0 bytes - test/fill-rule-ps-rgb24-ref.png | Bin 2031 -> 0 bytes - test/fill-rule-ps2-argb32-ref.png | Bin 0 -> 2253 bytes - test/fill-rule-ps2-rgb24-ref.png | Bin 0 -> 2031 bytes - test/fill-rule-ps3-argb32-ref.png | Bin 0 -> 2253 bytes - test/fill-rule-ps3-rgb24-ref.png | Bin 0 -> 2031 bytes - test/finer-grained-fallbacks-ps-argb32-ref.png | Bin 1047 -> 0 bytes - test/finer-grained-fallbacks-ps-rgb24-ref.png | Bin 819 -> 0 bytes - test/finer-grained-fallbacks-ps2-argb32-ref.png | Bin 0 -> 1047 bytes - test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 0 -> 819 bytes - test/finer-grained-fallbacks-ps3-argb32-ref.png | Bin 0 -> 1047 bytes - test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 0 -> 819 bytes - test/font-matrix-translation-ps-argb32-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-ps-rgb24-ref.png | Bin 748 -> 0 bytes - test/font-matrix-translation-ps2-argb32-ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation-ps2-rgb24-ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation-ps3-argb32-ref.png | Bin 0 -> 748 bytes - test/font-matrix-translation-ps3-rgb24-ref.png | Bin 0 -> 748 bytes - test/ft-show-glyphs-positioning-ps-ref.png | Bin 2269 -> 0 bytes - test/ft-show-glyphs-positioning-ps2-ref.png | Bin 0 -> 2269 bytes - test/ft-show-glyphs-positioning-ps3-ref.png | Bin 0 -> 2269 bytes - test/ft-show-glyphs-table-ps-ref.png | Bin 5687 -> 0 bytes - test/ft-show-glyphs-table-ps2-ref.png | Bin 0 -> 5687 bytes - test/ft-show-glyphs-table-ps3-ref.png | Bin 0 -> 5687 bytes - test/ft-text-antialias-none-ps-argb32-ref.png | Bin 335 -> 0 bytes - test/ft-text-antialias-none-ps2-argb32-ref.png | Bin 0 -> 335 bytes - test/ft-text-antialias-none-ps3-argb32-ref.png | Bin 0 -> 335 bytes - test/ft-text-vertical-layout-type1-ps-ref.png | Bin 1846 -> 0 bytes - test/ft-text-vertical-layout-type1-ps2-ref.png | Bin 0 -> 1846 bytes - test/ft-text-vertical-layout-type1-ps3-ref.png | Bin 0 -> 1846 bytes - test/ft-text-vertical-layout-type3-ps-ref.png | Bin 1804 -> 0 bytes - test/ft-text-vertical-layout-type3-ps2-ref.png | Bin 0 -> 1804 bytes - test/ft-text-vertical-layout-type3-ps3-ref.png | Bin 0 -> 1804 bytes - test/glyph-cache-pressure-ps-ref.png | Bin 1454 -> 0 bytes - test/glyph-cache-pressure-ps2-ref.png | Bin 0 -> 1454 bytes - test/glyph-cache-pressure-ps3-ref.png | Bin 0 -> 1454 bytes - test/gradient-alpha-ps-argb32-ref.png | Bin 134 -> 0 bytes - test/gradient-alpha-ps-rgb24-ref.png | Bin 130 -> 0 bytes - test/gradient-alpha-ps2-argb32-ref.png | Bin 0 -> 134 bytes - test/gradient-alpha-ps2-rgb24-ref.png | Bin 0 -> 130 bytes - test/gradient-alpha-ps3-argb32-ref.png | Bin 0 -> 134 bytes - test/gradient-alpha-ps3-rgb24-ref.png | Bin 0 -> 130 bytes - test/gradient-constant-alpha-ps-ref.png | Bin 124 -> 0 bytes - test/gradient-constant-alpha-ps-rgb24-ref.png | Bin 124 -> 0 bytes - test/gradient-constant-alpha-ps2-ref.png | Bin 0 -> 124 bytes - test/gradient-constant-alpha-ps2-rgb24-ref.png | Bin 0 -> 124 bytes - test/gradient-constant-alpha-ps3-ref.png | Bin 0 -> 124 bytes - test/gradient-constant-alpha-ps3-rgb24-ref.png | Bin 0 -> 124 bytes - test/infinite-join-ps-ref.png | Bin 218 -> 0 bytes - test/infinite-join-ps2-ref.png | Bin 0 -> 218 bytes - test/infinite-join-ps3-ref.png | Bin 0 -> 218 bytes - test/leaky-dash-ps-argb32-ref.png | Bin 286 -> 0 bytes - test/leaky-dash-ps-rgb24-ref.png | Bin 284 -> 0 bytes - test/leaky-dash-ps2-argb32-ref.png | Bin 0 -> 286 bytes - test/leaky-dash-ps2-rgb24-ref.png | Bin 0 -> 284 bytes - test/leaky-dash-ps3-argb32-ref.png | Bin 0 -> 286 bytes - test/leaky-dash-ps3-rgb24-ref.png | Bin 0 -> 284 bytes - test/leaky-dashed-rectangle-ps-ref.png | Bin 444 -> 0 bytes - test/leaky-dashed-rectangle-ps2-ref.png | Bin 0 -> 444 bytes - test/leaky-dashed-rectangle-ps3-ref.png | Bin 0 -> 444 bytes - test/leaky-polygon-ps-ref.png | Bin 354 -> 0 bytes - test/leaky-polygon-ps2-ref.png | Bin 0 -> 354 bytes - test/leaky-polygon-ps3-ref.png | Bin 0 -> 354 bytes - test/line-width-scale-ps-ref.png | Bin 3911 -> 0 bytes - test/line-width-scale-ps2-ref.png | Bin 0 -> 3911 bytes - test/line-width-scale-ps3-ref.png | Bin 0 -> 3911 bytes - test/linear-gradient-ps-ref.png | Bin 779 -> 0 bytes - test/linear-gradient-ps3-ref.png | Bin 0 -> 779 bytes - test/linear-gradient-reflect-ps-ref.png | Bin 314 -> 0 bytes - test/linear-gradient-reflect-ps3-ref.png | Bin 0 -> 314 bytes - test/long-dashed-lines-ps-ref.png | Bin 1516 -> 0 bytes - test/long-dashed-lines-ps2-ref.png | Bin 0 -> 1516 bytes - test/long-dashed-lines-ps3-ref.png | Bin 0 -> 1516 bytes - test/meta-surface-pattern-ps-argb32-ref.png | Bin 3257 -> 0 bytes - test/meta-surface-pattern-ps-rgb24-ref.png | Bin 3873 -> 0 bytes - test/meta-surface-pattern-ps2-argb32-ref.png | Bin 0 -> 3257 bytes - test/meta-surface-pattern-ps2-rgb24-ref.png | Bin 0 -> 3873 bytes - test/meta-surface-pattern-ps3-argb32-ref.png | Bin 0 -> 3257 bytes - test/meta-surface-pattern-ps3-rgb24-ref.png | Bin 0 -> 3873 bytes - test/new-sub-path-ps-argb32-ref.png | Bin 556 -> 0 bytes - test/new-sub-path-ps-rgb24-ref.png | Bin 423 -> 0 bytes - test/new-sub-path-ps2-argb32-ref.png | Bin 0 -> 556 bytes - test/new-sub-path-ps2-rgb24-ref.png | Bin 0 -> 423 bytes - test/new-sub-path-ps3-argb32-ref.png | Bin 0 -> 556 bytes - test/new-sub-path-ps3-rgb24-ref.png | Bin 0 -> 423 bytes - test/over-above-source-ps-argb32-ref.png | Bin 636 -> 0 bytes - test/over-above-source-ps2-argb32-ref.png | Bin 0 -> 636 bytes - test/over-above-source-ps3-argb32-ref.png | Bin 0 -> 636 bytes - test/over-around-source-ps-argb32-ref.png | Bin 632 -> 0 bytes - test/over-around-source-ps-rgb24-ref.png | Bin 538 -> 0 bytes - test/over-around-source-ps2-argb32-ref.png | Bin 0 -> 632 bytes - test/over-around-source-ps2-rgb24-ref.png | Bin 0 -> 538 bytes - test/over-around-source-ps3-argb32-ref.png | Bin 0 -> 632 bytes - test/over-around-source-ps3-rgb24-ref.png | Bin 0 -> 538 bytes - test/over-below-source-ps-argb32-ref.png | Bin 503 -> 0 bytes - test/over-below-source-ps2-argb32-ref.png | Bin 0 -> 503 bytes - test/over-below-source-ps3-argb32-ref.png | Bin 0 -> 503 bytes - test/over-between-source-ps-argb32-ref.png | Bin 678 -> 0 bytes - test/over-between-source-ps2-argb32-ref.png | Bin 0 -> 678 bytes - test/over-between-source-ps3-argb32-ref.png | Bin 0 -> 678 bytes - test/random-intersections-ps-ref.png | Bin 89253 -> 0 bytes - test/random-intersections-ps2-ref.png | Bin 0 -> 89253 bytes - test/random-intersections-ps3-ref.png | Bin 0 -> 89253 bytes - test/rectilinear-miter-limit-ps-ref.png | Bin 221 -> 0 bytes - test/rectilinear-miter-limit-ps2-ref.png | Bin 0 -> 221 bytes - test/rectilinear-miter-limit-ps3-ref.png | Bin 0 -> 221 bytes - test/reflected-stroke-ps-ref.png | Bin 3898 -> 0 bytes - test/reflected-stroke-ps2-ref.png | Bin 0 -> 3898 bytes - test/reflected-stroke-ps3-ref.png | Bin 0 -> 3898 bytes - test/rel-path-ps-rgb24-ref.png | Bin 243 -> 0 bytes - test/rel-path-ps2-rgb24-ref.png | Bin 0 -> 243 bytes - test/rel-path-ps3-rgb24-ref.png | Bin 0 -> 243 bytes - test/rotate-image-surface-paint-ps-ref.png | Bin 212 -> 0 bytes - test/rotate-image-surface-paint-ps2-ref.png | Bin 0 -> 212 bytes - test/rotate-image-surface-paint-ps3-ref.png | Bin 0 -> 212 bytes - test/select-font-face-ps-ref.png | Bin 959 -> 0 bytes - test/select-font-face-ps2-ref.png | Bin 0 -> 959 bytes - test/select-font-face-ps3-ref.png | Bin 0 -> 959 bytes - test/self-copy-ps-ref.png | Bin 335 -> 0 bytes - test/self-copy-ps2-ref.png | Bin 0 -> 335 bytes - test/self-copy-ps3-ref.png | Bin 0 -> 335 bytes - test/show-text-current-point-ps-ref.png | Bin 1356 -> 0 bytes - test/show-text-current-point-ps2-ref.png | Bin 0 -> 1356 bytes - test/show-text-current-point-ps3-ref.png | Bin 0 -> 1356 bytes - test/skew-extreme-ps-ref.png | Bin 1048 -> 0 bytes - test/skew-extreme-ps2-ref.png | Bin 0 -> 1048 bytes - test/skew-extreme-ps3-ref.png | Bin 0 -> 1048 bytes - test/smask-ps-ref.png | Bin 3669 -> 0 bytes - test/smask-ps2-ref.png | Bin 0 -> 3669 bytes - test/smask-ps3-ref.png | Bin 0 -> 3669 bytes - test/smask-text-ps-ref.png | Bin 2023 -> 0 bytes - test/smask-text-ps2-ref.png | Bin 0 -> 2023 bytes - test/smask-text-ps3-ref.png | Bin 0 -> 2023 bytes - test/source-clip-scale-ps-argb32-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-ps-rgb24-ref.png | Bin 183 -> 0 bytes - test/source-clip-scale-ps2-argb32-ref.png | Bin 0 -> 183 bytes - test/source-clip-scale-ps2-rgb24-ref.png | Bin 0 -> 183 bytes - test/source-clip-scale-ps3-argb32-ref.png | Bin 0 -> 183 bytes - test/source-clip-scale-ps3-rgb24-ref.png | Bin 0 -> 183 bytes - test/stroke-ctm-caps-ps-ref.png | Bin 1079 -> 0 bytes - test/stroke-ctm-caps-ps2-ref.png | Bin 0 -> 1079 bytes - test/stroke-ctm-caps-ps3-ref.png | Bin 0 -> 1079 bytes - test/stroke-image-ps-ref.png | Bin 1786 -> 0 bytes - test/stroke-image-ps2-ref.png | Bin 0 -> 1786 bytes - test/stroke-image-ps3-ref.png | Bin 0 -> 1786 bytes - test/surface-pattern-ps-argb32-ref.png | Bin 2520 -> 0 bytes - test/surface-pattern-ps2-argb32-ref.png | Bin 0 -> 2520 bytes - test/surface-pattern-ps3-argb32-ref.png | Bin 0 -> 2520 bytes - test/surface-pattern-scale-down-ps-argb32-ref.png | Bin 1400 -> 0 bytes - test/surface-pattern-scale-down-ps2-argb32-ref.png | Bin 0 -> 1400 bytes - test/surface-pattern-scale-down-ps3-argb32-ref.png | Bin 0 -> 1400 bytes - test/surface-pattern-scale-up-ps-argb32-ref.png | Bin 1011 -> 0 bytes - test/surface-pattern-scale-up-ps2-argb32-ref.png | Bin 0 -> 1011 bytes - test/surface-pattern-scale-up-ps3-argb32-ref.png | Bin 0 -> 1011 bytes - test/text-pattern-ps-argb32-ref.png | Bin 966 -> 0 bytes - test/text-pattern-ps-rgb24-ref.png | Bin 924 -> 0 bytes - test/text-pattern-ps3-argb32-ref.png | Bin 0 -> 966 bytes - test/text-pattern-ps3-rgb24-ref.png | Bin 0 -> 924 bytes - test/text-rotate-ps-ref.png | Bin 6851 -> 0 bytes - test/text-rotate-ps2-ref.png | Bin 0 -> 6851 bytes - test/text-rotate-ps3-ref.png | Bin 0 -> 6851 bytes - test/text-transform-ps-ref.png | Bin 4154 -> 0 bytes - test/text-transform-ps2-ref.png | Bin 0 -> 4154 bytes - test/text-transform-ps3-ref.png | Bin 0 -> 4154 bytes - test/transforms-ps-ref.png | Bin 418 -> 0 bytes - test/transforms-ps2-ref.png | Bin 0 -> 418 bytes - test/transforms-ps3-ref.png | Bin 0 -> 418 bytes - test/trap-clip-ps-argb32-ref.png | Bin 5591 -> 0 bytes - test/trap-clip-ps-rgb24-ref.png | Bin 5512 -> 0 bytes - test/trap-clip-ps3-argb32-ref.png | Bin 0 -> 5591 bytes - test/trap-clip-ps3-rgb24-ref.png | Bin 0 -> 5512 bytes - test/user-font-proxy-ps-ref.png | Bin 8171 -> 0 bytes - test/user-font-proxy-ps2-ref.png | Bin 0 -> 8171 bytes - test/user-font-proxy-ps3-ref.png | Bin 0 -> 8171 bytes - test/user-font-ps-ref.png | Bin 5043 -> 0 bytes - test/user-font-ps2-ref.png | Bin 0 -> 5043 bytes - test/user-font-ps3-ref.png | Bin 0 -> 5043 bytes - test/user-font-rescale-ps-ref.png | Bin 8041 -> 0 bytes - test/user-font-rescale-ps2-ref.png | Bin 0 -> 8041 bytes - test/user-font-rescale-ps3-ref.png | Bin 0 -> 8041 bytes - 289 files changed, 277 insertions(+), 116 deletions(-) - -commit 0c030d3b768718eac5d429d0c819934f32896b25 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri Sep 26 15:26:40 2008 +0100 - - [boilerplate] Add svg-1.2 target. - - SVG 1.2 is sufficiently different from 1.1 that it has separate code - paths within cairo-svg-surface and so justifies its own boilerplate - target. - - boilerplate/cairo-boilerplate-svg-private.h | 30 ++++++--- - boilerplate/cairo-boilerplate-svg.c | 48 +++++++++++++- - boilerplate/cairo-boilerplate.c | 24 ++++++-- - test/Makefile.am | 66 +++++++++++++------- - test/caps-joins-alpha-svg-ref.png | Bin 2454 -> 0 bytes - test/caps-joins-alpha-svg11-ref.png | Bin 0 -> 2454 bytes - test/caps-joins-alpha-svg12-ref.png | Bin 0 -> 2454 bytes - test/font-matrix-translation-svg-ref.png | Bin 970 -> 0 bytes - test/font-matrix-translation-svg11-ref.png | Bin 0 -> 970 bytes - test/font-matrix-translation-svg12-ref.png | Bin 0 -> 970 bytes - test/ft-show-glyphs-positioning-svg-ref.png | Bin 6590 -> 0 bytes - test/ft-show-glyphs-positioning-svg11-ref.png | Bin 0 -> 6590 bytes - test/ft-show-glyphs-positioning-svg12-ref.png | Bin 0 -> 6590 bytes - test/ft-text-vertical-layout-type1-svg-ref.png | Bin 3973 -> 0 bytes - test/ft-text-vertical-layout-type1-svg11-ref.png | Bin 0 -> 3973 bytes - test/ft-text-vertical-layout-type1-svg12-ref.png | Bin 0 -> 3973 bytes - test/ft-text-vertical-layout-type3-svg-ref.png | Bin 3957 -> 0 bytes - test/ft-text-vertical-layout-type3-svg11-ref.png | Bin 0 -> 3957 bytes - test/ft-text-vertical-layout-type3-svg12-ref.png | Bin 0 -> 3957 bytes - test/linear-gradient-svg-ref.png | Bin 1000 -> 0 bytes - test/linear-gradient-svg11-ref.png | Bin 0 -> 1000 bytes - test/linear-gradient-svg12-ref.png | Bin 0 -> 1000 bytes - test/mask-alpha-svg-argb32-ref.png | Bin 615 -> 0 bytes - test/mask-alpha-svg11-argb32-ref.png | Bin 0 -> 615 bytes - test/mask-alpha-svg12-argb32-ref.png | Bin 0 -> 615 bytes - test/mask-ctm-svg-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-ctm-svg11-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-ctm-svg12-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-surface-ctm-svg-argb32-ref.png | Bin 108 -> 0 bytes - test/mask-surface-ctm-svg11-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-surface-ctm-svg12-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-svg-argb32-ref.png | Bin 8527 -> 0 bytes - test/mask-svg-rgb24-ref.png | Bin 7935 -> 0 bytes - test/mask-svg11-argb32-ref.png | Bin 0 -> 8527 bytes - test/mask-svg11-rgb24-ref.png | Bin 0 -> 7935 bytes - test/mask-svg12-argb32-ref.png | Bin 0 -> 8527 bytes - test/mask-svg12-rgb24-ref.png | Bin 0 -> 7935 bytes - test/mask-transformed-similar-svg-ref.png | Bin 4051 -> 0 bytes - test/mask-transformed-similar-svg11-ref.png | Bin 0 -> 4051 bytes - test/mask-transformed-similar-svg12-ref.png | Bin 0 -> 4051 bytes - test/meta-surface-pattern-svg-argb32-ref.png | Bin 3924 -> 0 bytes - test/meta-surface-pattern-svg-rgb24-ref.png | Bin 4593 -> 0 bytes - test/meta-surface-pattern-svg11-argb32-ref.png | Bin 0 -> 3924 bytes - test/meta-surface-pattern-svg11-rgb24-ref.png | Bin 0 -> 4593 bytes - test/meta-surface-pattern-svg12-argb32-ref.png | Bin 0 -> 3924 bytes - test/meta-surface-pattern-svg12-rgb24-ref.png | Bin 0 -> 4593 bytes - test/paint-source-alpha-svg-ref.png | Bin 505 -> 0 bytes - test/paint-source-alpha-svg11-ref.png | Bin 0 -> 505 bytes - test/paint-source-alpha-svg12-ref.png | Bin 0 -> 505 bytes - test/paint-with-alpha-svg-ref.png | Bin 516 -> 0 bytes - test/paint-with-alpha-svg11-ref.png | Bin 0 -> 516 bytes - test/paint-with-alpha-svg12-ref.png | Bin 0 -> 516 bytes - test/push-group-svg-argb32-ref.png | Bin 2935 -> 0 bytes - test/push-group-svg11-argb32-ref.png | Bin 0 -> 2935 bytes - test/push-group-svg12-argb32-ref.png | Bin 0 -> 2935 bytes - test/radial-gradient-svg-ref.png | Bin 91039 -> 0 bytes - test/radial-gradient-svg11-ref.png | Bin 0 -> 91039 bytes - test/radial-gradient-svg12-ref.png | Bin 0 -> 91039 bytes - test/rotate-image-surface-paint-svg-ref.png | Bin 248 -> 0 bytes - test/rotate-image-surface-paint-svg11-ref.png | Bin 0 -> 248 bytes - test/rotate-image-surface-paint-svg12-ref.png | Bin 0 -> 248 bytes - test/scale-source-surface-paint-svg-argb32-ref.png | Bin 182 -> 0 bytes - test/scale-source-surface-paint-svg-rgb24-ref.png | Bin 192 -> 0 bytes - ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 0 -> 182 bytes - .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 0 -> 192 bytes - ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 0 -> 182 bytes - .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 0 -> 192 bytes - test/set-source-svg-argb32-ref.png | Bin 104 -> 0 bytes - test/set-source-svg11-argb32-ref.png | Bin 0 -> 104 bytes - test/set-source-svg12-argb32-ref.png | Bin 0 -> 104 bytes - test/smask-fill-svg-ref.png | Bin 1166 -> 0 bytes - test/smask-fill-svg11-ref.png | Bin 0 -> 1166 bytes - test/smask-fill-svg12-ref.png | Bin 0 -> 1166 bytes - test/smask-mask-svg-ref.png | Bin 2529 -> 0 bytes - test/smask-mask-svg11-ref.png | Bin 0 -> 2529 bytes - test/smask-mask-svg12-ref.png | Bin 0 -> 2529 bytes - test/smask-paint-svg-ref.png | Bin 2612 -> 0 bytes - test/smask-paint-svg11-ref.png | Bin 0 -> 2612 bytes - test/smask-paint-svg12-ref.png | Bin 0 -> 2612 bytes - test/smask-svg-ref.png | Bin 3634 -> 0 bytes - test/smask-svg11-ref.png | Bin 0 -> 3634 bytes - test/smask-svg12-ref.png | Bin 0 -> 3634 bytes - test/smask-text-svg-ref.png | Bin 1886 -> 0 bytes - test/smask-text-svg11-ref.png | Bin 0 -> 1886 bytes - test/smask-text-svg12-ref.png | Bin 0 -> 1886 bytes - test/source-clip-scale-svg-ref.png | Bin 119 -> 0 bytes - test/source-clip-scale-svg11-ref.png | Bin 0 -> 119 bytes - test/source-clip-scale-svg12-ref.png | Bin 0 -> 119 bytes - test/surface-pattern-svg-ref.png | Bin 17663 -> 0 bytes - test/surface-pattern-svg11-ref.png | Bin 0 -> 17663 bytes - test/surface-pattern-svg12-ref.png | Bin 0 -> 17663 bytes - test/text-pattern-svg-argb32-ref.png | Bin 1733 -> 0 bytes - test/text-pattern-svg-rgb24-ref.png | Bin 1563 -> 0 bytes - test/text-pattern-svg11-argb32-ref.png | Bin 0 -> 1733 bytes - test/text-pattern-svg11-rgb24-ref.png | Bin 0 -> 1563 bytes - test/text-pattern-svg12-argb32-ref.png | Bin 0 -> 1733 bytes - test/text-pattern-svg12-rgb24-ref.png | Bin 0 -> 1563 bytes - test/text-rotate-svg-ref.png | Bin 18301 -> 0 bytes - test/text-rotate-svg11-ref.png | Bin 0 -> 18301 bytes - test/text-rotate-svg12-ref.png | Bin 0 -> 18301 bytes - test/user-font-proxy-svg-ref.png | Bin 17902 -> 0 bytes - test/user-font-proxy-svg11-ref.png | Bin 0 -> 17902 bytes - test/user-font-proxy-svg12-ref.png | Bin 0 -> 17902 bytes - test/user-font-rescale-svg-ref.png | Bin 15741 -> 0 bytes - test/user-font-rescale-svg11-ref.png | Bin 0 -> 15741 bytes - test/user-font-rescale-svg12-ref.png | Bin 0 -> 15741 bytes - test/user-font-svg-ref.png | Bin 6134 -> 0 bytes - test/user-font-svg11-ref.png | Bin 0 -> 6134 bytes - test/user-font-svg12-ref.png | Bin 0 -> 6134 bytes - 109 files changed, 128 insertions(+), 40 deletions(-) - -commit 86e57671dd21078215505202ef8aa2141d10fb9c -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 11:08:22 2008 -0400 - - [check-*.sh] Redirect error reports to stderr - - doc/public/check-doc-coverage.sh | 6 +++--- - src/check-def.sh | 2 +- - src/check-doc-syntax.sh | 8 ++++---- - src/check-headers.sh | 2 +- - src/check-plt.sh | 2 +- - src/check-preprocessor-syntax.sh | 10 +++++----- - 6 files changed, 15 insertions(+), 15 deletions(-) - -commit 096f9def0f599e527d97bb979f7cafbc87dcddc6 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 10:55:44 2008 -0400 - - Add slim markers to make check-plt.sh happy - - src/cairo-font-face.c | 4 ++++ - src/cairo-user-font.c | 4 ++++ - src/cairo.c | 5 +++++ - src/cairoint.h | 13 +++++++++++++ - 4 files changed, 26 insertions(+), 0 deletions(-) - -commit 1de059b33bd2e6121e35ccf1c4a35ba7755c44d8 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 09:49:50 2008 -0400 +commit 291876ad3477330143bbb814ea72c658dc8ca584 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Sep 9 22:53:38 2010 +0200 - [RELEASING] Add ftp-release@lists.freedesktop.org + test: do not leak resources - That list is monitored by various distros to pick up new releases. - We should CC release announcements there. + Silence some leak reports by check-valgrind. - RELEASING | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) + test/subsurface-outside-target.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) -commit 9662be8ee77e219908b64b82e828d577dcf120f0 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 00:22:00 2008 -0400 +commit 8fda4ab1cc7f60196b232d194c33e592ecdec9b5 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Aug 26 11:15:46 2010 +0200 - [twin-font] Adjust ascent/descent + image: add _cairo_image_reset_static_data - The font data uses a 64 int high font space with baseline at 50. - - src/cairo-font-face-twin.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 3883a371f2ba78b17a1302ba8c5df1a79f3e4075 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Fri Sep 26 00:20:21 2008 -0400 - - [scaled-font] Use full ctm matrix when comparing scaled-font keys + Image has static caches which needs to be reset to make + cairo_debug_reset_static_data behave as expected. + Silences a bunch of leak reports by check-valgrind. - We use the full matrix in hash computation, but only compare the - non-translation items in equality check. This is no bug though, - as we set the ctm translation components of a scaled font to zero - explicitly. But the change makes the hash and equal functions - consistent, which is good. + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + src/cairo-debug.c | 2 ++ + src/cairo-image-surface.c | 42 ++++++++++++++++++++++++++++++++++-------- + src/cairoint.h | 3 +++ + 3 files changed, 39 insertions(+), 8 deletions(-) -commit 48099af9fed7497a230992e41d559a19c5dbdc60 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 25 13:24:58 2008 +0100 +commit ca775cbf5a7245092cabdda43db9d06e96613ff4 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Aug 26 11:13:51 2010 +0200 - [boilerplate] Retry conversion in process if first attempt fails. + test: do not leak resources + + Silence two leak reports by check-valgrind. - One possibility for a read failure whilst converting the image is if the - external utility crashed. This information is important for the test suite - as knowing input that causes the converter to crash is just as vital as - identifying a crash within the library. + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> - boilerplate/cairo-boilerplate-pdf.c | 11 +---------- - boilerplate/cairo-boilerplate-svg.c | 11 +---------- - boilerplate/cairo-boilerplate.c | 35 +++++++++++++++++++++++++++++++++-- - boilerplate/cairo-boilerplate.h | 11 +++++++++-- - 4 files changed, 44 insertions(+), 24 deletions(-) + test/linear-gradient-large.c | 1 + + test/nil-surface.c | 3 ++- + 2 files changed, 3 insertions(+), 1 deletions(-) -commit f2c484d73ce61012a2d9925f15b55e7c51e34b85 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 25 00:16:45 2008 +0100 +commit 2b6c4c2a64c585cb815089e83719e00b1cfc985f +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Thu Sep 9 11:28:03 2010 +0200 - [test/any2ppm] Handle short reads/writes. - - No excuse other than simple laziness - it manifested itself with random - "error whilst reading" failures. + recording: Document CAIRO_HAS_RECORDING_SURFACE macro - boilerplate/cairo-boilerplate.c | 24 ++++++++++++++++-- - test/any2ppm.c | 50 +++++++++++++++++++++++++++++++++----- - 2 files changed, 64 insertions(+), 10 deletions(-) + src/cairo-recording-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) -commit 681424cbaf94556bf1804547b42ad642c0a066ab -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 25 10:40:32 2008 +0100 +commit d8f88cf3f97af6771a4d77bf81e1025eb7bcfd1d +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Thu Sep 9 11:00:42 2010 +0200 - [analysis] Merge two analysis status codes. + recording: Fix cairo_recording_surface_create() doc comments - Since there is an implicit precedence in the ranking of the analysis - return codes, provide a function to centralize the logic within the - analysis surface and isolate the backends from the complexity. - - src/cairo-analysis-surface-private.h | 3 ++ - src/cairo-analysis-surface.c | 50 +++++++++++++++++++++++++-------- - src/cairo-pdf-surface.c | 31 ++++++--------------- - 3 files changed, 50 insertions(+), 34 deletions(-) + The name of the parameters in the docs should match the name of the + function parameters. Added also return value docs. -commit 06f0cc81d227a571e011e83cc192050a34d6ea13 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 25 10:29:27 2008 +0100 + src/cairo-recording-surface.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) - Add a macro to determine whether a status is a fatal error. - - In a few places we need to check whether we have a fatal error or an - internal return code, so provide a utility macro to centralise the check. +commit 737880260f1895667baf25bcc6814052e6a6a027 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Thu Sep 9 10:57:13 2010 +0200 - src/cairo.c | 3 +-- - src/cairoint.h | 3 +++ - 2 files changed, 4 insertions(+), 2 deletions(-) + recording: Add section doc comments -commit ba18d57339dbedbbdb7f3ca35b06ce6b5dbcd972 -Author: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu Sep 25 09:39:41 2008 +0100 + src/cairo-recording-surface.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) - [pdf] Propagate status - - Check and return a few forgotten error codes from static functions. +commit 1ddc1bfa01e4c17001504c886bc5fb97625f5861 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Thu Sep 9 10:54:50 2010 +0200 - src/cairo-pdf-operators.c | 14 +++++++++++--- - src/cairo-pdf-surface.c | 6 +++++- - 2 files changed, 16 insertions(+), 4 deletions(-) + doc: Add section for recording surface -commit 907f550a1b13b0a388f9ff22663911d4aabbe2d8 -Author: Adrian Johnson <ajohnson@redneon.com> -Date: Fri Sep 26 20:26:55 2008 +0930 - - Fix bitmap-font XFAIL - - Images in PDF are scaled to a unit square. In PS we set the - ImageMatrix to do the same. When the image is painted we scale the - graphics state to paint the image at the right size. In the case of - Type 3 fonts consisting of bitmap images we want to paint the images - at their original size so we scale the graphics state by the image - width and height. - - The bug was that we were scaling by the width/height in the glyph - metrics. For non rotated fonts this worked. However for rotated fonts - the width/height of the glyph images may be larger than the - width/height in the glyph metrics. This resulted in a Type 3 font - where the glyph images were scaled slightly smaller than they should - have been. - - src/cairo-type3-glyph-surface.c | 10 +++------- - test/Makefile.am | 1 - - test/bitmap-font-pdf-argb32-ref.png | Bin 1064 -> 0 bytes - 3 files changed, 3 insertions(+), 8 deletions(-) - -commit f8542dc9dd4dd0685f68381f21fa72dbddd8d682 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 19:08:24 2008 -0400 + doc/public/cairo-docs.xml | 1 + + doc/public/cairo-sections.txt | 7 +++++++ + 2 files changed, 8 insertions(+), 0 deletions(-) - [twin-font] Clean up font data by joining lines and closing paths - - Two changes here: - - * Replace move_to;line_to;move_to;line_to sequences with - move_to;line_to;line_to when feasible. - - * Close paths for round glyphs. - - Both improve the stroke rendering of the joint. - - The first change also saves 3 bytes per joint (33 such joints). - Which we have just left unused for now. To reclaim them one need - to update the charset table. Something for a lazy Sunday afternoon - scripting task. - - In the saving department, we can save further by: - - - Getting rid of the left/ascent/descent values as we compute - glyph bounding box automatically. Then we can liberally use - the right value to adjust glyph advance width. Saves three - bytes per glyph (there's 96 glyphs in the font). - - - First operation is always a move_to. So we can remove the 'm' - for that. Ugly though. - - And the charset has zeros for the first 32 entries. Can get rid of - that too at the expense of handling it in the code... - - In total, combining the above we can save some 500 bytes. The font - currently takes about 3.7kb. +commit a48eccbf77874e00a57ab7f1ab96ed0f359b3963 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 7 13:58:29 2010 +0100 - src/cairo-font-face-twin-data.c | 154 +++++++++++++++++++------------------- - src/cairo-font-face-twin.c | 18 ++++- - 2 files changed, 91 insertions(+), 81 deletions(-) + configure: Fix typo "(requires both --enable-xcb)" -commit d5a998387bcee6569d33375d592190f480f12712 -Author: Behdad Esfahbod <behdad@behdad.org> -Date: Thu Sep 25 04:27:11 2008 -0400 + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) - Add an internal font face - - The font data and rendering is adapted from Keith Packard's Twin - window system. The hinting stuff is not ported yet, but hey, it renders! - - The implementation uses user fonts, and the user font backend is modified - to use this font face (which we call "twin" font face internally) when - a toy font is needed. - - The font face layer is then modified to use this font if: - - - The toy font face "cairo" is asked for, or - - - No native font backend is available, or - - - The preferred native font backend fails to return a font with - STATUS_UNSUPPORTED. No font backend does this right now but - the idea is to change FreeType to return it if no fonts found - on the system. - - We also allow building with no font backends now! - - The new doc/tutorial/src/twin.c file tests the twin face at various - sizes. +commit faeb6caaeba76c9797db0cd917bff4f102512d59 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 18:40:27 2010 +0100 - build/configure.ac.features | 26 +- - doc/tutorial/src/twin.c | 39 ++ - src/Makefile.sources | 2 + - src/cairo-font-face-twin-data.c | 1030 +++++++++++++++++++++++++++++++++++++++ - src/cairo-font-face-twin.c | 199 ++++++++ - src/cairo-font-face.c | 33 +- - src/cairo-user-font.c | 53 ++- - src/cairoint.h | 18 +- - 8 files changed, 1371 insertions(+), 29 deletions(-) - -commit dd7e2461ce748403e121a5de5e4e4c8890e39236 -Author: Carl Worth <cworth@cworth.org> -Date: Thu Sep 25 16:06:19 2008 -0700 - - Increment cairo version to 1.8.1 after the 1.8.0 release. + version: 1.10.1 open for bugfixing cairo-version.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/ChangeLog.pre-1.10 b/ChangeLog.pre-1.10 new file mode 100644 index 0000000..296ccbe --- /dev/null +++ b/ChangeLog.pre-1.10 @@ -0,0 +1,44510 @@ +commit cb0bc64c16b3a38cbf0c622830c18ac9ea6e2ffe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 17:15:51 2010 +0100 + + version: 1.10.0 *release* + + /me faints with excitement. + + cairo-version.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 87fad104645c481ab027afbc9fa45c54cacbc9a7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 17:14:41 2010 +0100 + + NEWS: Sum up 2 years of development for 1.10.0 in 60 lines + + NEWS | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 61 insertions(+), 0 deletions(-) + +commit 04623ef9df7274d411a3b7f03129bf43e53e7086 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 13:15:55 2010 +0100 + + test: Add subsurface-outside-target refs to REFERENCE_IMAGES + + test/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit d5b2c2a12ebea33f4d108d4deec2e9111c8c7e12 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 13:10:08 2010 +0100 + + test: Rename clip-fill-*-unbounded.image16 ref to match REFERENCE_IMAGES + + test/clip-fill-eo-unbounded.image16.ref.png | Bin 0 -> 2887 bytes + test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes + test/clip-fill-nz-unbounded.image16.ref.png | Bin 0 -> 2887 bytes + test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 2887 -> 0 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit cab9682f9dc4c99dcd51ddb66abd756e2ac7a63c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 12:24:47 2010 +0100 + + check: Ignore the documentation errors. + + Currently it is complaining about having documentation for + unconfigured sections, ignore it for now. + + doc/public/check-doc-coverage.sh | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit 8127f1f5d52bb716dbd70efe096894f2a542f4a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 6 12:24:14 2010 +0100 + + Bump pixman requirements to 0.18.4 for assorted fixes. + + README | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 21a2f90cdef3d592c1d1614852fe3929ed2aa765 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 2 13:19:26 2010 +0100 + + check: Make the actual error stand out + + doc/public/check-doc-coverage.sh | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 8258532794d0579f6c1b825b8cfb9c8f7ced4369 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 2 13:15:07 2010 +0100 + + Reduce the cairo_device_type_t to only hold the used entries. + + This should help clarify the documentation by not mentioning non-existent + devices and prevent any assumed coupling between surface-type values and + devices. + + src/cairo.h | 49 +++++------------------------- + util/cairo-gobject/cairo-gobject-enums.c | 24 ++------------ + 2 files changed, 12 insertions(+), 61 deletions(-) + +commit e3afbc1875d618c6d7e893971372be8f9889fc8b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 2 13:07:53 2010 +0100 + + check: Fix for link-time-optimisation + + src/check-def.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a9e055ff481303428cd9684dca826bc3f5d868c5 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Sep 2 14:51:30 2010 +0100 + + freelist: Separate freelist inlines from the datatype in headers. + + The cairo-freelist-private.h header has a number of static inline + functions which call hidden functions in libcairo. This poses + a problem on Solaris where the native compiler compiles inline + functions whether they are used or not, thereby adding the + link time requirements on hidden functions from whatever code + that includes cairo-freelist-private.h. Unfortunately the + boilerplate code includes cairo-private headers and indirectly + the freelist header, so linking the boilerplate helper library + fails on Solaris. + + This patch separates the structure definitions from the function + prototypes and static inlines in cairo-freelist-private.h by moving + the datatypes to a new cairo-freelist-type-private.h. + + src/Makefile.sources | 1 + + src/cairo-freelist-private.h | 28 +------------------ + src/cairo-freelist-type-private.h | 54 +++++++++++++++++++++++++++++++++++++ + src/cairo-xlib-display.c | 2 +- + src/cairo-xlib-private.h | 2 +- + 5 files changed, 58 insertions(+), 29 deletions(-) + +commit f5632d641c44a143386ca3b413e90ed3b1a85f89 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Sep 2 13:55:55 2010 +0300 + + build: Remove stray backslash. + + A stray backslash bwetween two assignment lines apparently + invokes a GNU make extension for conditional assignments. + This patch fixes the build when using the native Solaris make. + + src/Makefile.sources | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3a8b8fcc2a8a48cef49211c45723862f9fa8db23 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Sep 1 21:14:40 2010 +0200 + + gobject: Fix header defines + + util/cairo-gobject/cairo-gobject.h | 64 ++++++++++++++++++------------------ + 1 files changed, 32 insertions(+), 32 deletions(-) + +commit 54a651564cdd2510d0a66f6720c4a45733ff3285 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Sep 1 18:47:16 2010 +0200 + + build: Work around caching not reevaluating uncached variables + + This is a somewhat crude hack to ensure that GOBJECT_CFLAGS/LIBS are + properly cached. + + configure.ac | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 28ba78a9716f3c105cdfb5f7519f2435dd9cb271 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Sep 1 18:46:46 2010 +0200 + + gobject: Fix pkgconfig file variable + + I confused % and $. I blame it on spec files. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 61a1835e40d0b6d786951143779077d16ed2486e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Sep 1 03:17:12 2010 +0200 + + subsurface: Fix acquire_source_surface for out-of-bounds surfaces + + See subsurface-outside-target test. + + src/cairo-surface-subsurface.c | 41 ++++++++++++++++++++++----------------- + 1 files changed, 23 insertions(+), 18 deletions(-) + +commit f54c51e75c7abe872127d559e029bf4383439bca +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Sep 1 02:10:51 2010 +0200 + + test: Add subsurface-outside-target + + This test defines the behavior of subsurfaces when they are created to + be bigger than their target. + + test/Makefile.sources | 1 + + test/subsurface-outside-target.argb32.ref.png | Bin 0 -> 2063 bytes + test/subsurface-outside-target.c | 178 +++++++++++++++++++++++++ + test/subsurface-outside-target.rgb24.ref.png | Bin 0 -> 1648 bytes + 4 files changed, 179 insertions(+), 0 deletions(-) + +commit 6eab5ee10c111cf87dcf62e3f639f44cfd1e5cf6 +Author: Maarten Bosmans <mkbosmans@gmail.com> +Date: Sat Aug 28 13:39:21 2010 +0200 + + build: prefer libpng14 over older versions + + Also move libpng to the front of the list, so that the default + version of the system is first checked. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9f98ec6eb915204d59820cf57d32f347f9933517 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Aug 29 00:05:51 2010 +0300 + + device: Refer the user to per-backend docs about devices. + + The exact semantics of the device API can't be spelled out + out in the device API docs since the effects are so tied + to the specific backend. To use a particular device in + practice the user should refer to the backend docs. + + src/cairo-device.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit b0f65054b810d432238ff4986bee3f63e1fc46df +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Aug 29 00:03:07 2010 +0300 + + subsurface: Add a note to the docs about usage restrictions. + + Make our assumptions about constructed subsurfaces explicit + while we work out the correct semantics for the edge cases. + + src/cairo-surface-subsurface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 92fe2d370d120f4d9bc95e92209d1c1cec7e900b +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Aug 28 17:12:45 2010 +0200 + + surface-offset: Use right variable in mask + + Use source/mask instead of their copies. The copies only get initialized + if we actually need to translate things. + + src/cairo-surface-offset.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit df4b23ff74f3d22fb306f59cdba4dce6b0857cd2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Aug 27 20:26:06 2010 +0300 + + subsurface: Fix crash when acquiring a source image. + + The code is passing in the extra info received from + the target surface's acquire_source() method to + _cairo_surface_get_extents() rather than the acquired + source surface itself. + + src/cairo-surface-subsurface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2d146867dc4d4e17da2fd1e4776f62aaa999d90f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Aug 26 14:50:34 2010 +0200 + + subsurface: Correct cloning condition + + 72644c6df2c2da1d77ca10a755dbb44bbd960c0d was using the wrong (inverted) + condition to check if the subsurface extents are contained in the + target extents. + + src/cairo-surface-subsurface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 72644c6df2c2da1d77ca10a755dbb44bbd960c0d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Aug 26 14:24:17 2010 +0200 + + subsurface: Avoid invalid accesses + + Whenever subsurface extents are not contained in the target extents, + using the source image given by the target (with origin corrected by + using an appropriate offset in the data pointer) is not a valid + operation. Fallback to cloning in that case. + + src/cairo-surface-subsurface.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +commit df4465bdd11e25a1ed942bc0fc8e7dc5d43f951f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Aug 26 14:23:04 2010 +0200 + + subsurface: Silence compiler warnings + + Commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 introduced two + unused variable warnings. + + src/cairo-surface-subsurface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit d1c35f5e65d53f6b8b9060455335424ca0f44bd0 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 13:55:02 2010 +0200 + + subsurface: Don't clip size to target size + + This clipping would modify the origin of the subsurface and then the + creator has no easy way to figure this out. + + src/cairo-surface-subsurface.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 174fb5f16f93887e2f319edd5b46efae3e7e93ad +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 13:21:04 2010 +0200 + + subsurface: Don't apply device transform twice for source/mask + + src/cairo-surface-offset.c | 12 ------------ + 1 files changed, 0 insertions(+), 12 deletions(-) + +commit e79acf47a57b60c83d1f9491aac354161986b29b +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 12:54:25 2010 +0200 + + subsurface: Make CAIRO_SURFACE_TYPE_SUBSURFACE public + + src/cairo-analysis-surface.c | 2 +- + src/cairo-image-surface.c | 2 +- + src/cairo-pdf-surface.c | 4 ++-- + src/cairo-ps-surface.c | 4 ++-- + src/cairo-script-surface.c | 2 +- + src/cairo-surface-subsurface.c | 4 ++-- + src/cairo-types-private.h | 3 +-- + src/cairo-xcb-surface-render.c | 4 ++-- + src/cairo-xlib-surface.c | 2 +- + src/cairo.h | 7 ++++++- + src/drm/cairo-drm-i915-shader.c | 6 +++--- + src/drm/cairo-drm-i965-shader.c | 6 +++--- + 12 files changed, 25 insertions(+), 21 deletions(-) + +commit 40459dacb52587cc784faf2635e54797d3989408 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 11:45:28 2010 +0200 + + subsurface: Don't crash when the device transform isn't integer + + Apply the transform before rounding to integer coordinates, so we can + handle doubles easily. + + src/cairo-surface-subsurface.c | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) + +commit e19b213e84ab8b8ead5e0c700e5b906590e22aa1 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 11:18:29 2010 +0200 + + subsurface: Make subsurfaces their own type + + Do not try to hide being a subsurface. + This would cause confusion when users where calling surface-type + specific getters on subsurfaces. + + FIXME: We still need public API to access a subsurface's target though. + + src/cairo-surface-subsurface.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit e65bf64c4a6e2c7ff673449b8459b3150e438e21 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Aug 26 11:17:06 2010 +0200 + + subsurface: Properly account for device offsets in the target + + src/cairo-surface-subsurface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 8e9c4ea5890a4df3f463e592dc3aa429bb423608 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 11 12:18:53 2010 +0100 + + Mark the context as invalid on the final cairo_destroy() + + We initialise the context to a non-error state upon creation, but after + destroy there is a window of opportunity where the object is kept alive + inside the context pool and the user could mistakenly keep on passing + the zombie context into cairo functions. As all entry points need to + check error status, flagging the context as an error object upon the + final unreference prevents such misuse (until such as time as the + context is reallocated). + + src/cairo.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit cd52378ae60ab2075d7e9ec7335e990b2f46059e +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Aug 10 19:38:59 2010 +0200 + + test: Update linear-gradient-large ref image + + Make linear-gradient-large ref image match xlib gradients (both on nvidia + and on macosx) and pixman gradients (when patched to compute the linear + gradients using floating point math). + + test/linear-gradient-large.ref.png | Bin 3753 -> 4079 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit a7762e3d6570a6981d8fb74ecc6ae30391c39b89 +Author: Krzysztof Kosiński <tweenk.pl@gmail.com> +Date: Tue Aug 10 17:55:03 2010 +0200 + + tests: Add linear-gradient-large test + + Shows large rounding errors in Pixman when computing gradients. Added as + a test to Cairo to catch similar issues in other backends. + + https://bugs.freedesktop.org/show_bug.cgi?id=29470 + + test/Makefile.am | 5 ++- + test/Makefile.sources | 1 + + test/linear-gradient-large.c | 67 ++++++++++++++++++++++++++++++++++++ + test/linear-gradient-large.ref.png | Bin 0 -> 3753 bytes + 4 files changed, 71 insertions(+), 2 deletions(-) + +commit 56ea51fdcc273531b5e86b921aad19237a1c9415 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Aug 9 20:23:50 2010 +0200 + + Replace insertion sort with mergesort in the scan converter + + Insertion sort can take up to O(n^2), mergesort is guaranteed to run + in O(n*log(n)). + An example showing bad performance for insertion sort is: + https://bugs.freedesktop.org/show_bug.cgi?id=28067 + + The mergesort has been engineered to be fast even when working on + cases where the insertion sort would have performed well and as + expected it shows no changes in the benchmark cairo traces. + + src/cairo-tor-scan-converter.c | 138 ++++++++++++++++++++++++++++++---------- + 1 files changed, 103 insertions(+), 35 deletions(-) + +commit a150371a5d10e03d6c0d781c6fac950a9ac6be18 +Author: Nicolaus L Hepler <nlhepler@gmail.com> +Date: Tue Aug 10 09:34:39 2010 +0200 + + ft-font: Make alpha mapping consistent + + Vertical RGB mapping previously forced opaque pixels. + To be consistent with horizontal RGB/BGR and vertical BGR it + should use an alpha equal to the mid channel (green). + + src/cairo-ft-font.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit 73470862cbc5895147d5c58ca2647f539e8fe67c +Author: David Schleef <ds@schleef.org> +Date: Tue Aug 10 02:37:38 2010 +0200 + + perf: Fix README to say cairo-perf-micro + + perf/README | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit df8f96423429915ef1648310fce8b5aed0917c0a +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Aug 10 01:24:30 2010 +0200 + + build: Fudge the build system some more so it handles extra libs + + Add NONPKGCONFIG_EXTRA_LIBS that are only put into the generated pc file + but not used when linking. This is now used to add -lcairo-gobject to + the cairo-gobject.pc file. + + build/configure.ac.features | 3 +++ + configure.ac | 2 +- + src/cairo-features-uninstalled.pc.in | 2 +- + src/cairo-features.pc.in | 2 +- + 4 files changed, 6 insertions(+), 3 deletions(-) + +commit 01325ad767acf6213135a0bad895de233324f745 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Aug 10 00:11:25 2010 +0200 + + gobject: Include the extra library in the pkgconfig file + + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 8fb91dc3f6b691f91c322cec4b1d0ee4dbebd69c +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Aug 10 00:53:53 2010 +0300 + + script: Fix script backend build. + + The flight data recorders were missing an include + of cairo-tee.h ever since cairo-tee.h became an optional + backend. + + util/cairo-fdr/fdr.c | 1 + + util/cairo-sphinx/fdr.c | 1 + + 2 files changed, 2 insertions(+), 0 deletions(-) + +commit 766832364904dbf5b8a67ebc1600d2ec45d2734f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Aug 9 18:47:13 2010 +0200 + + perf: Improve calibration + + Make the loops count depend on the actual calibration_loops/calibration_time + instead of calibration_loops/calibration_max_time. + This avoids having some tests take much less/more than the wanted time per iteration + (I was having some tests taking about 1 second, other taking about 7 seconds when + the ms_per_iteration was 2000) + + Spend 0.5-1 times the time wanted for each iteration in calibration, increase the + accuracy of loops count. Just making the loops count be the correct ratio doesn't + guarantee that the iteration time is accurate. By actually measuring iteration + times until it gets greater than 1/4 of the wanted time, the total sum is bound + to be <= the wanted iteration time and last calibration time is between 1/4 and + 1/2 of the wanted time, so it should give a very accurate loop count. + + perf/cairo-perf-micro.c | 17 ++++++++--------- + 1 files changed, 8 insertions(+), 9 deletions(-) + +commit 046b642db0782ab5e2a5c82988b21e05afe8e716 +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 16:30:59 2010 +0300 + + os2: Restore surface type checking in the get_extents method. + + src/cairo-os2-surface.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit 78bdd87b7545f8e85632ac301a69da145727fcec +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 16:22:26 2010 +0300 + + os2: Fix clipping to bounds when blitting pixels. + + The bounds checks on the rectangle to blit were done + after converting target/source to inclusive/noninclusive + coordinates rather than before, potentially causing an + off-by-one in the sizes, since the same logic was applied + to both inclusive and non-inclusive coordinates. This + patch enforces bounds up front. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 64 ++++++++++++++++++++-------------------------- + 1 files changed, 28 insertions(+), 36 deletions(-) + +commit d0284687b32161212d6bc52309e2d5bb516dc3e8 +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 03:53:24 2010 +0300 + + os2: Tweak an inline declaration. + + C99 and cairo prefers "static inline <return type>" rather + than "static <return type> inline". + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit cb30340064a2ff24dc408e185c5a309a14f6c78c +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 03:33:10 2010 +0300 + + os2: Consolidate error paths of cairo_os2_surface_create(). + + Use a single code path to release the resources acquired + for a surface that's been partially constructed, rather than + have multiple error exits which each release the resources + acquired so far. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 120 +++++++++++++++++++++++----------------------- + 1 files changed, 60 insertions(+), 60 deletions(-) + +commit 66e3d650fe90754c811195c75579ac7a3512b7be +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 03:12:12 2010 +0300 + + os2: Document ownership of OS/2 objects passed to surfaces. + + Clarify the documentation for cairo_os2_surface_create() + and cairo_os2_surface_set_hwnd() to note that the ownership + of the presentation space and window respectively + remains with the caller. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 23 ++++++++++++----------- + 1 files changed, 12 insertions(+), 11 deletions(-) + +commit 01525271544d5b88f87027e470fa85038d59bf8d +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 03:08:21 2010 +0300 + + os2: Don't fake an Anchor Block when one isn't needed. + + The code was being tricky about passing in a HAB to + DevOpenDC() even though one isn't needed at all under + OS/2. Pass in NULL instead. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 16 +++------------- + 1 files changed, 3 insertions(+), 13 deletions(-) + +commit 883d9725e0f844e7d5cc4c50c75a812b5435702b +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 03:01:56 2010 +0300 + + os2: Fix buffer allocator behaviour on arithmetic overflow. + + On arithmetic overflow the buffer allocator would attempt + to allocate zero bytes instead of failing the allocation. + Depending on the implementation of the underlying allocator + being proxied, this may result in an allocation of a zero + length buffer, causing all kinds of grief. This patch + causes arithmetic overflows to explicitly fail the allocation. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-surface.c | 54 ++++++++++++++++++++--------------------------- + 1 files changed, 23 insertions(+), 31 deletions(-) + +commit b54037828c5b338b2f1dcbe48201225b258c1e1e +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 02:40:20 2010 +0300 + + os2: Fix blitting 24 bpp pixel data. + + There's a format mismatch between cairo's pixel formats + and OS/2 24 bpp data: the individual pixels in OS/2 take + only three bytes per pixel, but there needs to be padding + between lines to make the start of a line always be aligned + at a DWORD boundary. + + This patch fixes the format conversion code to include + the required padding between rows. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + src/cairo-os2-private.h | 1 + + src/cairo-os2-surface.c | 118 +++++++++++++++++++++++++++-------------------- + 2 files changed, 69 insertions(+), 50 deletions(-) + +commit 5aadecb3ac03d379c2c8113566fa8062843df42e +Author: Rich Walsh <DragText@E-vertise.Com> +Date: Sat Aug 7 02:30:01 2010 +0300 + + os2: New API to create surfaces without a persistent HPS. + + It's not always necessary to create a presentation space (HPS) for + surface tied to a window, as the user may have one already. This patch + introduces three new functions to create a surface without an HPS + and let the user manage an HPS associated with the surface. + + Thread "OS/2 surface fixes" on cairo-l: + http://lists.cairographics.org/archives/cairo/2010-July/020343.html + + Mozilla Bugzilla: + https://bugzilla.mozilla.org/show_bug.cgi?id=557159 + + src/cairo-os2-surface.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++- + src/cairo-os2.h | 14 +++++ + 2 files changed, 153 insertions(+), 3 deletions(-) + +commit 9669faa936fe38da3615d7831e423befa5ecdfad +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Aug 8 17:23:05 2010 +0200 + + gl: Handle errors from _cairo_gl_gradient_render() + + Thanks Andrea for finding this. + + src/cairo-gl-gradient.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit e31b56e020df806aa6180cd2efa0a34e55e5adaf +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Aug 8 14:45:24 2010 +0200 + + configure: Fix gobject handling + + 1) Explicitly depend on glib, too. + 2) Don't link gobject into libcairo proper (thanks Joonas for noticing). + + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit ae2b7b13cd5fdeaee44496056bb99f497346e262 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Aug 4 14:22:23 2010 +0200 + + pattern: Simplify degenerate linear pattern to solid colors + + Degenerate linear patterns are considered clear if they have + EXTEND_NONE, the average of the first and the last stop if they are + EXTEND_PAD, the weighted average of the stops (based on the size of + the interpolation range in which they are active, just like integrating + over the whole interpolation range and taking the average) if they are + EXTEND_REPEAT or EXTEND_REFLECT. + + Fixes degenerate-linear-gradient + + src/cairo-pattern.c | 119 ++++++++++++++++++++++++++++++- + test/degenerate-linear-gradient.ref.png | Bin 232 -> 322 bytes + 2 files changed, 117 insertions(+), 2 deletions(-) + +commit d54a5a9fc90857448954d6cbe725d4665efa3d45 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Aug 4 14:16:34 2010 +0200 + + pattern: Add gradient degeneracy testing functions + + Introduce two new (private) functions for testing the degeneracy of linear + and radial gradients and use them instead of verbose (and error-prone) tests. + + src/cairo-pattern.c | 21 +++++++++++++++++---- + 1 files changed, 17 insertions(+), 4 deletions(-) + +commit 63434bc43819e2c7d4db568e82f5a9a7dfb0418d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Aug 4 14:22:01 2010 +0200 + + gstate: Correct comment + + src/cairo-gstate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 28cd511fb974f886ae65e588413afcfc220a1a7c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Aug 7 22:55:46 2010 +0200 + + Correct color stops comparison function + + Two clear stops with different "underlying" colors must be considered + different, since when interpolated with non-clear colors they will + produce different results. + + src/cairo-color.c | 25 ++++--------------------- + 1 files changed, 4 insertions(+), 21 deletions(-) + +commit f71a618bd2604c8f0beaf4816a38a54f6f271bd9 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Aug 7 21:32:09 2010 +0200 + + Fix configuration if gobject is absent + + Autodetect gobject and only use it if present. + Its absence is not to be considered a failure since it's not required. + + build/Makefile.win32.features | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 661f4859cdbc0394ed0a9db34ced0f4e2bbe78ff +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Aug 7 20:05:42 2010 +0200 + + Add cairo-gobject library + + This library is supposed to contain GType declarations for Cairo types. + It is also meant to support gobject-introspection binding creation. + + boilerplate/Makefile.win32.features | 12 + + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 + + configure.ac | 10 + + src/Makefile.win32.features | 16 + + util/Makefile.am | 4 + + util/cairo-gobject/Makefile.am | 15 + + util/cairo-gobject/cairo-gobject-enums.c | 519 ++++++++++++++++++++++++++++ + util/cairo-gobject/cairo-gobject-structs.c | 87 +++++ + util/cairo-gobject/cairo-gobject.h | 186 ++++++++++ + 10 files changed, 853 insertions(+), 0 deletions(-) + +commit fc4e8f036326da1839ec5320eba60823e7efc2db +Author: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Sat Aug 7 12:10:49 2010 -0400 + + Update documentation to reflect that rgb565 is no longer deprecated. + + src/cairo.h | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit de606af5d673df193fc07fbd047ba2cec82d2f1c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 18:04:36 2010 +0200 + + quartz: improve backend detection + + Quartz previously crashed with NULL backends and didn't check for + the backend type when getting a CGContext from a quartz surface, + returning meaningless data for subsurfaces. + + src/cairo-quartz-surface.c | 24 +++++++++++++++--------- + 1 files changed, 15 insertions(+), 9 deletions(-) + +commit 056ce165c4377e9cf93fd7a06b6b0d5d4d98cb8c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jul 27 18:50:55 2010 +0200 + + quartz: fix solid masking fallback + + Falling back when painting would ignore the alpha value (which is + needed to have the correct mask opacity). + _cairo_quartz_surface_paint_cg doesn't fallback, so the usual mask + fallback path is now taken, as expected. + + src/cairo-quartz-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit bdeade14ea86fb5f3ff17accd71711d2c40b1b33 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jul 28 19:33:53 2010 +0200 + + quartz: fix stroking with unbounded operators + + Self-intersecting strokes were drawn incorrectly when an unbounded + operator was used, since the fixup operation also cleared the + intersection. + + Fixes clip-stroke-unbounded. + + src/cairo-quartz-surface.c | 14 ++++++++------ + 1 files changed, 8 insertions(+), 6 deletions(-) + +commit 8f38d2aa29bc0d69690cbf542c4a2b497b7a0c0a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 29 10:45:59 2010 +0200 + + test: improve clip-*-unbounded tests + + Merge clip-*-unbounded tests and add self-intersections to the paths + that are drawn. This exposes a bug in the unbounded fixup code in quartz. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + test/Makefile.am | 35 ++-- + test/Makefile.sources | 3 +- + test/clip-draw-unbounded.c | 184 ++++++++++++++++++++ + test/clip-fill-eo-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes + test/clip-fill-eo-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes + test/clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes + test/clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes + test/clip-fill-eo-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes + test/clip-fill-eo-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes + ...p-fill-eo-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes + test/clip-fill-eo-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes + test/clip-fill-eo-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes + test/clip-fill-nz-unbounded.argb32.ref.png | Bin 0 -> 3668 bytes + test/clip-fill-nz-unbounded.image16.rgb24.ref.png | Bin 0 -> 2887 bytes + test/clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin 0 -> 3366 bytes + test/clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin 0 -> 3061 bytes + test/clip-fill-nz-unbounded.rgb24.ref.png | Bin 0 -> 3201 bytes + test/clip-fill-nz-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 3636 bytes + ...p-fill-nz-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 3208 bytes + test/clip-fill-nz-unbounded.xlib.argb32.ref.png | Bin 0 -> 3693 bytes + test/clip-fill-nz-unbounded.xlib.rgb24.ref.png | Bin 0 -> 3198 bytes + test/clip-fill-unbounded.argb32.ref.png | Bin 1607 -> 0 bytes + test/clip-fill-unbounded.c | 105 ----------- + test/clip-fill-unbounded.image16.ref.png | Bin 1204 -> 0 bytes + test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 1244 -> 0 bytes + test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 1244 -> 0 bytes + test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 1436 -> 0 bytes + test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 1368 -> 0 bytes + test/clip-fill-unbounded.rgb24.ref.png | Bin 1304 -> 0 bytes + test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 1601 -> 0 bytes + test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 1601 -> 0 bytes + ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1438 -> 0 bytes + test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1759 -> 0 bytes + test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1430 -> 0 bytes + test/clip-stroke-unbounded.argb32.ref.png | Bin 1694 -> 3545 bytes + test/clip-stroke-unbounded.c | 102 ----------- + test/clip-stroke-unbounded.image16.ref.png | Bin 1255 -> 0 bytes + test/clip-stroke-unbounded.image16.rgb24.ref.png | Bin 0 -> 2778 bytes + test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 1351 -> 0 bytes + test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 1351 -> 0 bytes + test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 1493 -> 3362 bytes + test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 1356 -> 3061 bytes + test/clip-stroke-unbounded.rgb24.ref.png | Bin 1372 -> 3063 bytes + test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 1697 -> 0 bytes + test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 1697 -> 3569 bytes + ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1437 -> 3123 bytes + test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1785 -> 3620 bytes + test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1442 -> 3109 bytes + 48 files changed, 204 insertions(+), 225 deletions(-) + +commit 142df6f9638e10d0712e092d902f7670965a88f9 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 30 22:04:44 2010 +0200 + + configure: Disable xml backend by default + + We don't want to enable it by default when nobody uses it. + + boilerplate/Makefile.win32.features | 2 +- + build/Makefile.win32.features | 2 +- + configure.ac | 2 +- + src/Makefile.win32.features | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 9f33f8453b4949cfdc63169d3acd7238f89379c2 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 30 21:48:14 2010 +0200 + + configure: Disable tee backend by default + + We don't want to enable it by default when nobody uses it. + + boilerplate/Makefile.win32.features | 4 +++- + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 2 ++ + configure.ac | 2 +- + src/Makefile.win32.features | 8 +++++++- + src/cairo-surface.c | 4 ++++ + test/api-special-cases.c | 6 ++++++ + 7 files changed, 24 insertions(+), 3 deletions(-) + +commit 9f4d677e2a6dd0bfbbbe20de39f92177bfdfc0e8 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 30 22:15:55 2010 +0200 + + tee: Move definitions into separate header + + src/Makefile.sources | 6 +++- + src/cairo-tee-surface.c | 2 + + src/cairo-tee.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo.h | 17 ------------ + test/api-special-cases.c | 3 ++ + 5 files changed, 75 insertions(+), 19 deletions(-) + +commit 14639e6b8525ada2cb93abb1d70dde827b7bf9e0 +Author: Kristian Høgsberg <krh@bitplanet.net> +Date: Thu Jun 17 18:29:48 2010 -0400 + + egl: Use EGL_KHR_surfaceless_opengl extension when available + + This lets us avoid creating a throwaway pbuffer just to make the + context current. + + src/cairo-egl-context.c | 58 ++++++++++++++++++++++++++++++---------------- + 1 files changed, 38 insertions(+), 20 deletions(-) + +commit b6fd673d37e1c8962d15c0e0e59322a2002fc399 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 26 13:15:38 2010 +0100 + + version: 1.9.15 post-snapshot bump + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ed8c6f42540f03a62fd64ad83b7c397528092232 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 26 12:53:44 2010 +0100 + + version: 1.9.14 snapshot + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 81094cf4622302ebaa9b3f328f5d2a56a1c07a64 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 26 12:52:56 2010 +0100 + + NEWS: 1.9.14 + + NEWS | 27 +++++++++++++++++++++++++++ + 1 files changed, 27 insertions(+), 0 deletions(-) + +commit c1fcbd0322f86327ddd89c2eef2facbc74045629 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jul 26 11:21:48 2010 +0200 + + quartz: fix REFLECT radial gradients + + The interpolation range of repeating radial gradients can safely be + reflected around any integer (previously 0), but for reflect-extended + radial gradients can only be reflected around odd integers if the + appearance is to be the same, thus reflecting around 1 is correct for both. + + Fixes radial-gradient. + + src/cairo-quartz-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 3898e46d1de19848efeddb442dcf7f7663530256 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 23 09:41:48 2010 +0100 + + image: Compensate mask origins for glyph clipping + + Fixes the regression in bitmap-font and large-font pointed out by Andrea + Canciani since ef067933. + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 53fcfc781eeee949abc03cf90048a2228f7e0a63 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Jul 21 22:39:40 2010 +0300 + + build: Typos in comments. + + Fix inline "dnl" strings left over from a string + substitution "--" -> "dnl". + + build/configure.ac.pthread | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit fd1e731c9d0af307ebde4d888866c95bd6ebe66d +Author: Hib Eris <hib@hiberis.nl> +Date: Wed Jul 21 22:34:05 2010 +0300 + + build: Fix pthread detection code when there isn't one. + + The code was testing the output variable $use_pthread rather than + the input variable $enable_pthread when checking that pthreads + were actually found when requested. + + build/configure.ac.pthread | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 108b1c7825116ed3f93aa57384bbd3290cdc9181 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sat Jul 17 13:08:53 2010 +1200 + + clip: consider gstate target extents in _cairo_gstate_copy_clip_rectangle_list + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29125 + + To be consistent with _cairo_gstate_clip_extents, the context's clip + should be intersected with the target surface extents (instead of only + using them when there is no clip). + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-clip.c | 72 ++++++++++++++++++--------------------------------- + src/cairo-gstate.c | 14 +++++++++- + test/get-clip.c | 16 +++++++++++ + 3 files changed, 55 insertions(+), 47 deletions(-) + +commit b79ea8a6cab8bd28aebecf6e1e8229d5ac017264 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sat Jul 17 11:46:25 2010 +1200 + + clip: consider all_clipped in _cairo_clip_get_extents + + If the gstate clip in _cairo_gstate_int_clip_extents() has all_clipped + set (and path NULL), then it returns the gstate target extents instead of + an empty rectangle. If the target is infinite, then it says the clip is + unbounded. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29124 + Tested-by test/get-clip + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-clip.c | 5 +++++ + test/get-clip.c | 5 ++++- + 2 files changed, 9 insertions(+), 1 deletions(-) + +commit 6a5115901381fe9c81a8a311e267c2a00e2a1d04 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sat Jul 17 10:47:42 2010 +1200 + + test: return CAIRO_TEST_FAILURE from get-clip preamble on failure + + https://bugs.freedesktop.org/show_bug.cgi?id=29120 + + test/get-clip.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit f2fa15680ec3ac95cb68d4957557f06561a7dc55 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sat Jul 17 10:39:50 2010 +1200 + + clip: return empty clip from _cairo_clip_copy_rectangle_list when all_clipped + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29122 + Tested by test/get-clip + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-clip.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 33ac2035876aeb9215ca0bdaaeea5265fcee61f8 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sat Jul 17 10:13:22 2010 +1200 + + test: use the surface size expected in get-clip phase "No clip set" + + https://bugs.freedesktop.org/show_bug.cgi?id=29121 + + test/get-clip.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit bac5c28a18af5d43c96f0b64d1c7235da3f02779 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 17 10:09:14 2010 +0100 + + boilerplate: Offset the xlib window + + An idea courtesy of Benjamin Otte is to stress the drivers a bit more by + not rendering to 0,0. Under various circumstances rendering to a Window + is mapped onto the Screen root Window with a collection of offsets and + clips by X. It is easy for the driver to make a mistake and misrender... + + boilerplate/cairo-boilerplate-xlib.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 51b0c21f02a8f0f5d7f44da05e49d7f8f3bf8bc7 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 16 19:49:53 2010 +0200 + + build: Add explicit dependcy to cxx lib + + Otherwise the build will fail because it doesn't add the dependency + manually. + + https://bugs.freedesktop.org/show_bug.cgi?id=29114 + + boilerplate/Makefile.am | 3 +++ + src/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 1 deletions(-) + +commit 6b92d5a0f9fce28f99b07177454da00f984fdb43 +Author: Oleg Romashin <romaxa@gmail.com> +Date: Fri Jul 16 09:47:23 2010 +0100 + + qt: Use native glyph rendering. + + Remove the hack of using the xlib surface to do glyph rendering and use + the new interface introduced with Qt4.7, or else fallback to image + rendering with freetype. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + [2 files changed, 35 insertions(+), 140 deletions(-) \o/] + + src/cairo-qt-surface.cpp | 169 ++++++++++------------------------------------ + src/cairo-xlib-surface.c | 6 -- + 2 files changed, 35 insertions(+), 140 deletions(-) + +commit f53f072a223c3fbdeba315f5cba755cba498e121 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 18:53:29 2010 +0100 + + clip: Do the NULL check before the dereference. + + Breakage introduced in the commit earlier today. + + src/cairo-clip.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit ef0679333da881bd83b0bb4db546ea9c68f81f89 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 16:07:27 2010 +0100 + + image: Manually clip against bounds when rendering directly + + This is path is slightly peculiar in that it explicitly avoid the + intermediate mask and the geometry is not pre-clipped. + + This in conjunction with the previous commit fixes: + + Clip doesn't work for text + https://bugs.freedesktop.org/show_bug.cgi?id=29008 + + which is captured in test/partial-clip-text. + + src/cairo-image-surface.c | 23 +++++++++++++++++++---- + 1 files changed, 19 insertions(+), 4 deletions(-) + +commit 679e5a600bd7dae6cbde83070fb1f7355f8025a7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 16:06:32 2010 +0100 + + Differentiate between reducing clip to composite extents and a rectangle + + This is required for handling glyphs when rendering directly to the + surface. + + src/cairo-clip-private.h | 4 ++++ + src/cairo-clip.c | 22 +++++++++++++++------- + src/cairo-gl-surface.c | 4 ++-- + src/cairo-image-surface.c | 10 +++++----- + src/cairo-surface-fallback.c | 10 +++++----- + src/cairo-xcb-surface-render.c | 10 +++++----- + src/drm/cairo-drm-i915-glyphs.c | 2 +- + src/drm/cairo-drm-i915-surface.c | 8 ++++---- + src/drm/cairo-drm-i965-glyphs.c | 2 +- + src/drm/cairo-drm-i965-surface.c | 8 ++++---- + 10 files changed, 46 insertions(+), 34 deletions(-) + +commit 8546a877889bfafc056c867bc9aea25e9fdcdef0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 16:27:29 2010 +0100 + + test: Add partial-clip-text + + This exercises a bug found by Igor Nikitin: + + https://bugs.freedesktop.org/show_bug.cgi?id=29008 + + test/Makefile.am | 3 ++ + test/Makefile.sources | 1 + + test/partial-clip-text.c | 50 ++++++++++++++++++++++++++++++++++++ + test/partial-clip-text.ps.ref.png | Bin 0 -> 107 bytes + test/partial-clip-text.ref.png | Bin 0 -> 175 bytes + test/partial-clip-text.svg.ref.png | Bin 0 -> 173 bytes + 6 files changed, 54 insertions(+), 0 deletions(-) + +commit 53ee897449dca497d6a3d6dc90b87fea8027cc44 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 12:37:31 2010 +0100 + + version: Post-snapshot bump to 1.9.13 + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit aa4cd8287f47b4538e765e1b48dcbac19813a8a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 12:12:12 2010 +0100 + + version: 1.9.12 snapshot + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 53b129dd8aecf4e2bd8b7d2cd27b91370c6705e9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 12:11:42 2010 +0100 + + NEWS for 1.9.12. + + NEWS | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 56 insertions(+), 0 deletions(-) + +commit 01380f3a56b28a388d2876780f33516ecd16ee16 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 11:49:53 2010 +0100 + + test: Missing REFERENCE_IMAGES + + test/Makefile.am | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 459b8ae660eb49a87ffb9da31f305718a2b4f11f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 12 11:05:57 2010 +0100 + + Make distcheck happy. + + src/cairo-fontconfig-private.h | 2 ++ + src/cairo-skia.h | 2 +- + src/glew/GL/glew.h | 2 ++ + src/glew/GL/glxew.h | 2 ++ + test/api-special-cases.c | 5 +++-- + 5 files changed, 10 insertions(+), 3 deletions(-) + +commit d56b1718025f8b2354b5b1eb99af41df70a6c590 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jul 12 10:36:24 2010 +0200 + + test: Add halo quartz reference images + + When quartz-font is enabled, halo and halo-transform fonts have a + different shape. + + test/halo-transform.quartz.ref.png | Bin 0 -> 14360 bytes + test/halo.quartz.ref.png | Bin 0 -> 8601 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 9107895789fc721ee6ea2ccb2ce3ab99fb978caa +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Jul 12 11:03:15 2010 +0300 + + test: Add comments explaining the bug in bug-seams. + + Where two rasterization methods meet, havoc occurs. + + test/bug-seams.c | 22 ++++++++++++++++++++++ + 1 files changed, 22 insertions(+), 0 deletions(-) + +commit 0152db263b9b12547fadb5d080913fcbb696d34e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Jul 12 10:36:00 2010 +0300 + + build: Sync up autogenerated win32 build files. + + boilerplate/Makefile.win32.features | 9 +++++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + src/Makefile.win32.features | 9 +++++++++ + 4 files changed, 22 insertions(+), 0 deletions(-) + +commit 06ffb7df716652baba96960cd59e1a59f4bd1ac1 +Author: Eric Anholt <eric@anholt.net> +Date: Sat Jul 10 14:19:50 2010 -0700 + + gl: Only use a mat3 for the transformation for gradients coordinates. + + No point in passing in a column of zeroes that we multiply by zero, or + the row that we drop on the floor. We could do even better by just + passing in a 3x2, at the expense of adding a language version + dependency (or just pass in 2 vectors). + + No significant performance difference. + + src/cairo-gl-shaders.c | 28 +++++++++++++--------------- + 1 files changed, 13 insertions(+), 15 deletions(-) + +commit 1e7485f8e5b6fd9b26f06838d8e7a35e073c394b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Jul 12 00:23:11 2010 +0300 + + trace: Avoid stdbool.h C99ism. + + There is no <stdbool.h> on old Solaris without invoking + c99 mode explicitly. + + util/cairo-trace/trace.c | 184 +++++++++++++++++++++++---------------------- + 1 files changed, 94 insertions(+), 90 deletions(-) + +commit 97529a3713d899468fb3ca7a1c3f75a09bd1b215 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jul 11 23:54:21 2010 +0300 + + build: Avoid shifting shell parameters that aren't there. + + The shift primitive of the Solaris 9 Bourne shell doesn't like + it if we try to shift more formal arguments than are there. + This causes the compare_versions function in autogen.sh to croak when + the actual and compared versions differ in the number of + components. + + autogen.sh | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit dd6026b613aa5414a128727995f2a4f79284072a +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Jul 11 20:44:40 2010 +0200 + + doc: Make the necessity of flush/mark_dirty more obvious + + src/cairo-surface.c | 32 ++++++++++++++++++++++++++++++++ + 1 files changed, 32 insertions(+), 0 deletions(-) + +commit 8a1944f45b9c9056088246d4f2e72d60a59fd5c4 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Jul 11 19:11:15 2010 +0200 + + check: Allow unprefix type names in the title + + Some documentation sections use the type name as the title, and we don't + want to use that title as a link. + + src/check-doc-syntax.sh | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit f0466ecf7db859a80b779b7fb4381e3c9409c39b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jul 11 21:57:40 2010 +0300 + + build: Fix typo in pthread test program. + + Missing a semicolon after pthread_cleanup_push. Incredibly + only openbsd 4.5 minded. + + build/configure.ac.pthread | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3f1d7de8e1620ad385930477b63454107dd8ffd3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jul 11 17:29:07 2010 +0300 + + build: Fix regression provoked by newer autoconf and dodgy configuring. + + We're not supposed to be redefining PACKAGE_VERSION, PACKAGE_... + from the configure generated confdefs.h. This patch rudely adds + paper over the problem. The compiler warnings are a problem for + us since our checking of various compiler flags assumes that + no news is good news, and that any warning messages are due + to the flags under test. The regression appears when using + an autoconf >= 2.64, at least, but not with 2.61. + + The same issue appears in the pthread test because our conftest + unconditionally #defines _GNU_SOURCE, but autoconf ends up doing + that in the confdefs.h. + + build/configure.ac.noversion | 13 ++++++++++++- + build/configure.ac.pthread | 2 ++ + 2 files changed, 14 insertions(+), 1 deletions(-) + +commit fca8977219b857e2e61dd86ac39ae9f40086f306 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jun 27 03:03:17 2010 +0300 + + build: Rework pthread detection. + + Use two levels of pthread support: a minimal level used to + build cairo itself, and a full level to build threaded apps + which want to use cairo. The minimal level tries to use + pthread stubs from libc if possible, but falls back to the + full level if that's not possible. We use CFLAGS=-D_REENTRANT + LIBS=-lpthread to find a real pthread library since that seems + to work on every unix-like test box we can get our hands on. + + build/ax-pthread.m4 | 283 ----------------------------------------- + build/configure.ac.pthread | 251 ++++++++++++++++++++++++++++++++++++ + configure.ac | 47 +++---- + test/Makefile.am | 16 +-- + test/cairo-test-trace.c | 10 +- + test/cairo-test.c | 6 +- + util/cairo-sphinx/Makefile.am | 3 +- + util/cairo-sphinx/sphinx.c | 4 + + util/cairo-trace/Makefile.am | 4 +- + 9 files changed, 291 insertions(+), 333 deletions(-) + +commit 47c35e5e86a3c99fc39afe2e13a7c92d5247ee1e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jun 27 01:14:03 2010 +0300 + + build: Purge CAIRO_CC_TRY_LINK_FLAG. + + Use CAIRO_CC_TRY_FLAG instead in the one place where we used + CAIRO_CC_TRY_LINK_FLAG and make the build system one macro + smaller. + + build/aclocal.cairo.m4 | 21 --------------------- + build/configure.ac.warnings | 2 +- + 2 files changed, 1 insertions(+), 22 deletions(-) + +commit d2f5592e0e0d316cfc40ec676ee6e7f4e2a699fb +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jun 27 01:11:13 2010 +0300 + + build: Factor out a more pliable CAIRO_CC_TRY_LINK_WITH_ENV_SILENT. + + Introduce a new CAIRO_CC_TRY_LINK_WITH_ENV_SILENT macro for running + generic link tests with arbitrary CFLAGS/LIBS/LDFLAGS and no muttering + of autoconf messages. Rewrite the previous CAIRO_CC_TRY_FLAG in terms + of it. + + build/aclocal.cairo.m4 | 31 +++++++++++++++++++++++++------ + 1 files changed, 25 insertions(+), 6 deletions(-) + +commit 120b78ada7eed6424f07a688854657d0c3ad68f8 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Jul 11 18:48:38 2010 +0200 + + build: Split boilerplate lib generation into two so's + + Same thing as what was previously done for libcairo.so: Build an + intermediate lib for the (potential) C++ stuff. + + boilerplate/Makefile.am | 31 ++++++++++++++++++++++++------- + boilerplate/Makefile.sources | 7 ++----- + 2 files changed, 26 insertions(+), 12 deletions(-) + +commit d6362a0d76753cb6f85f0dbd567a3ec7b7b08696 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Jul 11 16:01:44 2010 +0200 + + qt: Define cairo-qt's API as C symbols + + That way, the C linker doesn't mess up when linking libcairo.so. + + src/cairo-qt.h | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 5d4a4775c8b091b947b52cc8f7e1e48a5eaea007 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Jul 11 15:41:56 2010 +0200 + + build: Fix typo that makes C++ libs not build + + src/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9b9952ab4f64a476bbadfd3e6cf1e66c1137ccd7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 10 11:13:07 2010 +0100 + + Convert mime data length to use unsigned long + + What we want to use is size_t, but we don't want the implied POSIX + dependency. However, POSIX does say that size_t is an unsigned integer + that is no longer than a long, so it would appear safe to use an + unsigned long as a replacement. Safer at least than unsigned int. + + src/cairo-image-info-private.h | 6 +++--- + src/cairo-image-info.c | 4 ++-- + src/cairo-output-stream-private.h | 2 +- + src/cairo-output-stream.c | 2 +- + src/cairo-pdf-surface.c | 18 +++++++++--------- + src/cairo-png.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-script-surface.c | 6 +++--- + src/cairo-surface.c | 4 ++-- + src/cairo-svg-surface.c | 6 +++--- + src/cairo-types-private.h | 2 +- + src/cairo-win32-printing-surface.c | 10 +++++----- + src/cairo.h | 4 ++-- + util/cairo-trace/trace.c | 6 +++--- + 14 files changed, 37 insertions(+), 37 deletions(-) + +commit eb85ab998b606144daf025285968a5d6031b9aa6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 10 10:43:40 2010 +0100 + + subsurface: Don't assume we ever own the target. + + Andrea pointed out that snapshots can be shared, and so the subsurface + should not be calling finish even on a snapshot. + + src/cairo-surface-subsurface-private.h | 1 - + src/cairo-surface-subsurface.c | 17 ++++++++--------- + 2 files changed, 8 insertions(+), 10 deletions(-) + +commit 59c83117d77f58e9cb64aaa6b572fab62fb31c6b +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 18:55:11 2010 +0200 + + build: Commit new versions of autogenerate Windows build files + + The recent commits to the build system changed a bunch of stuff in + there, so update the files. + + boilerplate/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- + build/Makefile.win32.features-h | 1 - + src/Makefile.win32.features | 92 +++++++++++++++++++++++++++++++---- + 3 files changed, 164 insertions(+), 21 deletions(-) + +commit bf117e4ea7c89dadcb5a358bb47c0f213cc67461 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 18:43:38 2010 +0200 + + build: fix glew include + + Currently wether internal glew is built is dependant on wether the + tarball in use was built with internal glew or not. And that's not how + it should be. + + configure.ac | 8 ++++---- + src/Makefile.sources | 11 +++++++---- + 2 files changed, 11 insertions(+), 8 deletions(-) + +commit 0bd704bd1e92b274209aeda6de88c7e75ffa81be +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 17:15:02 2010 +0200 + + build: Remove wrong flags from libcairo_cxx.la + + They're useful for the final so, but not for an intermediate noinst lib. + + src/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit faceffd5beb4297299175945660522d8f1f5f2cb +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 16:58:18 2010 +0200 + + build: copy/paste failure: Don't build libcxx.la + + src/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit dbb386d3c0aa9e7534d333cf3dbcfc2aaeac05d3 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 12:49:10 2010 +0200 + + gl: Use unsigned int instead of GLuint + + GLuint is not defined in cairo-gl.h. If unsigned int is not compatible + enough to GLuint, we might consider to use #include <GL/gl.h> instead. + + src/cairo-gl-surface.c | 2 +- + src/cairo-gl.h | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit f7fc8569a797356d5e93ad67aae4eca31e6835cd +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 12:29:35 2010 +0200 + + build: Fix C++ issues with automake + + This is an attempt to fix the broken situation we've been in where + automake links libcairo.la with c++ because it might potentially maybe + include C++ files. + + Those potential files only exist in Chris' throwaway backends (skia, qt) + and the BeOS backend, so for 99.99% of cases, these backends are not + needed and linking with c++ is overkill. Also, no one wants to have + libcairo.so link to libstdc++. + + This patch fixes that in mutliple steps: + 1) Add build infrastructure to distinguish between C and C++ backends. + This is done by allowing to specify backend_sources as well as + backend_cxx_sources variables in Makefile.sources. + 2) Optionally build a libcairo_cxx.la noinst library + This intermediate library is built for C++ backends only and therefor + linked using c++. It is then linked into the final libcairo.la. This + does not require c++, so the linking of libcairo.la is done with cc. + + This also works around various weirdnesses that the current build system + exposes, where it assumes cisms when in fact using c++ semantics, like + not detecting c++ properly or: + https://bugzilla.redhat.com/show_bug.cgi?id=606523 + + build/configure.ac.features | 7 ++++++- + configure.ac | 10 ++++++++++ + src/Makefile.am | 20 +++++++++++++++++++- + src/Makefile.am.analysis | 4 ++-- + src/Makefile.sources | 6 +++--- + 5 files changed, 40 insertions(+), 7 deletions(-) + +commit df6d49f6eaf334d5a2de8bdd90919278071ab868 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 10:29:30 2010 +0200 + + build: Get rid of $(foo_files) Makefile.am variables + + They're unused, and less variables make the build system easier to + understand. + + build/configure.ac.features | 1 - + src/Makefile.am | 1 - + 2 files changed, 0 insertions(+), 2 deletions(-) + +commit ce530b2802683fe6c5289367ef03018f4081a2da +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 04:24:51 2010 +0200 + + doc: Add "@Since: 1.10" tags to device docs + + src/cairo-device.c | 14 ++++++++++++++ + src/cairo.h | 2 ++ + 2 files changed, 16 insertions(+), 0 deletions(-) + +commit c1fed693020c96126cdc697ddd22567398369b04 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 04:20:42 2010 +0200 + + gl: Remove double ** from some comments + + gtk-doc doesn't like that unless it's a real gtk-doc comment. + And it wasn't. + + src/cairo-gl-composite.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 5c73b371ae31f230210987941eec2db49d2e02be +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 04:20:06 2010 +0200 + + doc: Document remaining cairo-device functions + + src/cairo-device.c | 32 ++++++++++++++++++++++++++++++++ + 1 files changed, 32 insertions(+), 0 deletions(-) + +commit 9877c1932a44f7e5300d6fcd99c19748aa5a4828 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 03:52:45 2010 +0200 + + doc: Add more documentation for devices + + Add general docs and document acquire/release. I'm not happy with the + documentation yet. In particular, I have 2 issues: + 1) The threading guarantees Cairo provides are missing. + 2) There's no docs on which Cairo functions do acquire devices. + + I guess I'll have to fix them later. + + src/cairo-device.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 86 insertions(+), 0 deletions(-) + +commit 739d6e35fa5632b80b888d6475f2fdb6be6054a6 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 03:04:27 2010 +0200 + + doc: Clarify that cairo_surface_get_device() can return NULL + + src/cairo-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 65d0590b041835fb466f4a7073910ef1383d9e77 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 02:23:13 2010 +0200 + + doc: Copy docs for standard device APIs + + Copied from the surface equivalents + + src/cairo-device.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 42 insertions(+), 0 deletions(-) + +commit 8a08b6fa5288f376688730c66ae9219d01180f42 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 02:21:00 2010 +0200 + + doc: Remove the <TITLE> declarations + + This information was duplicated. It exists as the "@Title" of the + SECTION inline documentation already. + + doc/public/cairo-sections.txt | 28 ---------------------------- + 1 files changed, 0 insertions(+), 28 deletions(-) + +commit 5e76bc6deb9fd4dc7a0f9181d3941ba55ce89c56 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jul 9 01:10:24 2010 +0200 + + doc: Add missing region documentation + + src/cairo-region.c | 25 +++++++++++++++++++++++++ + src/cairo.h | 13 +++++++++++++ + 2 files changed, 38 insertions(+), 0 deletions(-) + +commit 57da730d286f643c8f68b445907f7cdd1f53e5de +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 23:44:35 2010 +0200 + + doc: Fix a syntax issue in quartz-font gtkdoc + + A missing empty line caused the long description to be part of + @See_Also. Ooops. + + src/cairo-quartz-font.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit fb03eba44f1ae7dd76dd3db82bfb55b06b0932ae +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 8 20:06:08 2010 +0200 + + test: Add quartz functions to api-special-cases test + + test/api-special-cases.c | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit 59aab0bdc24838252850034cee36ed756f3c3e2a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jul 8 20:05:13 2010 +0200 + + test: fix typo + + test/api-special-cases.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b870cc030d8e0eb6309695e5a101c802f688cf40 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 13:05:18 2010 +0200 + + doc: Move tmpl/ docs to inline docs + + I did this manually so I could review the docs at the same time. + If anyone finds typos or other mistakes I did, please complain to me (or + better: fix them). + + doc/public/cairo-sections.txt | 4 +- + doc/public/tmpl/.gitignore | 3 - + doc/public/tmpl/cairo-atsui.sgml | 21 - + doc/public/tmpl/cairo-beos.sgml | 22 - + doc/public/tmpl/cairo-font-face.sgml | 116 ------ + doc/public/tmpl/cairo-font-options.sgml | 199 --------- + doc/public/tmpl/cairo-ft.sgml | 87 ---- + doc/public/tmpl/cairo-image.sgml | 127 ------ + doc/public/tmpl/cairo-matrix.sgml | 169 -------- + doc/public/tmpl/cairo-paths.sgml | 263 ------------ + doc/public/tmpl/cairo-pattern.sgml | 350 ---------------- + doc/public/tmpl/cairo-pdf.sgml | 101 ----- + doc/public/tmpl/cairo-png.sgml | 96 ----- + doc/public/tmpl/cairo-ps.sgml | 144 ------- + doc/public/tmpl/cairo-quartz-fonts.sgml | 52 --- + doc/public/tmpl/cairo-quartz.sgml | 64 --- + doc/public/tmpl/cairo-scaled-font.sgml | 227 ----------- + doc/public/tmpl/cairo-status.sgml | 98 ----- + doc/public/tmpl/cairo-surface.sgml | 326 --------------- + doc/public/tmpl/cairo-svg.sgml | 91 ----- + doc/public/tmpl/cairo-text.sgml | 319 --------------- + doc/public/tmpl/cairo-transforms.sgml | 132 ------ + doc/public/tmpl/cairo-types.sgml | 43 -- + doc/public/tmpl/cairo-user-fonts.sgml | 169 -------- + doc/public/tmpl/cairo-version.sgml | 205 ---------- + doc/public/tmpl/cairo-win32-fonts.sgml | 106 ----- + doc/public/tmpl/cairo-win32.sgml | 101 ----- + doc/public/tmpl/cairo-xcb-xrender.sgml | 26 -- + doc/public/tmpl/cairo-xcb.sgml | 26 -- + doc/public/tmpl/cairo-xlib-xrender.sgml | 60 --- + doc/public/tmpl/cairo-xlib.sgml | 147 ------- + doc/public/tmpl/cairo.sgml | 674 ------------------------------- + src/cairo-beos-surface.cpp | 10 + + src/cairo-font-face.c | 17 + + src/cairo-font-options.c | 12 + + src/cairo-ft-font.c | 25 ++ + src/cairo-image-surface.c | 21 + + src/cairo-matrix.c | 23 + + src/cairo-misc.c | 20 + + src/cairo-path.c | 9 + + src/cairo-pattern.c | 17 + + src/cairo-pdf-surface.c | 17 + + src/cairo-png.c | 18 + + src/cairo-ps-surface.c | 17 + + src/cairo-quartz-font.c | 17 + + src/cairo-quartz-surface.c | 17 + + src/cairo-scaled-font.c | 10 + + src/cairo-surface.c | 47 +++ + src/cairo-svg-surface.c | 17 + + src/cairo-types-private.h | 8 + + src/cairo-user-font.c | 22 + + src/cairo-version.c | 156 +++++++ + src/cairo-win32-font.c | 17 + + src/cairo-win32-surface.c | 24 ++ + src/cairo-xcb-surface-render.c | 13 + + src/cairo-xcb-surface.c | 13 + + src/cairo-xlib-surface.c | 40 ++ + src/cairo.c | 57 +++ + 58 files changed, 666 insertions(+), 4566 deletions(-) + +commit 65a1e351330106ee0af9f6f0df06b82954341ee6 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 03:28:05 2010 +0200 + + doc: Remove CAIRO_FORMAT_RGB16_565 from hidden symbols list + + It's part of the cairo_format_t documentation now. + + doc/public/cairo-sections.txt | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit e7594aebce6007bfa2027ba2655875db6c036e73 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 03:21:45 2010 +0200 + + doc: Fix some consistency issues that confuse gtk-doc + + src/cairo-region.c | 16 +++++++++++++--- + src/cairo.h | 16 ++++++++++++++-- + 2 files changed, 27 insertions(+), 5 deletions(-) + +commit da2663a0aa1e3f0a6b2f6ae2e9952ac27dec3f5d +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 03:14:42 2010 +0200 + + doc: Add list of new symbol in Cairo 1.10 + + doc/public/cairo-docs.xml | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit a106aa86a3267b4886f7eabdc4b07bb394e11531 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 03:13:20 2010 +0200 + + doc: add --name-space option to gtkdoc-mkdb + + This sorts function names in new symbols lists way better. + + doc/public/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 71d17e4b1f1cb83bc605d72d8419d4bfb824c828 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 02:42:39 2010 +0200 + + drm: Fix Makefile for drm_xr + + Use cairo_drm_xr_sources/headers for the drm_xr stuff. This makes it + work correctly in gtk-doc instead of conditionally adding it to + cairo_drm_sources/headers. + + src/Makefile.sources | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) + +commit 4b3e488cebeeace02eae1164ed12caa93d7c5847 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 02:42:06 2010 +0200 + + skia: Add cairo-skia.h as a public header + + src/Makefile.sources | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2a546286da5fe7203846d99a4a3d732c73e62db5 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 02:20:17 2010 +0200 + + doc: Add a section about regions + + doc/public/cairo-docs.xml | 1 + + doc/public/cairo-sections.txt | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 0 deletions(-) + +commit ab1f6d1af7c0e47077013edd58e93fa9fc6f2b5c +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:41:27 2010 +0200 + + doc: Add missing surface APIs + + doc/public/cairo-sections.txt | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 90bf273a38856d178e90721168b8b076f79fbf38 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:39:37 2010 +0200 + + doc: Add a section for cairo_device_t + + doc/public/cairo-docs.xml | 1 + + doc/public/cairo-sections.txt | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+), 0 deletions(-) + +commit 60e4f28d091df8ac6b898448eb52fae9ca920d5d +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:39:07 2010 +0200 + + doc: Add cairo_in_clip() to cairo_t section + + doc/public/cairo-sections.txt | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 6843186b729b20acddccd36184d2c5a7b5525d2e +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:38:43 2010 +0200 + + doc: Add cairo_rectangle_int_t to the general types list + + doc/public/cairo-sections.txt | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit c54dff82d3055529b7663dcff7a970cae919a9e0 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:33:42 2010 +0200 + + glew: The headers are private, not public + + src/Makefile.sources | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4252e3b8f915fc23611f1a667bf7bc1bb6a21dfd +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 01:32:25 2010 +0200 + + doc: Add drm and glew to the ignored directories + + This reduces the number of unused symbols to a reasonable size. ;) + + doc/public/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 729d00341c26d46d82359014df97472a469e49a4 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jul 8 13:57:43 2010 +0200 + + gl: Fix compile error after rebase failure + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 292423c73376a7f9b84c9e3e578c242f486e921b +Author: Colin Walters <walters@verbum.org> +Date: Wed Jul 7 15:46:33 2010 -0400 + + Support NOCONFIGURE environment variable + + This is taken from gnome-common; it can be convenient for builders + to separate the autogen from the configure stage. + + autogen.sh | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 9e6c151af810886e94372ac8e4878915059c6c14 +Author: Kristian Høgsberg <krh@bitplanet.net> +Date: Thu Jun 17 18:19:39 2010 -0400 + + gl: Add new cairo-gl surface constructor to create surface for texture + + src/cairo-gl-private.h | 2 + + src/cairo-gl-surface.c | 111 ++++++++++++++++++++++++++++++++++++++++++----- + src/cairo-gl.h | 4 ++ + 3 files changed, 105 insertions(+), 12 deletions(-) + +commit 4c91bb9a221bc8e3d65a96365bbd1157b3f4e612 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 17:27:18 2010 +0200 + + region: Add cairo_region_xor() and cairo_region_xor_rectangle() + + gdk_region_xor() was a quite often used function in GDK and now that + GDKe uses cairo regions, it seems like a worthwhile addition to Cairo. + + src/cairo-region.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo.h | 6 ++++ + src/cairoint.h | 2 + + 3 files changed, 88 insertions(+), 0 deletions(-) + +commit 82de6336d88be43de759b94634e87b9e4a8391b1 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 00:48:36 2010 +0200 + + test: Add note about how to fix failures to api-special-cases + + test/api-special-cases.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 75f269b14e1e4cdadd8c08566a07b2460ae3364b +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 00:41:12 2010 +0200 + + test: Add documentation to the api-special-cases test + + Hopefully people add other backend APIs to the testsuite. + + test/api-special-cases.c | 27 +++++++++++++++++++++++++++ + 1 files changed, 27 insertions(+), 0 deletions(-) + +commit 398870e64a18f32f1854cb19f64c34e2b1987140 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 00:21:38 2010 +0200 + + xlib: Setters should set finished surfaces into an error status + + Caught by api-special-cases test + + src/cairo-xlib-surface.c | 18 ++++++++++++++---- + 1 files changed, 14 insertions(+), 4 deletions(-) + +commit 6e562d1448eb70b7269f8f2f280719aa2aeb3ce7 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 00:20:57 2010 +0200 + + xcb: Setters should set finished surfaces into an error status + + Caught by api-special-cases test + + src/cairo-xcb-surface.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit fa070704966f10e7264778a3ffb401054a68e8f7 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jul 6 00:20:36 2010 +0200 + + test: Add xcb and xlib functions to api-special-cases test + + test/api-special-cases.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 91 insertions(+), 0 deletions(-) + +commit c4068fe9414bad663f77c030ac96fa4b4cba87ba +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 23:14:33 2010 +0200 + + test: Add ps, pdf and svg to the api-special-cases test + + test/api-special-cases.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 103 insertions(+), 0 deletions(-) + +commit 3e008e8ab0a1c5254bd1d8a58c9e9a89846fe7ac +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 23:14:19 2010 +0200 + + svg: Set error when extracting from finished surface + + Caught by api-special-cases test + + src/cairo-svg-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 2e66cbaee2efc4a8eb2117f945d68e2816349cfe +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 23:10:12 2010 +0200 + + ps: Allow specifying if errors on extract_surface should be set + + Getters should not set errors on passed in input. So we don't. + + Caught by api-special-cases test + + src/cairo-ps-surface.c | 39 ++++++++++++++++++++++----------------- + 1 files changed, 22 insertions(+), 17 deletions(-) + +commit f5dfc3ce6eab3bf836f2d7f7cf72d2834c42d72f +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 23:08:08 2010 +0200 + + ps: Set error when extracting from finished surface + + Caught by api-special-cases test + + src/cairo-ps-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 106357f6e28467f6db02e8d69c4aea459aca781c +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 23:07:24 2010 +0200 + + pdf: Set error when extracting from finished surface + + Caught by api-special-cases test + + src/cairo-pdf-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 702aa19fdae8bd511c4374f580dde6503afd3341 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:50:44 2010 +0200 + + gl: Fail properly when called with finished functions + + Caught by api-special-cases test + + src/cairo-gl-surface.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +commit b87be76bdfcbd329c79a9f11b24d22010ad15dde +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:50:18 2010 +0200 + + test: Add gl functions to the tests + + test/api-special-cases.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 files changed, 38 insertions(+), 1 deletions(-) + +commit 448653e7b9938100c3f2e30e026fbc4d9de7d0d5 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:41:43 2010 +0200 + + Call _cairo_error() when setting the FINISHED error on surfaces + + src/cairo-surface-subsurface.c | 2 +- + src/cairo-surface.c | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 19da8e138d317c1770d8bbd21a49c657d954f126 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:40:54 2010 +0200 + + tee: Add proper error handling + + Caught by api-special-cases + + src/cairo-tee-surface.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit a9f30fc1f0c3e50715468b09707477973bf5268b +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:30:55 2010 +0200 + + test: Add recording and tee surface functions to api-special-cases + + test/api-special-cases.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 44 insertions(+), 0 deletions(-) + +commit 41abc0ca37855751ed06051a30c0d866977ed2bd +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:19:05 2010 +0200 + + test: add PNG functions + + test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +commit 897eaa3e97f865ad2c28442c26efaf4ba391cf03 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:11:23 2010 +0200 + + test: Add a non-error surface check + + In that check, we call functions that require a specific surface type + with surfaces of a different type and check that they don't crash and + set the correct error. + + test/api-special-cases.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +commit 986ddf565215dc01065eade46921abe8a4b7912e +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 22:03:42 2010 +0200 + + test: add image surface functions to api-special-cases test + + test/api-special-cases.c | 90 +++++++++++++++++++++++++++++++++------------ + 1 files changed, 66 insertions(+), 24 deletions(-) + +commit 72878d70ea75be03f47fa9d53f8305e76162054e +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 20:47:19 2010 +0200 + + test: Add a new test variant to api-special-cases test + + This variant tests a (hopefully) inert error surface. + + test/api-special-cases.c | 35 +++++++++++++++++++++++++++++++++++ + 1 files changed, 35 insertions(+), 0 deletions(-) + +commit 9de25a0297c141a0776835920168afaa3ca77a87 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:33:40 2010 +0200 + + configure: remove dolt + + libtool should be fast by now + + Makefile.am | 5 +- + build/aclocal.dolt.m4 | 178 ------------------------------------------------- + configure.ac | 1 - + 3 files changed, 2 insertions(+), 182 deletions(-) + +commit 6744b78de17930285569da2158a334763e2bd333 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:25:31 2010 +0200 + + subsurface: Fail if created from a finished surface + + Caught by api-special-cases test + + src/cairo-surface-subsurface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 8fd1ecea12f15c2bda710065909a14415ba92bd8 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:25:16 2010 +0200 + + surface: Fail if set_mime_data() is called on a finished surface + + Caught by api-special-cases test + + src/cairo-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit e388ff1ae732970d6166780817ec121cf58ccd0e +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:24:23 2010 +0200 + + surface: Fail early if create_similar() is called on a finished surface + + Caught by api-special-cases test + + src/cairo-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit c1689ef6f27f99c36e1a5f4de658363ca0aad25a +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:23:37 2010 +0200 + + surface: don't call begin_modification on finished surfaces + + Fixes https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 + + Caught by api-special-cases test + + src/cairo-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit cf0245c1201d4884ff19e881e9c118784fa14884 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 18:17:09 2010 +0200 + + tests: Add a testcase that checks APIs work consistently + + In particular, it checks that finished and surfaces in an error state do + not do bad things, like cause crashes. + So far this test only checks surface APIs, but it should be extended to + cover all APIs. + + Please update this test when new APIs get added. + + Motivated by https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622 + + test/Makefile.sources | 1 + + test/api-special-cases.c | 360 ++++++++++++++++++++++++++++++++++++++++ + test/api-special-cases.ref.png | Bin 0 -> 95 bytes + 3 files changed, 361 insertions(+), 0 deletions(-) + +commit eb63284fc3ae9377003ca312be58ae8f5dbbfdbd +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 00:37:10 2010 +0200 + + configure: Use automake silent rules + + This replaces shave usage. + If silent rules are not available, don't use them. + + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 68bbb6b4a0a3b9bc923ccf130b1ca4221a5e54bd +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jul 5 00:35:39 2010 +0200 + + configure: remove shave + + build/.gitignore | 2 - + build/aclocal.shave.m4 | 77 --------------------------------------------- + build/shave-libtool.in | 69 ---------------------------------------- + build/shave.in | 82 ------------------------------------------------ + configure.ac | 4 -- + 5 files changed, 0 insertions(+), 234 deletions(-) + +commit 9ce87c67ff64083ec48edfefe83a1df3756c364c +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jul 3 02:54:55 2010 +0200 + + perf: print comment describing backend + + Use the descibe string to output information about the backend we're + testing. + + perf/cairo-perf-trace.c | 31 ++++++++++++++++++++++++++++++- + 1 files changed, 30 insertions(+), 1 deletions(-) + +commit fcfe7c67248ea171dc40c0dbd861e489a2df5941 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jul 3 02:54:28 2010 +0200 + + boilerplate: Add describe string + + Print the pixman version we're using + + boilerplate/cairo-boilerplate.c | 21 ++++++++++++++++++--- + 1 files changed, 18 insertions(+), 3 deletions(-) + +commit 0a7135148a634ea6692a4edd83193870a5d526b3 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jul 3 02:54:08 2010 +0200 + + gl: Add describe string + + boilerplate/cairo-boilerplate-glx.c | 29 +++++++++++++++++++++++++---- + 1 files changed, 25 insertions(+), 4 deletions(-) + +commit a1c4b001a548611b7d77e9280fdb5a82da275830 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 30 18:27:54 2010 +0200 + + boilerplate: Add a describe vfunc + + This function is supposed to describe the backend in use. The describe + function is optional - and therefore initialized as NULL everywhere. + Note: + It is well known that the xlib backend uses X. What is not known is what + version the server supports or what graphics card it is running on. That + is the information the describe vfunc is supposed to provide. + + boilerplate/Makefile.win32.features | 8 ++++++++ + boilerplate/cairo-boilerplate-directfb.c | 4 ++-- + boilerplate/cairo-boilerplate-drm.c | 2 ++ + boilerplate/cairo-boilerplate-egl.c | 1 + + boilerplate/cairo-boilerplate-glx.c | 4 ++++ + boilerplate/cairo-boilerplate-pdf.c | 4 ++-- + boilerplate/cairo-boilerplate-ps.c | 8 ++++---- + boilerplate/cairo-boilerplate-quartz.c | 5 +++-- + boilerplate/cairo-boilerplate-script.c | 2 +- + boilerplate/cairo-boilerplate-skia.c | 4 ++-- + boilerplate/cairo-boilerplate-svg.c | 8 ++++---- + boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++++++++-------- + boilerplate/cairo-boilerplate-vg.c | 4 ++++ + boilerplate/cairo-boilerplate-wgl.c | 2 ++ + boilerplate/cairo-boilerplate-win32-printing.c | 4 ++-- + boilerplate/cairo-boilerplate-win32.c | 4 ++-- + boilerplate/cairo-boilerplate-xcb.c | 7 +++++++ + boilerplate/cairo-boilerplate-xlib.c | 4 ++++ + boilerplate/cairo-boilerplate.c | 10 +++++----- + boilerplate/cairo-boilerplate.h | 4 ++++ + build/Makefile.win32.features-h | 1 + + src/Makefile.win32.features | 8 ++++++++ + 22 files changed, 80 insertions(+), 34 deletions(-) + +commit 4c039b1cdfac5b5d6aa0c38f0779213fd14ec7de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 2 17:01:12 2010 +0100 + + user-font: Check the status before destroying the context + + src/cairo-user-font.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 1f84f5682c6ff246b3d28c75c8731504f31c1ee1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 2 13:19:17 2010 +0100 + + xlib: Apply translation to image surface upload. + + Fixes: + + Bug 28888 - cairo_paint with rgb images does not work correctly + https://bugs.freedesktop.org/show_bug.cgi?id=28888 + + src/cairo-xlib-surface.c | 13 ++++++++----- + 1 files changed, 8 insertions(+), 5 deletions(-) + +commit d2d6c96c24501d888422ea42d3c90d3c8f3647a0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 29 09:58:54 2010 +0200 + + user-font: correct handling of size 0 text + + Text with size 0 has a singular scale matrix, thus requires special + handling to avoid invalidating the context where it is used. + + Fixes pthread-show-text and text-zero-len (they failed with assertion + when ran using the user font backend). + + src/cairo-matrix.c | 9 +++++++ + src/cairo-scaled-font.c | 5 +-- + src/cairo-user-font.c | 60 ++++++++++++++++++++++++++++------------------ + src/cairoint.h | 3 ++ + 4 files changed, 50 insertions(+), 27 deletions(-) + +commit 6db247e13c6fa61879029b335c6fa649d810c11b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 29 09:28:04 2010 +0200 + + user-font: ignore translation in scale matrix + + Currently the translation component of the scaled_font scale matrix + is applied by gstate and only linear components should be applied in + font backends. + + Fixes font-matrix-translation (when using user-font as font backend). + + src/cairo-user-font.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit 549431e98ed0be17b80f24f0e0c167c7ad632f4f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jun 28 22:40:28 2010 +0200 + + ft-font: fix typo + + src/cairo-ft-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 97a88c5adb08a3181bad1f63a7bbdfe5784b4207 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 28 17:10:59 2010 +0100 + + xlib: Compile without fontconfig + + Create a cairo-fontconfig-private.h where we can add the missing defines + in a common location rather than in the body of the code. + + src/Makefile.sources | 1 + + src/cairo-fontconfig-private.h | 76 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-ft-font.c | 5 +-- + src/cairo-surface-subsurface.c | 1 + + src/cairo-xlib-screen.c | 20 +---------- + 5 files changed, 80 insertions(+), 23 deletions(-) + +commit 7d6910014310344e5d16c97ffd1f1c9fbc01b143 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jun 28 17:12:41 2010 +0200 + + quartz: remove unused declarations + + src/cairo-quartz-surface.c | 17 ----------------- + 1 files changed, 0 insertions(+), 17 deletions(-) + +commit bd4c14b94eeb386b30439929e8e54a5d9b5d5fca +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 24 23:20:41 2010 +0200 + + quartz: remove unused os version info + + It was previously used to activate a workaround for text transformation + whenrunning on some os versions. Now the workaround is not needed anymore. + + src/cairo-quartz-surface.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit aa7e9c43b6381930455a68258dcc3e14dce2b0e4 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 24 14:18:02 2010 +0200 + + quartz-font: correct and explain matrix computations + + glyph_path was taking into account the translation (which currently + is already applied in gstate) and the sign of the elements of the + matrices was not explained. + + src/cairo-quartz-font.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) + +commit b26f72fef99e9869a62cbb8e44a82837f87cf2c6 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 24 22:34:36 2010 +0200 + + quartz: check return status + + If the font backend is unable to tell the extents of the operation, + consider it unbound. + + src/cairo-quartz-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 9c0d761bfcdd28d52c83d74f46dd3c709ae0fa69 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 24 15:26:03 2010 +0200 + + quartz: improve text transform handling + + Use scale instead of manually compositing font_matrix and ctm and + composite it with the context ctm, so that no workaround for clipping + is needed anymore. + + src/cairo-quartz-surface.c | 46 +++++++++++-------------------------------- + 1 files changed, 12 insertions(+), 34 deletions(-) + +commit 9068b5768b8560fbf095f1c0eecb5c805232f794 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 24 15:15:37 2010 +0200 + + quartz-font: silence compiler warnings + + Remove an unused function, explicitly ignore or check return values, + don't define unused variables. + + src/cairo-quartz-font.c | 84 +++++++++++++++++------------------------------ + 1 files changed, 30 insertions(+), 54 deletions(-) + +commit ca161a585a7ce09cfcd468ea7591c5959077a907 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 26 14:50:57 2010 +0100 + + version: 1.9.9 + + Post-snapshot bump. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0f1ff0daab7259ec16076f788760da4f35cb0cdc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 26 14:20:25 2010 +0100 + + test: Missing ref image. + + test/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 45d1f461ce2d2e3af16a5a90ffd8980bffc5eaa8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 26 14:17:23 2010 +0100 + + version: 1.9.10 + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 7a68a7bfd550b5e4b6635495e7de49fe306fbad4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 26 14:16:27 2010 +0100 + + NEWS for 1.9.10 snapshot + + NEWS | 28 ++++++++++++++++++++++++++++ + 1 files changed, 28 insertions(+), 0 deletions(-) + +commit 8df41361196c7ba1b8d272507cc3d523cdcf5632 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 26 09:52:11 2010 +0100 + + Regenerate default win32 headers. + + boilerplate/Makefile.win32.features | 8 -------- + build/Makefile.win32.features-h | 1 - + src/Makefile.win32.features | 8 -------- + 3 files changed, 0 insertions(+), 17 deletions(-) + +commit 1373675ef7602363aeca0d9ec12be79719ea066d +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 25 14:10:12 2010 +0200 + + pop-group: Translate existing path properly + + This fixes the reverse case of the push_group case fixed a few commits + ago. + + src/cairo.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit 59076776674e3ae47099f20e1d86064fbd856008 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 25 14:08:49 2010 +0200 + + test: improve push-group-path-offset to also catch the pop_group() case + + cairo_pop_group() also trasnforms the path wrong, so we use cairo_fill() + to copy data instead of cairo_paint(). + + (Also, unbust the testcase.) + + test/push-group-path-offset.c | 45 ++++++++++++++-------------------------- + 1 files changed, 16 insertions(+), 29 deletions(-) + +commit 2e8571d95ca36f8ad9e20796990cdc0b3f763082 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 25 13:41:22 2010 +0200 + + push-group: Fix path translation when pushing a group with device offsets + + With the previous code, the parent's device offset wasn't undone before + applying the new device offset. + Tested by push-group-path-offset test. + + src/cairo.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit a9b8d1a94ea624ea8b12a125bdf70c6f248e7ca7 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 25 13:38:40 2010 +0200 + + test: Add a new test for a bug with device-offset tests + + All the credit for this one goes to make distcheck + + test/Makefile.sources | 1 + + test/push-group-path-offset.c | 90 +++++++++++++++++++++++++++++++++++ + test/push-group-path-offset.ref.png | Bin 0 -> 186 bytes + 3 files changed, 91 insertions(+), 0 deletions(-) + +commit 1099a3515b6a69e2ff360d8e6b1df71e3ea5c213 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 24 17:22:34 2010 +0100 + + drm/intel: Fix common off-by-one by rewriting the [XY]MAX macro. + + Many rectangles in the command stream are specified as inclusive rects, + i.e. the max values are (width-1, height-1), which is easy to neglect. + + src/drm/cairo-drm-i915-private.h | 2 +- + src/drm/cairo-drm-i915-surface.c | 24 ++++++------------------ + src/drm/cairo-drm-i965-shader.c | 12 ++++++------ + src/drm/cairo-drm-intel-command-private.h | 4 ++-- + 4 files changed, 15 insertions(+), 27 deletions(-) + +commit fb6a00571c818c738d66bc04dc75e79491878f78 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 14 10:19:37 2010 +0100 + + drm: _cairo_color_get_content() compilation fixes + + src/drm/cairo-drm-i915-shader.c | 2 +- + src/drm/cairo-drm-i965-shader.c | 5 +---- + src/drm/cairo-drm-intel.c | 3 +-- + 3 files changed, 3 insertions(+), 7 deletions(-) + +commit 42956b46436b9704be7619e1b61ab222923376d0 +Author: Zoxc <zoxc32@gmail.com> +Date: Sun Jun 20 21:07:57 2010 +0000 + + build: Added cairo deflate stream as a requirement for the script surface. + + src/Makefile.sources | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit b036a09972a19e63a85a4661a457525e2abe4026 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 24 14:59:18 2010 +0300 + + whitespace: Fixup formal arguments and tabs in boilerplate/ and perf/. + + Ran a script to align the formal parameters of functions and + collapse spaces to tabs in code. + + boilerplate/cairo-boilerplate-beos.cpp | 42 +++++----- + boilerplate/cairo-boilerplate-directfb.c | 86 ++++++++++---------- + boilerplate/cairo-boilerplate-drm.c | 2 +- + boilerplate/cairo-boilerplate-egl.c | 20 +++--- + boilerplate/cairo-boilerplate-getopt.c | 12 ++-- + boilerplate/cairo-boilerplate-glx.c | 60 +++++++------- + boilerplate/cairo-boilerplate-pdf.c | 24 +++--- + boilerplate/cairo-boilerplate-private.h | 2 +- + boilerplate/cairo-boilerplate-ps.c | 49 ++++++------ + boilerplate/cairo-boilerplate-qt.cpp | 18 ++-- + boilerplate/cairo-boilerplate-quartz.c | 18 ++-- + boilerplate/cairo-boilerplate-scaled-font.h | 2 +- + boilerplate/cairo-boilerplate-script.c | 30 ++++---- + boilerplate/cairo-boilerplate-skia.c | 18 ++-- + boilerplate/cairo-boilerplate-svg.c | 59 +++++++------- + boilerplate/cairo-boilerplate-system.c | 10 ++- + boilerplate/cairo-boilerplate-system.h | 10 ++- + boilerplate/cairo-boilerplate-test-surfaces.c | 100 ++++++++++++------------ + boilerplate/cairo-boilerplate-vg.c | 36 ++++---- + boilerplate/cairo-boilerplate-wgl.c | 58 +++++++------- + boilerplate/cairo-boilerplate-win32-printing.c | 29 ++++--- + boilerplate/cairo-boilerplate-win32.c | 18 ++-- + boilerplate/cairo-boilerplate-xcb.c | 85 ++++++++++---------- + boilerplate/cairo-boilerplate-xlib.c | 90 +++++++++++----------- + boilerplate/cairo-boilerplate.c | 102 ++++++++++++----------- + boilerplate/cairo-boilerplate.h | 44 ++++++----- + perf/cairo-perf-chart.c | 38 ++++++--- + perf/cairo-perf-compare-backends.c | 30 ++++--- + perf/cairo-perf-diff-files.c | 37 +++++---- + perf/cairo-perf-graph-files.c | 73 ++++++++++------- + perf/cairo-perf-graph-widget.c | 60 +++++++++------ + perf/cairo-perf-graph.h | 8 +- + perf/cairo-perf-micro.c | 82 ++++++++++--------- + perf/cairo-perf-os2.c | 10 +- + perf/cairo-perf-posix.c | 24 +++--- + perf/cairo-perf-print.c | 5 +- + perf/cairo-perf-report.c | 62 +++++++++------ + perf/cairo-perf-trace.c | 82 +++++++++++-------- + perf/cairo-perf-win32.c | 6 +- + perf/cairo-perf.h | 38 +++++---- + perf/cairo-stats.c | 11 ++- + perf/cairo-stats.h | 6 +- + 42 files changed, 850 insertions(+), 746 deletions(-) + +commit 616e35d1fae703dc118ce503d25d4f57cfd16dfd +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 24 09:44:07 2010 +0300 + + boilerplate: Remove the xlib-window target from Renderless builds. + + I don't know why _cairo_boilerplate_xlib_window_create_surface() + is in the Render-only section of the code, but since it is, this + patch makes the boilerplate at least compile if we don't have + Render support built in. + + boilerplate/cairo-boilerplate-xlib.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit aed744008dbaab49f28f9c54ad0850074ece5d66 +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Thu Jun 24 05:38:14 2010 -0400 + + test: Fix typo in copyright statement + + test/bug-seams.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5c7e1dd690af21943435676bfac320cfe863cf55 +Author: Soeren Sandmann <sandmann@daimi.au.dk> +Date: Thu Jun 24 10:11:48 2010 +0100 + + test: Add an example of seams. + + A pair of perfectly conjoint quads should not produce a seam when + accumulating into a temporary mask. Yet here is an example of where they + do! + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/bug-seams.c | 98 ++++++++++++++++++++++++++++++++++ + test/bug-seams.ref.png | Bin 0 -> 1604 bytes + test/bug-seams.xlib-fallback.ref.png | Bin 0 -> 2133 bytes + test/bug-seams.xlib.ref.png | Bin 0 -> 1606 bytes + 6 files changed, 102 insertions(+), 0 deletions(-) + +commit 413ec4b708a511eb2f3866165a35d3a8d97bd326 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 22 23:19:32 2010 +0200 + + gl: Return a surface from _cairo_surface_create_in_error() + + On error, surface creation functions should always return a surface + created with _cairo_surface_create_in_error() instead of a new surface + in an error state. This simplifies internal code as no refcounting has + to be done. + + src/cairo-gl-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit a4e292507cf7c2f960d040edd57b56a976c73da6 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 22 22:01:25 2010 +0200 + + gl: Propagate surface creation error instead of crashing + + src/cairo-gl-glyphs.c | 22 ++++++++++++++++------ + 1 files changed, 16 insertions(+), 6 deletions(-) + +commit faa4e6761c8f74a1acaa7ccc5bc8bb23b2f5cdb1 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jun 21 14:01:34 2010 +0200 + + egl: Copy glx code to detect the proper surface in acquire + + src/cairo-egl-context.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 76a721f7e94fb040f106b200c09c1a7b9ae83d36 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jun 21 13:30:06 2010 +0200 + + egl: Remove unused prev_foo usage + + src/cairo-egl-context.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit b8051ee985ed46c69f5fba1216ead1ebacecfd44 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 19 18:09:27 2010 +0100 + + script: Pass the buffer length back to freetype. + + After querying the required size, inform the backend of the allocated + size of the buffer. + + src/cairo-script-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8ac9a9df24eefc5f1125db87eb8eda2e94f54070 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 19 13:23:50 2010 +0100 + + xcb: Return the status upon flushing the device. + + The vfunc was updated to expect the status return, so supply it. + + src/cairo-xcb-connection.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 9fffc0e120df8947c34d9e423c69ab66b763d875 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 19 11:15:13 2010 +0100 + + xlib: Precise and Imprecise were reversed. + + The intention was to switch to imprecise mode by default, using the + exact rendering mode only upon request. + + src/cairo-xlib-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit b322b2e61984c2e9e00fb44343ebe5e423246445 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 19 10:26:05 2010 +0100 + + xlib: Perform image uploads inplace. + + Under the restrictive conditions where we are doing an untransformed + contained upload of an image into a matching surface, perform it in + place. The drivers will attempt to stream such uploads efficiently, far + more so than our code. + + src/cairo-xlib-surface.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 112 insertions(+), 0 deletions(-) + +commit c3eb95bf6670bbc06ef908481da95f3504c7dc4d +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 19:26:07 2010 +0200 + + egl: Fail properly if no configs are available instead of crashing + + boilerplate/cairo-boilerplate-egl.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 3908d80f57bc0abef47721a5b8b9afd5041118e3 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 16:11:20 2010 +0200 + + glx: Remove useless optimization trying to avoid glXMakeCurrent() + + The optimization is not performance-relevant. And having less code is + always a good idea. + + src/cairo-glx-context.c | 19 ++----------------- + 1 files changed, 2 insertions(+), 17 deletions(-) + +commit 64f90322f73c37ac5667292949bb45b0279239d9 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 12:40:48 2010 +0200 + + gl: Refactor status handling in _cairo_gl_context_release() + + Previously, the code returned a status and required the caller to mangle + this status with his own status. Now, the function takes the previous + status ass an argument and does the mangling itself. + + Also contains fixes for all the callers to actually check the return + value - which is now rather trivial as it just requires passing through + the status variable. + + src/cairo-gl-composite.c | 6 +--- + src/cairo-gl-device.c | 2 +- + src/cairo-gl-glyphs.c | 14 ++++-------- + src/cairo-gl-gradient.c | 3 +- + src/cairo-gl-private.h | 14 +++++++----- + src/cairo-gl-surface.c | 47 ++++++++++++++++++++++++--------------------- + 6 files changed, 43 insertions(+), 43 deletions(-) + +commit fc3d521c121da237974e486f1b7735009764b441 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 12:23:37 2010 +0200 + + gl: Inline the check_error() function + + src/cairo-gl-private.h | 23 +++++++---------------- + 1 files changed, 7 insertions(+), 16 deletions(-) + +commit 9d7fa289132650261e546b39af2371c262f46d3c +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 12:18:05 2010 +0200 + + gl: Don't assert if there used to be a GL error + + When acquiring the GL context, do not assert that the GL context is not + in an error state. Do not even call _cairo_error(). Handling GL errors + in other code is not Cairo's responsibility. + + Instead just clear all previous errors so we don't accidentally set + surfaces into error states to unrelated errors. + + src/cairo-gl-private.h | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 0f9a8cd18f14b1f23aaefe14db3b5ad07c84cff7 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 12:17:36 2010 +0200 + + gl: Add a custom glGetError() function + + This function clears all errors and returns the first one that happened. + + src/cairo-gl-private.h | 19 ++++++++++++++++--- + 1 files changed, 16 insertions(+), 3 deletions(-) + +commit 8048d3aa0a11ab1c054887682b8b2a899a87da0e +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 10:50:21 2010 +0200 + + gl: Remove custom fprintf fudging on GL errors + + Now that we probably call _cairo_error() on every GL error, there is no + need to use custom methods to catch those errors. The usual breakpoint + is enough. + + src/cairo-gl-private.h | 7 +------ + src/cairo-gl-surface.c | 20 -------------------- + 2 files changed, 1 insertions(+), 26 deletions(-) + +commit f4da5048bf87df0651ec83ca3f1ad6a5af7eb16d +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 10:44:15 2010 +0200 + + gl: cairo_warn about return value from cairo_gl_context_release() + + src/cairo-gl-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d9179f480a43c7171806e2c33804aaae70a2cfa6 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 18 00:43:09 2010 +0200 + + boilerplate: Reinstate glFinish() for wgl + + It was accidentally disabled. + + boilerplate/cairo-boilerplate-wgl.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 67e84d61230a2012c18d8bff60e8835aaa57be07 +Author: Kristian Høgsberg <krh@bitplanet.net> +Date: Thu Jun 17 17:38:00 2010 -0400 + + egl: Implement acquire and release for EGL backend + + src/cairo-egl-context.c | 46 +++++++++++++++++++++++++++++++++++++--------- + 1 files changed, 37 insertions(+), 9 deletions(-) + +commit 7ab9ce1b9130dcd63b2b2b2516b77ef1ae531144 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 17 15:47:04 2010 +0100 + + image: Make a local copy of the trap coordinates as the boxes alias. + + As we transform the array of trapezoids into an array of boxes in-place, + we must take local copies of the coordinates before writing into the + boxes otherwise we may inadvertently modify the trapezoidal coordinates. + + Fixes test/a1-bug. + + src/cairo-image-surface.c | 15 +++++++++++---- + 1 files changed, 11 insertions(+), 4 deletions(-) + +commit f2645fa361003636d1da6ca38c3b61fef1b1ce4d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 17 15:38:53 2010 +0100 + + test: Add a1-bug + + Capture a bug report from "cairouser" where a1 rasterisation is now + broken. + + test/Makefile.am | 3 ++ + test/Makefile.sources | 1 + + test/a1-bug.c | 61 +++++++++++++++++++++++++++++++++++++++++++ + test/a1-bug.image16.ref.png | Bin 0 -> 3329 bytes + test/a1-bug.ref.png | Bin 0 -> 3736 bytes + test/a1-bug.xlib.ref.png | Bin 0 -> 3362 bytes + 6 files changed, 65 insertions(+), 0 deletions(-) + +commit 800e977c2ea1e097c4b7332b18a5fc03089603c1 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 17 14:27:13 2010 +0300 + + perf: Allow comparing perf reports with only one difference. + + The cairo-perf-diff-files tool would ignore perf reports with + just one test for no apparent reason. The traces take so long + that it's useful to be able to compare runs with just one trace. + + perf/cairo-perf-diff-files.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 29b8cfd2b6cf590fcfe64e5ba5b4479c2748ac06 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 17 10:11:31 2010 +0100 + + test/halo: Remove copied code. + + How did that get there? I obviously ran the test to generate the output, + so where did it spring as it is the old version of the function? + + From 16364768d79570e7201a87f0a985c65acaff5560. + + Mysteries will never cease. + + test/halo.c | 36 ------------------------------------ + 1 files changed, 0 insertions(+), 36 deletions(-) + +commit a9a22649e2ffa1cd3720c8555dc3c6aff2040e3d +Author: Zoxc <zoxc32@gmail.com> +Date: Wed Jun 16 21:33:30 2010 +0200 + + wgl: Only reset GL context on the dummy window. + + This changes the WGL context destruction code to only reset the GL + context for the dummy window, since doing it on <nothing> is an + invalid operation. + + src/cairo-wgl-context.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit ca35e09ece5107c3ebc9f111d4a3d96d69aa3d03 +Author: Zoxc <zoxc32@gmail.com> +Date: Mon Jun 14 20:34:52 2010 +0200 + + gl: Added wgl boilerplate and moved the glx and egl boilerplates into their own files. + + boilerplate/Makefile.sources | 4 +- + boilerplate/Makefile.win32.features | 8 + + boilerplate/cairo-boilerplate-egl.c | 141 ++++++++++ + boilerplate/cairo-boilerplate-gl.c | 492 ----------------------------------- + boilerplate/cairo-boilerplate-glx.c | 401 ++++++++++++++++++++++++++++ + boilerplate/cairo-boilerplate-wgl.c | 236 +++++++++++++++++ + build/Makefile.win32.features-h | 1 + + src/Makefile.win32.features | 8 + + 8 files changed, 798 insertions(+), 493 deletions(-) + +commit 2af3262895d74492a0f856f049d1524a527257bb +Author: Zoxc <zoxc32@gmail.com> +Date: Mon Jun 14 20:33:17 2010 +0200 + + wgl: Renamed hwnd field to wnd. + + src/cairo-wgl-context.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 7a023a62f7517ad0d54f4d59c99909fadcc05e82 +Author: Nicolaus L Helper <nlhepler@gmail.com> +Date: Thu Jun 17 08:56:30 2010 +0100 + + ft,fc,xlib: LCD filtering patch. + + This adds internal API to retrieve the LCD filtering parameters from + fontconfig, or as set on the Screen, and feed them to FreeType when + rendering the glyph. + + References: + Bug 10301 - LCD filtering patch + https://bugs.freedesktop.org/show_bug.cgi?id=10301 + + Tested-by: Brandon Wright <bearoso@gmail.com> + Forward-ported-by: Robert Hooker <sarvatt@gmail.cm> + + ickle: The API is clearly not ready for public consumption, the enum are + poorly named, however this stands by itself as enabling system wide + properties. + + src/cairo-font-options.c | 51 ++++- + src/cairo-ft-font.c | 675 ++++++++++++++++++++++++++++++++------------- + src/cairo-surface.c | 1 + + src/cairo-types-private.h | 25 ++ + src/cairo-xlib-screen.c | 28 ++ + src/cairoint.h | 7 + + 6 files changed, 597 insertions(+), 190 deletions(-) + +commit 36b4b0631cc220d01c411b596a4eef839338cd7c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 17 08:50:31 2010 +0100 + + image: Use consistent rounding modes for a1 rasterisation. + + When checking if the traps are equivalent to a set of rectangles, we + need to use the same rounding mode as when converting the traps to a set + of boxes and then filling them. Failure to do leads to a situation where + (-127,-128) was thought to be equivalent to (0,0) but we attempted to + fill from 0 to -1 instead. + + References: + http://lists.cairographics.org/archives/cairo/2010-June/020115.html + + src/cairo-image-surface.c | 58 +++++++++++++++++++++++++++----------------- + 1 files changed, 35 insertions(+), 23 deletions(-) + +commit 3306bcb1d91265d60c460aa64d3ee4a4acb430a1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 17 08:47:48 2010 +0100 + + fixed: Refactor code to use more inlines and less duplication of logic. + + This also has the side-effect of fixing the types in the problematic + functions which hid Andrea's true fix for the unsigned FRAC_MASK. + + src/cairo-fixed-private.h | 18 +++++++++++++++--- + 1 files changed, 15 insertions(+), 3 deletions(-) + +commit c0dee7964c4394b7963041f246855fd3b01f4ebb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 16 18:49:58 2010 +0100 + + test: Add a1-rasterisation + + Check the rounding criteria when rasterising. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/a1-rasterisation-rectangles.ref.png | Bin 0 -> 1729 bytes + test/a1-rasterisation-triangles.ref.png | Bin 0 -> 1729 bytes + test/a1-rasterisation.c | 101 ++++++++++++++++++++++++++++++ + 5 files changed, 104 insertions(+), 0 deletions(-) + +commit 16364768d79570e7201a87f0a985c65acaff5560 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 16 15:09:22 2010 +0100 + + test/halo: Transformation seems key to the bug... + + test/halo.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +commit cb28e0bfeb47a72f14ee42f161ebf6b5eb61e76b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 17 08:42:39 2010 +0200 + + test: correct options in getopt call + + 'k' was missing and 't' was present but unhandled. Options have been + reordered according to the "USAGE" ordering. + + test/cairo-test-runner.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3cd07559328b60e3da85debb805cb4a3fc4abc22 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jun 16 22:54:08 2010 +0200 + + correct rounding computation + + cairo_fixed_integer_round[_down] were adding an unsigned mask value + before shifting its result, causing the shift to be computed as + logical (unsigned) right shift, thus producing incorrect values for + negative inputs. Making the mask value signed fixes this issue. + + Bug report by cu: + http://lists.cairographics.org/archives/cairo/2010-June/020115.html + + src/cairo-fixed-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8689d75caaa9c6ee42976873d21684fa9f48834f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 16 15:09:22 2010 +0100 + + test/halo: Transformation seems key to the bug... + + Only it is actually transformation of the result that is required in + order to magnify the effect to a detectable level. + + test/Makefile.am | 5 +++ + test/halo-transform.image16.ref.png | Bin 0 -> 10983 bytes + test/halo-transform.ps.ref.png | Bin 0 -> 8691 bytes + test/halo-transform.ref.png | Bin 0 -> 15086 bytes + test/halo-transform.xlib.ref.png | Bin 0 -> 15346 bytes + test/halo.c | 64 +++++++++++++++++++++++++++++++++- + test/halo.image16.ref.png | Bin 5328 -> 6172 bytes + test/halo.ps.ref.png | Bin 0 -> 5220 bytes + test/halo.ref.png | Bin 7524 -> 8839 bytes + test/halo.xlib.ref.png | Bin 7404 -> 8835 bytes + 10 files changed, 67 insertions(+), 2 deletions(-) + +commit 71936a1f414807a51c68de111362c2d5499bdfa7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 15 21:36:15 2010 +0100 + + test/aliasing: Add a few more colour combinations. + + In particular, compare red against its inverse, cyan. Etc. + + test/aliasing.c | 6 +++++- + test/aliasing.image16.ref.png | Bin 20810 -> 97251 bytes + test/aliasing.ref.png | Bin 22980 -> 104672 bytes + test/aliasing.xlib.ref.png | Bin 24018 -> 104315 bytes + 4 files changed, 5 insertions(+), 1 deletions(-) + +commit e2220a1f3a7b483e615f5bb993a014d20b0f788a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 15 11:45:54 2010 +0100 + + configure: Try an alternate name for system glew. + + configure.ac | 10 ++++++---- + 1 files changed, 6 insertions(+), 4 deletions(-) + +commit 25ec0c1e9b5af2ba68200b79b252de5c1b371d0a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 15 10:59:01 2010 +0100 + + build: Enable system GLEW on non-UNIX platforms + + configure.ac | 12 +++++++++--- + 1 files changed, 9 insertions(+), 3 deletions(-) + +commit 52624446636bb5941ca2180afa2c0be275414cec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 15 10:40:36 2010 +0100 + + glew: Define NULL + + src/glew/glew.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 56d06b088b9c355ca76a38191717a8e03aa5f59a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 14 22:58:38 2010 +0100 + + test: Add an aliasing test case. + + Just a simple test in drawing neighbouring edges and looking for the + effects of aliasing. + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/aliasing.c | 98 +++++++++++++++++++++++++++++++++++++++++ + test/aliasing.image16.ref.png | Bin 0 -> 20810 bytes + test/aliasing.ref.png | Bin 0 -> 22980 bytes + test/aliasing.xlib.ref.png | Bin 0 -> 24018 bytes + 6 files changed, 102 insertions(+), 0 deletions(-) + +commit 4b39f02bf7e8b4921518db4a2d8564514cb323a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 14 20:38:26 2010 +0100 + + test: Add halo + + halo uses text_path + stroke + (fill | show_text) to generate a "halo" + around the string. This is to try to replicate a bug described by Ian + Britten in the PDF backend where the rendering of the show_text looked + distorted compared to the stroke. + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/halo.c | 98 +++++++++++++++++++++++++++++++++++++++++++++ + test/halo.image16.ref.png | Bin 0 -> 5328 bytes + test/halo.ref.png | Bin 0 -> 7524 bytes + test/halo.xlib.ref.png | Bin 0 -> 7404 bytes + 6 files changed, 102 insertions(+), 0 deletions(-) + +commit 072a200ec502bf5ac3e62702e6f14ed18171b1e0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 14 16:05:14 2010 +0100 + + build: Add wgl to Makefile.sources and regenerate features. + + boilerplate/Makefile.win32.features | 10 ++++++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + src/Makefile.sources | 6 ++++-- + src/Makefile.win32.features | 14 ++++++++++++++ + 5 files changed, 32 insertions(+), 2 deletions(-) + +commit 4a0bd91ff77c8afddde6d09495bc9ca7242f953d +Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> +Date: Mon Jun 14 16:40:39 2010 +0300 + + scaled-font: fine-tune caching + + This patch implements the ideas outlined by Behdad Esfahbod in the following + mailing list message: + + http://lists.cairographics.org/archives/cairo/2010-June/020065.html + + Specifically, two things have been adjusted. First, the size of the look-up + table was reduced to 64. Second, cache codepath is now bypassed for strings + that are shorter than 16, not only for one-character strings. This allowed + us to reduce the LUT initialization overhead while still retaining the + advantage of caching for common-case string sizes. + + We have experimented with different LUT sizes, and it came out that the size + of 64 is the best one in view of speed, at least for our language-neutral + benchmark, which generated random strings of printable ASCII characters. + + Below is a table presenting benchmark results for different values of LUT + size: + + =============================================================================== + Benchmark | [1] | [2] | [3] | [4] | [5] | [6] | [7] + =============================================================================== + 8px text, 1 chars | 0.41 | 0.41 | 0 | 0.41 | 0 | 0.41 | 0 + 8px text, 10 chars | 2.13 | 2.21 | 3.76 | 2.19 | 2.82 | 2.09 | -1.88 + 8px text, 20 chars | 2.97 | 3.04 | 2.36 | 3.01 | 1.35 | 2.98 | 0.34 + 12px text, 1 chars | 0.94 | 0.94 | 0 | 0.95 | 1.06 | 0.94 | 0 + 12px text, 10 chars | 4.73 | 4.89 | 3.38 | 4.9 | 3.59 | 4.82 | 1.9 + 12px text, 20 chars | 6.32 | 6.42 | 1.58 | 6.46 | 2.22 | 6.32 | 0 + 16px text, 1 chars | 1.75 | 1.76 | 0.57 | 1.77 | 1.14 | 1.76 | 0.57 + 16px text, 10 chars | 8.13 | 8.45 | 3.94 | 8.43 | 3.69 | 8.44 | 3.81 + 16px text, 20 chars | 10.41 | 10.69 | 2.69 | 10.64 | 2.21 | 10.65 | 2.31 + 24px text, 1 chars | 3.3 | 3.3 | 0 | 3.32 | 0.61 | 3.3 | 0 + 24px text, 10 chars | 14.68 | 14.97 | 1.98 | 14.97 | 1.98 | 14.87 | 1.29 + 24px text, 20 chars | 17.93 | 18.01 | 0.45 | 18.06 | 0.73 | 17.81 | -0.67 + 96px text, 1 chars | 23.65 | 23.38 | -1.14 | 23.74 | 0.38 | 23.65 | 0 + 96px text, 5 chars | 50.52 | 51.34 | 1.62 | 51.48 | 1.9 | 51.41 | 1.76 + 96px text, 10 chars | 57.5 | 58.11 | 1.06 | 58.27 | 1.34 | 58.04 | 0.94 + =============================================================================== + + [1]: Git head, Mpix/s + [2]: {GLYPH_LUT_SIZE = 32, CACHING_THRESHOLD = 16} + [3]: Gain of {32, 16} w.r.t. Git head + [4]: {GLYPH_LUT_SIZE = 64, CACHING_THRESHOLD = 16} + [5]: Gain of {64, 16} w.r.t. Git head + [6]: {GLYPH_LUT_SIZE = 128, CACHING_THRESHOLD = 16} + [7]: Gain of {128, 16} w.r.t. Git head + + The benchmark itself can be found from this mailing list message: + + http://lists.cairographics.org/archives/cairo/2010-June/020064.html + + src/cairo-scaled-font.c | 61 ++++++++++++++++++++++++++++++++++------------ + 1 files changed, 45 insertions(+), 16 deletions(-) + +commit 505a0456d2498112155db7e7f275a14dc98f643e +Author: Zoxc <zoxc32@gmail.com> +Date: Mon Jun 14 01:20:54 2010 +0200 + + gl: Added WGL context and surface. + + build/configure.ac.features | 1 + + configure.ac | 9 ++ + src/cairo-gl.h | 16 +++ + src/cairo-wgl-context.c | 253 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 279 insertions(+), 0 deletions(-) + +commit fd6c38b9e006feefa20ce4f54d3108dad51c828d +Author: Zoxc <zoxc32@gmail.com> +Date: Mon Jun 14 01:04:10 2010 +0200 + + win32: Fixed compile errors in Windows backend. + + src/cairo-win32-printing-surface.c | 9 ++++----- + src/cairo-win32-surface.c | 4 ++-- + 2 files changed, 6 insertions(+), 7 deletions(-) + +commit 5f10139cd92383c657e328ffad41874c4f668551 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 13 12:33:10 2010 +0100 + + NEWS: A couple more tweaks + + I only spotted these in the release announcement. + + NEWS | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 4932aaa3173799c8f3ac30e4c9a594c20c83a121 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 13 12:02:53 2010 +0100 + + version: 1.9.9 + + Post-snapshot bump. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3a20b10cd0d94406fbd5fe3bb3d4820a95364537 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 13 10:27:03 2010 +0100 + + version: 1.9.8 + + Snapshot time! + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b612a230865a1a62f9cdcb051de9b57b509646b2 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Jun 13 12:29:24 2010 +0200 + + test: update quartz ref images in makefile + + test/Makefile.am | 143 +++++++++++++++++++++++++++++++++++++++++------------- + 1 files changed, 109 insertions(+), 34 deletions(-) + +commit 0693af2328606a4c7e4c888d2a1cd346e6bef405 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 13 10:22:37 2010 +0100 + + test: Move all output below test/output/ + + make distcheck complains of remanents being left under test/ after a + clean, notably the files used to check the capabilities of a similar + surface and the fallback-resolution output. + + test/cairo-test.c | 53 ++++++++++++++++++++++++------------------- + test/fallback-resolution.c | 30 +++++++++++++++++++++--- + 2 files changed, 56 insertions(+), 27 deletions(-) + +commit ffc3a39c95e918fa2fcd14c1b1063b9a9acceebf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 20:04:36 2010 +0100 + + NEWS: Minor tweaks. + + NEWS | 46 +++++++++++++++++++++++----------------------- + 1 files changed, 23 insertions(+), 23 deletions(-) + +commit b6e16b8d2950cdadf2e2b14b0e7502d4a9ebdc09 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jun 12 10:33:35 2010 +0200 + + test: quartz ref image refresh + + test/a1-image-sample.quartz.xfail.png | Bin 0 -> 972 bytes + test/a1-mask-sample.quartz.xfail.png | Bin 0 -> 972 bytes + test/a1-traps-sample.quartz.xfail.png | Bin 0 -> 122 bytes + test/big-line.quartz.ref.png | Bin 0 -> 993 bytes + test/caps-joins-curve.quartz.ref.png | Bin 0 -> 5199 bytes + test/clear.quartz.argb32.ref.png | Bin 0 -> 691 bytes + test/clear.quartz.rgb24.ref.png | Bin 0 -> 606 bytes + test/clip-disjoint.quartz.ref.png | Bin 0 -> 5476 bytes + test/clip-fill-rule.quartz.rgb24.ref.png | Bin 0 -> 363 bytes + test/clip-fill-unbounded.quartz.argb32.ref.png | Bin 0 -> 1436 bytes + test/clip-fill-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1368 bytes + test/clip-fill.quartz.ref.png | Bin 0 -> 875 bytes + test/clip-group-shapes-circles.quartz.ref.png | Bin 0 -> 1518 bytes + test/clip-nesting.quartz.argb32.ref.png | Bin 0 -> 1048 bytes + test/clip-nesting.quartz.ref.png | Bin 1067 -> 0 bytes + test/clip-nesting.quartz.rgb24.ref.png | Bin 956 -> 937 bytes + test/clip-operator.quartz.argb32.ref.png | Bin 0 -> 9586 bytes + test/clip-operator.quartz.ref.png | Bin 9539 -> 0 bytes + test/clip-operator.quartz.rgb24.ref.png | Bin 4412 -> 4104 bytes + test/clip-push-group.quartz.ref.png | Bin 203 -> 166 bytes + test/clip-shape.quartz.ref.png | Bin 0 -> 3229 bytes + test/clip-stroke-unbounded.quartz.argb32.ref.png | Bin 0 -> 1493 bytes + test/clip-stroke-unbounded.quartz.rgb24.ref.png | Bin 0 -> 1356 bytes + test/clip-stroke.quartz.ref.png | Bin 0 -> 1305 bytes + test/clip-text.quartz.ref.png | Bin 0 -> 854 bytes + test/clip-twice.quartz.argb32.ref.png | Bin 0 -> 1171 bytes + test/clip-twice.quartz.ref.png | Bin 1171 -> 0 bytes + test/clip-twice.quartz.rgb24.ref.png | Bin 1111 -> 1095 bytes + test/clipped-group.quartz.ref.png | Bin 0 -> 308 bytes + test/culled-glyphs.quartz.ref.png | Bin 0 -> 493 bytes + test/dash-caps-joins.quartz.ref.png | Bin 4727 -> 0 bytes + test/dash-caps-joins.quartz.xfail.png | Bin 0 -> 4446 bytes + test/dash-curve.quartz.ref.png | Bin 47965 -> 0 bytes + test/dash-curve.quartz.xfail.png | Bin 0 -> 42238 bytes + test/dash-scale.quartz.ref.png | Bin 8079 -> 7614 bytes + test/dash-state.quartz.ref.png | Bin 8698 -> 0 bytes + test/dash-state.quartz.xfail.png | Bin 0 -> 6957 bytes + test/degenerate-arc.quartz.ref.png | Bin 0 -> 552 bytes + test/degenerate-curve-to.quartz.ref.png | Bin 0 -> 247 bytes + test/degenerate-dash.quartz.xfail.png | Bin 0 -> 1560 bytes + test/degenerate-path.quartz.argb32.xfail.png | Bin 0 -> 200 bytes + test/degenerate-path.quartz.ref.png | Bin 232 -> 0 bytes + test/degenerate-path.quartz.rgb24.ref.png | Bin 198 -> 0 bytes + test/degenerate-path.quartz.rgb24.xfail.png | Bin 0 -> 172 bytes + test/degenerate-pen.quartz.ref.png | Bin 1144 -> 0 bytes + test/degenerate-rel-curve-to.quartz.ref.png | Bin 0 -> 246 bytes + test/extend-pad-border.quartz.ref.png | Bin 0 -> 432 bytes + test/extend-pad-similar.quartz.xfail.png | Bin 0 -> 270 bytes + test/extend-pad.quartz.xfail.png | Bin 0 -> 270 bytes + test/fill-alpha-pattern.quartz.ref.png | Bin 0 -> 7943 bytes + test/fill-alpha.quartz.ref.png | Bin 0 -> 2704 bytes + test/fill-and-stroke-alpha-add.quartz.ref.png | Bin 603 -> 542 bytes + test/fill-and-stroke-alpha.quartz.ref.png | Bin 550 -> 0 bytes + test/fill-and-stroke.quartz.argb32.ref.png | Bin 0 -> 273 bytes + test/fill-and-stroke.quartz.ref.png | Bin 286 -> 0 bytes + test/fill-and-stroke.quartz.rgb24.ref.png | Bin 264 -> 249 bytes + ...ill-degenerate-sort-order.quartz.argb32.ref.png | Bin 0 -> 2451 bytes + test/fill-degenerate-sort-order.quartz.ref.png | Bin 2470 -> 0 bytes + ...fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin 2098 -> 2079 bytes + test/fill-image.quartz.ref.png | Bin 0 -> 1297 bytes + test/fill-rule.quartz.argb32.ref.png | Bin 0 -> 2060 bytes + test/fill-rule.quartz.ref.png | Bin 2079 -> 0 bytes + test/fill-rule.quartz.rgb24.ref.png | Bin 1790 -> 1771 bytes + test/filter-bilinear-extents.quartz.xfail.png | Bin 0 -> 308 bytes + test/filter-nearest-offset.quartz.xfail.png | Bin 0 -> 2130 bytes + test/filter-nearest-transformed.quartz.xfail.png | Bin 0 -> 534 bytes + test/finer-grained-fallbacks.quartz.argb32.ref.png | Bin 0 -> 988 bytes + test/finer-grained-fallbacks.quartz.rgb24.ref.png | Bin 0 -> 763 bytes + test/font-matrix-translation.quartz.ref.png | Bin 1090 -> 996 bytes + test/ft-show-glyphs-table.quartz.xfail.png | Bin 0 -> 827 bytes + .../ft-text-vertical-layout-type1.quartz.xfail.png | Bin 0 -> 3635 bytes + test/ft-text-vertical-layout-type3.quartz.ref.png | Bin 0 -> 3573 bytes + test/glyph-cache-pressure.quartz.ref.png | Bin 3654 -> 3284 bytes + test/gradient-constant-alpha.quartz.argb32.ref.png | Bin 0 -> 214 bytes + test/group-unaligned.quartz.ref.png | Bin 0 -> 363 bytes + test/huge-radial.quartz.ref.png | Bin 0 -> 84690 bytes + test/inverse-text.quartz.ref.png | Bin 0 -> 2565 bytes + test/joins.quartz.ref.png | Bin 0 -> 5833 bytes + test/leaky-dash.quartz.ref.png | Bin 241 -> 195 bytes + test/leaky-dashed-rectangle.quartz.ref.png | Bin 0 -> 339 bytes + test/leaky-dashed-stroke.quartz.ref.png | Bin 0 -> 9229 bytes + test/line-width-scale.quartz.ref.png | Bin 6434 -> 5623 bytes + test/linear-gradient-reflect.quartz.ref.png | Bin 878 -> 780 bytes + test/linear-gradient-subset.quartz.ref.png | Bin 0 -> 887 bytes + test/linear-gradient.quartz.ref.png | Bin 1164 -> 1060 bytes + test/long-dashed-lines.quartz.ref.png | Bin 2313 -> 2068 bytes + test/mask-alpha.quartz.argb32.ref.png | Bin 641 -> 622 bytes + test/mask-transformed-image.quartz.ref.png | Bin 0 -> 3909 bytes + test/mask-transformed-similar.quartz.ref.png | Bin 0 -> 3909 bytes + test/mask.quartz.argb32.ref.png | Bin 0 -> 10575 bytes + test/mask.quartz.ref.png | Bin 10682 -> 0 bytes + test/mask.quartz.rgb24.ref.png | Bin 8418 -> 8354 bytes + test/new-sub-path.quartz.ref.png | Bin 383 -> 370 bytes + test/new-sub-path.quartz.rgb24.ref.png | Bin 357 -> 0 bytes + test/operator-clear.quartz.argb32.ref.png | Bin 0 -> 1228 bytes + test/operator-clear.quartz.ref.png | Bin 1459 -> 0 bytes + test/operator-clear.quartz.rgb24.ref.png | Bin 1293 -> 1096 bytes + test/operator-source.quartz.argb32.ref.png | Bin 0 -> 4754 bytes + test/operator-source.quartz.ref.png | Bin 4637 -> 0 bytes + test/operator-source.quartz.rgb24.ref.png | Bin 3533 -> 3535 bytes + test/over-above-source.quartz.argb32.ref.png | Bin 0 -> 511 bytes + test/over-above-source.quartz.ref.png | Bin 530 -> 0 bytes + test/over-above-source.quartz.rgb24.ref.png | Bin 456 -> 437 bytes + test/over-around-source.quartz.argb32.ref.png | Bin 0 -> 593 bytes + test/over-around-source.quartz.ref.png | Bin 612 -> 0 bytes + test/over-around-source.quartz.rgb24.ref.png | Bin 491 -> 0 bytes + test/over-between-source.quartz.argb32.ref.png | Bin 0 -> 551 bytes + test/over-between-source.quartz.ref.png | Bin 570 -> 0 bytes + test/over-between-source.quartz.rgb24.ref.png | Bin 467 -> 0 bytes + test/path-append.quartz.ref.png | Bin 0 -> 6395 bytes + test/pthread-same-source.quartz.xfail.png | Bin 0 -> 957 bytes + test/pthread-show-text.quartz.ref.png | Bin 0 -> 42996 bytes + test/push-group-color.quartz.ref.png | Bin 0 -> 3127 bytes + test/push-group.quartz.argb32.ref.png | Bin 0 -> 3932 bytes + test/push-group.quartz.rgb24.ref.png | Bin 0 -> 3659 bytes + test/radial-gradient.quartz.ref.png | Bin 92334 -> 0 bytes + test/random-intersections-curves-eo.quartz.ref.png | Bin 0 -> 326366 bytes + test/random-intersections-curves-nz.quartz.ref.png | Bin 0 -> 324940 bytes + test/random-intersections-eo.quartz.ref.png | Bin 197778 -> 179179 bytes + test/random-intersections-nonzero.quartz.ref.png | Bin 0 -> 180871 bytes + ...recording-surface-pattern.quartz.argb32.ref.png | Bin 0 -> 4570 bytes + test/recording-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes + .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 4058 bytes + test/rectilinear-dash.quartz.xfail.png | Bin 0 -> 494 bytes + test/rectilinear-stroke.quartz.xfail.png | Bin 0 -> 209 bytes + test/reflected-stroke.quartz.ref.png | Bin 5293 -> 0 bytes + test/rel-path.quartz.ref.png | Bin 212 -> 0 bytes + test/rel-path.quartz.rgb24.ref.png | Bin 228 -> 0 bytes + test/rotate-image-surface-paint.quartz.ref.png | Bin 257 -> 356 bytes + test/rotated-clip.quartz.ref.png | Bin 0 -> 3923 bytes + test/rounded-rectangle-fill.quartz.ref.png | Bin 0 -> 684 bytes + test/scale-offset-image.quartz.ref.png | Bin 0 -> 9054 bytes + test/scale-offset-similar.quartz.ref.png | Bin 0 -> 9054 bytes + test/select-font-face.quartz.ref.png | Bin 2970 -> 2645 bytes + test/self-intersecting.quartz.xfail.png | Bin 0 -> 233 bytes + test/show-text-current-point.quartz.ref.png | Bin 3093 -> 2773 bytes + test/smask-fill.quartz.ref.png | Bin 0 -> 2076 bytes + test/smask-mask.quartz.ref.png | Bin 0 -> 3357 bytes + test/smask-paint.quartz.ref.png | Bin 0 -> 3499 bytes + test/smask-stroke.quartz.ref.png | Bin 0 -> 1697 bytes + test/smask-text.quartz.ref.png | Bin 0 -> 1904 bytes + test/smask.quartz.ref.png | Bin 0 -> 4067 bytes + test/source-clip-scale.quartz.ref.png | Bin 148 -> 126 bytes + test/spline-decomposition.quartz.xfail.png | Bin 0 -> 19560 bytes + test/stroke-ctm-caps.quartz.ref.png | Bin 1109 -> 899 bytes + test/stroke-image.quartz.ref.png | Bin 1802 -> 1350 bytes + test/subsurface-pad.quartz.xfail.png | Bin 0 -> 197 bytes + test/surface-pattern-big-scale-down.quartz.ref.png | Bin 0 -> 258 bytes + ...urface-pattern-operator.quartz.argb32.xfail.png | Bin 0 -> 5917 bytes + ...surface-pattern-operator.quartz.rgb24.xfail.png | Bin 0 -> 2546 bytes + ...e-pattern-scale-down-extend-none.quartz.ref.png | Bin 0 -> 391 bytes + ...-pattern-scale-down-extend-pad.quartz.xfail.png | Bin 0 -> 397 bytes + ...attern-scale-down-extend-reflect.quartz.ref.png | Bin 0 -> 475 bytes + ...pattern-scale-down-extend-repeat.quartz.ref.png | Bin 0 -> 397 bytes + test/surface-pattern-scale-down.quartz.ref.png | Bin 3188 -> 2276 bytes + test/surface-pattern-scale-up.quartz.xfail.png | Bin 0 -> 3294 bytes + test/surface-pattern.quartz.xfail.png | Bin 0 -> 9216 bytes + test/text-antialias-gray.quartz.ref.png | Bin 1041 -> 956 bytes + test/text-antialias-none.quartz.ref.png | Bin 300 -> 270 bytes + test/text-antialias-subpixel.quartz.ref.png | Bin 1065 -> 949 bytes + test/text-glyph-range.quartz.ref.png | Bin 0 -> 2191 bytes + test/text-pattern.quartz.argb32.ref.png | Bin 0 -> 2148 bytes + test/text-pattern.quartz.ref.png | Bin 2158 -> 0 bytes + test/text-pattern.quartz.rgb24.ref.png | Bin 1874 -> 1867 bytes + test/text-rotate.quartz.ref.png | Bin 17820 -> 16655 bytes + test/trap-clip.quartz.argb32.ref.png | Bin 0 -> 6060 bytes + test/trap-clip.quartz.ref.png | Bin 6041 -> 0 bytes + test/trap-clip.quartz.rgb24.ref.png | Bin 5385 -> 5694 bytes + test/unantialiased-shapes.quartz.ref.png | Bin 4394 -> 3868 bytes + test/unbounded-operator.quartz.ref.png | Bin 4066 -> 0 bytes + test/unbounded-operator.quartz.rgb24.ref.png | Bin 1918 -> 0 bytes + test/user-font-proxy.quartz.ref.png | Bin 0 -> 19795 bytes + test/user-font-rescale.quartz.ref.png | Bin 0 -> 15982 bytes + test/user-font.quartz.ref.png | Bin 0 -> 5960 bytes + test/xcomposite-projection.quartz.ref.png | Bin 0 -> 639 bytes + 175 files changed, 0 insertions(+), 0 deletions(-) + +commit 0d5a15f23812575c80db44ca23075293cc0dbfad +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 20:00:24 2010 +0100 + + check: Disable running cairo-perf-micro + + Since this takes days to run now and should not find any bugs that are + not covered by the test-suite it seems like a pointless exercise. + Especially as I am trying to make a release! + + perf/Makefile.am | 15 ++++----------- + 1 files changed, 4 insertions(+), 11 deletions(-) + +commit e9fb39daee9ef3f80e4aedbda68027b36ce94fe3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 19:40:42 2010 +0100 + + NEWS: take two. + + NEWS | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 75 insertions(+), 6 deletions(-) + +commit 62899e5e23a798bb3e9b60c9e793555e973b7823 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 18:51:31 2010 +0100 + + NEWS: Boring stub for 1.9.10. + + NEWS | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit fc372b1d9dea1ed4cb4229eaaad62a2d8e112a03 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 16:50:30 2010 +0100 + + test: Missing ref images + + test/Makefile.am | 8 ++++---- + test/coverage-triangles.xlib.xfail.png | Bin 0 -> 15859 bytes + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 8737bc8b17ff0c437bb57df018bb7c540a394a7c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 16:49:46 2010 +0100 + + gl: start returning the failure status aftern an invalid GL op. + + src/cairo-gl-composite.c | 1 + + src/cairo-gl-device.c | 26 +++++++++++++++++++------- + src/cairo-gl-glyphs.c | 10 +++++++--- + src/cairo-gl-private.h | 45 ++++++++++++++++++++++++++++++++++----------- + src/cairo-gl-surface.c | 40 +++++++++++++++++++++++++--------------- + 5 files changed, 86 insertions(+), 36 deletions(-) + +commit 5b2f90bf532184e46829de4b2e2f9d0b10c1ff81 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 16:49:11 2010 +0100 + + test: Forgotten ref image. + + test/clipped-group.xlib-fallback.ref.png | Bin 0 -> 344 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit cdd6f11716e3fbe579d68161caec220c7852fdff +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 15:44:29 2010 +0100 + + test: Record the expected failure mode for partial-coverage-intersecting-quads + + As the diagonals of the quad intersect below the limits of Cairo's fixed + point, we fail to take heed of the intersection. + + test/Makefile.am | 1 + + test/partial-coverage-intersecting-quads.xfail.png | Bin 0 -> 262 bytes + 2 files changed, 1 insertions(+), 0 deletions(-) + +commit 3d72b4aa70d106b5da093e6405c7e3890fa343cf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 15:32:31 2010 +0100 + + test/coverage: The comment was still wrong. + + Writing comments is hard. I give in. + + test/coverage.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e6d1b3a8ce0b516aed7715b57d9ca5ab4fad6c2f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jun 12 16:22:54 2010 +0200 + + test: update font family name + + Update the name of the test font family to DejaVu, so that backends + unable to rely on fontconfig to match font names can find the correct + font anyway. + + test/README | 10 +++++----- + test/cairo-test.h | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 3cb882d01b53cb3cec9be62d678dd4ef7ea2c1fd +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jun 12 16:20:37 2010 +0200 + + test: make test font family a define + + In order to make it easier to change the test font family, add it + as a define in the global header and always reference the macro in + the tests. + + test/cairo-test.h | 2 ++ + test/clip-all.c | 2 +- + test/clip-empty-save.c | 2 +- + test/clip-empty.c | 2 +- + test/clip-operator.c | 2 +- + test/font-face-get-type.c | 2 +- + test/font-matrix-translation.c | 2 +- + test/ft-show-glyphs-positioning.c | 2 +- + test/ft-show-glyphs-table.c | 2 +- + test/ft-text-antialias-none.c | 2 +- + test/ft-text-vertical-layout-type3.c | 2 +- + test/get-path-extents.c | 2 +- + test/glyph-cache-pressure.c | 2 +- + test/inverse-text.c | 6 +++--- + test/large-font.c | 2 +- + test/operator-clear.c | 2 +- + test/operator-source.c | 2 +- + test/overlapping-glyphs.c | 2 +- + test/pdf-features.c | 2 +- + test/ps-features.c | 2 +- + test/select-font-face.c | 6 +++--- + test/select-font-no-show-text.c | 2 +- + test/show-text-current-point.c | 2 +- + test/smask-text.c | 2 +- + test/smask.c | 2 +- + test/text-antialias-gray.c | 2 +- + test/text-antialias-none.c | 2 +- + test/text-antialias-subpixel.c | 2 +- + test/text-glyph-range.c | 2 +- + test/text-pattern.c | 2 +- + test/text-rotate.c | 2 +- + test/text-transform.c | 2 +- + test/text-zero-len.c | 2 +- + test/unbounded-operator.c | 2 +- + test/user-font-rescale.c | 6 +++--- + 35 files changed, 42 insertions(+), 40 deletions(-) + +commit b1e4df928fb59ee295830d5c0fa26330714f88f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 15:28:28 2010 +0100 + + test/coverage: Refine comments + + Joonas didn't like me putting incorrect labels in my comments. Said they + were misleading and worse than useless. Harsh. + + test/coverage.c | 20 +++++++++++++------- + 1 files changed, 13 insertions(+), 7 deletions(-) + +commit 968374b6335199cbf02c8c4733537388da2a45f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 15:14:17 2010 +0100 + + test/coverage: Add a comment describing the column_triangle geometry() + + test/coverage.c | 20 ++++++++++++++++++++ + 1 files changed, 20 insertions(+), 0 deletions(-) + +commit 299263f8c912d3468d51ed22bcb6ab96275709f0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 13:48:12 2010 +0100 + + test: Disable tests that are too slow to run by default. + + Introduce a slow mode [-s] to the runner, and add "slow" to the + requirements for the very long running tests like the coverage stress + tests. + + test/cairo-test-runner.c | 17 +++++++++++++++-- + test/coverage.c | 12 ++++++------ + test/half-coverage.c | 4 ++-- + test/mask-glyphs.c | 2 +- + test/partial-coverage.c | 16 ++++++++-------- + 5 files changed, 32 insertions(+), 19 deletions(-) + +commit 53139261c7ba1a4cc0b869cb48c136b0362a3b0c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 13:40:17 2010 +0100 + + test: Use exact matching on test names by default. + + Specifying individual tests to run is more common than using a group + chosen from a keyword, so change the default matching mode and introduce + '-k' to select by keyword. + + test/cairo-test-runner.c | 45 ++++++++++++++++++++++----------------------- + 1 files changed, 22 insertions(+), 23 deletions(-) + +commit 97288b0859bae6cea1e3bff84b632e00f1d10917 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 13:34:27 2010 +0100 + + test: More minute geometry exercised by partial-coverage. + + Moving beyond the capabilities of cairo... + + test/Makefile.am | 2 + + test/partial-coverage-intersecting-quads.ref.png | Bin 0 -> 189 bytes + ...partial-coverage-intersecting-triangles.ref.png | Bin 0 -> 202 bytes + test/partial-coverage.c | 131 ++++++++++++++++++++ + 4 files changed, 133 insertions(+), 0 deletions(-) + +commit 4e3ef57bc892b0b046c486390adc7164a1de64de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 13:18:42 2010 +0100 + + test: More coverage coverage. + + A couple of different shapes that aim to test the tessellation side of + the rasterisers more... And worryingly there does seem to be an + unexpected systematic error. + + test/Makefile.am | 8 + + test/coverage-column-triangles.ref.png | Bin 0 -> 208 bytes + test/coverage-column-triangles.xlib.xfail.png | Bin 0 -> 12745 bytes + test/coverage-intersecting-quads.ref.png | Bin 0 -> 253 bytes + test/coverage-intersecting-quads.xlib.xfail.png | Bin 0 -> 15296 bytes + test/coverage-intersecting-triangles.ref.png | Bin 0 -> 209 bytes + .../coverage-intersecting-triangles.xlib.xfail.png | Bin 0 -> 16728 bytes + test/coverage-row-triangles.ref.png | Bin 0 -> 208 bytes + test/coverage-row-triangles.xlib.xfail.png | Bin 0 -> 12671 bytes + test/coverage.c | 249 +++++++++++++++++++- + 10 files changed, 251 insertions(+), 6 deletions(-) + +commit 9b7cc7641b691a3b9e3d5edd51053c9a095d9c5a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 12 10:41:09 2010 +0100 + + cairo: Create error objects for cairo_t + + Perform an early check for error status and prevent creation of a full + object. This means that we do not pass down error objects to the + initialisation routines and so can survive without paranoia inside the + library. It also has brings consistency that like the other + constructors, no object is created in error and we can skip the + cairo_destroy() if we choose (and we don't waste one of the precious + zero-alloc context slots. + + Fixes crash in test/a8-mask introduced by 1a544361e845. + + src/cairo-debug.c | 2 + + src/cairo-mutex-list-private.h | 1 + + src/cairo.c | 76 ++++++++++++++++++++++++++++++++++------ + src/cairoint.h | 3 ++ + 4 files changed, 71 insertions(+), 11 deletions(-) + +commit 9b6617a3b3b31d52e6646400b16ec56c754bfebd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 21:58:34 2010 +0100 + + image: Apply component alpha to composite masks. + + If we need to pattern requires component alpha, then we must take a + copy of the image and enable component alpha for pixman. + + Fixes test/text-antialias-subpixel on xlib-fallback -- i.e. we will + finally render subpixel antialiased text on ancient XServers. + + src/cairo-image-surface.c | 40 ++++++++++++++++++++++++---------------- + 1 files changed, 24 insertions(+), 16 deletions(-) + +commit 7440fc07f77b112b00957f5459129dba23a5683f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 21:29:02 2010 +0100 + + test: xlib ref image refresh + + test/Makefile.am | 26 ++++++++++++++----- + ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1438 bytes + test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 1758 -> 1759 bytes + test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1430 bytes + test/clip-group-shapes-circles.xlib.ref.png | Bin 0 -> 1534 bytes + ...-group-shapes-unaligned-rectangles.xlib.ref.png | Bin 0 -> 431 bytes + ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 1429 -> 1437 bytes + test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 1792 -> 1785 bytes + test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 1426 -> 1442 bytes + test/clip-stroke.xlib-fallback.ref.png | Bin 1490 -> 1491 bytes + test/clip-stroke.xlib.ref.png | Bin 1490 -> 1491 bytes + test/clipped-group.xlib.ref.png | Bin 0 -> 289 bytes + test/coverage-rectangles.xlib.xfail.png | Bin 0 -> 15981 bytes + test/finer-grained-fallbacks.xlib-fallback.ref.png | Bin 0 -> 919 bytes + test/finer-grained-fallbacks.xlib.ref.png | Bin 1111 -> 1110 bytes + test/finer-grained-fallbacks.xlib.rgb24.ref.png | Bin 1114 -> 856 bytes + test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3639 -> 3625 bytes + test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3597 bytes + test/leaky-dashed-rectangle.xlib.ref.png | Bin 347 -> 344 bytes + test/linear-gradient-subset.xlib.ref.png | Bin 0 -> 782 bytes + test/pthread-show-text.xlib-fallback.ref.png | Bin 0 -> 42073 bytes + ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 264288 -> 264277 bytes + test/random-intersections-curves-nz.xlib.ref.png | Bin 264288 -> 264277 bytes + test/recording-surface-pattern.xlib.argb32.ref.png | Bin 0 -> 3055 bytes + test/recording-surface-pattern.xlib.rgb24.ref.png | Bin 0 -> 3124 bytes + test/scale-offset-image.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes + test/scale-offset-image.xlib.ref.png | Bin 0 -> 9136 bytes + test/scale-offset-image.xlib.xfail.png | Bin 9132 -> 0 bytes + test/scale-offset-similar.xlib-fallback.xfail.png | Bin 8706 -> 8686 bytes + test/scale-offset-similar.xlib.xfail.png | Bin 8696 -> 8698 bytes + test/self-intersecting.xlib.ref.png | Bin 252 -> 208 bytes + test/smask-text.xlib-fallback.ref.png | Bin 0 -> 1874 bytes + test/smask.xlib-fallback.ref.png | Bin 0 -> 3423 bytes + test/subsurface.xlib.ref.png | Bin 0 -> 1782 bytes + test/text-rotate.xlib-fallback.ref.png | Bin 0 -> 16592 bytes + 35 files changed, 19 insertions(+), 7 deletions(-) + +commit a049889c64131b170b66ed8906309f6adee80fa5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 21:26:26 2010 +0100 + + pattern: Remove incorrect optimisations from _cairo_pattern_aquire_surface() + + Safe reduction of patterns is performed in gstate, so not only are the + extra checks in _cairo_pattern_acquire_surface redundant there are also + unsafe. Simply remove them. + + Fixes test/radial-gradient-extend [xlib-fallback] + + src/cairo-pattern.c | 110 ++++++++------------------------------------------- + 1 files changed, 17 insertions(+), 93 deletions(-) + +commit 00bc1d1578dc2640db64315270b00073697fb9fa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 20:31:29 2010 +0100 + + pattern: Remove extraordinary _cairo_pattern_fini_snapshot(). + + Miraculously the circular references from self-copy have disappeared and + the forced finish within _cairo_pattern_fini_snapshot() now quite + explosive. By replacing them with an ordinary _cairo_pattern_fini() the + crash from test/smask-image-mask disappear along and valgrind remains + happy. + + Fixes test/smask-image-mask and similar. + + src/cairo-pattern.c | 17 ----------------- + src/cairo-recording-surface.c | 24 ++++++++++++------------ + src/cairoint.h | 3 --- + 3 files changed, 12 insertions(+), 32 deletions(-) + +commit 1098e203dc21529f138bfabfa7558f61b8427ea0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 18:07:28 2010 +0100 + + test: pdf ref image refresh + + test/Makefile.am | 11 +++++++++++ + test/clear-source.pdf.xfail.png | Bin 0 -> 974 bytes + test/clip-fill-unbounded.pdf.argb32.ref.png | Bin 0 -> 1244 bytes + test/clip-stroke-unbounded.pdf.argb32.xfail.png | Bin 0 -> 1351 bytes + test/clip-unbounded.pdf.argb32.xfail.png | Bin 0 -> 95 bytes + test/clip-unbounded.pdf.rgb24.xfail.png | Bin 0 -> 95 bytes + test/filter-nearest-offset.pdf.xfail.png | Bin 2152 -> 4522 bytes + test/filter-nearest-transformed.pdf.xfail.png | Bin 532 -> 532 bytes + test/pthread-show-text.pdf.ref.png | Bin 0 -> 47015 bytes + test/radial-gradient-source.pdf.argb32.ref.png | Bin 0 -> 235290 bytes + test/rotate-image-surface-paint.pdf.xfail.png | Bin 358 -> 442 bytes + ...scale-source-surface-paint.pdf.argb32.xfail.png | Bin 0 -> 157 bytes + .../scale-source-surface-paint.pdf.rgb24.xfail.png | Bin 0 -> 152 bytes + test/surface-pattern-operator.pdf.argb32.xfail.png | Bin 0 -> 5485 bytes + test/surface-pattern-operator.pdf.rgb24.xfail.png | Bin 0 -> 2095 bytes + 15 files changed, 11 insertions(+), 0 deletions(-) + +commit 1c91d019c54afde0edb022312491b086588ce6c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 17:47:08 2010 +0100 + + test: ps ref image refresh. + + Update to gs-8.71 and some additional reference images for the new tests. + + test/Makefile.am | 116 +++++++++++--------- + test/README | 2 +- + test/big-line.ps.ref.png | Bin 0 -> 946 bytes + test/bug-bo-rectangular.ps.xfail.png | Bin 0 -> 945 bytes + test/caps-joins-curve.ps.ref.png | Bin 3728 -> 3715 bytes + test/caps-joins.ps.ref.png | Bin 2282 -> 2268 bytes + test/caps-sub-paths.ps.ref.png | Bin 0 -> 163 bytes + test/caps.ps.ref.png | Bin 1466 -> 1478 bytes + test/clear-source.ps.xfail.png | Bin 0 -> 552 bytes + test/clip-disjoint.ps.ref.png | Bin 0 -> 4680 bytes + test/clip-fill-rule.ps.argb32.ref.png | Bin 0 -> 251 bytes + test/clip-fill-rule.ps.rgb24.ref.png | Bin 0 -> 234 bytes + test/clip-fill-rule.ps2.argb32.ref.png | Bin 310 -> 0 bytes + test/clip-fill-rule.ps2.rgb24.ref.png | Bin 302 -> 0 bytes + test/clip-fill-rule.ps3.argb32.ref.png | Bin 310 -> 0 bytes + test/clip-fill-rule.ps3.rgb24.ref.png | Bin 302 -> 0 bytes + test/clip-fill-unbounded.ps.argb32.xfail.png | Bin 0 -> 1244 bytes + test/clip-image.ps.ref.png | Bin 0 -> 2498 bytes + test/clip-nesting.ps.argb32.ref.png | Bin 0 -> 441 bytes + test/clip-nesting.ps.rgb24.ref.png | Bin 0 -> 492 bytes + test/clip-nesting.ps2.argb32.ref.png | Bin 651 -> 0 bytes + test/clip-nesting.ps2.rgb24.ref.png | Bin 636 -> 0 bytes + test/clip-nesting.ps3.argb32.ref.png | Bin 651 -> 0 bytes + test/clip-nesting.ps3.rgb24.ref.png | Bin 636 -> 0 bytes + test/clip-push-group.ps.ref.png | Bin 0 -> 120 bytes + test/clip-push-group.ps2.argb32.ref.png | Bin 179 -> 0 bytes + test/clip-push-group.ps2.rgb24.ref.png | Bin 179 -> 0 bytes + test/clip-push-group.ps3.argb32.ref.png | Bin 179 -> 0 bytes + test/clip-push-group.ps3.rgb24.ref.png | Bin 179 -> 0 bytes + test/clip-stroke-unbounded.ps.argb32.ref.png | Bin 0 -> 1351 bytes + test/clip-stroke.ps.xfail.png | Bin 0 -> 662 bytes + test/clip-twice.ps.argb32.ref.png | Bin 0 -> 492 bytes + test/clip-twice.ps.rgb24.ref.png | Bin 0 -> 409 bytes + test/clip-twice.ps2.argb32.ref.png | Bin 575 -> 0 bytes + test/clip-twice.ps2.rgb24.ref.png | Bin 541 -> 0 bytes + test/clip-twice.ps3.argb32.ref.png | Bin 575 -> 0 bytes + test/clip-twice.ps3.rgb24.ref.png | Bin 541 -> 0 bytes + test/clipped-group.ps2.ref.png | Bin 343 -> 214 bytes + test/clipped-group.ps3.ref.png | Bin 343 -> 214 bytes + test/copy-path.ps.ref.png | Bin 0 -> 379 bytes + test/copy-path.ps2.ref.png | Bin 474 -> 0 bytes + test/copy-path.ps3.ref.png | Bin 474 -> 0 bytes + test/dash-caps-joins.ps.ref.png | Bin 0 -> 3669 bytes + test/dash-caps-joins.ps2.argb32.ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins.ps2.rgb24.ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins.ps3.argb32.ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins.ps3.rgb24.ref.png | Bin 3870 -> 0 bytes + test/dash-curve.ps2.ref.png | Bin 27293 -> 24355 bytes + test/dash-curve.ps3.ref.png | Bin 27293 -> 24355 bytes + test/dash-infinite-loop.ps.ref.png | Bin 0 -> 617 bytes + test/dash-scale.ps.ref.png | Bin 0 -> 5965 bytes + test/dash-scale.ps2.argb32.ref.png | Bin 6318 -> 0 bytes + test/dash-scale.ps2.rgb24.ref.png | Bin 6316 -> 0 bytes + test/dash-scale.ps3.argb32.ref.png | Bin 6318 -> 0 bytes + test/dash-scale.ps3.rgb24.ref.png | Bin 6316 -> 0 bytes + test/dash-state.ps2.ref.png | Bin 10219 -> 8740 bytes + test/dash-state.ps3.ref.png | Bin 10219 -> 8740 bytes + test/degenerate-arc.ps2.ref.png | Bin 585 -> 509 bytes + test/degenerate-arc.ps3.ref.png | Bin 585 -> 509 bytes + test/degenerate-curve-to.ps.xfail.png | Bin 202 -> 221 bytes + test/degenerate-dash.ps.xfail.png | Bin 1835 -> 1837 bytes + test/degenerate-path.ps.argb32.xfail.png | Bin 236 -> 234 bytes + test/degenerate-path.ps.rgb24.xfail.png | Bin 186 -> 184 bytes + test/degenerate-pen.ps.ref.png | Bin 0 -> 759 bytes + test/degenerate-pen.ps2.ref.png | Bin 865 -> 0 bytes + test/degenerate-pen.ps3.ref.png | Bin 865 -> 0 bytes + test/degenerate-rel-curve-to.ps.ref.png | Bin 0 -> 225 bytes + test/degenerate-rel-curve-to.ps.xfail.png | Bin 202 -> 0 bytes + test/fill-and-stroke.ps.argb32.ref.png | Bin 0 -> 257 bytes + test/fill-and-stroke.ps.rgb24.ref.png | Bin 0 -> 225 bytes + test/fill-and-stroke.ps2.argb32.ref.png | Bin 310 -> 0 bytes + test/fill-and-stroke.ps2.rgb24.ref.png | Bin 319 -> 0 bytes + test/fill-and-stroke.ps3.argb32.ref.png | Bin 310 -> 0 bytes + test/fill-and-stroke.ps3.rgb24.ref.png | Bin 319 -> 0 bytes + .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin 1901 -> 1903 bytes + test/fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin 1645 -> 1638 bytes + test/fill-image.ps.ref.png | Bin 1799 -> 1645 bytes + test/fill-rule.ps2.argb32.ref.png | Bin 2253 -> 1878 bytes + test/fill-rule.ps2.rgb24.ref.png | Bin 2031 -> 1524 bytes + test/fill-rule.ps3.argb32.ref.png | Bin 2253 -> 1878 bytes + test/fill-rule.ps3.rgb24.ref.png | Bin 2031 -> 1524 bytes + test/finer-grained-fallbacks.ps2.argb32.ref.png | Bin 1173 -> 1168 bytes + test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 1154 -> 936 bytes + test/finer-grained-fallbacks.ps3.argb32.ref.png | Bin 1173 -> 1168 bytes + test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 1154 -> 936 bytes + test/ft-text-vertical-layout-type1.ps.ref.png | Bin 1634 -> 2088 bytes + test/ft-text-vertical-layout-type3.ps.ref.png | Bin 1636 -> 2134 bytes + test/group-unaligned.ps.ref.png | Bin 332 -> 321 bytes + test/group-unaligned.ps.rgb24.xfail.png | Bin 0 -> 371 bytes + test/implicit-close.ps.ref.png | Bin 0 -> 252 bytes + test/joins.ps.ref.png | Bin 5496 -> 4230 bytes + test/leaky-dashed-rectangle.ps.ref.png | Bin 444 -> 358 bytes + test/leaky-dashed-stroke.ps.ref.png | Bin 0 -> 5293 bytes + test/leaky-dashed-stroke.ps2.ref.png | Bin 5511 -> 0 bytes + test/leaky-dashed-stroke.ps3.ref.png | Bin 5511 -> 0 bytes + test/leaky-polygon.ps.ref.png | Bin 0 -> 289 bytes + test/leaky-polygon.ps2.ref.png | Bin 354 -> 0 bytes + test/leaky-polygon.ps3.ref.png | Bin 354 -> 0 bytes + test/line-width-scale.ps2.ref.png | Bin 3911 -> 3431 bytes + test/line-width-scale.ps3.ref.png | Bin 3911 -> 3431 bytes + test/linear-gradient-subset.ps3.ref.png | Bin 0 -> 619 bytes + test/long-dashed-lines.ps2.ref.png | Bin 1516 -> 1329 bytes + test/long-dashed-lines.ps3.ref.png | Bin 1516 -> 1329 bytes + test/new-sub-path.ps2.argb32.ref.png | Bin 556 -> 398 bytes + test/new-sub-path.ps3.argb32.ref.png | Bin 556 -> 398 bytes + test/operator-alpha-alpha.ps.xfail.png | Bin 1338 -> 3429 bytes + test/over-around-source.ps2.argb32.ref.png | Bin 522 -> 508 bytes + test/over-around-source.ps3.argb32.ref.png | Bin 522 -> 508 bytes + test/over-below-source.ps2.argb32.ref.png | Bin 503 -> 368 bytes + test/over-below-source.ps2.rgb24.ref.png | Bin 0 -> 362 bytes + test/over-below-source.ps3.argb32.ref.png | Bin 503 -> 368 bytes + test/over-below-source.ps3.rgb24.ref.png | Bin 0 -> 362 bytes + test/path-append.ps.ref.png | Bin 4516 -> 4525 bytes + test/pixman-rotate.ps.argb32.ref.png | Bin 0 -> 355 bytes + test/push-group-color.ps3.ref.png | Bin 0 -> 2561 bytes + test/random-intersections-curves-eo.ps.ref.png | Bin 151676 -> 151668 bytes + test/random-intersections-curves-nz.ps.ref.png | Bin 134732 -> 134746 bytes + test/random-intersections-eo.ps.ref.png | Bin 78806 -> 78037 bytes + test/random-intersections-nonzero.ps.ref.png | Bin 77299 -> 76450 bytes + test/recording-surface-pattern.ps.argb32.ref.png | Bin 0 -> 3064 bytes + test/recording-surface-pattern.ps.rgb24.ref.png | Bin 0 -> 3147 bytes + test/recording-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes + test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes + test/recording-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes + test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes + test/reflected-stroke.ps.ref.png | Bin 0 -> 3368 bytes + test/reflected-stroke.ps2.ref.png | Bin 3898 -> 0 bytes + test/reflected-stroke.ps3.ref.png | Bin 3898 -> 0 bytes + test/rounded-rectangle-fill.ps.ref.png | Bin 0 -> 551 bytes + test/rounded-rectangle-stroke.ps.ref.png | Bin 0 -> 568 bytes + test/scale-offset-image.ps.ref.png | Bin 7289 -> 7697 bytes + test/spline-decomposition.ps.ref.png | Bin 9028 -> 8939 bytes + test/stroke-image.ps.ref.png | Bin 1641 -> 1682 bytes + test/subsurface.ps.ref.png | Bin 0 -> 1651 bytes + test/surface-pattern-big-scale-down.ps.ref.png | Bin 0 -> 235 bytes + test/surface-pattern-big-scale-down.ps.xfail.png | Bin 238 -> 0 bytes + test/text-glyph-range.ps.ref.png | Bin 0 -> 1253 bytes + test/text-glyph-range.ps2.ref.png | Bin 1389 -> 0 bytes + test/text-glyph-range.ps3.ref.png | Bin 1389 -> 0 bytes + test/text-rotate.ps.ref.png | Bin 0 -> 8765 bytes + test/text-rotate.ps2.ref.png | Bin 6851 -> 0 bytes + test/text-rotate.ps3.ref.png | Bin 6851 -> 0 bytes + test/text-transform.ps.ref.png | Bin 0 -> 3430 bytes + test/text-transform.ps2.ref.png | Bin 4154 -> 0 bytes + test/text-transform.ps3.ref.png | Bin 4154 -> 0 bytes + test/trap-clip.ps2.argb32.ref.png | Bin 4849 -> 4839 bytes + test/trap-clip.ps2.rgb24.ref.png | Bin 5617 -> 4729 bytes + test/trap-clip.ps3.argb32.ref.png | Bin 5591 -> 4751 bytes + test/trap-clip.ps3.rgb24.ref.png | Bin 5512 -> 4553 bytes + test/twin.ps.ref.png | Bin 2142 -> 2136 bytes + test/user-font-proxy.ps.ref.png | Bin 7766 -> 7837 bytes + test/user-font-rescale.ps.ref.png | Bin 0 -> 6781 bytes + test/user-font-rescale.ps2.ref.png | Bin 8041 -> 0 bytes + test/user-font-rescale.ps3.ref.png | Bin 8041 -> 0 bytes + test/xlib-expose-event.ps.ref.png | Bin 0 -> 39035 bytes + 155 files changed, 65 insertions(+), 53 deletions(-) + +commit 1a544361e845e4881990624a597f9dc2b82d1c73 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 16:04:41 2010 +0100 + + gstate: Update cached matrix state after device transform changes on the target + + Commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 caches whether the device + transform is identity on context creation. However, the api is quite lax + and allows the user to modify the device transform *after* he has + started to use the surface in a context, as apparently WebKit does. + Since this is not the only instance where we may need to invalidate + caches if the user modifies state, introduce a simple mechanism for + hooking into notifications of property changes. + + Fixes test/clip-device-offset. + + src/Makefile.sources | 1 + + src/cairo-gstate-private.h | 3 ++ + src/cairo-gstate.c | 28 ++++++++++++++++++++--- + src/cairo-observer.c | 50 +++++++++++++++++++++++++++++++++++++++++++ + src/cairo-surface-private.h | 1 + + src/cairo-surface.c | 6 +++++ + src/cairo-types-private.h | 6 +++++ + src/cairoint.h | 5 ++++ + 8 files changed, 96 insertions(+), 4 deletions(-) + +commit f74b11415a1f7682dd50c222baa8815ef93681dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 14:06:15 2010 +0100 + + test: Use a group to render PDF correctly using poppler. + + In order to support blend modes, we need to use a clear background + whilst rendering the PDF, which inspired the use of DEST_OVER to avoid + having to render to an intermediate surface. However, the adjunct of + using subpixel text means that we cannot simply using the alpha channel + as the sole mask and so need to render to an intermediate and paint it + over an opaque background. + + test/any2ppm.c | 9 ++++++--- + test/pdf2png.c | 9 ++++++--- + 2 files changed, 12 insertions(+), 6 deletions(-) + +commit 7f227ec8d3f981dbbf2ca1914bf7fd29d9cdfd05 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:54:15 2010 +0100 + + Revert "test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text." + + This reverts commit 506b2ebe714d61a64972b607a42a55e48d1c722a. + + We have conflicting requirements here. In order to support extended + blend modes correctly we need to use DEST_OVER, at the expense of + supporting subpixel text. More thought required. + + test/any2ppm.c | 9 +++++---- + test/pdf2png.c | 10 +++++----- + 2 files changed, 10 insertions(+), 9 deletions(-) + +commit c761e0c5bb55e8869521ad5b4a2447ea9abcb4d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:40:36 2010 +0100 + + test: Restrict the coverage tests to raster targets. + + Typo inside the requirements failed to prevent the tests running on the + vector backends. + + test/coverage.c | 4 ++-- + test/half-coverage.c | 4 ++-- + test/partial-coverage.c | 18 +++++++++--------- + 3 files changed, 13 insertions(+), 13 deletions(-) + +commit b49c944fe4abb9f3c70fac02a71061bf8d07259a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:38:17 2010 +0100 + + test: Add a convenience script to disable the screensaver when testing + + If the screensaver activates, it can cause failures when attempting to + render into an xlib window, so inhibit if we know how. + + test/Makefile.am | 2 +- + test/run-cairo-test-suite.sh | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletions(-) + +commit 4e4724d48c63d0cd4ec507ce72dcc55fb6e5f584 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:19:56 2010 +0100 + + gl: make check insists "cairoint.h" is first. + + src/cairo-gl-gradient.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 4edbcf1b1d046c9c626a0c0ad10d3c71f17984f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:17:19 2010 +0100 + + color: Mark _cairo_color_get_content() as private. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 506b2ebe714d61a64972b607a42a55e48d1c722a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 12:04:39 2010 +0100 + + test/pdf2png: Don't use DEST_OVER as poppler starts using subpixel text. + + Using DEST_OVER in this form to paint the background white fails in the + presence of subpixel geometry (particular text), so remove the hack and + simply paint the background white prior to passing the surface to + poppler. KISS. + + test/any2ppm.c | 9 ++++----- + test/pdf2png.c | 10 +++++----- + 2 files changed, 9 insertions(+), 10 deletions(-) + +commit edb73b6dcf1adce40d6c10c492e3f78556e22b85 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 11:16:42 2010 +0100 + + xlib: Adjust trapezoid precision based on antialias. + + Render supports two modes of precision when rendering trapezoids. + Precise specifies points sampling on a 15x17 grid, ala pixman. Imprecise + allows the driver more freedom in the methods used, which may be more + amenable to acceleration. Choose to use the imprecise mode by default, + but still allow users to force the more rigidly specified precision by + changing the antialias mode. + + src/cairo-xlib-surface-private.h | 1 + + src/cairo-xlib-surface.c | 31 +++++++++++++++++++++++++++++++ + 2 files changed, 32 insertions(+), 0 deletions(-) + +commit 290749bdb5c634c030db81722214661c34344403 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 10:59:17 2010 +0100 + + polygon: Reorder conditionals based on likelihood. + + The vast majority of edges will be unclipped, so process those first. + + src/cairo-polygon.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +commit 55037bfb2454a671332d961e061c712ab5471580 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Fri Jun 11 10:35:43 2010 +0100 + + xlib: Find matching Visual for XRenderFormat + + Not only is this useful for users to know which Visual matches any + particular Cairo surface, it should also close a few obscure bugs of not + converting images correctly on upload. + + Fixes: + + Bug 28492 - cairo_xlib_surface_create_with_xrender_format does not + create visual for resulting surface + https://bugs.freedesktop.org/show_bug.cgi?id=28492 + + Mozilla Bug 567065 - Try to create offscreen Xlib surface from existing + visual if possible + https://bugzilla.mozilla.org/show_bug.cgi?id=567065 + + Mozilla Bug 445250 - cairo_draw_with_xlib should provide a non-NULL visual + to callback + https://bugzilla.mozilla.org/show_bug.cgi?id=445250 + + Reported-by: Oleg Romashin <romaxa@gmail.com> + + src/cairo-xlib-surface.c | 74 ++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 65 insertions(+), 9 deletions(-) + +commit cf426bce8ebd3aff5d50c6a54bbd731132b3d312 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 10:05:09 2010 +0100 + + test: Add a simple coverage test. + + This test case should be much clearer than half-coverage over what it + purports to actually test. In each pixel, it draws a single geometric + primitive that coverages a known percentage of the pixel and then we + measure how close the rasterisers are to that ideal. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/coverage-rectangles.ref.png | Bin 0 -> 259 bytes + test/coverage-triangles.ref.png | Bin 0 -> 253 bytes + test/coverage.c | 135 ++++++++++++++++++++++++++++++++++++++ + 5 files changed, 138 insertions(+), 0 deletions(-) + +commit bd3d9ef3d1dbc5364e79e6afb47d9e124cb61ca4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 09:12:16 2010 +0100 + + test: Distinguish tests that throw an error from a normal fail. + + Hitting an error in a test case is almost as bad as crashing, and the + severity may be lost amidst "normal" failures. So introduce a new class + of ERROR so that we can immediately spot these during a test run, and + appropriately log them afterwards. + + test/cairo-test-runner.c | 89 ++++++++++++++++++++++++++++++++++++++++++++- + test/cairo-test.c | 20 ++++++++++- + test/cairo-test.h | 1 + + 3 files changed, 107 insertions(+), 3 deletions(-) + +commit eeafeebd2ec8ad8a9e7053aaaa0f845b58563b3b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 11 09:06:20 2010 +0100 + + path: Exponentially grow buffer based on populated points and ops. + + Instead of simply doubling the buffer size every time we overflow a point + or an op, enlarge the buffer to fit twice the number of used points and + ops. We expect paths to be fairly consistent in the mix of operations, + and this allows the buffer size to tune itself to actual usage and reduce + wastage. + + src/cairo-path-fixed-private.h | 3 ++- + src/cairo-path-fixed.c | 39 +++++++++++++++++++-------------------- + 2 files changed, 21 insertions(+), 21 deletions(-) + +commit b0056a86b4f6c92fa7eb89baf8483a46979c8cf1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 10 18:27:22 2010 +0100 + + test: Exercise partial coverage some more. + + Add some overlapping triangles (coarse enough for them to be resolved + using Cairo's 24.8 fixed point without loss of precision) to exercise + handling of overlapping subpixel geometry. + + test/Makefile.am | 4 + + ...tial-coverage-overlap-half-triangles-eo.ref.png | Bin 0 -> 189 bytes + ...partial-coverage-overlap-half-triangles.ref.png | Bin 0 -> 189 bytes + ...overage-overlap-three-quarter-triangles.ref.png | Bin 0 -> 186 bytes + ...artial-coverage-three-quarter-reference.ref.png | Bin 0 -> 186 bytes + test/partial-coverage.c | 284 ++++++++++++++++++-- + 6 files changed, 269 insertions(+), 19 deletions(-) + +commit 836f6166597eaa687b10e5f26fe71e099c434aa1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jun 9 19:09:22 2010 +0200 + + gl: support single stop gradients + + src/cairo-gl-gradient-private.h | 2 +- + src/cairo-gl-gradient.c | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +commit d17e2c5e23eac302b7463a08205088147da1172a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 10 10:52:16 2010 +0200 + + ps: support single stop gradients + + src/cairo-ps-surface.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +commit eb7fc351156bd66921ac3b3ffbd1fba6ba743ffb +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu Jun 10 10:51:50 2010 +0200 + + pdf: support single stop gradients + + src/cairo-pdf-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit e2660a0eac5f6081bf052db16b8bd85c814d19d8 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jun 9 16:59:29 2010 +0200 + + pattern: improve single stop gradients handling + + None-extended single stop gradients are now explicitly made clear. + + src/cairo-pattern.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit 7a024bc206aae790c7357be83474126037335ab1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jun 9 17:59:47 2010 +0200 + + test: exercise ps crash with single stop gradients + + PS crashes only when using the source operator, as it will otherwise + fallback to rasterization of the gradients. + + test/linear-gradient-one-stop.argb32.ref.png | Bin 0 -> 225 bytes + test/linear-gradient-one-stop.c | 2 +- + test/linear-gradient-one-stop.ref.png | Bin 344 -> 0 bytes + test/linear-gradient-one-stop.rgb24.ref.png | Bin 0 -> 174 bytes + test/radial-gradient-one-stop.argb32.ref.png | Bin 0 -> 1392 bytes + test/radial-gradient-one-stop.c | 2 +- + test/radial-gradient-one-stop.ref.png | Bin 1422 -> 0 bytes + test/radial-gradient-one-stop.rgb24.ref.png | Bin 0 -> 1153 bytes + 8 files changed, 2 insertions(+), 2 deletions(-) + +commit a0f8cfe64660c0043db15f9b9cbf1298bf1838d1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 8 17:04:00 2010 +0200 + + pattern: improve degenerate gradients handling + + Degenerate radial gradients are now considered clear. + + src/cairo-pattern.c | 35 +++++++++++++++++++++++++---------- + 1 files changed, 25 insertions(+), 10 deletions(-) + +commit bccd89b4177b5f5bd05def9bee5f0927a9f25e4a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 8 15:45:09 2010 +0200 + + gstate: correct optimizations + + Gradient were previously hand-optimized (without properly checking + for extend modes). By properly using _cairo_pattern functions we + avoid code duplication and bugs. + + Fixes linear-gradient-extend, radial-gradient-extend. + + src/cairo-gstate.c | 85 ++++++++++----------------------------------------- + 1 files changed, 17 insertions(+), 68 deletions(-) + +commit 06c6207ad4205f211be70e324c6d32ea7d28dca8 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 1 19:40:14 2010 +0200 + + pattern: add gradient_is_solid function + + It contains in a single place the logic needed to check if a gradient + pattern is solid (within a specified region). + + src/cairo-pattern.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 5 ++++ + 2 files changed, 58 insertions(+), 0 deletions(-) + +commit 561625ee3bd2732457eaaf28937edf557ee7661d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 1 19:39:02 2010 +0200 + + pattern: improve clear/opaque check functions + + _cairo_pattern_is_opaque was missing some checks about the extend type. + Conversely _cairo_pattern_is_clear was being too strict about gradients. + + src/cairo-pattern.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++---- + src/cairoint.h | 4 ++ + 2 files changed, 108 insertions(+), 8 deletions(-) + +commit baaf312e047a9bea6f54e63cd6534c2ed7448523 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Apr 19 09:53:00 2010 +0200 + + pattern: remove content field from solid patterns + + The content field in solid patterns had ill-defined semantic (or no + semantic at all), thus it can be removed. + + src/cairo-color.c | 16 ++++++++++++++++ + src/cairo-gl-surface.c | 2 +- + src/cairo-gstate.c | 14 +++++--------- + src/cairo-pattern.c | 37 ++++++++++--------------------------- + src/cairo-script-surface.c | 9 +++------ + src/cairo-surface.c | 4 ++-- + src/cairo-types-private.h | 1 - + src/cairo-xlib-surface.c | 6 +++--- + src/cairo.c | 4 ++-- + src/cairoint.h | 9 +++++---- + 10 files changed, 47 insertions(+), 55 deletions(-) + +commit 7461947eb1a5f002a5931303843a5a2deca0e383 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Apr 19 09:51:26 2010 +0200 + + surface: remove content argument from is_similar + + The content argument was basically unuses. + + Xlib change extracted from ickle's wip/compositor branch. + + src/cairo-directfb-surface.c | 2 +- + src/cairo-pattern.c | 5 ++--- + src/cairo-surface.c | 5 ++--- + src/cairo-win32-surface.c | 3 +-- + src/cairo-xlib-surface.c | 30 ++---------------------------- + src/cairoint.h | 6 ++---- + 6 files changed, 10 insertions(+), 41 deletions(-) + +commit ef5f9b5c61750207947587173d21b46e2d299f33 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 10 14:13:53 2010 +0100 + + test: Update partial coverage. + + Gah, no wonder the output looked wrong for the triangles, they only + covered half the pixel. So separate triangles into two cases. + + test/Makefile.am | 2 + + test/partial-coverage-half-reference.ref.png | Bin 0 -> 189 bytes + test/partial-coverage-half-triangles.ref.png | Bin 0 -> 189 bytes + test/partial-coverage.c | 98 ++++++++++++++++++++++++- + 4 files changed, 96 insertions(+), 4 deletions(-) + +commit 8d67186cb291cb877e52b987e2ac18c2a1175a57 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 10 11:36:58 2010 +0100 + + gstate: Track whether the combination of ctm * device is identity. + + In the fairly common condition that both the ctm and the device + transforms are identity, the function overhead of calling the matrix + multiplication on the point overwhelmingly dominates. + + src/cairo-clip.c | 1 + + src/cairo-gstate-private.h | 310 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gstate.c | 18 +++- + src/cairoint.h | 295 ----------------------------------------- + 4 files changed, 327 insertions(+), 297 deletions(-) + +commit 1349728d1ef63ed562a3fd0ee3c0a89aaba77616 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 10 11:26:12 2010 +0100 + + test: Add partial coverage. + + Another experiment in measuring consistency of rasterisation stratagems + across the backends. + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/partial-coverage-rectangles.ref.png | Bin 0 -> 202 bytes + test/partial-coverage-reference.ref.png | Bin 0 -> 202 bytes + test/partial-coverage-triangles.ref.png | Bin 0 -> 202 bytes + test/partial-coverage.c | 213 ++++++++++++++++++++++++++++++ + 6 files changed, 217 insertions(+), 0 deletions(-) + +commit 486118361ad0c2e68fa9f6b44ddb10e84d237eca +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 10 11:28:26 2010 +0100 + + test: Fix half-coverage colouration. + + Hmm, red over red makes the test pointless. The test still remains of + highly dubious quality, as it primarily serves as a rendercheck more + than a test of Cairo. The best hope for this test is that it inspires a + better one. + + And incorporate the notes made by Joonas. + + test/half-coverage.c | 28 +++++++++++++++++++++++++++- + 1 files changed, 27 insertions(+), 1 deletions(-) + +commit 5cb764850f7c405085739647bac2809045e7cdf3 +Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com> +Date: Wed Jun 9 19:20:27 2010 +0300 + + scaled-font: optimize cairo_scaled_font_text_to_glyphs() + + This patch serves two purposes. First, it factors out the heavy part + of the cairo_scaled_font_text_to_glyphs() routine thus allowing GCC + to better optimize the cache cleanup loop. Keeping the look-up table + indices in a separate array speeds up array initialization even further. + + Second, this patch introduces a shortcut for the case when the string + to be rendered consists of a single character. In this case, caching is + not necessary at all. + + We have a benchmark that uses Cairo to render a large amount of random + strings of consisting of printable ASCII characters. Below are Oprofile + results collected while running this benchmark. It is easy to see that + the heavy part becomes noticeably lighter. + + Before: + + Profiling through timer interrupt + samples % app name symbol name + 198755 13.5580 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs + 88580 6.0424 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup + 81127 5.5340 libcairo.so.2.10907.0 _cairo_hash_table_lookup + 68186 4.6513 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents + 47145 3.2160 libcairo.so.2.10907.0 _composite_glyphs_via_mask + 46327 3.1602 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents + 44817 3.0572 libcairo.so.2.10907.0 _composite_glyphs + 40431 2.7580 libcairo.so.2.10907.0 .plt + + After (note that cairo_scaled_font_text_to_glyphs_internal_single() was inlined): + + Profiling through timer interrupt + samples % app name symbol name + 107264 7.6406 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs_internal_multiple + 87888 6.2604 libcairo.so.2.10907.0 _cairo_scaled_glyph_lookup + 79011 5.6281 libcairo.so.2.10907.0 _cairo_hash_table_lookup + 71723 5.1090 libcairo.so.2.10907.0 cairo_scaled_font_glyph_extents + 48084 3.4251 libcairo.so.2.10907.0 _composite_glyphs_via_mask + 46636 3.3220 libcairo.so.2.10907.0 _cairo_scaled_font_glyph_device_extents + 44740 3.1869 libcairo.so.2.10907.0 _composite_glyphs + 42472 3.0254 libc-2.8.so _int_malloc + 39194 2.7919 libcairo.so.2.10907.0 _cairo_gstate_transform_glyphs_to_backend + 38614 2.7506 libcairo.so.2.10907.0 .plt + 37063 2.6401 libcairo.so.2.10907.0 _cairo_ft_ucs4_to_index + 36856 2.6253 libc-2.8.so random + 36376 2.5911 libcairo.so.2.10907.0 _cairo_scaled_glyphs_equal + 34545 2.4607 libcairo.so.2.10907.0 cairo_matrix_transform_point + 31690 2.2573 libc-2.8.so malloc + 29395 2.0939 libcairo.so.2.10907.0 _cairo_matrix_is_identity + 26142 1.8621 libcairo.so.2.10907.0 _cairo_utf8_to_ucs4 + 24406 1.7385 libc-2.8.so free + 24059 1.7138 libcairo.so.2.10907.0 cairo_scaled_font_text_to_glyphs + + [ickle: slightly amended for stylistic consistency.] + + src/cairo-scaled-font.c | 168 ++++++++++++++++++++++++++++++++--------------- + 1 files changed, 114 insertions(+), 54 deletions(-) + +commit c43399fa68696aa62599fb71752850dd46c15c82 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jun 9 17:53:09 2010 +0200 + + gl: fix compilation on MacOS X + + MacOS X uses different defines to avoid multiple inclusion of GL + header files. Adding them to glew.h fixes the compilation when GL is + enabled. + + src/glew/GL/glew.h | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 6eb5f859f1d38783dc43541e7e87b0c5f91691d8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 9 10:40:32 2010 +0100 + + bo: And disable DEBUG_TRAPS again. + + Meh. I'm going back to bed. Thanks Joonas for catching this. + + src/cairo-bentley-ottmann.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 85af0ec37456b4eb47c39326b24370a9ccc43092 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 9 10:33:29 2010 +0100 + + test: Add half-coverage to exercise the rasteriser with subpixel geometry. + + test/Makefile.sources | 1 + + test/half-coverage.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 130 insertions(+), 0 deletions(-) + +commit 56c081bdc6d29df932e6993109586ff275d8de12 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 9 10:33:01 2010 +0100 + + bo: Fix debugging for changes in internal traps api. + + src/cairo-bentley-ottmann.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit a946d39555136adc4eff3b68a62ba37f6d9a6299 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 21:09:51 2010 +0200 + + gl: Add support for clip regions to the span renderer + + Clip surface support is still missing, but i suppose that'd need a tiny + bit more code... + + src/cairo-gl-surface.c | 16 +++++++++++++--- + 1 files changed, 13 insertions(+), 3 deletions(-) + +commit f61b3f25aff454800a9d6013012d41633139d896 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 12:03:36 2010 +0200 + + gl: Add an assertion that we always have a texture + + When painting, the sources must be textures and not windows, and we did + that wrong previously. This assertion makes sure that never happens + again. + + src/cairo-gl-composite.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit c6c9a24a1df1826cab78bd8ef1c5a1074bafa0d7 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 04:11:33 2010 +0200 + + gl: Use CAIRO_COLOR_BLACK + + ... instead of creating black on our own - and wrong, too. + + src/cairo-gl-surface.c | 8 +------- + 1 files changed, 1 insertions(+), 7 deletions(-) + +commit 19bc6793d1d9b209d5a03a727288504b1e71f7c4 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 04:00:02 2010 +0200 + + gl: Only clone texture surfaces + + Using non-texture surfaces as source or mask will fail, so we need to + fallback. + Caught by the subsurface-modify-child test. + + src/cairo-gl-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 44483d843e4fe1f5db5cf213f76913d683265bb4 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 03:59:10 2010 +0200 + + gl: Fix argument order + + oops... + + src/cairo-gl-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 72bf1a536775138d79787729994ec9cfe2193be7 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Jun 8 01:50:12 2010 +0200 + + Update my copyright notices to preferred version + + No more copyright headers containing my name. + + test/clear-source.c | 35 ++++++++++++++++++----------------- + test/clip-fill-no-op.c | 35 ++++++++++++++++++----------------- + test/clip-stroke-no-op.c | 35 ++++++++++++++++++----------------- + test/pthread-same-source.c | 35 ++++++++++++++++++----------------- + test/pthread-similar.c | 35 ++++++++++++++++++----------------- + test/xcomposite-projection.c | 35 ++++++++++++++++++----------------- + test/zero-mask.c | 35 ++++++++++++++++++----------------- + 7 files changed, 126 insertions(+), 119 deletions(-) + +commit 10d95c7020ca94903d474beb9c8ede89c186cbe3 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 8 20:48:25 2010 +0200 + + test: add/update reference images + + Add missing reference images and update one-stop references according + to current subset policy (outside the defined range, the gradient + is clear). + + test/degenerate-linear-gradient.ref.png | Bin 0 -> 232 bytes + test/degenerate-radial-gradient.ref.png | Bin 0 -> 428 bytes + test/linear-gradient-one-stop.ref.png | Bin 468 -> 344 bytes + test/radial-gradient-one-stop.ref.png | Bin 3772 -> 1422 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit dd0f8872711d9896416cca2027f578f7d58d228f +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jun 7 17:34:12 2010 +0200 + + test: fix typo + + test/linear-gradient-extend.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9b88b5dce5327cbd13ea05de949c502fe41f91f7 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jun 8 10:45:06 2010 +0200 + + test: add degenerate gradient and single stop tests + + Add tests for degeneratate linear gradients (with start point equal + to the end point), degenerate radial gradients (start radius and end + radius equal to zero, same start and end circle) and gradients (both + linear and radial) with just a single stop. + + test/Makefile.sources | 6 ++- + test/degenerate-linear-gradient.c | 81 +++++++++++++++++++++++++ + test/degenerate-radial-gradient.c | 93 ++++++++++++++++++++++++++++ + test/linear-gradient-one-stop.c | 90 +++++++++++++++++++++++++++ + test/linear-gradient-one-stop.ref.png | Bin 0 -> 468 bytes + test/radial-gradient-one-stop.c | 107 +++++++++++++++++++++++++++++++++ + test/radial-gradient-one-stop.ref.png | Bin 0 -> 3772 bytes + 7 files changed, 376 insertions(+), 1 deletions(-) + +commit 7d8359721b581845260c0442a174e48b061484a7 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jun 7 16:46:46 2010 +0200 + + gl: Fix span renderer doing bad stuff for CLEAR and SOURCE + + SOURCE will fallback now, CLEAR is identical to DEST_OUT with white. + + src/cairo-gl-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit ef8fd1355ea03b8566ef31642b32133d3543e4e8 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jun 7 15:03:37 2010 +0200 + + gl: Fix span renderer for unbounded spans + + The span renderer used to not output rects for the top and bottom rows + when they didn't contain any spans. + + src/cairo-gl-surface.c | 72 ++++++++++++++++++++++++++++++++--------------- + 1 files changed, 49 insertions(+), 23 deletions(-) + +commit 1d11af083f5368c88032a33ff40d0e21c139db18 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jun 5 15:22:44 2010 +0200 + + gl: Add a simple spans renderer for stroke/fill + + It's very simple as clipped polygons or ANTIALIAS_NONE still return + UNSUPPORTED. Also, no optimizations are done, so even pixel-aligned + rectangles use the full span rendering. + + Still, there are no performance regressions in the benchmark traces and + firefox-talos-svg and swfdec-giant-steps both got ~15% faster. + + src/cairo-gl-surface.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 175 insertions(+), 3 deletions(-) + +commit 550335efeddf813c1bec493513254fdbd34a9ace +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jun 5 15:19:44 2010 +0200 + + Remove _cairo_surface_composite_trapezoids_as_polygon() + + The function computed the composite rectangles wrong and was only used + in a gl fallback anyway. So instead of trying to fix it, just remove it + and make sure gl doesn't fallback. + + src/cairo-gl-surface.c | 14 -------- + src/cairo-spans-private.h | 12 ------- + src/cairo-spans.c | 75 --------------------------------------------- + src/cairoint.h | 12 ------- + 4 files changed, 0 insertions(+), 113 deletions(-) + +commit 1e003fce8f7239aaf4608747d63287e0c715ee51 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat Jun 5 14:58:32 2010 +0200 + + gl: Fix vertex size changes not causing updates of the operands + + Check vertex size stays identical when setting up vertices. + + src/cairo-gl-composite.c | 17 ++++++++++------- + 1 files changed, 10 insertions(+), 7 deletions(-) + +commit 39143400ddd0d4e63a72ce91c423f764e466e405 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Jun 4 12:25:52 2010 +0200 + + gl: Add a gradient texture cache + + For firefox-planet-gnome, 19135 times a gradient gets rendered using + only 10 different gradients. So we get a 100% hit rate in the cache. + Unfortunately, texture upload is not the biggest problem of this test, + as the performance increase is only moderate - at least on i965: + 34.3s => 33.5s + + src/cairo-gl-device.c | 12 +++++++- + src/cairo-gl-gradient-private.h | 18 +++++++++--- + src/cairo-gl-gradient.c | 58 +++++++++++++++++++++++++++++++++++++-- + src/cairo-gl-private.h | 2 + + 4 files changed, 81 insertions(+), 9 deletions(-) + +commit 932ab2641ea3183171c3b5699c96c4709fc6bd49 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jun 3 18:54:18 2010 +0200 + + device: flush before setting finished + + Otherwise APIs critical for flushing - in particular acquiring the + device - do not work. + + src/cairo-device.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 35e219d08f1c202399655db183ca0105a1c2166f +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jun 3 17:50:59 2010 +0200 + + gl: Make gradient textures a separate object + + This is necessary so we can do proper refcounting and don't delete the + gradient texture prematurely. + + src/Makefile.sources | 4 +- + src/cairo-gl-composite.c | 156 +++------------------------ + src/cairo-gl-gradient-private.h | 80 ++++++++++++++ + src/cairo-gl-gradient.c | 223 +++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 9 +- + 5 files changed, 327 insertions(+), 145 deletions(-) + +commit 9c17a477d29f633a4850ef8b458cbca82a19afc4 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jun 3 17:40:56 2010 +0200 + + gl: Use the generic functions for filter/extend in gradients + + src/cairo-gl-composite.c | 26 ++++++++------------------ + src/cairo-gl-private.h | 2 ++ + 2 files changed, 10 insertions(+), 18 deletions(-) + +commit df93802765afcf883abef5549bd5dff3465e2d79 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Jun 3 17:38:28 2010 +0200 + + gl: Create separate functions for setting extend and filter + + src/cairo-gl-composite.c | 47 +++++++++++++++++++++++++++------------------ + 1 files changed, 28 insertions(+), 19 deletions(-) + +commit 10e71806d2e1929aa127642a397fa6ccef434b5b +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 20:04:57 2010 +0200 + + gl: Switch to deferred rendering + + 1) call _cairo_gl_composite_flush() or cairo_surface_flush() where + needed + 2) Destroy texture operands when necessary + 3) get rid of _cairo_gl_composite_end() + + With this patch, vertices are not flushed immediately anymore, but only + when needed or when a new set of vertices is emitted that requires an + incompatible setup. This improves performance a lot in particular for + text. (gnome-terminal-vim gets 10x faster) + + src/cairo-gl-composite.c | 40 ++++++++++++++++++++++------------------ + src/cairo-gl-glyphs.c | 4 ---- + src/cairo-gl-private.h | 4 ---- + src/cairo-gl-surface.c | 12 ++++++------ + 4 files changed, 28 insertions(+), 32 deletions(-) + +commit f2f79ca1b3455000df4138ab500ae03b6584250c +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 19:57:47 2010 +0200 + + gl: Make using shaders an explicit argument + + This is preparation for a followup patch + + src/cairo-gl-composite.c | 15 ++++++++------- + 1 files changed, 8 insertions(+), 7 deletions(-) + +commit 19c1d8316e22fc37c7cdaf6c3e56519c06d10561 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 18:14:28 2010 +0200 + + gl: Special case blend mode for CAIRO_CONTENT_COLOR + + This ensures that alpha stays at 1 for RGB in all cases. + + src/cairo-gl-composite.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 1f249064cc5c19a39ffe0faaa8825c8f8b6a2175 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 18:11:04 2010 +0200 + + gl: rework _cairo_gl_set_operator() + + 1) store the current operator. This will be useful later to check if the + operator changed. + 2) pass the context instead of the destination as first argument. The + destination is known to be the current target. + + src/cairo-gl-composite.c | 16 +++++++++------- + src/cairo-gl-device.c | 3 +++ + src/cairo-gl-private.h | 1 + + 3 files changed, 13 insertions(+), 7 deletions(-) + +commit f66500d8b052251ea3ce06f06d2fa4c8dec2ff3b +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 15:53:48 2010 +0200 + + gl: Only resetup textures if we need to + + src/cairo-gl-composite.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 45 insertions(+), 0 deletions(-) + +commit d9dcafd61ad6aeecb4538e9fd44e3443a8a50bf1 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 15:26:45 2010 +0200 + + gl: Do not reset the current target on release + + This now also requires a call to cairo_device_flush(). + + src/cairo-gl-device.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ce36be5c67fa5b574eb11eb98cdd8c9cd7e09335 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 15:23:57 2010 +0200 + + glx: When acquiring device, use the correct drawable + + src/cairo-glx-context.c | 16 +++++++++++++--- + 1 files changed, 13 insertions(+), 3 deletions(-) + +commit 5819bb07eb7ac64f0e2fbe6a46cc3db0de1d92ce +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jun 2 15:23:08 2010 +0200 + + gl: Store the vertex offset in the operand + + src/cairo-gl-composite.c | 1 + + src/cairo-gl-private.h | 1 + + 2 files changed, 2 insertions(+), 0 deletions(-) + +commit c75460c54d88ce9a50ac59c15a10684043ca4b0e +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 30 22:01:10 2010 +0200 + + gl: Introduce a temporary texture unit + + ...and use it for image uploads. This makes sure that the texture units + used for SOURCE and MASK get not clobbered when images get uploaded to + textures. + + src/cairo-gl-composite.c | 2 ++ + src/cairo-gl-device.c | 17 +++++++++++++++++ + src/cairo-gl-private.h | 8 +++++++- + src/cairo-gl-surface.c | 2 ++ + 4 files changed, 28 insertions(+), 1 deletions(-) + +commit 1ddff8aba35466fe6689536bc5f2d7eeefaea02c +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 30 21:25:20 2010 +0200 + + gl: Only allocate a framebuffer if we need one + + This way, we don't clobber the current target when creating textures for + image surfaces. + + src/cairo-gl-device.c | 26 ++++++++++++++++++++++++++ + src/cairo-gl-private.h | 2 +- + src/cairo-gl-surface.c | 20 ++------------------ + 3 files changed, 29 insertions(+), 19 deletions(-) + +commit 1c15510c3d00553aba9ec4fd4e6764da3cdb0a41 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 30 20:12:31 2010 +0200 + + Call cairo_surface_flush() before setting finished + + With the current code, the surface will never be flushed as the flush + function checks if the surface is finished, and if so, doesn't call the + vfunc. Ooops. + + src/cairo-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 467d5e7f90b9edfb62ca71e67608704424a10aca +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:56:57 2010 +0200 + + gl: Flush properly in set_destination + + src/cairo-gl-device.c | 33 +++++++++++++++++---------------- + 1 files changed, 17 insertions(+), 16 deletions(-) + +commit e15348d8d0bbff6968b1f640e63315d159f143f5 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:55:26 2010 +0200 + + gl: Don't reset vertex size + + src/cairo-gl-composite.c | 10 ++++++---- + src/cairo-gl-device.c | 1 + + 2 files changed, 7 insertions(+), 4 deletions(-) + +commit a8d6ac1efc3f1f5ff4f92f4e7a3492e62518f3f7 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:51:08 2010 +0200 + + gl: Remove check if we're between begin/end + + This will be useless soon, because we will keep the current state alive as + long as possible. + + src/cairo-gl-composite.c | 1 - + src/cairo-gl-private.h | 7 ------- + 2 files changed, 0 insertions(+), 8 deletions(-) + +commit 8f675fb801f7864aa52778d4d53d7ab68f4e664b +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:46:52 2010 +0200 + + gl: Stop disabling the vertex array and the array buffer + + src/cairo-gl-composite.c | 12 ++++-------- + src/cairo-gl-device.c | 4 ++++ + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit bef0b541497eb5a621df0b5528e08adb0beff961 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:08:17 2010 +0200 + + gl: Do not reset shaders on _end() + + Instead, keep the shader around until cairo_device_flush() is called. + + src/cairo-gl-composite.c | 35 ++++++++++++++++++++++------------- + src/cairo-gl-device.c | 3 +++ + src/cairo-gl-private.h | 6 ++++++ + 3 files changed, 31 insertions(+), 13 deletions(-) + +commit 534c14729921cbc2f8e24575eb792de9ddb96e23 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 21:06:58 2010 +0200 + + region: clarify docs of cairo_region_equal() + + src/cairo-region.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit 0fc6f08981604ffdd0109362dcbbd9773501cd9a +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 20:45:52 2010 +0200 + + gl: Make _shader_by_type() a getter + + And refactor code to do the current_shader assigning itself. + + src/cairo-gl-composite.c | 16 +++++++++++----- + src/cairo-gl-private.h | 5 +++-- + src/cairo-gl-shaders.c | 13 ++++++++----- + 3 files changed, 22 insertions(+), 12 deletions(-) + +commit 2971ca049881298cd171cf27cd3beb49d2c0572f +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 20:39:22 2010 +0200 + + gl: bind all shader variables at the same place + + Avoids the need to bind the shader when creating it. + + src/cairo-gl-composite.c | 26 ++++++++++++++++++++------ + src/cairo-gl-shaders.c | 11 ----------- + 2 files changed, 20 insertions(+), 17 deletions(-) + +commit e11d8370e0503f085beaa355d85fa6991cd497da +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 17:37:19 2010 +0200 + + gl: Set GL_BLEND and GL_SCISSOR_TEST globally + + Note that we do set them unconditionally in _begin() because a flush + might have cleared them. + + src/cairo-gl-composite.c | 11 +++-------- + src/cairo-gl-device.c | 8 ++++++++ + src/cairo-gl-surface.c | 1 + + 3 files changed, 12 insertions(+), 8 deletions(-) + +commit 7747f6d9146c19419fdc4fbbdf72eed42dfa731d +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 17:19:56 2010 +0200 + + gl: Introduce flush functions + + The flush functions will clear the state that will in the future be kep + unconditionally. + + src/cairo-gl-composite.c | 6 +++--- + src/cairo-gl-device.c | 22 +++++++++++++++++++++- + src/cairo-gl-private.h | 4 ++++ + src/cairo-gl-surface.c | 36 ++++++++++++++++++++++++++++++++---- + 4 files changed, 60 insertions(+), 8 deletions(-) + +commit 5c74beaaa5dedd82f891f1cc109142f7b6e222a8 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 17:19:45 2010 +0200 + + docs: fix typo + + src/cairo-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 92d7b1eee96e6b1448aaf3c95a44238fa0eeff48 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 16:19:12 2010 +0200 + + device: Make flush vfunc return a cairo_status_t + + Mirror the behavior of the surface flush vfunc: Make it return a status + and if it's an error set it on the device. + + src/cairo-device-private.h | 2 +- + src/cairo-device.c | 9 +++++++-- + src/cairo-xml-surface.c | 4 +++- + 3 files changed, 11 insertions(+), 4 deletions(-) + +commit 63e3cf3888d5b55295a04c4af28e876c04245b85 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 15:09:23 2010 +0200 + + gl: Move unsetting the state into the operand destroy function + + src/cairo-gl-composite.c | 43 +++++++++++++++++++++++++++++-------------- + 1 files changed, 29 insertions(+), 14 deletions(-) + +commit b9b85dbf3706fe9e50f40b5fda655e71931c2d7f +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 13:42:11 2010 +0200 + + gl: get rid of the operand's pattern variable + + Now someone just needs to teach cairo-gl to not use + cairo_pattern_acquire_surface() and we could avoid the nasty hack in + cairo_gl_operand_destroy(). + + src/cairo-gl-composite.c | 21 ++++++++++----------- + src/cairo-gl-private.h | 2 -- + 2 files changed, 10 insertions(+), 13 deletions(-) + +commit ae9517a39fdddec389553a64116140e222970ef0 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 13:18:28 2010 +0200 + + gl: Check mask's attributes for component alpha + + ... and don't duplicate that information into the cairo_gl_composite_t + + src/cairo-gl-composite.c | 14 ++++++++------ + src/cairo-gl-private.h | 1 - + 2 files changed, 8 insertions(+), 7 deletions(-) + +commit f72afc09d0b99030f5766e7bbbb05f6db606e195 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 13:14:09 2010 +0200 + + gl: Merge fixed function setup into general texture setup + + src/cairo-gl-composite.c | 84 ++++++++++++++++++--------------------------- + 1 files changed, 34 insertions(+), 50 deletions(-) + +commit dd1faaf02e2a75ca8b9c484abd15726f5c6d3ac4 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 12:54:54 2010 +0200 + + gl: Move function + + I wanna use it elsewhere and keep the diff small. + + src/cairo-gl-composite.c | 58 +++++++++++++++++++++++----------------------- + 1 files changed, 29 insertions(+), 29 deletions(-) + +commit d03800313623fb2b9e7d15c6a659ceaaee2882e8 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 12:51:08 2010 +0200 + + gl: Simplify mask operand setup code + + Component alpha just has one different value + + src/cairo-gl-composite.c | 40 +++++++--------------------------------- + 1 files changed, 7 insertions(+), 33 deletions(-) + +commit e20261dddaa194ab4e980da8681e9378d7fd7ef1 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 12:48:59 2010 +0200 + + gl: Get rid of operand argument to emit functions + + src/cairo-gl-composite.c | 34 +++++++++++++++------------------- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 2 -- + src/cairo-gl-surface.c | 11 +++-------- + 4 files changed, 19 insertions(+), 30 deletions(-) + +commit 8062fb352e6cd1d961f0fbc660779f4ad94c7508 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 11:03:09 2010 +0200 + + gl: Add an enum for tex units + + Instead of hardcoding 0 for source and 1 for mask, use an enum. It's + also clearer when functions take a cairo_gl_tex_t argument instead of a + GLuint. + + src/cairo-gl-composite.c | 20 ++++++++++---------- + src/cairo-gl-private.h | 5 +++++ + src/cairo-gl-shaders.c | 34 ++++++++++++---------------------- + 3 files changed, 27 insertions(+), 32 deletions(-) + +commit 5db362dd6792af20282e0e9a2805ee6f1b921e44 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 28 10:24:33 2010 +0200 + + gl: Keep a copy of the current operand in the context + + Note that they are currently only valid as long as the + cairo_gl_composite_t exists, but that will be changed soon. + + src/cairo-gl-composite.c | 20 ++++++++++++++++---- + src/cairo-gl-private.h | 2 ++ + 2 files changed, 18 insertions(+), 4 deletions(-) + +commit a05f062c806ac014d0daffa1d74bdb0dd90a8a26 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 19:23:18 2010 +0200 + + gl: Move struct definitions in header + + src/cairo-gl-private.h | 66 ++++++++++++++++++++++++------------------------ + 1 files changed, 33 insertions(+), 33 deletions(-) + +commit 85d4c6c55b85c52d8f86247f00659e37354abd49 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 21:23:40 2010 +0200 + + gl: operand->texture.surface cannot be NULL + + src/cairo-gl-composite.c | 10 +++------- + 1 files changed, 3 insertions(+), 7 deletions(-) + +commit 9486ad5fbdad047b5194f6bed68a08bb4c594610 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 19:16:41 2010 +0200 + + gl: Remove composite_t argument from _flush() function + + src/cairo-gl-composite.c | 17 +++++++---------- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 3 +-- + 3 files changed, 9 insertions(+), 13 deletions(-) + +commit 16e420b4dca5325ab295a27103299a916f334b05 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 19:13:53 2010 +0200 + + gl: Remove dependency on composite_t in draw function + + src/cairo-gl-composite.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit e46215ec6b94355b741acf5dfdd264d6396b4bc8 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 18:44:20 2010 +0200 + + gl: Remove unneeded and broken workaround + + We now ensure the values are properly zeroed when setting the operator. + + src/cairo-gl-composite.c | 14 +------------- + 1 files changed, 1 insertions(+), 13 deletions(-) + +commit b2d709b5c7e463437189b8e4a2c53a3317437825 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 17:41:01 2010 +0200 + + gl: Switch src alpha handling to a tiny on/off function + + Instead of doing setup every time, we just set this one flag. Much + nicer. + + src/cairo-gl-composite.c | 22 +++++++--------------- + 1 files changed, 7 insertions(+), 15 deletions(-) + +commit 53fd451f85974d2ed0d6f29a0a0549fd4c7035fe +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 17:32:14 2010 +0200 + + gl: Avoid redundant mask setup + + The mask doesn't change, so no need to set it up twice + + src/cairo-gl-composite.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit 1b3675fc4b9c7f6ad4d9edd9b27bee10c2502b81 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 17:28:05 2010 +0200 + + gl: Split fixed-function operand setup into own function + + src/cairo-gl-composite.c | 151 +++++++++++++--------------------------------- + 1 files changed, 42 insertions(+), 109 deletions(-) + +commit 02da871050f6be02ba0231e545d6613a42c3a7e6 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 17:02:29 2010 +0200 + + gl: Unify fixed function setup code + + src/cairo-gl-composite.c | 15 ++++----------- + 1 files changed, 4 insertions(+), 11 deletions(-) + +commit 74f9094162fba54c29859e25ad5be085604aa0b6 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 15:46:39 2010 +0200 + + gl: switch OPERAND0 and OPERAND1 in the fixed function path + + This should not change anything as we multiply the values. + But it allows unifying parts of the code, which will happen in another + patch. + + src/cairo-gl-composite.c | 42 +++++++++++++++++++++--------------------- + 1 files changed, 21 insertions(+), 21 deletions(-) + +commit c6aac5d0134f1473d3867c1b6a4b40753700ffcb +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 15:42:56 2010 +0200 + + gl: Move the pre shader to the context, too + + It's required when flushing, too. + + src/cairo-gl-composite.c | 10 +++++----- + src/cairo-gl-private.h | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 61bc3067ca5fa4aeaef537c397c37826facc7621 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 15:28:32 2010 +0200 + + gl: Store the clip region in the context + + This is necessary because we want to get rid of keeping the composite + stuff around. + + src/cairo-gl-composite.c | 15 ++++++++++----- + src/cairo-gl-device.c | 2 ++ + src/cairo-gl-private.h | 1 + + 3 files changed, 13 insertions(+), 5 deletions(-) + +commit db79880d9a836d50e9202caa5c73e22a2b6b97b3 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 13:03:12 2010 +0200 + + gl: Make gl_composite_begin() acquire the context + + Also remove the previous places for context acquisition. This completes + fixing the potential ABBA deadlock I talked about a few commits ago. + + src/cairo-gl-composite.c | 21 +++++++++++++++++---- + src/cairo-gl-glyphs.c | 7 ++++++- + src/cairo-gl-private.h | 4 ++-- + src/cairo-gl-surface.c | 26 +++++--------------------- + 4 files changed, 30 insertions(+), 28 deletions(-) + +commit 1320a168fa5b73fd42438040a4bf8ee9ad222a0e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 12:26:49 2010 +0200 + + gl: Remove unused code + + We don't need to acquire/release the context, we're not using it. + + src/cairo-gl-glyphs.c | 11 +---------- + 1 files changed, 1 insertions(+), 10 deletions(-) + +commit 8f5c3b706b5bad6b0851a3e27752f7d1a3ca8a72 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 12:16:01 2010 +0200 + + gl: Make composite_set_clip_region not require the context + + src/cairo-gl-composite.c | 3 +-- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 3 +-- + src/cairo-gl-surface.c | 2 +- + 4 files changed, 4 insertions(+), 6 deletions(-) + +commit ac6abcbac7f79e5717c44e251135dcba8ab00b27 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 12:14:24 2010 +0200 + + gl: Make composite_set_source/mask/mask_spans not require a context + + src/cairo-gl-composite.c | 77 ++++++++++++++++++++++++---------------------- + src/cairo-gl-glyphs.c | 5 +-- + src/cairo-gl-private.h | 9 ++--- + src/cairo-gl-surface.c | 13 +++---- + 4 files changed, 51 insertions(+), 53 deletions(-) + +commit 88a70d66fcdbca7e489baa48cd145bb69c3e28e0 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 11:59:36 2010 +0200 + + gl: Add API for querying if we need GL_TEXTURE_RECTANGLE_EXT + + We need to do that querying outside of taking the lock, so we want to be + able to query the device, not the context. + + src/cairo-gl-composite.c | 11 +++++------ + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 6 ++++++ + 3 files changed, 12 insertions(+), 7 deletions(-) + +commit 9c6e1338a1c7d61b4cc84bcdc5c38573a34cd561 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 26 11:36:22 2010 +0200 + + gl: Make cairo_gl_composite_t not require a gl context anymore + + First patch in a series. + + The idea is to make all gl operations in Cairo work like this: + 1) prepare cairo_gl_composite_t + 2) acquire device + 3) begin composite operation + 4) emit vertexes + 5) end operation + 6) release device + 7) cleanup composite operation + + This both reduces the time required with the device locked, cleans the + API and more importantly avoids ABBA deadlocks, as we currently call + acquire_pattern() with the device lock held. + + src/cairo-gl-composite.c | 6 ++---- + src/cairo-gl-glyphs.c | 7 +++---- + src/cairo-gl-private.h | 6 ++---- + src/cairo-gl-surface.c | 19 ++++++++----------- + 4 files changed, 15 insertions(+), 23 deletions(-) + +commit 60f0cb9c60556f94af903dd6f9da0628a05a1f7f +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 22 18:42:44 2010 +0200 + + gl: Flush surface at the right times + + src/cairo-gl-composite.c | 2 ++ + src/cairo-gl-device.c | 2 ++ + src/cairo-gl-surface.c | 2 ++ + 3 files changed, 6 insertions(+), 0 deletions(-) + +commit ffeeae462ea0f8c7af326f3bcc66b88881bd8fdd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 6 16:50:34 2010 +0100 + + Revert "gstate: reduce a couple more operators" + + This reverts commit a85c6c1e36273d534f01ade0714b0592b6bed5ab. + + Soeren found that this introduced a regression when displaying pages in + evince, and since I'm not overly enthralled at the added complexity here + for very little gain, remove the reduction and leave it clear for a more + complete solution in the future. + + src/cairo-gstate.c | 15 +-------------- + 1 files changed, 1 insertions(+), 14 deletions(-) + +commit 44e628a6f4e6b9b21ad67b08869186a779d0db5a +Author: Makoto Kato <m_kato@ga2.so-net.ne.jp> +Date: Mon May 31 18:22:40 2010 +0900 + + openvg: fix build break + + src/cairo-vg-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit cc080a1e2731a42045709d789587070da944145c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 27 20:51:55 2010 +0100 + + gl: Unmap the vertex buffer prior to using in DaawArrays() + + "It is an INVALID_OPERTION error to source data from a buffer object + that is currently mapped." + + mesa is currently lax in this regard, but the Nvidia libGL conforms to + the spec and thus was causing failures. + + src/cairo-gl-composite.c | 23 ++++++++++++----------- + 1 files changed, 12 insertions(+), 11 deletions(-) + +commit b3e15bd5c307352065555c6c3ae5f0bd15b9a791 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 27 18:43:03 2010 +0100 + + gl: _cairo_set_shader_by_type() cannot return UNSUPPORTED + + So remove the superfuous test. + + src/cairo-gl-composite.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 59bd34e6a3661483f60bb01be8b406a5c38e1131 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 27 18:35:40 2010 +0100 + + gl: Check for an error device when creating surfaces. + + src/cairo-gl-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 53f086105975c1c2bd4c43a1b0613ebde3580e95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 27 18:27:53 2010 +0100 + + gl: Make _cairo_gl_shader_(init|compile) static + + Only used within _cairo_gl_shaders.c, so remove the private symbol. + + src/cairo-gl-private.h | 10 ---------- + src/cairo-gl-shaders.c | 41 +++++++++++++++++++++++++---------------- + 2 files changed, 25 insertions(+), 26 deletions(-) + +commit dd0866cdc878a0be438a117051ccc64f12f81970 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 27 17:52:11 2010 +0100 + + boilerplate: Exercise RENDER capable windows. + + Ensure that the drivers actually work when rendering to a normal window. + + boilerplate/cairo-boilerplate-xlib.c | 107 ++++++++++++++++++++++++++++++++++ + 1 files changed, 107 insertions(+), 0 deletions(-) + +commit 2dc42af9422a15f902934a53c074e4194991a9e4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 17 16:32:20 2010 +0100 + + script: Update csi-exec to match new interface. + + util/cairo-script/csi-exec.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 2f0f4ed0e2ae5657dedfe180b7be3a2496753ba8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 20 21:54:51 2010 +0100 + + freed-pool: Don't access beyond the end of the array. + + Argh. This bug has been here for quite some time and only showed itself + with a corrupt pointer on ppc32. Since the erroneous write is inside the + block, it remained undetected by valgrind. + + src/cairo-freed-pool-private.h | 8 +++++--- + src/cairo-freed-pool.c | 4 +++- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 97b4aeba44e5f4b23b3ed417b991570b46d4736e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 20 21:54:16 2010 +0100 + + atomic: Add memory barriers if required for intel primitives + + src/cairo-atomic-private.h | 16 ++++++++++++++++ + 1 files changed, 16 insertions(+), 0 deletions(-) + +commit 24e684c267404528b40fa49b55272d73bd44167d +Author: Benjamin Otte <otte@gnome.org> +Date: Thu May 20 22:37:18 2010 +0200 + + gl: spans need the dummy texture + + Thanks Eric. That took me half a day. + + src/cairo-gl-composite.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d7a564d8eed32b4417fdb4c8c5d91467e4ae1019 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 20 22:10:06 2010 +0200 + + gl: Don't set is_clear + + 1) It's wrong. + 2) The core functions set the flag correctly already. + + src/cairo-gl-surface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit f9cf07b126293d00df085d4fbfa337e1132e0258 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 20 16:08:38 2010 +0200 + + gl: Fix coverage passing for spans not being endian safe. + + src/cairo-gl-composite.c | 29 ++++++++++++++++------------- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-surface.c | 4 ++-- + 3 files changed, 19 insertions(+), 16 deletions(-) + +commit 2a0f34c6da2eb4f10b198d04894fc1413352e041 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 20 11:23:18 2010 +0200 + + gl: Allow NONE and SPANS sampler for source, too + + src/cairo-gl-shaders.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 1586f7740ad436447ac75c6b869da7446172a63c +Author: Benjamin Otte <otte@gnome.org> +Date: Thu May 20 13:17:52 2010 +0200 + + gl: Refactor fixed function setup code + + In particular get rid of the _cairo_gl_set_tex_combine_constant_color() + function by inlining it and move common glTexEnv calls out of the + switch statement. + + src/cairo-gl-composite.c | 130 ++++++++++++++++----------------------------- + 1 files changed, 46 insertions(+), 84 deletions(-) + +commit 4889090c76bdab5e4eb887593caf5d5a34f90864 +Author: Benjamin Otte <otte@gnome.org> +Date: Thu May 20 12:13:43 2010 +0200 + + gl: set the active texture before fiddling with with glTexEnv + + fixes the fixed function pipeline + + src/cairo-gl-composite.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 3cff2da912150868390bf4b9df166c88b3dfcf2e +Author: Benjamin Otte <otte@gnome.org> +Date: Thu May 20 12:03:18 2010 +0200 + + gl: Remove unused variables + + src/cairo-gl-composite.c | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) + +commit 4c7dd1be4526c85b47f1fe1d4663e7fbec0926b1 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 22:03:18 2010 +0200 + + gl: Move vertex array setup code into the texture setup code + + src/cairo-gl-composite.c | 35 ++++++++++++++--------------------- + 1 files changed, 14 insertions(+), 21 deletions(-) + +commit d9d5976bdf333a5a7ea7707bc3076696f3c079d2 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 21:54:32 2010 +0200 + + gl: Add an assertion that a context cannot call _begin() twice + + Evert _begin() call must be followed by an _end() call to avoid any + nastiness. Just like GL. :) + + src/cairo-gl-composite.c | 2 ++ + src/cairo-gl-private.h | 7 +++++++ + 2 files changed, 9 insertions(+), 0 deletions(-) + +commit 5b8b1fe1cb692530b40db330c3040cd85a8b6bd7 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 21:10:26 2010 +0200 + + gl: Move vertex buffer handling from setup into context + + We can only emit one vertex buffer at a time anyway. + + src/cairo-gl-composite.c | 34 ++++++++++++++++++---------------- + src/cairo-gl-private.h | 8 ++++---- + 2 files changed, 22 insertions(+), 20 deletions(-) + +commit 0d5f2eab77f055b063538dcd345a1e0db480f3bc +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 20:49:49 2010 +0200 + + gl: Actuall do fall back to fixed function paths. + + Previously we were just returning UNSUPPORTED all the time. I guess that + explains why my code got so slow... + + src/cairo-gl-composite.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit bb7ca71c1af416ca084f03089f5fe762403635dd +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 20:47:31 2010 +0200 + + gl: Don't store the shader in the composite_t anymore + + Now that we have ctx->current_shader, there's no need to keep it in the + composite setup code. + + src/cairo-gl-composite.c | 30 ++++++++++++++---------------- + src/cairo-gl-private.h | 10 ++++------ + src/cairo-gl-shaders.c | 16 ++++++---------- + 3 files changed, 24 insertions(+), 32 deletions(-) + +commit 6c477b4a945a8f8b866bb2f5e125d4a0328d05f4 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 20:10:19 2010 +0200 + + gl: Move shader checking in the TexEnv setup code + + As the previously generic setup code only contains non-shader code now, + we can check in advance that no shader is in use and do all the other + stuff without checks. + + src/cairo-gl-composite.c | 208 ++++++++++++++++++++++------------------------ + 1 files changed, 101 insertions(+), 107 deletions(-) + +commit 73262edd8201de8ab8a01e01f83af5b5d6470f9e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 19:25:03 2010 +0200 + + gl: Move texture setup code into its own file + + This ensures textures don't need to be (re)set when doing component + alpha and running 2 shaders. + + src/cairo-gl-composite.c | 208 ++++++++++++++++++++-------------------------- + 1 files changed, 92 insertions(+), 116 deletions(-) + +commit 970c879dd897019f90b0c8ff5a18781be4935c55 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 18:34:00 2010 +0200 + + gl: Binding variables only works for the current shader + + So make the code reflect that. + + src/cairo-gl-composite.c | 27 ++++++++++++--------------- + src/cairo-gl-private.h | 6 ------ + src/cairo-gl-shaders.c | 22 ++++++++-------------- + 3 files changed, 20 insertions(+), 35 deletions(-) + +commit 065969d78f23c634ebcb2b931cbb1fe184f2cedf +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 18:21:06 2010 +0200 + + gl: Separate binding to shaders from setting operands + + That way we only need to bind to shaders when creating them, but not + everytime we switch shaders on text output. + + src/cairo-gl-composite.c | 156 +++++++++++++++++++++++----------------------- + src/cairo-gl-shaders.c | 2 +- + 2 files changed, 79 insertions(+), 79 deletions(-) + +commit c53f7778bcf274f64f801ef9ee1641a088842f60 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 16:50:57 2010 +0200 + + gl: Use the mask, not the source + + Not that we'd ever have constant color component-alpha masks, but that's + an entirely different topic. + + src/cairo-gl-composite.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 26e8e506b66022910c262da0618ef5be8c5a080e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 13:19:56 2010 +0200 + + gl: Add _cairo_gl_surface_is_texture() + + It's more explicit then just checking surface->fb != 0 + Also, it makes improving that check easier. + + src/cairo-gl-device.c | 4 ++-- + src/cairo-gl-private.h | 6 ++++++ + src/cairo-gl-surface.c | 11 ++++++----- + 3 files changed, 14 insertions(+), 7 deletions(-) + +commit e4cb46b50015f792b0e8c7b49f3b42f2c3c0ad00 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 12:10:10 2010 +0200 + + gl: Implement texture upload to window with composite() + + Instead of custom code that does basically the same thing, use + a temporary surface and _cairo_gl_surface_composite() to upload images. + + src/cairo-gl-shaders.c | 2 +- + src/cairo-gl-surface.c | 131 +++++++++++++++++------------------------------ + 2 files changed, 49 insertions(+), 84 deletions(-) + +commit 7c8759e279f51ea722c07e4b0c70f4a49f34393d +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 11:46:12 2010 +0200 + + gl: cache the current shader in the context + + src/cairo-gl-private.h | 4 +++- + src/cairo-gl-shaders.c | 7 +++++++ + 2 files changed, 10 insertions(+), 1 deletions(-) + +commit 6864ca6c25aa8147a562d7f693a95025dde807a8 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 19 11:10:11 2010 +0200 + + gl: Move _cairo_gl_set_operator() to the file it's used in + + Also make it a private function. + + src/cairo-gl-composite.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 4 --- + src/cairo-gl-surface.c | 57 ---------------------------------------------- + 3 files changed, 57 insertions(+), 61 deletions(-) + +commit 0d2d4c59026c31da084e6797d109a230341b396d +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 21:56:55 2010 +0200 + + gl: Detect color-pattern clears of surfaces + + ... and use glClear() there. + + The common case here is a solid color and OPERATOR_OVER. + + src/cairo-gl-private.h | 3 --- + src/cairo-gl-surface.c | 38 +++++++++++++++++++++++++++++--------- + 2 files changed, 29 insertions(+), 12 deletions(-) + +commit b70eb275c4aa54f7c90a985b5de67da12ac08a30 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 21:56:18 2010 +0200 + + gl: detect image uploads and fast-path them + + src/cairo-gl-surface.c | 23 +++++++++++++++++++++++ + 1 files changed, 23 insertions(+), 0 deletions(-) + +commit 8adbf3aa19fd9fb8200973ecd72cdebfd9a5364d +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 20:12:44 2010 +0200 + + gl: Use _cairo_gl_surface_draw_image() when caching glyphs + + src/cairo-gl-glyphs.c | 47 ++++++++--------------------------------------- + 1 files changed, 8 insertions(+), 39 deletions(-) + +commit 915aa64ef077fe3b6094d0f1c8bd87ab5acc4868 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 13:01:30 2010 +0200 + + gl: Actually check errors for _cairo_gl_composite_begin() + + src/cairo-gl-glyphs.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 0222cc7d76b0dc724630b660687f98a2460eb0b9 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 13:00:34 2010 +0200 + + gl: Get rid of _cairo_gl_composite_set_mask_texture() + + Now that the glyph cache contains real surfaces, there's no longer a + need to have a special function for it. + + src/cairo-gl-composite.c | 16 ---------------- + src/cairo-gl-glyphs.c | 15 ++++++++------- + src/cairo-gl-private.h | 6 ------ + 3 files changed, 8 insertions(+), 29 deletions(-) + +commit 208d9f2a7e1f66ff2764c41fe67f65e27279b2ab +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 12:49:59 2010 +0200 + + gl: Make glyph cache a real surface + + This has the huge advantage that we can use real surface functions on + it. + + src/cairo-gl-glyphs.c | 67 ++++++++++++++++++------------------------------ + src/cairo-gl-private.h | 3 +- + 2 files changed, 26 insertions(+), 44 deletions(-) + +commit 050117996339cfe35add1f2cd44d0e5578d4a981 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 18 12:02:54 2010 +0200 + + surface: Add _cairo_surface_release_device_reference() API + + See the API documentation for that function about its intended purpose. + + src/cairo-surface-private.h | 1 + + src/cairo-surface.c | 26 +++++++++++++++++++++++++- + src/cairoint.h | 3 +++ + 3 files changed, 29 insertions(+), 1 deletions(-) + +commit c489f67d1d1d6079f9b58b726ed42beea1dfc44e +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 20:45:42 2010 +0200 + + gl: Make a bunch of functions static + + They are no longer used outside of cairo_gl_composite_t. + + src/cairo-gl-composite.c | 8 ++++---- + src/cairo-gl-private.h | 16 ---------------- + 2 files changed, 4 insertions(+), 20 deletions(-) + +commit c8008e118a54d62690d6555c9ffabf734c39e69f +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 19:16:20 2010 +0200 + + gl: Don't name the union in cairo_gl_operand_t + + Gets rid of ultra-long variable names. + + src/cairo-gl-composite.c | 152 +++++++++++++++++++++++----------------------- + src/cairo-gl-private.h | 2 +- + 2 files changed, 77 insertions(+), 77 deletions(-) + +commit 53260148ea9abacdc510826765c1d63f486add6c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri May 14 21:04:22 2010 +0200 + + quartz: fix repeating radial gradients on 64 bits + + Quartz API uses the type CGFloat, which is double on 64 bits, + float on 32 bits architectures + + src/cairo-quartz-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0104976dc853b60de14080a749a6f729852f1b22 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri May 14 21:03:19 2010 +0200 + + quartz: silence compiler warnings + + All the possible enum values have to be explicitly handled in switch statements. + + src/cairo-quartz-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ac94a00a4d3acb36f011330b78d1311534fe90e0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri May 14 19:33:15 2010 +0200 + + quartz: fallback for A1 images on little endian archs + + Quartz uses a bit ordering that is consistent with cairo on big + endian architectures, but isn't on little endian architectures. + + Fixes a1-mask and large-source-roi (on little endian) + + src/cairo-quartz-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit f40e3b09a130a9ccbe310120fd5cfc7ad7828a4d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu May 13 12:15:19 2010 +0200 + + quartz-font: Silence 0x0 CGContext warning + + Silence Quartz complaints about operations on empty contexts: + <Error>: CGContextSetFont: invalid context 0x0 + <Error>: CGContextSetFontSize: invalid context 0x0 + <Error>: CGContextSetTextMatrix: invalid context 0x0 + <Error>: CGContextSetAlpha: invalid context 0x0 + <Error>: CGContextShowGlyphsAtPoint: invalid context 0x0 + + src/cairo-quartz-font.c | 77 +++++++++++++++++++++++++--------------------- + 1 files changed, 42 insertions(+), 35 deletions(-) + +commit 1687e6169463947554f5476674a577e67e2c543b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu May 13 11:54:32 2010 +0200 + + quartz-font: Conform context and antialias handling to quartz-surface + + A8 surfaces are now kAlphaOnly surfaces in quartz-font too. + Subpixel font smoothing can be enabled. + + src/cairo-quartz-font.c | 38 ++++++++++++++++++++++++++++---------- + 1 files changed, 28 insertions(+), 10 deletions(-) + +commit d68bbc0fe5706634e4c025bdcb311905b7f008e4 +Author: Benjamin Otte <otte@gnome.org> +Date: Mon May 17 20:57:08 2010 +0200 + + gl: Add missing NULL-check in non-shader code + + src/cairo-gl-composite.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 7f22372edf10f5eab53ea132d9226f6d5b49eb9a +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 14:20:17 2010 +0200 + + gl: Get rid of src and mask argument to composite_init() + + This was thought of as a way to detect self-painting, but it's better to + check that later in _begin() - when we check it. + + src/cairo-gl-composite.c | 2 -- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 2 -- + src/cairo-gl-surface.c | 9 ++++----- + 4 files changed, 5 insertions(+), 10 deletions(-) + +commit 75f15babed8409fb1eaae514411de01d57072c80 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 14:17:47 2010 +0200 + + gl: Implement fill_rectangles with composite + + Tiny performance improvement, but a lot less code. + + src/cairo-gl-surface.c | 204 ++++++++++-------------------------------------- + 1 files changed, 41 insertions(+), 163 deletions(-) + +commit e7c5b4f79fa24b75026c93bc9244115d2ee23930 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 13:56:22 2010 +0200 + + gl: make _set_mask() accept NULL + + That way, it can be used to unset the mask. + + src/cairo-gl-composite.c | 3 +++ + src/cairo-gl-surface.c | 14 ++++++-------- + 2 files changed, 9 insertions(+), 8 deletions(-) + +commit 145db7a427e594f1d68a6c0f4afe5e365e219cf0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 17 12:37:46 2010 +0100 + + gl: Check status after composite_begin + + Skip the unnecessary work in _cairo_gl_surface_composite() if we fail + to setup the GL composite operation. + + src/cairo-gl-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 8695c41e80ce932fd5dd434307b92f323a937c7c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 17 12:36:54 2010 +0100 + + gl: Throw a _cairo_error when detecting a GLerror + + This allows us to easily set an breakpoint and inspect cairo's state + when we do something illegal. + + src/cairo-gl-private.h | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 1c18ab02c8d41be8e5886cbb34aeda5099189fef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 17 11:42:26 2010 +0100 + + gl: Rename cairo_gl_shader_program_t to cairo_gl_shader_t + + And complete the move of the shaders into the cairo_gl_shader namespace. + Of particular note, the bind_*_to_shader become + _cairo_gl_shader_bind_*() and have proper types. + + src/cairo-gl-composite.c | 138 +++++++------- + src/cairo-gl-device.c | 14 +- + src/cairo-gl-private.h | 93 +++++---- + src/cairo-gl-shaders.c | 508 +++++++++++++++++++++++++-------------------- + src/cairo-gl-surface.c | 54 ++---- + 5 files changed, 424 insertions(+), 383 deletions(-) + +commit 2325d755b03958d8ead9a995c0d1d03e4f93af0c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 17 10:33:46 2010 +0100 + + gl: Pretty print the error GLenum. + + src/cairo-gl-private.h | 3 ++- + src/cairo-gl-surface.c | 19 +++++++++++++++++++ + 2 files changed, 21 insertions(+), 1 deletions(-) + +commit 7ef1bd22ded512f4fad3959796d7f40c4ddc5824 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 01:12:34 2010 +0200 + + gl: Update copyright statements + + - add 2010 Red Hat copyright for my code + - include myself as author + - update contributors list + + src/cairo-gl-composite.c | 5 ++++- + src/cairo-gl-device.c | 5 ++++- + src/cairo-gl-glyphs.c | 5 +++++ + src/cairo-gl-private.h | 6 ++++-- + src/cairo-gl-shaders.c | 8 +++++++- + src/cairo-gl-surface.c | 5 ++++- + 6 files changed, 28 insertions(+), 6 deletions(-) + +commit 0b69e51b526a609a2dc5f1d2fb9c49f240feb57b +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 00:56:21 2010 +0200 + + gl: Assert that binding values to shaders never fails + + As that would be a programming error, we can use an assert and get rid + of return values that we weren't checking anyway. + + src/cairo-gl-composite.c | 129 +++++++++++++++++++--------------------------- + src/cairo-gl-private.h | 12 ++-- + src/cairo-gl-shaders.c | 114 ++++++++++++++++------------------------- + src/cairo-gl-surface.c | 15 +++--- + 4 files changed, 111 insertions(+), 159 deletions(-) + +commit 0bb11e8f5bcdc8a6f8384197b39c2ad48eaab1cd +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 17 00:49:01 2010 +0200 + + gl: Use GL_TRIANGLES instead of GL_QUADS + + It seems to increase performance by 1-2% on average and up to 30% in + some cases (on i965). + + src/cairo-gl-composite.c | 16 +++++++++++----- + 1 files changed, 11 insertions(+), 5 deletions(-) + +commit 2b771da47a87f86f378314bfe8033874d9444914 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 23:58:47 2010 +0200 + + xlib: ensure variable isn't uninitialized + + src/cairo-xlib-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit b768a33a602942825e5ec651ae7bafd6d5fc33ac +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 21:10:45 2010 +0200 + + gl: Set composite->has_component_alpha based on mask + + Previously it was set when initing the composite structure, but that + doesn't allow resetting it when a new mask is used. + + src/cairo-gl-composite.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 1cde4601df8a3689450e2a0e15888c53aff12983 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 21:05:16 2010 +0200 + + gl: Replace _cairo_gl_operand_init() with setters for src/mask + + Now cairo_gl_operand_t is no longer exposed outside of + cairo-gl-composite.c + + src/cairo-gl-composite.c | 34 +++++++++++++++++++++++++++++++++- + src/cairo-gl-glyphs.c | 10 +++++----- + src/cairo-gl-private.h | 25 ++++++++++++++++--------- + src/cairo-gl-surface.c | 26 +++++++++++++------------- + 4 files changed, 67 insertions(+), 28 deletions(-) + +commit 6575cb7a95e109ab39eda58603ed6a76581a41b0 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 20:39:00 2010 +0200 + + gl: Convert glyphs path to use cairo_gl_composite_t + + src/cairo-gl-composite.c | 122 +++++++++++++----- + src/cairo-gl-glyphs.c | 331 +++++---------------------------------------- + src/cairo-gl-private.h | 22 +++ + 3 files changed, 150 insertions(+), 325 deletions(-) + +commit 8937f2b4b5e4bcb8ada1e478df6a7329c0b80a5a +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 13:19:48 2010 +0200 + + gl: Require ARB_vertex_buffer_object extension unconditionally + + <anholt> we shouldn't bother with non-vbo support. there's no + justification for a driver not supporting it. + + src/cairo-gl-composite.c | 1 - + src/cairo-gl-device.c | 5 +++-- + src/cairo-gl-glyphs.c | 3 --- + src/cairo-gl-private.h | 7 ------- + src/cairo-gl-surface.c | 12 ++++-------- + 5 files changed, 7 insertions(+), 21 deletions(-) + +commit 29dfd5b488e16ec8be879b2415635df93b874afc +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 03:36:05 2010 +0200 + + gl: Remove unused variables + + src/cairo-gl-surface.c | 7 +------ + 1 files changed, 1 insertions(+), 6 deletions(-) + +commit 4144488f516214b675d25d48add8cbd83fd17025 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 03:29:04 2010 +0200 + + gl: Convert span renderer to use cairo_gl_composite_begin/end() + + Adds two new APIs to the composite API: + - _cairo_gl_composite_set_mask_spans() + Tells the composite renderer to use the color values for spans. + - _cairo_gl_composite_set_clip_region() + Tells the composite renderer to use GL_SCISSORS_TEST to clip when + drawing. This function is very unperformant, so if it can be avoided, + it probably shouldn't be used. + + src/cairo-gl-composite.c | 72 +++++++++++++- + src/cairo-gl-private.h | 10 ++ + src/cairo-gl-surface.c | 247 ++++++---------------------------------------- + 3 files changed, 110 insertions(+), 219 deletions(-) + +commit 6e81d85e3682f14e1c5dbe97dda2cc1fcd32df3a +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 03:27:28 2010 +0200 + + gl: Change _cairo_gl_composite_emit_rect() + + Two changes: + - The function now takes x1/y1,x2/y2 instead of x,y,width,height + - The function takes a color uint32_t. This will be used by spans. + + src/cairo-gl-composite.c | 27 +++++++++++++++------------ + src/cairo-gl-private.h | 9 +++++---- + src/cairo-gl-surface.c | 10 ++++++---- + 3 files changed, 26 insertions(+), 20 deletions(-) + +commit f8398cc2d83eb9ac37874f71d4f8805dbf0df412 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 02:34:18 2010 +0200 + + gl: remove unused variables from span renderer + + src/cairo-gl-surface.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit f5c5077def47b91b57dfbc8c2622b4aaf5ca8fbb +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 02:06:43 2010 +0200 + + gl: Support component alpha in gl_composite_t + + Use that to get rid of cairo_gl_surface_composite_component_alpha() + + src/cairo-gl-composite.c | 165 ++++++++++++++++++++++++++-- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 4 + + src/cairo-gl-surface.c | 280 +--------------------------------------------- + 4 files changed, 167 insertions(+), 284 deletions(-) + +commit 88c118f891ca9ba472b8acff33829de845bb507c +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 16 00:24:17 2010 +0200 + + gl: Implement _composite_emit_rect() and _composite_end() + + And use it in cairo_gl_surface_composite() + + src/cairo-gl-composite.c | 164 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 19 +++++ + src/cairo-gl-surface.c | 107 +++--------------------------- + 3 files changed, 192 insertions(+), 98 deletions(-) + +commit b96735f7b465a16182c4c8555878ba16b947e8f9 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 22:12:12 2010 +0200 + + gl: Add _cairo_gl_composite_begin() function + + This is the first step at adding the following function set: + _cairo_gl_composite_begin() + _cairo_gl_composite_emit_*() + _cairo_gl_composite_end() + which will take care of proiding a unified model for emitting vertexes + using vbos instead of the 5 different methods we currently have. + + src/cairo-gl-composite.c | 30 ++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 6 ++++++ + src/cairo-gl-surface.c | 22 +--------------------- + 3 files changed, 37 insertions(+), 21 deletions(-) + +commit 211a8b8234d24dd8e00332cb0b0e625ac1ffef58 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 21:27:58 2010 +0200 + + gl: make _cairo_operand_destroy private + + src/cairo-gl-composite.c | 2 +- + src/cairo-gl-private.h | 3 --- + 2 files changed, 1 insertions(+), 4 deletions(-) + +commit bf1060252abaa97eb5ce149f8b99055b42096c67 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 21:26:55 2010 +0200 + + gl: make show_glyphs use the cairo_composite_t API + + src/cairo-gl-glyphs.c | 17 ++++++++++------- + 1 files changed, 10 insertions(+), 7 deletions(-) + +commit 948290de12c5f451d361903f0f52e0cde5527180 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 20:33:00 2010 +0200 + + gl: Make the span renderer use the new composite APIs + + src/cairo-gl-surface.c | 32 ++++++++++++++++++++------------ + 1 files changed, 20 insertions(+), 12 deletions(-) + +commit 7ad8c3b45691ce0c8a86180bb3c1117b9a9980c0 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 20:07:44 2010 +0200 + + gl: Move composite code into own file + + This allows designing a cleaner interface for cairo_composite_t as there + will not be static functions that get called outside of the "published" + interfaces. + + src/Makefile.sources | 3 +- + src/cairo-gl-composite.c | 898 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 8 + + src/cairo-gl-surface.c | 851 +------------------------------------------- + 4 files changed, 910 insertions(+), 850 deletions(-) + +commit 3ff32b00f0f85a853163c20b101ac5dd6a07da77 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 18:20:56 2010 +0200 + + gl: cairo_gl_compsite_setup_t => cairo_gl_composite_t + + src/cairo-gl-glyphs.c | 4 ++-- + src/cairo-gl-private.h | 26 +++++++++++++------------- + src/cairo-gl-surface.c | 46 +++++++++++++++++++++++----------------------- + 3 files changed, 38 insertions(+), 38 deletions(-) + +commit c16edee26fb9f1669ee0ce1a61f0c54d802c6c7b +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 15 17:33:24 2010 +0200 + + gl: use glBlendFuncSeparate() + + This way we can treat alpha-only textures correctly and don't have to + emit different shaders for it. Also gets rid of + GL_OPERAND_TEXTURE_ALPHA. + + src/cairo-gl-glyphs.c | 9 +++------ + src/cairo-gl-private.h | 1 - + src/cairo-gl-shaders.c | 37 ------------------------------------- + src/cairo-gl-surface.c | 37 +++++++++++++------------------------ + 4 files changed, 16 insertions(+), 68 deletions(-) + +commit 4f5221a834a883262cce607d247f607d6c200363 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 21:12:37 2010 +0200 + + gl: acquire device manually in finish, as the default way will error + + We'll get CAIRO_STATUS_DEVICE_FINISHED, d'oh + + src/cairo-gl-device.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +commit 3f6300444928d12bf4a6e2f6f2c5fec1de7dba8e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 20:53:20 2010 +0200 + + gl: Put shaders into a cache + + This allows to grow the complexity of the shaders without enlarging the + static array to unreasonable sizes. + + The cache size of 64 is essentially random. + + src/cairo-gl-device.c | 2 + + src/cairo-gl-private.h | 8 ++- + src/cairo-gl-shaders.c | 111 ++++++++++++++++++++++++++++++++++++++++-------- + 3 files changed, 100 insertions(+), 21 deletions(-) + +commit 08b04caf52518f1672694341355b5f5418008e78 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 18:10:04 2010 +0200 + + gl: Add cairo_gl_composite_setup_init/fini() functions + + Simplifies the main code paths, and can be extended to do dest copies. + + src/cairo-gl-private.h | 13 +++++++ + src/cairo-gl-surface.c | 91 +++++++++++++++++++++++++++-------------------- + 2 files changed, 65 insertions(+), 39 deletions(-) + +commit aa14df0db5e4f236a9668ceda4e148e7d3ba0e9f +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 17:01:47 2010 +0200 + + gl: move operator check + + component alpha compositing checks the operator itself + + src/cairo-gl-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit a3ee0a7f113ed38df66580ff7e38a79759b0c933 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 16:57:32 2010 +0200 + + gl: Programmatically generate fragment shaders + + src/cairo-gl-shaders.c | 428 +++++++++++++++++++++--------------------------- + src/cairo-gl-surface.c | 6 +- + 2 files changed, 186 insertions(+), 248 deletions(-) + +commit fe43b13052f7063f880aeeebda1880a6a2097922 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 13:57:06 2010 +0200 + + gl: Automatically generate the vertex shader source + + The idea is being able to generate shaders from the given input + on-demand. This allows creating more advanced shaders, such as those + that include the destination (for self-painting and + unsupported-by-blending operator) or painting images in weird formats + (extra translation step in shader, think YUV). + + src/cairo-gl-device.c | 2 +- + src/cairo-gl-private.h | 21 +++--- + src/cairo-gl-shaders.c | 195 +++++++++++++++++++++++++++++------------------- + src/cairo-gl-surface.c | 3 +- + 4 files changed, 132 insertions(+), 89 deletions(-) + +commit 405eee07ad9a5bc325b339b8588facb905fb28f5 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 00:02:28 2010 +0200 + + gl: Get rid of cairo_gl_shader_source/mask_t + + Use the cairo_gl_operand_type_t instead. Those enums are pretty much + identical. + + src/cairo-gl-glyphs.c | 13 +++-- + src/cairo-gl-private.h | 67 ++++++++------------- + src/cairo-gl-shaders.c | 60 ++++++++++--------- + src/cairo-gl-surface.c | 153 +++++++++++++++++++++++++++++------------------- + 4 files changed, 157 insertions(+), 136 deletions(-) + +commit 5149bb87d7b547766ce6ff4976217454adbab562 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 11 21:35:13 2010 +0200 + + gl: s/_cairo_gl_set_destination/_cairo_gl_context_set_destination/ + + It's an operation on the context, so name it accordingly + + src/cairo-gl-device.c | 2 +- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-surface.c | 16 ++++++++-------- + 4 files changed, 11 insertions(+), 11 deletions(-) + +commit 9f34e403f38192d711304fbde4dedbaa8e15fd6e +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 11 13:15:16 2010 +0200 + + gl: Share vertex shaders + + Previously, we created a new vertex shader for every shader program we + used. Now the code shares identical vertex shaders between programs. + + src/cairo-gl-device.c | 17 ++++- + src/cairo-gl-private.h | 27 ++++++-- + src/cairo-gl-shaders.c | 179 +++++++++++++++++++++++++++-------------------- + src/cairo-gl-surface.c | 7 +-- + 4 files changed, 142 insertions(+), 88 deletions(-) + +commit 562c323ae8689907d7a62a7c2f5c10fb8d055608 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun May 16 17:47:13 2010 +0930 + + cff: Use correct glyph advance when subsetting cff fonts + + Previously the glyph advance in font units was used for the widths in + the PDF font dictionary. This only works for cff fonts that use a + [0.001 0 0 0.001 0 0] font matrix. + + src/cairo-cff-subset.c | 38 +++++++++++++++++------------- + src/cairo-pdf-surface.c | 19 ++++++++------- + src/cairo-scaled-font-subsets-private.h | 6 ++-- + 3 files changed, 34 insertions(+), 29 deletions(-) + +commit edcefa87ed0a8ff59b54ef9251182ce68f9158ba +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed May 12 23:12:55 2010 +0930 + + type1: Use correct glyph advance when subsetting type 1 fonts + + Previously the glyph advance in font units was used for the widths in + the PDF font dictionary. This only works for Type 1 fonts that use a + [0.001 0 0 0.001 0 0] font matrix. + + https://bugs.freedesktop.org/show_bug.cgi?id=28061 + + src/cairo-pdf-surface.c | 23 ++++++++++++----------- + src/cairo-scaled-font-subsets-private.h | 6 +++--- + src/cairo-type1-fallback.c | 18 +++++++++--------- + src/cairo-type1-subset.c | 6 +++--- + 4 files changed, 27 insertions(+), 26 deletions(-) + +commit 34fd094b3be54138c20ea5c4aab1d9597d056f35 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 16 10:23:30 2010 +0100 + + rtree: Actually pin the node when pinning. + + How embarrassing. + + src/cairo-rtree-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 63062511f6755af9ddd2985250465f94ebc5a3e8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 16 10:15:42 2010 +0100 + + boilerplate: Exercise manual double-buffering to a window + + Shouldn't possibly go wrong, but the mix of fbo and Window might prove + interesting. + + boilerplate/cairo-boilerplate-gl.c | 117 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 117 insertions(+), 0 deletions(-) + +commit 605be3182308ec7dfe15e9d89890c33800b1eea9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 16 10:11:02 2010 +0100 + + cairo: Missing private markup for _cairo_format_to_pixman_format + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 14d6c3e054da89e47fc82ea29a708290eefe1357 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 16 10:07:07 2010 +0100 + + configure: Include PTHREAD_CFLAGS in CAIRO_LDFLAGS + + Required for successful linking of our programs. I am not sure what the + impact this has upon other users of Cairo yet, I think we need to export + the PTHREAD_CFLAGS via cairo.pc as well. + + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit c3df7e6d58364f883d91567757ed999ea88e10ca +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 16 09:54:04 2010 +0100 + + rtree: Replace undeclared TRUE/FALSE with 1/0 + + src/cairo-rtree-private.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 465ceb330eada9937945f5c4d156169167d4bf8c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun May 16 09:41:12 2010 +0200 + + test: improve copyright notices + + Conform copyright notices to a1-image-sample.c + + test/dash-offset.c | 54 ++++++++++++++++----------------------- + test/linear-gradient-extend.c | 36 +++++++++++++------------ + test/radial-gradient-extend.c | 36 +++++++++++++------------ + test/surface-pattern-operator.c | 36 +++++++++++++------------ + 4 files changed, 79 insertions(+), 83 deletions(-) + +commit e8bc25fdb21340b0a5a25f7193fd0bc5de540a50 +Author: Andrea Canciani <ranma42@valium.area51.sns.it> +Date: Fri May 14 21:40:13 2010 +0200 + + test: add linear-gradient-extend and radial-gradient-extend + + Check that constant gradient to solid color optimization are only + applied if the extents permit it. + + test/Makefile.sources | 2 + + test/linear-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ + test/linear-gradient-extend.ref.png | Bin 0 -> 371 bytes + test/radial-gradient-extend.c | 90 +++++++++++++++++++++++++++++++++++ + test/radial-gradient-extend.ref.png | Bin 0 -> 466 bytes + 5 files changed, 182 insertions(+), 0 deletions(-) + +commit a9d821b7a0f582b3d1b0175adee3350c81061a94 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 14 21:06:18 2010 +0200 + + gl: gl surfaces are only similar when they share the same device + + Fixes gl-surface-source test for gl target + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 435329a70f172c8cec72831dd7a2b2cfc0496342 +Author: Richard Procter <richard.n.procter@gmail.com> +Date: Fri May 14 14:48:46 2010 -0400 + + Bug 28100 - Font option CAIRO_HINT_METRICS_OFF unhonoured on win32 + + Fix typo. Ouch! + + src/cairo-win32-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3a550eb2253588372b2c071b3c3152d5271c1aa2 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 21:17:19 2010 +0200 + + gl: Remove gradient optimizations + + These optimizations are done in cairo-gstate.c these days. + + src/cairo-gl-surface.c | 31 ------------------------------- + 1 files changed, 0 insertions(+), 31 deletions(-) + +commit 3b1c0a4bd66660780095e6016e3db451f34503a3 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 14 15:56:17 2010 +0200 + + fallback: Remove span renderer paths + + Those paths were broken, as they didn't properly translate the polygon + to the destination size. And rather than adding lots of code that allows + translation, it's easier to just delete this code. + + Note that the only user of the code was the GL backend anyway. + + src/cairo-surface-fallback.c | 67 ------------------------------------------ + 1 files changed, 0 insertions(+), 67 deletions(-) + +commit e3b2212bc5c4884eab356ae263b8318e10c379ac +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 15:14:29 2010 +0200 + + build: Fix pthread detection + + Incorporate the pthread detection code from the autoconf archive. Should + fix build on obscure archs that pretend to be UNIXy - like Mac OS X + Tiger. + + http://www.gnu.org/software/autoconf-archive/ + http://www.gnu.org/software/autoconf-archive/ax_pthread.html + + build/ax-pthread.m4 | 283 +++++++++++++++++++++++++++++++++++++++++ + build/configure.ac.system | 11 -- + configure.ac | 14 +- + util/cairo-sphinx/Makefile.am | 5 +- + util/cairo-trace/Makefile.am | 2 +- + 5 files changed, 292 insertions(+), 23 deletions(-) + +commit acfbf95a0c7620359fd917224b5b391702740190 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 14:21:21 2010 +0200 + + test: Make global variables in new test static + + It seems there's no gcc flag that warns about this. + + test/zero-mask.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit c69143e3f9c95ab3937a7efb8e4de170c4edb648 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 12 21:14:36 2010 +0200 + + gl: Don't keep a temporary surface in the device + + We get circular references that way. + If it turns out later such a cache is critical, we'll need to invent a + way to avoid circling references. For now, just pretend it's not + important. + + src/cairo-gl-glyphs.c | 36 ++++++++---------------------------- + src/cairo-gl-private.h | 1 - + 2 files changed, 8 insertions(+), 29 deletions(-) + +commit ec1ca17b71b41159ea8754d42954863b62623536 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 12:07:53 2010 +0200 + + gl: Don't create 0x0 surfaces + + We get a very annoyed libGL if we try to create 0x0 textures, so we + return an image surface instead. + + Tested by the zero-mask test. + + src/cairo-gl-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 108e3f5031fc16843197382af78af299b19ef290 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 12:01:39 2010 +0200 + + Use a solid color for 0xN and Nx0 surfaces + + This gets around the need to check for 0-sized surfaces in the backends. + + src/cairo-gstate.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 18c963824ebbb0e7054e682ecb5664a282a58552 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 11:56:22 2010 +0200 + + Make _cairo_color_equal() work for unmultiplied colors, too + + Color stop colors are unmultiplied, and we use it there. + + src/cairo-color.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit 7bd8d0db1f4ac448c93d6d342726f64a0d6300e3 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 11:23:33 2010 +0200 + + image: Fix wholly unbounded fixup + + Tested by zero-mask test. + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8aa50b5a7873b8317d0593105497607dbb2fae1d +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 10:27:37 2010 +0200 + + cairo_paint_with_alpha(cr, 0.0) is only a noop when bounded by mask + + src/cairo.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit ee32dfb3de035e73cb8c2073c0826daf244e3845 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu May 13 10:04:49 2010 +0200 + + test: Add a test for various zero mask operations + + test/Makefile.sources | 3 +- + test/zero-mask.c | 199 ++++++++++++++++++++++++++++++++++++++++++ + test/zero-mask.ref.png | Bin 0 -> 402 bytes + test/zero-mask.rgb24.ref.png | Bin 0 -> 382 bytes + 4 files changed, 201 insertions(+), 1 deletions(-) + +commit 986ae4232067d4f33931d98fb6324871a1025633 +Author: Owen W. Taylor <otaylor@fishsoup.net> +Date: Thu Feb 25 15:18:22 2010 -0500 + + language bindings guide: clarify mapping for cairo_pattern_create_rgb[a] + + Clarify that cairo_pattern_create_rgb() and cairo_pattern_create_rgba() + should be be overloaded as a single constructor for SolidPattern, but + instead should be static methods. + + doc/public/language-bindings.xml | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit 18b48a6ebc044c07f08bafd0abcb68c595c5746c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 13 10:00:18 2010 +0100 + + Make cairo_color_stop_t a unique type. + + Hopefully reduce the occurrence of the confusion between the + premultiplied shorts in cairo_color_t and the non-premultiplied shorts + in cairo_color_stop_t. + + The existence of the two separate types is debatable and open for + review. + + src/cairo-color.c | 4 ++-- + src/cairo-gstate.c | 2 +- + src/cairo-pattern.c | 2 +- + src/cairo-pdf-surface.c | 9 --------- + src/cairo-ps-surface.c | 32 ++------------------------------ + src/cairo-svg-surface.c | 4 ++-- + src/cairo-types-private.h | 17 ++++++++++++++++- + src/cairoint.h | 4 ++-- + 8 files changed, 26 insertions(+), 48 deletions(-) + +commit dfa2544f158930b002df74e676f3ef7aeeee1bd4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 13 09:52:39 2010 +0100 + + color: Special case comparing color stops. + + color stops are not premultiplied so we need to handle them carefully + when comparing. The next step will be to make cairo_color_stop_t a + unique type to prevent this mistake again. + + src/cairo-color.c | 30 ++++++++++++++++++++++++++++++ + src/cairo-gl-surface.c | 4 ++-- + src/cairo-gstate.c | 4 ++-- + src/cairo-pattern.c | 6 +++--- + src/cairoint.h | 4 ++++ + src/drm/cairo-drm-intel.c | 2 +- + 6 files changed, 42 insertions(+), 8 deletions(-) + +commit 4741d33cf67409a6fddbc32a5d0c8d68224cd939 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 13 09:31:10 2010 +0100 + + gstate: Don't reduce solid source and mask for SOURCE and CLEAR + + Not all operators are created equal, and this optimization breaks for + SOURCE and CLEAR where the mask operates on the clip and not the source. + + src/cairo-gstate.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit ee871940ffe229ed285e618566e45c7d28c5857c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Thu May 13 01:54:39 2010 +0200 + + Revert bd672d080ca0036ef1b88d26583e6af36f541461 + on src/cairo-composite-rectangles.c + + The extent of the operation can be larger than the source if + the operator is not bounded by the source. + + Fixes clip-unbounded, operator-source, surface-pattern-operator + + src/cairo-composite-rectangles.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit 0870c6fb5b39dcc04fa376123848adde2d06d2ce +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 15 20:31:24 2010 +0100 + + gcc-4.5 warnings and optimisation flags. + + build/configure.ac.warnings | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit cf0933a05aedb66b5d8999c84b935349b25dd974 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 12 10:42:14 2010 +0100 + + gallium: Refresh. + + Catch up with changes in APIs, still no substance and the integration + with winsys handles needs review. + + boilerplate/Makefile.win32.features | 8 - + build/Makefile.win32.features-h | 1 - + src/Makefile.win32.features | 8 - + src/drm/cairo-drm-gallium-surface.c | 514 +++++++++++++++++++++------------- + 4 files changed, 317 insertions(+), 214 deletions(-) + +commit bd672d080ca0036ef1b88d26583e6af36f541461 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Mar 26 19:37:08 2010 +0000 + + drm: code dump, sorry. + + Lots upon lots of tiny fixes mixed in with experimental code. :( + + boilerplate/Makefile.win32.features | 18 + + boilerplate/cairo-boilerplate-drm.c | 12 +- + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 4 + + build/configure.ac.features | 1 + + configure.ac | 13 + + src/Makefile.sources | 7 + + src/Makefile.win32.features | 22 + + src/cairo-boxes-private.h | 4 + + src/cairo-boxes.c | 31 + + src/cairo-composite-rectangles.c | 7 +- + src/cairo-drm-xr.h | 66 + + src/cairo-drm.h | 4 +- + src/cairo-fixed-private.h | 18 +- + src/cairo-freelist-private.h | 1 - + src/cairo-freelist.c | 7 +- + src/cairo-image-surface.c | 2 +- + src/cairo-list-private.h | 31 +- + src/cairoint.h | 7 + + src/drm/cairo-drm-i915-glyphs.c | 82 +- + src/drm/cairo-drm-i915-private.h | 153 ++- + src/drm/cairo-drm-i915-shader.c | 866 +++++++----- + src/drm/cairo-drm-i915-spans.c | 146 ++- + src/drm/cairo-drm-i915-surface.c | 1698 +++++++++++++++++----- + src/drm/cairo-drm-i965-glyphs.c | 36 +- + src/drm/cairo-drm-i965-private.h | 2 +- + src/drm/cairo-drm-i965-shader.c | 11 +- + src/drm/cairo-drm-i965-spans.c | 16 +- + src/drm/cairo-drm-i965-surface.c | 146 ++- + src/drm/cairo-drm-intel-debug.c | 1 + + src/drm/cairo-drm-intel-ioctl-private.h | 25 + + src/drm/cairo-drm-intel-private.h | 92 +- + src/drm/cairo-drm-intel-surface.c | 90 +- + src/drm/cairo-drm-intel.c | 530 ++++--- + src/drm/cairo-drm-private.h | 10 +- + src/drm/cairo-drm-radeon-surface.c | 60 +- + src/drm/cairo-drm-surface.c | 37 +- + src/drm/cairo-drm-xr.c | 2377 +++++++++++++++++++++++++++++++ + 38 files changed, 5323 insertions(+), 1311 deletions(-) + +commit c8fba4960339797521afbf8068fcbe62d064f5dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 15:38:04 2010 +0100 + + rtree: Remove the unused evict hook. + + src/cairo-gl-glyphs.c | 3 +-- + src/cairo-rtree-private.h | 4 +--- + src/cairo-rtree.c | 13 +------------ + src/drm/cairo-drm-i915-surface.c | 3 +-- + src/drm/cairo-drm-intel.c | 2 +- + 5 files changed, 5 insertions(+), 20 deletions(-) + +commit 2a0726337368462046ef84d9be4cf59734b39806 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 15:30:18 2010 +0100 + + rtree: defer propagating pinned nodes until eviction. + + Only during infrequent eviction do we require absolute knowledge of + which graph of nodes are in use and thus pinned. So during the common + use of querying the glyph cache, we just mark the leaf as used. Then we + need to make space for a new glyph, we move the parents of the left + nodes from the evictable list to the pinned list. + + src/cairo-rtree-private.h | 12 ++++++++++-- + src/cairo-rtree.c | 33 +++++++++++---------------------- + 2 files changed, 21 insertions(+), 24 deletions(-) + +commit cbe8fd0794adaccdf3eb15eef780a030e3d51784 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 14:56:25 2010 +0100 + + script: Avoid the expensive of the redundant memset. + + As we are about to immediately fill the entire image, allocate the + memory ourselves to avoid the redundant memset performed by pixman. + + util/cairo-script/cairo-script-operators.c | 39 ++++++++++++++++++--------- + 1 files changed, 26 insertions(+), 13 deletions(-) + +commit b9f7a4b5261b6d4e7bdbb5cc56d78d50ad1bd4a7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 14:48:36 2010 +0100 + + script: Don't hash the entire image. + + The reuse hit rate is very small, and most images are quickly + distinguished in the first few bytes... Though perhaps not for video as + in the swfdec-youtube case... + + util/cairo-script/cairo-script-operators.c | 35 +++++++++++++++++++-------- + 1 files changed, 24 insertions(+), 11 deletions(-) + +commit a85c6c1e36273d534f01ade0714b0592b6bed5ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 14:09:56 2010 +0100 + + gstate: reduce a couple more operators + + src/cairo-gstate.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit a3cb52e4037db9e565d32f85d69c364b606555e9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 13:36:18 2010 +0100 + + simplify pattern extents for translation matrices + + src/cairo-pattern.c | 22 ++++++++++++++-------- + 1 files changed, 14 insertions(+), 8 deletions(-) + +commit d45c7dc62d6b036bbbe85c3c1951807e055930d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 1 17:09:11 2010 +0100 + + xcb: discard glyph mask and use dst directly when possible. + + boilerplate/cairo-boilerplate-xcb.c | 12 +++-- + src/cairo-gstate.c | 18 ++++++- + src/cairo-pattern.c | 2 +- + src/cairo-xcb-surface-render.c | 85 ++++++++++++++++++++++++++++------- + 4 files changed, 92 insertions(+), 25 deletions(-) + +commit a8b611ea8eb90f190ee3a9e7999e08e2d865ac43 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Mar 27 08:23:10 2010 +0000 + + clip: Fill instead of creating intermediate surfaces. + + src/cairo-clip.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit fb53d05a69d0291fe68dfe8669b5c1f7636ede1a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 12 20:06:34 2010 +0100 + + test: Remove pthread_yield() + + I accidentally pushed this debugging left-over from when I was tracking + down a race in memfault. Remove it so that the test suite compiles on + more minimal pthread setups. + + test/pthread-same-source.c | 2 -- + test/pthread-show-text.c | 2 -- + test/pthread-similar.c | 2 -- + 3 files changed, 0 insertions(+), 6 deletions(-) + +commit cdd98dba6a62360071aebb6dbbb6be2ab6be368f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 12 19:35:15 2010 +0100 + + win32-printing: compile fix. + + Missing arg for _cairo_recording_surface_replay_region(). + + src/cairo-win32-printing-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 35307fc66f649cc042ec07b7b79277d7ee5987f3 +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Tue May 11 15:12:01 2010 -0400 + + win32: Grow glyph extents to account for ClearType + + Add extra pixel on each side of the glyph's black box returned by + GetGlyphOutlineW, to avoid clipping ClearType pixels. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=445087 + + src/cairo-win32-font.c | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) + +commit d65e8064c0bd3f2d5ad200493bfefb89aefbba55 +Author: Robert O'Callahan <robert@ocallahan.org> +Date: Tue May 11 13:59:58 2010 -0400 + + Ensure the quartz backend returns the first stop for negative positions on the gradient line of a nonrepeating linear gradient. + + I discovered a small bug in cairo-quartz gradients. If you have multiple stops + at position 0, then cairo-quartz pads with the *last* stop at position 0, + instead of the first stop at position 0. This patch fixes that. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=513395 + + src/cairo-quartz-surface.c | 24 ++++++++++++++++++++++-- + 1 files changed, 22 insertions(+), 2 deletions(-) + +commit ce27db9a558cbf4065b18aed55cc706fc0a6d128 +Author: Robert O'Callahan <robert@ocallahan.org> +Date: Tue May 11 13:59:52 2010 -0400 + + Don't repeat a Quartz gradient more times than necessary, to avoid Quartz quality problems when there are lots of repeated color stops. + + -- Add a parameter to _cairo_quartz_setup_source so we can pass down the + extents of the object we're drawing + -- Compute fill/stroke/glyph extents and pass them down in the cases we need to + (repeating/reflecting gradients) + -- Pass those extents on down to where we set up the gradients + -- Make _cairo_quartz_setup_linear_source fall back to pixman for the + degenerate case where the linear gradient vector has no length + -- In CreateRepeatingRadialGradientFunction and + CreateRepeatingLinearGradientFunction, use the object extents (or surface + extents, for the paint() case) instead of the clip box to calculate the + parameters for the gradient + -- I've changed the way CreateRepeatingLinearGradientFunction calculates the + repetition count. The new approach gives much more precise bounds on the number + of repetitions needed (and is very similar to what we do for radial gradients). + This is important because if we specify a much larger input range than we + really need for our gradient color function, Quartz samples it too coarsely + over the range we actually care about, and the gradients look bad. + + For example, suppose start = (5,0), end = (6,10), the CTM is identity and the + bounds we want to cover is (0,0)-(10,10). I think the current approach sets up + the gradient to be repeated 10 times. In fact only 3 repetitions are needed. + + Also, using 'width' here didn't look right: + - y_rep_end = (int) ceil((surface->extents.width - MAX(mstart.y, mend.y)) + / dy + + From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 + + src/cairo-quartz-surface.c | 261 ++++++++++++++++++++++++++++++-------------- + 1 files changed, 179 insertions(+), 82 deletions(-) + +commit 7b4e63d5b8bda8e9ea1f6455d779070f64f07f6f +Author: Robert O'Callahan <robert@ocallahan.org> +Date: Tue May 11 13:59:43 2010 -0400 + + Clean up Quartz gradient code by moving some local variables to static const globals. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=508730 + + src/cairo-quartz-surface.c | 31 +++++++++++++------------------ + 1 files changed, 13 insertions(+), 18 deletions(-) + +commit 8302952dcff20a1d2de194152ace810c7056f994 +Author: Robert O'Callahan <robert@ocallahan.org> +Date: Tue May 11 13:58:10 2010 -0400 + + quartz: Don't fallback to pixman for repeating radial gradients. + + Figuring out where the outer circle should move to is tricky. I hope the + algebra in there is understandable. + + This is a nice performance improvement, probably because we avoid painting the + gradient over the entire clipBox (which is usually the entire surface). + + I tried to write reftests that compared a repeating radial gradient to a + non-repeating gradient with manually repeated stops, but it didn't work because + the rasterization was slightly different --- I'm not sure why. + + This patch also forces us to use pixman for all degenerate cases where the + circles intersect. This at least makes us consistent across platforms. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=508227 + + src/cairo-quartz-surface.c | 203 +++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 180 insertions(+), 23 deletions(-) + +commit 1bda2334b32394a821e6286fbc76617e68da3895 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 11 13:51:38 2010 +0100 + + trace: And for the bonus round... Make it compile. + + util/cairo-trace/trace.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b23f3bd20450aae764f9f9362c560b00bf68636b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 11 13:54:08 2010 +0100 + + trace: Try wrapping FT_Open_Face() + + We have to be careful to disambuigate an internal call by FreeType from + the application. + + util/cairo-trace/trace.c | 38 ++++++++++++++++++++++++++------------ + 1 files changed, 26 insertions(+), 12 deletions(-) + +commit ee446910aa1db0ca0b54791a2ef3bb24b277c9a4 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon May 10 15:06:25 2010 -0400 + + Add an additional set parantheses around the container_of macro + + The non-__GNUC__ version of the container_of macro would do wrong + when used like container_of(...)-> because '->' binds tighter + than the cast in the container_of macro. Adding an additional + set of parantheses fixes this. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e540d040bddc717f17e0e2510cffc0bc3cb41ccd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 10 13:36:53 2010 +0100 + + xcb: trivial memfault fixes. + + The first fixes required to kick-start memfault testing of the xcb + backend. + + boilerplate/cairo-boilerplate-xcb.c | 22 +++++++++++-- + src/cairo-xcb-connection-render.c | 35 ++++++++++++++++----- + src/cairo-xcb-connection.c | 57 ++++++++++++++++++++++++---------- + src/cairo-xcb-private.h | 2 +- + src/cairo-xcb-screen.c | 15 +++++---- + src/cairo-xcb-surface-core.c | 1 - + src/cairo-xcb-surface-render.c | 32 ++++++++++++++++--- + src/cairo-xcb-surface.c | 5 ++- + src/cairo-xlib-xcb-surface.c | 1 - + 9 files changed, 123 insertions(+), 47 deletions(-) + +commit 8b486db9a9d74b40df296382eb1833bc40ae791a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 10 12:45:31 2010 +0100 + + region: _cairo_region_create_in_error() + + Avoid leaks when reporting memfault associated with constructing + regions. + + src/cairo-path-fill.c | 7 +--- + src/cairo-region-private.h | 3 ++ + src/cairo-region.c | 63 ++++++++++++++++++++++++++++++++++++++----- + 3 files changed, 60 insertions(+), 13 deletions(-) + +commit 9d863cd3942c3086c24d67305f7a5892604d0eeb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 8 18:20:11 2010 +0100 + + xcb: Find the correct xcb_screen_t for faking Screen + + When choosing the xcb_screen_t to use for the xlib-xcb backing surface, + it helps if it matches the screen used to generate similar surfaces and + snapshots - otherwise we end up pulling the image back from the XServer + every time we want to use the Picture. + + src/cairo-xlib-xcb-surface.c | 23 +++++++++++++++++++++-- + 1 files changed, 21 insertions(+), 2 deletions(-) + +commit 448d3571088463fc61641badcdfdc8c0002ae12a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 8 09:59:54 2010 +0100 + + xcb: Upload images in place. + + A common operation is to store an image in a similar surface, so + construct a fast path to avoid the allocation and double-blit through a + temporary pixmap. + + src/cairo-xcb-private.h | 5 + + src/cairo-xcb-surface-render.c | 169 +++++++++++++++++++++++++++++++++++++++- + src/cairo-xcb-surface.c | 31 ++++--- + 3 files changed, 189 insertions(+), 16 deletions(-) + +commit e48cbd3b47a6e4f7c1f66b3085df41546460e477 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 8 09:56:46 2010 +0100 + + xcb: Reset picture after failed snapshot. + + Clear the local picture variable if we cannot use the snapshot so that + we are forced to create a new and valid picture. + + src/cairo-xcb-surface-render.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 4e3c19833ef8631c1f1cd54870c0a86d88252886 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 21:30:13 2010 +0100 + + test: Force cairo-test-suite to return SUCCESS + + Set the CAIRO_TEST_FORCE_PASS environment variable to run through the + test suite and ignore errors. Useful for forcing distcheck to continue + past a broken test suite. + + test/cairo-test-runner.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit ad8abc01105f02a05497969b6b5ec2c8742daeb2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 21:28:58 2010 +0100 + + subsurface: Don't double apply device offset for deep subsurfaces. + + If we have a subsurface of a subsurface then the device offset has + already been applied to the extents that we use to offset the new + subsurface. + + src/cairo-surface-subsurface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit d2a250ad33dcd1a3960b07d2f0270266a3f3f106 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri May 7 20:36:33 2010 +0200 + + gl: Make the shader implementation per-context, not global + + src/cairo-gl-device.c | 8 +--- + src/cairo-gl-glyphs.c | 4 +- + src/cairo-gl-private.h | 37 ++++++++++++----- + src/cairo-gl-shaders.c | 105 +++++++++++++++++++++++++----------------------- + src/cairo-gl-surface.c | 89 +++++++++++++++++++++------------------- + 5 files changed, 131 insertions(+), 112 deletions(-) + +commit 4571055c46e82cbb6d3ab47860d63e400b338238 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 19:36:46 2010 +0200 + + gl: Print GL errors when releasing the device + + Don't scatter calls to error printing around everywhere, instead do it + in the one place where it matters. + + Also, convert the functions to macros, so we can use __FILE__ and + __LINE__ when printing a warning + + src/cairo-gl-private.h | 15 ++++++++++----- + src/cairo-gl-surface.c | 22 +--------------------- + 2 files changed, 11 insertions(+), 26 deletions(-) + +commit 59b31aeed9b3ec2a1ac6da188ef5e86d20626662 +Author: Benjamin Otte <otte@redhat.com> +Date: Sat May 8 15:09:39 2010 +0200 + + gl: Make check_span_renderer() call not require a device lock + + Note that we didn't lock the device previously, so the function was + broken. + + src/cairo-gl-device.c | 1 + + src/cairo-gl-private.h | 7 +++++++ + src/cairo-gl-surface.c | 5 +++-- + 3 files changed, 11 insertions(+), 2 deletions(-) + +commit 81f4dd65a32efae645b826b84e8382f7bf7a9b2d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 22:35:18 2010 +0100 + + cairo: Special case cairo_t with NULL_POINTER + + Avoid allocation for the potential user error of attempting to use + cairo_create(NULL). + + src/cairo.c | 24 +++++++++++++++++++++++- + 1 files changed, 23 insertions(+), 1 deletions(-) + +commit a61570a55e70040ffcf8ff3cb2c7943e71a5e2a0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 22:18:52 2010 +0100 + + test/copy-path: memfault status checks. + + test/copy-path.c | 61 +++++++++++++++++++++++++++++++++-------------------- + 1 files changed, 38 insertions(+), 23 deletions(-) + +commit e6180d1d5e29a91f1bfc20956bb017ab74fb8b8e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 22:18:10 2010 +0100 + + surface-fallback: Only destroy the clip after it has been initialized. + + More memfault detected error path errors. + + src/cairo-surface-fallback.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 01a208f7e3785254dc101f09a73943ec7cfb1d6e +Author: timeless <timeless@bemail.org> +Date: Fri May 7 10:24:49 2010 -0400 + + Remove useless null checks of a and b in _cairo_path_fixed_equal + + 'a' and 'b' are dereferenced before being checked for null. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=555706 + + src/cairo-path-fixed.c | 22 ++++++++-------------- + 1 files changed, 8 insertions(+), 14 deletions(-) + +commit 0068d9b5cd09a7aa0c5a2ab4da97ca181934ff56 +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Fri May 7 10:16:32 2010 -0400 + + quartz: Work around bad glyph extents returned by CoreGraphics for empty glyphs in Al Bayan font + + This resolves the problem by checking for the crazy glyph bbox result from + CoreGraphics, and replacing it with an empty rect. + + From https://bugzilla.mozilla.org/show_bug.cgi?id=534260 + + src/cairo-quartz-font.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit c5d9643417690380c102bf0b6ad195cb264d3feb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 11:24:28 2010 +0100 + + doc: regen + + doc/public/tmpl/cairo-font-face.sgml | 3 +++ + doc/public/tmpl/cairo-font-options.sgml | 4 ++++ + doc/public/tmpl/cairo-ft.sgml | 3 +++ + doc/public/tmpl/cairo-image.sgml | 5 +++++ + doc/public/tmpl/cairo-matrix.sgml | 3 +++ + doc/public/tmpl/cairo-paths.sgml | 3 +++ + doc/public/tmpl/cairo-pattern.sgml | 3 +++ + doc/public/tmpl/cairo-pdf.sgml | 3 +++ + doc/public/tmpl/cairo-png.sgml | 3 +++ + doc/public/tmpl/cairo-ps.sgml | 3 +++ + doc/public/tmpl/cairo-quartz-fonts.sgml | 3 +++ + doc/public/tmpl/cairo-quartz.sgml | 3 +++ + doc/public/tmpl/cairo-scaled-font.sgml | 3 +++ + doc/public/tmpl/cairo-status.sgml | 6 ++++++ + doc/public/tmpl/cairo-surface.sgml | 9 +++++++++ + doc/public/tmpl/cairo-svg.sgml | 3 +++ + doc/public/tmpl/cairo-text.sgml | 3 +++ + doc/public/tmpl/cairo-transforms.sgml | 3 +++ + doc/public/tmpl/cairo-types.sgml | 3 +++ + doc/public/tmpl/cairo-user-fonts.sgml | 4 ++++ + doc/public/tmpl/cairo-version.sgml | 5 +++++ + doc/public/tmpl/cairo-win32-fonts.sgml | 3 +++ + doc/public/tmpl/cairo-win32.sgml | 3 +++ + doc/public/tmpl/cairo-xlib-xrender.sgml | 3 +++ + doc/public/tmpl/cairo-xlib.sgml | 3 +++ + doc/public/tmpl/cairo.sgml | 3 +++ + 26 files changed, 93 insertions(+), 0 deletions(-) + +commit b9e9ff59348412a1f1f2c57d6185c84f77874c26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 7 11:21:50 2010 +0100 + + subsurface: Include device offset in extents + + Adjust the subsurface extents so that the user specifies the extents in + world space rather than device space. + + src/cairo-surface-subsurface.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit 5e3b28ffeac3fc7239c7ada6992e4794a27b0818 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu May 6 22:27:09 2010 -0400 + + Remove comma from the end of the CAIRO_PATTERN_ACQUIRE enum + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit cc8442514ab15f08708ecb26f499c764a7d171f4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 21:50:16 2010 +0100 + + gl: Enable fixed-function without glsl. + + Through a very simple mistake we were triggering fallbacks after + detecting we were not able to perform the composite using GLSL -- we + were just returning the UNSUPPORTED status instead of enabling the + fixed-function path. + + src/cairo-gl-surface.c | 56 ++++++++++++++++++++++++++--------------------- + 1 files changed, 31 insertions(+), 25 deletions(-) + +commit 30d358e098353af24f16cdb7efe41f10f276f559 +Author: Metal Sonic <kidlinux96@gmail.com> +Date: Thu May 6 16:07:43 2010 -0400 + + Update license blocks to use "Mozilla Foundation" instead of "Mozilla Corporation" + + From https://bugzilla.mozilla.org/show_bug.cgi?id=507387 + + src/cairo-fixed-private.h | 2 +- + src/cairo-fixed-type-private.h | 2 +- + src/cairo-malloc-private.h | 2 +- + src/cairo-quartz-font.c | 2 +- + src/cairo-quartz-image-surface.c | 2 +- + src/cairo-quartz-image.h | 2 +- + src/cairo-quartz-surface.c | 2 +- + src/cairo-quartz.h | 2 +- + 8 files changed, 8 insertions(+), 8 deletions(-) + +commit 506636e19edcdb656c94f61c915c9d49829dade8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 17:21:59 2010 +0100 + + cairo: stash a number of contexts for use with NO_MUTEX + + The implementation is the same as the atomic one (bar the use of atomic + primitives to manipulate the occupancy!). + + Patch based on the original by Jeff Muizelaar. + + src/cairo.c | 33 ++++++++++++++++++++++++++++++++- + 1 files changed, 32 insertions(+), 1 deletions(-) + +commit 91dfee420c3e9d85e5cd4f2cec6dc708c0e471a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 17:03:56 2010 +0100 + + device: Reorder finalization so that user data is destroyed last. + + As the user is likely to attach the underlying resources to the device + for automatic collection upon finalization, it is important that the + user data is then destroy last (so that those resources are still + available in the surface and device cleanup routines). + + src/cairo-device.c | 9 +++++++-- + src/cairo-surface.c | 4 ++-- + 2 files changed, 9 insertions(+), 4 deletions(-) + +commit 2658d7ef5f8f7e06929f4b1cae64e5312db24ec4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 17:02:39 2010 +0100 + + test/gl-surface-source: Attach GLXContext to device user data. + + As we actually use the GLXContext to create the device, we only want to + free those resources upon the final unreference of the device (and not + the initial surface). + + test/gl-surface-source.c | 26 +++++++++++--------------- + 1 files changed, 11 insertions(+), 15 deletions(-) + +commit f5167dc2e1a13d8c4e5d66d7178a24b9b5e7ac7a +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu May 6 11:43:52 2010 -0400 + + Add an implementation of ffs() for MSVC + + src/cairo-compiler-private.h | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit a2a2bd62ff37e2642f671ca7ebf26954e1856abe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 14:39:30 2010 +0100 + + surface-fallback: Handle memfaults during clipping. + + Don't be lazy, propagate the error rather than asserting. + + src/cairo-surface-fallback.c | 26 +++++++++++++++----------- + 1 files changed, 15 insertions(+), 11 deletions(-) + +commit 2e3acee410ff127d4557ca8191625338cd225313 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 14:38:55 2010 +0100 + + test: Add gl-surface-source + + Exercise using GL sources. + + test/Makefile.am | 7 ++ + test/Makefile.sources | 3 + + test/gl-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/gl-surface-source.c | 115 ++++++++++++++++++++++++++++++++ + test/gl-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/gl-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + 6 files changed, 125 insertions(+), 0 deletions(-) + +commit 75d8550891b8b2c09200aaaa812c6c9332161cd7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 13:50:27 2010 +0100 + + test/clip-contexts: Free secondary context + + test/clip-contexts.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit bf83bf00a75343f7d1dcd15dc4eeec1b1a4b9428 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 10:53:48 2010 +0100 + + test: Add subsurface-image-repeat + + Test handling of source clipping with an image - principally to check + handling of mime types and zero-copy image snapshotting in the vector + surfaces and ensure that they work with subsurface patterns as well. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/subsurface-image-repeat.c | 70 ++++++++++++++++++++++++++ + test/subsurface-image-repeat.image16.ref.png | Bin 0 -> 776 bytes + test/subsurface-image-repeat.ref.png | Bin 0 -> 915 bytes + 5 files changed, 73 insertions(+), 0 deletions(-) + +commit 88986fdbef795c61cd60231046663d3cd80b4947 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 10:46:49 2010 +0100 + + xlib: Remove reference counting for cairo_xlib_screen_t + + The screen is owned by the cairo_xlib_display_t device, so we can + simplify and close the refleak by removing the surplus reference + counting. + + src/cairo-xlib-display.c | 84 ++++++++++----------------------------------- + src/cairo-xlib-private.h | 22 +++--------- + src/cairo-xlib-screen.c | 47 +++++-------------------- + src/cairo-xlib-surface.c | 38 ++++++--------------- + src/cairo-xlib-visual.c | 2 +- + 5 files changed, 46 insertions(+), 147 deletions(-) + +commit 632fabc77d89254e2e6915148fa870f23c2a5722 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 10:10:38 2010 +0100 + + xlib: Convert visual array to a cairo_list_t + + It's simpler and more memory efficient. + + src/cairo-xlib-private.h | 4 ++- + src/cairo-xlib-screen.c | 76 ++++++++++++++-------------------------------- + 2 files changed, 26 insertions(+), 54 deletions(-) + +commit 20d75bdadc897be238ceb4d2d02f079e469144e4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 10:03:36 2010 +0100 + + xlib: Remove screen->has_render + + Use the info from the display instead. + + src/cairo-xlib-private.h | 1 - + src/cairo-xlib-screen.c | 17 ++++------------- + 2 files changed, 4 insertions(+), 14 deletions(-) + +commit 9e0b716ecf1b27d74e63f25a055d8120d8d53309 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 09:58:46 2010 +0100 + + xlib: Remove obsolete comment, there is no race anymore + + The display lock is now held for the duration of the screen creation, so + there is no race. Remove the false comment. + + src/cairo-xlib-screen.c | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit 62346c500a7421e30b3054fdcc07fc78a18da96e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 09:37:02 2010 +0100 + + xlib: Ensure the global display mutex is initialized before use. + + src/cairo-xlib-display.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit fb6caf08ae5ccf8f8c2c251d32fd98aacbcebdcc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 09:30:41 2010 +0100 + + image: Propagate error instead of asserting. + + Apparently we can get to this point without evaluating the clip surface, + so return the error status rather than assert. + + src/cairo-image-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 5e95c62bbb0cb28ee22af8f97267ce2da72cf47a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 6 09:09:22 2010 +0100 + + clip: Propagate failure from retrieving the previous clip surface. + + src/cairo-clip.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit a6ee7aea8ac11a9e5a9b58e17e881db9666a2b24 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 10:52:39 2010 +0100 + + test: Add xlib-expose-event.image16.ref.png + + test/Makefile.am | 1 + + test/xlib-expose-event.image16.ref.png | Bin 0 -> 30332 bytes + 2 files changed, 1 insertions(+), 0 deletions(-) + +commit ded2dc8faaa3a48c84a31422a31c64595a6eaf8a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 14:44:55 2010 +0100 + + scaled-font: Pluck last glyph from the most recent page. + + In converting to cairo_list_t, it helps to preserve the semantics of + appending the page to the end of the list where it is expected to be + plucked in the event of an allocation failure. + + src/cairo-scaled-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit fa937913e06bc295750538be45aa83eb42332fb4 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed May 5 21:35:11 2010 +0930 + + PS: Add missing 'q' when resetting clip path + + src/cairo-ps-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9c594d8b405eba09b07c0a438f5311f5c5e40313 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:28:59 2010 +0200 + + gl: Get rid of ctx variable + + The code used renderer->ctx and ctx interchangably, that was confusing. + + src/cairo-gl-surface.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit a354f1f92a17378f42d0b703482ae2b8168c7f68 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:28:24 2010 +0200 + + gl: Another case of proper device acquiring + + This patch isn't strictly necessary, but it cleans up the code. + + src/cairo-gl-surface.c | 15 +++++++++------ + 1 files changed, 9 insertions(+), 6 deletions(-) + +commit 36210ee51444979271f7ba1cc0ac452cd30df0af +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:24:43 2010 +0200 + + gl: Get rid of another cast to cairo_gl_context_t + + src/cairo-gl-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 58b03691d379979b50d74740748b8b8523e0cd0d +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:21:23 2010 +0200 + + gl: Introduce _cairo_gl_device_has_glsl() function + + The function takes a cairo_device_t argument as it can be called on an + unacquired device. + + This is the first patch in a process to try to rid cairo-gl-surface.c of + casts from cairo_device_t to cairo_gl_context_t. As its members should + usually only be accessed when the device is locked, the only way the + cairo_gl_context_t should be acquired is using + _cairo_gl_context_acquire(). + + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 6 ++++++ + src/cairo-gl-surface.c | 9 ++++----- + 3 files changed, 11 insertions(+), 6 deletions(-) + +commit 5223b654230d3074d0bc31eb74c415e50eced365 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:07:49 2010 +0200 + + gl: Get rid of cairo_gl_surface_glfinish() from public API + + This is now done explicitly in the boilerplate code. It was not a useful + public API to begin with. + + boilerplate/cairo-boilerplate-gl.c | 17 +++++++---------- + src/cairo-gl-surface.c | 9 --------- + src/cairo-gl.h | 3 --- + 3 files changed, 7 insertions(+), 22 deletions(-) + +commit e071fa2c4f62b5ead39c6c6401f39360ea4dee1f +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:03:13 2010 +0200 + + gl: Remove unused member variable + + src/cairo-gl-private.h | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit 90c64f60d853f1a6ea5febd362ef3528cc9d914b +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 12:01:59 2010 +0200 + + gl: Move device-specific code into cairo-gl-device.c + + src/Makefile.sources | 6 +- + src/cairo-gl-device.c | 205 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-surface.c | 162 -------------------------------------- + 3 files changed, 210 insertions(+), 163 deletions(-) + +commit 0ff5a18fd5623b57c7493e6b67a6b1c75af82fb3 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 11:52:40 2010 +0200 + + gl: Make _gl_set_destination() take the context as an argument + + Keeping with the API introduced for Xlib, functions that require an + acquired context take this context as the first argument. + + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-surface.c | 20 +++++++++----------- + 3 files changed, 11 insertions(+), 13 deletions(-) + +commit e8c5b6b1c2099fc6a49d0a082f5e884d3fbd89df +Author: Benjamin Otte <otte@redhat.com> +Date: Wed May 5 10:05:30 2010 +0200 + + Fix typo in docs + + src/cairo-array.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 53508e6e3047b4dac6d69d5d3ff2208178998fd4 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 4 19:28:45 2010 +0200 + + gl: Acquire the context before destroying it. + + src/cairo-gl-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit c46aec489722bf09cd10c52d70bb4975eb1546d9 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 4 19:28:22 2010 +0200 + + gl: acquire/release context during surface_finish() + + src/cairo-gl-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit 88801aabb34328746a53d3d59d036dada7ced756 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue May 4 19:23:08 2010 +0200 + + gl: Acquire context when initing/destroying gl operands + + src/cairo-gl-glyphs.c | 17 ++++++---- + src/cairo-gl-private.h | 3 +- + src/cairo-gl-surface.c | 80 +++++++++++++++++++++++++----------------------- + 3 files changed, 54 insertions(+), 46 deletions(-) + +commit c6d7d054ca44f3849ee1ab76de9032a4eaa210fe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 10:39:49 2010 +0100 + + test: Add radial-gradient-mask + + Exercise using radial gradients as a mask. + + test/Makefile.am | 6 + + test/Makefile.sources | 2 + + test/radial-gradient-mask-source.argb32.ref.png | Bin 0 -> 116311 bytes + test/radial-gradient-mask-source.c | 111 ++++++++++++++++++++++ + test/radial-gradient-mask-source.image16.ref.png | Bin 0 -> 82800 bytes + test/radial-gradient-mask-source.rgb24.ref.png | Bin 0 -> 129093 bytes + test/radial-gradient-mask.argb32.ref.png | Bin 0 -> 116311 bytes + test/radial-gradient-mask.c | 110 +++++++++++++++++++++ + test/radial-gradient-mask.image16.ref.png | Bin 0 -> 82800 bytes + test/radial-gradient-mask.rgb24.ref.png | Bin 0 -> 129093 bytes + 10 files changed, 229 insertions(+), 0 deletions(-) + +commit 5f878f917980cde145d4c385b0c0b66336c0f454 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 10:24:14 2010 +0100 + + clip: Trivial compiler warning + + cairo-clip.c: In function ‘_cairo_clip_path_reapply_clip_path_translate’: + cairo-clip.c:446: warning: suggest parentheses around assignment used as + truth value + + src/cairo-clip.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 840dad765febf7b807bbb75e401c159a8c5c4dfe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 09:46:03 2010 +0100 + + test/mask-glyphs: Check for memfault + + test/mask-glyphs.c | 32 +++++++++++++++++++++++--------- + 1 files changed, 23 insertions(+), 9 deletions(-) + +commit ad541a1ec62e18bcaf74994affbdb0503e277f9c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 09:33:36 2010 +0100 + + clip: Propagate memfault from translating clip region + + src/cairo-clip.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 4bc54643f5cdeddf2145d28c317b55ca6b5949a5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 21:36:03 2010 +0100 + + image: Propagate failure from pixman_image_set_clip_region() + + src/cairo-image-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit 9ef33a1d8c0476f4f1eeba4f26523fdeb6f7d809 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 21:35:51 2010 +0100 + + test/bitmap-font: Destroy FcPattern + + test/bitmap-font.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) + +commit fba4cf1d94b3ab676e0b62ae3574bf1ee4e69de0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 09:22:03 2010 +0100 + + recording: Mark an empty recording surface as clear. + + src/cairo-recording-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit e5329805394c94c915e43a0040b51d5019b4a90e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 09:17:51 2010 +0100 + + recording: Avoid refcycles by always copying the command array. + + Short-term solution to avoid the refleaks and to make the test suite + happy. A more elegant solution would be to track the references and + avoid the substantial memory overhead of copying the recording surfaces. + + Thanks to Benjamin Otte for pointing out the solution to avoiding + refcycles. + + src/cairo-recording-surface-private.h | 1 - + src/cairo-recording-surface.c | 23 ++++++++++++----------- + 2 files changed, 12 insertions(+), 12 deletions(-) + +commit 6a06e0ef7b534355d0f3b4885159ffc37dbc3867 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 5 09:17:33 2010 +0100 + + test/subsurface-modify-parent: Free region. + + Minor refleak. + + test/subsurface-modify-parent.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 4a46c715564c886e7434d65625fb84b5d87c0970 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:51:30 2010 +0100 + + type3: Minor tweaks to remove a redundant check. + + src/cairo-type3-glyph-surface.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) + +commit 11531b90a2317bb1113b187d6aa9c5083f5ecaa1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:50:58 2010 +0100 + + ps: Force finish of the type3 glyph surfaces. + + src/cairo-ps-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 5155ebeaa25815124124db2599336ab2ddbe7413 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:50:27 2010 +0100 + + pdf: Assert that no other error can occur for an invertible matrix. + + src/cairo-pdf-operators.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit d9259bd06822c871a4c653f395cfc1f933caaeb7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:49:55 2010 +0100 + + paginated: Mark as clear initially. + + src/cairo-paginated-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit bc14e0e953630d47a65e701a377631e406eb080c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 14:18:33 2010 +0100 + + scaled-font: Convert to cairo_list_t + + Convert the open-coded doubly-linked list of glyph pages for a font into + the common cairo_list_t. + + src/cairo-scaled-font-private.h | 2 +- + src/cairo-scaled-font.c | 46 ++++++++++++++++++-------------------- + 2 files changed, 23 insertions(+), 25 deletions(-) + +commit 627527693c38c328fdb79058f5299609c0031029 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 13:41:41 2010 +0100 + + ps: Remove the fill stroke command + + This is not supported by PostScript, so eliminate it from the prologue. + + src/cairo-ps-surface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit 4dd92ef2bc877eb197f096c3eb8fe74cb2e7b099 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun May 2 14:35:59 2010 +0100 + + test: Add subsurface-pad + + Round out the subsurface tests with PAD. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/subsurface-pad.c | 76 +++++++++++++++++++++++++++++++++++++++++++ + test/subsurface-pad.ref.png | Bin 0 -> 181 bytes + 4 files changed, 78 insertions(+), 0 deletions(-) + +commit 85e3cffde164a5af444639dfd182fde2448809ee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 21:09:01 2010 +0100 + + test: Add subsurface-modify-{child,parent} + + Add tests to ensure that modifications to the subsurface via the + original surface are tracked by the subsurface, i.e. that any snapshots + are detached upon modification of the parent as well as modification of + itself and vice versa. + + test/Makefile.am | 2 + + test/Makefile.sources | 2 + + test/subsurface-modify-child.c | 98 +++++++++++++++++++++++++++++++++ + test/subsurface-modify-child.ref.png | Bin 0 -> 197 bytes + test/subsurface-modify-parent.c | 77 ++++++++++++++++++++++++++ + test/subsurface-modify-parent.ref.png | Bin 0 -> 197 bytes + 6 files changed, 179 insertions(+), 0 deletions(-) + +commit 19ac81f50ba353400934bf112523b4257ad9de2f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:25:23 2010 +0100 + + scaled-font: Remove MRU cache upon detection of error. + + src/cairo-scaled-font.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit 6f2d4f5b2aba9344fee9375614dfd0c6236bfd7c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 18:09:11 2010 +0100 + + image: Propagate failure from pixman_image_fill_boxes(). + + src/cairo-image-surface.c | 55 ++++++++++++++++++++++++-------------------- + 1 files changed, 30 insertions(+), 25 deletions(-) + +commit ded7be0b9ce12f8d4a84c8c9dd622d92fe347a34 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 17:01:35 2010 +0100 + + test/user-font-rescale: Use after free and check for memfault. + + test/user-font-rescale.c | 16 +++++++++++----- + 1 files changed, 11 insertions(+), 5 deletions(-) + +commit b0052c52153376400a30dca1d67f4aca9735cc09 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 17:01:17 2010 +0100 + + test/bitmap-font: Propagate memfault + + test/bitmap-font.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +commit 9187c7532755dda8d2677ec792162c71029fb37d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 13:18:09 2010 +0100 + + test/bitmap-font: Check for memfault error + + test/bitmap-font.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 0fced9279227614ede6964e94ede9de49a3a3388 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 13:17:38 2010 +0100 + + test/user-font-proxy: Check we install user data on the scaled font + + test/user-font-proxy.c | 14 ++++++++++---- + 1 files changed, 10 insertions(+), 4 deletions(-) + +commit 38188961b996c97d344195749b7bec8c93f9bad7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 13:17:07 2010 +0100 + + image: Check for pixman image allocation failure during glyphs + + src/cairo-image-surface.c | 8 +++----- + 1 files changed, 3 insertions(+), 5 deletions(-) + +commit 4a181ebac416ec35e412ddbe9ed1392fb8b74ab7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 10:26:30 2010 +0100 + + pdf: Cleanup local reference to source on error paths. + + src/cairo-pdf-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ba48edcd86ee1bca06b25587e56abcd2c1b19d79 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 10:26:13 2010 +0100 + + ps: Always cleanup used font subsets. + + src/cairo-ps-surface.c | 19 ++++++++----------- + 1 files changed, 8 insertions(+), 11 deletions(-) + +commit 9a0958be012e097c239260fac0dec0b1e5679028 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 10:25:48 2010 +0100 + + test: Cleanup after failed pthread_join(). + + test/pthread-same-source.c | 17 +++++++++-------- + test/pthread-show-text.c | 17 +++++++++-------- + test/pthread-similar.c | 17 +++++++++-------- + 3 files changed, 27 insertions(+), 24 deletions(-) + +commit 08b9984da9f2119cd4ed03bbd656a349b49d1f12 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 08:19:41 2010 +0100 + + image: Replace assert with error return + + It is possible to encounter an allocation failure here since we may have + tweaked the clip since the last evaluation of the clip region. + + src/cairo-image-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 2c68fcace4ad47ad09e9699e45afb514be1381f9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 20:39:34 2010 +0100 + + test: Embed the list pointer into cairo_test_t + + Reduce the amount of output printed by leak-detectors when a test + crashes. + + test/cairo-test-runner.c | 31 +++++++++++++++---------------- + test/cairo-test.h | 7 ++++--- + 2 files changed, 19 insertions(+), 19 deletions(-) + +commit 7002b824729885a9d579f677ecc665b620847480 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 4 13:52:09 2010 +0200 + + xlib: Don't delete gradients in unbounded fixup code + + The fix is ugly, but for now it works. + + src/cairo-xlib-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit af26560f258d93cc78782ddd0208128756874c11 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 19:21:59 2010 +0100 + + test: Improve memfault behaviour. + + Various minor tweaks to convert asserts into error returns and to + improve error checking on intermediate surfaces. + + boilerplate/cairo-boilerplate-svg.c | 2 +- + test/cairo-test.c | 21 +++++++++++--- + test/png.c | 34 +++++++++++++++------- + test/pthread-same-source.c | 7 +++++ + test/surface-source.c | 11 ++++++- + test/toy-font-face.c | 16 +++++++++-- + test/user-data.c | 51 ++++++++++++++++++++++++---------- + test/xlib-surface-source.c | 7 ++++- + 8 files changed, 112 insertions(+), 37 deletions(-) + +commit c549203c8d69474be4362037f702e4fb59c9929e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 19:21:18 2010 +0100 + + scaled-font: Check for an error return when retrieving the implementation + + src/cairo-scaled-font.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit c93e6f014d9678b1aea34fd7a30a1fc2f51c6347 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 19:20:42 2010 +0100 + + paginated: propagate malloc failures more cleanly. + + src/cairo-paginated-surface.c | 26 +++++++++++++------------- + 1 files changed, 13 insertions(+), 13 deletions(-) + +commit 8e9fd9c01732c3102c27c7dee50f6e494ba7cdd8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 19:20:07 2010 +0100 + + image: A few missing tests for malloc failure + + src/cairo-image-surface.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +commit 87781ffbd914bca29b4d744fb48678ab06a07108 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 3 19:18:49 2010 +0100 + + ft: Convert an assert into an unlikely error return. + + The assert depends upon good behaviour from fontconfig, which is no + guaranteed under memfault, so return an error instead. + + src/cairo-ft-font.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit 5672b7a18a34456862977a1cf678bf6575dcc3f4 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon May 3 13:13:27 2010 +0200 + + fallback: get src_x/y variables right when compositing traps + + src/cairo-image-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit c10a5a9fb0463f254fb607a2260b540256f888cc +Author: Dave Yeo <daveryeo@telus.net> +Date: Mon May 3 10:20:51 2010 +0200 + + os2: Fix get_extents() segfaulting. + + bed2701e1c89095878d549cbca8f22d84f3dda3c removed one line too much. + + src/cairo-os2-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9df81fe4d3f0ccc5632d0e84e920fe1c448bd531 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun May 2 19:59:26 2010 +0200 + + boilerplate: don't compile pdf test code when pdf is not tested + + Avoids gcc warnings when libpoppler version isn't good enough. + + boilerplate/cairo-boilerplate-pdf.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 358f57c8765f823f8e6db7629ea6ca48fcd392b8 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Apr 30 23:29:24 2010 +0200 + + image: remove useless optimization + + The optimization is done way smarter inside + _cairo_matrix_transform_bounding_box() + + src/cairo-image-surface.c | 11 +++-------- + 1 files changed, 3 insertions(+), 8 deletions(-) + +commit 94aa6d24b6d5ab4528a0b0a9b1b0c6eb7218f861 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Apr 30 23:24:41 2010 +0200 + + fallback: Create pixman image for correct rectangle + + This was most prominently shown by the a1-image-sample test, but + multiple tests exposed the problem with the xlib-fallback code. + + src/cairo-image-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 41fecf8e662c9ad2fe063754db8302f349a223ef +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Fri Apr 30 21:18:52 2010 +0200 + + [configure] Bump poppler dependency to 0.13.3 + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3294daf423e88b55aa13841dfa7c557ee9833f92 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Apr 30 20:14:54 2010 +0200 + + Create cleared surface instead of a scratch surface in clone_similar() + + A cleared surface is needed when playing back a recording surface that + has semi-transparent operations. + As this only affects surface types where scratch surfaces aren't already + cleared (ie it affected xlib but not image), the effect was only visible + for those backends. + This should not cause any performance regressions as the other backends + set surface->clear = TRUE when creating the scratch surface, so the + clear operation is effectively a no-op. + + Covered by the existing pdf-surface-source and svg-surface-source tests. + + src/cairo-surface.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit 0aeb612d2f822e8cda1f509b6a4f2995e24053fc +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Fri Apr 30 16:18:57 2010 +0200 + + [test] Update pdf reference image for text-rotate + + test/text-rotate.pdf.ref.png | Bin 16757 -> 16744 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit fe2844464721644b837816aa4dad4ead508f0b89 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Fri Apr 30 16:16:23 2010 +0200 + + [test] Update pdf reference image for surface-pattern-scale-down + + test/surface-pattern-scale-down.pdf.ref.png | Bin 1603 -> 2189 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit dba6f23318005a4cdbe7566519ce896278ea184a +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Fri Apr 30 16:11:52 2010 +0200 + + [test] Update pdf reference image for leaky-dashed-rectangle + + test/leaky-dashed-rectangle.pdf.ref.png | Bin 380 -> 377 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 6b81187ac4870311a10c024af9f30c366be785cd +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Fri Apr 30 16:05:21 2010 +0200 + + [test] Update pdf reference images for clip-operator + + test/clip-operator.pdf.argb32.ref.png | Bin 9266 -> 9437 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 5166 -> 5391 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit b485ae5b90bf72cde0c30c2350e03d1369ca6dcd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 14:14:01 2010 +0100 + + atomic: Add Andrea's copyright notice + + Note Andrea's copyright for his contribution of platform agnostic + fallbacks and the implementation for MacOS/X. + + src/cairo-atomic-private.h | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 4ee5119a3467ea086efccef2907b0c576d600b79 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 13:00:05 2010 +0100 + + test: Expand pthread-show-text to cover all surfaces. + + In a similar fashion to pthread-same-source and pthread-similar, check + that the texting handling is thread-safe for all surface and font + backends. + + test/Makefile.am | 3 + + test/pthread-show-text.c | 118 ++++++++++++++++++++------------ + test/pthread-show-text.image16.ref.png | Bin 0 -> 22167 bytes + test/pthread-show-text.ps.ref.png | Bin 0 -> 16558 bytes + test/pthread-show-text.ref.png | Bin 0 -> 29885 bytes + 5 files changed, 77 insertions(+), 44 deletions(-) + +commit c6dc8ad7dc46d03899cd37fff40bd7f3a60339e2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 12:38:25 2010 +0100 + + Revert "paginated: Call surface finish explicitly on recording surface" + + This reverts commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172. + + Whilst this fixes the self-referential reference leak, it however + introduces use-after-finish into normal behaviour. Close, but not quite. + + src/cairo-paginated-surface.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit b972669c9ac87d1c2ca922e12024ef5da394aa6b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 12:37:16 2010 +0100 + + boilerplate: Fix use after free from 3ae5723 + + If we want to access the surface during the cleanup, we must hold our + own reference to it. Make it so for the forced finish of the recording + surface. + + boilerplate/cairo-boilerplate.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +commit 905c345df1f828551af2ab0b751388428e4dfaf6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 10:31:50 2010 +0100 + + recording: Check that we do not use a finished recording surface. + + User paranoia - as the replay is exposed to the user it is convenient to + add the finish check in the core replay function so that we gain a + paranoia check for the internal paths as well. + + src/cairo-recording-surface.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 5fe7c5842f3589efce765b3869c1dd55367a5aba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 10:13:09 2010 +0100 + + pdf; Emit subsurface patterns natively. + + Encode subsurface patterns into the PDF stream natively (when possible), + similar to the cairo-ps backend. + + src/cairo-pdf-surface.c | 113 +++++++++++++++++++++++++++++++++++++++-------- + 1 files changed, 94 insertions(+), 19 deletions(-) + +commit 8ded35fd69ed0bbb07359c0278071a25af66571c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 14:26:21 2010 +0100 + + ps: Enable native encoding of subsurface patterns. + + Carefully handle subsurfaces of a recording surface through the analysis + and paginated surfaces so that we can generate a native pattern for the + vector backends, demonstrated by the PostScript backend. + + Nothing remarkable, just a lot of bookkeeping to track the wrapped + surface types and to apply the correct offsets when generating the + subsurface pattern. + + src/cairo-analysis-surface.c | 13 +- + src/cairo-paginated-surface.c | 1 + + src/cairo-pdf-surface.c | 4 +- + src/cairo-ps-surface.c | 121 +++++++++++-- + src/cairo-recording-surface-private.h | 1 + + src/cairo-recording-surface.c | 12 +- + src/cairo-surface-private.h | 4 +- + src/cairo-surface-subsurface-private.h | 4 +- + src/cairo-surface-subsurface.c | 101 +++++++--- + src/cairo-surface-wrapper-private.h | 7 +- + src/cairo-surface-wrapper.c | 314 ++++++++++++++++++++++++++------ + src/cairo-surface.c | 13 +- + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/subsurface-reflect.c | 76 ++++++++ + test/subsurface-reflect.ref.png | Bin 0 -> 210 bytes + test/subsurface-repeat.c | 8 +- + test/subsurface-similar-repeat.c | 3 + + test/subsurface.c | 7 +- + test/subsurface.image16.ref.png | Bin 1430 -> 1643 bytes + test/subsurface.ref.png | Bin 1597 -> 1811 bytes + 21 files changed, 565 insertions(+), 126 deletions(-) + +commit 5fc04bba9fa8ddda8cf7d7a97015f21a21429172 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 21:51:29 2010 +0100 + + paginated: Call surface finish explicitly on recording surface + + During show_page() when we destroy the recording surface after emitting + the page, ensure that we actually call cairo_surface_finish() to dispose + of any self-referential reference leaks. + + src/cairo-paginated-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 3ae57234644c3756785c551beffe584f837b0273 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 21:50:22 2010 +0100 + + boilerplate: Ensure that the recording surfaces are finished. + + Be paranoid and explicitly call finish to cleanup self-referential leaks + when using paginated/recording surfaces. + + boilerplate/cairo-boilerplate-pdf.c | 5 ++++- + boilerplate/cairo-boilerplate-ps.c | 5 ++++- + boilerplate/cairo-boilerplate-svg.c | 5 ++++- + boilerplate/cairo-boilerplate.c | 10 +++++----- + 4 files changed, 17 insertions(+), 8 deletions(-) + +commit f08cc311af1248b39c3e757ef192515ed8506862 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 20:34:56 2010 +0100 + + boilerplate: Destroy the redundant image reference + + When using a script surface to record the recording surface, we replace + the local reference to the image surface. + + boilerplate/cairo-boilerplate.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ab2776c9a16134c50b48fd202263421ec0f466e7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 18:50:32 2010 +0100 + + snapshot: Attach the backend generated snapshot to the target + + Cache the result of snapshotting using the backend vfunc in the normal + manner by attaching the snapshot to the target. This should reduce + resource usage in these cases. + + src/cairo-surface-snapshot.c | 21 ++++++++++++++++++++- + 1 files changed, 20 insertions(+), 1 deletions(-) + +commit 07122f37d11eabe62bc9c81ccbf71bbe8b7a1005 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 15:19:18 2010 +0100 + + surface: Convert snapshots from an array to a double-linked list. + + Saves the memory allocation for the array, and the overhead of + maintaining the area for both insertions and more importantly deletes. + + src/cairo-recording-surface.c | 6 +-- + src/cairo-surface-private.h | 5 +- + src/cairo-surface-snapshot.c | 10 +-- + src/cairo-surface.c | 132 +++++++++++++----------------------- + src/cairo-vg-surface.c | 8 +-- + src/cairo-xcb-surface-core.c | 6 +-- + src/cairo-xcb-surface-render.c | 10 +-- + src/cairo-xcb-surface.c | 12 +-- + src/cairoint.h | 2 +- + src/drm/cairo-drm-i915-shader.c | 11 ++-- + src/drm/cairo-drm-i965-shader.c | 11 ++-- + src/drm/cairo-drm-intel-surface.c | 8 +-- + src/drm/cairo-drm-radeon-surface.c | 8 +-- + 13 files changed, 78 insertions(+), 151 deletions(-) + +commit 4cb733c28551f4a34cd4a225b8d797a55bf9b977 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 12:04:44 2010 +0100 + + image: Simplify translation of pattern matrix for composite_trapezoids() + + src/cairo-image-surface.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit 3940b0e91c274de0cf2fca4b34d4025b92965c19 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 17:29:13 2010 +0100 + + subsurface: s/region/rectangle/ + + After a renewed discussion, it was pointed out that the API in Cairo was + not restrictive and by using doubles we would be consisted with the rest + of the API. Thus prompting the name change to + + cairo_surface_create_for_rectangle() + + similar to cairo_rectangle(). + + And document the public API. + + src/cairo-surface-subsurface.c | 39 +++++++++++++++++++++++----- + src/cairo.h | 10 +++--- + test/subsurface-repeat.c | 4 +- + test/subsurface-similar-repeat.c | 2 +- + test/subsurface.c | 4 +- + util/cairo-script/cairo-script-operators.c | 12 ++++---- + util/cairo-trace/trace.c | 10 +++--- + 7 files changed, 53 insertions(+), 28 deletions(-) + +commit 4b6fa8d5a78731aca80f3c8c6320e7edc845c5b5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 30 09:47:51 2010 +0100 + + test: Remove group-unaligned.*new.png + + Entirely misleading, looks like PDF is behaving the same as image and + this remnant was thus giving the wrong impression. + + test/Makefile.am | 1 - + test/group-unaligned.pdf.new.png | Bin 427 -> 0 bytes + 2 files changed, 0 insertions(+), 1 deletions(-) + +commit e3f990d84131f7bd1e64e54d02bac780b1e9f85e +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 22:34:35 2010 +0200 + + test: Update reference images for last checkin + + Both tests now pas on all backends I tested: test, image, xlib and + recording + + test/a1-traps-sample.ref.png | Bin 148 -> 120 bytes + test/unantialiased-shapes.ref.png | Bin 3969 -> 3968 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 6d36f06751377459e35afe1ac26c59d33b16c730 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 22:12:02 2010 +0200 + + image: Round down when rendering antialiased boxes + + Matches Pixman's output when going via pixman_rasterize_trapezoid() + + src/cairo-fixed-private.h | 6 ++++++ + src/cairo-image-surface.c | 9 +++++---- + 2 files changed, 11 insertions(+), 4 deletions(-) + +commit 95179a5de91b5c6f99dbccc3b6c950df58d4f2a7 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 20:45:23 2010 +0200 + + Remove excessive semicolons + + s/;;/;/ basically + + src/cairo-image-surface.c | 2 +- + src/cairo-wideint.c | 2 +- + src/drm/cairo-drm-i965-shader.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 5d07307b691afccccbb15f773d5231669ba44f5a +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 18:20:59 2010 +0200 + + xlib: Don't modify variables that are needed later + + In the XCopyArea region code, don't modify src_x/y when they are later + used in the unbounded fixup code. + + Exposed by composite-integer-translate-source test. + + src/cairo-xlib-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 90160deb2a84f787dff46243471e37600b24799b +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 18:20:44 2010 +0200 + + xlib: Constify some function arguments + + src/cairo-xlib-surface.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 4da71d1a01c4d4cc84b5e31cc89dd7f297b23359 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 18:11:54 2010 +0200 + + xlib: remove unused code + + src/cairo-xlib-surface.c | 12 ------------ + 1 files changed, 0 insertions(+), 12 deletions(-) + +commit 758ffadcb1d0a0478d43ca40775687a37e5920a4 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 16:54:09 2010 +0200 + + fallback: Only do _fill/compsoite_rectangles on bounded source + + For unbounded sources, these optimizations fail to take into account the + regions outside the source. + + src/cairo-surface-fallback.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +commit 6288ad719da898c4a75cdc6527f5a41d4c900e57 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 15:37:32 2010 +0200 + + fallback: translate extents regions properly + + The extents clip regions that were created for unbounded operators were + not translated properly. This has been changed now. + + This is a followup to 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d. + + src/cairo-surface-fallback.c | 17 ++++++++++------- + 1 files changed, 10 insertions(+), 7 deletions(-) + +commit b0760826f30f63637561b353e7eed1913036da2d +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 12:11:48 2010 +0200 + + test: Set have_result for image matches + + Causes the log to contain information about the reference imagery used. + + test/cairo-test.c | 16 +++++++++++++--- + 1 files changed, 13 insertions(+), 3 deletions(-) + +commit 8f85c2d77cc2ca7984f9771c0096fbad798dbde8 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 29 12:09:31 2010 +0200 + + image: translate source pattern in composite_trapezoids() + + Fixes xlib fallback paths as exposed by the clip-push-group test. + + src/cairo-image-surface.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit aa495eac5a2db9b396eb1953eb112c733d0ababc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 29 10:04:18 2010 +0100 + + atomic: Tweak for compilation x86. + + Missing definition of _cairo_atomic_ptr_get() used in the fallbacks. + + src/cairo-atomic-private.h | 27 ++++++++++++++++++++------- + src/cairo-atomic.c | 16 ++++++++-------- + 2 files changed, 28 insertions(+), 15 deletions(-) + +commit 248af38b3efa3f96225eea43f4ba5b94baff34a6 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 28 17:23:47 2010 +0200 + + atomic: Add MacOSX atomic implementation + + Enable atomic operation on MacOS X, using the functions provided by + libkern/OSAtomic.h + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + build/aclocal.cairo.m4 | 10 ++++++++++ + src/cairo-atomic-private.h | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 0 deletions(-) + +commit 56a367a1626b2b7ec3d9e64e74f016867f294a34 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 28 19:17:10 2010 +0200 + + atomic: Correct implementation of _atomic_fetch () + + _atomic_fetch() was expected to replace the content of a slot with + NULL and return the old content, but it incorrectly returned the + previous content even if it was unable to perform the exchange + (because of conflicts with other threads accessing the pool). + + Fix suggested by Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-freed-pool-private.h | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit d66b1ca1cfda64088521581bc2bd494bff9f5d23 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 28 16:23:15 2010 +0200 + + atomic: Separate bool and old-value compare-and-exchange + + Some implementations only offer one version of compare-and-exchange, + thus we expose both through cairo-atomic, implementing what is missing + through appropriate fallbacks. + *_cmpxchg() now return a boolean (this unbreaks _cairo_atomic_uint_cmpxchg) + *_cmpxchg_return_old() return the old value + Code is updated everywhere to reflect this, by using *_cmpxchg() + wherever the returned value was only tested to check if the exchange + had really taken place. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-atomic-private.h | 68 ++++++++++++++++++++++++++++++++++++--- + src/cairo-atomic.c | 4 +- + src/cairo-freed-pool-private.h | 4 +- + src/cairo-image-surface.c | 6 ++-- + src/cairo.c | 4 +- + src/drm/cairo-drm.c | 2 +- + 6 files changed, 72 insertions(+), 16 deletions(-) + +commit a0bf424b820b404947671b56f357a2cef71640fb +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 28 15:29:32 2010 +0200 + + atomic: Remove unused function _cairo_atomic_int_set() + + _cairo_atomic_int_set() was only used in the definition of + CAIRO_REFERENCE_SET_VALUE, which was never used. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-atomic-private.h | 10 ---------- + src/cairo-atomic.c | 8 -------- + src/cairo-reference-count-private.h | 1 - + 3 files changed, 0 insertions(+), 19 deletions(-) + +commit 9ce8bef9d6e6d773dd1f4b184916ed5c96c3541d +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 18:34:20 2010 +0200 + + fallback: Propagate extents properly + + Otherwise unbounded operators will clear the full surface. + Improves the score for the unbounded-operator test, in particular the + output for the test-fallback case. + + src/cairo-surface-fallback.c | 112 +++++++++++++++++++++++++++++------------- + 1 files changed, 78 insertions(+), 34 deletions(-) + +commit 91fd97ae7c4de23c61d481c98c9352f0639d76dd +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 20:21:37 2010 +0200 + + fallback: Pass the correct extents for unbounbded operations + + src/cairo-surface-fallback.c | 20 +++++++++++++------- + 1 files changed, 13 insertions(+), 7 deletions(-) + +commit 06e9caf86199e8261a07db6d4774628fa147728d +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 20:05:13 2010 +0200 + + image: pixman_image_fill_rectangles() => pixman_image_fill_boxes() + + src/cairo-image-surface.c | 32 ++++++++++++++++---------------- + 1 files changed, 16 insertions(+), 16 deletions(-) + +commit bc49df322770b3bd1797c0e153b97f1f296fbd1e +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 19:56:36 2010 +0200 + + pixman_image_composite => pixman_image_composite32 + + Fix up the remaining callers + + src/cairo-gl-surface.c | 12 ++++++------ + src/cairo-image-surface.c | 12 ++++++------ + 2 files changed, 12 insertions(+), 12 deletions(-) + +commit 393da364a7f26e696141c58d4fb6fdefb2ea245a +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 18:18:15 2010 +0200 + + fallback: Sanitize code that queries surface extents + + The previous code was setting extents.is_bounded, but that value has a + completely different meaning. + + src/cairo-surface-fallback.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit 13914039567d5e8269fc29c51018ce172a40f2e9 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 13:05:28 2010 +0200 + + test: run xlib-expose-event test unconditionally + + test/Makefile.sources | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2ce1afa3222145e9c4f8c74a0034e0da9e93b70b +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 12:54:54 2010 +0200 + + test-suite: add image_diff_is_failure() function + + This cleans the code and fixes a boolean logic error where this check + was done manually. + + test/buffer-diff.c | 8 ++++++++ + test/buffer-diff.h | 4 ++++ + test/cairo-test-trace.c | 3 +-- + test/cairo-test.c | 9 +++------ + test/fallback-resolution.c | 3 +-- + test/xlib-surface.c | 4 ++-- + 6 files changed, 19 insertions(+), 12 deletions(-) + +commit 2a91d425088cb8a93de76f2f91f32a7f23f0aecd +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 28 12:26:29 2010 +0200 + + fallback: Fix clip_region handling in mask creation + + Fixes the xlib-expose-event test. + + src/cairo-surface-fallback.c | 16 +++++++++++++++- + 1 files changed, 15 insertions(+), 1 deletions(-) + +commit bb853916f3581af13cc1abff185ef5e0218f9f1e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 11:37:59 2010 +0100 + + image: Generate clear/white/black images when !HAS_ATOMIC_OPS + + Andrea reported that b74cc0f broke compilation without atomic ops. + + src/cairo-image-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 45d4c6e0b2fe62a3c6f1fdb7f359c9771111b470 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 10:01:06 2010 +0100 + + script: Replace the missing " " after pop + + I accidentally deleted the whitespace after popping the recording + surface, thus causing the scripts to be broken. + + src/cairo-script-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6a99e83c50d715ba1e47aa5c7be714a423568e57 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 09:55:20 2010 +0100 + + subsurface: Mark the image as !clear after copying. + + src/cairo-surface-subsurface.c | 22 ++++++++++++---------- + 1 files changed, 12 insertions(+), 10 deletions(-) + +commit ca3df75e8f876991f2dc9e85c9daa3fd96e826d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 09:54:56 2010 +0100 + + script: Reconstruct subsurfaces. + + src/cairo-script-surface.c | 84 ++++++++++++++++++++++++++++++------------- + 1 files changed, 58 insertions(+), 26 deletions(-) + +commit 0f0d349a400e097856e6d9863e66c0a041e65c35 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 09:54:37 2010 +0100 + + trace: Wrap cairo_surface_create_for_region() + + util/cairo-script/cairo-script-operators.c | 33 +++++++++++++++++++++++++ + util/cairo-trace/trace.c | 36 ++++++++++++++++++++++++++++ + 2 files changed, 69 insertions(+), 0 deletions(-) + +commit 80fc2a8e49aa6ab4646b14eed9a4cf348a9149b4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 28 09:50:49 2010 +0100 + + test: Expand xlib-expose-event to cover all backends + + Use a similar surface to create an equivalent backing surface for + any backend, thus enabling the test to run against any target. + + The comment about forcing fallbacks has long since been false. + + test/xlib-expose-event.c | 76 +++++---------------------------------------- + 1 files changed, 9 insertions(+), 67 deletions(-) + +commit d3c4349730be991db0c85094103c744fc2d94836 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 21:04:52 2010 +0100 + + test: Mark surfaces as finished if the data goes out of scope. + + The issue being that as the on-stack data is being referenced via a + zero-copy snapshot outside of the functions scope as the surface is only + finished and the source written long after the draw() returns. The + correct procedure is that the user must call cairo_surface_finish() + prior to any surface becoming inaccessible. In this case, this triggers + the snapshot to preserve a copy of the data whilst it is still valid. + + test/bilevel-image.c | 4 +++- + test/filter-nearest-offset.c | 1 + + test/mask-ctm.c | 4 +++- + test/mask-surface-ctm.c | 1 + + test/move-to-show-surface.c | 2 ++ + test/paint-repeat.c | 1 + + test/paint-source-alpha.c | 1 + + test/paint-with-alpha.c | 1 + + test/rgb24-ignore-alpha.c | 1 + + test/scale-down-source-surface-paint.c | 1 + + test/scale-source-surface-paint.c | 1 + + test/set-source.c | 1 + + test/smask-image-mask.c | 4 +++- + test/smask.c | 4 +++- + test/source-surface-scale-paint.c | 1 + + test/translate-show-surface.c | 1 + + test/zero-alpha.c | 1 + + 17 files changed, 26 insertions(+), 4 deletions(-) + +commit a5f54e48e3136076f3c8c60fc068f6a2105d9a33 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 21:05:22 2010 +0100 + + snapshot: The snapshot masquerades as the target surface type. + + Not wholly convinced this is a good idea, but it matches the behaviour + of the other internal surface types. + + src/cairo-surface-snapshot.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 4a678afdf73d6f7b2b8a532ac7024976702c8aac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 18:57:56 2010 +0100 + + snapshot: Simply memcpy if the cloned image matches the original. + + src/cairo-surface-snapshot.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +commit b74cc0f6d5b71295c70d4c29e24ab252175f9a5b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 18:57:00 2010 +0100 + + image: Convert 1x1 samples into solid colors. + + If the sampled extents of the operation on an image surface is just a + single pixel, we can safely convert to a solid color. + + src/cairo-image-surface.c | 161 ++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 136 insertions(+), 25 deletions(-) + +commit f5cf131a9d8984bd6b3403396beed2ffbc26bded +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 18:56:23 2010 +0100 + + surface: skip OVER is the source is clear. + + If the source has no alpha, the OVER operation becomes DST, i.e. a + no-op. + + src/cairo-surface.c | 24 ++++++++++++++++++++++++ + 1 files changed, 24 insertions(+), 0 deletions(-) + +commit 453b1cba11f71694cfe0c3d934ac1f5aabda67fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 16:47:31 2010 +0100 + + test: Update image ref images, and used fonts in README + + test/Makefile.am | 2 +- + test/README | 6 +++--- + test/finer-grained-fallbacks.argb32.ref.png | Bin 0 -> 1068 bytes + test/finer-grained-fallbacks.ref.png | Bin 1070 -> 0 bytes + test/finer-grained-fallbacks.rgb24.ref.png | Bin 839 -> 837 bytes + test/ft-text-vertical-layout-type1.ref.png | Bin 3644 -> 3591 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 3616 bytes + test/mask-glyphs.ref.png | Bin 1189352 -> 1189351 bytes + test/smask-text.ref.png | Bin 1874 -> 1672 bytes + test/smask.ref.png | Bin 3423 -> 3396 bytes + 10 files changed, 4 insertions(+), 4 deletions(-) + +commit 70656bba81e01eaf7b48817b2ca16fdf6d0b4bd5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 14:19:22 2010 +0100 + + test: Add image16 refs + + test/Makefile.am | 144 ++++++++++++++++++++ + test/big-line.image16.ref.png | Bin 0 -> 988 bytes + test/bug-bo-rectangular.image16.ref.png | Bin 0 -> 955 bytes + test/caps-joins-alpha.image16.ref.png | Bin 0 -> 2268 bytes + test/caps-joins-curve.image16.ref.png | Bin 0 -> 4928 bytes + test/caps-joins.image16.ref.png | Bin 0 -> 2587 bytes + test/caps-sub-paths.image16.ref.png | Bin 0 -> 171 bytes + test/caps.image16.ref.png | Bin 0 -> 1936 bytes + test/clear-source.image16.ref.png | Bin 0 -> 909 bytes + test/clip-disjoint.image16.ref.png | Bin 0 -> 3886 bytes + test/clip-fill-no-op.image16.ref.png | Bin 0 -> 153 bytes + test/clip-fill-rule.image16.ref.png | Bin 0 -> 356 bytes + test/clip-fill-unbounded.image16.ref.png | Bin 0 -> 1204 bytes + test/clip-fill.image16.ref.png | Bin 0 -> 904 bytes + test/clip-image.image16.ref.png | Bin 0 -> 2032 bytes + test/clip-operator.image16.ref.png | Bin 0 -> 3131 bytes + test/clip-push-group.image16.ref.png | Bin 0 -> 159 bytes + test/clip-shape.image16.ref.png | Bin 0 -> 2488 bytes + test/clip-stroke-no-op.image16.ref.png | Bin 0 -> 153 bytes + test/clip-stroke-unbounded.image16.ref.png | Bin 0 -> 1255 bytes + test/clip-stroke.image16.ref.png | Bin 0 -> 1308 bytes + test/clip-text.image16.ref.png | Bin 0 -> 811 bytes + test/clip-twice.image16.ref.png | Bin 0 -> 1069 bytes + test/clipped-group.image16.ref.png | Bin 0 -> 281 bytes + test/clipped-surface.image16.ref.png | Bin 0 -> 296 bytes + test/close-path-current-point.image16.ref.png | Bin 0 -> 1804 bytes + ...omposite-integer-translate-over.image16.ref.png | Bin 0 -> 11570 bytes + ...posite-integer-translate-source.image16.ref.png | Bin 0 -> 11570 bytes + test/copy-path.image16.ref.png | Bin 0 -> 556 bytes + test/culled-glyphs.image16.ref.png | Bin 0 -> 426 bytes + test/dash-caps-joins.image16.ref.png | Bin 0 -> 4491 bytes + test/dash-curve.image16.ref.png | Bin 0 -> 32445 bytes + test/dash-scale.image16.ref.png | Bin 0 -> 7748 bytes + test/dash-state.image16.ref.png | Bin 0 -> 7910 bytes + test/degenerate-arc.image16.ref.png | Bin 0 -> 592 bytes + test/degenerate-arcs.image16.ref.png | Bin 0 -> 120 bytes + test/degenerate-curve-to.image16.ref.png | Bin 0 -> 278 bytes + test/degenerate-pen.image16.ref.png | Bin 0 -> 954 bytes + test/degenerate-rel-curve-to.image16.ref.png | Bin 0 -> 279 bytes + test/extend-pad-border.image16.ref.png | Bin 0 -> 446 bytes + test/extend-reflect-similar.image16.ref.png | Bin 0 -> 99786 bytes + test/extend-reflect.image16.ref.png | Bin 0 -> 99786 bytes + test/extend-repeat-similar.image16.ref.png | Bin 0 -> 83738 bytes + test/extend-repeat.image16.ref.png | Bin 0 -> 83738 bytes + test/extended-blend-alpha.image16.ref.png | Bin 0 -> 4626 bytes + test/extended-blend.image16.ref.png | Bin 0 -> 4145 bytes + test/fill-alpha-pattern.image16.ref.png | Bin 0 -> 3380 bytes + test/fill-alpha.image16.ref.png | Bin 0 -> 2145 bytes + test/fill-and-stroke-alpha-add.image16.ref.png | Bin 0 -> 536 bytes + test/fill-and-stroke-alpha.image16.ref.png | Bin 0 -> 470 bytes + test/fill-and-stroke.image16.ref.png | Bin 0 -> 251 bytes + test/fill-degenerate-sort-order.image16.ref.png | Bin 0 -> 1753 bytes + test/fill-image.image16.ref.png | Bin 0 -> 1163 bytes + test/fill-rule.image16.ref.png | Bin 0 -> 1625 bytes + test/filter-bilinear-extents.image16.ref.png | Bin 0 -> 895 bytes + test/filter-nearest-transformed.image16.ref.png | Bin 0 -> 418 bytes + test/finer-grained-fallbacks.image16.ref.png | Bin 0 -> 862 bytes + test/font-matrix-translation.image16.ref.png | Bin 0 -> 852 bytes + test/ft-show-glyphs-positioning.image16.ref.png | Bin 0 -> 2772 bytes + test/ft-show-glyphs-table.image16.ref.png | Bin 0 -> 8052 bytes + test/ft-text-vertical-layout-type1.image16.ref.png | Bin 0 -> 3072 bytes + test/ft-text-vertical-layout-type3.image16.ref.png | Bin 0 -> 3141 bytes + test/glyph-cache-pressure.image16.ref.png | Bin 0 -> 2453 bytes + test/group-clip.image16.ref.png | Bin 0 -> 193 bytes + test/group-unaligned.image16.ref.png | Bin 0 -> 395 bytes + test/huge-linear.image16.ref.png | Bin 0 -> 1542 bytes + test/huge-radial.image16.ref.png | Bin 0 -> 17893 bytes + test/image-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/joins.image16.ref.png | Bin 0 -> 5858 bytes + test/large-font.image16.ref.png | Bin 0 -> 5713 bytes + test/large-twin-antialias-mixed.image16.ref.png | Bin 0 -> 14398 bytes + test/leaky-dashed-rectangle.image16.ref.png | Bin 0 -> 367 bytes + test/leaky-dashed-stroke.image16.ref.png | Bin 0 -> 8089 bytes + test/leaky-polygon.image16.ref.png | Bin 0 -> 329 bytes + test/line-width-scale.image16.ref.png | Bin 0 -> 4721 bytes + test/linear-gradient-reflect.image16.ref.png | Bin 0 -> 190 bytes + test/linear-gradient-subset.image16.ref.png | Bin 0 -> 791 bytes + test/linear-gradient.image16.ref.png | Bin 0 -> 941 bytes + test/linear-uniform.image16.ref.png | Bin 0 -> 131 bytes + test/long-dashed-lines.image16.ref.png | Bin 0 -> 1974 bytes + test/mask-alpha.image16.ref.png | Bin 0 -> 560 bytes + test/mask-glyphs.image16.ref.png | Bin 0 -> 1053144 bytes + test/mask-transformed-image.image16.ref.png | Bin 0 -> 2748 bytes + test/mask-transformed-similar.image16.ref.png | Bin 0 -> 2748 bytes + test/mask.image16.ref.png | Bin 0 -> 5533 bytes + test/operator-alpha-alpha.image16.ref.png | Bin 0 -> 4140 bytes + test/operator-source.image16.ref.png | Bin 0 -> 2756 bytes + test/over-around-source.image16.ref.png | Bin 0 -> 491 bytes + test/paint-source-alpha.image16.ref.png | Bin 0 -> 253 bytes + test/paint-with-alpha.image16.ref.png | Bin 0 -> 253 bytes + test/path-append.image16.ref.png | Bin 0 -> 5252 bytes + test/path-stroke-twice.image16.ref.png | Bin 0 -> 210 bytes + test/pdf-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/ps-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/pthread-same-source.image16.ref.png | Bin 0 -> 1007 bytes + test/push-group-color.image16.ref.png | Bin 0 -> 2277 bytes + test/push-group.image16.ref.png | Bin 0 -> 2286 bytes + test/radial-gradient-source.image16.ref.png | Bin 0 -> 132037 bytes + test/radial-gradient.image16.ref.png | Bin 0 -> 202415 bytes + .../random-intersections-curves-eo.image16.ref.png | Bin 0 -> 181565 bytes + .../random-intersections-curves-nz.image16.ref.png | Bin 0 -> 204090 bytes + test/random-intersections-eo.image16.ref.png | Bin 0 -> 97747 bytes + test/random-intersections-nonzero.image16.ref.png | Bin 0 -> 107644 bytes + test/recording-surface-pattern.image16.ref.png | Bin 0 -> 2856 bytes + test/reflected-stroke.image16.ref.png | Bin 0 -> 4254 bytes + test/rotated-clip.image16.ref.png | Bin 0 -> 3336 bytes + test/rounded-rectangle-fill.image16.ref.png | Bin 0 -> 730 bytes + test/rounded-rectangle-stroke.image16.ref.png | Bin 0 -> 732 bytes + test/scale-offset-image.image16.ref.png | Bin 0 -> 7793 bytes + test/scale-offset-similar.image16.ref.png | Bin 0 -> 7793 bytes + test/select-font-face.image16.ref.png | Bin 0 -> 1962 bytes + test/show-text-current-point.image16.ref.png | Bin 0 -> 1932 bytes + test/smask-fill.image16.ref.png | Bin 0 -> 925 bytes + test/smask-mask.image16.ref.png | Bin 0 -> 1358 bytes + test/smask-paint.image16.ref.png | Bin 0 -> 1469 bytes + test/smask-stroke.image16.ref.png | Bin 0 -> 1330 bytes + test/smask-text.image16.ref.png | Bin 0 -> 1206 bytes + test/smask.image16.ref.png | Bin 0 -> 2213 bytes + test/spline-decomposition.image16.ref.png | Bin 0 -> 14064 bytes + test/stroke-ctm-caps.image16.ref.png | Bin 0 -> 908 bytes + test/stroke-image.image16.ref.png | Bin 0 -> 1167 bytes + test/subsurface.image16.ref.png | Bin 0 -> 1430 bytes + test/surface-pattern-operator.image16.ref.png | Bin 0 -> 1977 bytes + test/surface-pattern-scale-down.image16.ref.png | Bin 0 -> 1313 bytes + test/surface-pattern-scale-up.image16.ref.png | Bin 0 -> 3864 bytes + test/surface-pattern.image16.ref.png | Bin 0 -> 11870 bytes + test/svg-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/text-antialias-gray.image16.ref.png | Bin 0 -> 895 bytes + test/text-antialias-subpixel.image16.ref.png | Bin 0 -> 866 bytes + test/text-glyph-range.image16.ref.png | Bin 0 -> 1731 bytes + test/text-rotate.image16.ref.png | Bin 0 -> 12599 bytes + test/text-transform.image16.ref.png | Bin 0 -> 4469 bytes + test/transforms.image16.ref.png | Bin 0 -> 326 bytes + test/trap-clip.image16.ref.png | Bin 0 -> 4344 bytes + test/twin-antialias-gray.image16.ref.png | Bin 0 -> 3005 bytes + test/twin-antialias-mixed.image16.ref.png | Bin 0 -> 2049 bytes + test/twin-antialias-subpixel.image16.ref.png | Bin 0 -> 3005 bytes + test/twin.image16.ref.png | Bin 0 -> 3005 bytes + test/unbounded-operator.image16.ref.png | Bin 0 -> 1276 bytes + test/user-font-mask.image16.ref.png | Bin 0 -> 4948 bytes + test/user-font-proxy.image16.ref.png | Bin 0 -> 14460 bytes + test/user-font-rescale.image16.ref.png | Bin 0 -> 12590 bytes + test/user-font.image16.ref.png | Bin 0 -> 5814 bytes + test/xcomposite-projection.image16.ref.png | Bin 0 -> 1000 bytes + test/xlib-surface-source.image16.ref.png | Bin 0 -> 305 bytes + 145 files changed, 144 insertions(+), 0 deletions(-) + +commit ebe6f2ac6988991afde0d685bea9f207ed3360d8 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Apr 27 10:59:09 2010 +0200 + + quartz: Assert success of path creation + + Path creation can only fail because of the callbacks, but in quartz + they all return CAIRO_STATUS_SUCCESS. Therefore we can just assert + that path creation was successful and simplify calling functions + (as they don't have to handle potential errors anymore). + + src/cairo-quartz-surface.c | 35 +++++++++++++++-------------------- + 1 files changed, 15 insertions(+), 20 deletions(-) + +commit f67b6009278ef3dfe91ddbffb989dcfeed174352 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Apr 4 11:50:41 2010 +0200 + + quartz: Simplify path creation + + If paths are created before changing the ctm (when stroking) no + multiplication is needed in the path construction code. + + src/cairo-quartz-surface.c | 60 +++++++------------------------------------ + 1 files changed, 10 insertions(+), 50 deletions(-) + +commit 3b2ceff0502ba409c161e497ebe015e0a0a88847 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 7 18:34:25 2010 +0200 + + quartz: Stroke without ctm_inverse multiplication + + If the CTM is not changed before creating the path, no multiplication + needs to be made between points and the inverse of the CTM. + + src/cairo-quartz-surface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 514d366cde689f8200b049834bebbd421d5d8bcb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 27 11:07:09 2010 +0100 + + snapshot: propagate status on finish + + src/cairo-surface-snapshot.c | 11 ++++++++--- + 1 files changed, 8 insertions(+), 3 deletions(-) + +commit a505104013a1db0c8b1092c8a1848d7f0b02e6bc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 26 20:22:13 2010 +0100 + + image: Compute sample extents + + In order to reuse the original image as the pixman pattern, then the + entire operation must be wholly contained within the extents of the + image (including subsurfaces) and be reducible to an untransformed + REPEAT_NONE. + + src/cairo-image-surface.c | 72 +++++++++++++++++++++++++++++--------------- + src/cairo-pattern.c | 2 +- + src/cairoint.h | 4 ++ + 3 files changed, 52 insertions(+), 26 deletions(-) + +commit b8a7f8621a84083735d0e2c8748f5fa2b7f4b36a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Apr 27 10:17:23 2010 +0200 + + Update FSF address + + I updated the Free Software Foundation address using the following script. + + for i in $(git grep Temple | cut -d: -f1 ) + do + sed -e 's/59 Temple Place[, -]* Suite 330, Boston, MA *02111-1307[, ]* USA/51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA/' -i "$i" + done + + Fixes http://bugs.freedesktop.org/show_bug.cgi?id=21356 + + COPYING-LGPL-2.1 | 4 ++-- + boilerplate/cairo-boilerplate-drm.c | 2 +- + boilerplate/cairo-boilerplate-gl.c | 2 +- + boilerplate/cairo-boilerplate-qt.cpp | 2 +- + boilerplate/cairo-boilerplate-vg.c | 2 +- + build/aclocal.pkg.m4 | 2 +- + doc/tutorial/src/include/cairo-tutorial-gtk.h | 2 +- + doc/tutorial/src/include/cairo-tutorial-pdf.h | 2 +- + doc/tutorial/src/include/cairo-tutorial-png.h | 2 +- + doc/tutorial/src/include/cairo-tutorial-xlib.h | 2 +- + doc/tutorial/src/include/cairo-tutorial.h | 2 +- + src/cairo-analysis-surface-private.h | 2 +- + src/cairo-analysis-surface.c | 2 +- + src/cairo-arc-private.h | 2 +- + src/cairo-arc.c | 2 +- + src/cairo-array.c | 2 +- + src/cairo-atomic-private.h | 2 +- + src/cairo-atomic.c | 2 +- + src/cairo-base64-stream.c | 2 +- + src/cairo-base85-stream.c | 2 +- + src/cairo-bentley-ottmann-rectangular.c | 2 +- + src/cairo-bentley-ottmann-rectilinear.c | 2 +- + src/cairo-bentley-ottmann.c | 2 +- + src/cairo-beos-surface.cpp | 2 +- + src/cairo-beos.h | 2 +- + src/cairo-botor-scan-converter.c | 2 +- + src/cairo-boxes-private.h | 2 +- + src/cairo-boxes.c | 2 +- + src/cairo-cache-private.h | 2 +- + src/cairo-cache.c | 2 +- + src/cairo-cff-subset.c | 2 +- + src/cairo-clip-private.h | 2 +- + src/cairo-clip.c | 2 +- + src/cairo-color.c | 2 +- + src/cairo-combsort-private.h | 2 +- + src/cairo-compiler-private.h | 2 +- + src/cairo-composite-rectangles-private.h | 2 +- + src/cairo-composite-rectangles.c | 2 +- + src/cairo-debug.c | 2 +- + src/cairo-deflate-stream.c | 2 +- + src/cairo-deprecated.h | 2 +- + src/cairo-device-private.h | 2 +- + src/cairo-device.c | 2 +- + src/cairo-directfb-surface.c | 2 +- + src/cairo-directfb.h | 2 +- + src/cairo-drm.h | 2 +- + src/cairo-egl-context.c | 2 +- + src/cairo-error-private.h | 2 +- + src/cairo-fixed-private.h | 2 +- + src/cairo-fixed-type-private.h | 2 +- + src/cairo-fixed.c | 2 +- + src/cairo-font-face-twin.c | 2 +- + src/cairo-font-face.c | 2 +- + src/cairo-font-options.c | 2 +- + src/cairo-freed-pool-private.h | 2 +- + src/cairo-freed-pool.c | 2 +- + src/cairo-ft-font.c | 2 +- + src/cairo-ft-private.h | 2 +- + src/cairo-ft.h | 2 +- + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-shaders.c | 2 +- + src/cairo-gl-surface.c | 2 +- + src/cairo-gl.h | 2 +- + src/cairo-glx-context.c | 2 +- + src/cairo-gstate-private.h | 2 +- + src/cairo-gstate.c | 2 +- + src/cairo-hash-private.h | 2 +- + src/cairo-hash.c | 2 +- + src/cairo-hull.c | 2 +- + src/cairo-image-info-private.h | 2 +- + src/cairo-image-info.c | 2 +- + src/cairo-image-surface.c | 2 +- + src/cairo-list-private.h | 2 +- + src/cairo-lzw.c | 2 +- + src/cairo-malloc-private.h | 2 +- + src/cairo-matrix.c | 2 +- + src/cairo-misc.c | 2 +- + src/cairo-mutex-impl-private.h | 2 +- + src/cairo-mutex-list-private.h | 2 +- + src/cairo-mutex-private.h | 2 +- + src/cairo-mutex-type-private.h | 2 +- + src/cairo-mutex.c | 2 +- + src/cairo-os2-private.h | 2 +- + src/cairo-os2-surface.c | 2 +- + src/cairo-os2.h | 2 +- + src/cairo-output-stream-private.h | 2 +- + src/cairo-output-stream.c | 2 +- + src/cairo-paginated-private.h | 2 +- + src/cairo-paginated-surface-private.h | 2 +- + src/cairo-paginated-surface.c | 2 +- + src/cairo-path-bounds.c | 2 +- + src/cairo-path-fill.c | 2 +- + src/cairo-path-fixed-private.h | 2 +- + src/cairo-path-fixed.c | 2 +- + src/cairo-path-in-fill.c | 2 +- + src/cairo-path-private.h | 2 +- + src/cairo-path-stroke.c | 2 +- + src/cairo-path.c | 2 +- + src/cairo-pdf-operators-private.h | 2 +- + src/cairo-pdf-operators.c | 2 +- + src/cairo-pdf-surface-private.h | 2 +- + src/cairo-pdf-surface.c | 2 +- + src/cairo-pdf.h | 2 +- + src/cairo-pen.c | 2 +- + src/cairo-png.c | 2 +- + src/cairo-polygon.c | 2 +- + src/cairo-private.h | 2 +- + src/cairo-ps-surface-private.h | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-ps.h | 2 +- + src/cairo-qt-surface.cpp | 2 +- + src/cairo-qt.h | 2 +- + src/cairo-quartz-font.c | 2 +- + src/cairo-quartz-image-surface.c | 2 +- + src/cairo-quartz-image.h | 2 +- + src/cairo-quartz-private.h | 2 +- + src/cairo-quartz-surface.c | 2 +- + src/cairo-quartz.h | 2 +- + src/cairo-recording-surface-private.h | 2 +- + src/cairo-recording-surface.c | 2 +- + src/cairo-rectangle.c | 2 +- + src/cairo-rectangular-scan-converter.c | 2 +- + src/cairo-reference-count-private.h | 2 +- + src/cairo-region-private.h | 2 +- + src/cairo-region.c | 2 +- + src/cairo-rtree-private.h | 2 +- + src/cairo-rtree.c | 2 +- + src/cairo-scaled-font-private.h | 2 +- + src/cairo-scaled-font-subsets-private.h | 2 +- + src/cairo-scaled-font-subsets.c | 2 +- + src/cairo-scaled-font.c | 2 +- + src/cairo-script-surface.c | 2 +- + src/cairo-script.h | 2 +- + src/cairo-skia-surface.cpp | 2 +- + src/cairo-skia.h | 2 +- + src/cairo-slope-private.h | 2 +- + src/cairo-slope.c | 2 +- + src/cairo-spline.c | 2 +- + src/cairo-stroke-style.c | 2 +- + src/cairo-surface-clipper-private.h | 2 +- + src/cairo-surface-clipper.c | 2 +- + src/cairo-surface-fallback-private.h | 2 +- + src/cairo-surface-fallback.c | 2 +- + src/cairo-surface-offset-private.h | 2 +- + src/cairo-surface-offset.c | 2 +- + src/cairo-surface-private.h | 2 +- + src/cairo-surface-snapshot-private.h | 2 +- + src/cairo-surface-snapshot.c | 2 +- + src/cairo-surface-subsurface-private.h | 2 +- + src/cairo-surface-subsurface.c | 2 +- + src/cairo-surface-wrapper-private.h | 2 +- + src/cairo-surface-wrapper.c | 2 +- + src/cairo-surface.c | 2 +- + src/cairo-svg-surface-private.h | 2 +- + src/cairo-svg-surface.c | 2 +- + src/cairo-svg.h | 2 +- + src/cairo-system.c | 2 +- + src/cairo-tee-surface-private.h | 2 +- + src/cairo-tee-surface.c | 2 +- + src/cairo-toy-font-face.c | 2 +- + src/cairo-traps.c | 2 +- + src/cairo-truetype-subset-private.h | 2 +- + src/cairo-truetype-subset.c | 2 +- + src/cairo-type1-fallback.c | 2 +- + src/cairo-type1-private.h | 2 +- + src/cairo-type1-subset.c | 2 +- + src/cairo-type3-glyph-surface-private.h | 2 +- + src/cairo-type3-glyph-surface.c | 2 +- + src/cairo-types-private.h | 2 +- + src/cairo-unicode.c | 2 +- + src/cairo-user-font-private.h | 2 +- + src/cairo-user-font.c | 2 +- + src/cairo-version.c | 2 +- + src/cairo-vg-surface.c | 2 +- + src/cairo-vg.h | 2 +- + src/cairo-wideint-private.h | 2 +- + src/cairo-wideint-type-private.h | 2 +- + src/cairo-wideint.c | 2 +- + src/cairo-win32-font.c | 2 +- + src/cairo-win32-printing-surface.c | 2 +- + src/cairo-win32-private.h | 2 +- + src/cairo-win32-surface.c | 2 +- + src/cairo-win32.h | 2 +- + src/cairo-xcb-connection-core.c | 2 +- + src/cairo-xcb-connection-render.c | 2 +- + src/cairo-xcb-connection-shm.c | 2 +- + src/cairo-xcb-connection.c | 2 +- + src/cairo-xcb-private.h | 2 +- + src/cairo-xcb-screen.c | 2 +- + src/cairo-xcb-shm.c | 2 +- + src/cairo-xcb-surface-cairo.c | 2 +- + src/cairo-xcb-surface-core.c | 2 +- + src/cairo-xcb-surface-private.h | 2 +- + src/cairo-xcb-surface-render.c | 2 +- + src/cairo-xcb-surface.c | 2 +- + src/cairo-xcb.h | 2 +- + src/cairo-xlib-display.c | 2 +- + src/cairo-xlib-private.h | 2 +- + src/cairo-xlib-screen.c | 2 +- + src/cairo-xlib-surface-private.h | 2 +- + src/cairo-xlib-surface.c | 2 +- + src/cairo-xlib-visual.c | 2 +- + src/cairo-xlib-xcb-surface.c | 2 +- + src/cairo-xlib-xrender-private.h | 2 +- + src/cairo-xlib-xrender.h | 2 +- + src/cairo-xlib.h | 2 +- + src/cairo-xml-surface.c | 2 +- + src/cairo-xml.h | 2 +- + src/cairo.c | 2 +- + src/cairo.h | 2 +- + src/cairoint.h | 2 +- + src/drm/cairo-drm-bo.c | 2 +- + src/drm/cairo-drm-gallium-surface.c | 2 +- + src/drm/cairo-drm-i915-glyphs.c | 2 +- + src/drm/cairo-drm-i915-shader.c | 2 +- + src/drm/cairo-drm-i915-spans.c | 2 +- + src/drm/cairo-drm-i915-surface.c | 2 +- + src/drm/cairo-drm-i965-glyphs.c | 2 +- + src/drm/cairo-drm-i965-shader.c | 2 +- + src/drm/cairo-drm-i965-spans.c | 2 +- + src/drm/cairo-drm-i965-surface.c | 2 +- + src/drm/cairo-drm-intel-ioctl-private.h | 2 +- + src/drm/cairo-drm-intel-private.h | 2 +- + src/drm/cairo-drm-intel-surface.c | 2 +- + src/drm/cairo-drm-intel.c | 2 +- + src/drm/cairo-drm-private.h | 2 +- + src/drm/cairo-drm-radeon-private.h | 2 +- + src/drm/cairo-drm-radeon-surface.c | 2 +- + src/drm/cairo-drm-radeon.c | 2 +- + src/drm/cairo-drm-surface.c | 2 +- + src/drm/cairo-drm.c | 2 +- + src/test-fallback-surface.c | 2 +- + src/test-fallback-surface.h | 2 +- + src/test-fallback16-surface.c | 2 +- + src/test-fallback16-surface.h | 2 +- + src/test-null-surface.c | 2 +- + src/test-null-surface.h | 2 +- + src/test-paginated-surface.c | 2 +- + src/test-paginated-surface.h | 2 +- + src/test-wrapping-surface.c | 2 +- + src/test-wrapping-surface.h | 2 +- + test/dash-offset.c | 2 +- + test/miter-precision.c | 2 +- + test/operator-alpha-alpha.c | 2 +- + test/pdiff/args.c | 2 +- + test/pdiff/args.h | 2 +- + test/pdiff/lpyramid.c | 2 +- + test/pdiff/lpyramid.h | 2 +- + test/pdiff/pdiff.c | 2 +- + test/pdiff/pdiff.h | 2 +- + test/pdiff/perceptualdiff.c | 2 +- + util/backtrace-symbols.c | 2 +- + util/cairo-script/cairo-script-file.c | 2 +- + util/cairo-script/cairo-script-hash.c | 2 +- + util/cairo-script/cairo-script-interpreter.c | 2 +- + util/cairo-script/cairo-script-interpreter.h | 2 +- + util/cairo-script/cairo-script-objects.c | 2 +- + util/cairo-script/cairo-script-operators.c | 2 +- + util/cairo-script/cairo-script-private.h | 2 +- + util/cairo-script/cairo-script-scanner.c | 2 +- + util/cairo-script/cairo-script-stack.c | 2 +- + 262 files changed, 263 insertions(+), 263 deletions(-) + +commit 9672aab6b7c3f1efc065a6e5eb69443a1ecaa723 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Apr 26 21:28:53 2010 +0200 + + tests: Integrate xlib-expose-event test into usual tests + + Previously the test was using the preamble vfunc and generating output + itself. Now it uses the draw function and ignores any but the xlib + backends. + + test/xlib-expose-event.c | 63 +++++++++++----------------------------------- + 1 files changed, 15 insertions(+), 48 deletions(-) + +commit 36e0a3d3a01f9962d97386ea2d3c60020e937a81 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 26 18:18:27 2010 +0100 + + trace: Remove unused functions + + trace.c:1154: warning: ‘_has_font_face_id’ defined but not used + trace.c:1196: warning: ‘_get_pattern_id’ defined but not used + trace.c:1870: warning: ‘_emit_font_face’ defined but not used + trace.c:1882: warning: ‘_emit_scaled_font’ defined but not used + + util/cairo-trace/trace.c | 24 ------------------------ + 1 files changed, 0 insertions(+), 24 deletions(-) + +commit 3a2d9ffe0333090bb31ff01048ed506595f20cf9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 26 18:17:49 2010 +0100 + + trace: Check return value to suppress compiler warning + + trace.c: In function ‘get_prog_name’: + trace.c:741: warning: ignoring return value of ‘fgets’, declared with + attribute warn_unused_result + + util/cairo-trace/trace.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 37be183412eb35abc11e602857602aee05839fc7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 26 18:12:05 2010 +0100 + + trace: Trivial compiler warning fix + + trace.c:1665: warning: initialization from incompatible pointer type + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3c9e5d9792e101cfbd5a1116f06579539ed7b585 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 26 18:13:36 2010 +0100 + + region: Cast to remove const to suppress compiler warnings. + + airo-region.c: In function ‘cairo_region_intersect’: + cairo-region.c:503: warning: passing argument 3 of + ‘pixman_region32_intersect’ discards qualifiers from pointer target type + /usr/local/include/pixman-1/pixman.h:518: note: expected ‘struct + pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ + + cairo-region.c: In function ‘cairo_region_union’: + cairo-region.c:566: warning: passing argument 3 of + ‘pixman_region32_union’ discards qualifiers from pointer target type + /usr/local/include/pixman-1/pixman.h:521: note: expected ‘struct + pixman_region32_t *’ but argument is of type ‘const struct pixman_region32_t *’ + + src/cairo-region.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 8c72122df51a10a32b56cdf20e5a1037ee59a958 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 25 10:30:12 2010 +0100 + + clip: Skip combining with solid pixel aligned boxes. + + src/cairo-clip.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 240ebaf81a42c24c4d4267879c5ef8102e97017e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 25 09:44:18 2010 +0100 + + clip: Fix sign reverse when combining with the clip surface. + + Finally, found the reversed sign in the clipping code, thanks cu! + + Fixes: test/clip-shape + + src/cairo-clip.c | 24 ++---------------------- + 1 files changed, 2 insertions(+), 22 deletions(-) + +commit 4d3632761b928c14fb1ce257af077f45658d8537 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 25 09:42:13 2010 +0100 + + clip: Report the surface offset when retrieving the clip mask + + Stop the callers from guessing the origin of the clip surface by + reporting it explicitly! This enables the clip to bypass any rectangles + overlaid on top of the clip surface, which is common when the backends + limit the clip to the extents of the operation -- but irrelevant to the + actual content of the clip mask + + src/cairo-clip-private.h | 2 +- + src/cairo-clip.c | 26 ++++++++++++++++++++------ + src/cairo-image-surface.c | 39 +++++++++++++++++++++------------------ + src/cairo-surface-fallback.c | 20 ++++++++++---------- + src/cairo-xcb-surface-render.c | 31 +++++++++++++++---------------- + src/drm/cairo-drm-i915-shader.c | 9 ++++----- + src/drm/cairo-drm-i965-shader.c | 7 ++++--- + 7 files changed, 75 insertions(+), 59 deletions(-) + +commit 241ce933f8fa44210015dcdc4a66b3f9d8ac56e8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 25 09:37:50 2010 +0100 + + test: Add clip-shape + + cu found a bug when using clipping and fills with the image backend, but + it turns out to be the lost sign bug afflicting everything... + + To trigger the bug requires evaluating the clip surface prior to using + in with _cairo_clip_combine_with_surface(). Which is taken along a + particular path when using a clip mask with non-pixel geometry on image, + but more easily hit by the fallback code. + + Reported-by: <cairouser@yahoo.com> + + test/Makefile.am | 4 ++ + test/Makefile.sources | 1 + + test/clip-shape.c | 86 +++++++++++++++++++++++++++++++++ + test/clip-shape.ps.ref.png | Bin 0 -> 1797 bytes + test/clip-shape.ref.png | Bin 0 -> 2935 bytes + test/clip-shape.xlib-fallback.ref.png | Bin 0 -> 2916 bytes + test/clip-shape.xlib.ref.png | Bin 0 -> 2944 bytes + 7 files changed, 91 insertions(+), 0 deletions(-) + +commit 1687c7b7d3074de8eeea1a5c339df9a12cc38da2 +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Apr 23 22:22:28 2010 +0200 + + xlib: Fix display closing to work properly + + Previously we free()'d the cairo_device's memory which was not good at + all. Now the code causes cairo_device_finish() instead. + + src/cairo-xlib-display.c | 37 +++++++++++++++++++++++-------------- + 1 files changed, 23 insertions(+), 14 deletions(-) + +commit 637564c562de21c17c36d192d3ab1b3fe069754b +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Apr 23 22:10:32 2010 +0200 + + xlib: Fix screen device handling + + Add a _cairo_xlib_device_create() function that could easily be exported + as a replacement for _cairo_xlib_display_get(). This function returns a + cairo_device_t instead of a cairo_xlib_display_t because the display + isn't acquired. + + src/cairo-xlib-display.c | 33 ++++++++++++++++++--------------- + src/cairo-xlib-private.h | 4 ++-- + src/cairo-xlib-screen.c | 23 ++++++++++++++++------- + 3 files changed, 36 insertions(+), 24 deletions(-) + +commit 49b52a8946cbd5f785f71069313e4a204358887b +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 22 21:56:31 2010 +0200 + + gl: Make drawing to windows work again + + The correct MIN/MAG_FILTER wasn't set. + + src/cairo-gl-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 3efbc0c5c850d0cb5c5af5bcabbc7293670ea355 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Apr 20 21:58:59 2010 +0200 + + gl: Only unref a surface if it exists + + Note: This will likely work for NULL clones, but I prefer not + dereferencing NULLs. That gives people a wrong understanding of the code + (i.e. me). + + src/cairo-gl-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 64662be4ef3851d21658e5fdb2efb6806b45eba8 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 22 22:05:03 2010 +0200 + + gl: Use GLfloat instead of float in gl*Array() functions + + src/cairo-gl-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit e4f84f97b2f5d37bc1fb7dd510df733053ffe624 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Apr 20 21:33:50 2010 +0200 + + gl: Don't acquire the gl context twice + + src/cairo-gl-surface.c | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit e40a2d1f5eeea139e29c27e38495b9c0bf9e39a1 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 22 22:03:29 2010 +0200 + + gl: Use correct type when uploading images + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 55cf323f963bbcc11bcc290eaf71656e1ba91efd +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 22 21:58:01 2010 +0200 + + gl: fix typo in comment + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 887d43578c3acc7d45c8b2e3ade5da29be804eeb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 23 20:14:03 2010 +0100 + + xlib: Simply release the ref, not destroy, from CloseDisplay. + + Do not call the destroy function directly, but rely on the reference + counting to call the notifier upon the last reference. Instead, simply + release the reference we were holding for the cache and CloseDisplay + callback. + + src/cairo-xlib-display.c | 22 ++++++++++++---------- + 1 files changed, 12 insertions(+), 10 deletions(-) + +commit c63e3490a5fc2836837e7adcb5ecad62bdfd18ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 22 20:33:06 2010 +0100 + + cairo: Handle the all-clipped state in cairo_push_group() + + Yet another bug reported by Jeff Muizelaar, thanks! + + Fixes: test/clip-empty-group + + src/cairo.c | 81 +++++++++++++++++++++++++++++++++------------------------- + 1 files changed, 46 insertions(+), 35 deletions(-) + +commit 567e485f28716d7b72cbf864a0c573148be91cd8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 23 14:37:43 2010 +0100 + + test: Add clip-empty-group + + Exercise a bug reported by Jeff Muizelaar whereby cairo_push_group() was + broken by everything being clipped out. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/clip-empty-group.c | 65 +++++++++++++++++++++++++++++++++++++++++ + test/clip-empty-group.ref.png | Bin 0 -> 103 bytes + 4 files changed, 67 insertions(+), 0 deletions(-) + +commit 4438cc6a49e7e902dce045706f7125a2c3e2174b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 3 18:10:57 2010 +0100 + + cairo: Use explicit device flushing. + + Now with the concept of a cairo_device_t and the ability to flush it, + we now longer require the heuristic of automatically flushing on behalf + of the user at the end of every context. + + src/cairo.c | 11 ----------- + 1 files changed, 0 insertions(+), 11 deletions(-) + +commit 0fc140abc3c848e72b1b2b959026355fdbd6a941 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 21 12:01:49 2010 +0100 + + pdf: Suppress compiler warning. + + src/cairo-pdf-operators.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 1923a33a7277009b2898840d671fdc8f8d1b3922 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 21 11:59:33 2010 +0100 + + cairoint.h: Change ASSERT_NOT_REACHED to remove compiler warning + + src/cairoint.h | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit d366da7d8c46b08673b9e36dd130608a311ded4b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 23 14:38:42 2010 +0100 + + Win32 features update + + boilerplate/Makefile.win32.features | 8 -------- + src/Makefile.win32.features | 8 -------- + 2 files changed, 0 insertions(+), 16 deletions(-) + +commit c1e51a0264d204716f7706fbc66c2a7786b7947c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 23 14:33:53 2010 +0100 + + build: Spelling correction + + build/Makefile.win32.features-h | 1 - + build/configure.ac.features | 2 +- + 2 files changed, 1 insertions(+), 2 deletions(-) + +commit e0306da1d73509e2cfd0fce81a1b4259e5e3fcef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 21 22:51:53 2010 +0100 + + configure: typo in check for xcb-shm + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b7fbda276df52de6a5ac67397a8d49657233fcfa +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Apr 18 23:16:07 2010 +0200 + + Revert "script: Another RGB16_565 warning." + + This reverts commit a9f506493371ac91494488e5ca38e57ceb5a10cb. + + The change was already applied in bdf8f50adae67498d5fe36727ed2cd34c0206509. + + src/cairo-script-surface.c | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +commit f74ad37e66bbdcc4d727ed6d931dde870d84c2f4 +Author: Benjamin Otte <otte@redhat.com> +Date: Sun Apr 18 23:20:02 2010 +0200 + + xlib: Make display a cairo_device_t + + The code now uses the locking of the cairo_device_t instead of its own + mutexes. + + The code was modified so that cairo_surface_t does no longer reference + the display directly. Instead, it calls _cairo_xlib_display_acquire(). + If a function assumes an already acquired display, it now requires the + caller to provide a cairo_xlib_display_t parameter. Functions that do + not require an acquired display will not require the display parameter + or they will take the cairo_device_t instead. + + src/cairo-xlib-display.c | 234 +++++++---------- + src/cairo-xlib-private.h | 66 +++-- + src/cairo-xlib-screen.c | 161 ++--------- + src/cairo-xlib-surface-private.h | 2 - + src/cairo-xlib-surface.c | 557 ++++++++++++++++++++++--------------- + 5 files changed, 494 insertions(+), 526 deletions(-) + +commit 2bffa2467ed67517419e425fc34fb5b8294a9e96 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jan 27 10:56:22 2010 +0100 + + Use pixman_image_composite32() + + Replace all occurences of pixman_image_composite() + + src/cairo-directfb-surface.c | 16 +- + src/cairo-image-surface.c | 352 ++++++++++++++++++++-------------------- + src/cairo-pattern.c | 16 +- + src/cairo-surface-snapshot.c | 12 +- + src/cairo-surface-subsurface.c | 24 ++-- + src/cairo-xlib-surface.c | 16 +- + src/drm/cairo-drm-intel.c | 12 +- + 7 files changed, 224 insertions(+), 224 deletions(-) + +commit 567923d66a375259a6a8083aa4ef1051097a60c5 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jan 27 09:39:20 2010 +0100 + + image: Make unbounded fixup code not use pixman_fill() + + The new pixman_image_fill_boxes() does proper fallbacks for weird pixman + formats. + + src/cairo-image-surface.c | 123 +++++++++++++++++---------------------------- + 1 files changed, 47 insertions(+), 76 deletions(-) + +commit b648365cfa2d808b34b924a6b105718e0673bb9b +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jan 27 09:21:41 2010 +0100 + + Require pixman 0.17.5 + + We want pixman_image_composite32() and pixman_image_fill_boxes() + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0a19ad7c104cd81fa2b93aaf7ef9302f50b3f369 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 15 17:58:16 2010 +0200 + + gl: Get rid of "return value not checked" warnings + + Assert that those functions only return successfully. + + src/cairo-gl-surface.c | 42 ++++++++++++++++++++++++------------------ + 1 files changed, 24 insertions(+), 18 deletions(-) + +commit 7745ea21e104d0a5eec1814f19bacb7334f42185 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 14 15:59:36 2010 +0200 + + gl: acquire/release properly in _cairo_gl_draw_image() + + Fixes various testsuite failures, in particular ones related to masks. + + src/cairo-gl-surface.c | 16 ++++++++++++++-- + 1 files changed, 14 insertions(+), 2 deletions(-) + +commit 596d3017a1b11cb9844e69330cdece7441929725 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Apr 13 20:53:47 2010 +0200 + + gl: acquire/release context when getting images + + Avoids Mesa complaining about no current context. + + src/cairo-gl-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 46ef05c3d73af2b222602954b986832e77355a12 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Mar 29 12:58:18 2010 +0200 + + glx: Add getters for device's Display and GLXContext + + src/cairo-gl.h | 6 ++++++ + src/cairo-glx-context.c | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 36 insertions(+), 0 deletions(-) + +commit 712919223d08f8b4c43f828322fdc285560c137f +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Mar 26 15:50:10 2010 +0100 + + gl: Make code safe for multithreaded access + + The code callss the gl device's acquire/release in + cairo_device_acquire/release(). This way, external APIs can use these + functions to prepare for rendering GL. + + Also adds code to unset the glx context if it wasn't set when acquiring + the device. This allows multithreaded apps to work fine with just using + cairo APIs, but might introduce penalties in single-threaded + applications. + + src/cairo-egl-context.c | 2 ++ + src/cairo-gl-private.h | 5 ++++- + src/cairo-gl-surface.c | 20 +++++++++++++++++++- + src/cairo-glx-context.c | 37 +++++++++++++++++++++++++++++++++++-- + 4 files changed, 60 insertions(+), 4 deletions(-) + +commit 8f2e82cea3405fa9a6591911c0d42ea3dd0c6180 +Author: Benjamin Otte <otte@redhat.com> +Date: Thu Apr 15 17:48:24 2010 +0200 + + xcb: Make code not complain about every new format + + src/cairo-xcb-surface-render.c | 46 +++++++++++++++------------------------ + 1 files changed, 18 insertions(+), 28 deletions(-) + +commit 1d753b2f4d724c5ac3e452848ca4dda5891816a6 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Feb 23 21:53:31 2010 +0100 + + xlib: Make code not complain about every new format + + src/cairo-xlib-surface.c | 46 ++++++++++++++++++---------------------------- + 1 files changed, 18 insertions(+), 28 deletions(-) + +commit ebc9cc46fe7740c6d97e02edc66bae383413764b +Author: Benjamin Otte <otte@redhat.com> +Date: Fri Mar 5 15:08:34 2010 +0100 + + gl: Use right format + + The internal format should always be GL_RGBA. + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4142f0836d6719dd136a5fc6ac1adaddd681a3f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 15 09:09:31 2010 +0100 + + gl: Handle component-alpha ADD + + A simple extension to the component-alpha OVER [as ca-ADD is just the + second pass in ca-OVER] to support amalgamation of glyph masks. This + speeds up firefox-36 by ~5% on g45. + + Before: + firefox-36-20090611 76.185 + After: + firefox-36-20090611 72.863 + + src/cairo-gl-surface.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +commit a4bae1956bee0be98a5a22bd82d417192776e7f0 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 14 22:46:34 2010 +0200 + + gl: Really don't write error status to the inert object. + + src/cairo-gl-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 5fed41ee2bb3097c1446c1cf2038c912d5932692 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 14 22:43:29 2010 +0200 + + test: Add test checking that all setters properly check surface->status + + In particular, make sure that the setters when called on a const nil + surface don't try to set surface->status. + + test/Makefile.sources | 1 + + test/error-setters.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 110 insertions(+), 0 deletions(-) + +commit 6826f020014fff566678a1ff92014211e2a21d4c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:33:34 2010 +0100 + + gl: Don't write error status to the inert object. + + Reported-by: Benjamin Otte <otte@redhat.com> + + src/cairo-gl-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 3814855a649ffca695ce31d97c291496e32d2e26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 20:22:14 2010 +0100 + + script: Flush prior to modifying the image data. + + util/cairo-script/cairo-script-operators.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 03f7bfc351c27ab9d0b764a21bdcf2304e8c2e81 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 20:14:39 2010 +0100 + + rtree: Remove the false assert upon collapse. + + src/cairo-rtree.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit b0383d0cd2b40185b1676d9c88d3647cecc1d7fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:33:34 2010 +0100 + + svg: Don't write error status to the inert object. + + Reported-by: Benjamin Otte <otte@redhat.com> + + src/cairo-svg-surface.c | 37 +++++++++++++++++++++---------------- + 1 files changed, 21 insertions(+), 16 deletions(-) + +commit 5274b63adb9ad808f94e6ea04707991ec1192694 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:33:34 2010 +0100 + + ps: Don't write error status to the inert object. + + Reported-by: Benjamin Otte <otte@redhat.com> + + src/cairo-pdf-surface.c | 2 - + src/cairo-ps-surface.c | 74 +++++++++++++++++----------------------------- + 2 files changed, 27 insertions(+), 49 deletions(-) + +commit 45d23b8a791d5845025a1a4d93f99030ec9e0115 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:33:34 2010 +0100 + + pdf: Don't write error status to the inert object. + + Reported-by: Benjamin Otte <otte@redhat.com> + + src/cairo-pdf-surface.c | 41 ++++++++++++++++++++++------------------- + 1 files changed, 22 insertions(+), 19 deletions(-) + +commit 4351304b5110200b77e6851995cf533a929ba17e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:29:07 2010 +0100 + + Win32 features update. + + boilerplate/Makefile.win32.features | 8 ++++++++ + build/Makefile.win32.features-h | 1 + + 2 files changed, 9 insertions(+), 0 deletions(-) + +commit bd17b898b1c249aa0dc443bc303bad4fea8690bc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:11:15 2010 +0100 + + surface: Propagate the error status to _cairo_surface_get_device() + + If the surface is in error, the appropriate action is report the error + using an inert error cairo_device_t. + + Reported-by: Benjamin Otte <otte@redhat.com> + + src/cairo-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 005596907fc9b62fa4bf72ec35e0d1a1a242ef93 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 14 19:05:09 2010 +0100 + + xlib: Don't operate on an error object inside setters. + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=599574 + + The backend API manipulated the surface prior to checking whether it was + an inert error surface - and in the event of an error surface, tried to + overwrite it's error status. + + src/Makefile.win32.features | 8 ++++++++ + src/cairo-xcb-surface.c | 3 +++ + src/cairo-xlib-surface.c | 6 ++++++ + src/cairo-xlib-xcb-surface.c | 6 ++++++ + 4 files changed, 23 insertions(+), 0 deletions(-) + +commit 8afd4e4c3db53159d1e5b6f13d3355cb5fb1750b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 13 17:52:19 2010 +0100 + + hull: _cairo_hull_vertex_compare() return 0 for identical elements + + Andreas Falkenhahn reported a bizarre situation with some + implementations of qsort that actually compare the same elements and + require the comparator to return 0. So be it. + + Reported-by: Andreas Falkenhahn <andreas@airsoftsoftwair.de> + + src/cairo-hull.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit d95037db9915033ef1eee24c2fc05e8a95af5457 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 11 21:04:29 2010 +0100 + + cache: Tidy _cairo_cache_shrink_to_accommodate() + + There is no need to shrink the cache if we add an entry of size 0, so + don't by moving the guards in _cairo_cache_shrink_to_accommodate() to the + callers. + + src/cairo-cache.c | 10 +++------- + 1 files changed, 3 insertions(+), 7 deletions(-) + +commit e6309c6307179388c5de938bffdb44b83b694f28 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Apr 11 21:03:00 2010 +0100 + + xcb: Use normal finish to decouple from surface cache. + + Hook into the standard finishing process for a more robust cache removal + mechanism. firefox was able to trigger some double free asserts + otherwise. + + src/cairo-xcb-screen.c | 4 ++- + src/cairo-xcb-surface-render.c | 57 +++++++++++++++++++--------------------- + 2 files changed, 30 insertions(+), 31 deletions(-) + +commit e425c44e9c4c1796ccc3557a0368cf3b3a685a31 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Apr 9 08:32:22 2010 +0200 + + boilerplate: Compile xlib without xrender + + cairo_boilerplate_xlib_surface_disable_render() is not defined when + compiling without XRender, but it was used nonetheless. Replace it + with an empty stub when XRender is not available. + + boilerplate/cairo-boilerplate-xlib.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 061ea78ad2838450b20d5550a7285823e0d24e1b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Apr 9 08:28:33 2010 +0200 + + perf: Correct cairo-perf-diff syntax + + { cmd-list; } seems to literally be the required syntax. Blanks and + ';' are both mandatory. + + perf/cairo-perf-diff | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6986970ea5197685274b1fd809d72fbd771c0bab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 10 17:05:38 2010 +0100 + + clip: Compile fix for previous clip. + + PEBKAC. + + src/cairo-clip.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 0899852c974099da9f8c5e493fa89b8d022646c5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 10 16:00:45 2010 +0100 + + clip: Compare the whole clip when testing for equality. + + Should fix test/clip-contexts + + src/cairo-clip-private.h | 4 ++++ + src/cairo-clip.c | 40 +++++++++++++++++++++++++++++++++++++--- + src/cairo-surface-clipper.c | 5 +---- + 3 files changed, 42 insertions(+), 7 deletions(-) + +commit 557016a86a5a4487aeb6ab6392795eb709ee8bb5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 10 15:59:13 2010 +0100 + + test: Add clip-contexts + + This should exercise a bug found by Jeff Muizelaar that + cairo-surface-clipper was mistakenly thinking that clip operations on a + second context was a no-op as the topmost clip path matched that of the + previous context. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/clip-contexts.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ + test/clip-contexts.ref.png | Bin 0 -> 98 bytes + 4 files changed, 75 insertions(+), 0 deletions(-) + +commit a9f506493371ac91494488e5ca38e57ceb5a10cb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 7 22:44:02 2010 +0100 + + script: Another RGB16_565 warning. + + src/cairo-script-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 42b5cac7668625c9761113ff72b47af5cfd10377 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Apr 7 19:10:15 2010 +0930 + + PDF-operators: ensure text operations flushed before emitting clip + + src/cairo-pdf-operators.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit c004800fae362ae907ef9d1f822d02c598572161 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 7 22:46:38 2010 +0100 + + script: Compile without FT_FONT + + src/cairo-script-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit bdf8f50adae67498d5fe36727ed2cd34c0206509 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 7 22:44:02 2010 +0100 + + script: Another RGB16_565 warning. + + src/cairo-script-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit f5f64317874a3faa4f47688848a499b1e8836cf6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 7 21:57:22 2010 +0100 + + perf: Switch between micro and trace benchmarks for cairo-perf-diff + + perf/cairo-perf-diff | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) + +commit 70ca0040fda77b6865c20c94c1b7deaa6e63c481 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Apr 7 22:54:57 2010 +0200 + + Actually check for memory allocation failure + + Clang static analyzer signals "Dereference of null pointer" in case + the malloc returns NULL, as the code is checking the wrong pointer. + + src/cairo-boxes.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d7f71ac5c209376bacb45199a0eaa3b1937172e9 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Apr 7 21:57:38 2010 +0200 + + region: Make the 2nd argument to intersect and union const + + src/cairo-region.c | 4 ++-- + src/cairo.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit ded3a9639b33b1e637e99250a463bc227c9e60f4 +Author: Kristian Rietveld <kris@gtk.org> +Date: Tue Dec 29 08:47:09 2009 +0100 + + quartz: Define cairo_quartz_float_t and use instead of float + + On Mac OS 10.6 and newer cairo_quartz_float_t is defined to be a + CGFloat, resolving issues with the 64-bit builds. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=25814 + + src/cairo-quartz-private.h | 6 ++++++ + src/cairo-quartz-surface.c | 40 +++++++++++++++++++++------------------- + 2 files changed, 27 insertions(+), 19 deletions(-) + +commit 7c2c3f621f9b009b97c5f269bf313be926cc51c7 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Apr 3 22:54:57 2010 +0200 + + Correct masking optimization + + In _cairo_surface_mask() there was an invaild optimization (it failed + for surfaces without alpha content). Using _cairo_pattern_is_clear() + is the correct way to evaluate if a pattern is clear. + + Fixes clear-source + + src/cairo-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 24fc36c10f5c1c34e3059a8334178743052d7ad2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 2 08:44:45 2010 +0100 + + script: Fix endian encoding of '<|' length. + + Andrea found and fixed (and updated all the traces!) an endian bug where + we were encoding a 32bit length inside the compressed string stream. + However, this one inside the script backed escaped his notice. + + src/cairo-script-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit 697094488c652ad351301696bba9a384cc70002c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 2 08:40:28 2010 +0100 + + test: Add inverse text + + This is exercising a bug that I have introduced either in the xcb + backend or in the driver in my experimental branches. So simple, yet so + wrong. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/inverse-text.c | 67 +++++++++++++++++++++++++++++++++++++ + test/inverse-text.image16.ref.png | Bin 0 -> 1863 bytes + test/inverse-text.ps.ref.png | Bin 0 -> 776 bytes + test/inverse-text.ref.png | Bin 0 -> 2150 bytes + 6 files changed, 69 insertions(+), 0 deletions(-) + +commit fe610d559c70ab67f782b122437908ac80788611 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 31 09:33:30 2010 +0100 + + perf/micro: Show megapixel fill rate during paint. + + perf/micro/paint-with-alpha.c | 9 ++++++++- + perf/micro/paint.c | 8 +++++++- + 2 files changed, 15 insertions(+), 2 deletions(-) + +commit 8f7078eba71dcd2aa70bf97c03ed7b4341260143 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 1 20:42:44 2010 +0100 + + boilerplate: Allox xlib-fallback to build without RENDER + + This surface doesn't use RENDER and should produce the same results + when cairo-xlib is compiled without any support for RENDER. + + boilerplate/cairo-boilerplate-xlib.c | 72 ++-------------------------------- + 1 files changed, 4 insertions(+), 68 deletions(-) + +commit d209b40c64bddeb0d830678bc2f84e1016fed879 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 1 20:36:15 2010 +0100 + + xlib: Rearrange xrender stubs to restore compilation without xrender.h + + boilerplate/Makefile.win32.features | 8 -------- + build/Makefile.win32.features-h | 1 - + src/Makefile.win32.features | 8 -------- + src/cairo-xlib-xrender-private.h | 14 +++++++------- + 4 files changed, 7 insertions(+), 24 deletions(-) + +commit db4dbb38340e93da616319f00e0f4327d1c1d815 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Apr 1 01:53:22 2010 -0400 + + Improve doc syntax check to allow inline macro docs + + src/check-doc-syntax.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 00101fa71614fb48de436d6618e26353cf44ef95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 31 16:19:02 2010 +0100 + + configure: check -lrt for shm_open() + + OS/X includes shm_open() in libc, and fails to link if -lrt is + specified. So perform the appropriate configure time magic. + + configure.ac | 5 +++++ + util/cairo-sphinx/Makefile.am | 2 +- + 2 files changed, 6 insertions(+), 1 deletions(-) + +commit a81d347c2484e60ceec1d9dc81e1b88724496eaf +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Feb 5 22:34:51 2010 +0100 + + perf: Fix timestamp computation on MacOS X + + The OIL routines don't work as expected on MacOS X. The operating + system gives access to the timestamp counter through the function + mach_absolute_time. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + perf/cairo-perf-posix.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 55ce0b774869e9fa614c6f9fec7905f7205cb5ff +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Feb 5 22:30:05 2010 +0100 + + script: Fix script scanner endianness + + The script interpreter was reading the length of compressed data as + an host-endian uint32_t, thus making cairo-script able to correctly + read traces that were produced on the same endianness as the one they + ran upon, but unsuitable for portabile cairo-scripts. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + util/cairo-script/cairo-script-scanner.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +commit 4f617eaf77540ba2140086bd5a19fe6d62503d62 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Feb 5 22:27:28 2010 +0100 + + trace: Fix trace endianness + + Trace files were using host-endian to represent the length of + compressed data, making the trace format not portable. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + util/cairo-trace/trace.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 35f19bc084792bbad42b86a399103ebfbf407d05 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Mar 31 12:18:01 2010 +0200 + + pattern: Fix _gradient_is_opaque() for zero stops + + _gradient_is_opaque() previously returned TRUE for gradient with + no stops, triggering a false optimization in _cairo_gstate_mask(). + + Fixes test/gradient-zero-stops-mask + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-pattern.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 01e182194224e0eb7493b2ae3c8367ed455cfd54 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Mar 31 12:14:25 2010 +0200 + + test: Add gradient-zero-stops-mask + + Add a test to check that gradient with no stops are not considered + opaque by gstate (and thus masking with them is not optimized to + paint). + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/gradient-zero-stops-mask.argb32.ref.png | Bin 0 -> 86 bytes + test/gradient-zero-stops-mask.c | 59 ++++++++++++++++++++++++++ + test/gradient-zero-stops-mask.rgb24.ref.png | Bin 0 -> 86 bytes + 5 files changed, 62 insertions(+), 0 deletions(-) + +commit ce3ad6f41edf86ed6914f4d7f364111eba42ca65 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 31 08:21:17 2010 +0100 + + xlib: Avoid multiple evaluations inside bswap_*() macro. + + Fixes: + Fonts are not readable if remote display to a machine with different + endian. + https://bugzilla.mozilla.org/show_bug.cgi?id=526977 + + Reported-and-tested-by: Ginn Chen <Ginn.Chen@Sun.COM> + + src/cairo-xlib-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit be4ffa9df275513de3175415ee889b7323499a37 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 28 19:40:54 2010 +0100 + + doc: Fix some missing '%' in gtk-doc comments + + src/cairo-surface.c | 4 ++-- + src/cairo-svg-surface.c | 10 +++++----- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 7ab350378e8597e9872dbe390b8454d0a63bff28 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 28 19:38:24 2010 +0100 + + Silence enumeration warnings following addition of RGB16_565 + + src/cairo-debug.c | 3 ++ + src/cairo-gl-glyphs.c | 2 + + src/cairo-png.c | 1 + + src/cairo-qt-surface.cpp | 2 + + src/cairo-scaled-font.c | 1 + + src/cairo-script-surface.c | 15 ++++++++++++ + src/cairo-xcb-surface-render.c | 5 ++++ + src/cairo-xlib-surface.c | 5 ++++ + src/cairo-xml-surface.c | 1 + + src/drm/cairo-drm-i915-surface.c | 3 ++ + src/drm/cairo-drm-i965-shader.c | 4 +++ + src/drm/cairo-drm-i965-surface.c | 1 + + src/drm/cairo-drm-intel-surface.c | 1 + + src/drm/cairo-drm-intel.c | 12 ++++++++- + src/drm/cairo-drm-radeon-surface.c | 1 + + util/cairo-script/cairo-script-operators.c | 35 ++++++++++++++++++++++++++++ + util/cairo-sphinx/sphinx.c | 1 + + util/cairo-trace/trace.c | 25 +++++++++++++++++-- + 18 files changed, 113 insertions(+), 5 deletions(-) + +commit d901692a5550c51fd3eefd307609fb800ef02a95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 30 15:31:32 2010 +0100 + + scaled-glyph: Allow removal info fields. + + Pushed a fraction of a second too soon... Update the + scaled_glyph->has_info if the backend clears any field as well. + + src/cairo-scaled-font.c | 19 ++++++++++++++++--- + 1 files changed, 16 insertions(+), 3 deletions(-) + +commit 5c4b6d520bc7ce7d5193a89bbda44b91f5eb0d4d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 30 15:26:42 2010 +0100 + + xcb: Cache whether we have already check a glyph for size. + + Avoid repeated cairo_scaled_glyph_lookup() and checking of sizes if we + have already seen this glyph in this run. + + src/cairo-xcb-surface-render.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 1c76e3e9ad1437662bf91ed1d21c4bda8fd50fb4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 30 15:24:08 2010 +0100 + + scaled-font: Optimize cairo_scaled_font_lookup() + + By tracking which fields of information are already available on the + scaled_glyph we can more efficiently determine if we already have the + requested fields. This reduces from about 6 conditionals to one, and + reduces the function overhead by ~20% -- which has a measurable + improvement on glyph benchmarks. + + src/cairo-scaled-font.c | 73 ++++++++++++-------------------------------- + src/cairo-types-private.h | 1 + + 2 files changed, 21 insertions(+), 53 deletions(-) + +commit d2ec151e490b227e7f3d6879bf7a893577dfefa5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 30 15:23:18 2010 +0100 + + perf/micro: Exercise different sizes and antialising modes with glyphs + + perf/micro/glyphs.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 77 insertions(+), 8 deletions(-) + +commit 72481acf0d1e8648c5d03ce51f84c639132475a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 30 04:10:28 2010 +0100 + + perf: Compute ops per second + + Provide a hook for the test to be able to compute the number of ops per + second. For instance, the glyphs test uses it to report the number of + kiloglyph per second Cairo is able to render. + + perf/cairo-perf-micro.c | 47 +++++++++++++++++++++++------------- + perf/cairo-perf.h | 9 +++++- + perf/micro/box-outline.c | 4 +- + perf/micro/cairo-perf-cover.c | 5 ++- + perf/micro/composite-checker.c | 2 +- + perf/micro/dragon.c | 10 ++++---- + perf/micro/fill.c | 6 ++-- + perf/micro/glyphs.c | 35 +++++++++++++++++++++++++- + perf/micro/intersections.c | 8 +++--- + perf/micro/long-dashed-lines.c | 2 +- + perf/micro/long-lines.c | 8 +++--- + perf/micro/mask.c | 18 +++++++------- + perf/micro/mosaic.c | 8 +++--- + perf/micro/paint-with-alpha.c | 2 +- + perf/micro/paint.c | 2 +- + perf/micro/pattern_create_radial.c | 2 +- + perf/micro/pythagoras-tree.c | 2 +- + perf/micro/rectangles.c | 6 ++-- + perf/micro/rounded-rectangles.c | 6 ++-- + perf/micro/spiral.c | 28 ++++++++++---------- + perf/micro/stroke.c | 4 +- + perf/micro/subimage_copy.c | 2 +- + perf/micro/tessellate.c | 6 ++-- + perf/micro/text.c | 2 +- + perf/micro/twin.c | 2 +- + perf/micro/unaligned-clip.c | 2 +- + perf/micro/world-map.c | 2 +- + perf/micro/zrusin.c | 4 +- + 28 files changed, 142 insertions(+), 92 deletions(-) + +commit 2a98d0586c19fbb2b555f471895d73f253c4943b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 15 18:23:23 2010 +0000 + + drm/i915: Avoid using another unpreserved temporary + + As we may load from a sampler, we can not use on of the unpreserved + temporaries to store the intermediate colour result. + + src/drm/cairo-drm-i915-shader.c | 26 +++++++++++++++----------- + 1 files changed, 15 insertions(+), 11 deletions(-) + +commit 26f963557bf065fd25b9c4f6652a252735a0fb74 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 15 18:22:06 2010 +0000 + + drm/i915: Normalize spans opacity value + + On the generic path I forgot to rescale the alpha value into [0,1]. + + src/drm/cairo-drm-i915-spans.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 97f8c20727eaeb2dfddb0d4796192cc042eb14fa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Mar 27 21:52:16 2010 +0000 + + boilerplate: Create an image16 target + + In order to exercise the newly restored r5g6g5 support, we need to + create an appropriate surface and feed it through the test and + performance suites. + + boilerplate/cairo-boilerplate-directfb.c | 6 ++- + boilerplate/cairo-boilerplate-drm.c | 6 ++- + boilerplate/cairo-boilerplate-gl.c | 12 +++-- + boilerplate/cairo-boilerplate-pdf.c | 4 +- + boilerplate/cairo-boilerplate-ps.c | 8 ++-- + boilerplate/cairo-boilerplate-quartz.c | 3 + + boilerplate/cairo-boilerplate-script.c | 2 +- + boilerplate/cairo-boilerplate-skia.c | 6 ++- + boilerplate/cairo-boilerplate-svg.c | 8 ++-- + boilerplate/cairo-boilerplate-test-surfaces.c | 21 ++++--- + boilerplate/cairo-boilerplate-vg.c | 12 +++-- + boilerplate/cairo-boilerplate-win32-printing.c | 4 +- + boilerplate/cairo-boilerplate-win32.c | 6 ++- + boilerplate/cairo-boilerplate-xcb.c | 21 +++++--- + boilerplate/cairo-boilerplate-xlib.c | 12 +++-- + boilerplate/cairo-boilerplate.c | 39 ++++++++++++-- + boilerplate/cairo-boilerplate.h | 1 + + perf/cairo-perf-micro.c | 59 +-------------------- + perf/cairo-perf-trace.c | 67 +----------------------- + 19 files changed, 120 insertions(+), 177 deletions(-) + +commit 022291be1cbddf4f6722f0bf76ebda6922780276 +Author: Oleg Romashin <romaxa@gmail.com> +Date: Wed Mar 24 13:12:25 2010 -0400 + + Add back support for CAIRO_FORMAT_RGB16_565 + + Due to slow memory speed, 16bpp color depth is still very popular on mobile + devices. Maemo5 is also using 16bpp color depth. + + src/cairo-deprecated.h | 14 -------------- + src/cairo-image-surface.c | 16 +++++++++++++++- + src/cairo-xlib-display.c | 28 +++++++++++++++++++++++++--- + src/cairo.h | 7 ++----- + src/cairoint.h | 2 +- + 5 files changed, 43 insertions(+), 24 deletions(-) + +commit 36e12b1952f9bdc52491c5a9bdf8ce155865c362 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 12:14:20 2010 +0000 + + subsurface: Ignore return from _cairo_clip_init_copy() + + The return is just a hint that the clip is empty, however we are about + to immediately apply the surface clip and so do not care for an + 'optimised' path. + + src/cairo-surface-subsurface.c | 15 ++++++++++----- + 1 files changed, 10 insertions(+), 5 deletions(-) + +commit e356e5d18b923d9b0ff83e9460582710f9e515d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 11:38:19 2010 +0000 + + recording: Fix leak of clip from snapshots of recording surfaces. + + src/cairo-recording-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 5b4885f693c0d800da7160770b341166e3bdea61 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 11:25:29 2010 +0000 + + clip: propagate the no-clip through the copy. + + src/cairo-clip.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit b3e0393161904c2fea62b0198dea551a77201c19 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 11:21:36 2010 +0000 + + clip: Don't reduce all-clip to no-clip. + + src/cairo-clip.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit b12114f296e4e8db3207ab593a431fd0ca2ee67c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 11:08:38 2010 +0000 + + snapshot: Finish the clone. + + Kill ref cycles from snapshots patterns by explicitly calling finish on + the cloned surface. + + src/cairo-surface-snapshot.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit db913d731e50505892697bdc919f9fe146eea6ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 24 10:16:58 2010 +0000 + + xcb: Ensure that we own the glyph cache before use. + + Sigh. One day, I will enable multiple glyph caches to be attached to a + scaled font, but for today, simply avoid the crash. + + src/cairo-xcb-surface-render.c | 38 +++++++++++++++++++++++++++++--------- + 1 files changed, 29 insertions(+), 9 deletions(-) + +commit 6da3cea3564bd8c5de37bf2244a2dd656202e4ec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 20:53:11 2010 +0000 + + scaled-font: Destroy the old surface when replacing scaled_glyph->recording + + src/cairo-scaled-font.c | 11 ++++++++--- + 1 files changed, 8 insertions(+), 3 deletions(-) + +commit 548092fe8c9af1423a10e9566cbc4315d2f28efc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 20:08:04 2010 +0000 + + script: Free the surface/font bitmaps. + + src/cairo-script-surface.c | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) + +commit 83d1bd9f37da93fbdc586788b6891d0eccdb7cee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 20:04:10 2010 +0000 + + script: Manually unlink font entries upon destruction + + As the device is already finished, we can not lock it without raising an + error, so we have to open code the destruction of the font entries. + Fortunately we can make several simplifying assumptions about the + required cleanup as we know the device is also being destroyed. + + src/cairo-script-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit cccf6753ab68b0795351da2626f9e4ecd60c2a2e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 19:45:35 2010 +0000 + + script: More acquire device fixes. + + We also need to acquire the device upon finish, similar surface creation + and the pagination functions, i.e. the other times outside of the + drawing ops that must modify the shared context/device. + + src/cairo-script-surface.c | 71 ++++++++++++++++++++++++++++++++++---------- + 1 files changed, 55 insertions(+), 16 deletions(-) + +commit 25a77b263d170265a9acf1697793cbbfa07dd852 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 16:49:21 2010 +0000 + + boilerplate: Cleanup the list of backends upon shutdown. + + boilerplate/cairo-boilerplate.c | 13 +++++++++++++ + boilerplate/cairo-boilerplate.h | 3 +++ + perf/cairo-perf-micro.c | 2 ++ + perf/cairo-perf-trace.c | 2 ++ + test/cairo-test.c | 2 ++ + 5 files changed, 22 insertions(+), 0 deletions(-) + +commit 1ddcd5cf31bb47e9ff18ddf94d0a4648fa70a617 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 16:43:39 2010 +0000 + + clip: Remove the redundant _cairo_clip_init_rectangle() + + As _cairo_clip_init_rectangle() is equivalent and more importantly more + clearly written as: + _cairo_clip_init(&clip); + if (status = _cairo_clip_rectangle(&clip, &rect)) { + _cairo_clip_fini(&fini); + return status; + } + perform the transformation and in the process catch a few mistakes along + error paths. + + src/cairo-clip-private.h | 4 ---- + src/cairo-clip.c | 30 +++++++++++------------------- + src/cairo-paginated-surface.c | 18 +++++++++--------- + src/cairo-recording-surface.c | 11 +++++------ + src/cairo-surface-wrapper.c | 14 +++++--------- + 5 files changed, 30 insertions(+), 47 deletions(-) + +commit 61ad28fe7d334c63197ae3881d5edd074d63cfec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 10:44:16 2010 +0000 + + device: Add language binding interfaces. + + Damien Carbonne reported that cairo_device_t lacked the language binding + hooks normally associated with cairo objects. So add the missing + get_reference_count, get_user_data and set_user_data. + + src/cairo-device-private.h | 1 + + src/cairo-device.c | 78 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo.h | 14 ++++++++ + 3 files changed, 93 insertions(+), 0 deletions(-) + +commit 8a8c2f6c282c1822dc1a638c2258c8449b1d678b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 10:34:06 2010 +0000 + + cairo: Typos in docs. + + A couple of typos reported by Damien Carbonne. + + src/cairo-recording-surface.c | 10 ++++------ + src/cairo.h | 4 ++-- + 2 files changed, 6 insertions(+), 8 deletions(-) + +commit 4c55c87478a2595569f9c1f13657c3d309f31407 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 10:05:35 2010 +0000 + + image: Free traps after conversion from boxes. + + src/cairo-image-surface.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit 07f7bddc30157fed8f9dced00fef44a2307b4b01 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 10:05:35 2010 +0000 + + xcb: Free traps after conversion from boxes. + + src/cairo-xcb-surface-render.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit 181403fb534d0216123043bcd3ee6cff60e1e6fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 09:38:59 2010 +0000 + + test/clear-source: Free source after use. + + test/clear-source.c | 38 ++++++++++++++++++++++---------------- + 1 files changed, 22 insertions(+), 16 deletions(-) + +commit 35432e37c264e1ace764b4a1393d9b8579eb52c0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 09:35:51 2010 +0000 + + xcb: Destroy reference to clip surface after use. + + src/cairo-xcb-surface-render.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 98e3dfbb899f0228fc9987a56af93b012989a27a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 09:35:31 2010 +0000 + + xcb: Relinquish the xcb connection on finish. + + src/cairo-xcb-connection.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 638cae3bdeaf0b10d1fd59a519f5d7a05c5b179c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 08:25:13 2010 +0000 + + xcb: Fix leak of clip rectangle during show-glyphs. + + src/cairo-xcb-surface-render.c | 15 ++++++--------- + 1 files changed, 6 insertions(+), 9 deletions(-) + +commit 1d4ad787747b5c92c3b062afde5b98c72ac4cc95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 08:20:49 2010 +0000 + + test/pthread-same-source: Free source after use. + + test/pthread-same-source.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit bfc027ac6d05f489d0d26110c225d2871be0971c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 23 08:16:57 2010 +0000 + + test/clip-image: Free image after use. + + test/clip-image.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit e214f09d633093ce9b2ca0bffce10bc68a6e30b0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 22:20:58 2010 +0000 + + xcb: Consume the implicit reference for the cached connection on finish + + src/cairo-xcb-connection.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit c235543bdfd8b1495cb7ae8f2a82b6267c4d9b84 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 22:15:44 2010 +0000 + + xcb: Destroy reference to local source picture in show-glyphs. + + src/cairo-xcb-surface-render.c | 14 +++++++++++--- + 1 files changed, 11 insertions(+), 3 deletions(-) + +commit c42cdd2c9d883ef359ac57b65eba4ed15441181d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 20:14:09 2010 +0000 + + xcb: Gracefully destroy any lingering fallback during finish. + + A fallback should never persist beyond the flush into the finish, but + yet one remains in test/clip-shapes-unaligned-rectangles. For the time + been, simply clean up the rogue surface. + + src/cairo-xcb-surface.c | 19 ++++++++++++------- + 1 files changed, 12 insertions(+), 7 deletions(-) + +commit fd96aa3de2218dcc6671636f35a24738e3cae996 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 19:07:31 2010 +0000 + + gl: Hook in glyph cache finalisation. + + src/cairo-gl-glyphs.c | 23 ++++++++++++----------- + src/cairo-gl-private.h | 7 ++++--- + src/cairo-gl-surface.c | 4 ++++ + 3 files changed, 20 insertions(+), 14 deletions(-) + +commit c7511fa7ad932675c8cebba504d3c538ead3c44c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 17:21:38 2010 +0000 + + drm/intel: Revoke glyph caches on device finish + + src/drm/cairo-drm-i915-glyphs.c | 2 +- + src/drm/cairo-drm-i965-glyphs.c | 2 +- + src/drm/cairo-drm-intel-private.h | 1 + + src/drm/cairo-drm-intel.c | 18 ++++++++++++------ + 4 files changed, 15 insertions(+), 8 deletions(-) + +commit 9ba73bdfc451d205f411e3dbc8073ae10d58b4f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 17:17:08 2010 +0000 + + gl: Decouple cache from scaled-font on context destruction + + src/cairo-gl-glyphs.c | 8 +++++++- + src/cairo-gl-private.h | 4 ++++ + src/cairo-gl-surface.c | 14 +++++++++++++- + src/cairo-scaled-font-private.h | 2 ++ + src/cairo-scaled-font.c | 1 + + 5 files changed, 27 insertions(+), 2 deletions(-) + +commit 7812d095ab7657400be470af8fdc7f20eaedd6c5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 16:46:58 2010 +0000 + + drm/intel: Replace open-coding of _cairo_rtree_node_remove() + + src/drm/cairo-drm-intel.c | 17 +++-------------- + 1 files changed, 3 insertions(+), 14 deletions(-) + +commit 48d847162558dc09388942a96ff443c253068d68 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 13:05:23 2010 +0000 + + recording: Cleanup the clip on error. + + Whilst recording the commands, remember to cleanup the local clip after + detecting an error. + + src/cairo-recording-surface.c | 5 +++++ + src/cairo-surface-snapshot.c | 2 ++ + 2 files changed, 7 insertions(+), 0 deletions(-) + +commit c87737c2bf983a8555b08c526050423a5eab5642 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 13:04:19 2010 +0000 + + ps: Skip surface emission if in error state. + + During finish, if we encountered an error during the construction of the + surface, simply proceed to cleanup rather than emit the incomplete and + potentially subtly broken output. + + src/cairo-ps-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit e961cdf568f4551bbd6bca6b7505fc9f9b0805f9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 10:48:48 2010 +0000 + + image: Special case wholly unbounded fixups. + + In the event of an empty bounded rectangle, the computation of the + unbounded - bounded rectangles leads to negative areas, integer overflow + and death. + + [And similarly for the derived surfaces.] + + src/cairo-image-surface.c | 24 ++++++++++ + src/cairo-xcb-surface-render.c | 62 ++++++++++++++----------- + src/drm/cairo-drm-i915-surface.c | 62 ++++++++++++++----------- + src/drm/cairo-drm-i965-surface.c | 95 ++++++++++++++++++++----------------- + 4 files changed, 145 insertions(+), 98 deletions(-) + +commit 844d8ea57d69c9a68fbec64f4438953850f7657f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 10:37:18 2010 +0000 + + surface: Check pattern for error status. + + Ensure that the error status from patterns is propagated when used by + doing so in the surface layer. Similarly check that a surface pattern + has not been finished. + + src/cairo-surface.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 55 insertions(+), 4 deletions(-) + +commit 213093f43770d078dd146d5a10b9a5803097b8a8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 22 10:36:47 2010 +0000 + + ps: Free page on error path. + + src/cairo-ps-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit c8a8e57d6af7261d70103ddd46f8da409896b5e7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:42:34 2010 +0000 + + script: Use a stack to push/pop recursed line numbers. + + Still not entirely helpful in the event of recursive parsing without a + reference to the file as well as the line number in the event of an + exception. + + util/cairo-script/cairo-script-scanner.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 4b4de940ee6e76ec9677b5468ebf709c6d2db982 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:41:18 2010 +0000 + + script: Remove the version check. + + When compiling we can depend on whatever version of cairo we need, but + we should be wary of checking for runtime compatibility when building + standalone. + + util/cairo-script/cairo-script-operators.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit a7cb314b060f6ada855ec75b283ef64bf835824a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:40:54 2010 +0000 + + test/any2ppm: Check for errors after executing script. + + test/any2ppm.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit b73a33b89e43d63a437035a05cf91df5c3b4d186 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:40:19 2010 +0000 + + script: Make the test suite run again! + + src/cairo-script-surface.c | 194 +++++++++++++++++++++++--------------------- + 1 files changed, 103 insertions(+), 91 deletions(-) + +commit 2a59f0af6aab5fe0ebb19195d4c018fc5221016c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:38:27 2010 +0000 + + wrapper: Apply device transform inverse as appropriate. + + Fixes many failures of the paginated surfaces as they replayed through + the recording surfaces. + + src/cairo-surface-wrapper.c | 89 +++++++++++++++---------------------------- + 1 files changed, 31 insertions(+), 58 deletions(-) + +commit 5720fff827e5149b201a9366179db93ce258b120 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:37:38 2010 +0000 + + ps: Destroy the local surface on error. + + Minor leak of the intermediate surface when converting to an opaque + source following an error. + + src/cairo-ps-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 35f318a59cde9c635036cc14c90878400528882d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 21 20:36:26 2010 +0000 + + paginated: Use common is_clear. + + As equivalent processing to the page_is_blank optimisation done inside + the paginated surface is applied by the gstate, remove the redundant + code. + + src/cairo-paginated-surface-private.h | 1 - + src/cairo-paginated-surface.c | 34 +-------------------------------- + 2 files changed, 1 insertions(+), 34 deletions(-) + +commit b101c7dab8cdbf7b9321355a8d2311b2f863f011 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 11 01:48:43 2010 +0000 + + gl: Add EGL interface + + Enable the EGL backend for GL. + + boilerplate/Makefile.win32.features | 8 ++ + boilerplate/cairo-boilerplate-gl.c | 98 ++++++++++++++++++++ + build/Makefile.win32.features-h | 1 + + configure.ac | 52 ++++++----- + src/Makefile.sources | 1 + + src/Makefile.win32.features | 8 ++ + src/cairo-egl-context.c | 168 +++++++++++++++++++++++++++++++++++ + src/cairo-gl.h | 14 +++ + 8 files changed, 327 insertions(+), 23 deletions(-) + +commit ca6e4e1f91e0a90666551d2fa74cfc04484d4e80 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 11 01:48:08 2010 +0000 + + spans: Initialise rects->is_bounded for polygon compat. + + src/cairo-spans.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 6754f1db1716a6570c82e207e21b09a10de120ba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 10 15:13:00 2010 +0000 + + gstate: Account for undropped non-transformed glyphs. + + In the simplest case of pass-through glyphs we made a mistake in + propagating the number of glyphs. + + Reported-by: Christophe de Dinechin <christophe@taodyne.com> + + src/cairo-gstate.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 5fb36fe5ab2a2b30da213557936122a829493906 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 8 15:32:15 2010 +0000 + + drm/i965: Acquire device around commit. + + src/drm/cairo-drm-i915-surface.c | 4 +- + src/drm/cairo-drm-i965-shader.c | 13 +++-- + src/drm/cairo-drm-i965-surface.c | 106 ++++++++++++++++++++++++++------------ + 3 files changed, 82 insertions(+), 41 deletions(-) + +commit 4083f40fbd085dc2039fe62592cf1239373c7fca +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 7 16:59:57 2010 +0000 + + glew: don't pull in GL/glu.h + + src/glew/GL/glew.h | 10 ---------- + 1 files changed, 0 insertions(+), 10 deletions(-) + +commit 473e006ad6ef0959c8a7059aba0689a16a937732 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Mar 6 18:12:36 2010 +0000 + + test: Add a1-mask-sample + + Test sampling positions with a NEAREST mask. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/a1-mask-sample.c | 83 +++++++++++++++++++++++++++++++++++++++++++ + test/a1-mask-sample.ref.png | Bin 0 -> 148 bytes + 4 files changed, 85 insertions(+), 0 deletions(-) + +commit f79b2ceea4722b5059563be1eb55de617fecc004 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 19:52:58 2010 +0000 + + drm/i915: Discard redundant solitary clips during fill + + src/drm/cairo-drm-i915-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 7cea9ae290ba24e4d2f87cef4228cce5fcb3181b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 17:23:55 2010 +0000 + + drm/i915: Apply more micro-optimisations when targetting CONTENT_ALPHA + + src/drm/cairo-drm-i915-shader.c | 51 ++++++++++++++++++++++++++++---------- + 1 files changed, 37 insertions(+), 14 deletions(-) + +commit dce8b028cd5b249054e8197a536c29f6ba4110da +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 17:13:53 2010 +0000 + + drm/i915: Adjust clip matrix for clip origin. + + src/drm/cairo-drm-i915-shader.c | 8 +++----- + 1 files changed, 3 insertions(+), 5 deletions(-) + +commit 8e702044b3816002011488c56f1ec9c6b9682eee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 17:13:02 2010 +0000 + + drm/i915: Handle clip/combine coords for spans. + + src/drm/cairo-drm-i915-spans.c | 71 ++++++++++++++++++++++++---------------- + 1 files changed, 43 insertions(+), 28 deletions(-) + +commit e1f0c2e73fa8cda9e38ab182288201fa27a3b363 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 17:11:58 2010 +0000 + + perf: Check for and include unistd.h + + isatty() and access() require unistd.h, so include it! + + perf/cairo-perf-trace.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 271752b944ef0898b5d1be57f26de83c8e40ae3a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Mar 4 08:24:08 2010 +0000 + + gl: Pad the gradient texture. + + Fixes test/linear-gradient-subset + + src/cairo-gl-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit afe6f4f0519606c4bc7e9b705b0cae75692d7af2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 23:06:43 2010 +0000 + + drm/i915: Use a preserved temporary to store the radial texcoord. + + src/drm/cairo-drm-i915-shader.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 4b2e0478822cb8415be4bac21950dbf03c0f01c8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:45:31 2010 +0000 + + drm/i915: Eliminate redundant radial vertex shader. + + It is always equivalent to a simple texture transformation, so reduce it + to the texture shader. + + src/drm/cairo-drm-i915-glyphs.c | 13 ----------- + src/drm/cairo-drm-i915-private.h | 1 - + src/drm/cairo-drm-i915-shader.c | 8 +------ + src/drm/cairo-drm-i915-spans.c | 42 +------------------------------------ + 4 files changed, 3 insertions(+), 61 deletions(-) + +commit 51610517982a4cf70ca8d396d0ad4c58a477c5e9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:56:56 2010 +0000 + + drm/i915: Fix encoding of negated operand channels + + Long ago when converting the pixel shader structs into macros and + reducing the code size by ~100k (the inlines were too depth for constant + propagation and CSE), I broke the encoding of negated channels. So + instead use a single bit to indicate a negation rather than 2s + complement (with sign extension into neighbouring channels, oops). The + disadvantage is that expressing the negated channel is a little more + ugly. + + src/drm/cairo-drm-i915-private.h | 22 ++++++++++++++-------- + src/drm/cairo-drm-i915-shader.c | 16 ++++++++-------- + 2 files changed, 22 insertions(+), 16 deletions(-) + +commit 5b973c670807bda2bb355c90ea817e2a2f092f0b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:25:11 2010 +0000 + + drm/i915: Fix crash with linear-step-function + + Avoid the potential divide by zero by falling back to pixman rendered + gradient textures for such troublesome input. + + src/drm/cairo-drm-i915-shader.c | 17 +++++++++++------ + 1 files changed, 11 insertions(+), 6 deletions(-) + +commit 404ead7eebafa7ca077e1d012dde0a598b64245a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:01:49 2010 +0000 + + drm/i915: Ensure simple alpha is written to green on alpha-only surfaces. + + The intricacies of h/w make convoluted s/w. + + src/drm/cairo-drm-i915-shader.c | 20 ++++++++++++++------ + 1 files changed, 14 insertions(+), 6 deletions(-) + +commit 1f2daf652480ef768f847467d9171b5e4a7f01a3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 20:06:08 2010 +0000 + + drm/i915: Avoid double multiplication of linear alpha. + + src/drm/cairo-drm-i915-shader.c | 8 ++------ + 1 files changed, 2 insertions(+), 6 deletions(-) + +commit cdaef58c19a191632473fcbbe688e6231c02b9b2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 18:52:40 2010 +0000 + + drm/i915: Acquire device before shader commit. + + src/drm/cairo-drm-i915-shader.c | 2 + + src/drm/cairo-drm-i915-surface.c | 111 +++++++++++++++++++++++++------------ + 2 files changed, 77 insertions(+), 36 deletions(-) + +commit dd6f96dd4aeb48262d5af8a3006e6404521c151b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 16:06:25 2010 +0000 + + drm/i965: Ignore flushing on device finish. + + src/drm/cairo-drm-i965-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 3692597567f62dd300e8ce8c43d43ac449616041 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 13:56:48 2010 +0000 + + drm/i965: Merge the constants into the surface stream. + + As we can use an offset from the surface base for the constant buffers, + we need to fold the constants into the surface stream. + + src/drm/cairo-drm-i965-private.h | 11 ++---- + src/drm/cairo-drm-i965-shader.c | 26 +++----------- + src/drm/cairo-drm-i965-surface.c | 70 +++----------------------------------- + 3 files changed, 14 insertions(+), 93 deletions(-) + +commit cc585947574f6e17d299a5987ee69162f63d5a52 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 23:06:23 2010 +0000 + + drm/intel: Set the 1D gradient texture to be untiled. + + src/drm/cairo-drm-intel.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 543cf073643b259096ee2a95d91b9067395a7e09 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:19:41 2010 +0000 + + drm/intel: Set default extend mode for rendering gradient subsets. + + src/drm/cairo-drm-intel.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 521d1c1d2c51bca07db1aed3c7f62d860cece3f4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 20:25:54 2010 +0000 + + surface: Simplify is_clear logic. + + As we pre-check whether the operation is a no-op on an already cleared + surface, then for all but a paint with CLEAR and no clip, the result is + a non-clear surface. + + src/cairo-surface.c | 22 ++++++++-------------- + 1 files changed, 8 insertions(+), 14 deletions(-) + +commit 017db956644fa1da22033653490f362d1e3e47e0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 20:06:30 2010 +0000 + + gstate: Use _cairo_pattern_clear for CLEAR. + + src/cairo-gstate.c | 100 ++++++++++++++++++++++++++++++++-------------------- + 1 files changed, 62 insertions(+), 38 deletions(-) + +commit 70412bba0e9fd0ac6e7343d7aebe953355207aab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 17:34:39 2010 +0000 + + test: Avoid derefencing a NULL xcb connection + + test/xcb-surface-source.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +commit 5bfea8447b1b2333218295f51a9474d061192d49 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 3 21:32:13 2010 +0000 + + test: Add references for rounded-rectangle-{fill,stroke} + + test/Makefile.am | 2 ++ + test/rounded-rectangle-fill.ref.png | Bin 0 -> 787 bytes + test/rounded-rectangle-stroke.ref.png | Bin 0 -> 871 bytes + 3 files changed, 2 insertions(+), 0 deletions(-) + +commit 4126d580d8b9db9217ed17aadcce20b14e77a00b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 2 14:38:36 2010 +0000 + + surface-fallback: Free traps on composite_trapezoids() error + + src/cairo-surface-fallback.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 8a59522bbdc61d5c90f1ae55111b5408865755b3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 2 14:36:16 2010 +0000 + + surface-fallback: Propagate NOTHING_TO_DO + + NOTHING_TO_DO is converted to SUCCESS by the surface layer, so clean up + the code slightly by reducing the number of checks and conversions. + + src/cairo-surface-fallback.c | 15 +++------------ + 1 files changed, 3 insertions(+), 12 deletions(-) + +commit f07195860620959c27d43080a7b987e28222735a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 2 13:57:02 2010 +0000 + + xlib: Handle a1 image uploads through converter + + Fixes test/large-source [xlib] + + src/cairo-xlib-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit f979dd22d8f48e6ac7c50372c7d180c3b590dc74 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 2 11:20:11 2010 +0000 + + image: Don't rely on clip regions being clipped to surface extents. + + Fixes a crash in test/clip-fill-unbounded [xlib-fallback]. + + src/cairo-image-surface.c | 32 ++++++++++++++++++++------------ + 1 files changed, 20 insertions(+), 12 deletions(-) + +commit 15d9c5fcd8881b4593ec23633450a4f629b6d42b +Author: Alexander Shulgin <alex.shulgin@gmail.com> +Date: Sat Feb 20 20:59:32 2010 +0200 + + Added new MIME type CAIRO_MIME_TYPE_URI and it's support in SVG backend + + The rationale behind this change is that when someone is trying to + draw on a SVG surface using image surface patterns, the resulting SVG + file can take up to ridiculous 20 megabytes for 3-4 typical + photographic images in a single SVG file. This also can take + significant amount of CPU time to complete. + + The reason for this behaviour is that currently whenever SVG backend + needs to emit an image tag for a surface pattern it takes a snapshot + of the subject surface, encodes it in PNG, then Base64-encodes and + emits the (huge) resulting string. With use of + cairo_surface_set_mime_data API this can be somewhat improved by + associating JPEG image contents with the corresponding surfaces. + Still this doesn't allow for post-processing of involved photographic + images without regenerating the SVG file. + + As SVG specification allows URIs in the image tag's xlink:href + attribute, it is possible instead of embedding encoded image data to + simply link image files residing physically on the same medium as the + generated SVG file: files on disk under common directory, files on a + web server at common base URI, etc. + + To make this happen we add new (unofficial) MIME type "text/x-uri" and + let users associate URIs with surfaces through + cairo_surface_set_mime_data() API. When SVG backend needs to emit + surface contents and it sees "text/x-uri" attached to the surface, it + emits this data instead of taking snapshot. The URI data is emitted + as is, so correctness check is left solely to the client code. + + doc/public/cairo-sections.txt | 1 + + doc/public/tmpl/cairo-surface.sgml | 7 +++ + src/cairo-surface.c | 16 +++++++- + src/cairo-svg-surface.c | 72 ++++++++++++++++++++++++++++++++++-- + src/cairo.h | 1 + + 5 files changed, 92 insertions(+), 5 deletions(-) + +commit d91bab565c54205f8dd7aa8a9de819dc4bc3551c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 2 08:12:52 2010 +0000 + + test: Remove the double-clip from clip-group-shapes + + A push/pop is an implicit save/restore, so a clip applied inside the + group is temporary, whereas a clip applied outside affects both the + geometry inside *and* the application of the group when painted. So + reset the clip afterwards to get the desired behaviour. + + test/clip-group-shapes.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit e8c819c5227d29dfdf503022339276eb725a3e97 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 1 10:25:01 2010 +0000 + + Warnings cleanup for CAIRO_FORMAT_INVALID. + + A few more fixes required case statements to handle the addition of + CAIRO_FORMAT_INVALID. + + src/cairo-qt-surface.cpp | 2 ++ + src/drm/cairo-drm-i915-surface.c | 2 ++ + src/drm/cairo-drm-i965-shader.c | 2 ++ + src/drm/cairo-drm-i965-surface.c | 1 + + src/drm/cairo-drm-intel-surface.c | 1 + + src/drm/cairo-drm-intel.c | 3 +++ + src/drm/cairo-drm-radeon-surface.c | 1 + + 7 files changed, 12 insertions(+), 0 deletions(-) + +commit 1a7ba1a8061c373cd66d15b3a1c8dfada92745ef +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Mar 1 01:23:17 2010 +0200 + + xcb: Update minimum required versions of libxcb. + + The new xcb surface uses xcb_writev() and xcb_take_socket() + which were introduced in libxcb 1.1.92. The boilerplate + in turn uses the major_code and minor_code fields in + xcb_generic_error_t, which were introduced in 1.4. + + boilerplate/cairo-boilerplate-xcb.c | 6 ++++++ + configure.ac | 5 ++++- + 2 files changed, 10 insertions(+), 1 deletions(-) + +commit 5b7f4bb241f3191c1589cd714f373719efded56e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Feb 28 23:31:06 2010 +0200 + + api: Introduce CAIRO_FORMAT_INVALID formally in the API. + + We were exposing the actual value of CAIRO_FORMAT_INVALID + through API functions already, so it makes sense to just + go ahead and put it in the cairo_format_t enum. + + boilerplate/cairo-boilerplate.c | 2 +- + src/cairo-debug.c | 1 + + src/cairo-gl-glyphs.c | 6 ++++++ + src/cairo-image-surface.c | 6 +++++- + src/cairo-png.c | 1 + + src/cairo-scaled-font.c | 1 + + src/cairo-script-surface.c | 22 ++++++++++++++-------- + src/cairo-win32-surface.c | 6 ++++++ + src/cairo-xcb-surface-render.c | 3 +++ + src/cairo-xlib-display.c | 1 + + src/cairo-xlib-surface.c | 3 +++ + src/cairo-xml-surface.c | 28 +++++++++------------------- + src/cairo.h | 10 ++++++---- + src/cairoint.h | 4 ++-- + src/drm/cairo-drm-gallium-surface.c | 1 + + src/drm/cairo-drm-i915-surface.c | 1 + + src/drm/cairo-drm-intel-surface.c | 2 +- + src/drm/cairo-drm-intel.c | 11 ++++++++--- + src/drm/cairo-drm-radeon-surface.c | 2 +- + test/any2ppm.c | 1 + + test/png.c | 1 + + util/cairo-script/cairo-script-operators.c | 5 +++++ + util/cairo-sphinx/sphinx.c | 9 ++++++--- + util/cairo-trace/trace.c | 4 ++++ + 24 files changed, 88 insertions(+), 43 deletions(-) + +commit 620cd9c2be4a6bef790e6818652470a5c53d578d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 28 09:09:20 2010 +0000 + + image: Allow reduction of repeat modes for unity scaled patterns. + + src/cairo-image-surface.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit 9ecb0f3cec491264041d0d3718595ad95164980a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Feb 28 01:42:10 2010 +0200 + + image: Fix bug optimizing surface pattern extend modes. + + The image surface tries to convert surface pattern's extend + modes to EXTEND_NONE, if it can, when converting a cairo_pattern_t + to a pixman_image_t. The check was not taking into account the + transformation matrix on the pattern, so it was possible to + trick it into using EXTEND_NONE by downscaling the source + pattern enough. This patch changes the optimization to only + take if the pattern has no transformation. + + Fixes surface-pattern-scale-down-extend-{pad,reflect,repeat} + failures in the test suite for the image backend. + + src/cairo-image-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 260d7f8ace9dea8ff6b3a70f481e433cf399a3d2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Feb 27 17:41:28 2010 +0200 + + test: Test downscaling and extending a surface pattern. + + Franz Schmid reported a regression in 1.9.6 when downscaling + and using EXTEND_REPEAT for an image surface pattern. This + patch adds such tests for every extend mode. + + test/Makefile.sources | 1 + + .../surface-pattern-scale-down-extend-none.ref.png | Bin 0 -> 329 bytes + test/surface-pattern-scale-down-extend-pad.ref.png | Bin 0 -> 320 bytes + ...rface-pattern-scale-down-extend-reflect.ref.png | Bin 0 -> 328 bytes + ...urface-pattern-scale-down-extend-repeat.ref.png | Bin 0 -> 330 bytes + test/surface-pattern-scale-down-extend.c | 107 ++++++++++++++++++++ + 6 files changed, 108 insertions(+), 0 deletions(-) + +commit ebadc2ed0810d9941a2f44586016073fea90115b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Feb 27 03:24:55 2010 +0200 + + test: Add tests covering more clip fast paths in groups. + + The clip-group-shapes-* tests check that it doesn't + matter whether the clip path is set before or after + pushing a group using specific types of clip paths + (aligned/unaligned rectangles and general paths.) + + test/Makefile.sources | 1 + + test/clip-group-shapes-aligned-rectangles.ref.png | Bin 0 -> 378 bytes + test/clip-group-shapes-circles.ref.png | Bin 0 -> 1510 bytes + .../clip-group-shapes-unaligned-rectangles.ref.png | Bin 0 -> 415 bytes + test/clip-group-shapes.c | 189 ++++++++++++++++++++ + 5 files changed, 190 insertions(+), 0 deletions(-) + +commit e8d0b4fb39eba799e8649df6dd609f6100efb95e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 26 10:28:23 2010 +0000 + + gl: Markup internal functions with cairo_private + + src/cairo-gl-private.h | 22 +++++++++++----------- + 1 files changed, 11 insertions(+), 11 deletions(-) + +commit ef807119ff8ee23c0444f1197f92b06a5caf6024 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Feb 25 13:58:53 2010 +0200 + + compiler: Explain the slim hidden macros. + + The slim_hidden_* macro definitions are rather cryptic at first + sight and I keep needing to rederive how they work just find out + what they're supposed to do. This patch adds a comment explaining + how they're used and work. + + src/cairo-compiler-private.h | 30 ++++++++++++++++++++++++++++++ + 1 files changed, 30 insertions(+), 0 deletions(-) + +commit dcf897967d54f579c737bbcc10af7fa295b586e5 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Feb 21 01:45:30 2010 +0200 + + test: Fix a wrongly typed return value in scaled-font-zero-matrix. + + The test was returning a cairo_status_t, but should be returning + a cairo_test_status_t instead. When the test failed it was + being reported as having crashed, rather than merely failed, + because the enum value of CAIRO_TEST_CRASHED happened to be + same as the cairo_status_t value of the cairo context at + the end of the failing test. + + test/scaled-font-zero-matrix.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 8bb06915ed6628c6d8978b6c2fec474bbf08d7e9 +Author: Benjamin Otte <otte@redhat.com> +Date: Tue Feb 23 21:01:13 2010 +0100 + + image: split cairo_image_surface_coerce() + + Split into a general cairo_image_surface_coerce() that coerces to one of + the 3 supported formats (ARGB32, RGB24, A8) based on content and the + more general cairo_image_surface_coerce_to_format() that coerces to a + specified format. + + src/cairo-gl-glyphs.c | 3 +-- + src/cairo-gl-surface.c | 3 +-- + src/cairo-image-surface.c | 14 ++++++++++++-- + src/cairo-png.c | 3 +-- + src/cairo-scaled-font.c | 2 +- + src/cairo-script-surface.c | 4 +--- + src/cairo-svg-surface.c | 4 ++-- + src/cairo-type3-glyph-surface.c | 2 +- + src/cairo-xcb-surface-render.c | 21 ++++----------------- + src/cairoint.h | 8 ++++++-- + 10 files changed, 30 insertions(+), 34 deletions(-) + +commit b7c42b6aaa2dba09ed3ff9ae85eae27bec268713 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 23 19:27:16 2010 +0000 + + drm: Add missing private headers + + Reported by: Thomas Jones <thomas.jones@utoronto.ca> + + src/Makefile.sources | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 6ab5f89571b0252496d58242ed3060a9486d68d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 23 08:54:58 2010 +0000 + + bo-rectangular: Fix incorrect skipping of colinear eo edges + + Fixes test/bug-bo-rectangular + + After skipping edges, we need to bd careful to only terminate the box on + a closing edge. + + src/cairo-bentley-ottmann-rectangular.c | 31 ++++++++++++++----------------- + 1 files changed, 14 insertions(+), 17 deletions(-) + +commit 1897156d96d77ff28f585794c1eb1baffa105488 +Author: Benjamin Otte <otte@gnome.com> +Date: Tue Feb 23 08:41:27 2010 +0000 + + test: Add bug-bo-rectangular + + Exercises a bug found in the special case rectangular tessellator with + colinear eo edges. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/bug-bo-rectangular.c | 67 +++++++++++++++++++++++++++++++++++++++ + test/bug-bo-rectangular.ref.png | Bin 0 -> 950 bytes + 4 files changed, 69 insertions(+), 0 deletions(-) + +commit 21b2457aabf7df2a9f040751cd48e396443262f1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Feb 22 15:26:37 2010 +0000 + + fallback: Initialize rects.is_bounded for span renderer. + + src/cairo-surface-fallback.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 6dd22b767808f721de5d00fe384711ffaa269453 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Feb 22 15:24:08 2010 +0000 + + gl: Initialise glyphs mask to ensure allocation in absence of stash. + + src/cairo-gl-glyphs.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 668ac047e6c790b0f8f58c52f169c688caa81678 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Feb 22 14:57:01 2010 +0000 + + gl: Avoid attempting to create a program on GLSL-incapable h/w for spans + + src/cairo-gl-shaders.c | 17 ++++++++++++----- + src/cairo-gl-surface.c | 6 ++++++ + 2 files changed, 18 insertions(+), 5 deletions(-) + +commit 29df5c91d02276211962a083284feb9a424f0d97 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Feb 22 14:46:18 2010 +0000 + + gl: Return unsupported for h/w that cannot handle shaders. + + Remove the ASSERT_NOT_REACHED and propagate the unsupported status so + that we fallback to fixed-function gracefully. + + src/cairo-gl-shaders.c | 28 +++++++++++++++------------- + 1 files changed, 15 insertions(+), 13 deletions(-) + +commit 9f46bad301eff967dc0790fc271d872f8a45cedb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Feb 22 14:20:34 2010 +0000 + + bo-rectangular: Prevent invalid read during edge traversal + + Benjamin Otte tracked down an invalid read triggered by WebKit. The + cause is that we attempt to dereference the list_head as an edge as we + failed to check that during the skipping of colinear edges we advanced + to the end, under the false assumption that there would always + be a closing edge in a rectangle. This assumption is broken if the tail + rectangles having colinear right edges. + + src/cairo-bentley-ottmann-rectangular.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 75db4f0ece194b7aa0455509785a300784778ec4 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Feb 22 02:26:47 2010 +0200 + + text: Fix assert failure from compositing by SOURCE with a mask internally. + + Change the operator used to upgrade the format of a glyph mask from + CAIRO_OPERATOR_SOURCE to CAIRO_OPERATOR_ADD. + + The _cairo_scaled_font_show_glyphs() function upgrades the pixel + format of a glyph mask by calling _cairo_surface_composite() to copy + the mask to an image surface of the upgraded destination. The way it + was doing it however was to use CAIRO_OPERATOR_SOURCE, a white source + pattern and the glyph's rasterised glyph as the mask pattern. This + combination isn't supported by _cairo_surface_composite(), which + asserts that no mask is present when the operator is SOURCE or CLEAR. + + Reported by Mikael Magnusson to #cairo on irc.freenode.net. + + src/cairo-scaled-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 20f8f17f0e494a57a6b413be76f9333b42d88014 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Feb 20 21:42:23 2010 +0100 + + xcb: Fix compilation without dri2 + + XCB should be able to compile without xcb-drm. To do so it + can include xcb/dri2.h only if xcb-drm is enabled. + + src/cairo-xcb-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit fc7be0014d91c8536db8a15ae98b5e78c354c160 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Feb 19 17:39:50 2010 -0800 + + Update version to 1.9.7. + + Following the 1.9.6 snapshot. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit cb090136b2b0b89bde69d9575f2f592b46e144e8 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Feb 19 17:28:29 2010 -0800 + + Update REFERENCE_IMAGES list for "make distcheck". + + As usual, "make distcheck" does not work until we update this list. + + test/Makefile.am | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 20cf7c92b332a5fd28227f0cdaa50e3f1080c038 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Feb 19 17:24:33 2010 -0800 + + Update version to 1.9.6 + + For a new cairo 1.9.6 snapshot. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1c3d417c30bd60c51512d23440896a6a7f51bf23 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Feb 19 17:23:16 2010 -0800 + + NEWS: Add notes for the 1.9.6 snapshot. + + Based on a very brief reading of the git log. There's certainly + a lot of interesting stuff missing here. + + NEWS | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 112 insertions(+), 2 deletions(-) + +commit 9057c4b6be5f5cc6f8905e017dde534402ddedda +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 17 12:37:07 2010 -0800 + + test: Add an option to explicitly specify a test name to the runner. + + test/cairo-test-runner.c | 14 +++++++++++--- + 1 files changed, 11 insertions(+), 3 deletions(-) + +commit e0a948bd2ff3504f5d8b3b3f2136cd9b86cf8ec6 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 17 11:48:41 2010 -0800 + + gl: Be sure to do linear interpolation on gradients. + + src/cairo-gl-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit f1e794956f60a935bfc38ae1c2c2d51d37aadee3 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 17 11:03:52 2010 -0800 + + gl: Stop trying to handle first/last stop offset in the gradient shaders. + + Since moving to pixman for the gradient textures, first=0 and last=1, + so there's no need to rescale to 0,1 any more. Shaves 6 Gen4 ISA + instructions, including 2 inverses, in the radial fragment shader. + + src/cairo-gl-private.h | 4 --- + src/cairo-gl-shaders.c | 12 ----------- + src/cairo-gl-surface.c | 51 ++--------------------------------------------- + 3 files changed, 3 insertions(+), 64 deletions(-) + +commit f813a0243b90ea4151f60f3d13bb6c84d21270df +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 17 10:58:16 2010 -0800 + + gl: Remove the old unused radial/linear gradients shaders. + + They're dynamically generated now for source/mask. + + src/cairo-gl-private.h | 6 --- + src/cairo-gl-shaders.c | 117 ------------------------------------------------ + 2 files changed, 0 insertions(+), 123 deletions(-) + +commit 8da843e996bda7152abb217b3f461a8091dbc880 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 17 10:54:39 2010 -0800 + + gl: Reduce complexity of radial fragment shaders. + + This shaves 1 Mesa IR instruction, and 6 Gen4 ISA instructions. + + src/cairo-gl-shaders.c | 10 ++-------- + 1 files changed, 2 insertions(+), 8 deletions(-) + +commit 89bdc2f8d55d951e15b77e6737c57b208d984b0a +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 4 23:17:59 2010 -0800 + + gl: Implement draw_image for window targets. + + Creates a texture and draws with it instead of doing TexSubImage. + Open question is whether this wouldn't be better in general. Fixes + several failures with ARB_texture_rectangle path due to fallbacks to + window drawing. + + src/cairo-gl-surface.c | 157 ++++++++++++++++++++++++++++++++++++++---------- + 1 files changed, 124 insertions(+), 33 deletions(-) + +commit fcd29473ff71b74bf541199293a966df2232fd63 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 16 13:47:41 2010 -0800 + + gl: Fix glyphs texture coordinates for ARB_texture_rectangle. + + Fixes most of the text testcases to match the + ARB_texture_non_power_of_two results. + + src/cairo-gl-glyphs.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +commit e845450905f373e4fcb9ae4717cfd2c3e6472423 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 16 13:18:33 2010 -0800 + + gl: Add GLSL support for ARB_texture_rectangle, and repeat/reflect fallbacks. + + Most testcases are now passing like the ARB_texture_non_power_of_two + case. EXT_texture_rectangle support is dropped in favor of + ARB_texture_non_power_of_two. If we have issues with drivers not + having that but having EXT (which just lacks the GLSL part of the + spec), we can split it out. Right now non-GLSL support in cairo-gl is + probably in bad shape anyway and will require someone that cares for + it in order to get fixed up. + + src/cairo-gl-shaders.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-surface.c | 21 +++++++++++++++------ + 2 files changed, 59 insertions(+), 6 deletions(-) + +commit 40294377cb26fab7bcf17ee98b8e4f5bf9778ca2 +Author: Dave Airlie <airlied@redhat.com> +Date: Sat Jan 30 19:24:31 2010 +1000 + + gl: initial support for EXT_texture_rectangle extension + + The only issue is the repeat modes aren't supported for rectangular + textures. In any case even with ARB_npot radeon's pre-r600 lie and + fail to do repeats anyway. + + src/cairo-gl-glyphs.c | 25 +++++----- + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 124 +++++++++++++++++++++++++++++------------------- + 3 files changed, 89 insertions(+), 61 deletions(-) + +commit 6542a515f04d52d10fdc89ee9abc76e54282a2d8 +Author: Eric Anholt <eric@anholt.net> +Date: Sun Feb 7 20:26:56 2010 +0100 + + gl: Reduce the size of the gradient texture for small numbers of stops. + + This code is stolen straight from cairo-drm-intel.c. This saves a + bunch of time calculating interpolated points when we just do + interpolation between points at sampling time anyway. Reduces + firefox-talos-svg from 47 seconds back to the 42 it was at before the + pixman change. + + This regresses the reported result of huge-radial, but there's no + visible difference. + + src/cairo-gl-surface.c | 63 ++++++++++++++++++++++++++++++++++------------- + 1 files changed, 45 insertions(+), 18 deletions(-) + +commit 3b678a88b0d026bb765fd9cdff92fe7235e19848 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 16:44:25 2010 +0000 + + drm/i915: Set a source for unbounded fixups. + + src/drm/cairo-drm-i915-surface.c | 52 ++++++++++++++++++++++++++++++-------- + 1 files changed, 41 insertions(+), 11 deletions(-) + +commit 45a275ee29095b69c620ece868411885f4574be9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 14:12:24 2010 +0000 + + drm/i915: Use correct linear mode for mask. + + src/drm/cairo-drm-i915-shader.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 37dbf157f354234d04cd4f0c5d069ff0d535e862 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 14:08:32 2010 +0000 + + clip: Avoiding derefencing NULL clip_region + + src/cairo-image-surface.c | 26 ++++++++++++++------------ + src/cairo-xcb-surface-render.c | 26 ++++++++++++++------------ + 2 files changed, 28 insertions(+), 24 deletions(-) + +commit 6995e1d982a3ad84a1b74730ce557840745fcd8e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 14:08:14 2010 +0000 + + boilerplate: Include X11.h for GL/GLX + + boilerplate/cairo-boilerplate-gl.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 5390df961f6dff8e25e5aac21062026a81710d88 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 12:20:35 2010 +0000 + + clip: Restrict composite extents to clip extents + + Fixes test/clip-rectangle-twice. + + src/cairo-clip-private.h | 6 +++ + src/cairo-clip.c | 84 ++++++++++++++++++++++++++++++++++++++ + src/cairo-image-surface.c | 74 ++++++++------------------------- + src/cairo-surface-fallback.c | 71 +------------------------------ + src/cairo-xcb-surface-render.c | 78 +++++++++-------------------------- + src/drm/cairo-drm-i915-surface.c | 47 +-------------------- + src/drm/cairo-drm-i965-surface.c | 47 +-------------------- + 7 files changed, 137 insertions(+), 270 deletions(-) + +commit 51047483f462a905567b42275ae061ead4df0a07 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 12 12:18:30 2010 +0000 + + test: Add clip-twice-rectangle + + Jeff Muizeelar found another bug with clipping whereby the clip was + been incorrectly discarded. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/clip-twice-rectangle.c | 70 +++++++++++++++++++++++++++++++++++++ + test/clip-twice-rectangle.ref.png | Bin 0 -> 323 bytes + 4 files changed, 72 insertions(+), 0 deletions(-) + +commit 22b5f78c1c1ae7d289a99a3c52354bba3b9e817f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Feb 11 10:38:51 2010 +0000 + + gl: Remove eagle support + + Eagle is no more, Kristian has superseded it with true EGL support. He + is so happy... + + boilerplate/Makefile.win32.features | 10 -- + build/Makefile.win32.features | 1 - + build/Makefile.win32.features-h | 3 - + build/configure.ac.features | 1 - + configure.ac | 12 --- + src/Makefile.sources | 2 - + src/Makefile.win32.features | 14 --- + src/cairo-eagle-context.c | 185 ----------------------------------- + src/cairo-gl.h | 12 --- + 9 files changed, 0 insertions(+), 240 deletions(-) + +commit ed4a30b38311e4ce0730ecd6026432f4a1e8ddf7 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Feb 10 22:10:23 2010 +0100 + + build: Add -Wdeclaration-after-statement + + ... and fix the compile errors from it I get on my build. + + It's Cairo style to put declarations before the code, so better warn + about it. + Besides, it eases porting to old compilers like MSVC. + + build/configure.ac.warnings | 2 +- + src/cairo-gl-shaders.c | 8 ++++---- + src/cairo-gl-surface.c | 3 ++- + src/cairo-xcb-surface-core.c | 3 ++- + 4 files changed, 9 insertions(+), 7 deletions(-) + +commit 4113e455a317785b83324215a6b0156995665989 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Feb 10 21:09:56 2010 +0000 + + drm/i965: fix use of uninitialized variable whilst dumping errors + + Cut'n'paste bug from i915 error path. + + src/drm/cairo-drm-i965-surface.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit 5d34902c0cb9712179292112fbdb0f06be327fd8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Feb 10 12:10:16 2010 +0000 + + script: Compile without mmap + + Should fix: + Bug 26509 - Cairo fails to compile without mmap + http://bugs.freedesktop.org/show_bug.cgi?id=26509 + + As reported by Hib Eris, Cairo files to compile under a mingw32 + cross-compiler as we use a structure only defined if HAVE_MMAP + unconditionally. + + util/cairo-script/cairo-script-operators.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit fb5af4ae407044d1c0d0144ec13f5951075426a3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Feb 10 12:00:59 2010 +0000 + + drm/intel: An interrupted SET_TILING modifies the input parameters + + If a signal interrupts the SET_TILING ioctl, the tiling and stride + values are updated to reflect the current condition of the buffer, so we + need to restore those to the desired values before repeating the ioctl. + + src/drm/cairo-drm-intel.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 3c66c721d1bb1db6052acf722f609dcbe56431f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 9 08:48:42 2010 +0000 + + qt: Fix compile error. + + Update after prototype changed for create_similar(), as pointed out by + augzilla. + + src/cairo-qt-surface.cpp | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit a1e5b07fa834819b8d9df9fa56758639a08262d7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 7 20:26:27 2010 +0000 + + ps: Initialise page bbox to page size + + src/cairo-ps-surface.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 44b6370cb04d27e1ae3e50558a9085d318990938 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 7 19:36:29 2010 +0000 + + ps: Propagate NOTHING_TO_DO + + The upper layers should know what to do if there is nothing to be done, + so pass on that knowledge. + + src/cairo-ps-surface.c | 36 ++++-------------------------------- + 1 files changed, 4 insertions(+), 32 deletions(-) + +commit a4793d1331845b85a9c1810035119dfbcffa5082 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 7 19:27:32 2010 +0000 + + test: Add linear-gradient-subset + + It was observed that we never actually test the condition that the + gradient is only defined for a portion of its range, i.e. the starting + offset is >0 and the ending offset is <0. By definition the colour + between 0 and start offset is the start color, so check that this + behaviour is followed by all backends. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/linear-gradient-subset.c | 127 +++++++++++++++++++++++++++++++++++ + test/linear-gradient-subset.ref.png | Bin 0 -> 825 bytes + 4 files changed, 129 insertions(+), 0 deletions(-) + +commit 0f99303cd6d68df79070200a843194a20ad1c597 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 7 12:40:19 2010 +0000 + + gl: Use pixman to create the gradient texture + + This is just for consistency as we know that pixman has to handle all + the corner cases anyway... + + src/cairo-gl-surface.c | 147 ++++++++++++++++++++++++++--------------------- + 1 files changed, 81 insertions(+), 66 deletions(-) + +commit b028d287e6effe30833963f4df40db3846e7f4da +Author: Eric Anholt <eric@anholt.net> +Date: Fri Feb 5 07:25:04 2010 -0800 + + [gl] Make the VBO once at startup instead of recreating per glyphs/spans. + + This shaves 2% off of firefox-talos-gfx. + + src/cairo-gl-glyphs.c | 10 ++-------- + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 8 +++----- + 3 files changed, 6 insertions(+), 13 deletions(-) + +commit 696a715702ed18bbe3f7d8b97654a055fa37444e +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 21:34:24 2010 -0800 + + [gl] Add radial gradients acceleration. + + This is significantly cribbed from Zach Laine's work, but reworked so + that gradients can be plugged in as either source or mask operands for + any of the paths. + + src/cairo-gl-private.h | 13 +++++ + src/cairo-gl-shaders.c | 77 +++++++++++++++++++++++++++- + src/cairo-gl-surface.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 216 insertions(+), 3 deletions(-) + +commit 297b0ab47fa63ef99e65b6834b731c260ea3e941 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 4 23:57:43 2010 -0800 + + [gl] When making a boilerplate GLX window, ensure it has alpha. + + cairo_gl_surface_create_for_window assumes CONTENT_COLOR_ALPHA, so + make sure the fbconfig we choose is good enough. Fixes gl-window + testcase results to basically match the non-window testcases. + + boilerplate/cairo-boilerplate-gl.c | 17 +++++++++-------- + 1 files changed, 9 insertions(+), 8 deletions(-) + +commit 6708bc0593a649d083ede429ae73f06691edc018 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 4 23:47:33 2010 -0800 + + [gl] When filling a gradient texture, multiply alpha after interpolating. + + Fixes gradient-alpha testcase. + + src/cairo-gl-surface.c | 20 +++++++++----------- + 1 files changed, 9 insertions(+), 11 deletions(-) + +commit e426cdd56973ff1114dac5e8b1130180d43631b0 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 16:03:52 2010 -0800 + + [gl] Implement linear gradients acceleration. + + This is significantly cribbed from Zach Laine's work, but reworked so + that gradients can be plugged in as either source or mask operands for + any of the paths. + + This cuts the runtime of firefox-talos-svg in half on my GM45, at the + expense of gradient-alpha. surface-pattern-operator also now fails + due to small rasterization differences. + + src/cairo-gl-glyphs.c | 1 + + src/cairo-gl-private.h | 11 ++++ + src/cairo-gl-shaders.c | 39 ++++++++++++- + src/cairo-gl-surface.c | 139 ++++++++++++++++++++++++++++++++++++++++++++---- + 4 files changed, 176 insertions(+), 14 deletions(-) + +commit 05b18fc09af0e0887c652bd482d68f00bec6d4d7 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 4 00:12:58 2010 -0800 + + [gl] Fix create_gradient_texture to premultiply alpha. + + src/cairo-gl-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 31e706454b7f0fa510047f582250a7a2db24dd31 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 15:48:40 2010 -0800 + + [gl] Pull the gradient operand setup out to its own function. + + Hopefully this clarifies what's going on, including the fallthrough to + texture setup on failure. + + src/cairo-gl-surface.c | 77 ++++++++++++++++++++++++++--------------------- + 1 files changed, 43 insertions(+), 34 deletions(-) + +commit 745f263c1c2d263f7c5e78964bf7181f650301cc +Author: T. Zachary Laine <whatwasthataddress@gmail.com> +Date: Wed Feb 3 15:38:02 2010 -0800 + + [gl] Add function for creating a 1D texture to use for gradient lookups. + + Rather than have fragment shaders try to walk a variable-length set of + stops and try to compute the interpolation between the nearest stops + per fragment, we make a little texture representing the gradient along + a line and have the shaders compute texture coordinates along the line + and sample. This should be a good tradeoff between CPU work and GPU + work. + + [anholt: I pulled this set of code out of Zach Laine's tree to use for + gradient acceleration, and wanted to make sure attribution was + appropriate. I applied only minor tweaking] + + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 118 insertions(+), 0 deletions(-) + +commit 88c8304e9072e5a46890a0eb32fcdbc857eb1a12 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 17:06:45 2010 -0800 + + [gl] Sanity check the sampler uniform binding. + + src/cairo-gl-shaders.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 42597170f2303475bb0507f4c6e948eead28c7bd +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 16:55:45 2010 -0800 + + [gl] Convert the spans code to using GLSL when available. + + src/cairo-gl-private.h | 1 + + src/cairo-gl-shaders.c | 35 +++++++++++++++++++++++++++++-- + src/cairo-gl-surface.c | 52 +++++++++++++++++++++++++++++------------------ + 3 files changed, 65 insertions(+), 23 deletions(-) + +commit 8d16fb10ea9940c0c9f311ff08c51d572c068c17 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 15:31:57 2010 -0800 + + [gl] Test for required EXT_bgra and explain what it's used for. + + src/cairo-gl-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit b2d8c9cbf2faec570450d163da140c54e64bbdc8 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 15:25:47 2010 -0800 + + [gl] Use the shader source choice from operand setup instead of DIY. + + src/cairo-gl-glyphs.c | 15 +-------------- + 1 files changed, 1 insertions(+), 14 deletions(-) + +commit 0fceac4d52d4b574b9c1f911b83d15dc7e01691d +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 12:24:41 2010 -0800 + + [gl] Move the component alpha composite to using GLSL when available. + + src/cairo-gl-surface.c | 165 +++++++++++++++++++++++++++++++----------------- + 1 files changed, 108 insertions(+), 57 deletions(-) + +commit 8357336ed7be91ad359d205b1f223486d13215f2 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 11:54:24 2010 -0800 + + [gl] Move normal composites to using GLSL when available. + + src/cairo-gl-private.h | 2 + + src/cairo-gl-surface.c | 55 ++++++++++++++++++++++++++++++++++------------- + 2 files changed, 42 insertions(+), 15 deletions(-) + +commit 106bc158bafa4eecfd7f79422fc19d267c20dcdb +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 3 15:15:02 2010 -0800 + + [gl] Move the glyphs shader construction to a more general location. + + src/cairo-gl-glyphs.c | 213 ++++++++++-------------------------------------- + src/cairo-gl-private.h | 48 +++++++---- + src/cairo-gl-shaders.c | 200 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 273 insertions(+), 188 deletions(-) + +commit f475351f75a3ec079628a2eb2643ebc09f0e5cc8 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 2 19:23:17 2010 -0800 + + [gl] Use GLSL when available for glyph rendering. + + This reduces the CPU work in translating fixed function state to + shaders, but currently is a slight cost on GM45 because we end up + changing shaders more frequently since other parts of the pipeline are + doing fixed function still. + + src/cairo-gl-glyphs.c | 189 +++++++++++++++++++++++++++++++++++++++++++++--- + src/cairo-gl-private.h | 19 +++++ + src/cairo-gl-shaders.c | 10 ++- + src/cairo-gl-surface.c | 58 +++++++++------ + 4 files changed, 240 insertions(+), 36 deletions(-) + +commit 672973caa0c3877b3b9f1c5f5966449ce0d7e239 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 2 11:17:43 2010 -0800 + + [gl] Convert fill_rectangles to the new GLSL core/arb wrapper. + + src/cairo-gl-private.h | 12 +++--- + src/cairo-gl-shaders.c | 106 ++++++++++------------------------------------- + src/cairo-gl-surface.c | 39 +++++++++--------- + 3 files changed, 48 insertions(+), 109 deletions(-) + +commit 416273db34a715a6fa180f52ddfd11b82b6e8b6c +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 2 10:37:42 2010 -0800 + + [gl] Cut out the abstraction of GL_VERTEX_SHADER vs GL_VERTEX_SHADER_ARB. + + They're the same number, so just use the core 2.0 name. + + src/cairo-gl-shaders.c | 38 ++------------------------------------ + 1 files changed, 2 insertions(+), 36 deletions(-) + +commit 48a5a6eefc923db47c35ad7da3b635d205736716 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 2 10:36:16 2010 -0800 + + [gl] Avoid macro obfuscation of the shader impl structures. + + src/cairo-gl-shaders.c | 52 ++++++++++++++++++++++++++++------------------- + 1 files changed, 31 insertions(+), 21 deletions(-) + +commit 25ccc5dcb036554430b66fb1bf5f74766daa5612 +Author: Zach Laine <whatwasthataddress@gmail.com> +Date: Thu Jan 14 11:49:04 2010 -0600 + + [gl] Add shader support code for GL versions < 3.0. + + Adds cairo_gl_shader_program_t, and functions to manipulate same. Multiple GL + entry points for shaders are provided -- one for the pre-GL 2.0 extenstions + entry points, and one for GL 2.0. This code is well tested, but currently + unused in the GL backend. + + src/cairo-gl-private.h | 49 ++++ + src/cairo-gl-shaders.c | 623 +++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 671 insertions(+), 1 deletions(-) + +commit a6897ad3867611bd74f8ab7de4b1e8d8d1c12c71 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Feb 2 11:24:36 2010 -0800 + + [gl] Check for GLSL support once at context init instead of per draw. + + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 11 ++++++++++- + 2 files changed, 11 insertions(+), 1 deletions(-) + +commit b1829a47bff2b03a850d4049f228d2a41e14d6bd +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Feb 3 11:19:26 2010 +0100 + + [quartz] Unbreak mask fallback path + + _cairo_quartz_surface_paint will never fail as it falls back to image + when CoreGraphics can't handle the requested operation. This means that + upon fallback the ClipImage set by the masking code gets ignored, thus + the mask fallback path is broken. Using the _cg function ensures that + masking is either completely done by CoreGraphics, or the fallback path + passes the mask operation to image. + + src/cairo-quartz-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 597dd24ddcc763281c82790b7677e54dc2db8f92 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Feb 3 08:53:44 2010 +0000 + + drm/i915: Free potential leak of cloned textures. + + src/drm/cairo-drm-i915-shader.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 913a31494ec4bd000dfa303e362d8273b6857cfe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 17:49:09 2010 +0000 + + drm/i915: Increase batch buffer space. + + src/drm/cairo-drm-i915-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1315323b20398c7c4efa68e4e1c7f6fd6c1d8d91 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 17:38:06 2010 +0000 + + drm/i915: check for batch buffer overflow. + + Oops, the check for sufficient batch space mysteriously disappeared + during the rearrangement. + + src/drm/cairo-drm-i915-private.h | 3 -- + src/drm/cairo-drm-i915-shader.c | 44 ++++++++++++++++++++++++++++++++++++++ + src/drm/cairo-drm-i915-surface.c | 35 ------------------------------ + 3 files changed, 44 insertions(+), 38 deletions(-) + +commit e2be50c722347734801468d7d9568a18dbbaaa17 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Jan 29 12:06:13 2010 +0100 + + [quartz] Fix UNSUPPORTED operations + + The fallback path shouldn't be used anymore, thus fallbacks are now + handled by passing unsupported ops to the image backend. + + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-quartz-surface.c | 234 +++++++++++++++++++++++++++++++++++++------- + 1 files changed, 198 insertions(+), 36 deletions(-) + +commit 3e69c38fe642be467fee0cad166b83006741d55c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Jan 24 21:59:32 2010 +0100 + + [quartz] Fix surface to CGImage conversion + + Snapshotting a surface doesn't produce a cairo_image_surface_t. + Acquiring (and later releasing) the surface is needed to access + its image data. + + src/cairo-quartz-surface.c | 75 ++++++++++++++++++++++--------------------- + 1 files changed, 38 insertions(+), 37 deletions(-) + +commit 7aba47e9d87bf09a5fa7e41a3c76c775f28b08f3 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Jan 25 15:09:51 2010 +0100 + + [quartz] Silence compiler warnings + + src/cairo-quartz-surface.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +commit e9b07d194630f3f5e31eef3606f8e4c188a01d5f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:28:30 2010 +0000 + + drm/i915: Don't tile page sized bo. + + Minor tweak from < to <= so that a page sized bo is also not tiled for + those 32x32 pixmaps... + + src/drm/cairo-drm-i915-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 70ca9dd170ce1cf8941311ec1f3dc117aef141b6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:28:09 2010 +0000 + + drm/i915: Pass the correct length to dump the batchbuffer. + + src/drm/cairo-drm-i915-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3266a1a72be9c0a6b6c0014c4b64098507b6d385 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:27:52 2010 +0000 + + drm: Handle absence of PCI_ID + + src/drm/cairo-drm.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1ecefc53a1d370d9fffb323952dcabeef5b872c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:26:54 2010 +0000 + + pattern: Zero-length gradients are not necessary empty + + Fixes: test/linear-step-function + + If the extend mode is unbounded, then the gradient is also unbound. + + src/cairo-pattern.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 2a59220aa448cd7416f1851c4c62ca6ac396302d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:24:30 2010 +0000 + + test: Add linear-step-function + + Another bug identified by Jeff Muizelaar was that the bounds for a + zero-length (i.e. it started and stopped at the same point) were + miscomputed. This test case exercises that bug. + + Note: I believe the output is wrong here when padding a zero-length + gradient. On the left it should be red, and on the right it should be + blue. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/linear-step-function.c | 60 +++++++++++++++++++++++++++++++++++ + test/linear-step-function.xfail.png | Bin 0 -> 116 bytes + 4 files changed, 62 insertions(+), 0 deletions(-) + +commit 7b37ba8a49dca39a42b5395e0715d3d0a5a89972 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:17:13 2010 +0000 + + clip: Propagate all-clipped when copying + + Fixes test/clip-empty-save. + + The all-clipped flag was not being copied to the new clip, which occurs + for instance when an empty clip is pushed via a gstate save. + + src/cairo-clip.c | 7 ++----- + 1 files changed, 2 insertions(+), 5 deletions(-) + +commit 7dc464bb2bd64d1469b7b03afaf2191ee6d9e28b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 2 16:15:32 2010 +0000 + + test: Add clip-empty-save + + Jeff Muizelaar found a bug in _cairo_clip_init_copy() which was not + correctly propagating the all-clipped status when an empty clip was + saved in the gstate. This test case exercises that bug. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/clip-empty-save.c | 68 ++++++++++++++++++++++++++++++++++++++++++ + test/clip-empty-save.ref.png | Bin 0 -> 118 bytes + 4 files changed, 70 insertions(+), 0 deletions(-) + +commit ab3dc7bb31f7f8b8c4d87c1ae62bd946b260c77e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jan 31 16:59:07 2010 +0000 + + csi-replay: compile fix + + util/cairo-script/csi-replay.c | 32 +++++++++++++++++++++----------- + 1 files changed, 21 insertions(+), 11 deletions(-) + +commit ab605214d151098ad153e8bf74ae0ca71a34c963 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Feb 1 09:27:16 2010 +0100 + + Partially revert "Improve stroking of densely dashed styles" + + This reverts commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 on + cairo-path-stroke. + The changes in cairo-path-stroke are not needed anymore since dash + pattern approximation is now done in gstate before passing the dash + pattern to the backend. + + src/cairo-path-stroke.c | 24 ++++++------------------ + 1 files changed, 6 insertions(+), 18 deletions(-) + +commit 8ffe0fc3825f0f6bc4d06607f6819ea8c2c2040b +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jan 30 09:29:48 2010 +0100 + + Revert "[quartz] Approximate dense dashing patterns" + + This reverts commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96. + Approximation is now done in gstate. + + src/cairo-quartz-surface.c | 32 +++++++++++--------------------- + 1 files changed, 11 insertions(+), 21 deletions(-) + +commit 2e91648bcba06832dfa92bd742c32b2f5c1ad989 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Jan 15 15:46:20 2010 +0100 + + Approximate dash patterns in gstate + + Since approximation is only done when the pattern is sub-tolerance, + it is acceptable to apply it even for vector backends. + By doing it once and for all backends, backends are guaranteed to have + non-degenerate input. + Acked-by: Adrian Johnson <ajohnson@redneon.com> + + src/cairo-gstate.c | 13 ++++++++++++- + 1 files changed, 12 insertions(+), 1 deletions(-) + +commit 67f666896cbfd0ac2728c7aa1325a7d0b2c8282d +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Jan 24 22:17:18 2010 +0100 + + Improve comments style consistency + + Each line of a multi-line comment should begin with '*'. + + src/cairo-stroke-style.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 45c795a1820e0317b123e7782cefed6ade8996d7 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Jan 15 10:44:58 2010 +0100 + + Improve dash pattern approximation + + Dash pattern approximation was taking the caps style into account + only for coverage computation, but not when computing the new + pattern, thus the computed approximation had a higher coverage if + the caps style was SQUARE or ROUND. + + Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> + + src/cairo-stroke-style.c | 56 ++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 54 insertions(+), 2 deletions(-) + +commit 8d7841048b079ce2a582ff17c90e82e0081e5f42 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Jan 17 19:00:47 2010 +0100 + + Round caps coverage extimate explanation + + Comment on how the round caps coverage has been computed, explaining + the complete procedure. The comments doesn't contain intermediate + (verbose and ugly) results, but when executed in a symbolic math + program (sage, for example) computes the expected results. + + Reviewed-by: M. Joonas Pihlaja <jpihlaja@cc.helsinki.fi> + + src/cairo-stroke-style.c | 16 ++++++++++++++++ + 1 files changed, 16 insertions(+), 0 deletions(-) + +commit 8558cd579059974758bda696c33f08399267d33e +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 28 17:39:34 2010 -0800 + + [gl] Use GL_MESA_pack_invert to flip get_image of windows around. + + This doesn't have any fallback for a GL that fails to implement the + extension. Fixes 120 testcases for gl-window. + + src/cairo-gl-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 11a120fb8477910f5ac63dc1ebde45c276764783 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Jan 29 14:21:06 2010 +0100 + + Silence autoconf on Mac OS X + + Autoconf was complaining that AC_COMPILE_IFELSE and AC_RUN_IFELSE + were called before AC_GNU_SOURCE. Moving AC_GNU_SOURCE right after + AC_INIT solves this. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 05d4f9b461749f129b17cc97d6e3e6b49fe8e8d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 29 11:30:49 2010 +0000 + + xlib: Compile fix for no fontconfig + + src/cairo-xlib-screen.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit e3e74641450481e7ad393bbc6fd1a7428be53de1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 29 11:22:26 2010 +0000 + + atomic: Fix up compile on PPC with libatomic-ops + + src/cairo-atomic-private.h | 2 -- + src/cairo-atomic.c | 3 ++- + 2 files changed, 2 insertions(+), 3 deletions(-) + +commit e11d2d0b4d646757fcba11631b6db169e2c183b0 +Author: Alexander Shulgin <alex.shulgin@gmail.com> +Date: Fri Jan 29 09:17:01 2010 +0000 + + surface: Fix detach mime-data after ecda633f887a10da650b4cd3efb17c861a6f519f + + Hi, + + while browsing the git log I've noticed a small mistake in the above + commit, where we reversed the order of init/fini required to reset the + mime-data array. + + src/cairo-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5f0a0088af784157d8efe149ed073c8fa010e648 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 28 13:23:39 2010 +0000 + + drm-intel: Unmap a full glyph cache. + + When we swap a full glyph cache for a fresh one, be sure to unmap the + old one prior to release. + + src/drm/cairo-drm-i915-glyphs.c | 2 +- + src/drm/cairo-drm-intel.c | 3 +++ + 2 files changed, 4 insertions(+), 1 deletions(-) + +commit 78cd9471200c69c8b3737e859260f4552145d958 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 23:45:17 2010 +0000 + + drm: Paranoid assert that the fallback is released upon finish. + + src/drm/cairo-drm-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 5aa1191204e3eed6e3e97e23f37a52bbdfffcbce +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 23:42:26 2010 +0000 + + drm-intel: flush in memory modifications to texture. + + If the surface was written to using a fallback, and so is mapped, we + need to flush those modifications by relinquishing the map. So the next + time the application tries to write to the surface, those writes are + correctly serialised with our reads. + + src/drm/cairo-drm-i915-shader.c | 14 ++++++++++++++ + src/drm/cairo-drm-i965-shader.c | 12 ++++++++++++ + 2 files changed, 26 insertions(+), 0 deletions(-) + +commit a38accb694452fc5dfac63535648656885cd47eb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 23:27:46 2010 +0000 + + drm-intel: The accumulation bo may be NULL, beware. + + If we are not accumulating but rendering directly to the output vbo, + then the tail bo may not even be allocated, let alone mapped. + + src/drm/cairo-drm-i915-spans.c | 2 +- + src/drm/cairo-drm-i965-glyphs.c | 2 +- + src/drm/cairo-drm-i965-spans.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 44734b9d3ba60fb45abb0268a916e40cd688ef6a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 23:17:44 2010 +0000 + + drm-intel: Assert that the bo is unmapped upon release. + + Check through error paths to catch a few more places where the mapped bo + may have been leaked, and add an assert to abort in case we do leak a + mapping. + + src/drm/cairo-drm-i915-spans.c | 3 +++ + src/drm/cairo-drm-i965-glyphs.c | 4 ++++ + src/drm/cairo-drm-i965-spans.c | 3 +++ + src/drm/cairo-drm-intel.c | 6 +++++- + 4 files changed, 15 insertions(+), 1 deletions(-) + +commit 6848c7c850aa0a710c1409d1fc2cb441d02a2b28 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 23:01:37 2010 +0000 + + drm-i915: Don't tile temporary image textures. + + As uploading to a tiled buffer is much slower than linear memory, don't + unless we expect to reuse the texture. This is not true for sub-image + clones, which are single shot affairs. + + src/drm/cairo-drm-i915-shader.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f75b7c4c110e880f4bdd578d9180f9afbb1d0034 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 19:20:57 2010 +0000 + + drm/i915: Ensure surface is initialized. + + Let's try that again, this time remembering to place it on the + conjunction of the two branches, so *both* paths are initialized. + + src/drm/cairo-drm-i915-shader.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 02f20458d1dd48fc4589734fc4b3e0c8bea1ce5c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 19:02:21 2010 +0000 + + drm-i915: Ensure surface size for clone is initialized. + + If the surface had a snapshot, then we would have not initialized the + surface size and so compute a bogus normalization matrix. + + src/drm/cairo-drm-i915-shader.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit c82ff8cbcf27dc20d2b44a988eed1b676d996e8c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 27 18:48:32 2010 +0000 + + configure: Enable AC_SYS_LARGEFILE for drm + + drm makes use of 64bit offsets when mmaping, and so we require the + 64bit file interfaces. I had presumed that it would be pulled in with + AC_GNU_SOURCE, but no. + + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 6d2d338ac04b02200e009c9e97d3ce030d07eb6f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 22:47:10 2010 +0000 + + drm: compile fix for cairo_always_inline + + s/always_inline/cairo_always_inline/ + + src/drm/cairo-drm-i965-private.h | 8 +- + src/drm/cairo-drm-intel-brw-eu.h | 132 ++++++++++++++++++------------------ + src/drm/cairo-drm-intel-private.h | 2 +- + src/drm/cairo-drm-private.h | 2 +- + 4 files changed, 72 insertions(+), 72 deletions(-) + +commit 58980b4ad60a60923a59370c81d59bb0457a7922 +Author: Benjamin Otte <otte@redhat.com> +Date: Wed Jan 27 09:56:14 2010 +0100 + + build: Remove glitz surface + + glitz is unmaintained and the GL surface is far superior anyway. + + README | 8 +- + boilerplate/Makefile.am | 13 - + boilerplate/Makefile.sources | 5 - + boilerplate/Makefile.win32.features | 10 - + boilerplate/cairo-boilerplate-glitz-agl.c | 191 --- + boilerplate/cairo-boilerplate-glitz-glx.c | 265 ---- + boilerplate/cairo-boilerplate-glitz-wgl.c | 188 --- + build/Makefile.win32.features | 1 - + build/Makefile.win32.features-h | 3 - + build/configure.ac.features | 1 - + configure.ac | 38 - + doc/public/cairo-docs.xml | 1 - + doc/public/cairo-sections.txt | 1 - + doc/public/tmpl/cairo-glitz.sgml | 22 - + src/Makefile.sources | 4 - + src/Makefile.win32.features | 14 - + src/cairo-deprecated.h | 1 - + src/cairo-glitz-private.h | 41 - + src/cairo-glitz-surface.c | 2450 ----------------------------- + src/cairo-glitz.h | 57 - + test/Makefile.am | 8 - + test/Makefile.sources | 2 - + test/glitz-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/glitz-surface-source.c | 293 ---- + test/glitz-surface-source.ps2.ref.png | Bin 376 -> 0 bytes + test/glitz-surface-source.ps3.ref.png | Bin 376 -> 0 bytes + test/glitz-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + util/cairo.modules | 10 +- + 28 files changed, 3 insertions(+), 3624 deletions(-) + +commit 17ddb1598b3df374b6275d907441f34318b4257f +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jan 25 20:17:12 2010 +0100 + + docs: appease make check + + src/cairo-gl-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit bac513a85dc8ef2915b2e60d034cf3dbc82a8e0c +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jan 25 20:05:56 2010 +0100 + + build: Fix pthread detection + + THe pthread.h detection code didn't pass -lpthread or -pthread to Cairo. + + configure.ac | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit 582604f7b6b5b2ab6e681245bc7cde64d4995307 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jan 25 19:22:33 2010 +0100 + + [png] Simplify coercion code + + Call _cairo_image_surface_coerce() unconditionally to ensure coercion to + one of the standard formats happens even when it's a format we support. + + src/cairo-png.c | 16 ++++++---------- + 1 files changed, 6 insertions(+), 10 deletions(-) + +commit 002e02715cac9a285fd97e1bb6b068ceebfae3d8 +Author: Benjamin Otte <otte@redhat.com> +Date: Mon Jan 25 19:42:54 2010 +0100 + + Remove useless pixman version checks + + We require pixman >= 0.15.16 in configure.ac, so checks for older + versions aren't required anymore. + + src/cairo-gl-surface.c | 2 -- + src/cairo-image-surface.c | 10 ++-------- + 2 files changed, 2 insertions(+), 10 deletions(-) + +commit 5a690ad4acb3687c45c201b3ce92cd3e41bf3b30 +Author: Benjamin Otte <otte@gnome.org> +Date: Fri Jan 15 13:44:04 2010 +0100 + + Give cairo_surface_mark_dirty() the slim hidden treatment + + Fixes test suite failure + + src/cairo-surface.c | 1 + + src/cairoint.h | 1 + + 2 files changed, 2 insertions(+), 0 deletions(-) + +commit 571ab1007571cb8d78fcb5206b43d6b964aa0df1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 18:22:03 2010 +0000 + + xcb: Fix linking with xcb-drm + + src/cairo-xcb-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ecda633f887a10da650b4cd3efb17c861a6f519f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 18:17:28 2010 +0000 + + mime-data: Detach existing alternate representations upon modification + + A major sore point in the current mime-data API is the choice to keep + the alternate mime-data representations after the user has actually + modifying the primary representation (i.e. has made it a target of a + cairo_t and drawn to it). This has been rightly chastised as unexpected + behaviour, and given that we already have the mechanism to detach + snapshots upon modification, there is no reason not to behave as + expected. + + src/cairo-surface.c | 21 ++++++++++++++++++++- + 1 files changed, 20 insertions(+), 1 deletions(-) + +commit 123bdb086ad9c5725a51791458d31309c69a3f41 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 16:45:03 2010 +0000 + + xcb: Make shm optional + + Trying to build xcb on a system without SHM wrapped by xcb. The right + answer would be to build libxcb-shm. The quick answer is to compile out + shm support. + + boilerplate/Makefile.win32.features | 10 ++++++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + build/configure.ac.features | 1 + + configure.ac | 14 +++++++++++++- + src/Makefile.sources | 8 ++++++-- + src/Makefile.win32.features | 14 ++++++++++++++ + src/cairo-xcb-connection.c | 22 ++++++++++++++++++---- + src/cairo-xcb-private.h | 21 +++++++++++++++++++++ + src/cairo-xcb-surface-core.c | 2 ++ + src/cairo-xcb-surface-render.c | 2 ++ + src/cairo-xcb-surface.c | 14 ++++++++++++++ + 12 files changed, 105 insertions(+), 7 deletions(-) + +commit e1b3330376c173633e146eb6cf578592d424e4d5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 14:48:44 2010 +0000 + + configure: dri2 is only required for xcb-drm + + Move the optional dependency on dri2 to the xcb-drm integration where it + is required. + + configure.ac | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit 8151c72307e8cb369fbb524de56f87f805efff2b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 12:14:39 2010 +0000 + + xcb: compile errors with lockdep + + After moving the mutex to the superclass, I forgot to update the + references from the lockdep asserts. + + src/cairo-xcb-connection.c | 6 +++--- + src/cairo-xcb-screen.c | 16 ++++++++-------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit be81d656c53c76032fd3fe11c81402d17ec56327 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 11:54:24 2010 +0000 + + clip: Create a fallback clip surface + + If the destination cannot support a clip surface, then we will need to + use an intermediate image surface and trigger fallbacks upon use. + + src/cairo-clip.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit c453d8ab704e5f41cb010241efe9bcb9ff886024 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 11:45:01 2010 +0000 + + test: Erroneous ref image for big-line xlib-fallback. + + test/big-line.xlib-fallback.ref.png | Bin 723 -> 0 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 180aea76adbb6d5c5909652b7a8cafb7a693e982 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Jan 25 20:48:02 2010 +1030 + + Fix printing of rotated user fonts + + b7550bf0 introduced a regression when user fonts are rendered to a + rotated context. + + src/cairo-type3-glyph-surface.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit abcb9d2c39178620b1847fe6ea6e144602464ecc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 09:35:09 2010 +0000 + + image: Prevent deref of NULL clip_region + + Another stray from surface-fallback, spotted by Carlos: + + *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at + cairo-region.c:385 + 385 if (region->status) { + (gdb) bt + 0 *INT_cairo_region_get_extents (region=0x0, extents=0xbfffce90) at + cairo-region.c:385 + 1 0x0013ba46 in _cairo_image_surface_composite_trapezoids + (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, abstract_dst=0x837de10, + antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=0, + dst_y=0, width=15, height=25, traps=0x837f100, num_traps=30, + clip_region=0x0) + at cairo-image-surface.c:4102 + 2 0x0015d846 in _cairo_surface_composite_trapezoids + (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837de10, + antialias=CAIRO_ANTIALIAS_DEFAULT, + src_x=486, src_y=45, dst_x=0, dst_y=0, width=15, height=25, + traps=0x837f100, num_traps=30, clip_region=0x0) at cairo-surface.c:2125 + 3 0x001607ce in _cairo_surface_fallback_composite_trapezoids + (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, + antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=486, src_y=45, dst_x=486, + dst_y=45, width=15, height=25, traps=0x837fd78, num_traps=30, + clip_region=0x0) + at cairo-surface-fallback.c:1641 + 4 0x0015d8a4 in _cairo_surface_composite_trapezoids + (op=CAIRO_OPERATOR_OVER, pattern=0xbfffdda8, dst=0x837db00, + antialias=CAIRO_ANTIALIAS_DEFAULT, + src_x=486, src_y=45, dst_x=486, dst_y=45, width=15, height=25, + traps=0x837fd78, num_traps=30, clip_region=0x0) at cairo-surface.c:2137 + 5 0x001623b0 in _composite_traps_draw_func (closure=0xbfffd350, + op=CAIRO_OPERATOR_OVER, src=0xbfffdda8, dst=0x837db00, dst_x=0, dst_y=0, + extents=0xbfffdc78, clip_region=0x0) at cairo-surface-fallback.c:546 + 6 0x00161234 in _clip_and_composite (clip=0x0, op=<value optimized + out>, src=0xbfffdda8, draw_func=0x162310 <_composite_traps_draw_func>, + draw_closure=0xbfffd350, dst=0x837db00, extents=0xbfffdc78) at + cairo-surface-fallback.c:463 + 7 0x0016205b in _clip_and_composite_trapezoids (src=<value optimized + out>, op=CAIRO_OPERATOR_OVER, dst=0x837db00, traps=0xbfffd7bc, + antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0, extents=0xbfffdc78) at + cairo-surface-fallback.c:853 + 8 0x001626ef in _cairo_surface_fallback_stroke (surface=0x837db00, + op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, + stroke_style=0x1b1524, + ctm=0x1b15b0, ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, + antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x0) at + cairo-surface-fallback.c:1173 + 9 0x0015f2f4 in _cairo_surface_stroke (surface=0x837db00, + op=CAIRO_OPERATOR_OVER, source=0xbfffdda8, path=0x1b164c, + stroke_style=0x1b1524, ctm=0x1b15b0, + ctm_inverse=0x1b15e0, tolerance=0.10000000000000001, + antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0xbfffde88) at + cairo-surface.c:2041 + 10 0x00134629 in _cairo_gstate_stroke (gstate=0x1b1514, path=0x1b164c) + at cairo-gstate.c:1133 + 11 0x0012a706 in *INT_cairo_stroke_preserve (cr=0x1b13c0) at + cairo.c:2234 + 12 0x0012a732 in *INT_cairo_stroke (cr=0x1b13c0) at cairo.c:2207 + + src/cairo-image-surface.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit 38ba696c483c289c2522b124ca628ef602c12126 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 09:20:11 2010 +0000 + + surface-fallback: We no longer own a reference to the clip surface + + _cairo_clip_get_surface() now returns a borrowed reference to the cached + surface on the clip, so we must not destroy it - as Carlos pointed out + when he hit the assert: + + 12:55 < KaL> ickle: cairo-surface.c:595: cairo_surface_destroy: + Assertion `((*&(&surface->ref_count)->ref_count) > 0)' failed. + 12:56 < KaL> ickle: trying to render any pdf file with poppler glib demo + after installing cairo from git master + 13:00 < KaL> ickle: well, it seems it has nothing ot do with poppler, + since it crashes in clearlooks src/clearlooks_draw.c:347 + + src/cairo-surface-fallback.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit b3ba610ec05f863a0830a1f30ed130649fbadfbb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 25 09:09:18 2010 +0000 + + win32: Trivially fix the compile error with printing. + + _cairo_pattern_is_opaque() now takes the extents over which the + operation is defined so that we make exclude the clear pixels that + surround EXTEND_NONE surfaces when determining opacity. In order to take + full advantage of this we need to start performing an extents query on + the operation and pass that down to the analysis... + + This patch however is just the quick compile fix to pass a NULL and + restore the old behaviour. + + Fixes (with previous commit): + Bug 26197 - Cairo doesn't build on windows + http://bugs.freedesktop.org/show_bug.cgi?id=26197 + + src/cairo-win32-printing-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 386ca53f280652983870316593e510cfef59c559 +Author: Haakon Sporsheim <haakon.sporsheim@gmail.com> +Date: Sun Jan 24 16:43:42 2010 +0100 + + win32: Compile fix, rename render_row to render_rows. + + src/cairo-win32-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit a9a73e5df42840148fd4db60cc0d1ba5d137b764 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Jan 24 23:26:28 2010 +0100 + + Constrain subsurface creation + + Force the subsurface extents to be inside the target extents and + compose subsubsurfaces offsets correctly. + Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-surface-subsurface.c | 36 +++++++++++++++--------------------- + 1 files changed, 15 insertions(+), 21 deletions(-) + +commit b7550bf0f1cafb5cc5df13da50b0cec80313038f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Jan 24 22:23:26 2010 +1030 + + Fix incorrect font scale and glyph position in Type 3 fonts + + The PDF file referenced by bug 26186 contains a Type 3 font with non + identity font matrix and a "1/2" glyph created by drawing the "1" and + "2" from a Type 1 font. This combination exposed a bug in the font + scale and glyph position in _cairo_type3_glyph_surface_show_glyphs + when printing user font glyphs. + + src/cairo-type3-glyph-surface.c | 21 +++++---------------- + 1 files changed, 5 insertions(+), 16 deletions(-) + +commit ea7fda442c169a159b2e3c51894a0f5e70a13984 +Author: Eric Anholt <eric@anholt.net> +Date: Fri Jan 22 16:26:38 2010 -0800 + + [gl] Release the context acquired in surface_create. + + Fixes assertion failures in many testcases since + cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 + + src/cairo-gl-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 20990365f3885457d66b4a8bef865f027a98333f +Author: Eric Anholt <eric@anholt.net> +Date: Fri Jan 22 16:13:02 2010 -0800 + + [gl] Emit rectanges a whole primitive at a time. + + Since the spans rework, we were emitting half a primitive at a time, + and if we flushed our VBO full of quads out halfway through, we could + end up dropping the primitive and then out of phase. + + src/cairo-gl-surface.c | 25 +++++++++++-------------- + 1 files changed, 11 insertions(+), 14 deletions(-) + +commit c8a61a3267ffd53d4b4d61e2e2bcb70448ea4d41 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jan 23 18:25:11 2010 +0100 + + Fix compilation on MacOS X + + Some functions declared in MacOS X headers use the always_inline + attribute, thus defining it to be a different expression breaks the + build. + + src/cairo-botor-scan-converter.c | 8 ++++---- + src/cairo-compiler-private.h | 4 ++-- + src/cairo-gl-private.h | 4 ++-- + 3 files changed, 8 insertions(+), 8 deletions(-) + +commit 90ba1242b61e7b8e5ae2c2ca028d0058f6dabd88 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jan 23 18:13:35 2010 +0100 + + Fix image backend compilation + + When HAS_ATOMIC_OPS is not defined, cairo-image-surface.c does not + compile because _pixman_white_image calls _pixman_image_for_solid + which gets defined only later in the code. + + src/cairo-image-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 2a466ba07072cb394cfc955cfb0633b0cc278044 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 22:26:52 2010 +0000 + + script: Encode octal values correctly. + + Oops, we were emitting the octal numerals in reverse order. + + src/cairo-script-surface.c | 21 +++++++++++++-------- + 1 files changed, 13 insertions(+), 8 deletions(-) + +commit 87529198aa37f5eb5943eb80cc1aae858fdaadd0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 22:21:44 2010 +0000 + + scaled-font: Mark an error site with _cairo_error() + + src/cairo-scaled-font-subsets.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6544f3b25d2120b7bd04f6c956c2ea7b9c101c76 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 22:15:25 2010 +0000 + + ps: Wean off the low-level image composite interface + + The low-level surface composite interface will disappear in the near + future and results in much more ugly code than calling the high level + interface - so use it when flattening images into the page background. + + src/cairo-ps-surface.c | 77 +++++++++++++++++------------------------------- + 1 files changed, 27 insertions(+), 50 deletions(-) + +commit f57cb45fa9274351b36f96eb932a931493b5db94 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 22:18:35 2010 +0000 + + ps: Arguments to fill_extents() were reversed. + + src/cairo-ps-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 58540405d9bc6581c1d07f17bd5aee330f06d4a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 22:05:37 2010 +0000 + + pdf: Arguments to fill_extents() were reversed. + + src/cairo-pdf-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 34dd80632e4671f0ca245be9db4280db62bdb1f9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 21 18:39:26 2010 +0000 + + glew: Silence compiler. + + src/glew/GL/glew.h | 2 +- + src/glew/glew.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit cf9ea9f2f0ea1e1b42dc1507ed0dac4dfbf5d387 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 21 18:39:12 2010 +0000 + + gl: Acquire the context whilst creating surfaces. + + src/cairo-gl-private.h | 5 ++--- + src/cairo-gl-surface.c | 37 ++++++++++++++++++++++++------------- + 2 files changed, 26 insertions(+), 16 deletions(-) + +commit a7e05bd602e7f8bee63f5d32cb95d65628e6e715 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 21 18:22:04 2010 +0000 + + glew: Do not assume that UNIX == GLX + + src/glew/glew.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit c0008242b0f162d8c7717009ba792ed61b2924d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 21:35:23 2010 +0000 + + misc: Only use custom lround() under DISABLE_SOME_FLOATING_POINT + + On my Core2, the library version of lround() is faster than our + hand-rolled non-floating point implementation. So only enable our code + if we are trying to minimise the number of floating point operations -- + even then, it would worth investigating the library performance first. + + [Just a reminder that optimisation choices will change over time as our + hardware and software evolves.] + + src/cairo-misc.c | 2 ++ + src/cairo-ps-surface.c | 4 ++-- + src/cairoint.h | 5 +++++ + 3 files changed, 9 insertions(+), 2 deletions(-) + +commit 1236c41072a7966eda7db48a381fd0508e5289be +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 21:26:26 2010 +0000 + + xcb: Refresh. + + Still an experimental backend, it's now a little too late to stabilise + for 1.10, but this should represent a major step forward in its feature + set and an attempt to catch up with all the bug fixes that have been + performed on xlib. Notably not tested yet (and expected to be broken) + are mixed-endian connections and low bitdepth servers (the dithering + support has not been copied over for instance). However, it seems robust + enough for daily use... + + Of particular note in this update is that the xcb surface is now capable + of subverting the xlib surface through the ./configure --enable-xlib-xcb + option. This replaces the xlib surface with a proxy that forwards all + operations to an equivalent xcb surface whilst preserving the cairo-xlib + API that is required for compatibility with the existing applications, + for instance GTK+ and Mozilla. Also you can experiment with enabling a + DRM bypass, though you need to be extremely foolhardy to do so. + + boilerplate/Makefile.win32.features | 20 + + boilerplate/cairo-boilerplate-xcb.c | 522 ++++- + build/Makefile.win32.features | 2 + + build/Makefile.win32.features-h | 6 + + build/configure.ac.features | 2 + + configure.ac | 26 +- + src/Makefile.sources | 22 +- + src/Makefile.win32.features | 28 + + src/cairo-list-private.h | 7 + + src/cairo-mutex-list-private.h | 4 + + src/cairo-pattern.c | 41 +- + src/cairo-xcb-connection-core.c | 482 ++++ + src/cairo-xcb-connection-render.c | 969 ++++++++ + src/cairo-xcb-connection-shm.c | 194 ++ + src/cairo-xcb-connection.c | 867 +++++++ + src/cairo-xcb-private.h | 760 ++++++ + src/cairo-xcb-screen.c | 518 ++++ + src/cairo-xcb-shm.c | 576 +++++ + src/cairo-xcb-surface-cairo.c | 94 + + src/cairo-xcb-surface-core.c | 613 +++++ + src/cairo-xcb-surface-private.h | 37 + + src/cairo-xcb-surface-render.c | 4471 +++++++++++++++++++++++++++++++++++ + src/cairo-xcb-surface.c | 3344 +++++++------------------- + src/cairo-xcb-xrender.h | 63 - + src/cairo-xcb.h | 41 +- + src/cairo-xlib-xcb-surface.c | 515 ++++ + src/cairoint.h | 16 + + test/xcb-surface-source.c | 1 - + 28 files changed, 11689 insertions(+), 2552 deletions(-) + +commit 77afe8491ed7038a8399c01f10d8f062a7239225 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 20:48:54 2010 +0000 + + drm: Add backends for i915 and i965. + + As proof-of-principle add the nearly working demonstrations of using DRM + to render directly with the GPU bypassing both RENDER and GL for + performance whilst preserving high quality rendering. + + The basis behind developing these chip specific backends is that this is + the idealised interface that we desire for this chips, and so a target + for cairo-gl as we continue to develop both it and our GL stack. + + Note that this backends do not yet fully pass the test suite, so only + use if you are brave and willing to help develop them further. + + boilerplate/cairo-boilerplate-drm.c | 2 +- + src/Makefile.sources | 17 + + src/cairo-drm.h | 31 +- + src/cairo-misc.c | 57 + + src/cairoint.h | 2 + + src/drm/cairo-drm-bo.c | 13 +- + src/drm/cairo-drm-gallium-surface.c | 3 +- + src/drm/cairo-drm-i915-glyphs.c | 534 ++++++ + src/drm/cairo-drm-i915-private.h | 1169 ++++++++++++ + src/drm/cairo-drm-i915-shader.c | 2674 +++++++++++++++++++++++++++ + src/drm/cairo-drm-i915-spans.c | 708 +++++++ + src/drm/cairo-drm-i915-surface.c | 1996 ++++++++++++++++++++ + src/drm/cairo-drm-i965-glyphs.c | 500 +++++ + src/drm/cairo-drm-i965-private.h | 742 ++++++++ + src/drm/cairo-drm-i965-shader.c | 2852 +++++++++++++++++++++++++++++ + src/drm/cairo-drm-i965-spans.c | 408 ++++ + src/drm/cairo-drm-i965-surface.c | 1949 ++++++++++++++++++++ + src/drm/cairo-drm-intel-brw-defines.h | 824 +++++++++ + src/drm/cairo-drm-intel-brw-eu-emit.c | 1089 +++++++++++ + src/drm/cairo-drm-intel-brw-eu-util.c | 121 ++ + src/drm/cairo-drm-intel-brw-eu.c | 250 +++ + src/drm/cairo-drm-intel-brw-eu.h | 1043 +++++++++++ + src/drm/cairo-drm-intel-brw-structs.h | 1328 ++++++++++++++ + src/drm/cairo-drm-intel-command-private.h | 909 +++++++++ + src/drm/cairo-drm-intel-debug.c | 1208 ++++++++++++ + src/drm/cairo-drm-intel-ioctl-private.h | 417 +++++ + src/drm/cairo-drm-intel-private.h | 427 ++++- + src/drm/cairo-drm-intel-surface.c | 421 ++--- + src/drm/cairo-drm-intel.c | 1240 +++++++++---- + src/drm/cairo-drm-private.h | 101 +- + src/drm/cairo-drm-radeon-private.h | 3 - + src/drm/cairo-drm-radeon-surface.c | 281 ++-- + src/drm/cairo-drm-radeon.c | 5 +- + src/drm/cairo-drm-surface.c | 235 +-- + src/drm/cairo-drm.c | 232 ++-- + 35 files changed, 22675 insertions(+), 1116 deletions(-) + +commit b9407af6a4bc792c1bcb52c90aa8a618627bb618 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 17:57:41 2010 +0000 + + image: Implement high level interface. + + Write a dedicated compositor for pixman so that we avoid the + middle-layer syndrome of surface-fallback. The major upshot of this + rewrite is that the image surface is now several times quicker for glyph + compositing, which dramatically improves performance for text rendering + by firefox and friends. It also uses a couple of the new scan + convertors, such as the rectangular scan converter for rectilinear + paths. + + Speedups + ======== + image-rgba firefox-talos-gfx-0 342050.17 (342155.88 0.02%) -> 69412.44 (69702.90 0.21%): 4.93x speedup + ███▉ + image-rgba vim-0 97518.13 (97696.23 1.21%) -> 30712.63 (31238.65 0.85%): 3.18x speedup + ██▏ + image-rgba evolution-0 69927.77 (110261.08 19.84%) -> 24430.05 (25368.85 1.89%): 2.86x speedup + █▉ + image-rgba poppler-0 41452.61 (41547.03 2.51%) -> 21195.52 (21656.85 1.08%): 1.96x speedup + █ + image-rgba firefox-planet-gnome-0 217512.61 (217636.80 0.06%) -> 123341.02 (123641.94 0.12%): 1.76x speedup + ▊ + image-rgba swfdec-youtube-0 41302.71 (41373.60 0.11%) -> 31343.93 (31488.87 0.23%): 1.32x speedup + ▍ + image-rgba swfdec-giant-steps-0 20699.54 (20739.52 0.10%) -> 17360.19 (17375.51 0.04%): 1.19x speedup + ▎ + image-rgba gvim-0 167837.47 (168027.68 0.51%) -> 151105.94 (151635.85 0.18%): 1.11x speedup + ▏ + image-rgba firefox-talos-svg-0 375273.43 (388250.94 1.60%) -> 356846.09 (370370.08 1.86%): 1.05x speedup + + src/cairo-image-surface.c | 3893 ++++++++++++++++++++++++----- + src/cairo-mutex-list-private.h | 2 + + src/cairo-xcb-surface.c | 10 +- + src/cairoint.h | 21 +- + test/clip-fill-unbounded.argb32.ref.png | Bin 1615 -> 1607 bytes + test/clip-fill-unbounded.rgb24.ref.png | Bin 1312 -> 1304 bytes + test/clip-stroke-unbounded.argb32.ref.png | Bin 1703 -> 1694 bytes + test/clip-stroke-unbounded.rgb24.ref.png | Bin 1383 -> 1372 bytes + test/clip-stroke.ref.png | Bin 1451 -> 1442 bytes + test/clipped-group.ref.png | Bin 289 -> 289 bytes + test/leaky-dashed-rectangle.ref.png | Bin 347 -> 357 bytes + test/scale-offset-image.xfail.png | Bin 9960 -> 9961 bytes + test/scale-offset-similar.xfail.png | Bin 9960 -> 9961 bytes + test/self-intersecting.ref.png | Bin 213 -> 168 bytes + 14 files changed, 3295 insertions(+), 631 deletions(-) + +commit ec7cc9dea16f94e1e56720be548cf5520ec4708b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 19:27:45 2010 +0000 + + ft: Tidy computation of transformed bitmap, and mark if CA + + Discard a redundant clear as the image surface is guaranteed to return + a cleared surface that meets pixman/xlib requirements for alignment, and + more importantly add the ComponentAlpha flag on the pixman image + generated as appropriate. + + src/cairo-ft-font.c | 31 +++++++++++-------------------- + 1 files changed, 11 insertions(+), 20 deletions(-) + +commit b713510f213d0a83cb0575d6870416a0f13786c9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 17:56:26 2010 +0000 + + surface-fallback: Convert to composite rectangles + + src/cairo-surface-fallback.c | 396 ++++++++++++++---------------------------- + src/cairo-surface.c | 3 + + src/cairo-traps.c | 47 +++--- + src/cairoint.h | 3 +- + 4 files changed, 158 insertions(+), 291 deletions(-) + +commit 498c10032ea3f8631a928cd7df96766f2c8ddca4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:39:29 2010 +0000 + + clip: Implement clipping using only the high-level operators. + + Revamp clipping in preparation for the removal of the low-level interface + and promote backend to use the higher levels. The principle here is that + the higher level interface gives the backend more scope for choosing + better performing primitives. + + src/cairo-clip-private.h | 6 +- + src/cairo-clip.c | 257 ++++++++++++++++++++--------------------- + src/cairo-surface-fallback.c | 2 +- + 3 files changed, 131 insertions(+), 134 deletions(-) + +commit 05bb43a00770f17566c80f28faf684597d1b6afb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:14:53 2010 +0000 + + types: Move cairo_scaled_glyph_t to cairo-types-private.h + + Another step in bringing some sanity to our headers. + + src/cairo-types-private.h | 25 +++++++++++++++++++++++++ + src/cairoint.h | 26 -------------------------- + 2 files changed, 25 insertions(+), 26 deletions(-) + +commit 9c98656fb1ac10a6085c5db5731b6b986af26165 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:11:48 2010 +0000 + + color: Add enum value for the largest stock color. + + Useful if we wish to keep a cache of patterns for the very common stock + colors... + + src/cairo-color.c | 13 +++++++------ + src/cairo-types-private.h | 3 ++- + 2 files changed, 9 insertions(+), 7 deletions(-) + +commit b7b65b5315836297f86c54121ea45e469f514312 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:07:25 2010 +0000 + + stroke: Convert rectilinear paths to boxes. + + A quick and efficient method for extracting the set of boxes that + represent the path when stroked. + + src/cairo-path-stroke.c | 170 +++++++++++++++++++++++++++++++++++++---------- + src/cairoint.h | 7 ++ + 2 files changed, 142 insertions(+), 35 deletions(-) + +commit fe6a7f4c9e69c86588eca4925a9d65f3086f98bf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:02:07 2010 +0000 + + fill: Convert rectilinear paths to boxes. + + A quick and efficient method for extracting the set of boxes that + represent the path when filled. + + src/cairo-path-fill.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++- + src/cairoint.h | 5 +++ + 2 files changed, 80 insertions(+), 1 deletions(-) + +commit 6b77567b6ef28710c7707ab82c7fa95c810152d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 15:54:45 2010 +0000 + + path: Compute coarse bounds upon construction. + + Frequently we only need the coarse path bounds, so avoid walking over + the list of points once more as we can cheaply track the extents during + construction. + + src/cairo-debug.c | 6 ++ + src/cairo-gstate.c | 21 ++++- + src/cairo-path-bounds.c | 159 +++++++++++++++++++-------------------- + src/cairo-path-fixed-private.h | 4 +- + src/cairo-path-fixed.c | 83 +++++++++++++++++++-- + src/cairo.c | 2 + + src/cairoint.h | 9 +- + 7 files changed, 184 insertions(+), 100 deletions(-) + +commit 6bfcf3ea55964fee1c9b73818c3bb7cdacbc4f82 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 15:37:25 2010 +0000 + + matrix: Do not need to iteratively refine conversion for unity matrices. + + If the scale factors on the matrix are unity, then the conversion from a + cairo_matrix_t to a pixman_matrix_t is exact (within numerical + restrictions). + + src/cairo-matrix.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 13c56800ca6c32a6d8251edec5d3976399b70ea4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:33:34 2010 +0000 + + gstate: Reduce operators + + Some operators may be equivalent to simpler operations, so make the + transformation in the gstate, before calling down into the surface + backends. + + src/cairo-gstate.c | 86 +++++++++++++++++++++++++++++++++++++++++++-------- + 1 files changed, 72 insertions(+), 14 deletions(-) + +commit 4d52be39bf36a3557f4e7c61dba764b1c6542c8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:09:11 2010 +0000 + + gstate: Skip ops with a clear mask. + + As pointed out by Benjamin Otte, these are expensive no-ops that we can + trivially detect, just so long as we remember the semantics of extend + modes. + + src/cairo-gstate.c | 6 ++++++ + src/cairo-pattern.c | 23 +++++++++++++++++++++++ + src/cairoint.h | 3 +++ + 3 files changed, 32 insertions(+), 0 deletions(-) + +commit c2ef45226d6801acb15854de55a5f5bc728ed65d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 14:33:53 2010 +0000 + + gstate: Check for an invalid matrix before cairo_transform() + + Similar to the other checks that will generate an invalid matrix prior + to performing the operation. + + src/cairo-gstate.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 22316a0c17cd3b49ec625814f4e737b3fdc6ca63 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 14:33:16 2010 +0000 + + gstate: White space. + + A couple of minor coding style violations. + + src/cairo-gstate.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit 29bedde904824098f73b978d73d36b3b5420ac32 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 16:19:31 2010 +0000 + + pattern: Add convenience patterns for stock colours + + By preallocating in our data segment a couple of solid patterns for the + stock colours, it becomes more convenient when using those in surface + operations, such as when clearing. + + src/cairo-clip.c | 29 +++++++++++------------------ + src/cairo-gl-glyphs.c | 10 +++------- + src/cairo-gstate.c | 9 +++------ + src/cairo-pattern.c | 24 ++++++++++++++++++++++++ + src/cairo-scaled-font.c | 9 ++------- + src/cairo-surface-fallback.c | 14 +++----------- + src/cairo-vg-surface.c | 5 ++--- + src/cairo-win32-printing-surface.c | 8 ++------ + src/cairo-xcb-surface.c | 7 +------ + src/cairo-xlib-surface.c | 6 +----- + src/cairoint.h | 3 ++- + 11 files changed, 54 insertions(+), 70 deletions(-) + +commit 9eb98e1dc5af7eac896bf469e491063777e678be +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 14:14:51 2010 +0000 + + scaled-font: Use tight glyph bounds when determining overlap. + + An issue that we currently have is that we have a pessimistic + false-positive rate when determining whether glyphs within a string + overlap. By using the tight bounds, the overlap detection is arguably + less accurate presuming pixel-aligned opacity masks but we make the + trade-off for performance. + + src/cairo-scaled-font.c | 55 +++++++++++++++++++++------------------------- + 1 files changed, 25 insertions(+), 30 deletions(-) + +commit 005b0c4eb2a1fe2c4de31ebe2a3244bea8bd2625 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 19:47:58 2010 +0000 + + test: Add explicit device management to xlib-surface-source + + Mostly pedagogical example. + + test/xlib-surface-source.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit ca02b51ef6d058b6fb492258177f0396a5819e26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 21:57:58 2010 +0000 + + test: Add an xcb surface source test + + test/Makefile.am | 6 ++ + test/Makefile.sources | 3 + + test/xcb-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/xcb-surface-source.c | 145 ++++++++++++++++++++++++++++++++ + test/xcb-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + 5 files changed, 154 insertions(+), 0 deletions(-) + +commit f0678fb70ceec5db1b7c3f0eb1c5603039daf307 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 22 19:02:39 2010 +0000 + + test: Tweak aligned of text-rotate + + Reset the rotation for every quadrant so that the starting rectangles + are pixel-aligned. + + test/text-rotate.c | 68 +++++++++++++++++++++++++++++++++------------- + test/text-rotate.ref.png | Bin 16738 -> 16722 bytes + 2 files changed, 49 insertions(+), 19 deletions(-) + +commit 2edd2adafc471f4aa9c417d4bc76cc38466a9ed0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 22:45:59 2010 +0000 + + test: Exercise scan converters with large rounded rectangles. + + Having added a specialised scan converter on the premise that it should + be better at handling rounded rectangles, ensure that they are indeed + rendered correctly. + + test/Makefile.am | 2 + + test/Makefile.sources | 2 + + test/rounded-rectangle-fill.c | 65 ++++++++++++++++++++++++++++ + test/rounded-rectangle-fill.xlib.ref.png | Bin 0 -> 890 bytes + test/rounded-rectangle-stroke.c | 64 +++++++++++++++++++++++++++ + test/rounded-rectangle-stroke.xlib.ref.png | Bin 0 -> 860 bytes + 6 files changed, 133 insertions(+), 0 deletions(-) + +commit 5187501e997d6b8c0d135542d21accde9e311281 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 22:41:45 2010 +0000 + + test: Add --track-origins=yes to valgrind flags. + + Enable origin tracking by default for make check-valgrind. This is + slower and consumes more memory than regular valgrind, but the + additional information provided about the source of the uninitialised + data is often invaluable. + + test/Makefile.am | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 3a5d71c431dfb251308c3e4e02d2ea4acec90a91 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 19:18:54 2010 +0000 + + pattern: An EXTEND_NONE surface is not opaque if we sample outside + + Fixes test/clear-source as proposed by Benjamin Otte. + + src/cairo-gstate.c | 2 +- + src/cairo-pattern.c | 33 +++++++- + src/cairo-pdf-surface.c | 219 +++++++++++++++++++++++++++------------------ + src/cairo-ps-surface.c | 186 +++++++++++++++++++++++---------------- + src/cairo-xlib-surface.c | 8 ++- + src/cairoint.h | 3 +- + 6 files changed, 284 insertions(+), 167 deletions(-) + +commit b07de014eba1a482747ac235670011972a82d19d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 18:44:34 2010 +0000 + + spans: Add a rectangular scan converter + + This is a highly specialised scan converter for the relatively common + case of where the input geometry is known to be a series of rectangles. + Generally not device aligned (or else we would most likely have chosen + an even higher performance path that does not require a coverage mask), + this optimised converter can simply compute the analytical coverage by + utilising a special case Bentley-Ottmann intersection finder. + + src/Makefile.sources | 1 + + src/cairo-rectangular-scan-converter.c | 723 ++++++++++++++++++++++++++++++++ + src/cairo-spans-private.h | 25 ++ + 3 files changed, 749 insertions(+), 0 deletions(-) + +commit e49855497e7214c21c85b03d7ab94e9e008f821b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 18:36:20 2010 +0000 + + spans: Add a Bentley-Ottmann variant on the Tor scan converter + + This variant uses the Bentley-Ottmann algorithm to only maintain the + active edge list upon edge events and so can efficiently skip areas + where no change occurs. This means that it can be much quicker than the + Tor algorithm (which is still used to compute the coverages from the + active edges) for geometries consisting of long straight lines with few + intersections. However due to the computational overhead of the + Bentley-Ottmann event processing, for dense curvy paths, simply updating + the active edge list in sync with computing the coverages is a win. Due + to advantageous adaptive step size, the scan converter can be run at a + much higher subsampling with little extra overhead compared with Tor, + currently it uses a 256x256 subsampling grid to avoid any impedance + mismatch with path precision. + + Given the current status of implementations, this scan converter [botor] + is likely to be advantage where detecting large regions of unchanged + span data will result in improved performance, for instance the drm + backends which convert the scan data into rectangles. + + src/Makefile.sources | 1 + + src/cairo-botor-scan-converter.c | 2199 ++++++++++++++++++++++++++++++++++++++ + src/cairo-compiler-private.h | 11 + + src/cairo-fixed-private.h | 22 +- + src/cairo-freelist-private.h | 16 + + src/cairo-freelist.c | 38 +- + src/cairo-spans-private.h | 23 + + src/cairoint.h | 9 - + 8 files changed, 2299 insertions(+), 20 deletions(-) + +commit 424dcf296378a107286a164aaf135a34e40c42ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 19:11:31 2010 +0000 + + boxes: Enable generation of boxes from rectilinear polygons. + + Extend the special case rectilinear tessellator to also produce boxes. + + src/cairo-bentley-ottmann-rectilinear.c | 122 ++++++++++++++++++++++++++----- + src/cairoint.h | 5 + + 2 files changed, 108 insertions(+), 19 deletions(-) + +commit b83f1c347dfd77139e9485745d43da946b086b74 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 19:09:10 2010 +0000 + + boxes: Enable tessellation + + Extend the special case rectangular tessellator to handle generation of + cairo_boxes_t. + + src/cairo-bentley-ottmann-rectangular.c | 778 ++++++++++++++++--------------- + src/cairoint.h | 5 + + 2 files changed, 416 insertions(+), 367 deletions(-) + +commit 43beaa5873b9ad10620bfe7ed5f9212a3c44effd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 18:11:26 2010 +0000 + + boxes: Efficient storage for an array of cairo_box_t. + + Currently we use cairo_traps_t to also pass around arrays of boxes. This + is woefully inefficient in terms of storage, but also means that we + repeatedly have to verify that the traps are a set of boxes. By + explicitly passing around a cairo_boxes_t we avoid the semantic loss. + + This will be heavily used in pending commits. + + src/Makefile.sources | 2 + + src/cairo-boxes-private.h | 80 +++++++++++++ + src/cairo-boxes.c | 269 +++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-types-private.h | 1 + + 4 files changed, 352 insertions(+), 0 deletions(-) + +commit ae25f1c360b79f0b7b1bb73e9ebc47eb794d8007 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 17:11:55 2010 +0000 + + Alter definition of cairo_composite_rectangles_t + + This is a more useful definition that is able to individually track the + rectangles that compose the composite operation. This will be used by + the specialist compositors as a means to perform the common extents + determination for an operation. + + src/Makefile.sources | 2 + + src/cairo-composite-rectangles-private.h | 105 ++++++++++++++++ + src/cairo-composite-rectangles.c | 197 ++++++++++++++++++++++++++++++ + src/cairo-gl-surface.c | 19 ++- + src/cairo-image-surface.c | 31 +++--- + src/cairo-misc.c | 41 ++++++ + src/cairo-rectangle.c | 21 --- + src/cairo-spans.c | 29 +++-- + src/cairo-surface-fallback.c | 13 +- + src/cairo-types-private.h | 24 +---- + src/cairo-win32-surface.c | 21 ++-- + src/cairoint.h | 14 +- + 12 files changed, 417 insertions(+), 100 deletions(-) + +commit 9cd9137843f8f1c3d32bedb6510259ab3638a2c5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 17:11:11 2010 +0000 + + spans: Pass multiple rows of identical spans to the renders. + + It is quite common amongst our geometry to have rows of repeated span + data, for example a rounded rectangle will have repeating data between + the top and bottom rounded corners. By passing the repeat length to the + renderers, they may be able to use that information more efficiently, + and the scan converters can avoid recomputing the same span data. + + src/cairo-gl-surface.c | 141 +++++++++-------- + src/cairo-image-surface.c | 79 ++++------ + src/cairo-spans-private.h | 24 ++-- + src/cairo-spans.c | 6 +- + src/cairo-tor-scan-converter.c | 343 +++++++++++++++++++++++++--------------- + src/cairo-win32-surface.c | 13 ++- + src/cairoint.h | 4 +- + 7 files changed, 349 insertions(+), 261 deletions(-) + +commit a04873c0770df5eaed078493df5216ca28322de7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 23:40:00 2010 +0000 + + qt: Trivial compile fix for boilerplate. + + boilerplate/cairo-boilerplate-qt.cpp | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 0f09349dd85b15d5de14248e2f3f17a91fbcbb5e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 23:37:36 2010 +0000 + + gl: Exercise Window destinations with boilerplate + + Add a gl-window boilerplate target to exercise using GL to render to a + visible Drawable -- for instance, a window has a different coordinate + system to a framebuffer... + + boilerplate/cairo-boilerplate-gl.c | 99 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 99 insertions(+), 0 deletions(-) + +commit ccea7fd7c1a2d7144e892c19615488e368529bc0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 23:37:11 2010 +0000 + + gl: Port to cairo_device_t + + boilerplate/cairo-boilerplate-gl.c | 28 +++-- + src/cairo-eagle-context.c | 25 +++-- + src/cairo-gl-glyphs.c | 46 +++++--- + src/cairo-gl-private.h | 44 +++++--- + src/cairo-gl-surface.c | 222 ++++++++++++++++-------------------- + src/cairo-gl.h | 22 +--- + src/cairo-glx-context.c | 25 +++-- + 7 files changed, 211 insertions(+), 201 deletions(-) + +commit 3acd520c9dec89e72d7ff61adb1ae30bab12e256 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 23:11:19 2010 +0000 + + xml: Port to cairo_device_t + + src/cairo-xml-surface.c | 210 ++++++++++++++++++++++++----------------------- + src/cairo-xml.h | 13 +-- + util/trace-to-xml.c | 7 +- + 3 files changed, 115 insertions(+), 115 deletions(-) + +commit 49ab86772a44d7a044464d875324bd0af96af728 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 22:43:24 2010 +0000 + + script: Port cairo_script_context_t to cairo_device_t + + Use the unifying cairo_device_t for cairo_script_context_t and replace. + + boilerplate/cairo-boilerplate-script.c | 6 +- + boilerplate/cairo-boilerplate.c | 6 +- + src/cairo-script-surface.c | 491 +++++++++++++++++--------------- + src/cairo-script.h | 35 +-- + test/cairo-test-trace.c | 7 +- + util/cairo-fdr/fdr.c | 10 +- + util/cairo-script/csi-trace.c | 11 +- + util/cairo-sphinx/fdr.c | 4 +- + util/cairo-sphinx/sphinx.c | 17 +- + util/cairo-trace/trace.c | 8 +- + 10 files changed, 312 insertions(+), 283 deletions(-) + +commit f617d5fc982f749d0981c81c1de1be8dc3632717 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 21:53:42 2010 +0000 + + Add cairo_device_t + + The device is a generic method for accessing the underlying interface + with the native graphics subsystem, typically the X connection or + perhaps the GL context. By exposing a cairo_device_t on a surface and + its various methods we enable finer control over interoperability with + external interactions of the device by applications. The use case in + mind is, for example, a multi-threaded gstreamer which needs to serialise + its own direct access to the device along with Cairo's across many + threads. + + Secondly, the cairo_device_t is a unifying API for the mismash of + backend specific methods for controlling creation of surfaces with + explicit devices and a convenient hook for debugging and introspection. + + The principal components of the API are the memory management of: + + cairo_device_reference(), + cairo_device_finish() and + cairo_device_destroy(); + + along with a pair of routines for serialising interaction: + + cairo_device_acquire() and + cairo_device_release() + + and a method to flush any outstanding accesses: + + cairo_device_flush(). + + The device for a particular surface may be retrieved using: + + cairo_surface_get_device(). + + The device returned is owned by the surface. + + src/Makefile.sources | 2 + + src/cairo-analysis-surface.c | 9 +- + src/cairo-beos-surface.cpp | 5 +- + src/cairo-device-private.h | 85 +++++++++++ + src/cairo-device.c | 265 +++++++++++++++++++++++++++++++++++ + src/cairo-directfb-surface.c | 2 + + src/cairo-gl-surface.c | 1 + + src/cairo-glitz-surface.c | 4 +- + src/cairo-image-surface.c | 4 +- + src/cairo-misc.c | 4 + + src/cairo-os2-surface.c | 1 + + src/cairo-paginated-surface.c | 4 +- + src/cairo-pdf-surface.c | 4 +- + src/cairo-ps-surface.c | 4 +- + src/cairo-qt-surface.cpp | 7 +- + src/cairo-quartz-image-surface.c | 1 + + src/cairo-quartz-surface.c | 6 +- + src/cairo-recording-surface.c | 9 +- + src/cairo-script-surface.c | 1 + + src/cairo-skia-surface.cpp | 1 + + src/cairo-spans.c | 4 + + src/cairo-surface-private.h | 1 + + src/cairo-surface-snapshot.c | 1 + + src/cairo-surface-subsurface.c | 1 + + src/cairo-surface.c | 29 ++++ + src/cairo-svg-surface.c | 4 +- + src/cairo-tee-surface.c | 1 + + src/cairo-type3-glyph-surface.c | 4 +- + src/cairo-types-private.h | 1 + + src/cairo-vg-surface.c | 1 + + src/cairo-win32-printing-surface.c | 1 + + src/cairo-win32-surface.c | 8 +- + src/cairo-xcb-surface.c | 4 +- + src/cairo-xlib-surface.c | 4 +- + src/cairo-xml-surface.c | 1 + + src/cairo.h | 117 +++++++++++++++ + src/cairoint.h | 1 + + src/drm/cairo-drm-gallium-surface.c | 2 + + src/drm/cairo-drm-intel-surface.c | 5 +- + src/drm/cairo-drm-radeon-surface.c | 5 +- + src/test-fallback-surface.c | 4 +- + src/test-fallback16-surface.c | 1 + + src/test-null-surface.c | 5 +- + src/test-paginated-surface.c | 4 +- + src/test-wrapping-surface.c | 1 + + util/cairo-trace/trace.c | 2 + + 46 files changed, 607 insertions(+), 24 deletions(-) + +commit 82f8aa548d70acf51b319000d7a5c176fc73da64 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 22:02:09 2010 +0000 + + Recursive mutex. + + Implement a recursive mutex which will be needed for cairo_device_t. + In particular only pthreads by default is a non-recursive mutex (to my + knowledge) - both win32 critical sections and mutexes on Quartz are + recursive. + + src/cairo-mutex-impl-private.h | 28 ++++++++++++++++++++++++++++ + src/cairo-mutex-type-private.h | 9 ++++++++- + 2 files changed, 36 insertions(+), 1 deletions(-) + +commit d2f251f84b326c5f8825c9a631ea729f21891580 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 22:12:23 2010 +0000 + + configure: Globally define AC_GNU_SOURCE + + We were using _GNU_SOURCE throughout the codebase, so simply define it + once during configure. This is the easiest method to enable recursive + mutexes using pthreads, as required in a pending patch. + + boilerplate/cairo-boilerplate-pdf.c | 4 ++++ + boilerplate/cairo-boilerplate-ps.c | 4 ++++ + configure.ac | 3 +++ + src/cairo-gstate.c | 2 -- + src/cairo-matrix.c | 2 -- + src/cairo-scaled-font.c | 2 -- + 6 files changed, 11 insertions(+), 6 deletions(-) + +commit 934d0d0d6585eb7638c7db597c40dd821092c034 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 19:05:34 2010 +0000 + + Real zero-copy cow snapshotting + + The first iteration of COW snapshotting always made an initial copy when + the snapshot was requested (and reused that copy until the surface was + modified). However, in a few circumstances we can avoid even that copy + so long as the surface is still alive and unmodified between the + snapshotting and its use. In order to do so, we need a new proxy surface + that can automatically perform the copy if the target should disappear + prior to use. + + src/Makefile.sources | 2 + + src/cairo-paginated-surface.c | 7 +- + src/cairo-surface-snapshot-private.h | 48 +++++++ + src/cairo-surface-snapshot.c | 225 ++++++++++++++++++++++++++++++++++ + src/cairo-surface.c | 101 ++-------------- + src/cairo-types-private.h | 2 + + 6 files changed, 291 insertions(+), 94 deletions(-) + +commit 6b3e19aa434d159db7878b2a7fb28a026b2d1756 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 19:12:25 2010 +0000 + + Remove content matching from snapshot lookup. + + This was never used, so remove the complexity from the interface. + + src/cairo-recording-surface.c | 3 +-- + src/cairo-surface.c | 23 +++++++---------------- + src/cairo-vg-surface.c | 3 +-- + src/cairoint.h | 3 +-- + src/drm/cairo-drm-intel-surface.c | 3 +-- + src/drm/cairo-drm-radeon-surface.c | 3 +-- + 6 files changed, 12 insertions(+), 26 deletions(-) + +commit dc8290814c0e98b38828953bac6dd0893c31c9ad +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 18:06:51 2010 +0000 + + Add subsurface. + + A subsurface is a region of another surface that may be used either to + restrict the writable area of a context or the readable extents of a + source. Whilst writing, access to the exterior of the subsurface is + prevented via clipping and when used as a source reads from the exterior + of the subsurface are governed via the extend mechanism of the pattern. + + src/Makefile.sources | 2 + + src/cairo-surface-subsurface-private.h | 48 ++++ + src/cairo-surface-subsurface.c | 464 ++++++++++++++++++++++++++++++++ + src/cairo-types-private.h | 4 +- + src/cairo.h | 7 + + test/Makefile.am | 3 + + test/Makefile.sources | 3 + + test/subsurface-repeat.c | 72 +++++ + test/subsurface-repeat.ref.png | Bin 0 -> 197 bytes + test/subsurface-similar-repeat.c | 83 ++++++ + test/subsurface-similar-repeat.ref.png | Bin 0 -> 197 bytes + test/subsurface.c | 80 ++++++ + test/subsurface.ref.png | Bin 0 -> 1597 bytes + 13 files changed, 765 insertions(+), 1 deletions(-) + +commit b8eacbfae1c155f412d84120411103cb610e383b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 18:09:11 2010 +0000 + + Add surface-offset internal API. + + This is a simplified version of the wrapping surface where the target + surface is just a subsurface onto which we wish to draw the current + operation. In particular this is useful for the subsurface API as well + as fallbacks. + + src/Makefile.sources | 2 + + src/cairo-surface-offset-private.h | 95 ++++++++++ + src/cairo-surface-offset.c | 354 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 451 insertions(+), 0 deletions(-) + +commit f2c32d01836379766bc287edf77381123767daeb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 18:06:54 2010 +0000 + + Unify the two freed object pools + + Discard some duplicate code and shared a single freed object pointer + pool between the pattern and clip. + + src/Makefile.sources | 2 + + src/cairo-clip.c | 88 +---------------------------- + src/cairo-freed-pool-private.h | 121 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-freed-pool.c | 91 ++++++++++++++++++++++++++++++ + src/cairo-pattern.c | 115 ++++++-------------------------------- + 5 files changed, 234 insertions(+), 183 deletions(-) + +commit cfd204824fada7d2b4bcf4994c4200ae9b5a8b26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 18:20:16 2010 +0000 + + Constify stroke style and matrices. + + As a simple step to ensure that we do not inadvertently modify (or at least + generate compiler warns if we try) user data, mark the incoming style + and matrices as constant. + + src/cairo-analysis-surface.c | 12 +++--- + src/cairo-paginated-surface.c | 6 ++-- + src/cairo-path-bounds.c | 6 ++-- + src/cairo-path-stroke.c | 60 +++++++++++++++++----------------- + src/cairo-pdf-operators-private.h | 24 +++++++------- + src/cairo-pdf-operators.c | 38 +++++++++++----------- + src/cairo-pdf-surface-private.h | 11 +++--- + src/cairo-pdf-surface.c | 40 +++++++++++----------- + src/cairo-ps-surface.c | 6 ++-- + src/cairo-qt-surface.cpp | 14 ++++---- + src/cairo-quartz-surface.c | 6 ++-- + src/cairo-recording-surface.c | 6 ++-- + src/cairo-script-surface.c | 6 ++-- + src/cairo-stroke-style.c | 2 +- + src/cairo-surface-fallback-private.h | 6 ++-- + src/cairo-surface-fallback.c | 6 ++-- + src/cairo-surface-wrapper-private.h | 12 +++--- + src/cairo-surface-wrapper.c | 12 +++--- + src/cairo-surface.c | 14 ++++---- + src/cairo-svg-surface.c | 40 +++++++++++----------- + src/cairo-tee-surface.c | 6 ++-- + src/cairo-type3-glyph-surface.c | 6 ++-- + src/cairo-win32-printing-surface.c | 6 ++-- + src/cairo-xml-surface.c | 6 ++-- + src/cairoint.h | 44 ++++++++++++------------ + src/drm/cairo-drm-private.h | 6 ++-- + src/drm/cairo-drm-surface.c | 6 ++-- + src/test-null-surface.c | 6 ++-- + src/test-paginated-surface.c | 6 ++-- + src/test-wrapping-surface.c | 6 ++-- + 30 files changed, 212 insertions(+), 213 deletions(-) + +commit 3e17c559b04e2df208f28125746d7e0acfb4b476 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Dec 9 19:46:28 2009 +0100 + + [test] Add pthread-same-source test + + Multiple threads render using the same source surface, but with + different extend and filter. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/pthread-same-source.c | 160 ++++++++++++++++++++++++++++++++++++++ + test/pthread-same-source.ref.png | Bin 0 -> 1000 bytes + 4 files changed, 162 insertions(+), 0 deletions(-) + +commit 30a12f802f4ff46f13dc36e60936cd857585a9ea +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 25 18:55:05 2009 +0100 + + [test] Add a simple multithreading test + + test/Makefile.am | 1 + + test/Makefile.sources | 5 ++- + test/pthread-similar.c | 106 ++++++++++++++++++++++++++++++++++++++++++ + test/pthread-similar.ref.png | Bin 0 -> 170 bytes + 4 files changed, 111 insertions(+), 1 deletions(-) + +commit 038829eb84e53532a6e3c75225933ad85da50cfc +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Dec 6 17:47:50 2009 +0100 + + [test] Add new test checking is_clear is handled properly + + This test does various operations with a clear source surface with + various content types. + The idea is to make sure optimizations done when surface->is_clear == + TRUE only happen in the proper cases. + + test/Makefile.sources | 1 + + test/clear-source.c | 163 +++++++++++++++++++++++++++++++++++++++++++++ + test/clear-source.ref.png | Bin 0 -> 881 bytes + 3 files changed, 164 insertions(+), 0 deletions(-) + +commit bf7fb4e0e09d05f42425cc7969c64992d4dc9ff9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 17:18:08 2010 +0000 + + script: Handle cache allocation failure more gracefully + + Instead of bailing out if we cannot store the glyph cache on the font, + simply do not store the glyph cache on the font... + + util/cairo-script/cairo-script-operators.c | 74 ++++++++++++--------------- + 1 files changed, 33 insertions(+), 41 deletions(-) + +commit 2b312806f138da6f88d03bb3c0c3852b342eb220 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 17:14:24 2010 +0000 + + script: Free the correct pattern after failure. + + The error path attempted to free the resolved pattern which it had just + discovered was NULL and not the locally allocated pattern... + + util/cairo-script/cairo-script-operators.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit bc2d0ad114f8fc0b0579851154fe9d39c0aa0fc9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 27 17:30:51 2009 +0000 + + script: Permit surface operations on the context + + By implicitly reference the target of the context instead, i.e. + this reduces the use of: + + /target get (example.png) write-to-png pop + + as a common idiom where the context is kept on the stack and the surface + forgotten. + + util/cairo-script/cairo-script-operators.c | 14 +++++++++++--- + 1 files changed, 11 insertions(+), 3 deletions(-) + +commit 411c09eed7ebff7335948a7f96d2b29d82ed817a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 1 08:40:41 2009 +0000 + + perf: Enable a surface cache for perf-trace + + Real applications that control their Drawable externally to Cairo are + 'disadvantaged' by cairo-perf-trace when it creates a similar surface + for each new instance of the same Drawable. The difficulty in + maintaining one perf surface for every application surface is that the + traces do not track lifetimes for the application surfaces, so we would + just accumulate stale surfaces. The surface cache takes a different + approach and returns the same surface for each active Drawable, and + maintains a hold-over of the MRU 16 surfaces. This achieves 60-80% hit + rate with firefox, which is probably as good as can be expected. + Obviously for double-buffered applications we only every draw to freshly + created surfaces (and Gtk+ bypasses cairo to do the final copy -- the + ideal application would just use a push-group for double buffering, in + which case we would capture and replay the entire expose event). + + To enable use of the surface cache whilst replaying use -c: + + ./cairo-perf-trace -c firefox-talos-gfx + + perf/Makefile.am | 3 +- + perf/cairo-perf-trace.c | 141 +++++++++++++++++++++++++- + test/any2ppm.c | 4 +- + util/cairo-script/cairo-script-interpreter.h | 3 +- + util/cairo-script/cairo-script-operators.c | 13 ++- + util/cairo-sphinx/sphinx.c | 3 +- + 6 files changed, 157 insertions(+), 10 deletions(-) + +commit c50c8b90c0033686b465e6766fba4772c1d698c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 16:58:40 2010 +0000 + + Move _cairo_error() to a standalone header + + A pending commit will want to include some utility code from cairo and + so we need to extricate the error handling from the PLT symbol hiding. + + src/Makefile.sources | 1 + + src/cairo-analysis-surface.c | 1 + + src/cairo-array.c | 1 + + src/cairo-base64-stream.c | 1 + + src/cairo-base85-stream.c | 1 + + src/cairo-bentley-ottmann-rectangular.c | 1 + + src/cairo-bentley-ottmann-rectilinear.c | 1 + + src/cairo-bentley-ottmann.c | 1 + + src/cairo-beos-surface.cpp | 2 + + src/cairo-cache.c | 1 + + src/cairo-cff-subset.c | 1 + + src/cairo-clip.c | 1 + + src/cairo-deflate-stream.c | 1 + + src/cairo-directfb-surface.c | 1 + + src/cairo-eagle-context.c | 1 + + src/cairo-error-private.h | 60 +++++++++++++++++++++++++++++++ + src/cairo-font-face-twin.c | 1 + + src/cairo-font-face.c | 1 + + src/cairo-font-options.c | 1 + + src/cairo-freelist.c | 1 + + src/cairo-ft-font.c | 1 + + src/cairo-gl-glyphs.c | 2 + + src/cairo-gl-shaders.c | 1 + + src/cairo-gl-surface.c | 1 + + src/cairo-glitz-surface.c | 2 + + src/cairo-glx-context.c | 2 + + src/cairo-gstate.c | 1 + + src/cairo-hash.c | 1 + + src/cairo-hull.c | 1 + + src/cairo-image-surface.c | 1 + + src/cairo-lzw.c | 1 + + src/cairo-matrix.c | 1 + + src/cairo-misc.c | 1 + + src/cairo-os2-surface.c | 1 + + src/cairo-output-stream.c | 1 + + src/cairo-paginated-surface.c | 1 + + src/cairo-path-fill.c | 1 + + src/cairo-path-fixed.c | 1 + + src/cairo-path-stroke.c | 1 + + src/cairo-path.c | 1 + + src/cairo-pattern.c | 1 + + src/cairo-pdf-operators.c | 1 + + src/cairo-pdf-surface.c | 1 + + src/cairo-pen.c | 1 + + src/cairo-png.c | 2 + + src/cairo-polygon.c | 1 + + src/cairo-ps-surface.c | 1 + + src/cairo-qt-surface.cpp | 6 ++- + src/cairo-quartz-font.c | 2 + + src/cairo-quartz-image-surface.c | 2 + + src/cairo-quartz-surface.c | 2 + + src/cairo-recording-surface.c | 3 +- + src/cairo-region.c | 1 + + src/cairo-rtree.c | 1 + + src/cairo-scaled-font-subsets.c | 1 + + src/cairo-scaled-font.c | 1 + + src/cairo-script-surface.c | 1 + + src/cairo-stroke-style.c | 1 + + src/cairo-surface-fallback.c | 1 + + src/cairo-surface-wrapper.c | 1 + + src/cairo-surface.c | 1 + + src/cairo-svg-surface.c | 1 + + src/cairo-tee-surface.c | 1 + + src/cairo-tor-scan-converter.c | 1 + + src/cairo-toy-font-face.c | 1 + + src/cairo-traps.c | 1 + + src/cairo-truetype-subset.c | 1 + + src/cairo-type1-fallback.c | 1 + + src/cairo-type1-subset.c | 1 + + src/cairo-type3-glyph-surface.c | 1 + + src/cairo-unicode.c | 1 + + src/cairo-user-font.c | 1 + + src/cairo-vg-surface.c | 3 +- + src/cairo-win32-font.c | 1 + + src/cairo-win32-printing-surface.c | 1 + + src/cairo-win32-surface.c | 1 + + src/cairo-xcb-surface.c | 3 +- + src/cairo-xlib-display.c | 1 + + src/cairo-xlib-screen.c | 1 + + src/cairo-xlib-surface.c | 1 + + src/cairo-xlib-visual.c | 2 + + src/cairo-xml-surface.c | 1 + + src/cairo.c | 1 + + src/cairoint.h | 12 ------ + src/drm/cairo-drm-bo.c | 1 + + src/drm/cairo-drm-intel-surface.c | 1 + + src/drm/cairo-drm-intel.c | 1 + + src/drm/cairo-drm-radeon-surface.c | 1 + + src/drm/cairo-drm-radeon.c | 1 + + src/drm/cairo-drm-surface.c | 1 + + src/drm/cairo-drm.c | 1 + + src/test-fallback-surface.c | 1 + + src/test-fallback16-surface.c | 1 + + src/test-null-surface.c | 2 + + src/test-paginated-surface.c | 1 + + src/test-wrapping-surface.c | 1 + + 96 files changed, 170 insertions(+), 17 deletions(-) + +commit 558f9501700ba569f04f345f7c64d16b1870e37c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 18 22:47:34 2010 +0000 + + surface-wrapper: Avoid copying patterns and clips unless transformed. + + An older variant of the fixes for moving the device transformation out + of the surface layer, but languished in a side branch. The only benefit + of this patch is that it avoids the copy where possible. + + src/cairo-surface-wrapper.c | 134 ++++++++++++++++++++++++------------------- + 1 files changed, 75 insertions(+), 59 deletions(-) + +commit 8f694817227366f4a4c6bbbf46e6cdddb4a065df +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 19 17:12:47 2010 +0000 + + gitignore: refresh + + Add forgotten local targets to .gitignore + + .gitignore | 1 + + perf/.gitignore | 1 + + util/.gitignore | 2 ++ + util/cairo-script/.gitignore | 1 + + 4 files changed, 5 insertions(+), 0 deletions(-) + +commit 5914e995723682e0b1f685d9ff5ea5abe05ae024 +Author: Eric Anholt <eric@anholt.net> +Date: Fri Jan 22 09:21:36 2010 -0800 + + [gl] Cache a temporary glyph compositing mask for reuse later. + + Cuts firefox-talos-gfx time from 56 seconds to 43 seconds. + + src/cairo-gl-glyphs.c | 29 ++++++++++++++++++++++------- + src/cairo-gl-private.h | 4 ++++ + src/cairo-gl-surface.c | 4 +++- + 3 files changed, 29 insertions(+), 8 deletions(-) + +commit 1bf0f64ee7783742fa777a496567e4da48e300dd +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 21 14:08:11 2010 -0800 + + [gl] Composite component-alpha glyphs directly instead of through a mask. + + Cuts gnome-terminal-vim time from 58 seconds to 20. + + src/cairo-gl-glyphs.c | 190 +++++++++++++++++++++++++++++++----------------- + src/cairo-gl-private.h | 4 + + src/cairo-gl-surface.c | 2 +- + 3 files changed, 127 insertions(+), 69 deletions(-) + +commit 12d521df8acc483b2daa844d4f05dc2fe2765ba6 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 21 13:19:17 2010 -0800 + + [gl] Use GL_RGBA textures even for CAIRO_CONTENT_COLOR. + + When the texture is GL_RGB, GL_CLAMP_TO_BORDER (EXTEND_NONE) fills the + border color alpha channel with 1, when the whole reason we were using + the border color was to get a color and alpha of 0. We're forced to + use GL_RGBA textures and do extra work to fill in the alpha channel of + them to 1 to get cairo's desired behavior. + + This fixes a failure in rotate-image-surface-paint and 4 other + testcases. No performance difference in firefox-talos-gfx. + + src/cairo-gl-surface.c | 131 +++++++++++++++++++++++++++-------------------- + 1 files changed, 75 insertions(+), 56 deletions(-) + +commit e316cb9db57094359c28f6b740e73674e8dcc134 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Jan 20 13:33:56 2010 -0800 + + [gl] Add support for component-alpha glyph rendering. + + This is done using a mask and the two-pass trick I did for EXA. Fixes + text-antialias-subpixel. + + src/cairo-gl-glyphs.c | 60 ++++++-- + src/cairo-gl-private.h | 3 +- + src/cairo-gl-surface.c | 384 ++++++++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 424 insertions(+), 23 deletions(-) + +commit ceeb7e7e703213a83ca43d80962519074a19364d +Author: Eric Anholt <eric@anholt.net> +Date: Tue Jan 19 13:43:16 2010 -0800 + + [gl] Use the UNSUPPORTED() macro in more places for fallback debugging. + + src/cairo-gl-surface.c | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +commit 5d9e2fd84b4f66e5b121d95805ce34e2f482d1b0 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Jan 15 16:28:12 2010 +0100 + + [quartz] Leftbehind change from a39075c88f9b2e12e19348ea11c9b3f739818265 + + This commit completes the change in a39075c88f9b2e12e19348ea11c9b3f739818265. + It removes unused variables and corrects the extents rect computation. + + src/cairo-quartz-surface.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit 6950b233e41a0c926465728c37f9bc5512f2844b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 15 14:25:16 2010 +0000 + + qt: Make flush() robust. + + Hanno Meyer-Thurow reported in + + http://bugs.freedesktop.org/show_bug.cgi?id=26063 + [PATCH] various fixes to cairo-qt + + a few issues related to _cairo_qt_surface_flush() where firefox was + crashing after being built to use cairo-qt. + + This is an amalgam of those patches that hopefully address the issue. + + src/cairo-qt-surface.cpp | 33 ++++++++++++++++++++++++++------- + 1 files changed, 26 insertions(+), 7 deletions(-) + +commit 4e315d84723b27746a6a012ab7de429b2f2ef90b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 15 12:21:52 2010 +0000 + + pattern: Premultiply color-stop when converting to solid + + Fixes: test/linear-uniform + https://bugzilla.mozilla.org/show_bug.cgi?id=539165 + Bug 539165 - gradients with a single stop do not have their color + multiplied by the alpha. + + As reported by Jeff Muizelaar, we regressed in 2d790daa as the + color-stops are not premultiplied and so could not be treated as an + ordinary cairo_color_t. Instead we have to create a intermediate + cairo_color_t from the original values in order for the + premultiplication to be performed. + + src/cairo-gstate.c | 26 +++++++++++++++++++------- + src/cairo-pattern.c | 32 +++++++++++++++++++++----------- + 2 files changed, 40 insertions(+), 18 deletions(-) + +commit f40560a9bb5b12d2584ed297bf4114baf2aa9cc1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 15 12:17:30 2010 +0000 + + test: Add linear-uniform + + Jeff reported a regression found by Mozilla whereby a uniform gradient + was not being premultiplied on conversion to a solid pattern. + + https://bugzilla.mozilla.org/show_bug.cgi?id=539165 + [Bug 539165] gradients with a single stop do not have their color + multiplied by the alpha. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/linear-uniform.c | 63 +++++++++++++++++++++++++++++++++++++++++++ + test/linear-uniform.ref.png | Bin 0 -> 128 bytes + 4 files changed, 65 insertions(+), 0 deletions(-) + +commit e22c02dbaeda6941083fc89b517508dc0c4386a0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 15 12:02:58 2010 +0000 + + test: Add degenerate-arcs + + A simple test to ensure that using degenerate-arcs such as when drawing + a rounded rectangle with radii=0 construct a proper path. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/degenerate-arcs.c | 57 ++++++++++++++++++++++++++++++++++++++++++ + test/degenerate-arcs.ref.png | Bin 0 -> 120 bytes + 4 files changed, 59 insertions(+), 0 deletions(-) + +commit a39075c88f9b2e12e19348ea11c9b3f739818265 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Jan 6 18:53:54 2010 +0100 + + [quartz] Fix generic masking + + Masking with unbounded operators was broken because an incorrect + transformation was applied to inverted mask used for the fixup. + + src/cairo-quartz-surface.c | 59 +++++++++++++++---------------------------- + 1 files changed, 21 insertions(+), 38 deletions(-) + +commit 27701ed8447d4c21b7bf9709a2fc21690b3cdc96 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Jan 5 19:42:23 2010 +0100 + + [quartz] Approximate dense dashing patterns + + Quartz doesn't try to approximate dash pattern even if they are well + beyond suface sampling frequency. Approximating dash patterns when their + density is too high avoids looping indefinitely in these degenerate cases. + + src/cairo-quartz-surface.c | 32 +++++++++++++++++++++----------- + 1 files changed, 21 insertions(+), 11 deletions(-) + +commit ad7ab00c10fc1adcf2ef4574fdd00b25dfcdafdd +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Jan 2 13:23:53 2010 +0100 + + [quartz] Improve A8 and A1 support + + Use A8 images as alpha-only masks intread of greyscale images. + Add support to A1 images (they were ignored before). + + src/cairo-quartz-surface.c | 59 ++++++++++++++++++++++++++------------------ + 1 files changed, 35 insertions(+), 24 deletions(-) + +commit f3b3a5c43f247f3e9019fa6c1fd2abb3b00dd9ea +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Jan 15 07:47:30 2010 +1030 + + Fix bug in _cairo_ft_index_to_ucs4 + + Previously it would miss the first character causing the space glyph to + return 0x00A0 instead of 0x0020. + + src/cairo-ft-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e26e2c8cc41b4e60462eacbd87894dc82beca883 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 14 10:05:02 2010 -0800 + + [gl] Fix the color bits of CAIRO_CONTENT_ALPHA surface patterns to be 0. + + Fixes surface-pattern-operator and alpha-similar. + + src/cairo-gl-private.h | 1 - + src/cairo-gl-surface.c | 22 +++++++++++----------- + 2 files changed, 11 insertions(+), 12 deletions(-) + +commit 520945603cdbacb90b3067f24a37b6dbd2ea6808 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 14 10:00:37 2010 -0800 + + [gl] Remove the special-casing of acquiring a pattern surface. + + _cairo_pattern_acquire_surface() should do fine at it, and matches + what cairo-drm-i915 does. + + src/cairo-gl-surface.c | 127 ------------------------------------------------ + 1 files changed, 0 insertions(+), 127 deletions(-) + +commit dbf9faf8232e7bf279377b5f3fc08ed210ca4e51 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Jan 13 10:33:32 2010 -0800 + + [gl] Use GLSL for fill_rectangles when available. + + Ultimately, we want all of our paths to use shaders when they are + exposed -- it brings us closer to GL 3.0 compatibility and it should + reduce the work that GL drivers have to do per operation to compute + the required hardware state. + + src/Makefile.sources | 2 +- + src/cairo-gl-private.h | 6 ++ + src/cairo-gl-shaders.c | 117 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-surface.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++-- + 4 files changed, 244 insertions(+), 6 deletions(-) + +commit 57341cf5ac4d16222da27856e3a1092a473597e8 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Jan 13 14:18:06 2010 -0800 + + [gl] Use ADD instead of SOURCE when making a mask for overlapping glyphs. + + The whole point of making the mask was to avoid overwriting one glyph + with the data from another. Whoops. + + Fixes ft-show-glyphs-positioning, text-rotate, overlapping-glyphs, + clip-text. + + src/cairo-gl-glyphs.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6e0a63102e7e2d3fa3d5c993f2b94a2d6e40bdd8 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Jan 13 14:06:23 2010 -0800 + + [gl] Clear the current_target cache when binding a framebuffer in creation. + + Failing to do so meant that we might not re-bind the framebuffer to + the correct one if we didn't follow up surface creation with drawing + to it. + + Fixes many testcases. Thanks to T. Zachary Laine for tracking down + that the current_target was the source of these issues. + + src/cairo-gl-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit ad0f4bee19b214b96fb07a45d1f059b362afee0f +Author: T. Zachary Laine <whatwasthataddress@gmail.com> +Date: Thu Jan 7 17:24:31 2010 -0600 + + [gl] Clear the is_clear flag on the temporary glyph mask we create. + + Normally is_clear is cleared by the caller of one of the 5 basic + entrypoints, but in this temporary surface usage nobody else can do it + for us. + + Fixes ft-show-glyphs-table, user-font-rescale, and select-font-face. + + src/cairo-gl-glyphs.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 384e50d858e9eec670f764c758fb3aa09b56caed +Author: T. Zachary Laine <whatwasthataddress@gmail.com> +Date: Wed Jan 13 15:06:24 2010 -0600 + + [gl] Removed repeated lines of source + + The two removed lines are redundant with code a few lines above them. + + src/cairo-gl-surface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit 515ccb63a67c88ddb2bc5adfd018cae55bc93185 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jan 11 16:04:21 2010 -0800 + + [gl] Fix the glyph cache full flush to really try again. + + Previously, the initial error handling would dump through to software + fallback instead of retrying in the following code. + + src/cairo-gl-glyphs.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit 4aae4bfa8f28a470ab18575670563ad28374e445 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 12 17:10:04 2010 +0000 + + test: Fix typo in path-stroke-twice reference image + + Sigh. I committed the reference image with the name + path-stroke-twice-ref.png. + + test/path-stroke-twice-ref.png | Bin 206 -> 0 bytes + test/path-stroke-twice.ref.png | Bin 0 -> 206 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 74ea4c908067f5579b51d3dbaea387da8f343671 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 12 17:00:25 2010 +0000 + + path: Do not remove anti-parallel line segments in case we are stroking + + Bug 26010 - cairo_line_to optimizes away path segments + http://bugs.freedesktop.org/show_bug.cgi?id=26010 + + As exercised by path-stroke-twice, we incorrectly optimise away a line + segment if the path doubled back upon itself. This is very reminiscent + of the optimisation bug for replacing curve-to with line-to. + + src/cairo-path-fixed.c | 5 ++++- + src/cairo-slope-private.h | 7 +++++++ + 2 files changed, 11 insertions(+), 1 deletions(-) + +commit a5dd5a6069c0d7435260a954d8d98483f5fbcc1c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 12 16:32:09 2010 +0000 + + test: Add path-stroke-twice + + Exercises a bug found by alois@astro.ch, whereby we inadvertently remove + a line segment when the path doubles back upon itself. + + Bug 26010 - cairo_line_to optimizes away path segments + http://bugs.freedesktop.org/show_bug.cgi?id=26010 + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/path-stroke-twice-ref.png | Bin 0 -> 206 bytes + test/path-stroke-twice.c | 54 +++++++++++++++++++++++++++++++++++++ + test/path-stroke-twice.ps.ref.png | Bin 0 -> 197 bytes + 5 files changed, 57 insertions(+), 0 deletions(-) + +commit 4204605813d93e7e2f0d8761e90a6dd6b8089dcb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 8 11:58:15 2010 +0000 + + type1: Destroy the output stream. + + mpsuzuki spotted that the output stream for the subset was not being + destroyed on the error path - on closer inspection, it wasn't destroyed + along the normal path either and may never have been correctly + initialised to NULL on an earlier error. + + Reported-by: mpsuzuki@hiroshima-u.ac.jp + + src/cairo-type1-subset.c | 28 +++++++++++++++------------- + 1 files changed, 15 insertions(+), 13 deletions(-) + +commit 41a24d822ac094f0841ba0c92ca86448ad062def +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 7 11:58:01 2010 +0000 + + trace: Correctly encode octal values. + + How embarrassing. + + util/cairo-trace/trace.c | 21 ++++++++++++++------- + 1 files changed, 14 insertions(+), 7 deletions(-) + +commit 3ae9d04c6ddd311ffab91170fb9342e37c5530a8 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jan 1 20:13:33 2010 +0200 + + [stroker] Fix off-by-one memory allocation in _tessellate_fan(). + + The number of points in a triangle fan was miscomputed because + it was computing the number of line segments rather than points + in the fan. Now we include the final point of the fan correctly + in the count. + + This fixes https://bugs.webkit.org/show_bug.cgi?id=33071 as + reported by Benjamin Otte. A derived test case was not added + to the cairo test suite since the bug is difficult to trigger in + a reliable way which causes visible results (as opposed to + silent heap corruption.) + + The easiest way of triggering the bug is to stroke a line + using a large line width and round caps or joins. + + src/cairo-path-stroke.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a0ea0b63fdd38a73d6696da5cd4800d9a7289240 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 30 16:21:50 2009 +0000 + + arc: Just emit a line-to if radius is zero. + + In order to be consistent with the semantics of cairo_arc() using a + radius of 0 should simply degenerate into a line-to. + + Reported-by: Benjamin Berg + + src/cairo.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 21560b3ec6d015004867207c5bdd90061b8a5d80 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Fri Dec 11 10:29:12 2009 +0100 + + [trace] Fix compilation when FreeType is disabled + + cairo-trace needs some headers which are missing if freetype is + not enabled. Adding them explicitly fixes compilation. + + util/cairo-trace/trace.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 393d2d9c9199c368916fb5412abaac163f57ff86 +Author: Tim Janik <timj@gtk.org> +Date: Mon Dec 28 13:34:43 2009 +0100 + + Fixed documentation typo. + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e2d75203c515f9740a8e0e9779391de0a1a54b07 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Nov 29 15:56:26 2009 +0200 + + [dirty] Add more missing surface dirtying notifications. + + Now that the image surface actually cares about + cairo_surface_mark_dirty() we're hitting cases where + we've forgotten to mark surfaces dirty. + + boilerplate/cairo-boilerplate.c | 1 + + src/cairo-xlib-surface.c | 1 + + util/cairo-script/cairo-script-operators.c | 2 ++ + 3 files changed, 4 insertions(+), 0 deletions(-) + +commit b76565d2f4a2510aabada4cef968b9b597bbef09 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Nov 29 15:40:30 2009 +0200 + + [test] Don't use uninitialised data in surface-source.c + + The draw_pattern() function assumed the incoming surface + was clear, but it's not. Explicitly clear the surface first. + + test/surface-source.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit e09b754fdd43206e1668812be4ff11d25188148c +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Nov 29 01:11:29 2009 +0200 + + [gstate] Change dash offset normalisation to preserve offsets in range. + + We have a test case get-and-set which wants to see whatever it puts + into a cairo_t come back out again, but at the same time cairo-gstate + wants to range reduce the dash offset it's given to a sane range. + This patch changes the range reduction algorithm to always normalize + to a non-negative dash offset and not touch dash offsets which are + already in range. + + src/cairo-gstate.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +commit b394240941dffa263776a62cf42dc9b7e477f7a2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Nov 29 02:48:23 2009 +0200 + + [test] Add missing mark_dirty() calls to test cases. + + A recent optimisation has added a flag to the image + surface which is used to track whether the surface + is clear or not. This makes it imperative that clients + call cairo_surface_mark_dirty() if they use cairo to + allocate their pixel buffers and then proceed to + initialize them without telling cairo about it. + + test/a1-mask.c | 1 + + test/large-source.c | 2 ++ + test/user-font-mask.c | 1 + + 3 files changed, 4 insertions(+), 0 deletions(-) + +commit 9ddf14cfd5c3bf0cf507cfc82b192f5c46f66f9a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 29 10:40:18 2009 +1030 + + PDF: Don't specify colorspace in JPEG2000 image dictionary + + PDF uses the colorspace specified in the JPEG2000 image. + + src/cairo-pdf-surface.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit d58560bda8361bd25f1b2207ecfab4b331601045 +Author: Benjamin Otte <otte@gnome.org> +Date: Fri Nov 27 21:04:55 2009 +0100 + + Satisfy make check + + src/cairo-stroke-style.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 16fffc5c05857896c03decdcebff7f1b5e582390 +Author: Benjamin Otte <otte@gnome.org> +Date: Fri Nov 27 18:13:45 2009 +0100 + + Apply device transform in surface wrapper + + src/cairo-surface-wrapper.c | 56 +++++++++++++++++++++++++++++++++++------- + 1 files changed, 46 insertions(+), 10 deletions(-) + +commit 02d7e123d640d62db46ef03d7faecbc7598444e1 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Nov 27 23:11:56 2009 +1030 + + PDF: Remove extraneous \n from end of jpeg/jp2 data + + PDF requires a '\n' between the end of stream data and the "endstream" + that is not included in the stream length. Ensure this is always added + in _close_stream where it is not included in the stream length. + + Previously the jpeg/jp2 embedding functions were adding the '\n'. This + resulted in the '\n' becoming part of the stream data. + + src/cairo-pdf-surface.c | 5 +---- + 1 files changed, 1 insertions(+), 4 deletions(-) + +commit 4fc7bdaed651a5c19eb89dddd88808468e0e7eb8 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Nov 26 21:14:20 2009 +1030 + + PS: Add some missing pdf-operators flushes + + src/cairo-ps-surface.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 3f0c9afa9760a90065c67927c63770f9bb8abe99 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 25 15:57:46 2009 +0100 + + [clip] Don't ignore outermost clip when it clips everything + + Fixes testcases clip-stroke-no-op and clip-fill-no-op added in + 0d8a04ef47426d87c7932f308a831e36b4ef7683 + + src/cairo-clip.c | 5 +---- + 1 files changed, 1 insertions(+), 4 deletions(-) + +commit 0d8a04ef47426d87c7932f308a831e36b4ef7683 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 25 10:48:39 2009 +0000 + + test: Add cases to exercise clipping after no-ops + + Whilst investigating: + + Bug 31788: SVG <line> with y1 == y2 and both with fractional + part don't render + https://bugs.webkit.org/show_bug.cgi?id=31788 + + I found that it can be reduced to a no-op clip following a no-op stroke + or fill. These conditions are exercised here and are shown to be a bug + introduced in the 1.9.x development series. + + test/Makefile.am | 2 + + test/Makefile.sources | 2 + + test/clip-fill-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ + test/clip-fill-no-op.ref.png | Bin 0 -> 152 bytes + test/clip-stroke-no-op.c | 66 ++++++++++++++++++++++++++++++++++++++++ + test/clip-stroke-no-op.ref.png | Bin 0 -> 152 bytes + 6 files changed, 136 insertions(+), 0 deletions(-) + +commit 26e9f149063b9e1fdb54fc54fccbefdf04a68190 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Nov 10 23:09:56 2009 +0100 + + Improve stroking of densely dashed styles + + Add some auxiliary functions to cairo-stroke-style to compute + properties of the dashed patterns (period, "on" coverage) and to + generate approximations when the dash pattern is sub-tolerance. + These functions are used in cairo-path-stroke to simplify dash + patterns stroked by cairo. + Fixes dash-infinite-loop + See http://bugs.freedesktop.org/show_bug.cgi?id=24702 + + src/cairo-path-stroke.c | 24 +++++++-- + src/cairo-stroke-style.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 20 ++++++++ + 3 files changed, 157 insertions(+), 6 deletions(-) + +commit 9c24288c820069e80b0feb5e99ece4c89e92c0c6 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Nov 11 00:09:08 2009 +0100 + + Revert "[test] Reorder dash-infinite-loop to not hit a runaway allocation." + + The infinite loop problem in _cairo_stroker_dash_start is solved by + commit ee02f3484899527380df94c00f40da87f41660ea, so hitting that + problem is not possible anymore and dash-infinite stroke always + hit the memory intensive loops. + This reverts commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe. + + test/dash-infinite-loop.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit cc2d2630669b084ec43e415d2806d94af00cf56c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Nov 10 22:58:59 2009 +0100 + + Improve stroke offset computation + + The stroke offset was forced to be positive because stroking code + wants to be able to decrement it until it finds the first dash to be + drawn. This can lead to long (almost infinite) loops if the offset is + positive but huge compared to the total length of the dash pattern. + Computing the offset this way guarantees that it's always the smallest + non-negative equivalent offset. + + src/cairo-gstate.c | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) + +commit e436a57c22f2c2a87404cac27e2d5e3c404f8bf9 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Nov 10 13:29:28 2009 +0100 + + Fix odd length dashing with negative offset + + When computing an equivalent offset, a wrong total dash length was + used when the dash elements were odd and more than 1. + Doubling the total dash length whenever they are odd is needed to + correctly compute the new offset. + Fixes dash-offset. + + src/cairo-gstate.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b1a76394655793fd698a1281b00a3d049f9e70f5 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Nov 10 13:09:50 2009 +0100 + + Add dash-offset test + + Stroking a dash pattern of odd length with a negative offset is broken + (except when the pattern is composed by a single dash). + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/dash-offset.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++ + test/dash-offset.ref.png | Bin 0 -> 794 bytes + 4 files changed, 97 insertions(+), 0 deletions(-) + +commit 7d8788b4ba5ae335a7bb77bd09e7ebd20376f632 +Author: Robert O'Callahan <robert at ocallahan.org> +Date: Mon Nov 9 18:58:59 2009 +0100 + + [quartz] Cleanup fallback source + + Remove the transformation code as it's useless and confusing. + The clipbox was transformed in a wrong way if the CTM + was not the base one, otherwise the transformation did nothing. + As long as _cairo_quartz_setup_fallback_source is only called + with the base CTM, no transformation needs to be performed on the + clipbox. + Patch by Robert O'Callahan, see Mozilla bug #507939. + + src/cairo-quartz-surface.c | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) + +commit 248090e52b02f2b2dc424c6073489df32632b9d1 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 9 21:38:00 2009 +0100 + + [quartz] Fix compositing operators + + Fallback on SATURATE (since quartz doesn't support it) and on + blending operators (to be implemented using CGContextSetBlendMode, + after its availability has been assessed). + Workaround the different behaviour of quartz operators on alpha + masks. + Fixes text in clip-operator and clip-text, blend modes in + extended-blend, extended-blend-alpha, saturate in operator, + operator-alpha and surface-pattern-operator. + Changes the output of operator-alpha-alpha, but to really fix it + pure-alpha surfaces needs to be treated as alpha masks and not as + greyscale images. + + src/cairo-quartz-surface.c | 182 ++++++++++++++++++++++++++++++++++---------- + 1 files changed, 140 insertions(+), 42 deletions(-) + +commit d44414191a685a23fd48bb32826366dfd113e1e5 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 9 14:21:40 2009 +0100 + + [quartz] Fix source-unbounded compositing of surface sources + + Surface sources were not respecting EXTEND_NONE when composited + because the part outside of the surface rectangle was not changed. + To correctly extend the source, it's sufficient to composite a + transparent rectangle with a hole in the region covered by the surface. + Fixes clip-unbounded and operator-source. Changes the output of + surface-pattern-operator. + + src/cairo-quartz-surface.c | 62 ++++++++++++++++++++------------------------ + 1 files changed, 28 insertions(+), 34 deletions(-) + +commit 7ef611a67a2a68d0a50e2191804a8ef137c78b33 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 9 20:17:35 2009 +0100 + + [quartz] Fix stroking with unbounded operator + + Stroking was not fixed up correctly when the stroke trasform + was not the identity and when the stroked path was dashed. + Instead of building a mask image and clearing through it + (forgetting to use the CTM and the dash setting), the code now + simply fills the outside of the stroke with tranparent black. + Additionally this commit moves the CTM composition so that the invocation + of _cairo_quartz_setup_source is always done with the base CTM. + This commit changes the result of clip-stroke-unbounded (the clip + mask is now correctly aligned to the stroked path). + + src/cairo-quartz-surface.c | 36 +++++++++++++----------------------- + 1 files changed, 13 insertions(+), 23 deletions(-) + +commit 577ac4fc6d810cae7ff6d460fdea1886cd97258c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Nov 9 14:24:13 2009 +0100 + + [quartz] Fix implied colour of alpha-only surface sources + + If a fill colour was set, an alpha-only surface source would + have used that colour instead of black. + + src/cairo-quartz-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 8b25e4a7fd839ac399d14460d2596037134c9801 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Oct 19 18:38:57 2009 +0200 + + [quartz] Improve unbounded operators fixup + + Don't allocate a colorspace and use a 16-bytes aligned stride and + an alpha-only image for the rendering of the fixup mask. + + src/cairo-quartz-surface.c | 16 +++++++--------- + 1 files changed, 7 insertions(+), 9 deletions(-) + +commit ed8bdcd59863964a3eb9c49ca1a9bfd5f544350c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Oct 19 17:33:10 2009 +0200 + + [quartz] Improve A8 image handling + + A8 images were cosidered grayscale, whereas they should behave like + transparency mask. They are now alpha-only images and the stride is + 16-bytes aligned, as suggested. + Fixes alpha-similar and mask-transformed-similar. Makes the patterns + behave (as expected) as masks in surface-pattern-operator. + Affects the output of operator-alpha-alpha, but the result is not + correct because of wrong compositing. + + src/cairo-quartz-surface.c | 21 +++++++++------------ + 1 files changed, 9 insertions(+), 12 deletions(-) + +commit b32695c248b08289ce431d5f2fdab5205219c203 +Author: Robert O'Callahan <robert at ocallahan.org> +Date: Tue Oct 20 16:07:52 2009 +0200 + + [quartz] Fix gradient pattern painting + + CTM was changed and not restored when painting gradients. + Fixes the alignment of surface patterns in surface-pattern-operator. + Patch by Robert O'Callahan, see Mozilla bug #507939. + + src/cairo-quartz-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 1ce096657b2d38956e3229042f87aea42b0d0d8c +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Nov 3 22:51:29 2009 +0100 + + Fix compilation on MacOS X + + Enable "ld_preload" (DYLD_INSERT_LIBRARIES + DYLD_FORCE_FLAT_NAMESPACE) + and build cairo-trace as a library instead of a module to make it + work also on MacOS X. + + configure.ac | 17 ++++++++++++++++- + util/cairo-trace/Makefile.am | 22 +++++++++++----------- + util/cairo-trace/cairo-trace.in | 6 +++++- + util/cairo-trace/trace.c | 2 +- + 4 files changed, 33 insertions(+), 14 deletions(-) + +commit c181f9e9aeac375eed07aaab58d177e3476d5117 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sat Nov 7 19:29:30 2009 +0100 + + Add new operator-alpha-alpha test + + Compositing of alpha-only sources is not throughly tested and + as a consequence the misbehaviour of some backends is not + shown by the test suite. + + [ickle: Added XFAILs for pdf, ps, svg.] + + src/cairo-xcb-surface.c | 4 - + test/Makefile.am | 4 + + test/Makefile.sources | 1 + + test/operator-alpha-alpha.c | 166 +++++++++++++++++++++++++++++++ + test/operator-alpha-alpha.pdf.xfail.png | Bin 0 -> 3749 bytes + test/operator-alpha-alpha.ps.xfail.png | Bin 0 -> 1338 bytes + test/operator-alpha-alpha.ref.png | Bin 0 -> 3441 bytes + test/operator-alpha-alpha.svg.xfail.png | Bin 0 -> 838 bytes + 8 files changed, 171 insertions(+), 4 deletions(-) + +commit cee3a6169bdf7f64c126c487b443dcb7a9f0586a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 8 21:52:06 2009 +1030 + + Type1-subset: Append "cleartomark" operator for binary fonts that don't include it + + Type 1 fonts embedded in PDF may omit the fixed-content portion of the + font that contains the "cleartomark" operator. + + src/cairo-type1-subset.c | 22 +++++++++++++++------- + 1 files changed, 15 insertions(+), 7 deletions(-) + +commit d962d6bae2681ea1f3c9533a83c8902d76e81c6a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 8 21:46:16 2009 +1030 + + PDF: Include Type 1 fixed-content portion in the embedded font + + Some fonts may contain additional PostScript code after the + cleartomark. + + src/cairo-pdf-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit ac59c7580894fc5fd424f7f6f8c1532d15048566 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 8 21:38:58 2009 +1030 + + Type1-subset: Check for binary eexec data + + Type 1 fonts embedded in PDF have the the encrypted portion in binary + but the existing check for binary only works for Type 1 fonts in PFB + format. + + Add an additional check based on the first 4 characters of eexec data. + The Type 1 specification gurantees that at least one of the first 4 + bytes of ciphertext is not an ASCII Hex character. + + src/cairo-type1-subset.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit a4a59be600cbe17f43afa20422f9d05f3a5d5b52 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Nov 7 14:36:49 2009 +1030 + + Type 1 subset: Don't add a new line when in binary mode + + At the end of the private dictionary a new line is appended so that + the trailing zeros will not exceed 80 columns. In hex mode (used for + PS embedding) extra white space is harmless as it is ignored when + parsing the ascii hex encoded data. But in binary mode (used for PDF + embedding) the new line must not be added as it corrupts the binary + data. + + https://bugs.launchpad.net/ubuntu/+source/cups/+bug/419143 + + src/cairo-type1-subset.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 9775f44436ffaf54931614d1867bcb7d147acd06 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 5 10:13:34 2009 +0000 + + AUTHORS: Add Andrea Canciani + + AUTHORS | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit d51915f873da8d40740a908c86f02e972e358be9 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Wed Nov 4 16:15:48 2009 +0100 + + xlib: Fix double free + + Both _cairo_xlib_call_close_display_hooks and _cairo_xlib_screen_destroy + invoke _cairo_xlib_screen_close_display, which frees all the cached + GCs, but (if HAS_ATOMIC_OPS is undefined) doesn't mark them as freed, + thus freeing them agin upon the second invocation. + + src/cairo-xlib-screen.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 7c1424a315b677ca119d11b7ced1d4c969dde568 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Oct 18 08:59:33 2009 +0200 + + quartz: Fix compilation + + The function _cairo_image_surface_create_for_content does not exist. + The correct name of the function is instead _cairo_image_surface_create_with_content. + + src/cairo-quartz-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8a10c25c3f4036d17e24852e7dc970fa06fcb4af +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 5 10:02:54 2009 +0000 + + test: Tweak Benjamin's xcomposite-projection + + Include Benjamin's advice on how to make the bug more visible inline + with the code. + + test/xcomposite-projection.c | 69 +++++++++++++++++++++++++++++------------- + 1 files changed, 48 insertions(+), 21 deletions(-) + +commit a9f37953c71e16f65122097462e51b035783a965 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 4 13:59:58 2009 +0100 + + [xlib] Use correct number when checking if points are out of range + + src/cairo-xlib-surface.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +commit aa1f245ea313a2f1f0dda3994f5b48073b0c385d +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 4 13:56:15 2009 +0100 + + [test] Add "target=raster" to test + + The test isn't useful on vector backends and fails there due to + antialiasing issues. + + test/xcomposite-projection.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 52afe9c77f2f54372fefeca50321a27e8dda0f63 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 4 11:15:57 2009 +0100 + + [xlib] Fix new Composite test + + When the reference point was tirggering _line_exceeds_16_16() and got + adjusted, the code failed to compute the srcX and srcY arguments for the + call to XRenderCompositeTrapezoids() correctly and caused the resulting + source image to be misaligned. + + src/cairo-fixed-private.h | 9 +++++++++ + src/cairo-xlib-surface.c | 22 +++++++++++----------- + 2 files changed, 20 insertions(+), 11 deletions(-) + +commit 84bbf179c375622d2c7b4e21b1b8ce189b5a18f2 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Nov 4 11:06:57 2009 +0100 + + [test] Add a test exposing bugs in XRenderComposite + + This test fills a slightly rotated surface slightly above the 0 line. + This hits some corner cases in the XRenderComposite path. + I discovered these issues while playing with video rendering onto the + canvas in HTML5 (both Webkit and Mozilla have this problem). + I used CAIRO_ANTIALIAS_NONE and a single-color source in the test to get + rid of aliasing issues in the output images. This makes some issues + slightly less visible, but still fails for all of them. If you want to + get a clearer view, disable it and use romedalen.png instead - it has + the same size as the red surface. + + (At least) 3 bugs are at work here: + - if _line_exceeds_16_16() triggers for the reference point, the + source surface will be misaligned. + - the intel driver seems to have an off-by-one bug on my i945 when + positioning the source surface, causing black seams at the top + (not visible in the test unless using romedalen.png) and on the left + of the image. + - My Xvfb fails completely in picture up/download in the xlib-fallback + path. + + test/Makefile.sources | 1 + + test/xcomposite-projection.c | 81 ++++++++++++++++++++++++++++++++++++ + test/xcomposite-projection.ref.png | Bin 0 -> 1112 bytes + 3 files changed, 82 insertions(+), 0 deletions(-) + +commit 9b42b6156d9916e64e19f2ccb0b43f4d1df72e79 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 2 12:50:45 2009 +0000 + + build: Add -pthread to real_pthread_CFLAGS + + build/configure.ac.system | 12 ++++++++++ + configure.ac | 51 +++++++++++++++++++------------------------- + 2 files changed, 34 insertions(+), 29 deletions(-) + +commit 3eecf2f60c85e0195360ff3c3a54d58ceaa4a6f1 +Author: Benjamin Otte <otte@gnome.org> +Date: Mon Nov 2 13:20:25 2009 +0100 + + sphinx: Add required pthread libs + + Try again, this time for real hopefully. + + configure.ac | 2 +- + util/cairo-sphinx/Makefile.am | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 837eb577b4707e447fafb0dfca378ecf4ea3fda5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 2 11:56:29 2009 +0000 + + sphinx: Add required pthread libs + + Switching to pthread-stubs broke the build for sphinx on unbroken + platforms [those that do not unnecessarily link against -lpthreads]. + + configure.ac | 7 +++++++ + util/cairo-sphinx/Makefile.am | 5 +++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +commit 942a15ba9e85fa3297ad6e65270928ad3c1c0a42 +Author: Benjamin Otte <otte@gnome.org> +Date: Mon Nov 2 12:51:14 2009 +0100 + + [test] Update upscale test to expose an Xlib failure + + By filling the background with grey, we can see that Xlib fills areas + with black that it shouldn't. Xlib therefore now fails this test. + + test/surface-pattern-scale-up.c | 4 +++- + test/surface-pattern-scale-up.pdf.ref.png | Bin 2793 -> 3482 bytes + test/surface-pattern-scale-up.ps2.ref.png | Bin 943 -> 913 bytes + test/surface-pattern-scale-up.ps3.ref.png | Bin 943 -> 913 bytes + test/surface-pattern-scale-up.ref.png | Bin 4061 -> 4017 bytes + 5 files changed, 3 insertions(+), 1 deletions(-) + +commit 19c411a5b8b84d31516d9c85642ad55ef5d29aba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 30 07:58:45 2009 +0000 + + path: Skip any secondary degenerate line-to segments. + + Only the very first line-to following a move-to can have any + significance if degenerate whilst stroking, so skip all others. + In other words, + + 0 0 m 0 0 l stroke + + produces a capped degenerate path (i.e a dot), + + 0 0 m 0 0 l 0 0 l stroke + + produces the same degenerate stroke, and + + 0 0 m 0 0 l 1 0 l stroke + + produce a horizontal line. + + src/cairo-path-fixed.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +commit 23bcf91748c4bb04c16e503b913da3bfc237463f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 30 07:49:56 2009 +0000 + + path: Misclassification of rectilinear after degenerate line-to + + Malte Nuhn reported hitting an assertion: + + cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. + http://bugs.freedesktop.org/show_bug.cgi?id=24797 + + when stroking an apparently simple path: + + 0 8.626485 m + 0 8.626485 l + 5.208333 2.5 l + 10.416667 2.5 l + 15.625 2.5 l + 20.833333 2.5 l + 26.041667 2.5 l + 31.25 2.5 l + 36.458333 2.5 l + 41.666667 2.5 l + 46.875 2.5 l + 52.083333 2.5 l + 57.291667 2.5 l + 62.5 2.5 l + 67.708333 2.5 l + 72.916667 2.5 l + 78.125 2.5 l + 83.333333 2.5 l + 88.541667 2.5 l + 93.75 2.5 l + 98.958333 2.5 l + 104.166667 2.5 l + 109.375 2.5 l + 114.583333 2.5 l + 119.791667 2.5 l + 125 2.5 l + stroke + + which upon reduction becomes: + + 0.000000 8.625000 m 5.207031 2.500000 l 125.000000 2.500000 l stroke + + The bug is that after spotting a repeated line-to we move the previous + end-point without reclassifying the path, hence we miss the + non-rectilinear step. + + src/cairo-path-fixed.c | 101 ++++++++++++++++++++++++----------------------- + 1 files changed, 52 insertions(+), 49 deletions(-) + +commit 600dd833983bd85bf8aea487393ce156abb622bd +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Sep 28 19:14:46 2009 +0930 + + Provide a builtin implementation of isspace() and isdigit() + + The glibc versions are slow in utf8 locales. + + src/cairo-output-stream.c | 7 +++---- + src/cairo-pdf-operators.c | 6 ++---- + src/cairo-type1-subset.c | 16 +++++++--------- + src/cairoint.h | 16 ++++++++++++++++ + 4 files changed, 28 insertions(+), 17 deletions(-) + +commit f571356d346565cae34f08d12c584c4bd40921d6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 27 20:27:09 2009 +0000 + + xlib: Set has_component_alpha = FALSE for gradient Pictures + + Whilst creating the xlib surface wrapper for gradient Pictures, the + corresponding attributes require ComponentAlpha disabled. + + src/cairo-xlib-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 1a80cd2aa00b232a9a2192a85d6264e44ffcbd69 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 26 11:05:38 2009 +0000 + + scaled-font: Fix documentation examples with incorrect derefs + + Bug 24730 -- New: misleading use cases in cairo_scaled_font_text_to_glyphs's docs + http://bugs.freedesktop.org/show_bug.cgi?id=24730 + + An apparent copy'n'paste error from the code which has to deal with + indirect pointers crept into the documentation for the same functions. + + src/cairo-scaled-font.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit f648fcd2f91ea5c9ec318c2c0573ee82ac8c0ac9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 26 11:02:16 2009 +0000 + + gitignore: Add forgotten cairo-perf-print + + perf/.gitignore | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 6911ba2f76d4ccdf228c029e2719461a72848824 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 26 11:01:01 2009 +0000 + + perf: Fix comparisons + + The sort order was unstable resulting in incorrect ordering dependent + upon libc version. + + perf/cairo-perf-diff-files.c | 22 +++++++++++++++------- + 1 files changed, 15 insertions(+), 7 deletions(-) + +commit f955a4cba7784f97ef1dd978158e98176e03baf0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 25 11:04:17 2009 +0000 + + wideint: Protect 64_32_div for non-HAVE_UINT16_T systems + + Peter Clifton spotted that we failed to properly wrap + _cairo_int64_32_div() for systems without a native 64 bit type. + + src/cairo-wideint-private.h | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit c701d7813b6d116c9db53f63f791928a407499c7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 23 14:42:48 2009 +0100 + + [pattern] Compute zero extents for empty patterns + + If the pattern is for example a repeating 0x0 image, then treat it as + having zero extents. + + This should workaround the bug presented here: + + https://bugs.freedesktop.org/show_bug.cgi?id=24693 + Attached PDF crashes evince with a Floating point exception + + src/cairo-pattern.c | 27 ++++++++++++++++++++++++--- + 1 files changed, 24 insertions(+), 3 deletions(-) + +commit 43a775f60da57206b194039cd5d8b6a735284c45 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Oct 22 02:13:36 2009 +0300 + + [meta] Rename cairo_meta_surface_t to cairo_recording_surface_t. + + The new name is more descriptive than the rather opaque meta surface. + Discussed with vigour on the mailing list and #cairo: + + http://lists.cairographics.org/archives/cairo/2009-July/017571.html + + NEWS | 7 + + boilerplate/Makefile.win32.features | 14 +- + boilerplate/cairo-boilerplate-pdf.c | 6 +- + boilerplate/cairo-boilerplate-ps.c | 8 +- + boilerplate/cairo-boilerplate-svg.c | 8 +- + boilerplate/cairo-boilerplate-test-surfaces.c | 2 +- + boilerplate/cairo-boilerplate-win32-printing.c | 2 +- + boilerplate/cairo-boilerplate.c | 46 +- + boilerplate/cairo-boilerplate.h | 2 +- + build/Makefile.win32.features-h | 2 +- + configure.ac | 2 +- + doc/public/tmpl/cairo-surface.sgml | 2 +- + perf/cairo-perf-micro.c | 4 +- + perf/cairo-perf-trace.c | 4 +- + src/Makefile.sources | 4 +- + src/Makefile.win32.features | 14 +- + src/cairo-analysis-surface.c | 48 +- + src/cairo-meta-surface-private.h | 171 --- + src/cairo-meta-surface.c | 1096 -------------------- + src/cairo-paginated-private.h | 6 +- + src/cairo-paginated-surface-private.h | 4 +- + src/cairo-paginated-surface.c | 92 +- + src/cairo-pattern.c | 2 +- + src/cairo-pdf-surface.c | 56 +- + src/cairo-ps-surface.c | 42 +- + src/cairo-recording-surface-private.h | 171 +++ + src/cairo-recording-surface.c | 1096 ++++++++++++++++++++ + src/cairo-scaled-font.c | 28 +- + src/cairo-script-surface.c | 42 +- + src/cairo-script.h | 4 +- + src/cairo-surface.c | 58 +- + src/cairo-svg-surface.c | 46 +- + src/cairo-tee-surface.c | 6 +- + src/cairo-type3-glyph-surface.c | 14 +- + src/cairo-types-private.h | 2 +- + src/cairo-user-font.c | 42 +- + src/cairo-vg-surface.c | 10 +- + src/cairo-win32-printing-surface.c | 60 +- + src/cairo-xml-surface.c | 32 +- + src/cairo-xml.h | 4 +- + src/cairo.c | 2 +- + src/cairo.h | 20 +- + src/cairoint.h | 12 +- + test/Makefile.am | 32 +- + test/Makefile.sources | 2 +- + test/cairo-test-trace.c | 48 +- + test/cairo-test.c | 6 +- + test/meta-surface-pattern.c | 121 --- + test/meta-surface-pattern.gl.argb32.ref.png | Bin 3130 -> 0 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3908 -> 0 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3760 -> 0 bytes + test/meta-surface-pattern.ps2.argb32.ref.png | Bin 3257 -> 0 bytes + test/meta-surface-pattern.ps2.rgb24.ref.png | Bin 3873 -> 0 bytes + test/meta-surface-pattern.ps3.argb32.ref.png | Bin 3257 -> 0 bytes + test/meta-surface-pattern.ps3.rgb24.ref.png | Bin 3873 -> 0 bytes + test/meta-surface-pattern.quartz.ref.png | Bin 4572 -> 0 bytes + test/meta-surface-pattern.quartz.rgb24.ref.png | Bin 4063 -> 0 bytes + test/meta-surface-pattern.ref.png | Bin 3072 -> 0 bytes + test/meta-surface-pattern.rgb24.ref.png | Bin 3162 -> 0 bytes + test/meta-surface-pattern.svg.argb32.ref.png | Bin 3778 -> 0 bytes + test/meta-surface-pattern.svg.rgb24.ref.png | Bin 3760 -> 0 bytes + test/recording-surface-pattern.c | 121 +++ + test/recording-surface-pattern.gl.argb32.ref.png | Bin 0 -> 3130 bytes + test/recording-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 3908 bytes + test/recording-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 3760 bytes + test/recording-surface-pattern.ps2.argb32.ref.png | Bin 0 -> 3257 bytes + test/recording-surface-pattern.ps2.rgb24.ref.png | Bin 0 -> 3873 bytes + test/recording-surface-pattern.ps3.argb32.ref.png | Bin 0 -> 3257 bytes + test/recording-surface-pattern.ps3.rgb24.ref.png | Bin 0 -> 3873 bytes + test/recording-surface-pattern.quartz.ref.png | Bin 0 -> 4572 bytes + .../recording-surface-pattern.quartz.rgb24.ref.png | Bin 0 -> 4063 bytes + test/recording-surface-pattern.ref.png | Bin 0 -> 3072 bytes + test/recording-surface-pattern.rgb24.ref.png | Bin 0 -> 3162 bytes + test/recording-surface-pattern.svg.argb32.ref.png | Bin 0 -> 3778 bytes + test/recording-surface-pattern.svg.rgb24.ref.png | Bin 0 -> 3760 bytes + test/scale-offset-similar.meta.xfail.png | Bin 10752 -> 0 bytes + test/scale-offset-similar.recording.xfail.png | Bin 0 -> 10752 bytes + util/cairo-fdr/fdr.c | 8 +- + util/cairo-sphinx/sphinx.c | 38 +- + util/cairo-trace/trace.c | 10 +- + util/trace-to-xml.c | 4 +- + 81 files changed, 1845 insertions(+), 1838 deletions(-) + +commit df357f26ff72571acb840715efa4930054d4fdbe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 16 16:48:54 2009 +0100 + + Support component-alpha. + + Within our code base we carried a few hacks to utilize the component + alpha capabilities of pixman, whilst not supporting the concept for our + own masks. Thus we were setting it upon the pixman_image_t that we + passed around through code that was blissfully unaware and indeed the + component-alpha property was forgotten (e.g. upgrading glyph masks). + + The real issue is that without explicit support that a pattern carries + subpixel masking information, that information is lost when using that + pattern with composite. Again we can look at the example of compositing + a sub-pixel glyph mask onto a remote xlib surface for further failure. + + src/cairo-ft-font.c | 5 --- + src/cairo-gl-glyphs.c | 23 +++++++++--- + src/cairo-gl-surface.c | 18 ++++++--- + src/cairo-gstate.c | 17 ++++++--- + src/cairo-image-surface.c | 55 ++++++++++++++++++++++------- + src/cairo-pattern.c | 22 +++++++++-- + src/cairo-pdf-surface.c | 10 ++++-- + src/cairo-scaled-font.c | 14 ++++--- + src/cairo-svg-surface.c | 10 ++++-- + src/cairo-types-private.h | 71 ++++++++++++++++++++++++++++++++++++++ + src/cairo-win32-font.c | 10 ++--- + src/cairo-xlib-surface-private.h | 1 + + src/cairo-xlib-surface.c | 43 ++++++++++++++++++---- + src/cairoint.h | 69 +------------------------------------ + 14 files changed, 234 insertions(+), 134 deletions(-) + +commit f0cd20e6cec445eb627c2708c2230c8bad1b64ce +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 21 10:36:27 2009 +0100 + + [gl] Do not clear internal surfaces. + + Create a scratch surface that will be initialised as required for + internal use. External surfaces, i.e. those returned to the user, are + cleared as normal. + + src/cairo-gl-surface.c | 46 +++++++++++++++++++++++++++++++--------------- + 1 files changed, 31 insertions(+), 15 deletions(-) + +commit 7c9ebd4a852ad709e57ed48b9610db00de79de7e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 21 09:04:30 2009 +0100 + + Make the surface->is_clear logic common + + A nasty surprise whilst profiling is that performing redundant clear + operations is extremely painful. We can mitigate this somewhat by + tracking the cleared state of surfaces and skipping repeated attempts to + clear a surface. + + src/cairo-gl-surface.c | 2 + + src/cairo-image-surface.c | 47 ++---------------------------- + src/cairo-surface-private.h | 6 ++- + src/cairo-surface.c | 66 ++++++++++++++++++++++++++++++++++++++---- + src/cairoint.h | 1 - + 5 files changed, 68 insertions(+), 54 deletions(-) + +commit 723055722f1d9a133fe9e78bb19165f2c7be720e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 21 10:40:51 2009 +0100 + + [doc] Add comments on when surfaces are cleared on construction. + + Or perhaps, more importantly, when the contents are left unmodified. + + src/cairo.h | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit cef8194178b01eaa2d10c1ba8291a9a4c5a6d302 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Tue Oct 20 14:37:28 2009 +0200 + + [test] Add surface-pattern-operator + + Test the results of compositing ALPHA and COLOR_ALPHA surfaces + with different operators. + + test/Makefile.am | 4 + + test/Makefile.sources | 1 + + test/surface-pattern-operator.argb32.ref.png | Bin 0 -> 5217 bytes + test/surface-pattern-operator.c | 117 +++++++++++++++++++++ + test/surface-pattern-operator.rgb24.ref.png | Bin 0 -> 1942 bytes + test/surface-pattern-operator.xlib.argb32.ref.png | Bin 0 -> 5171 bytes + test/surface-pattern-operator.xlib.rgb24.ref.png | Bin 0 -> 1913 bytes + 7 files changed, 122 insertions(+), 0 deletions(-) + +commit 710303ef15b9a1bf73b2b07b7aa51ec816d0aa07 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 19 10:42:51 2009 +0100 + + [test] Update rotate-image-surface-paint + + Update this test case so the background is not the default border colour + so that we spot when the backend pads out the transformed image surface. + + test/Makefile.am | 5 +- + test/rotate-image-surface-paint.c | 78 ++++++++++++++----------- + test/rotate-image-surface-paint.pdf.xfail.png | Bin 217 -> 358 bytes + test/rotate-image-surface-paint.ps.ref.png | Bin 0 -> 236 bytes + test/rotate-image-surface-paint.ps2.ref.png | Bin 212 -> 0 bytes + test/rotate-image-surface-paint.ps3.ref.png | Bin 212 -> 0 bytes + test/rotate-image-surface-paint.ref.png | Bin 191 -> 220 bytes + test/rotate-image-surface-paint.svg.xfail.png | Bin 0 -> 387 bytes + 8 files changed, 45 insertions(+), 38 deletions(-) + +commit ea39f0302a936711043aa6834ba0ab487736572b +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Mon Oct 19 22:21:00 2009 +0800 + + atomic: correct libatomic_ops version of _cairo_atomic_int_cmpxchg + + AO_compare_and_swap_full() doesn't have the same semantic as + _cairo_atomic_int_cmpxchg(). The former returns a TRUE on success + FALSE otherwise while the later returns the atomic value. + + src/cairo-atomic-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a2254e56474fcdf5f25232812cdbef30a2b5ea60 +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Oct 18 22:12:13 2009 +0200 + + [gstate] Apply target device offsets to patterns immediately + + Previously target device offsets were applied in cairo-surface.c which + could cause bugs when paths were taken as fallbacks, as for example + pointed out by ade55037ffa596b690c6a1051394589f76eb1f48 and quick-fixed + by 79190d89853958ee8252440d35a662fabf122afd. The quick-fix is now + unnecessary and was removed. + + src/cairo-gstate.c | 4 +++ + src/cairo-surface-fallback.c | 41 ++++------------------------- + src/cairo-surface.c | 59 ------------------------------------------ + 3 files changed, 10 insertions(+), 94 deletions(-) + +commit 4b720d56db72d314b3b7cedb05a53321b1d0adbe +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Oct 18 21:32:10 2009 +0200 + + [clip] Remove non-existing functions from header + + src/cairo-clip-private.h | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) + +commit cacf9ccedffa0c804a56c76c8ab17bf81831b621 +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Oct 18 21:30:22 2009 +0200 + + [path] Fix compiler warnings + + src/cairo-path-fill.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit a70705b2ede8c0dc401f28405641e70f8a6d8d92 +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Oct 18 21:30:06 2009 +0200 + + [xlib] Fix compiler warnings + + src/cairo-xlib-screen.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 96117c1212be2bf39a300a212dec85466f49f31e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 17 10:36:10 2009 +0100 + + [test] Add radial-gradient-source + + ranma42 found a bug in compositing with a radial gradient using the + SOURCE operator with EXTEND_NONE, as exercised here. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/radial-gradient-source.argb32.ref.png | Bin 0 -> 272428 bytes + test/radial-gradient-source.c | 115 ++++++++++++++++++++++++++++ + test/radial-gradient-source.rgb24.ref.png | Bin 0 -> 193364 bytes + 5 files changed, 118 insertions(+), 0 deletions(-) + +commit 54df07a3da2bfbbdbe2dde92ca298ac0d7b8d255 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 16 10:11:41 2009 +0100 + + [surface] Don't AND in the desired content. + + Gah, that was a horrible mistake. It was a flawed hack to create Pixmaps + of the correct depth when cloning patterns for blitting to the xlib + backend. However, it had the nasty side-effect of discarding alpha when + targeting Window surfaces. The correct solution is to simply correct the + Pixmap of the desired depth and render a matching pattern onto the + surface - i.e. a reversal the current acquire -> clone. See the + forthcoming revised xcb backend on how I should have done it originally. + + src/cairo-directfb-surface.c | 2 -- + src/cairo-gl-surface.c | 4 +--- + src/cairo-glitz-surface.c | 3 --- + src/cairo-image-surface.c | 4 ---- + src/cairo-pattern.c | 15 +++------------ + src/cairo-quartz-surface.c | 1 - + src/cairo-surface-fallback-private.h | 1 - + src/cairo-surface-fallback.c | 3 +-- + src/cairo-surface.c | 14 ++++---------- + src/cairo-xlib-surface.c | 18 +----------------- + src/cairoint.h | 4 ---- + src/test-fallback-surface.c | 1 - + src/test-fallback16-surface.c | 2 -- + 13 files changed, 10 insertions(+), 62 deletions(-) + +commit 6a19a82efd3afe8fb8bd30e5362b247de8efe159 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 16 08:43:21 2009 +0100 + + [image] Clone the format for a similar surface with identical content + + Honour the incoming surface format when we are asked to create a similar + surface with identical content. The goal of + cairo_surface_create_similar() is to create an intermediate with similar + characteristics to the original that can be used in place of the + original and be quick to copy to the original. Matching the format for + the same content, ensures that the blits between the two need only be a + memcpy. + + src/cairo-image-surface.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit ed94d7caad6b851f6f80fa4d67441ad0387a8cd4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 16 08:38:24 2009 +0100 + + [fallback] Create intermediate surface with same content. + + The goal is to create a similar surface with an identical format to + maximise performance in the subsequent blit, e.g. the xlib backend could + make the similar surface with an identical depth and so use the core + protocol, or the image surface could indeed make an identical copy so + that pixman only has to do a fast memcpy. As there is no direct method + to specify such a clone, we ask the backend for a similar surface of + identical content, and trust that the semantics are clear enough for the + intent to obvious. + + src/cairo-surface-fallback.c | 12 +++++++----- + 1 files changed, 7 insertions(+), 5 deletions(-) + +commit c739940137c4ffc6cc727ea30afc0e92f7ab1e80 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 16:24:44 2009 -0700 + + Increment version to 1.9.5 + + Just after the 1.9.4 snapshot. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ad6334b9870c63e641b531d6e910c084b587d0f9 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 15:33:20 2009 -0700 + + Add mising images to REFERENCE_IMAGES list. + + Again, the kind of thing that only gets fixed at release time. + But at least we have a nice test for this. + + test/Makefile.am | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit cdad5e10768978b11088f82858a1e6e0037dc0a7 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 14:58:39 2009 -0700 + + Mark in-fill-empty-trapezoid as an XFAIL test. + + Otherwise, it was disrupting my attempts to release a snapshot, (since + it doesn't respect CAIRO_TEST_TARGET=" " and not run like most of the + tests do). + + test/Makefile.am | 5 +++++ + test/in-fill-empty-trapezoid.c | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit b0f309abb33fb7e068199c941835af0217d8d1fc +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 14:40:22 2009 -0700 + + Update version to 1.9.4 + + In preparation for the 1.9.4 snapshot. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3b113275f8b081685227fc073c03f64bb1a229d3 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 14:17:30 2009 -0700 + + Remove stale references to non-existant reference images. + + This is just one of those things that we don't get right until + someone tries running "make distcheck". + + test/Makefile.am | 7 ------- + 1 files changed, 0 insertions(+), 7 deletions(-) + +commit 37078b262a268179f8b7a3dfdc263e1a403daa7d +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 15 14:11:04 2009 -0700 + + NEWS: Update with correct data for 1.9.4 snapshot + + NEWS | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit d5609ca04ecc5f5e3d5cef8ca0e67fa98cd653de +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Oct 15 17:47:33 2009 +0300 + + [build] Check compiler flags using AC_TRY_LINK instead of AC_TRY_COMPILE. + + Turns out we were passing suncc warning suppression flags to gcc + by mistake since -e<entry point> is actually a valid option for + gcc. This caused the -erroff=E_ENUM_TYPE_MISMATCH_ARG and other + -erroff options to be passed to the linker. In the normal case + of a GNU ld linker this doesn't matter since it ignores bogus + entry points, but the GNU gold linker replaces a bogus entry + point with NULL. This patch makes the CAIRO_CC_TRY_FLAG() + check stricter by testing that the flag doesn't interfere with + linking executables. + + build/aclocal.cairo.m4 | 19 ++++++++----------- + 1 files changed, 8 insertions(+), 11 deletions(-) + +commit 79190d89853958ee8252440d35a662fabf122afd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 15 14:05:37 2009 +0100 + + [surface] Avoid double application of device offset when calling fill() + + _cairo_surface_fallback_paint() attempts to avoid a clipped operation if + we can convert the paint into a fill of the clipmask. However by calling + _cairo_surface_fill() we incur a double application of device offset to + the source, triggering various failures. + + Company spotted this and managed to extract an excellent minimal test + case, test/clip-device-offset. This commit fixes that failure. + + src/cairo-surface-fallback.c | 41 +++++++++++++++++++++++++++++++++++------ + 1 files changed, 35 insertions(+), 6 deletions(-) + +commit ade55037ffa596b690c6a1051394589f76eb1f48 +Author: Benjamin Otte <otte@gnome.org> +Date: Thu Oct 15 13:19:11 2009 +0100 + + [test] Add clip-device-offset + + Exercises a bug demonstrated by WebKit with clipping + device offsets. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/clip-device-offset.argb32.ref.png | Bin 0 -> 175 bytes + test/clip-device-offset.c | 79 ++++++++++++++++++++++++++++++++ + test/clip-device-offset.rgb24.ref.png | Bin 0 -> 168 bytes + 5 files changed, 82 insertions(+), 0 deletions(-) + +commit dac73d260a9b9a848bb97436ad84081c51629511 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 15 12:18:47 2009 +0100 + + [build] Link against pthread-stubs + + Avoid pulling in the real pthread library if the application is single + threaded and not using pthreads, by linking against pthread-stubs + instead. + + build/configure.ac.features | 1 + + configure.ac | 8 +++++++- + src/cairo-mutex-impl-private.h | 2 +- + test/Makefile.am | 4 ++++ + test/cairo-test-trace.c | 10 +++++----- + test/cairo-test.c | 6 +++--- + util/cairo-trace/Makefile.am | 2 +- + 7 files changed, 22 insertions(+), 11 deletions(-) + +commit ef9286751d8346ecb803bfb5916581ee4dfc84db +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 13 16:10:39 2009 +0100 + + [atomic] Fallback to libatomic-ops-dev + + Use libatomic-ops-dev in preference to mutex-based atomics, if we do not + have the builtin atomic intrinsics available. + + build/aclocal.cairo.m4 | 10 ++++++++++ + src/cairo-atomic-private.h | 41 ++++++++++++++++++++++++++++++++++++----- + src/cairo-surface.c | 4 ++-- + src/cairo-xlib-private.h | 2 +- + src/cairo-xlib-screen.c | 16 +++++++++------- + src/cairo.c | 10 +++++----- + 6 files changed, 63 insertions(+), 20 deletions(-) + +commit d85eda97dd9116f51e0255b29652f4b52ba4f8e9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 13 14:14:55 2009 +0100 + + [pattern] Compute extents for gradients + + As noted in the comments we could also compute the pattern extents for + gradients with CAIRO_EXTEND_NONE under certain circumstances, i.e. + radial gradients and device axis aligned linear gradients. + + src/cairo-pattern.c | 184 +++++++++++++++++++++++++++++++++++---------------- + 1 files changed, 126 insertions(+), 58 deletions(-) + +commit 3a83bc8617dae3cc2bfea862f252338463871648 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 2 23:28:10 2009 +0930 + + PDF: Fix regression caused by 1ae5a419 + + Bug 24240 acroread prints error message when printing + + src/cairo-pdf-surface.c | 12 ++++++++---- + 1 files changed, 8 insertions(+), 4 deletions(-) + +commit 91a4f59f135dd42a28e14be55d1f08712c0c3097 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Oct 2 23:11:54 2009 +0930 + + PDF: Fix regression caused by 1ae5a419 + + Bug 24240 first char missing when printing a PDF. + + src/cairo-scaled-font-subsets.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 39284159234d5318c90fa3a72178cd3d14fe0fbb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 30 20:11:12 2009 +0100 + + [boilerplate/xcb] Fix pixmap depth + + All the error checking, finally pointed out that I was creating a pixmap + with the wrong depth! Oops. + + boilerplate/cairo-boilerplate-xcb.c | 19 ++++++++++++++++--- + 1 files changed, 16 insertions(+), 3 deletions(-) + +commit e9bc2180d73acc7133d715ed4380ed20fb4364c0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 30 19:50:44 2009 +0100 + + [xcb] Deferred error checking. + + XCB avoids the dreaded abort on XError mechanism by forcing the client + to perform deferred error checking. So do so. This allows us to combine + the fire-and-forget rendering model with accurate error checking, + without killing the client or mixing our errors with theirs. + + XCB for the win! + + boilerplate/cairo-boilerplate-xcb.c | 17 + + src/cairo-freelist-private.h | 5 + + src/cairo-freelist.c | 33 ++ + src/cairo-xcb-surface.c | 712 +++++++++++++++++++++++------------ + 4 files changed, 521 insertions(+), 246 deletions(-) + +commit 8e4e0aa7ee5b4e0963409cda825705a09aae61e1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 30 17:50:09 2009 +0100 + + [boilerplate/xcb] Check for connection errors during test + + boilerplate/cairo-boilerplate-xcb.c | 51 ++++++++++++++++---- + test/cairo-test.c | 88 +++++++++++++++++----------------- + 2 files changed, 84 insertions(+), 55 deletions(-) + +commit 395555b116a497c99b9e8365a202377c344c0c45 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 30 00:37:36 2009 +0100 + + [xlib] Suppress warning that should never have been. + + src/cairo-xlib-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 42ea356c0393288eea16eb5c591fa51009f85cb9 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Sep 30 21:21:42 2009 +0930 + + Fix truetype subset crash + + Bug 24213 + + src/cairo-truetype-subset.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 6809e1216119e16c5be236418dc560d2e9bf854d +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Sep 30 08:54:19 2009 +0200 + + [API] Make _cairo_meta_surface_replay() private again + + Replaying a meta surface can be achieved by using it as a source for a + cairo_paint() so exporting a separate API is unnecesary and confusing. + So after consulting Chris and Carl, we decided to remove the function + again. + + NEWS | 1 - + src/cairo-meta-surface-private.h | 5 +++- + src/cairo-meta-surface.c | 39 ++++++++++++++++--------------------- + src/cairo-paginated-surface.c | 4 +- + src/cairo-script-surface.c | 6 ++-- + src/cairo-surface.c | 4 +- + src/cairo-svg-surface.c | 2 +- + src/cairo-type3-glyph-surface.c | 4 +- + src/cairo-user-font.c | 2 +- + src/cairo-vg-surface.c | 2 +- + src/cairo-xml-surface.c | 2 +- + src/cairo.h | 4 --- + test/cairo-test-trace.c | 8 +++++- + util/cairo-trace/trace.c | 22 --------------------- + 14 files changed, 40 insertions(+), 65 deletions(-) + +commit f8c49b4187a32b60408b23b2c2abce1778a8dc95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 29 03:02:40 2009 +0100 + + [xlib] XRequest bread crumbing + + Add bread crumbs in the form of NoOperations that can be parsed by + xtrace and very useful when debugging protocol/server errors. + + src/cairo-xlib-surface.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 57 insertions(+), 0 deletions(-) + +commit 1c4f61ec5068a5935eb6d5dd1d6f2c0275b70529 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 29 03:01:37 2009 +0100 + + [tessellator] Invalid conversion of list head to edge. + + When scanning for collinear right edges, we need to check that we do not + go beyond the end of the array. + + src/cairo-bentley-ottmann-rectangular.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit f23ae97e307f00a79cbf2e01f9ca20da29ea87c3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 24 16:30:57 2009 +0100 + + [perf] Support parsing reports from stdin + + perf/cairo-perf-compare-backends.c | 22 ++++++++++++---------- + perf/cairo-perf-report.c | 29 +++++++++++++++++++---------- + 2 files changed, 31 insertions(+), 20 deletions(-) + +commit 50163a9fafa77dd1135ca5b6b03c7ec5619687c1 +Author: Benjamin Otte <otte@gnome.org> +Date: Tue Sep 29 00:23:12 2009 +0200 + + [xlib] Set proper bpp when computing format from masks + + Fixing omission in caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f + + src/cairo-xlib-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit a160c8c4009e069db53bec79abd8926231de9a7f +Author: Benjamin Otte <otte@gnome.org> +Date: Mon Sep 28 23:52:14 2009 +0200 + + [xlib] Handle 24bpp formats during dithering + + src/cairo-xlib-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 9e89de813516c48baed67a4d18325971cd42cd4a +Author: Benjamin Otte <otte@gnome.org> +Date: Mon Sep 28 23:51:14 2009 +0200 + + [image] Fix masks computation for BGRx format + + Patch originally by Mark Kettenis + + src/cairo-image-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 4b2c74e28531e403a9538f20a3ace7b114f9bbae +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Sep 28 22:57:10 2009 +0930 + + PS: Use standard page size names for some common sizes + + Some PS viewers like gv use the label in the %PageMedia DSC comment as + the displayed page size. + + The page names and sizes were obtained from the list at: + + http://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html + + src/cairo-ps-surface.c | 66 +++++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 62 insertions(+), 4 deletions(-) + +commit db5e3db0a9b218bebad6921a95d5244047050348 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Sep 25 23:07:56 2009 +0930 + + PS: Add DocumentMedia/PageMedia DSC comments + + Provide default DocumentMedia and PageMedia DSC comments if the user + does not specify them using cairo_ps_surface_dsc_comment(). This is + required so that PostScript viewers such as gv use the correct page + size. + + src/cairo-ps-surface-private.h | 1 + + src/cairo-ps-surface.c | 88 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 89 insertions(+), 0 deletions(-) + +commit caa9eed4646e78a62ffb49d9c4f48c0b351c7a7f +Author: Benjamin Otte <otte@gnome.org> +Date: Thu Sep 24 23:42:05 2009 +0200 + + [xlib] Handle case in draw_image() where pixman format is not RGB + + When an image cannot be expressed as masks, its data cannot be used in + an XImage. In that case, we use pixman to copy the image to the desired + format. + + src/cairo-xlib-surface.c | 50 ++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 44 insertions(+), 6 deletions(-) + +commit 9f5fe6711566ee34afe210f271f1c5a061efa745 +Author: Benjamin Otte <otte@gnome.org> +Date: Thu Sep 24 22:57:39 2009 +0200 + + [image] Return cairo_bool_t from _pixman_format_to_masks + + Return FALSE when the pixman format does not support ARGB masks. In + particular, return FALSE for YUV formats. + + src/cairo-image-surface.c | 21 ++++++++++----------- + src/cairoint.h | 2 +- + 2 files changed, 11 insertions(+), 12 deletions(-) + +commit 120247ac55d92d9c9b24fad45c765d16e692f355 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Sep 24 23:02:38 2009 +0930 + + Add EPS test + + This test demonstrates a regression in the EPS output since 1.8.8. + The ps-eps.ref.eps was created with 1.8.8. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/ps-eps.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ + test/ps-eps.ref.eps | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 172 insertions(+), 0 deletions(-) + +commit c8a4f486712eba4ad0ccbf5ae3b18920137d5b1b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 23 18:08:34 2009 +0100 + + [image] Do not trust user supplied data to be clear + + Gah, more important than the whitespace was the reversal of is_clear... + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 03bce099eae68643979e5742b2703b2b2e835cca +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 23 17:56:00 2009 +0100 + + [image] Tweak coding style + + Whitespace spam. + + src/cairo-image-surface.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit ab558fa843accc440686f7b8eda197277a6a4eb2 +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Sep 23 17:40:17 2009 +0200 + + [image] Move setting of is_clear to _create_with_pixman_format() + + Simplifies code and ensures other users of that function don't run into + the same bug. + + src/cairo-image-surface.c | 18 ++++++------------ + 1 files changed, 6 insertions(+), 12 deletions(-) + +commit 07ee9cfbf07deba228e73d26b419a4e130de24e3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 23 15:33:23 2009 +0100 + + [image] Do assumption initial user data is cleared. + + Benjamin Otte pointed out the error of my ways that a clear on a + cairo_image_surface_create_for_data() was not working. This is because I + modified the image surface to skip clears when it knows the target data + has been cleared. This flag must be reset when the user interacts with + the surface, such as providing the initial surface data. + + src/cairo-image-surface.c | 26 ++++++++++++++++++++++---- + 1 files changed, 22 insertions(+), 4 deletions(-) + +commit 9948b5180aa4312b3184d9ba46e9ad6f0d8e700c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 22 18:20:03 2009 +0100 + + [test] Revamp surface-source + + Include a translucent region in the source that exercises the xlib bug + that I'm trying to fix. Hmm. + + test/Makefile.am | 18 ++++++++---- + test/glitz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/glitz-surface-source.ref.png | Bin 268 -> 0 bytes + test/glitz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/image-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/image-surface-source.ref.png | Bin 332 -> 0 bytes + test/image-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/pdf-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/pdf-surface-source.ref.png | Bin 268 -> 0 bytes + test/pdf-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/ps-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/ps-surface-source.ref.png | Bin 268 -> 0 bytes + test/ps-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/quartz-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/quartz-surface-source.ref.png | Bin 332 -> 0 bytes + test/quartz-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/surface-source.c | 37 +++++++++++++++++++++++++- + test/svg-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/svg-surface-source.ref.png | Bin 268 -> 0 bytes + test/svg-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + test/test-fallback16-surface-source.ref.png | Bin 268 -> 0 bytes + test/xlib-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + test/xlib-surface-source.ref.png | Bin 268 -> 0 bytes + test/xlib-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + 24 files changed, 47 insertions(+), 8 deletions(-) + +commit 941d3693fac831c4ce8c61cbac7c77b566b97611 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 22 14:43:45 2009 +0100 + + [test] Exercise push-group-color. + + Hunting for a known bug in the xlib backend where it invalidly converts + an argb32 source to rgb24. However, this does not appear to be that bug, + but still a useful exercise nevertheless. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/push-group-color.c | 141 ++++++++++++++++++++++++++++++++++++ + test/push-group-color.ref.png | Bin 0 -> 2902 bytes + test/push-group-color.xlib.ref.png | Bin 0 -> 2964 bytes + 5 files changed, 144 insertions(+), 0 deletions(-) + +commit 30f45ce5f7d639dd5a0b60f544b3535e3bc2105d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 22 15:15:47 2009 +0100 + + [gl] Handle an absent visual. + + If we cannot find the correct visual for the fbconfig, return an error + instead of crashing. The difference is subtle, granted. + + src/cairo-gl-surface.c | 8 ++++++++ + src/cairo-glx-context.c | 7 ++++--- + 2 files changed, 12 insertions(+), 3 deletions(-) + +commit e74cb7fa3eb9a9bcdeb298d969b70fd99ba50f3d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:44:34 2009 +0930 + + win32-printing: correct the use of the CAIRO_HAS_WIN32_FONT #ifdef + + it was wrapping code required for non windows fonts. + + src/cairo-win32-printing-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3dd2cc8f6d84253f93affecd3022c9fe4a25d60f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:40:53 2009 +0930 + + win32-printing: fix meta surface pattern regression caused by bed2701e + + src/cairo-win32-printing-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 7658635c654b694b516e5dd44a43611d94e91abd +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:36:20 2009 +0930 + + win32-printing: Allow GDI CTM with scale < 1 to be set + + To better support creating EMF files with the win32-printing surface, + allow a GDI CTM with scale < 1 to be used. + + http://lists.cairographics.org/archives/cairo/2009-September/018110.html + + src/cairo-win32-printing-surface.c | 90 ++++++++++++++++++++++++++++-------- + src/cairo-win32-private.h | 2 + + 2 files changed, 73 insertions(+), 19 deletions(-) + +commit 19c091670302fd23a676e680308df49a4ba06687 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:35:33 2009 +0930 + + Make win32 fonts work in EMF files created by win32-printing + + src/cairo-win32-printing-surface.c | 37 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 37 insertions(+), 0 deletions(-) + +commit f01a54266d57763635f984982bec001a393d8aa2 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:34:56 2009 +0930 + + Fix compiler warnings in win32-surface + + src/cairo-win32-surface.c | 12 +++++++++--- + 1 files changed, 9 insertions(+), 3 deletions(-) + +commit 23663e2078e34659af43bd0e62bb1fb7a94cc71e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:34:21 2009 +0930 + + Fix compiler error on cygwin + + src/cairo-win32-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 7ecd413fab7c55918c6f3c4c272b5e8b5aa89aa7 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:33:14 2009 +0930 + + Add WINVER defines to cairo-mutex-impl-privaye.h + + The WINVER defines should always be defined before including windows.h + + src/cairo-mutex-impl-private.h | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 605ec22ab5103e16052591517f86fe558133fb8e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Sep 22 22:17:27 2009 +0930 + + Use _WIN32 to check for win32 mutex + + Commit 535bcaa1 moved pthread after win32 to fix mingw build + problems. However this breaks cygwin builds. + + On cygwin HAVE_WINDOWS_H is defined but _WIN32 is not. This was + causing windows.h to be included which defines _WIN32. As a result the + win32 code in cairo-misc.c was being compiled but the win32 declaration + in cairint.h was not included. + + Fix this by using _WIN32 to enable the win32 mutex functions since + _WIN32 is defined by mingw, visual C++, and winegcc, but not + cygwin. On cygwin, posix functions are preferred as it is a unix + emulation environment. + + src/cairo-mutex-impl-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e00d0627494a4b15ed3b74a704695ca8b81a350e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 21 13:50:00 2009 +0100 + + [xlib] Fix recent bug in unbounded trapezoids + + Gah! I had believed that the dst extents and the clip were correct to + enable unbounded fixup for the unbounded trapezoids. I was wrong, so I + need to requery the trapezoid extents. As this information is already + known, I should update the interface to pass along all relevant + information. + + src/cairo-surface.c | 23 ++++++++++------------- + src/cairo-xlib-surface.c | 32 +++++++++++++++++++------------- + 2 files changed, 29 insertions(+), 26 deletions(-) + +commit 378b1e73d9f27e9b54ea01b10e588b361848d0cd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 21 03:10:53 2009 +0100 + + [fallback] Special case single composite rectangle + + Avoid the overhead of region-from-traps extraction for the very frequent + case of using a single (possibly clipped) rectangle with a pattern source. + + src/cairo-surface-fallback.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 42 insertions(+), 0 deletions(-) + +commit 35daf95db8aa4f0c254891f180aa4996dd464a60 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 21 03:31:22 2009 +0100 + + [xlib] Trim a few redundant steps when uploading glyphs + + Cleanup the glyph coercion routines to avoid the temporary cairo_t (as + we can just cairo_surface_paint() directly). + + src/cairo-xlib-surface.c | 23 ++++++----------------- + 1 files changed, 6 insertions(+), 17 deletions(-) + +commit 9b7c5d95055c4ea5da46c53263050d6ec1331c08 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 20 18:46:19 2009 +0100 + + [xlib] Cleanse creation of similar surfaces. + + Reduce two nearly identical routines to one. + + src/cairo-xlib-surface.c | 197 +++++++++++++++++++++------------------------- + 1 files changed, 91 insertions(+), 106 deletions(-) + +commit 878cef62b525e9f13ab2a8ab562ba8b6628aaa1f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 20 18:45:09 2009 +0100 + + [xlib] Interim CAIRO_DEBUG variable to specify xrender level + + Use CAIRO_DEBUG=xrender-version=x.y to override what the server reports. + Useful to test cairo's behaviour against older servers. + + src/cairo-xlib-display.c | 23 +++++++++++++++++++---- + 1 files changed, 19 insertions(+), 4 deletions(-) + +commit 531e8045980c966b8e51df933721f9b86c6b1539 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Sep 18 12:17:46 2009 -0400 + + Add a description of how we compute the spline_error_squared. + + src/cairo-spline.c | 17 +++++++++++------ + 1 files changed, 11 insertions(+), 6 deletions(-) + +commit f4336352405ee7c184d45a73cdd6c1a0526843db +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Sep 16 15:46:14 2009 -0400 + + Set LC_ALL=C instead of LANG=C + + doc/public/check-doc-coverage.sh | 4 +++- + doc/public/check-doc-syntax.sh | 3 ++- + src/check-def.sh | 3 ++- + src/check-doc-syntax.sh | 3 ++- + src/check-headers.sh | 3 ++- + src/check-plt.sh | 3 ++- + src/check-preprocessor-syntax.sh | 3 ++- + 7 files changed, 15 insertions(+), 7 deletions(-) + +commit 56c9b2de7a2b93b2e0c59cf98326d8c0d4d508ba +Author: Sebastian Dröge <sebastian.droege@collabora.co.uk> +Date: Tue Sep 15 17:26:59 2009 +0200 + + Use __uint128_t and __int128_t if available + + GCC uses a peculiar name for a real 128-bit integer on x86-64. + + Speedups, xlib on a gm45 + ======================== + poppler 41246.56 -> 35102.82: 1.18x speedup + swfdec-youtube 12623.01 -> 11936.79: 1.06x speedup + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + build/configure.ac.system | 2 +- + src/cairo-wideint-private.h | 1 + + src/cairo-wideint-type-private.h | 6 +++ + src/cairo-wideint.c | 91 +++++++++++++++++-------------------- + 4 files changed, 50 insertions(+), 50 deletions(-) + +commit ccf84a8883ebb8d2ee8f55eb53da4dfc96887de0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 15 14:22:57 2009 +0100 + + [perf] Reorganise cairo-perf + + In preparation to creating a new hub to control performance measuring + and reporting, move the current cairo-perf out of the way. + + perf/.gitignore | 3 + + perf/Makefile.am | 84 +- + perf/box-outline.c | 102 - + perf/cairo-perf-cover.c | 339 --- + perf/cairo-perf-diff | 2 +- + perf/cairo-perf-micro.c | 596 +++++ + perf/cairo-perf.c | 596 ----- + perf/composite-checker.c | 114 - + perf/dragon.c | 249 -- + perf/fill.c | 119 - + perf/glyphs.c | 99 - + perf/intersections.c | 157 -- + perf/long-dashed-lines.c | 71 - + perf/long-lines.c | 145 -- + perf/mask.c | 299 --- + perf/micro/box-outline.c | 102 + + perf/micro/cairo-perf-cover.c | 339 +++ + perf/micro/composite-checker.c | 114 + + perf/micro/dragon.c | 249 ++ + perf/micro/fill.c | 119 + + perf/micro/glyphs.c | 99 + + perf/micro/intersections.c | 157 ++ + perf/micro/long-dashed-lines.c | 71 + + perf/micro/long-lines.c | 145 ++ + perf/micro/mask.c | 299 +++ + perf/micro/mosaic.c | 173 ++ + perf/micro/mosaic.h | 4387 ++++++++++++++++++++++++++++++++++++ + perf/micro/paint-with-alpha.c | 49 + + perf/micro/paint.c | 48 + + perf/micro/pattern_create_radial.c | 103 + + perf/micro/pythagoras-tree.c | 91 + + perf/micro/rectangles.c | 118 + + perf/micro/rounded-rectangles.c | 141 ++ + perf/micro/spiral.c | 349 +++ + perf/micro/stroke.c | 97 + + perf/micro/subimage_copy.c | 77 + + perf/micro/tessellate.c | 178 ++ + perf/micro/text.c | 66 + + perf/micro/twin.c | 56 + + perf/micro/unaligned-clip.c | 70 + + perf/micro/world-map.c | 116 + + perf/micro/world-map.h | 196 ++ + perf/micro/zrusin-another.h | 668 ++++++ + perf/micro/zrusin.c | 95 + + perf/mosaic.c | 173 -- + perf/mosaic.h | 4387 ------------------------------------ + perf/paint-with-alpha.c | 49 - + perf/paint.c | 48 - + perf/pattern_create_radial.c | 103 - + perf/pythagoras-tree.c | 91 - + perf/rectangles.c | 118 - + perf/rounded-rectangles.c | 141 -- + perf/spiral.c | 349 --- + perf/stroke.c | 97 - + perf/subimage_copy.c | 77 - + perf/tessellate.c | 178 -- + perf/text.c | 66 - + perf/twin.c | 56 - + perf/unaligned-clip.c | 70 - + perf/world-map.c | 116 - + perf/world-map.h | 196 -- + perf/zrusin-another.h | 668 ------ + perf/zrusin.c | 95 - + 63 files changed, 9414 insertions(+), 9411 deletions(-) + +commit 4152cd90e25ffa9d2a3683c790bd2891a58c52de +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Sep 14 14:29:01 2009 +0300 + + [autoconf] Comment on the SIZEOF_VOID__ -> SIZEOF_VOID_P workaround. + + Explain where the weird SIZEOF_VOID__ comes from. + + src/cairo-atomic-private.h | 2 ++ + util/cairo-trace/trace.c | 2 ++ + 2 files changed, 4 insertions(+), 0 deletions(-) + +commit cd94bf8bf30de9aa8dfec1a06a7ef3386944c974 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Sep 14 03:41:42 2009 -0600 + + [trace] Look harder for the cairo-trace.so library. + + On OpenBSD the convention is to not use symlinks from + unversioned library names to versioned library names. + This breaks cairo-trace because it looks for cairo-trace.so + explicitly, but on OpenBSD only cairo-trace.so.0.0 is + installed. + + The right thing to do is probably to source the cairo-trace.la + file and look for a file name there somehow. Instead this commit + just looks for a likely looking file or symlink in the install + directory. + + util/cairo-trace/cairo-trace.in | 17 ++++++++++++++++- + 1 files changed, 16 insertions(+), 1 deletions(-) + +commit a343c8c42d3adc8f52afd09bdfbbcfd5299df49e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Sep 14 02:33:26 2009 -0600 + + [trace] Don't use pthread_key_delete. + + On OpenBSD libc doesn't provide pthread stubs like glibc on Linux + or newer libcs from FreeBSD. However libX11 does provide a stubs + for a subset of the pthread functions (formerly in libXThrStub, + now moved into libX11 proper), but pthread_key_delete() is not + one of the stubbed ones. So, on OpenBSD cairo's non-linking of + libpthread accidentally works as long as the xlib-surface is enabled, + which is nearly always the case. + + This patch makes trace.c stand at the same precipice as cairo itself + by reverting to only a subset of the pthreads functions stubbed by + libX11. + + util/cairo-trace/trace.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit cf0fed2191c2b5ebce8855def1dd302ccf8e039a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 17:35:29 2009 -0600 + + [build] Check for dlsym in both libdl and libc. + + The BSDs have dlsym() in libc rather than libdl. + + boilerplate/cairo-boilerplate.c | 4 ++-- + configure.ac | 12 +++++++----- + util/cairo-trace/Makefile.am | 6 +++++- + 3 files changed, 14 insertions(+), 8 deletions(-) + +commit 1c7ac6c47addd6825c4f49f514fe3ffb708e3813 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 17:56:56 2009 -0600 + + [build] Work around autoconf void* -> VOID__ name conversion bug. + + The autoconf shipping with OpenBSD 4.5 converts sizeof(void*) + to SIZEOF_VOID__ rather than SIZEOF_VOID_P. Work around that + by defining SIZEOF_VOID_P if required. + + src/cairo-atomic-private.h | 4 ++++ + util/cairo-trace/trace.c | 4 ++++ + 2 files changed, 8 insertions(+), 0 deletions(-) + +commit 12470fd7010ea0748c8dcc9014d1cd0f52f51a3b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 14 10:36:08 2009 +0100 + + [configure] Setup GL CFLAGS before checking for GLX + + configure.ac | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 9c2790ccc48392bfe039626ebb383070aa18fe56 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 14 10:08:57 2009 +0100 + + [build] Add a default message for when GLEW isn't built + + And it appears I touched the build system again and autoregenerated the + feature headers. + + boilerplate/Makefile.win32.features | 8 -------- + build/Makefile.win32.features-h | 1 - + configure.ac | 5 +++-- + src/Makefile.win32.features | 8 -------- + util/cairo.modules | 1 + + 5 files changed, 4 insertions(+), 19 deletions(-) + +commit 6d4f3c40eff7d070b1c9759038444928c6754efe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 14 09:19:10 2009 +0100 + + Add a private copy of GLEW + + This appears to be the simplest mechanism to build libglew at the moment - + should a system copy be unavailable. Fortunately libglew is now distributed + under a permissive licence. + + If you want to pass 'make -C src check' you have to use the system copy, + or spend quite a bit of time cairo-fying libglew. + + boilerplate/Makefile.win32.features | 8 + + build/Makefile.win32.features-h | 1 + + build/configure.ac.features | 1 + + configure.ac | 19 +- + src/Makefile.am | 2 + + src/Makefile.sources | 3 + + src/Makefile.win32.features | 8 + + src/glew/GL/glew.h |12262 +++++++++++++++++++++++++++++++++++ + src/glew/GL/glxew.h | 1397 ++++ + src/glew/LICENSE.txt | 73 + + src/glew/glew.c |12180 ++++++++++++++++++++++++++++++++++ + util/cairo.modules | 10 +- + 12 files changed, 25955 insertions(+), 9 deletions(-) + +commit 9ad26f74b0059645d865a20c387fa4bd460cabc8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 13 23:16:57 2009 +0100 + + [configure] Fallback to detect OpenGL headers + + When not using mesa, we can not rely on a pkgconfig file, so just rely on + the presence of the OpenGL headers instead. + + configure.ac | 11 ++++++++--- + 1 files changed, 8 insertions(+), 3 deletions(-) + +commit 71c3b2888cc81e6d55782388d14bb8d806e77d07 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 20:24:29 2009 +0300 + + [win32] Sync Makefile.win32.features. + + Ooops.. wasn't sure if I should commit this or not. + + build/Makefile.win32.features | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit ba21f213560fa239a02ae28af4eb1d3a6b7254e5 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 18:21:38 2009 +0100 + + [trace] Don't trace internal cairo calls on Solaris. + + On various configurations of Solaris cairo-trace likes to trace + internal calls to the API from within cairo and cairo-trace itself. On + Linux the slim_hidden_proto stuff avoids this by name mangling and + symbol alias magic, but on Solaris that doesn't work so we're left + with either no hidden symbols at all or using normal ELF hidden symbol + attributes, but neither of those prevent internal calls to cairo from + being traced of course. + + This commit provides a per-thread entry/exit trace counter for use + when we can't use name mangling to hide internal API calls. As a + side-effect it may hide actual client API calls from callback + functions called by cairo, but such use cases ought to be rare. + + util/cairo-trace/trace.c | 465 ++++++++++++++++++++++++++++++++-------------- + 1 files changed, 327 insertions(+), 138 deletions(-) + +commit f5bcb2f36e7dba9cfba5d697e1401dcd00603812 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 12:47:19 2009 +0100 + + [build] Enable building cairo-trace on Solaris. + + Solaris supports LD_PRELOAD too! + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ce8c842a70d3f23527dcbd889b022103483341f2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 12:53:07 2009 +0100 + + [trace] Make cairo-trace and its symbol-lookup automatically configured. + + The build shouldn't fail if we can't make our optional performance + tools. + + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2fb59a69f4509c2116f16bd6d376f35e3e2eb709 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 14:27:03 2009 +0100 + + [trace] Don't rely on the constructor attribute to initialise the tracer. + + Use pthread_once() at cairo API entry points to initialise the library + if required. This side steps the issues with the __constructor__ + attribute vs _init()/_fini() on Solaris and different tracer/tracee + runtimes which result in the constructors not being run in + cairo-trace.so. + + util/cairo-trace/trace.c | 176 +++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 174 insertions(+), 2 deletions(-) + +commit 18a441984b649f558c6478f24a7987941acadbe1 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 13:53:27 2009 +0100 + + [trace] Don't try and propagate a void result. + + The pattern + + return <function returning void>( ... ); + + is a gccism not supported by Sun Studio. + + util/cairo-trace/trace.c | 136 ++++++++++++++++++++++++---------------------- + 1 files changed, 70 insertions(+), 66 deletions(-) + +commit fee5c58c6caecdbdb387fe39bd6ed94faf7f6ae9 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Sep 13 13:09:47 2009 +0100 + + [trace] Avoid warnings from assigning a void pointer to a function pointer. + + The Sun Studio compiler complains a *lot* when assigning the result + of dlsym to a function pointer. Cast the result to the proper + type first.:w + + util/cairo-trace/trace.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 19881012cb31ec2aebf556e2c25b53e8387dc689 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 13 16:36:12 2009 +0100 + + [image] Add pixel masks for BGRA formats + + pixman introduced the BGRA pixel type not too long ago, and so we need to + update our pixman_format_code_t to cairo_format_masks_t translator. + + src/cairo-image-surface.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit f8a8f297f298d81899803a1b2bbca007418408b5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 13 10:58:59 2009 +0100 + + [trace] Stray trailing ';' in bswap macros + + util/cairo-trace/trace.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit f851009ec76ee2290ffbc3f55edbf3cc16aff488 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 13 10:57:42 2009 +0100 + + [trace] Compile without lookup-symbol + + And check compilation with --disable-symbol-lookup + + util/cairo-trace/trace.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit 6cb3ff9c1943c58f5b6892af3f18f6aaa24494b6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 13 10:52:14 2009 +0100 + + [configure] --enable-symbol-lookup + + There you go Joonas, I don't always ignore your suggestions! This is + simple patch to allow the user to disable symbol loops in case the + auto-detection fails on some obscure (perhaps OpenBSD) platform. Or in + case the user really wants to trim a few bytes from a library only used + during tracing! + + boilerplate/Makefile.win32.features | 7 +++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + build/configure.ac.features | 1 + + configure.ac | 6 ++++++ + src/Makefile.win32.features | 7 +++++++ + util/cairo-trace/Makefile.am | 14 +++++++++----- + 7 files changed, 34 insertions(+), 5 deletions(-) + +commit 556d064f4eb3625022f0d99461929ff3fafc9c71 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 11 15:35:27 2009 +0100 + + [test] Typos in README from previous commit + + test/README | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 43ecde2d22c5a8c591ac83f9a82c2bf83af484fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 11 15:15:22 2009 +0100 + + [test] Add Debian packages for fonts + + Mention which .deb provides the required fonts. + + test/README | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 33be73dfb76c26e3bb0ab59b2f570d00d9c7be62 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 11 14:59:58 2009 +0100 + + [xlib] Fix big-line. + + Project lines that exceed the 16.16 limits onto the XFixedLine, as we know + that top/bottom must fit within the confines of the surface and so will be + less than 16 bits. + + Sadly this is a run-on patch that also does: + 1. Make FillTiled the default for new GCs. + 2. Stores extend mode as opposed to repeat, and thereby cleaning up some + inconsistent code. + 3. Remove the special casing for unbounded trapezoids, as it is redundant + with the polygon clipping. + 4. Tidy the logic for deciding when to use the core protocol + (_categorize_composite_operation) + + src/cairo-xlib-screen.c | 6 +- + src/cairo-xlib-surface-private.h | 2 +- + src/cairo-xlib-surface.c | 402 +++++++++++++++----------------------- + 3 files changed, 164 insertions(+), 246 deletions(-) + +commit 6960162c5eae30e2d48992023be35e3dbf502a03 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 11 14:56:17 2009 +0100 + + [xlib] Discard clip if larger than glyph extents + + Implement cheap calculation of glyph extents to see whether we can discard + the clip region. This is effective around 50% of the time for firefox (and + makes the xtrace so much neater). + + src/cairo-scaled-font.c | 36 ++++++++++++++++++++++++++++++++++++ + src/cairo-xlib-surface.c | 23 +++++++++++++++++++++++ + src/cairoint.h | 6 ++++++ + 3 files changed, 65 insertions(+), 0 deletions(-) + +commit 6e78409417117ad4de1aec65bb4753ff32e1e7a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 11 14:19:38 2009 +0100 + + [test] Update big-line and remove XFAIL + + Now that we use polygon clipping, output geometry should no longer exceed + the 2^16 limits imposed by pixman. For the image backend, we now use spans + for stroking and for the xlib backend we have to double check the range on + the output trapezoids. In short, cairo should pass this test. + + test/Makefile.am | 8 ++++---- + test/big-line.c | 16 ++++++++-------- + test/big-line.ps.argb32.ref.png | Bin 977 -> 0 bytes + test/big-line.ps.rgb24.ref.png | Bin 709 -> 0 bytes + test/big-line.quartz.ref.png | Bin 1075 -> 0 bytes + test/big-line.quartz.rgb24.ref.png | Bin 941 -> 0 bytes + test/big-line.ref.png | Bin 0 -> 977 bytes + test/big-line.xlib-fallback.ref.png | Bin 0 -> 723 bytes + test/big-line.xlib.ref.png | Bin 0 -> 933 bytes + 9 files changed, 12 insertions(+), 12 deletions(-) + +commit b495e7eb2ee2521a400d4b42e04242023bdb1e44 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 10 19:25:14 2009 +0100 + + [surface] Early return for (region IN white) + + Fill a region using IN and a white source is a frequent reduction of a + complex clip (viz a path that covers the whole operation extents will be + reduced to a single rectangle), and we can simply discard the fill (as it + always has bounded semantics). + + src/cairo-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 94aeae9b2ec563201a0e65705504d1d70c33a619 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 10 19:11:36 2009 +0100 + + [clip] Simplify applying a box clip + + If the clip path is a simple box, then for many operations it is entirely + representation by the alteration of extents and so we can skip a few steps + during reconstruction. + + src/cairo-clip-private.h | 3 +- + src/cairo-clip.c | 84 +++++++++++++++++++++++++--------------------- + 2 files changed, 48 insertions(+), 39 deletions(-) + +commit 496e79b63762c70fd022b2d9e2d6107bcce1807a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 10 17:36:46 2009 +0100 + + [xlib] Fix extraction of GC during XCloseDisplay() + + Jeff Muizelaar reported a bug from his firefox builds that was causing a + double free during XCloseDisplay, and suggested it was related to + c0e01d9cd. Reviewing the cleanup, suggested that the cause may just be a + pair of missing parenthesis. + + src/cairo-xlib-screen.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f34affaa1e0b52e255d882b84bf064f9a9d4a95d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 18:03:20 2009 +0100 + + [util] And reuse the same name repository name. + + Completely confused by local caching of a broken cairo.modules by the + jhbuild client. ARGH! + + util/cairo.modules | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit e1774185d6bb824a53465a037539b53fdc7af5d8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 17:52:10 2009 +0100 + + [util] And back to a unique repo name for cairo.modules + + Gah, further experiments into the unknown and the unclear. + + util/cairo.modules | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2905ebc99e4cf8b8e94e16fcd3bc1566f51f4b57 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 17:24:43 2009 +0100 + + [util] And restore the repository tag. + + jbhuild requires a local definition. + + util/cairo.modules | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 4d7eb79d25bcfdc47abcae1fd51c7573043909fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 17:12:14 2009 +0100 + + [util] Inherit the repository from xorg.modules + + Experiment with inheriting the repository from xorg.module, in order to + avoid having two entries for the same server. + + util/cairo.modules | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit f5ee785144a8ddb6056b21f6c28bc4a9f4870b32 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 13:59:50 2009 +0100 + + [test] Disable the antialias testing for the vector surfaces. + + Only the raster bckends obey the font anti-alias options. + + test/large-twin-antialias-mixed.c | 2 +- + test/twin-antialias-gray.c | 2 +- + test/twin-antialias-mixed.c | 2 +- + test/twin-antialias-none.c | 2 +- + test/twin-antialias-subpixel.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit abaef9bfbe11302beb6481547632b44be9d5be8d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 13:57:06 2009 +0100 + + [test] Compare a failure against the image output + + If a backend fails in exactly the same way as the image, then we can + safely assume that the failure is systematic and not an error in the + backend, so change the result to XFAIL. + + test/cairo-test.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 46 insertions(+), 0 deletions(-) + +commit 41fbea053a8feb201a4f11aaf4dff86fea0bcb01 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 12:19:51 2009 +0100 + + [test] Typo in ft-show-glyphs-positioning + + Note to self: remember to sleep more often. + + test/ft-show-glyphs-positioning.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c61480a319bad55b0b4cf3f2be609bde9f2c5948 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 11:08:17 2009 +0100 + + [test] An oversized twin test case. + + A larger variant of the twin mixed antialiasing test. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/large-twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++ + test/large-twin-antialias-mixed.ref.png | Bin 0 -> 16668 bytes + test/large-twin-antialias-mixed.xlib.ref.png | Bin 0 -> 14655 bytes + 5 files changed, 100 insertions(+), 0 deletions(-) + +commit 610b311a970877f3954ba829cf43caecce0ab72c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 09:48:24 2009 +0100 + + [test] Variation of twin that intermixes antialiasing + + Check that we are substituting the right glyph depth and changing masks + appropriately. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/twin-antialias-mixed.c | 97 ++++++++++++++++++++++++++++++++ + test/twin-antialias-mixed.ref.png | Bin 0 -> 2338 bytes + test/twin-antialias-mixed.xlib.ref.png | Bin 0 -> 1760 bytes + 5 files changed, 100 insertions(+), 0 deletions(-) + +commit c218ff8cbec2cc7aa3efc4c7f7d8690fbdec5e9a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 09:52:18 2009 +0100 + + [test] SUBPIXEL_ANTIALIAS varation of twin + + Force argb32 glyphs. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/twin-antialias-subpixel.c | 71 +++++++++++++++++++++++++++++ + test/twin-antialias-subpixel.ref.png | Bin 0 -> 3979 bytes + test/twin-antialias-subpixel.xlib.ref.png | Bin 0 -> 3863 bytes + 5 files changed, 74 insertions(+), 0 deletions(-) + +commit 456484514f4dacfe95952e8c0b73eb6a9a1a9d27 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 09:38:18 2009 +0100 + + [test] Variation of twin with ANTIALIAS_GRAY + + Force generation of a8 glyphs. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/twin-antialias-gray.c | 71 +++++++++++++++++++++++++++++++++ + test/twin-antialias-gray.ref.png | Bin 0 -> 3979 bytes + test/twin-antialias-gray.xlib.ref.png | Bin 0 -> 3863 bytes + 5 files changed, 74 insertions(+), 0 deletions(-) + +commit 8555984b8e72ab5846783ed54afa1a857d70f241 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 09:29:42 2009 +0100 + + [test] Add ANTIALIAS_NONE variation of twin + + I'm off hunting bugs. By using twin with ANTIALIAS_NONE we can construct + a1 glyph images independently of the native font system. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/twin-antialias-none.c | 71 +++++++++++++++++++++++++++++++++ + test/twin-antialias-none.ref.png | Bin 0 -> 718 bytes + test/twin-antialias-none.xlib.ref.png | Bin 0 -> 745 bytes + 5 files changed, 74 insertions(+), 0 deletions(-) + +commit 1820cb7fd648283a5b477fbc6bd654200ed190e6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 09:12:54 2009 +0100 + + [test] Check for errors during ft-show-glyphs-positioning + + Do not blindly assume that we managed to construct a valid scaled-font + before attempting to dereference the FT_Face. Consider a machine with + no fonts which is substituting twin... + + test/ft-show-glyphs-positioning.c | 46 +++++++++++++++++++++++++++++++----- + 1 files changed, 39 insertions(+), 7 deletions(-) + +commit 7fb0d5e2091a09ef7b01574f4ecf87236ef43fec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 01:45:16 2009 +0100 + + [twin] Initialise all properties + + Left a couple of uninitialised properties along the non-toy font + construction path. + + src/cairo-font-face-twin.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 34778a883af806f77d0c89c85cebb315b43d7ef2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 9 01:16:08 2009 +0100 + + [configure] Typo in test + + The have_dl clause was meant to have been removed from the requirements + test for cairo-script-interpreter. Instead we left the test broken. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4b221bd49a0c2c980a63779d905e8eb9b9cfa690 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 8 19:02:04 2009 +0100 + + [spans] Correct offsets for trapezoids + + Pass on the destination offset from composite_trapezoids() to + composite_polygon(). + + src/cairo-spans.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 9389cb78a8ea5b6579d091ab1030ab9f1b13efc2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 8 17:51:33 2009 +0100 + + [build] Improve handling of missing test apparatus + + Improve detection, reporting and disabling of test backends when we lack + the required libraries and utilities. + + boilerplate/Makefile.win32.features | 7 +++++++ + boilerplate/cairo-boilerplate-pdf.c | 2 ++ + boilerplate/cairo-boilerplate-ps.c | 2 ++ + boilerplate/cairo-boilerplate-svg.c | 2 ++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + build/configure.ac.features | 3 ++- + configure.ac | 20 +++++++++++++------- + perf/cairo-perf-compare-backends.c | 2 +- + src/Makefile.win32.features | 7 +++++++ + test/Makefile.am | 2 ++ + test/any2ppm.c | 8 ++++++++ + util/Makefile.am | 4 ++-- + 13 files changed, 52 insertions(+), 11 deletions(-) + +commit 45759e5a0fb20a632f66a8dd206833b55a95f840 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 8 09:19:53 2009 +0100 + + [gl] Supply extents for acquire source image + + I have no idea how we survived for so long without supplying the source + extents... + + src/cairo-gl-surface.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit 67d40e5c7300c4082484dbda5c81808737bb2ac5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 6 10:17:40 2009 +0100 + + [xlib] Protect ourselves from liars that claim to have a 64k window + + Found using webkit, who attempt to paint an width X page height window. + Please, please clip large windows to the visible area. Thanks. + + src/cairo-xlib-surface.c | 27 +++++++++++++++++++++++++-- + 1 files changed, 25 insertions(+), 2 deletions(-) + +commit 310cebf194919cf3a7c37e724e64962ae47343cc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 5 15:21:50 2009 +0100 + + [configure] Add option to disable trace. + + Some environments may be broken beyond our capabilities to detect, or + maybe the user is just insane and doesn't want to build my nice shiny + cairo-trace. Whatever, give them the option to choose: + + $ ./configure --disable-trace + + boilerplate/Makefile.win32.features | 7 +++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 +++ + build/configure.ac.features | 3 +++ + configure.ac | 8 +++++--- + src/Makefile.win32.features | 7 +++++++ + util/Makefile.am | 2 +- + 7 files changed, 27 insertions(+), 4 deletions(-) + +commit 9b932d7cd750b9bc61d108c80c4530352d952cfa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 5 08:46:39 2009 +0100 + + [perf] Move the calibration to its own function + + Improve code clarity and whatnot. + + perf/cairo-perf.c | 71 ++++++++++++++++++++++++++++++---------------------- + 1 files changed, 41 insertions(+), 30 deletions(-) + +commit 270b2f1be0e600621647f2e2486618c134217941 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Sep 5 05:39:35 2009 +0300 + + [perf] Add a fast-and-sloppy mode to cairo-perf. + + A new -f option to cairo-perf reverts to a fast run + mode for quick performance overviews. The number of + milliseconds each iteration of a test is run for can + be overriden using the new CAIRO_PERF_ITERATION_MS + environment variable. The default remains 2000 ms/iter. + + perf/cairo-perf.c | 59 +++++++++++++++++++++++++++++++++++------------------ + perf/cairo-perf.h | 3 ++ + 2 files changed, 42 insertions(+), 20 deletions(-) + +commit 7f91c4953ccfbb96d76ecd73715fa2e524be933e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Sep 5 05:07:25 2009 +0300 + + [boilerplate] Support wildcard ? in CAIRO_TEST_TARGET{,_EXCLUDE}. + + Useful for running tests only for a given content type. + + boilerplate/cairo-boilerplate.c | 10 ++++++---- + 1 files changed, 6 insertions(+), 4 deletions(-) + +commit b3bafbc5f9201662702cc0c0d1c96411e31bb7d3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Sep 5 05:02:00 2009 +0300 + + [boilerplate] Support giving content in CAIRO_TEST_TARGET{,_EXCLUDE}. + + Sometimes it's convenient to run the regression or performance tests + against a given target with a given content. Now we accept an optional + content specifier as a suffix .<content> on a target name, where + <content> is rgb or rgba. + + boilerplate/cairo-boilerplate.c | 61 ++++++++++++++++++++++++++++++++++++-- + 1 files changed, 57 insertions(+), 4 deletions(-) + +commit 29432d3d32bc84ec4a2e1815a84e4ac2089138fe +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Sep 5 02:25:01 2009 +0300 + + [test] Reorder dash-infinite-loop to not hit a runaway allocation. + + This test is annoying enough as it is what with it wedging the + test suite and all. There's no reason why it should DOS the + running box as well by sitting in a loop allocating like mad. + + test/dash-infinite-loop.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 20b0e7f95448e496b609212b9608f75e03f223f8 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Sep 4 23:54:21 2009 +0300 + + [test] Add large-source-roi.ref.png to test/Makefile.am + + Oops.. forgot to add it to the build files too + + test/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 402a0539489cc01094b464109ae28ae78b85a294 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 4 09:47:10 2009 +0100 + + [gl] compile fix. + + Compiled fine during testing -- only I forgot I hadn't enable the gl surface. + + src/cairo-gl-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit b065303740cc18fbcabfeef34d09c7d8b617647e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 4 09:35:22 2009 +0100 + + [xlib] Enable pad_reflect by default + + If the XServer claims to support the required Render extension then send + it the operations. However for the cases where we know it does not work, + i.e. the current and previous generations (<=1.6) of Xorg servers, enable + the buggy_pad_reflect fallbacks. + + src/cairo-xlib-display.c | 19 ++++++++++++------- + 1 files changed, 12 insertions(+), 7 deletions(-) + +commit 634fdb4afd15e2467979609b1af7c1c198fc83d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 4 09:14:12 2009 +0100 + + [test] Add unbounded variants of clip-{fill,stroke} + + Add a couple of tests to exercise a bug that Joonas spotted that I had + introduced with the clip-reduction scheme - namely that I had + incorrectly removed the clip on unbounded operations. + + test/Makefile.am | 14 +++ + test/Makefile.sources | 2 + + test/clip-fill-unbounded.argb32.ref.png | Bin 0 -> 1615 bytes + test/clip-fill-unbounded.c | 105 ++++++++++++++++++++ + test/clip-fill-unbounded.rgb24.ref.png | Bin 0 -> 1312 bytes + test/clip-fill-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1601 bytes + test/clip-fill-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1601 bytes + ...clip-fill-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes + test/clip-fill-unbounded.xlib.argb32.ref.png | Bin 0 -> 1758 bytes + test/clip-fill-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes + test/clip-stroke-unbounded.argb32.ref.png | Bin 0 -> 1703 bytes + test/clip-stroke-unbounded.c | 102 +++++++++++++++++++ + test/clip-stroke-unbounded.rgb24.ref.png | Bin 0 -> 1383 bytes + test/clip-stroke-unbounded.svg12.argb32.xfail.png | Bin 0 -> 1697 bytes + test/clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 1697 bytes + ...ip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin 0 -> 1429 bytes + test/clip-stroke-unbounded.xlib.argb32.ref.png | Bin 0 -> 1792 bytes + test/clip-stroke-unbounded.xlib.rgb24.ref.png | Bin 0 -> 1426 bytes + 18 files changed, 223 insertions(+), 0 deletions(-) + +commit de99f841886de5cc6e5bc91f9d3e82076d838dee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 4 08:55:19 2009 +0100 + + [fallback] Only eliminate the clip if the operation is bounded + + For unbounded operations we still need to pass along the clip in order to + correctly limit the extents of the operation. + + src/cairo-surface-fallback.c | 57 +++++++++++++++++++++++++++++++----------- + 1 files changed, 42 insertions(+), 15 deletions(-) + +commit 0ffca06d7feec6fdc56c47a378fcc37c1951a00a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 4 08:32:31 2009 +0100 + + [perf] Use milliseconds by default in cairo-perf-diff-files + + Necessary when comparing performance reports from different machines (or + even at different CPU states). + + perf/cairo-perf-diff-files.c | 13 ++++++++----- + 1 files changed, 8 insertions(+), 5 deletions(-) + +commit 00ca0780b8f06ec160d8f969e316c21fbbde04bc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 23:25:53 2009 +0100 + + [win32] Remove unused clone_similar() + + The win32 backend handles surface sources directly and never calls + _cairo_pattern_acquire_surface() which is the only other possible user of + clone_similar(). + + src/cairo-win32-printing-surface.c | 2 +- + src/cairo-win32-surface.c | 57 +----------------------------------- + 2 files changed, 2 insertions(+), 57 deletions(-) + +commit 535bcaa1a1dac28fbe3106c6605949171bc36cb2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 20:10:55 2009 +0100 + + [mutex] Hook into pthread last + + Check for native mutex types before hooking into pthread, as this + workarounds broken builds on mingw that confuse us by including the + pthread header file. + + src/cairo-mutex-impl-private.h | 47 ++++++++++++++++++++------------------- + 1 files changed, 24 insertions(+), 23 deletions(-) + +commit 769f4a4f47ab4636ec5cca3e92ce2c0ff19d2f75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 17:47:34 2009 +0100 + + [gl] Allocate small number of rectangles on the stack + + FillRectangle is most frequently used to fill an entire imagee with the + background colour, i.e. with just a single, or few, rectangle. Avoid + heap allocation for this common case by allocating enough space for 4 + rectangles (vertices+colors) on the stack. + + src/cairo-gl-surface.c | 43 +++++++++++++++++++++++++++++-------------- + 1 files changed, 29 insertions(+), 14 deletions(-) + +commit 6ce200da9d01a85a1de576229e75732db65a8b70 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 17:38:00 2009 +0100 + + [gl] Assert that the error is impossible. + + As we created the image, it should not need coercing into a suitable + format and so we should be able to upload it without failure. + + src/cairo-gl-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit d3aeafb406da7bf69e9bf24e18a5975780a7a987 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 17:32:28 2009 +0100 + + [gl] Remove reference to depth_stencil_tex + + We no longer use a depth-stencil, so remove the vestigial reference. + + src/cairo-gl-private.h | 1 - + src/cairo-gl-surface.c | 2 -- + 2 files changed, 0 insertions(+), 3 deletions(-) + +commit 316c1683ceb39eb652608adc360cb4da9c22256a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Sep 3 21:38:31 2009 +0300 + + [test] Fix the order of random points random-intersections-curves*. + + The calls to uniform_random() to get the curve points were in + the function arguments, but argument order evaluation is compiler + implementation dependent. + + test/random-intersections-curves-eo.c | 17 ++++++++++------- + test/random-intersections-curves-nz.c | 17 ++++++++++------- + 2 files changed, 20 insertions(+), 14 deletions(-) + +commit 9e45673e197d0f43e296483cc6b5ca6df94e7f02 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Sep 3 19:18:07 2009 +0300 + + [image] Check for out of bounds image surface sizes in constructors. + + The image surface code doesn't reliably work on images larger than + 32767 in width or height. This patch makes the image surface + constructors fail by returning a surface in the CAIRO_STATUS_INVALID_SIZE + state when given negative or too large dimensions so that client code + gets a prompt and correct error rather than flaky rendering on large + images. + + src/cairo-image-surface.c | 27 +++++++++++++++++++++++++-- + test/large-source-roi.c | 4 ++-- + test/large-source-roi.ref.png | Bin 0 -> 112 bytes + test/large-source.c | 4 ++-- + 4 files changed, 29 insertions(+), 6 deletions(-) + +commit 12d0613210547b8a50dd7b21a12eb1485ee496b9 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Sep 3 17:54:49 2009 +0300 + + [test] Allow tests to XFAIL by putting the cairo_t into an error state. + + The test runner was extra strict about never letting a test put + the cairo_t into an error state, and never would it check for + the expectedness status of the failure. This patch moves the + check for a test being an XFAIL above the check on the cairo_t's + final status. + + test/cairo-test.c | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +commit a76c36f2edd16d8e2b8f49e6409134aceab38a42 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 14:29:20 2009 +0100 + + [xlib] solid pictures should only be 1x1 + + Creating an widthxheight solid picture for using with + RenderCompositeTrapezoids defeats the optimization with the xserver that + checks for a solid alpha pattern. The checks it performs are for + CONTENT_ALPHA, Repeat, 1x1 and value == 0xff. + + src/cairo-xlib-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit df067be863bf714f22db0392ab29926edfa8e917 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 08:45:40 2009 +0100 + + [polygon] Compute the limit of the limits slightly more efficiently + + Initialize the bbox to the first limit, as frequently there will only be a + single (or at least a small number) limit. + + src/cairo-polygon.c | 24 ++++++++++++------------ + 1 files changed, 12 insertions(+), 12 deletions(-) + +commit a1bac73f24069990842fa8f31e776b4d2c72546e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 09:20:46 2009 +0100 + + [boilerplate] Handle errors whilst creating GL surface + + boilerplate/cairo-boilerplate-gl.c | 11 ++++++----- + src/cairo-glx-context.c | 16 ++++++++-------- + 2 files changed, 14 insertions(+), 13 deletions(-) + +commit f1d284f9976d38f636c6791f11479ae75d7bd199 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 01:00:59 2009 +0100 + + [polygon] Fix discard with non-banded disjoint clip boxes + + The early discard checked if the line was below the last clip-box, or if + above the first. However, the clip-boxes are only sorted on by the bottom + (not the strict XY-banded sort of the regions) and so this was erroneously + discarding lines. + + src/cairo-polygon.c | 29 ++++++++++++++++++++++++----- + src/cairo-types-private.h | 1 + + 2 files changed, 25 insertions(+), 5 deletions(-) + +commit a6dfdeec82ec34d88276fd0bb0ddcc94405d89f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 3 00:59:21 2009 +0100 + + [test] Add clip-disjoint + + Soeren found another bug (thanks Soeren!) in the clipping code - as + reproduced by this test case. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/clip-disjoint.c | 90 +++++++++++++++++++++++++++++++++++++++ + test/clip-disjoint.ref.png | Bin 0 -> 5520 bytes + test/clip-disjoint.xlib.ref.png | Bin 0 -> 5395 bytes + 5 files changed, 93 insertions(+), 0 deletions(-) + +commit ff6bc1e132836c68d4f538799c2cd26a2d9cace4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 21:22:33 2009 +0100 + + [script] Always create a fallback font + + In order to get a baseline for win32 performance testing, always create a + font so that the trace can be replayed. Not ideal, but I feel this the + pragmatic solution for judging the performance differentials before I can + work out a better solution for loading typ42 fonts. + + util/cairo-script/cairo-script-operators.c | 46 ++++++++++++++++----------- + 1 files changed, 27 insertions(+), 19 deletions(-) + +commit fcbb288e7cf2f5914c0d2b66ee6d81b694de6de6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 21:02:18 2009 +0100 + + [script] Attempt to select a font if ! CAIRO_HAS_FT_FONT + + In order to enable replay of traces on machines that do not use FreeType + as the native font system, we need to convert a type42 font into something + similar. Currently the fallback is just to select a font with the same + name - this ignores weight and slant, and many other details. + + util/cairo-script/cairo-script-operators.c | 106 ++++++++++++++++++++++++++++ + 1 files changed, 106 insertions(+), 0 deletions(-) + +commit 2c03dfa0b406565fca798214a842bac69b042017 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 10:09:50 2009 +0100 + + [boilerplate/test] Use numerical equality not string equality + + test == != -eq + + boilerplate/make-cairo-boilerplate-constructors.sh | 2 +- + test/make-cairo-test-constructors.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f5df38ca5efcbc0cd3cc18d9fb67df49ec4859f8 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Sep 2 04:38:52 2009 +0100 + + [build] Fix typos in prototype warnings. + + The -Wstrict-prototypes and -Wmissing-prototypes warnings + weren't actually in use due to typos. + + build/configure.ac.warnings | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c086b40a93057a6fd47d23c85c5026d6fe2f524a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Sep 2 04:29:18 2009 +0100 + + [build] Hush the Solaris compiler about enum abuse. + + Sun Studio 12 doesn't like it when we mix our + enum values and types. We do that a lot on purpose + so the warnings from compiles were very verbose. + + build/aclocal.cairo.m4 | 23 +++++++++++++++++++++-- + build/configure.ac.warnings | 6 ++++++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +commit f081a5ff554267eebecea4652bb483eea11d1484 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Sep 2 04:10:39 2009 +0100 + + [build] Refine the -Wno-attribute test to check our use cases. + + We don't actually check that -Wno-attribute does what + we think it does. On clang it doesn't since it happily + seems to recognize but ignore the attribute. + + This patch factors out a silent version of CAIRO_CC_TRY_FLAG + which accepts an optional program argument and actually tests + that the compiler doesn't produce any warning messages. It + is then used to check that -Wno-attribute doesn't complain + when the __warn_unused_result__ attribute is applied to + void functions or variables. + + build/aclocal.cairo.m4 | 42 ++++++++++++++++++++++++++++++++++-------- + build/configure.ac.analysis | 2 +- + build/configure.ac.warnings | 10 ++++++---- + 3 files changed, 41 insertions(+), 13 deletions(-) + +commit c87b366bfec4eeda2646b33cb8a33822a301456c +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Sep 2 04:09:46 2009 +0100 + + [constructors] Guard against being called without any input files. + + The make-cairo-(test|boilerplate)-constructors scripts ought + never to be called without arguments lest we are left constructorless. + + boilerplate/make-cairo-boilerplate-constructors.sh | 7 ++++++- + test/make-cairo-test-constructors.sh | 7 ++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit b509b548b1e3ac5a9e3de2f9652cd1973d295fa3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 24 09:12:10 2009 +0300 + + [trace] Check for __builtin_return_address explicitly. + + Some other compilers such as clang and icc support the + __builtin_return_address() intrinsic as well, so we don't + need to check for __GNUC__ >= 3 only. + + build/configure.ac.system | 12 ++++++++++++ + util/cairo-trace/trace.c | 2 +- + 2 files changed, 13 insertions(+), 1 deletions(-) + +commit 2b0e070f6a6bee415b1036fd149f0c41bcf87abb +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 24 07:48:57 2009 +0300 + + [trace] Replace an open coded test for matrix identity. + + The code has a _matrix_is_identity() function we can use + instead of open coding the same test. + + util/cairo-trace/trace.c | 5 +---- + 1 files changed, 1 insertions(+), 4 deletions(-) + +commit 70ea9e3ce1b0037999340e484e62d3a1484da41a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 24 07:46:20 2009 +0300 + + [trace] Don't crash on unknown enums values. + + If the tracer encounters an unknown enum value it + ought not to crash. Theis patch replaces the idiom + of looking up a name for an enumerated value directly + from a table by a switch statement. As a bonus we get + warnings from the compiler when the enums are updated + in cairo. + + util/cairo-trace/trace.c | 313 +++++++++++++++++++++++++--------------------- + 1 files changed, 172 insertions(+), 141 deletions(-) + +commit 174c2620c82a47d067ec7b5062a4f513155a0b1f +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 24 07:42:57 2009 +0300 + + [trace] Check for object stack underflow. + + If the tracer's object stack underflows we want to + know about is as soon as possible. This patch adds + checks against the stack overflowing and aborts the + program with an object stack dump if it does. + + util/cairo-trace/trace.c | 26 ++++++++++++++++++++++++-- + 1 files changed, 24 insertions(+), 2 deletions(-) + +commit bb480d235882d8e7d5748a3837f9b274a8b8ac86 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Jul 21 21:18:36 2009 +0300 + + [NEWS] Thank the AuroraUX team for facilitating Solaris testing. + + NEWS | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit c64f6f8a15306cdcf5dd02480049b0f9112fd6ac +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 26 16:54:11 2009 +0300 + + [trace] Get the tracee program name from the environment. + + Support non-Linux systems which don't have a /proc/self/cmdline + by transferring the application name given to cairo-trace via + an environment variable CAIRO_TRACE_PROG_NAME. + + util/cairo-trace/cairo-trace.in | 3 ++- + util/cairo-trace/trace.c | 31 +++++++++++++++++++------------ + 2 files changed, 21 insertions(+), 13 deletions(-) + +commit 17cdffafda04514f08e0f0f11d0a85b938282c38 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 00:41:18 2009 +0100 + + [xlib] Remove stray code + + Grr. Should have spotted this before pushing - remove the addition of the + superfluous code. + + src/cairo-xlib-surface.c | 13 ++----------- + 1 files changed, 2 insertions(+), 11 deletions(-) + +commit 59c4fe93ee30c8182ae1a29267b9c08602e2f6c5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 00:34:37 2009 +0100 + + [xlib] Eliminate GC clipping + + Eradicate the use of clipping with GC. By never using clipping, we never + have to worry about retrieving a dirty clip from the GC cache. + + src/cairo-xlib-private.h | 12 +-- + src/cairo-xlib-screen.c | 50 ++++------ + src/cairo-xlib-surface-private.h | 2 - + src/cairo-xlib-surface.c | 197 ++++++++++++++++++-------------------- + 4 files changed, 116 insertions(+), 145 deletions(-) + +commit 075fc5666abe006c434bf7ec28d2d4f0226a1d3a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 2 00:33:22 2009 +0100 + + [test] Add clip-image + + Exercise the XCopyArea() paths under clipping - whilst modifying that code + I noticed that it was not being exercised by the test suite. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/clip-image.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ + test/clip-image.ref.png | Bin 0 -> 2679 bytes + 4 files changed, 96 insertions(+), 0 deletions(-) + +commit 7d1eb259f93d3f2f2e754b2b8b90cb88359b477d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 23:12:43 2009 +0100 + + [xlib] Make xlib_display_t private and rename xlib_screen_info_t + + The issue Joonas was trying to solve was the unwanted inclusion of + the inlines via cairo-freelist-private.h. Unwittingly he included + cairoint.h from cairo-xlib-private.h instead, a far more heinous crime as + that causes the boilerplate to try to use the hidden, private symbols. + Instead we resolve this issue by making the cairo_xlib_display_t structure + private to cairo-xlib-display.c and provide functions to manipulate the + abstract data type. Whilst in the vicinity, we rename + cairo_xlib_screen_info_t to cairo_xlib_screen_t for consistency and + cleanliness. + + src/cairo-xlib-display.c | 126 ++++++++++++++++++++++++++- + src/cairo-xlib-private.h | 88 +++++++++++-------- + src/cairo-xlib-screen.c | 155 +++++++++++++++------------------- + src/cairo-xlib-surface-private.h | 3 +- + src/cairo-xlib-surface.c | 173 +++++++++++++++++++++----------------- + 5 files changed, 339 insertions(+), 206 deletions(-) + +commit b8ddd66cf6e0d16383580c3c3398343f577b89fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 21:49:01 2009 +0100 + + Revert "[freelist] Make _cairo_freepool_alloc_from_new_pool static inline." + + This reverts commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 as it breaks + the boilerplate when linking with gcc. + + src/cairo-freelist-private.h | 29 ++--------------------------- + src/cairo-freelist.c | 29 +++++++++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 27 deletions(-) + +commit 5a3fa29b370816acb3a08d60e4031ed82c1e4c73 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Sep 1 20:57:01 2009 +0100 + + [freelist] Make _cairo_freepool_alloc_from_new_pool static inline. + + The xlib boilerplate includes a cairo private header to be able + to disable usage of the render extension. This indirectly includes + cairo-freelist-private.h which contains a bunch of static inline + functions which use the private _cairo_freepool_alloc_from_new_pool + function, but since that is not inline also, it causes an undefined + extern which cannot be resolved. The binutils linker doesn't care + since the freelist function aren't actually used in the boilerplate + but the Solaris linker does. By making the .._alloc_from_new_pool + function inline no dangling references are created and linking + succeeds. + + src/cairo-freelist-private.h | 29 +++++++++++++++++++++++++++-- + src/cairo-freelist.c | 29 ----------------------------- + 2 files changed, 27 insertions(+), 31 deletions(-) + +commit 68c8eb955d6d16872c2fa488f0960b974611865d +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Aug 31 23:57:20 2009 +0100 + + [wrapper] Avoid a void return gccism. + + Returning void using the pattern "return func_returning_void(...)" + is a gccism not supported by Sun Studio 12. + + src/cairo-surface-wrapper.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6ddab64025eacd5000fa295c86c0fddc469bdc5f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 20:25:53 2009 +0100 + + [ps] Clip meta-surface to desired extents. + + Ensure that the meta surface does not extend beyond the operation by + forcing a clip to the extents of the operation. + + Fixes test/device-offset and test/device-offset-positive + + src/cairo-ps-surface.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 43 insertions(+), 3 deletions(-) + +commit 665f5829541703b29e33f80bebf579a17f47a892 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 18:24:42 2009 +0100 + + [ps/pdf] Trim patterns to operation extents + + If we have to rasterise a pattern for use by PS/PDF (for example, to + satisfy CAIRO_EXTENT_PAD) then only generate an image large enough to + cover the operation extents. We ensure tight coverage by computing the + extents afresh - we could do this lazily in the future, but we can not + rely on the bounds as computed by the analysis surface as for native + operations they may not be tight. + + src/cairo-pdf-surface.c | 67 +++++++++++++++++--- + src/cairo-ps-surface.c | 76 +++++++++++++++-------- + src/cairo-surface.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 49 ++++++++++++++ + 4 files changed, 319 insertions(+), 35 deletions(-) + +commit c4c7db96750337076b953a4938afc7b5f16815fc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 14:59:36 2009 +0100 + + [boilerplate] Use xlib as fallback reference for xcb + + And exercise RGB code-paths. + + boilerplate/cairo-boilerplate-xcb.c | 13 ++++++++++++- + 1 files changed, 12 insertions(+), 1 deletions(-) + +commit e7a118d3f82f2cbefb4a1529cc90f76ed7371ecc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 14:31:38 2009 +0100 + + [path] Standalone header-compilation + + Hmm, TRUE/FALSE apparently weren't defined before use. Odd. + + src/cairo-path-fixed-private.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 4f880deeabc36842b3b4b0d7ad16383db708cd42 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 14:24:59 2009 +0100 + + Compiler warnings + + Add an impossible default condition to avoid a compiler warning. And tweak + the code to avoid mismatching signed/unsigned comparisons. + + src/cairo-pdf-surface.c | 1 + + src/cairo-xml-surface.c | 8 ++++---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +commit 1bcc3a3fa00445667adc47d4852237271c7eec0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 14:24:06 2009 +0100 + + [tee] Rename 'append' to 'add' and add symmetric 'remove' + + src/cairo-tee-surface.c | 51 ++++++++++++++++++++++++++++++++++++++++++---- + src/cairo.h | 8 +++++- + util/cairo-fdr/fdr.c | 2 +- + util/cairo-sphinx/fdr.c | 2 +- + 4 files changed, 54 insertions(+), 9 deletions(-) + +commit af82670dd3bfdb661de5a01a6856ec01bdf80040 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 1 13:31:52 2009 +0100 + + [pattern] Remove unused hidden symbol for cairo_pattern_status() + + src/cairo-pattern.c | 9 ++++----- + src/cairoint.h | 1 - + 2 files changed, 4 insertions(+), 6 deletions(-) + +commit aca1dff25967940c36caee26977512484f1720ac +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Aug 31 22:28:26 2009 +0930 + + PDF: Ensure operator is selected before painting surface + + src/cairo-pdf-surface.c | 16 ++++++++-------- + 1 files changed, 8 insertions(+), 8 deletions(-) + +commit a402bdbd32d3ffe4b564318e6dd83831328257b1 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Aug 31 22:15:57 2009 +0930 + + PDF: Flush operators before writing to the PDF stream + + src/cairo-pdf-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 119355b2a4d81c903720484adaeb7dea3929ca1f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Aug 31 22:14:15 2009 +0930 + + PDF: Reset alpha to 1.0 before painting a surface + + Fixes a test suite regression. + + src/cairo-pdf-surface.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit 20bd7d0edbb01a52bcc88bddcba4cc5237f3a673 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Aug 31 22:03:34 2009 +0930 + + Update ref images + + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3835 -> 3908 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3682 -> 3760 bytes + test/rotate-image-surface-paint.pdf.xfail.png | Bin 207 -> 217 bytes + test/scale-offset-image.pdf.argb32.ref.png | Bin 0 -> 9981 bytes + test/scale-offset-image.pdf.ref.png | Bin 10099 -> 0 bytes + test/scale-offset-image.pdf.rgb24.ref.png | Bin 0 -> 9981 bytes + test/scale-offset-similar.pdf.argb32.ref.png | Bin 0 -> 11027 bytes + test/scale-offset-similar.pdf.ref.png | Bin 10890 -> 0 bytes + test/scale-offset-similar.pdf.rgb24.ref.png | Bin 0 -> 11027 bytes + test/surface-pattern-scale-down.pdf.ref.png | Bin 1589 -> 1603 bytes + test/surface-pattern-scale-up.pdf.ref.png | Bin 2712 -> 2793 bytes + 11 files changed, 0 insertions(+), 0 deletions(-) + +commit 135912721f5791ad8eac773fd042c751122c8760 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Aug 30 23:58:53 2009 +0930 + + PDF: Avoid using patterns when filling a surface with EXTEND_NONE + + The fill equivilant of the previous optimization. + + src/cairo-pdf-surface.c | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit 6512faeb9487dcc2d577b5fb3628cf7f13a25c0a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Aug 30 23:38:17 2009 +0930 + + PDF: Avoid using patterns when painting surfaces with EXTEND_NONE + + This is an optimization the PS surface has been using to improve + printing speed and prevent printers from choking on large + images. Applying this optimzation to PDF prevents the same problem + occuring when the PDF is converted to PS. + + src/cairo-pdf-surface.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 58 insertions(+), 0 deletions(-) + +commit 26d568a9ada523793b2e5855678922894e438ef4 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Aug 30 23:50:53 2009 +0930 + + PDF: Fix bug when when embedding surfaces + + src/cairo-pdf-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit feaf38d0cdc5a79966d3a412b644705b0f38e75a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Aug 31 16:25:08 2009 +0300 + + [test] Use HAVE_FLOCKFILE instead of _POSIX_C_SOURCE. + + The _POSIX_C_SOURCE 2001.. #define requires C99 mode and + clang on Solaris is strict about such things. Use configure + tests for flockfile() instead. + + test/cairo-test.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 9bb469c51cf580e3ae18b21b3847488e8c4be051 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 24 06:15:46 2009 +0300 + + [trace] Use HAVE_FLOCKFILE/FUNLOCKFILE since configure test for them. + + The trace source was using the flockfile() and funlockfile() + functions directly. + + util/cairo-trace/trace.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit b5cf24a4fb0e48a0067c4b5a706890d4c1f3f1ae +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 26 20:06:40 2009 +0300 + + [build] Remove duplicate invocation of AC_CHECK_HEADERS. + + The fenv.h stuff was checked twice. + + build/configure.ac.system | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 3acccf0ea5ca1fde9cf6b91677588680a2644ee6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 30 12:33:40 2009 +0100 + + [perf] Trim outliers from chart + + Use "mild outliers" method to remove exceptional speed-ups and slow-downs + from the graph, so that the majority of information is not lost by the + scaling. Add the timing labels to the bars so that the true factor is + always presented. + + perf/cairo-perf-chart.c | 211 ++++++++++++++++++++++++++++++++++++++--------- + 1 files changed, 172 insertions(+), 39 deletions(-) + +commit 687462be89fd0ddf6b5412f2cb7b4f7b1a80135c +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Sun Aug 30 12:07:28 2009 +0200 + + [build] Fix a typo in configure.ac + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a6bcb6260ec8982493ac3411436ec007b40e4501 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 30 10:09:51 2009 +0100 + + [bo-rectangular] Fix assertion failure with insertion sort + + We remember the location of the last insert as the next edge is likely to + be nearby. However, we need to be careful when the pointer rests upon the + HEAD and ensure that we begin the search from the appropriate end. + + src/cairo-bentley-ottmann-rectangular.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 19ebf83b6717e1f02e7be14218007858edf14ef0 +Merge: 40aefac a77f193 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 17:45:48 2009 +0100 + + Merge branch 'stroke-with-spans' + + This branch brings self-intersection removal with virtually no + performance regression. (Compare with the initial implementation that + incurred a 5-10x slowdown due to having to tessellate whole strokes at a + time.) The importance of self-intersection removal is the improved visual + quality it brings - gone are those annoying sparkles on the outside of + rounded-rectangles for instance. Most of the performance overhead + associated with the self-intersection removal is avoided by switching from + trapezoids to spans for strokes. Obviously we are not able to do so for + the xlib backend as we do not yet have a polygon image type, and so the + tessellators are overhauled instead, along with more special casing for + frequent operations to avoid the increased complexity along the general + paths. + + Speedups + ======== + xlib-rgba swfdec-youtube-0 11371.13 (11406.01 0.28%) -> 10450.00 (10461.84 0.66%): 1.09x speedup + ▏ + image-rgba firefox-talos-svg-0 73696.53 (73828.28 3.42%) -> 68324.30 (70269.79 1.36%): 1.08x speedup + ▏ + image-rgba swfdec-youtube-0 7843.08 (7873.89 2.57%) -> 7393.96 (7399.68 0.18%): 1.06x speedup + + xvfb-rgba swfdec-youtube-0 9627.25 (9634.43 0.16%) -> 9020.55 (9040.97 0.27%): 1.07x speedup + ▏ + Slowdowns + ========= + xvfb-rgba gnome-terminal-vim-0 7695.12 (7697.87 0.44%) -> 8569.45 (8588.29 0.19%): 1.11x slowdown + ▏ + xvfb-rgba swfdec-giant-steps-0 3811.77 (3815.06 0.23%) -> 4246.67 (4569.17 3.52%): 1.11x slowdown + ▏ + image-rgba gvim-0 7150.90 (7181.96 29.36%) -> 14641.04 (14651.36 0.11%): 2.05x slowdown + █ + + One method for overcoming these regressions is to reduce the complexity of + the polygons being fed into the tessellator (both in the number of edges + and intersections). This should be feasible by coupling into Jeff Muizelaar's + stroke-to-path work, which early indications suggest will bring a + significant performance improvement. On top of this, our span + implementation for the image backend is not as efficient as we would hope + for - and Joonas promises a much faster implementation soon. + +commit a77f1933afebe28e0651906c96fd098cd8267a9f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 14:23:41 2009 +0100 + + Use the more generic is_box when doing simple extent checks + + is_rectangle() is far stricter than is_box(), and is only required for a + very limited set of operations (essentially were the rectangle must + conform to the motion as described by cairo_rectangle). For the general + case where we just want to know whether we have a single rectangular path + that covers a certain area, is_box() is sufficient. + + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-script-surface.c | 4 ++-- + src/cairo-svg-surface.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +commit 0a548d08b5eae73a95fb41f41298c9c43379163e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 16:27:27 2009 +0100 + + [clip] Correctly compute a geometric mask for a rectilinear + arbitrary + + Fix up the geometric clipper to handle intersecting a rectilinear path + with an arbitrary path and inspecting the result to see if it becomes a + a region. + + src/cairo-clip.c | 47 ++++++++++++++++++++++++++++++++++++++--------- + 1 files changed, 38 insertions(+), 9 deletions(-) + +commit 8a323d7c8998f308fc222d65badb1289e3f7fb54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 14:15:07 2009 +0100 + + [clip] Apply surface offset when combining with clip mask + + In order to correctly combine the clip mask with the compositing mask the + clip path must be offset so that it is relative to the destination + surface. + + src/cairo-clip-private.h | 2 +- + src/cairo-clip.c | 85 +++++++++++++++++++++-------------------- + src/cairo-region.c | 8 +++- + src/cairo-surface-fallback.c | 8 +--- + src/cairo-traps.c | 8 +--- + src/cairo.h | 2 +- + test/clip-stroke.xlib.ref.png | Bin 1563 -> 1490 bytes + 7 files changed, 56 insertions(+), 57 deletions(-) + +commit 21225a7163bc93d34d3e395c840faaba24046bb6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 12:08:12 2009 +0100 + + [clip] Pass in destination offset for combining with clip-mask + + When combining a clip-mask with a subsurface, as when used to combine with + the composite mask, we need to pass the destination surface offset to the + clip so that the paths can be corrected for the new surface. + + src/cairo-clip-private.h | 4 ++- + src/cairo-clip.c | 45 ++++++++++++++++++++--------------------- + src/cairo-surface-fallback.c | 14 ++++++++---- + 3 files changed, 34 insertions(+), 29 deletions(-) + +commit ac6c6fe1d39effd5b6b382f0f1199af824868ef4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 12:07:20 2009 +0100 + + [test] Add rotated clip. + + Exercise a bug found in not offsetting the clip mask when combining with + the composite mask. + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/rotated-clip.c | 110 ++++++++++++++++++++++++++++++++++++++++ + test/rotated-clip.ps.ref.png | Bin 0 -> 3378 bytes + test/rotated-clip.ref.png | Bin 0 -> 3761 bytes + test/rotated-clip.xlib.ref.png | Bin 0 -> 3922 bytes + 6 files changed, 114 insertions(+), 0 deletions(-) + +commit c60280782dfac7de1abe3230a500c7c98735dc02 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 09:59:36 2009 +0100 + + [script] Implement invert + + Flesh out matrix inversion. + + util/cairo-script/cairo-script-operators.c | 26 +++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletions(-) + +commit 06ca0b1475caf709fdf32b10a891dfb3b47cc6b1 +Author: Damian Frank <damianf@ubuntu-vm.(none)> +Date: Fri Aug 14 11:35:55 2009 -0500 + + Fix build on systems with older Xrender headers. + + This patch revises xlib so that it doesn't depend on having recent + Xrender headers to build. In particular, some definitions were added + to the private xrender header file, and an ifdef render version check + CAIRO_SURFACE_RENDER_SUPPORTS_OPERATOR was changed to a run-time + check using CAIRO_SURFACE_RENDER_HAS_PDF_OPERATORS. + + src/cairo-xlib-display.c | 7 +++ + src/cairo-xlib-surface.c | 30 ++----------- + src/cairo-xlib-xrender-private.h | 90 ++++++++++++++++++++++++++++++++++--- + 3 files changed, 93 insertions(+), 34 deletions(-) + +commit 17ef949b6aaa812dd566f1db016055f8e1913320 +Author: Damian Frank <damianf@ubuntu-vm.(none)> +Date: Fri Aug 14 11:38:52 2009 -0500 + + Rename cairo-script static func to avoid MinGW conflict + + cairo-script-operators.c's _dup function was colliding with one + defined in io.h by MinGW (gcc 4.3.0 package). I renamed it + to _duplicate. + + util/cairo-script/cairo-script-operators.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 3e7e0eacef650f1035cfbe15e306116ff711f99c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 17:07:41 2009 +0100 + + Update reference images + + Refresh the test reference images to match the current output where + acceptable. + + test/Makefile.am | 14 ++++++++++++-- + test/clip-fill.xlib-fallback.ref.png | Bin 1039 -> 1063 bytes + test/clip-operator.pdf.argb32.ref.png | Bin 9340 -> 9266 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 5146 -> 5166 bytes + test/clip-operator.ref.png | Bin 8191 -> 8126 bytes + test/clip-operator.rgb24.ref.png | Bin 3279 -> 3244 bytes + test/clip-operator.svg12.argb32.xfail.png | Bin 8404 -> 8378 bytes + test/clip-operator.svg12.rgb24.xfail.png | Bin 4523 -> 4566 bytes + test/clip-operator.xlib-fallback.ref.png | Bin 3226 -> 3228 bytes + test/clip-push-group.svg.ref.png | Bin 0 -> 175 bytes + test/clip-stroke.ref.png | Bin 1528 -> 1451 bytes + test/clip-stroke.xlib-fallback.ref.png | Bin 1566 -> 1490 bytes + test/clip-stroke.xlib.ref.png | Bin 1563 -> 1563 bytes + test/clip-text.svg.ref.png | Bin 933 -> 946 bytes + test/clipped-group.ref.png | Bin 316 -> 289 bytes + test/clipped-group.svg.ref.png | Bin 0 -> 250 bytes + test/device-offset-fractional.pdf.xfail.png | Bin 275 -> 270 bytes + test/extended-blend-alpha.svg12.argb32.xfail.png | Bin 6857 -> 6658 bytes + test/filter-nearest-offset.pdf.xfail.png | Bin 1926 -> 2152 bytes + test/filter-nearest-transformed.pdf.xfail.png | Bin 488 -> 532 bytes + test/ft-text-vertical-layout-type1.svg.ref.png | Bin 3609 -> 3607 bytes + test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3640 -> 3639 bytes + test/ft-text-vertical-layout-type3.svg.ref.png | Bin 3626 -> 3626 bytes + test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3605 -> 3605 bytes + test/group-unaligned.svg.argb32.xfail.png | Bin 522 -> 520 bytes + test/leaky-dashed-rectangle.pdf.ref.png | Bin 347 -> 380 bytes + test/mask-glyphs.svg.ref.png | Bin 1211158 -> 1211144 bytes + test/mask.pdf.argb32.ref.png | Bin 7837 -> 7866 bytes + test/mask.pdf.rgb24.ref.png | Bin 7301 -> 7336 bytes + test/mask.svg.argb32.xfail.png | Bin 8613 -> 8641 bytes + test/mask.svg.rgb24.xfail.png | Bin 7189 -> 7199 bytes + test/operator-source.svg12.argb32.xfail.png | Bin 2951 -> 2967 bytes + test/operator-source.svg12.rgb24.xfail.png | Bin 2963 -> 2976 bytes + test/overlapping-glyphs.svg.argb32.ref.png | Bin 0 -> 2338 bytes + test/overlapping-glyphs.svg.rgb24.ref.png | Bin 0 -> 2338 bytes + test/radial-gradient.pdf.ref.png | Bin 277162 -> 280944 bytes + test/radial-gradient.svg.xfail.png | Bin 0 -> 264425 bytes + test/random-intersections-curves-eo.ref.png | Bin 246996 -> 245762 bytes + ...m-intersections-curves-eo.xlib-fallback.ref.png | Bin 246243 -> 244255 bytes + test/random-intersections-curves-eo.xlib.ref.png | Bin 246243 -> 244255 bytes + test/random-intersections-curves-nz.ref.png | Bin 267589 -> 264545 bytes + ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 266364 -> 264288 bytes + test/random-intersections-curves-nz.xlib.ref.png | Bin 266360 -> 264288 bytes + test/scale-offset-image.pdf.ref.png | Bin 0 -> 10099 bytes + test/scale-offset-image.pdf.xfail.png | Bin 10099 -> 0 bytes + test/scale-offset-image.script.xfail.png | Bin 0 -> 9963 bytes + test/scale-offset-similar.pdf.ref.png | Bin 0 -> 10890 bytes + test/scale-offset-similar.pdf.xfail.png | Bin 11024 -> 0 bytes + test/scale-offset-similar.script.xfail.png | Bin 0 -> 9963 bytes + test/self-intersecting.ref.png | Bin 301 -> 213 bytes + test/smask-text.script.ref.png | Bin 0 -> 1663 bytes + test/smask.pdf.xfail.png | Bin 4393 -> 2848 bytes + test/smask.script.ref.png | Bin 0 -> 3396 bytes + test/text-pattern.pdf.argb32.ref.png | Bin 1831 -> 1810 bytes + test/text-pattern.pdf.rgb24.ref.png | Bin 1598 -> 1559 bytes + test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1719 -> 1731 bytes + test/user-font-proxy.svg.ref.png | Bin 16817 -> 16814 bytes + test/user-font.pdf.ref.png | Bin 0 -> 6241 bytes + 58 files changed, 12 insertions(+), 2 deletions(-) + +commit 155e10e632cb647df5c3d54a75975bc16591287d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 08:04:33 2009 +0100 + + [script] Fix use of freed list + + A typo, I missed converting the user over to the freshly sorted list, + leaving it iterating over original but checking the sorted for termination + conditions. + + src/cairo-script-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5393aa6d6c4676f20d316f3cd0a18bb497574e50 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 29 08:02:52 2009 +0100 + + [path] Return the canonical box. + + When returning the single box that represents a path, always return it + consistently wound. + + src/cairo-path-fill.c | 32 -------------------------------- + src/cairo-path-fixed.c | 28 ++++++++++++++++++++++++---- + 2 files changed, 24 insertions(+), 36 deletions(-) + +commit afea5eb79d2159fe9a5dc1a1a7b9445e40fbb474 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 17:10:35 2009 +0100 + + [scaled-font] Fix implementation-face refleak + + If we found the font via the holdover cache, or if we returned due to an + error, we would leak a reference count on the implementaton face. + + src/cairo-scaled-font.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit e5d44937f34d35606ad7f07415be7331cf146567 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 17:09:54 2009 +0100 + + [ft] Improve error path handling. + + Specifically check for an error during resolving the font and do not cache + the error object. + + src/cairo-ft-font.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit e76856e6ee563affc0a273ed6eef865866802dec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 15:51:33 2009 +0100 + + [scaled-font] Refleak on error path. + + Perform the destroy of the local font before returning along the error + path. + + src/cairo-scaled-font.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +commit d7d6f75ed26bc3ea040c618442ba71c89633ac7b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 15:50:13 2009 +0100 + + [clip] Fix refleak of previous clipping surfaces. + + When combining previous clip masks, we leaked a referenced due to not + destroying the returned reference. + + src/cairo-clip.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit 52e5ce3a36ab1cd7da25056df7f12ac0b23e410d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 27 17:25:08 2009 +0100 + + [test] Add clip-stroke + + Soeren was the first to report a clipping regression in the xlib backend + with strokes, and provided a test case to exercise the bug. This is an + extension of his test to provide coverage of different clipping and + stroking methods. + + test/Makefile.am | 3 + + test/Makefile.sources | 1 + + test/clip-stroke.c | 121 ++++++++++++++++++++++++++++++++ + test/clip-stroke.ref.png | Bin 0 -> 1528 bytes + test/clip-stroke.xlib-fallback.ref.png | Bin 0 -> 1566 bytes + test/clip-stroke.xlib.ref.png | Bin 0 -> 1563 bytes + 6 files changed, 125 insertions(+), 0 deletions(-) + +commit 20cdb99ae8ae0cc02193468e811b1b74b3f6d3b7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 27 16:21:30 2009 +0100 + + [path-fixed] Distinguish cw and ccw boxes + + To correctly handle retessellating trapezods constructed from alternately + wound boxes, then we need to pass that information from the path to the + tessellator. We do this by switching the direction of the box if the first + edge is horizontal as opposed to vertical. + + src/cairo-path-fixed.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 219d46a9ebc47f99fa8fe9c6e3f0aa440309f032 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 27 14:45:24 2009 +0100 + + [scaled-font] Eliminate intermediate path when tracing glyphs + + Currently the tracing code for glyphs constructs an temporary path in + order to replay and append to the output. This temporary allocation is + extremely wasteful as we can just directly append the glyph path to + the output path. + + src/cairo-scaled-font.c | 51 ++++++++++++++++++++-------------------------- + 1 files changed, 22 insertions(+), 29 deletions(-) + +commit 2e05922737d63289a3f124699359b8d385315cbd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 27 13:58:43 2009 +0100 + + [stroke] Handle degenerate stroke extents + + If the stroke is degenerate, i.e. the path consists only of a single + move-to and no edges, then the stroke may be visible due to end-capping + (as opposed to fills which are empty). So we also need to pad out the + extents around the current point for the degenerate case. + + src/cairo-path-bounds.c | 31 +++++++++++++------------------ + 1 files changed, 13 insertions(+), 18 deletions(-) + +commit cfd78393f357bc69233d4d00d0fb3a2ff736f1a7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 26 23:32:34 2009 +0100 + + [path] Handle the implicit close for path_fixed_is_box() + + _cairo_path_fixed_is_box() is only called for filled paths and so must + handle the implicit close (which was already being correctly handled by + _cairo_path_fixed_iter_is_box). + + src/cairo-path-fixed.c | 33 ++++++++++++++++++--------------- + 1 files changed, 18 insertions(+), 15 deletions(-) + +commit f22045bb4b9e700ce223c259ad41403dc7efe81f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 26 23:30:02 2009 +0100 + + [fallback] Include implicit closes in the check for rectilinear paths + + Fixes test/implicit-close + + By forgetting the implicit-close when checking for rectilinear paths, we + tried to feed the triangle (and other diagclose) into the specialised + rectilinear tesselators which completely mishandled that final edge. + + src/cairo-path-fixed-private.h | 14 ++++++++++++++ + src/cairo-surface-fallback.c | 6 ++++-- + 2 files changed, 18 insertions(+), 2 deletions(-) + +commit 92f6f275fcb5407baf908485ffd08b6787b2caf9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 26 23:27:46 2009 +0100 + + [test] Implicit close + + This is a simple test that broke with the determination of rectilinearity + during path construction. I forgot the implicit close on fill and so the + ignored the final diagonal edge and failed to draw the triangle. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/implicit-close.c | 54 +++++++++++++++++++++++++++++++++++++++++++ + test/implicit-close.ref.png | Bin 0 -> 251 bytes + 4 files changed, 56 insertions(+), 0 deletions(-) + +commit 8078cd194e95a10cf653c970d1ddd39049a511f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 23 15:25:42 2009 +0100 + + [boilerplate] Runtime library check + + For the purposes of benchmarking it is useful to run cairo-perf against a + different library from the one it was compiled against. In order to do so, + we need to check that the runtime library contains the required entry + points for our targets - which we can check by using dlsym. + + boilerplate/Makefile.am | 3 ++ + boilerplate/cairo-boilerplate-directfb.c | 2 + + boilerplate/cairo-boilerplate-drm.c | 2 + + boilerplate/cairo-boilerplate-gl.c | 2 + + boilerplate/cairo-boilerplate-glitz-agl.c | 2 + + boilerplate/cairo-boilerplate-glitz-glx.c | 2 + + boilerplate/cairo-boilerplate-glitz-wgl.c | 2 + + boilerplate/cairo-boilerplate-pdf.c | 2 + + boilerplate/cairo-boilerplate-ps.c | 4 +++ + boilerplate/cairo-boilerplate-quartz.c | 2 + + boilerplate/cairo-boilerplate-script.c | 1 + + boilerplate/cairo-boilerplate-skia.c | 2 + + boilerplate/cairo-boilerplate-svg.c | 4 +++ + boilerplate/cairo-boilerplate-test-surfaces.c | 8 ++++++ + boilerplate/cairo-boilerplate-vg.c | 4 +++ + boilerplate/cairo-boilerplate-win32-printing.c | 2 + + boilerplate/cairo-boilerplate-win32.c | 2 + + boilerplate/cairo-boilerplate-xcb.c | 1 + + boilerplate/cairo-boilerplate-xlib.c | 4 +++ + boilerplate/cairo-boilerplate.c | 29 +++++++++++++++++++++-- + boilerplate/cairo-boilerplate.h | 1 + + configure.ac | 7 +++++ + 22 files changed, 85 insertions(+), 3 deletions(-) + +commit 7447915381fc64bd0c66f7110c1dd0b8a10d73f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 22:20:35 2009 +0100 + + [script] Conditionalise the build + + Allow the interpreter to be disabled if we can not satisfy its dependencies. + + configure.ac | 2 ++ + util/Makefile.am | 11 +++++++++-- + util/cairo-script/Makefile.am | 2 +- + 3 files changed, 12 insertions(+), 3 deletions(-) + +commit fcda9fc2f29c2ee7d0bb45c17a2261badfdf430c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 18:48:33 2009 +0100 + + [scaled-font] Remove assert from cairo_scled_font_create() + + The assert() is only correct for the normal paths, but failed on the error + path. It has been run for long enough for me to be confident that the code + is self-consistent, so I think I can now safely remove it. + + src/cairo-scaled-font.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 93cfa7376fb505e676d113e8ef431bab9b497f56 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 18:45:54 2009 +0100 + + [win32] Use the system scaled_font_done + + Pointless as both functions are empty, but lets be pedantically correct + nevertheless. + + src/cairo-win32-font.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 8654a4b35c060ab06860c124a643be912060c4a1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 18:16:20 2009 +0100 + + [win32] Initialize clip_region + + Eek, I attempted to destroy an uninitialised region on the first use + of a clip. + + src/cairo-win32-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 9b33a2e1c794996cbe4cb0a5c773d50566d46bd4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 17:40:12 2009 +0100 + + [win32] Compiler warnings + + Innocuous warnings about the use of mismatching explicit casts (I'm really + not convinced by the merits of this particular compiler warning, but it + does cleanse the code slightly.) + + src/cairo-win32-printing-surface.c | 24 ++++++++++++------------ + 1 files changed, 12 insertions(+), 12 deletions(-) + +commit d1740d8782d90edb5b5e20dc5bcadb7a9eeeb4cc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 20 21:11:11 2009 +0100 + + [pattern] Ensure that no repeated pattern is clipped + + Previously the pattern_acquire_surface routine only had to worry about + handling extend modes NONE or REPEAT and so the test for ! REPEAT + sufficed when what was actually intended was a test for NONE. + + src/cairo-pattern.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 958f7ab1238b8242975d3ea774c26d23e090e70c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 19 12:35:00 2009 +0100 + + [script] Support running on cairo-1.8 + + Pre 1.9 the application had to pass a resolved font to cairo -- so do so + in the interpreter if the cairo version is less than 1.9 + + util/cairo-script/cairo-script-operators.c | 18 +++++++++++++++--- + 1 files changed, 15 insertions(+), 3 deletions(-) + +commit 87175334a574fa0f69679b1a0baeeb881eaa439b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 21 15:51:12 2009 +0100 + + [gl] Use spans for trapezois. + + Always use spans, even for unaligned boxes. In the future (given a new + interface) we may want to emit the common unaligned box code more + efficient than a per-scanline computation -- but for now simply avoid the + requirements to write a temporary CPU buffer. + + src/cairo-gl-surface.c | 22 ++++++++++++++++++---- + src/cairo-image-surface.c | 4 +--- + src/cairo-surface-fallback.c | 10 ++-------- + src/cairo-surface.c | 27 ++++++++++----------------- + src/cairo-win32-surface.c | 4 +--- + src/cairoint.h | 18 ++++++++++++++---- + 6 files changed, 46 insertions(+), 39 deletions(-) + +commit e65dfacab5d123913a4b2f59967f27c0b0af0692 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 21 15:50:24 2009 +0100 + + [gl] Simplify acquire_dest_image() + + Remove redundant code: the intersection of surface extents and the copy to + a temporary buffer. + + src/cairo-gl-surface.c | 53 ++++++++++------------------------------------- + 1 files changed, 12 insertions(+), 41 deletions(-) + +commit 5a13396373180ceae31287441ef9c838c771849d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 21 15:48:38 2009 +0100 + + [gl] Use common ARRAY_LENGTH macro + + Forgo the local ARRAY_SIZE macro where the common one will suffice. + + src/cairo-gl-surface.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit efdb53425ee71b3bce6c92ce212f5baf3e2a43d7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 21 11:58:31 2009 +0100 + + [qt] Discard impossible status return from path construction + + As we never return an error status during the path construction, we can + use the return value for the QPainterPath instead, greatly simplifying the + callers. + + src/cairo-qt-surface.cpp | 105 ++++++++++++++++++--------------------------- + 1 files changed, 42 insertions(+), 63 deletions(-) + +commit f2cde41cabaa0c190ef965f634cf2c73b6ba2334 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 21 10:29:39 2009 +0100 + + [cairoint.h] Add missing cairo_private to debug prototypes. + + src/cairoint.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b6d96bba8a4e9efe1033dd7fc875aba9bd8d0dc8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 20 20:31:49 2009 +0100 + + [win32] Trust the clipping code to trim roi to our surface + + The higher level code ensures that the region of interest is trimmed to + our declared surface extents, so performing the intersection again is + redundant. Furthermore with the change in the clipping code, the + fallback region is no longer clipped, especially as the clip that is + currently set upon the DC is likely to be stale and incorrect for the + fallback. + + Hopefully this resolves the assertion failure reported by Damian Frank, + http://lists.cairographics.org/archives/cairo/2009-August/018015.html + + CC: Damian Frank <damian.frank@gmail.com> + + src/cairo-win32-surface.c | 53 +++++++------------------------------------- + 1 files changed, 9 insertions(+), 44 deletions(-) + +commit d7faec024ac9f702c9bb305599ef8960a972491a +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Mon Jun 15 11:15:22 2009 +0100 + + Add skia backend + + Originally written by Vladimir Vukicevic to investigate using Skia for + Mozilla, it provides a nice integration with a rather interesting code + base. By hooking Skia underneath Cairo it allows us to directly compare + code paths... which is interesting. + + [updated by Chris Wilson] + + boilerplate/Makefile.sources | 1 + + boilerplate/Makefile.win32.features | 10 + + boilerplate/cairo-boilerplate-skia.c | 50 ++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 + + build/configure.ac.features | 1 + + configure.ac | 13 + + perf/cairo-perf-trace.c | 3 + + perf/cairo-perf.c | 3 + + src/Makefile.sources | 3 + + src/Makefile.win32.features | 14 + + src/cairo-skia-surface.cpp | 1174 ++++++++++++++++++++++++++++++++++ + src/cairo-skia.h | 84 +++ + src/cairo.h | 4 +- + 14 files changed, 1363 insertions(+), 1 deletions(-) + +commit af6df4af51ad75a956e3b73542647206ab534bd2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 20 12:54:12 2009 +0100 + + [configure] Choose a better name for the 'temporary' egl iterator + + The problem is that it remains referenced by egl_NONPKGCONFIG_LIBS and so + must not be subsequently overwritten, so give it an egl_ prefix. + + configure.ac | 12 ++++++++++-- + 1 files changed, 10 insertions(+), 2 deletions(-) + +commit 83c2f44dd954cb491d72834d0362d6d801ef7651 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 20 12:16:55 2009 +0100 + + [test] Update REFERENCE_IMAGES + + test/Makefile.am | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit f99e1841448e98be6161be57551153a6d9e28a13 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 20 12:11:51 2009 +0100 + + [build] Remove -Wcast-align + + Use -Wcast-align simply generates too much noise due to false-positive + reports when casting pixels to uint32_t. + + build/configure.ac.warnings | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 5fdf5b311e06e49843e924523e9bc91ba14da3bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 19 08:35:01 2009 +0100 + + [fallback] Reduce paint + clipmask to fill + + Under simple, yet common, conditions using a bounded operator and painting + with a single complex clip we can reduce the strength of that operation to + a fill. In effect this removes the need for a temporary mask for some + backends (GL, drm, xlib). + + src/cairo-surface-fallback.c | 26 +++++++++++++++++--------- + 1 files changed, 17 insertions(+), 9 deletions(-) + +commit 425b0e35e2d7d44d99e22169b98fc3ca05763650 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 18 14:25:25 2009 +0100 + + Add xml surface + + A very simple surface that produces a hierarchical DAG in a simple XML + format. It is intended to be used whilst debugging, for example with the + automatic regression finding tools of cairo-sphinx, and with test suites + that just want to verify that their code made a particular Cairo call. + + boilerplate/Makefile.win32.features | 10 + + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 + + build/configure.ac.features | 1 + + configure.ac | 4 + + src/Makefile.sources | 18 +- + src/Makefile.win32.features | 14 + + src/cairo-base64-stream.c | 143 ++++ + src/cairo-base85-stream.c | 3 - + src/cairo-output-stream-private.h | 4 + + src/cairo-ps-surface.c | 4 + + src/cairo-script-surface.c | 18 +- + src/cairo-xml-surface.c | 1153 ++++++++++++++++++++++++++++++ + src/cairo-xml.h | 72 ++ + src/cairo.h | 4 +- + util/Makefile.am | 11 +- + util/cairo-script/cairo-script-scanner.c | 113 +++ + util/trace-to-xml.c | 77 ++ + util/xml-to-trace.c | 263 +++++++ + 19 files changed, 1902 insertions(+), 14 deletions(-) + +commit 6e0b3be903a6c3ad948de95f490cff92430429a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 18 10:55:54 2009 +0100 + + Add cairo-sphinx utility for regression analysis + + sphinx is an alternate version of the current cairo-test-trace. It's + purpose is to replay a live application (which may just be a replay of a + trace) against a backend and its reference. The improvement over the + original cairo-test-trace is that the reference backend may be from an + older version of cairo. + + configure.ac | 6 + + util/Makefile.am | 6 + + util/cairo-sphinx/.gitignore | 1 + + util/cairo-sphinx/Makefile.am | 40 ++ + util/cairo-sphinx/fdr.c | 260 +++++++ + util/cairo-sphinx/sphinx.c | 1525 +++++++++++++++++++++++++++++++++++++++++ + 6 files changed, 1838 insertions(+), 0 deletions(-) + +commit c980affce05590f5f52273ba340463f00773c776 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 18 10:54:26 2009 +0100 + + [script] Apply device offset when replaying meta surface + + As we set the size of the surface to fit the ink extents of the meta + surface, we also need to ensure that the origin of the script lies at the + origin of the ink extents. + + src/cairo-script-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit eb33f842dc9a2555ba8f7948f49a8335db951959 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 17 11:38:52 2009 +0100 + + [meta] Missing status check + + We need to check the status on the created image before use. + + src/cairo-meta-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ce6a2cc5d2cb8a299759d764de2e7d2b6b655cb4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 17 10:31:47 2009 +0100 + + [wrapper] Always copy clip + + We always need to make a local copy of the clip as the backends are free + to modify it as they process the operation. + + src/cairo-surface-wrapper.c | 60 +++++++++++++++++++++++++++++++----------- + 1 files changed, 44 insertions(+), 16 deletions(-) + +commit 6ff711b6305a9cf65e584d92258a6fa4e78c31ef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 17 10:11:32 2009 +0100 + + [matrix] Improve bbox finding for translation matrix + + If the matrix is a pure translation matrix than we can skip determination + of the extents and just translate the input bbox. + + src/cairo-matrix.c | 56 ++++++++++++++++++++++++++------------------------- + 1 files changed, 29 insertions(+), 27 deletions(-) + +commit cd7b27ff5c01a533c2c065c4b455ad19df2be3bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 21:08:22 2009 +0100 + + Add 'flight-data-recorder' utility. + + This is a simple variation on cairo-trace that wraps records the last 16 + contexts by wrapping the target surface inside a tee surface, along with a + meta/recording surface. Then on receipt of a SIGUSR1, those last 16 + contexts are played via a script-surface into /tmp/fdr.trace. + + Mostly proof-of-concept, it seems to be causing a number of rendering + glitches whilst testing with firefox -- otherwise, it seems to works. + + configure.ac | 1 + + src/cairo-scaled-font-private.h | 3 + + src/cairo-scaled-font.c | 16 ++ + src/cairo-script-surface.c | 58 +++++++- + src/cairo-script.h | 4 + + src/cairo.h | 4 + + util/Makefile.am | 3 + + util/cairo-fdr/Makefile.am | 13 ++ + util/cairo-fdr/fdr.c | 304 +++++++++++++++++++++++++++++++++++++++ + 9 files changed, 400 insertions(+), 6 deletions(-) + +commit 658cdc7c9aac23f82f3ea5db8df10844aeb3ac75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 18:04:54 2009 +0100 + + Introduce cairo_tee_surface_t + + Add a new surface type that multiplies it input onto several output + surfaces. The only limitation is that it requires a master surface that is + used whenever we need to query surface options, such as font options and + extents. + + boilerplate/Makefile.win32.features | 8 + + build/Makefile.win32.features-h | 1 + + build/configure.ac.features | 1 + + configure.ac | 1 + + src/Makefile.sources | 6 +- + src/Makefile.win32.features | 8 + + src/cairo-surface-wrapper-private.h | 4 + + src/cairo-surface-wrapper.c | 7 + + src/cairo-surface.c | 11 + + src/cairo-tee-surface-private.h | 47 +++ + src/cairo-tee-surface.c | 558 +++++++++++++++++++++++++++++++++++ + src/cairo.h | 13 +- + 12 files changed, 662 insertions(+), 3 deletions(-) + +commit 4ae7186719b25f052b875549cc5377e16a557512 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 17:07:00 2009 +0100 + + [script] Correct emission of get_target() for a popped context + + If the context is no longer on the operand stack, then we need to recall + the surface via a definition. + + src/cairo-script-surface.c | 53 ++++++++++++++++++++++++++----------------- + 1 files changed, 32 insertions(+), 21 deletions(-) + +commit 8d1bf830c0137eac837091bda92a636c0fcb0456 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 14:20:35 2009 +0100 + + Fix errors found by clang + + Shadowed variables, unused writes and some dead code. + + src/cairo-pdf-surface.c | 2 -- + src/cairo-xlib-surface.c | 5 ++--- + util/cairo-script/cairo-script-file.c | 10 +++------- + util/cairo-script/cairo-script-operators.c | 23 ++++++++++++++++------- + util/cairo-trace/trace.c | 14 ++++++++------ + 5 files changed, 29 insertions(+), 25 deletions(-) + +commit d8dbce021a4493330864154e67ca6e4a1f2f50b2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 13:26:59 2009 +0100 + + [script] recursive active (type3 glyphs) + + The assumption that an active surface could not recurse into another + operation was invalid - due to the complexity of handling type3 glyphs. + + src/cairo-script-surface.c | 11 +++++------ + 1 files changed, 5 insertions(+), 6 deletions(-) + +commit eba6b5126a55c84706e677b3fc88743f64cc28d7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 12:47:14 2009 +0100 + + [build] Add options for warning about bad casts + + -Wbad-function-cast in particular. Triggers quite a few warnings where we + have explicitly cast to an integer. + + build/configure.ac.warnings | 9 +- + src/cairo-arc.c | 2 +- + src/cairo-pdf-surface.c | 8 +- + src/cairo-ps-surface.c | 20 ++-- + src/cairo-svg-surface.c | 4 +- + util/cairo-script/cairo-script-objects.c | 4 +- + util/cairo-script/cairo-script-operators.c | 172 +++++++++++++++++++--------- + util/cairo-script/cairo-script-private.h | 6 +- + 8 files changed, 143 insertions(+), 82 deletions(-) + +commit 33ef32af4e7adce41f035ee378279c19577469b0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 12:46:20 2009 +0100 + + [clip] Use the rectangular tessellator to extract boxes + + src/cairo-clip.c | 17 ++++++++++------- + src/cairo-path-fill.c | 29 ++++++++++++++++++++++------- + src/cairo-surface-fallback.c | 8 ++++---- + 3 files changed, 36 insertions(+), 18 deletions(-) + +commit ab035ab2c7bec254fc94d6391398905b5039e777 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 10:06:04 2009 +0100 + + [tessellate] Rectangular special case + + Add an even simpler sweep-line tessellator for rectangular trapezoids (as + produced by the rectilinear stoker and box filler). + + This is so simple it even outperforms pixman's region validation code for the + purposes of path-to-region conversion. + + src/Makefile.sources | 1 + + src/cairo-bentley-ottmann-rectangular.c | 733 +++++++++++++++++++++++++++++++ + src/cairo-clip.c | 26 +- + src/cairo-path-fill.c | 40 +-- + src/cairo-path-stroke.c | 3 +- + src/cairo-surface-fallback.c | 95 ++++- + src/cairo-traps.c | 28 +- + src/cairoint.h | 5 + + 8 files changed, 883 insertions(+), 48 deletions(-) + +commit d7b0c3b784faba756b10b66b9757e6e4c3fce38c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 22:03:06 2009 +0100 + + [script] Track scaled-font + + Instead of emitting the (font-face, matrix and options) elements when + setting up the desired font on the matrix, simply restore the scaled-font. + + src/cairo-script-surface.c | 39 ++++++++++++++++++++++----------------- + 1 files changed, 22 insertions(+), 17 deletions(-) + +commit 7306305cc898c9f27957c6c6717028cbdcff6a5a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 21:59:12 2009 +0100 + + [script] Emit surface content + + Include the desired content with the creation info. + + boilerplate/cairo-boilerplate-script.c | 2 +- + src/cairo-script-surface.c | 34 +++++++++++++++++++------------ + src/cairo-script.h | 1 + + util/cairo-trace/trace.c | 5 +++- + 4 files changed, 27 insertions(+), 15 deletions(-) + +commit 052211b072788f0977dccebdcf681d4874f2487a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 20:16:51 2009 +0100 + + [script] Garbage collect contexts on context switch + + Previously the contexts were permanently associated with the surface and + only destroyed along with the final reference to the surface. This meant + that we kept a large number of unwanted contexts in memory. Most + applications only have a few contexts active at any time, so remove + inactive contexts from the operand stack every time we perform an + operation on a different context. + + src/cairo-script-surface.c | 262 +++++++++++++++++++++++++++++++------------- + 1 files changed, 184 insertions(+), 78 deletions(-) + +commit 8f8b91d9049433c9210e0b3aad574cf659862ae0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 18:37:01 2009 +0100 + + [script] Wrap snapshot. + + Use the snapshot of our target surface if available. + + src/cairo-script-surface.c | 20 ++++++++++++++++---- + src/cairo-surface-wrapper-private.h | 3 +++ + src/cairo-surface-wrapper.c | 6 ++++++ + 3 files changed, 25 insertions(+), 4 deletions(-) + +commit fee647c98506eedad0fea667a9442786cb0804b7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 18:35:48 2009 +0100 + + [script] Read from a FILE stream + + For ease of implementing the interpreter inside a pipeline, add a method + to execute a FILE *. + + util/cairo-script/cairo-script-interpreter.c | 22 ++++++++++++++++++++++ + util/cairo-script/cairo-script-interpreter.h | 4 ++++ + 2 files changed, 26 insertions(+), 0 deletions(-) + +commit a9d997fecd54cea7dcd71487a24dbae14d0073a8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 17:21:05 2009 +0100 + + [script] Introduce cairo_script_context_t + + cairo_script_context_t is an encapsulation object for interfacing with the + output - multiple surfaces can share the same context, meaning that they + write to the same destination file/stream. + + boilerplate/cairo-boilerplate-script.c | 5 +- + boilerplate/cairo-boilerplate.c | 26 +--- + src/cairo-script-surface.c | 225 ++++++++++++++------------------ + src/cairo-script.h | 47 ++++--- + test/cairo-test-trace.c | 5 +- + util/cairo-script/csi-trace.c | 13 +- + util/cairo-trace/trace.c | 20 +-- + 7 files changed, 145 insertions(+), 196 deletions(-) + +commit 28887ac272c8a36a41da4d6d58044164b94da6f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 16:38:08 2009 +0100 + + [trace] Fix emission of similar (track operands) + + util/cairo-trace/trace.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) + +commit dbd9438f5d01666ea118254427c0dc66a519ec3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 15:57:30 2009 +0100 + + [stroke] Only mark traps as having intersection if non-empty. + + We were hitting an assertion attempting to eliminate intersections inside + the rectilinear tessellator for empty strokes. We can avoid this + assertion, by only marking the traps as having potential intersections iff + it is non-empty. + + src/cairo-path-stroke.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 60d73da9f2e148e982254c78773f0b925be184ff +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 24 08:04:12 2009 +0100 + + [clip] Cache intermediate clip masks. + + As we now superimpose a per-operation clip, this defeats the current + top-level caching mechanism. Instead we need to cache the mask for + each path. This still seems quite wasteful, and an avenue would be to + avoid caching if the path is rectilinear and reduce the number of + required composite operations. (However, first find test case...) + + src/cairo-clip.c | 165 +++++++++++++++++++++++++++++++++--------------------- + src/cairoint.h | 3 + + 2 files changed, 104 insertions(+), 64 deletions(-) + +commit 50c7d637f3a97031c5f4e2bc8d41d17e5397db45 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 15:49:11 2009 +0100 + + [trace] Emit an 'index' for an undefined surface + + Larry Ewing hit a bug in cairo-trace whereby it tried to create a similar + surface referencing an undefined object. This fix checks whether the + object has yet to be defined, and if not issues an index in order to copy + the appropriate operand from the stack. + + util/cairo-trace/trace.c | 21 ++++++++++----------- + 1 files changed, 10 insertions(+), 11 deletions(-) + +commit 3a483c2896c28142a90bd0e282af3862e066adfe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 00:19:03 2009 +0100 + + [gstate] Convert simple mask() into a paint() + + As using mask() prevents various optimisations in the backends (for + example the use of geometric clips) and for some may trigger fallbacks, + perform the simplifications usually done (too late) by the pattern layer + in the generic gstate layer. This allows us on the odd occasion to + transform a mask() into a paint() but perhaps more importantly removes the + need for identical transformations in each backend. + + src/cairo-gstate.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++---- + src/cairoint.h | 9 +++-- + 2 files changed, 98 insertions(+), 12 deletions(-) + +commit e2c31183e96f84e7d40a9e5e2b6b8802d47628d0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 23:45:30 2009 +0100 + + [script] Handle zero-length strings + + Not sure where the zero length string is coming from, but we should + nevertheless handle it. + + util/cairo-script/cairo-script-scanner.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 4c215162d24453788b3a461aa47ccf2e638db35e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 23:40:54 2009 +0100 + + [script] Off-by-one in allocation of string length. + + We need pass in the real number of bytes in the string, excluding the NUL + terminator which is already accounted for. + + util/cairo-script/cairo-script-scanner.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 55eddb7ef4b6b561d6692a6f074834d5d5fb94fa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 23:40:04 2009 +0100 + + [script] A little utility to convert a trace into a trace + + Replay the trace using the interpreter onto a script surface - useful for + checking idempotency. + + util/cairo-script/Makefile.am | 6 ++++++ + util/cairo-script/csi-trace.c | 40 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 0 deletions(-) + +commit 4f129863df6392f3deaf6e76fd15adeba98e41b8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 23:38:42 2009 +0100 + + [script] Store the current stroke matrix + + We can skip re-emitting stroke parameters if the values are unchanged and + the scaling matrix is unaltered. + + src/cairo-script-surface.c | 46 +++++++++++++++++++++++++++++++++++-------- + 1 files changed, 37 insertions(+), 9 deletions(-) + +commit 858211f3944507362b2a18d56a65e9a478ccd305 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 22:43:31 2009 +0100 + + [script] Suppress resetting stroke-style elements after matrix switch + + If the user is just using the default values, there is no point re-emitting + them. + + src/cairo-script-surface.c | 42 ++++++++++++++++++++++++++---------------- + 1 files changed, 26 insertions(+), 16 deletions(-) + +commit b6db3053dcde99e26471fdeaedcadd4a6f93b5ef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 22:30:58 2009 +0100 + + [script] Hide the implicit CLEAR for similar surfaces + + Do emit the clear that is performed by the surface layer on similar + surfaces. + + src/cairo-script-surface.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 43 insertions(+), 0 deletions(-) + +commit 005b195f062d896d76a87d608ce313b169f99201 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 22:07:12 2009 +0100 + + [pattern] Ignore matrix/filter/extend when comparing solids + + Solid patterns do not use their matrices, filter or extend properties so + ignore them for the purposes of comparing and hashing. + + src/cairo-pattern.c | 25 ++++++++++++++++--------- + 1 files changed, 16 insertions(+), 9 deletions(-) + +commit bb919584c0054bb3e3c547f65c91cfe48302ac86 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 21:40:37 2009 +0100 + + [script] Use a compact representation for horizontal offsets between glyphs + + Kerning is quite frequent, that is to apply a horizontal but no vertical + offset to a glyph. For instance by discarding the vertical coordinate + where it remains the same and only encoding the horizontal offset we + reduce the file size by ~12.5% when tracing poppler. + + src/cairo-script-surface.c | 56 +++++++++++++++++++-------- + util/cairo-script/cairo-script-operators.c | 22 ++++++++--- + 2 files changed, 55 insertions(+), 23 deletions(-) + +commit cbee97f0e3e784b4482429790fc3f42c81908557 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 21:26:11 2009 +0100 + + [script] Preserve '{}' whilst translating + + util/cairo-script/cairo-script-private.h | 1 + + util/cairo-script/cairo-script-scanner.c | 67 ++++++++++++++++-------------- + 2 files changed, 37 insertions(+), 31 deletions(-) + +commit 24b23200025166e8343425f77a53bedd08790367 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 21:12:59 2009 +0100 + + [script] Fix list handling during font destruction + + Use cairo_list to unhook the font correctly during the fini callback. + + src/cairo-script-surface.c | 33 +++++++++++++-------------------- + 1 files changed, 13 insertions(+), 20 deletions(-) + +commit 4032438625819cfa5d1928d653f404364529a2e1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 17:02:41 2009 +0100 + + [path] Eliminate redundant line-to before a close + + As the close implicitly issues a line-to to the initial point, remove an + identical line-to if present. + + src/cairo-path-fixed.c | 22 ++++++++++++++++++++++ + 1 files changed, 22 insertions(+), 0 deletions(-) + +commit 111f2be71b1e51fac551fd9214d13899a8ec7909 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 17:01:50 2009 +0100 + + [path] Discard redundant line-to + + Eliminate repeated line-to to the current point. + + src/cairo-path-fixed.c | 49 +++++++++++++++++++++++++++-------------------- + 1 files changed, 28 insertions(+), 21 deletions(-) + +commit a2d5f59e2158651ac85dcc8a2b8f49cd2861044e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 17:01:07 2009 +0100 + + [debug] Path printer + + src/cairo-debug.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 3 ++ + 2 files changed, 70 insertions(+), 0 deletions(-) + +commit 4bf96bad9697cbe67907df69d40f46d8d7f24325 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 15:37:35 2009 +0100 + + [fill] Use trivial rectilinear_to_traps + + Avoid a small amount of unnecessary overhead by performing a simple + conversion of the path to traps when it consists solely of simple boxes. + + src/cairo-path-fill.c | 74 ++++++++++++++++++++++++++++++++++++++++++ + src/cairo-surface-fallback.c | 14 ++++++++ + src/cairoint.h | 5 +++ + 3 files changed, 93 insertions(+), 0 deletions(-) + +commit 30e5fa0ce06b2572f09f3d47ee10b692f18ba0ae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 15:36:11 2009 +0100 + + [polygon] Return status from path ops + + This tidies the common case which was to call, for example, + _cairo_polygon_line_to(); _cairo_polygon_status(); + + src/cairo-path-fill.c | 26 ++++---------------------- + src/cairo-polygon.c | 18 ++++++++++++------ + src/cairoint.h | 6 +++--- + 3 files changed, 19 insertions(+), 31 deletions(-) + +commit 3fcac1ef21de9526bc1abca902db5755abe463ae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 13:43:32 2009 +0100 + + [slope] Inline _cairo_slope_init() + + Move the definition to a separate header file and allow callers to inline + the simple function. + + src/Makefile.sources | 1 + + src/cairo-hull.c | 2 + + src/cairo-path-fixed.c | 1 + + src/cairo-path-stroke.c | 2 + + src/cairo-pen.c | 2 + + src/cairo-polygon.c | 2 + + src/cairo-slope-private.h | 65 +++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-slope.c | 9 +----- + src/cairo-spline.c | 2 + + src/cairo-traps.c | 1 + + src/cairoint.h | 17 ------------ + 11 files changed, 79 insertions(+), 25 deletions(-) + +commit a1e0c4b30980d624bb3e015b7dcf39b4a2ef8c56 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 11 13:34:29 2009 +0100 + + [clip] Combine directly onto target + + Where it is unlikely that we will reuse the temporary clip surface, + combine the clip directly with the mask. + + src/cairo-clip-private.h | 3 + + src/cairo-clip.c | 118 +++++++++++++++++++++++++++++++++++++++--- + src/cairo-surface-fallback.c | 26 +--------- + 3 files changed, 115 insertions(+), 32 deletions(-) + +commit 3f12d9ec5db1ac372742c3c03408bdaeaffdc1e4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 28 10:05:52 2009 +0100 + + [clip] Use geometric clipping for unaligned clips + + For the simple cases where the clip is an unaligned box (or boxes), apply + the clip directly to the geometry and avoid having to use an intermediate + clip-mask. + + src/cairo-bentley-ottmann.c | 285 +++--------------------------------- + src/cairo-clip-private.h | 5 + + src/cairo-clip.c | 296 ++++++++++++++++++++++++++++++++++++- + src/cairo-gstate.c | 15 +- + src/cairo-path-fill.c | 8 +- + src/cairo-path-stroke.c | 22 ++-- + src/cairo-polygon.c | 329 +++++++++++++++++++++++------------------- + src/cairo-rectangle.c | 23 +++ + src/cairo-surface-fallback.c | 267 ++++++++++++++++++---------------- + src/cairo-traps.c | 210 +++++++++++++++------------ + src/cairo-types-private.h | 4 +- + src/cairoint.h | 28 +++- + 12 files changed, 830 insertions(+), 662 deletions(-) + +commit 2457c4bedef0447f7bff9b54dba96126010917ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 14:48:03 2009 +0100 + + traps-as-spans + + Add an interface to spans that accepts trapezoids. This allows backends + that have an efficient span-line interface but lack efficient handling + of boxes (partly due to the current poor compositor interface) to + redirect composite_trapezoids() to composite_polygon() and the + span-renderer. + + src/cairo-spans-private.h | 19 +++++++++ + src/cairo-spans.c | 82 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-tor-scan-converter.c | 27 +++++++++++++- + 3 files changed, 127 insertions(+), 1 deletions(-) + +commit 3023330706b1237b0fbd697d015cad9a23c250b7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 10:57:41 2009 +0100 + + [fill] Early check for empty path/polygon + + src/cairo-path-fill.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 9ba37a85d2f6c033d68eb547be6c63382164519e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 10:57:01 2009 +0100 + + [gstate] Discard trivial all-clipped regions + + Avoid assertion failures later that we have a valid region. + + src/cairo-gstate.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 85094c4eee4e50ec724bf1bb54ecff6f7c1014bf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 24 07:06:32 2009 +0100 + + [clip] Eliminate redundant clips + + First perform a simple geometric clip to catch the majority of cases where + an unaligned clip has been set outside the operation extents that can be + discarded without having to use an image surface. + + This causes a dramatic increase of over 13x for the poppler-bug-12266 + trace and little impact elsewhere for more sensible clippers. + + src/cairo-clip-private.h | 8 ++- + src/cairo-clip.c | 187 ++++++++++++++++++++++++++++++++++-------- + src/cairo-gstate.c | 106 +++++++++++++++--------- + src/cairo-path-fill.c | 3 + + src/cairo-surface-fallback.c | 111 ++++++++++++++++++------- + 5 files changed, 309 insertions(+), 106 deletions(-) + +commit ff0ca6d02a2e8901e9cfca31326c3fdc16e77e2f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 5 17:54:48 2009 +0100 + + [test] Stress the intersection handling by feeding spans/traps random curves + + Another stress test for the fill/stroke and intersection finders. + + test/Makefile.am | 10 +++ + test/Makefile.sources | 2 + + test/random-intersections-curves-eo.c | 81 +++++++++++++++++++ + test/random-intersections-curves-eo.pdf.ref.png | Bin 0 -> 246507 bytes + test/random-intersections-curves-eo.ps.ref.png | Bin 0 -> 151676 bytes + test/random-intersections-curves-eo.ref.png | Bin 0 -> 246996 bytes + ...m-intersections-curves-eo.xlib-fallback.ref.png | Bin 0 -> 246243 bytes + test/random-intersections-curves-eo.xlib.ref.png | Bin 0 -> 246243 bytes + test/random-intersections-curves-nz.c | 82 ++++++++++++++++++++ + test/random-intersections-curves-nz.pdf.ref.png | Bin 0 -> 266977 bytes + test/random-intersections-curves-nz.ps.ref.png | Bin 0 -> 134732 bytes + test/random-intersections-curves-nz.ref.png | Bin 0 -> 267589 bytes + ...m-intersections-curves-nz.xlib-fallback.ref.png | Bin 0 -> 266364 bytes + test/random-intersections-curves-nz.xlib.ref.png | Bin 0 -> 266360 bytes + 14 files changed, 175 insertions(+), 0 deletions(-) + +commit 6dfe050d6360409161418d853df3d7d7dfb216af +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 4 15:32:25 2009 +0100 + + [polygon] Amalgamate collinear edges + + Combine sequential collinear edges into a single edge, this benefits + immensely by feeding fewer edges into either the tessellator or spans. + + src/cairo-polygon.c | 58 +++++++++++++++++++++++++++++++++++++++----- + src/cairo-types-private.h | 3 ++ + 2 files changed, 54 insertions(+), 7 deletions(-) + +commit dc886450ac7c04252cff77729e0653c6ea2768db +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 4 13:14:38 2009 +0100 + + [util] Show total edge length in show-edges + + util/show-edges.c | 54 ++++++++++++++++++++++++++++++++++++++++++---------- + 1 files changed, 43 insertions(+), 11 deletions(-) + +commit 0f8af054841c2d6dfe4bfeb3d13a7bab0cfbe2f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 3 08:27:01 2009 +0100 + + [fallback] Avoid tessellating empty polygons + + I added an assert inside the tessellator to ensure that empty polygon were + not being propagated that far... + + src/cairo-surface-fallback.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit 09377a716334df3683912747067cd396768cfab6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 2 13:09:30 2009 +0100 + + [freelist] Lazy initialisation of pools + + src/cairo-freelist-private.h | 31 +++++++++++++++-- + src/cairo-freelist.c | 75 +++++++++++++++-------------------------- + 2 files changed, 56 insertions(+), 50 deletions(-) + +commit 6f0340e2e5079eba597c0a3a7d39da21cf2b5e7a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 21:47:11 2009 +0100 + + [clip] Use the rectilinear tessellator + + We can ensure that we always produce a clip region when possible by using + the rectilinear tessellator to convert complex, device-aligned polygons to + regions. Prior to using the tessellator, we relied on pixman's region code + which could only handle a union of rectangles. + + src/cairo-clip.c | 9 +---- + src/cairo-path-fill.c | 79 +++++++++++++++++++++++++++++++++++++++--------- + 2 files changed, 66 insertions(+), 22 deletions(-) + +commit e3820bef20fdd77ab804b9832f47dc286e4887c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 2 15:17:51 2009 +0100 + + [fill] Short-circuit extents on an empty path. + + If the path is empty, avoid redundant polygonisation and tessellation by + simply returning the empty extents. + + src/cairo-gstate.c | 12 ++++++++++++ + 1 files changed, 12 insertions(+), 0 deletions(-) + +commit 4051ed328b618e28cf1df276899eefa225225c76 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 25 20:51:06 2009 +0100 + + [tessellator] Special case rectilinear tessellation + + For the frequent cases where we know in advance that we are dealing with a + rectilinear path, but can not use the simple region code, implement a + variant of the Bentley-Ottmann tessellator. The advantages here are that + edge comparison is very simple (we only have vertical edges) and there are + no intersection, though possible overlaps. The idea is the same, maintain + a y-x sorted queue of start/stop events that demarcate traps and sweep + through the active edges at each event, looking for completed traps. + + The motivation for this was noticing a performance regression in + box-fill-outline with the self-intersection work: + + 1.9.2 to HEAD^: 3.66x slowdown + HEAD^ to HEAD: 5.38x speedup + 1.9.2 to HEAD: 1.57x speedup + + The cause of which was choosing to use spans instead of the region handling + code, as the complex polygon was no longer being tessellated. + + src/Makefile.sources | 1 + + src/cairo-bentley-ottmann-rectilinear.c | 582 ++++++++++++++++++++++++++++ + src/cairo-bentley-ottmann.c | 5 +- + src/cairo-combsort-private.h | 4 +- + src/cairo-path-fill.c | 100 +----- + src/cairo-path-stroke.c | 1 + + src/cairo-surface-fallback.c | 34 +- + src/cairo-traps.c | 2 + + src/cairoint.h | 18 +- + test/ft-text-vertical-layout-type1.ref.png | Bin 3647 -> 3644 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 3607 -> 3608 bytes + 11 files changed, 631 insertions(+), 116 deletions(-) + +commit 82ccb4c70cbf28167c280e590017b221a406b5c3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 18:47:29 2009 +0100 + + [clip] Use special-purpose fill_to_region() + + Avoid the creation of temporary traps when generating a region, by calling + the to_region() directly. + + src/cairo-clip.c | 26 +++++++++----------------- + 1 files changed, 9 insertions(+), 17 deletions(-) + +commit 41adeac9880d011278f083c620a42b849471a92f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 25 21:25:07 2009 +0100 + + [fallback] Avoid going through traps for trivial regions. + + src/cairo-path-fill.c | 129 +++++++++++++++++++++++++++++ + src/cairo-surface-fallback.c | 184 +++++++++++++++++++++++++++++++----------- + src/cairoint.h | 5 + + 3 files changed, 272 insertions(+), 46 deletions(-) + +commit 55bd590561880136c54da0db1f7f095a426d96a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 24 20:45:56 2009 +0100 + + [tessellator] Use a priority queue for the events + + The skip list was suffering from severe overhead, so though the search was + quick, the extra copies during insertion and deletion were slow. + + src/Makefile.am | 5 +- + src/Makefile.sources | 2 - + src/cairo-bentley-ottmann.c | 341 ++++++++++++++++++++++-------------- + src/cairo-freelist.c | 8 +- + src/cairo-skiplist-private.h | 118 ------------- + src/cairo-skiplist.c | 399 ------------------------------------------ + 6 files changed, 212 insertions(+), 661 deletions(-) + +commit ebfcc2ce8fb6fcaf28d1c59cf7a5b13168cbeb70 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 24 16:50:33 2009 +0100 + + [tessellator] Remove the skiplist for the active edges + + The active edge list is typically short, and the skiplist adds significant + overhead that far outweigh the benefit of the O(n lg n) sort. Instead we + track the position of the last insertion edge, knowing that the start + events are lexicographically sorted, and begin a linear search from there. + + src/cairo-bentley-ottmann.c | 230 ++++++++++++++----------------------------- + 1 files changed, 75 insertions(+), 155 deletions(-) + +commit 36480fe531f19d9c692ee1f8cf09accd4b2c0ad8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 25 07:38:04 2009 +0100 + + [traps] Increase exponential expansion factor. + + Grow the traps more rapidly, as the allocations are very short-lived so + the over-allocation is less of an issue. + + src/cairo-traps.c | 8 +++----- + src/cairoint.h | 8 +++----- + 2 files changed, 6 insertions(+), 10 deletions(-) + +commit 9d51c03bad5f10257e248f43375062902482c0c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 24 13:51:23 2009 +0100 + + [traps] Compute extents on demand. + + src/cairo-region-private.h | 5 - + src/cairo-region.c | 47 ++--- + src/cairo-surface-fallback.c | 10 - + src/cairo-traps.c | 440 ++++++++++++------------------------------ + src/cairoint.h | 9 - + 5 files changed, 144 insertions(+), 367 deletions(-) + +commit f8bb3617c3a7ec598c42eff1f8562e3ccc95127f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 09:32:16 2008 +0000 + + Eliminate self-intersecting strokes. + + We refactor the surface fallbacks to convert full strokes and fills to the + intermediate polygon representation (as opposed to before where we + returned the trapezoidal representation). This allow greater flexibility + to choose how then to rasterize the polygon. Where possible we use the + local spans rasteriser for its increased performance, but still have the + option to use the tessellator instead (for example, with the current + Render protocol which does not yet have a polygon image). + + In order to accommodate this, the spans interface is tweaked to accept + whole polygons instead of a path and the tessellator is tweaked for speed. + + Performance Impact + ================== + + ... + Still measuring, expecting some severe regressions. + ... + + NEWS | 18 + + src/Makefile.am | 2 + + src/cairo-bentley-ottmann.c | 1833 ++++++++++++--------- + src/cairo-clip.c | 14 +- + src/cairo-fixed-private.h | 52 +- + src/cairo-fixed-type-private.h | 5 + + src/cairo-gstate.c | 4 +- + src/cairo-hash.c | 6 - + src/cairo-matrix.c | 27 +- + src/cairo-path-fill.c | 109 +- + src/cairo-path-stroke.c | 1025 +++++++----- + src/cairo-pen.c | 191 --- + src/cairo-polygon.c | 269 +++- + src/cairo-skiplist-private.h | 4 +- + src/cairo-skiplist.c | 8 +- + src/cairo-slope.c | 4 +- + src/cairo-spans-private.h | 45 +- + src/cairo-spans.c | 179 +-- + src/cairo-surface-fallback.c | 208 ++- + src/cairo-tor-scan-converter.c | 492 +++--- + src/cairo-toy-font-face.c | 3 +- + src/cairo-traps.c | 72 +- + src/cairo-types-private.h | 15 +- + src/cairo-wideint-private.h | 47 +- + src/cairo-wideint.c | 34 - + src/cairoint.h | 102 +- + test/Makefile.am | 90 +- + test/Makefile.sources | 3 +- + test/caps-joins-alpha.ref.png | Bin 2463 -> 2570 bytes + test/caps-joins-alpha.xlib.ref.png | Bin 0 -> 2278 bytes + test/caps-joins-curve.ref.png | Bin 5132 -> 5725 bytes + test/caps-joins-curve.xlib.ref.png | Bin 0 -> 5126 bytes + test/clear.pdf.argb32.ref.png | Bin 0 -> 790 bytes + test/clear.ps.argb32.ref.png | Bin 0 -> 790 bytes + test/clip-operator.svg12.argb32.xfail.png | Bin 8406 -> 8404 bytes + test/clip-operator.svg12.rgb24.xfail.png | Bin 4540 -> 4523 bytes + test/clipped-group.pdf.ref.png | Bin 310 -> 334 bytes + test/clipped-trapezoids-ref.png | Bin 0 -> 1055 bytes + test/clipped-trapezoids.c | 95 ++ + test/clipped-trapezoids.ref.png | Bin 0 -> 963 bytes + test/close-path-current-point.ref.png | Bin 1916 -> 1893 bytes + test/dash-caps-joins.ref.png | Bin 4718 -> 4520 bytes + test/dash-curve.ref.png | Bin 39696 -> 41284 bytes + test/dash-curve.xlib.ref.png | Bin 0 -> 40109 bytes + test/dash-scale.ref.png | Bin 8058 -> 7616 bytes + test/degenerate-arc.ref.png | Bin 544 -> 646 bytes + test/degenerate-dash.ref.png | Bin 2005 -> 2086 bytes + test/degenerate-dash.xlib.ref.png | Bin 0 -> 1898 bytes + test/degenerate-path.argb32.ref.png | Bin 0 -> 240 bytes + test/degenerate-path.ref.png | Bin 257 -> 0 bytes + test/degenerate-path.rgb24.ref.png | Bin 224 -> 210 bytes + test/degenerate-pen.ref.png | Bin 1139 -> 997 bytes + test/degenerate-pen.xlib.ref.png | Bin 0 -> 997 bytes + test/device-offset-fractional.pdf.xfail.png | Bin 275 -> 275 bytes + test/fill-and-stroke-alpha-add.ref.png | Bin 591 -> 562 bytes + test/fill-and-stroke-alpha-add.svg12.xfail.png | Bin 614 -> 631 bytes + test/fill-and-stroke-alpha.ref.png | Bin 519 -> 515 bytes + test/fill-and-stroke.argb32.ref.png | Bin 0 -> 313 bytes + test/fill-and-stroke.ref.png | Bin 279 -> 0 bytes + test/fill-and-stroke.rgb24.ref.png | Bin 257 -> 287 bytes + test/fill-and-stroke.xlib.argb32.ref.png | Bin 0 -> 322 bytes + test/fill-and-stroke.xlib.rgb24.ref.png | Bin 0 -> 291 bytes + test/filter-nearest-offset.pdf.xfail.png | Bin 1867 -> 1926 bytes + test/filter-nearest-transformed.pdf.xfail.png | Bin 482 -> 488 bytes + test/ft-text-vertical-layout-type1.ps.ref.png | Bin 0 -> 1634 bytes + test/ft-text-vertical-layout-type1.ps2.ref.png | Bin 1846 -> 0 bytes + test/ft-text-vertical-layout-type1.ps3.ref.png | Bin 1846 -> 0 bytes + test/ft-text-vertical-layout-type1.ref.png | Bin 3643 -> 3647 bytes + test/ft-text-vertical-layout-type1.svg.ref.png | Bin 3607 -> 3609 bytes + test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 3980 -> 3640 bytes + test/ft-text-vertical-layout-type3.ps.ref.png | Bin 0 -> 1636 bytes + test/ft-text-vertical-layout-type3.ps2.ref.png | Bin 1804 -> 0 bytes + test/ft-text-vertical-layout-type3.ps3.ref.png | Bin 1804 -> 0 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 3607 bytes + test/ft-text-vertical-layout-type3.svg.ref.png | Bin 3626 -> 3626 bytes + test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 3934 -> 3605 bytes + test/group-unaligned.svg.argb32.xfail.png | Bin 520 -> 522 bytes + test/joins.ref.png | Bin 5879 -> 5708 bytes + test/leaky-dashed-rectangle.pdf.ref.png | Bin 347 -> 347 bytes + test/leaky-dashed-rectangle.xlib.ref.png | Bin 0 -> 347 bytes + test/leaky-dashed-stroke.ref.png | Bin 9214 -> 9387 bytes + test/leaky-dashed-stroke.xlib.ref.png | Bin 0 -> 9305 bytes + test/line-width-scale.ref.png | Bin 6445 -> 5716 bytes + test/long-dashed-lines.ref.png | Bin 2116 -> 2070 bytes + test/mask-glyphs.svg.ref.png | Bin 1211147 -> 1211158 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3919 -> 3835 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3867 -> 3682 bytes + test/meta-surface-pattern.svg.argb32.ref.png | Bin 3930 -> 3778 bytes + test/meta-surface-pattern.svg.rgb24.ref.png | Bin 3910 -> 3760 bytes + test/new-sub-path.argb32.ref.png | Bin 0 -> 421 bytes + test/new-sub-path.pdf.argb32.ref.png | Bin 0 -> 512 bytes + test/new-sub-path.ref.png | Bin 386 -> 0 bytes + test/new-sub-path.rgb24.ref.png | Bin 355 -> 381 bytes + test/operator-source.svg12.argb32.xfail.png | Bin 2967 -> 2951 bytes + test/operator-source.svg12.rgb24.xfail.png | Bin 2976 -> 2963 bytes + test/over-around-source.pdf.argb32.ref.png | Bin 585 -> 576 bytes + test/random-intersections-eo.c | 78 + + test/random-intersections-eo.ps.ref.png | Bin 0 -> 78806 bytes + test/random-intersections-eo.quartz.ref.png | Bin 0 -> 197778 bytes + test/random-intersections-eo.ref.png | Bin 0 -> 136018 bytes + test/random-intersections-eo.xlib.ref.png | Bin 0 -> 134655 bytes + test/random-intersections-nonzero.c | 79 + + test/random-intersections-nonzero.ps.ref.png | Bin 0 -> 77299 bytes + test/random-intersections-nonzero.ref.png | Bin 0 -> 141154 bytes + test/random-intersections-nonzero.xlib.ref.png | Bin 0 -> 141548 bytes + test/random-intersections.c | 78 - + test/random-intersections.ps2.ref.png | Bin 89253 -> 0 bytes + test/random-intersections.ps3.ref.png | Bin 89253 -> 0 bytes + test/random-intersections.quartz.ref.png | Bin 197778 -> 0 bytes + test/random-intersections.ref.png | Bin 133462 -> 0 bytes + test/random-intersections.xlib.ref.png | Bin 148722 -> 0 bytes + test/reflected-stroke.ref.png | Bin 5704 -> 4978 bytes + test/rel-path.ref.png | Bin 212 -> 198 bytes + test/rel-path.rgb24.ref.png | Bin 228 -> 214 bytes + test/scale-offset-image.meta.xfail.png | Bin 8599 -> 0 bytes + test/scale-offset-image.pdf.xfail.png | Bin 8694 -> 10099 bytes + test/scale-offset-image.xfail.png | Bin 8599 -> 9960 bytes + test/scale-offset-image.xlib-fallback.xfail.png | Bin 8580 -> 8706 bytes + test/scale-offset-image.xlib.xfail.png | Bin 9100 -> 9132 bytes + test/scale-offset-similar.meta.xfail.png | Bin 9095 -> 10752 bytes + test/scale-offset-similar.pdf.xfail.png | Bin 9368 -> 11024 bytes + test/scale-offset-similar.xfail.png | Bin 8599 -> 9960 bytes + test/scale-offset-similar.xlib-fallback.xfail.png | Bin 8580 -> 8706 bytes + test/scale-offset-similar.xlib.xfail.png | Bin 8570 -> 8696 bytes + test/self-intersecting.argb32.xfail.png | Bin 235 -> 0 bytes + test/self-intersecting.c | 3 + + test/self-intersecting.pdf.argb32.xfail.png | Bin 285 -> 0 bytes + test/self-intersecting.pdf.rgb24.xfail.png | Bin 269 -> 0 bytes + test/self-intersecting.ps.argb32.xfail.png | Bin 186 -> 0 bytes + test/self-intersecting.ps.ref.png | Bin 0 -> 186 bytes + test/self-intersecting.ps.rgb24.xfail.png | Bin 186 -> 0 bytes + test/self-intersecting.ref.png | Bin 242 -> 301 bytes + test/self-intersecting.rgb24.ref.png | Bin 304 -> 0 bytes + test/self-intersecting.rgb24.xfail.png | Bin 240 -> 0 bytes + test/self-intersecting.xlib.argb32.xfail.png | Bin 235 -> 0 bytes + test/self-intersecting.xlib.ref.png | Bin 0 -> 252 bytes + test/self-intersecting.xlib.rgb24.xfail.png | Bin 240 -> 0 bytes + test/smask-stroke.ref.png | Bin 1845 -> 1714 bytes + test/smask-stroke.xlib.ref.png | Bin 0 -> 1707 bytes + test/smask.ps.ref.png | Bin 0 -> 3430 bytes + test/smask.ps2.ref.png | Bin 3669 -> 0 bytes + test/smask.ps3.ref.png | Bin 3669 -> 0 bytes + test/smask.ref.png | Bin 3417 -> 3423 bytes + test/smask.svg.ref.png | Bin 3458 -> 3457 bytes + test/smask.xlib.ref.png | Bin 3393 -> 3386 bytes + test/spline-decomposition.pdf.ref.png | Bin 19156 -> 19540 bytes + test/spline-decomposition.ps.ref.png | Bin 9090 -> 9028 bytes + test/spline-decomposition.ref.png | Bin 19107 -> 19569 bytes + test/spline-decomposition.svg.ref.png | Bin 19156 -> 19540 bytes + test/spline-decomposition.xlib.ref.png | Bin 0 -> 19158 bytes + test/stroke-ctm-caps.ref.png | Bin 1057 -> 873 bytes + test/stroke-image.pdf.ref.png | Bin 1554 -> 1475 bytes + test/stroke-image.ps.ref.png | Bin 0 -> 1641 bytes + test/stroke-image.ps2.ref.png | Bin 2121 -> 0 bytes + test/stroke-image.ps3.ref.png | Bin 2121 -> 0 bytes + test/stroke-image.ref.png | Bin 1866 -> 1344 bytes + test/stroke-image.xlib.ref.png | Bin 0 -> 1440 bytes + test/surface-pattern.pdf.xfail.png | Bin 10528 -> 10532 bytes + test/text-rotate.pdf.ref.png | Bin 16639 -> 16757 bytes + test/text-rotate.ref.png | Bin 17775 -> 16738 bytes + test/text-rotate.svg.ref.png | Bin 17024 -> 17118 bytes + test/text-rotate.xlib.ref.png | Bin 0 -> 16646 bytes + test/twin.ps.ref.png | Bin 2197 -> 2142 bytes + test/twin.ref.png | Bin 4038 -> 3979 bytes + test/twin.xlib.ref.png | Bin 0 -> 4435 bytes + test/unantialiased-shapes.ref.png | Bin 4459 -> 3969 bytes + test/unbounded-operator.svg12.argb32.ref.png | Bin 0 -> 2767 bytes + test/unbounded-operator.svg12.argb32.xfail.png | Bin 2771 -> 0 bytes + test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1731 -> 1719 bytes + test/user-font-proxy.svg.ref.png | Bin 16814 -> 16817 bytes + test/user-font.ps.ref.png | Bin 0 -> 4605 bytes + test/user-font.ps2.ref.png | Bin 5043 -> 0 bytes + test/user-font.ps3.ref.png | Bin 5043 -> 0 bytes + test/user-font.ref.png | Bin 6082 -> 6270 bytes + test/user-font.xlib.ref.png | Bin 6183 -> 5884 bytes + util/.gitignore | 3 + + util/Makefile.am | 23 +- + util/show-edges.c | 1189 +++++++++++++ + util/show-events.c | 845 ++++++++++ + util/show-traps.c | 1239 ++++++++++++++ + 180 files changed, 6303 insertions(+), 2190 deletions(-) + +commit 7c499db8afe8a7cf8c512ec166fe7dbf11a25c02 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 25 20:37:55 2009 +0100 + + [test] Minor tweak of ft-text-vertical-layout + + Tidily destroy the font immediately after use. + + test/ft-text-vertical-layout-type1.c | 6 ++---- + test/ft-text-vertical-layout-type3.c | 5 ++--- + 2 files changed, 4 insertions(+), 7 deletions(-) + +commit bdd3c5ba6987280b455229dd12b20c22159ce61c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 18:59:01 2009 +0100 + + [perf] Match directory names + + In order to handle 'cairo-perf-trace benchmark', we need to perform the + can_run? test on the directory name as opposed to the individual trace + names. Make it so. + + perf/box-outline.c | 2 +- + perf/cairo-perf-trace.c | 37 ++++++++++++++++++++++++++++--------- + perf/cairo-perf.c | 14 +++++++++++--- + perf/cairo-perf.h | 3 ++- + perf/composite-checker.c | 2 +- + perf/dragon.c | 3 ++- + perf/fill.c | 2 +- + perf/glyphs.c | 2 +- + perf/intersections.c | 2 +- + perf/long-dashed-lines.c | 2 +- + perf/long-lines.c | 2 +- + perf/mask.c | 2 +- + perf/mosaic.c | 2 +- + perf/paint-with-alpha.c | 2 +- + perf/paint.c | 2 +- + perf/pattern_create_radial.c | 2 +- + perf/pythagoras-tree.c | 4 ++-- + perf/rectangles.c | 2 +- + perf/rounded-rectangles.c | 2 +- + perf/spiral.c | 2 +- + perf/stroke.c | 2 +- + perf/subimage_copy.c | 2 +- + perf/tessellate.c | 2 +- + perf/text.c | 2 +- + perf/twin.c | 2 +- + perf/unaligned-clip.c | 2 +- + perf/world-map.c | 2 +- + perf/zrusin.c | 2 +- + 28 files changed, 68 insertions(+), 39 deletions(-) + +commit 77c11096169bc8af6aa08241a800a51a2292a27a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 12:23:03 2009 +0100 + + [perf] Reset global caches after every trace + + I'd disabled this to look at cairo-qt performance, then forgot about it. + Be clean, cleanup globals -- this should fix the huge performance loss + when running in series multiple backends that need separate font caches. + + perf/cairo-perf-trace.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 9c8e60f7718b29051268541d2cfec58e51d8e7b8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 12:09:25 2009 +0100 + + [perf] Remove cpuset warning for cairo-perf-trace + + These traces run for much longer than the original synthetic benchmarks + and seek to replicate 'real-world' applications, so the warning that the + xserver and cairo-perf are not bound to any cpu is false. + + perf/cairo-perf-trace.c | 47 ----------------------------------------------- + 1 files changed, 0 insertions(+), 47 deletions(-) + +commit d07ed5d990634dc09d0d1b6ce45aa8ad1994b75a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 19 12:36:56 2009 +0100 + + [perf] Add charting utility + + cairo-perf-chart takes multiple runs (currently it is limited to + prefiltered data sets) and pretty-prints a chart showing performace + improvements/regressions (in either ASCII or HTML) along with a + cairo-perf-chart.png + + perf/Makefile.am | 4 + + perf/cairo-perf-chart.c | 751 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 755 insertions(+), 0 deletions(-) + +commit 015eccadcb8b22f302bdaa315b88981a38294686 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 16 09:57:07 2009 +0100 + + [perf] Fix unaligned-clip + + We failed to reset the scale after each loop, eventually generating a vast + clip-mask that exceeded memory capacity. + + perf/unaligned-clip.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 6f8fae21e6fee07a8f6561f77bcb0bfaf64f5882 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 15 10:16:41 2009 +0100 + + [perf] Add a box mode to spiral + + Add a very similar 'spiral' path (really just concentric boxes) that hit + the rectangular optimisations so that we can compare how effective they + are. + + perf/spiral.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 73 insertions(+), 0 deletions(-) + +commit e79a9a87c311fd0499c96cecbe560839a17d244e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 15 10:33:48 2009 +0100 + + [perf] Support objdir!=srcdir in cairo-perf-diff + + Crude support to detect when we have cairo-perf-diff-files in the local + directory which is not srcdir. + + perf/cairo-perf-diff | 26 ++++++++++++++++---------- + 1 files changed, 16 insertions(+), 10 deletions(-) + +commit 6bfb77a33c3614cafdcd6206de5c71321c5fc1e5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Aug 14 19:53:17 2009 +0100 + + [perf] Add spiral strokes + + Use cairo_stroke() to perform the equivalent of + spiral-rect-(pix|non)align-evenodd-fill. A useful comparison of stroking + versus filling, as we can assume the composition costs are similar. + + perf/spiral.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 73 insertions(+), 0 deletions(-) + +commit 54b2935c3842e77888faef06bbf247f99bd9de8c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 23:23:41 2009 +0100 + + [perf] Reset the path after each spiral + + Oops we were accumulating paths during each spiral iteration and so the + tests were getting slower and slower and slower... + + [And fix a couple of other instances of path accumulation.] + + perf/intersections.c | 2 ++ + perf/spiral.c | 1 + + perf/world-map.c | 2 ++ + 3 files changed, 5 insertions(+), 0 deletions(-) + +commit fddfe4973f5b49f280734ee7141ab72451cf94d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 13 15:52:06 2009 +0100 + + [perf] Add clipped modes to dragon + + Investigate the performance hit for unclipped/aligned/unaligned/masked + modes with a reasonably complex geometry. + + perf/dragon.c | 35 +++++++++++++++++++++++++++++++++++ + 1 files changed, 35 insertions(+), 0 deletions(-) + +commit 8b3be26c7be0747378792e3a454e500d290c3982 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 12 00:02:04 2009 +0100 + + [test] Remove misleading code/comments from a1-image-sample + + test/a1-image-sample.c | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit e702df59b05246a52a645792a65dc9c12d5b3feb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Aug 22 17:53:59 2009 +0100 + + [test] Attempt to automatically detect running under gdb + + A common mistake is to forget to pass the foreground mode to + cairo-test-suite when launching it under the debugger, resulting in the + debugger not attaching to the children and missing the error you were + trying to capture. Under linux, we can inspect the path to our parent's + executable and if that looks like gdb, we assume it is and disable forking + of traces. + + test/cairo-test-runner.c | 32 ++++++++++++++++++++++++++++++++ + 1 files changed, 32 insertions(+), 0 deletions(-) + +commit bf4977b645270bb88225501e73848f7814cccead +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 25 07:16:16 2009 +0100 + + [test] Exit on first failure '-x' + + Add a command line option to the test suite to cause it to exit after the + first failure. The purpose of this is for integration into 'git bisect run', + where the failing test is unknown and we are looking for any failure. For + example, for use in a regression script to find commits in the midst of as + series that need a refresh of a reference image (or fixing!). + + test/cairo-test-runner.c | 15 +++++++++++++-- + 1 files changed, 13 insertions(+), 2 deletions(-) + +commit 40aefac5d714bf7536632ed38c7a8ee05049f30b +Author: Benjamin Otte <otte@gnome.org> +Date: Wed Aug 26 21:22:07 2009 +0200 + + [xlib] DO_XCOPYAREA and DO_XTILE optimizations break with Window source + + Cairo should include the contents of subwindows when using a Window as a + source but will clip to subwindows when using a Window as a destination. + This can be set using the GC's subwindow_mode. + + XCopyArea and XFillRectangle can however only use one GC for both source + and destination. Cairo's mode is set to (the default) ClipByChildren. + This means that copying from a Window is broken, so we only allow the + optimization when we know that the source is a Pixmap. + + The performance impact of this change has not been tested. It should be + small, as the code will use XRender otherwise. + + If it turns out to be a bigger impact, the optimizations could be + improved by doing a two-step copy process: + 1) Copy to an intermediate Pixmap with IncludeInferiors + 2) Copy to the destination with ClipByChildren + (potentially omitting one one of the steps if source or destination are + known to be Pixmaps). + + references: + commit 0c5d28a4e5ce5e4dd72c0f416ce5e960e92b808b + https://bugs.freedesktop.org/show_bug.cgi?id=12996 + + src/cairo-xlib-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 90536ef2dd534d9385d38125445faeadd0511850 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Aug 25 00:28:08 2009 -0400 + + [build] Remove bogus warning that we require at least one native font backend + + That limitation was lifted long ago after twin face was introduced. + + build/configure.ac.features | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit 20e227fc397d064af0b4b8bbf4028430695a218d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Aug 24 23:57:21 2009 -0400 + + [build] Fix typo + + build/aclocal.enable.m4 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 87fb9a9ded0fb0355f91cad188393d26b9e47e0b +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Mon Aug 17 00:59:46 2009 -0400 + + [test] Update reference image for the extended-blend-mode test. + + A recent pixman change caused one-bit differences in some pixels. + + test/extended-blend-alpha.argb32.ref.png | Bin 9777 -> 9406 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit d1b8e260d43c7dee71244f26d50d8b2e49e9b6e0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 21:29:13 2009 +0100 + + [qt] Fix compilation + + Enabling 'FAST CLIP' appears to trigger an infinite loop so disable. + + Enabling 'FAST FILL' has limited effect on performance, so disable whilst + the basic QT surface is improved. + + perf/cairo-perf-trace.c | 2 +- + src/cairo-qt-surface.cpp | 63 ++++++++++++++++++++++++++++++--------------- + 2 files changed, 43 insertions(+), 22 deletions(-) + +commit dff0a91742908098a1ee110fadf11d4b802b1587 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 17:57:16 2009 +0100 + + [xlib] Rewrite UNSUPPORTED() avoiding gcc-ism + + Behdad pointed out that fprintf() returns a value so that we could simply + use the comma operator to return the correct value instead of the + expression-block gcc-ism. + + src/cairo-xlib-surface.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit e63d725ad4fb92a0085224f627cbced3e3205735 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jun 6 01:08:22 2009 -0400 + + [utils] Remove unused code + + util/malloc-stats.c | 30 ------------------------------ + 1 files changed, 0 insertions(+), 30 deletions(-) + +commit d4d0fcb4a8055f1fdd24fc5b7b64bb55d55e1485 +Author: Andrea Canciani <ranma42@gmail.com> +Date: Mon Aug 10 17:43:31 2009 +0100 + + [quartz] Compile fix for show_glyphs + + Correct the prototype for _cairo_quartz_surface_show_glyphs(). + + src/cairo-quartz-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2a2a19457bb934f9585bfdb97730fab99c8e386c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 17:42:05 2009 +0100 + + [surface] Check for a NULL snapshot + + The backend is permitted to return a NULL surface when snapshotting to + indicate that it cannot (or choses not to) implement the method. + + src/cairo-surface.c | 28 +++++++++++++++------------- + 1 files changed, 15 insertions(+), 13 deletions(-) + +commit 2e8ce34454a4d93986f590b1d2b024d1a1eb6bde +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 16:51:07 2009 +0100 + + [quartz] Use the implementation font-face not the associated + + As the associated is now explicitly the font-face used to create the font + by the user, whereas what we require is the current implementation + (quartz) font. + + src/cairo-quartz-font.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit a4dc372bab8ebe75a9f7d17a9a2e6fc8d9d2d747 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 16:50:00 2009 +0100 + + [scaled-font] Update API documentation + + Now that the toy-font-face is exposed to the user, it is expected to be + returned when the user queries the font face associated with a scaled font. + + src/cairo-scaled-font.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit c4828666b9b4dad39c3f17fdfd7d1dd3cbb83cbc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 10 16:45:41 2009 +0100 + + [script] Handle translation of compressed strings. + + After introducing the new syntax to mark a deflated string, we also need + to add the equivalent binary tokens. + + util/cairo-script/cairo-script-file.c | 10 ++-- + util/cairo-script/cairo-script-scanner.c | 81 +++++++++++++++++++----------- + 2 files changed, 56 insertions(+), 35 deletions(-) + +commit 34870491951f5a712833b5fe7ed84c935bccfc5a +Author: Andrea Canciani <ranma42@gmail.com> +Date: Sun Aug 9 22:33:28 2009 +0200 + + [quartz] Fix one more compile error + + src/cairo-quartz-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c2e75b9993ab1d30002877fc11b52ea7b9acd40b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Aug 9 21:12:36 2009 +0100 + + [quartz] Attempt to fix compile errors + + ranma42 spotted that the quartz-backend no longer compiled after bed270, + so once again attempt to blindly fix those errors... + + src/cairo-quartz-surface.c | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +commit 81c4594712843abca188a33c1edfb70fa6c5a0d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 23:41:11 2009 +0100 + + [script] Ensure strings are nul terminated + + Infrequently, but, for example, handling glyph strings, we require the + string to be nul terminated. (Otherwise an error occurs, which was + previously compounded by a drastic leak.) + + util/cairo-script/cairo-script-scanner.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 86d6a489527d125e739aa5a6d17893bb44977010 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 23:39:21 2009 +0100 + + [script] Check for failure to store the glyph cache + + If we fail to add the glyph cache (presumably because the font is in + error) do not leak the allocation. As this occurs for every single glyph + string, the leak can grow very quickly and mask the original bug. + + util/cairo-script/cairo-script-operators.c | 14 ++++++++++---- + 1 files changed, 10 insertions(+), 4 deletions(-) + +commit af392f7e45edcbf101ca7c91fc1ee372d283e8b9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 23:17:06 2009 +0100 + + [script] Extend csi-replay to show how to use a single surface + + Currently the replay creates a fresh surface for every new surface. Whilst + using it to view replays (such as with --xlib) this is often not what is + desired so add a mode (compile-time only for now) to use similar surfaces + and blits to the front buffer instead. + + util/cairo-script/csi-replay.c | 73 +++++++++++++++++++++++++++++++++++++++- + 1 files changed, 72 insertions(+), 1 deletions(-) + +commit b7639a5f79eaecfbaf1710fc679c7be375638efd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 10:55:18 2009 +0100 + + [trace] Close the dictionary before font + + font expects the dictionary to be constructed on the stack for its use, so + close it. (I missed the closing '>>' when switching between dictionary + constructors.) + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 19f54d872fcfa9801abee9c57e30c6b3fc7eef40 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 10:40:32 2009 +0100 + + [gl] Move hidden cairo_gl_surface_create() proto to header + + Make check-plt.sh happy + + src/cairo-gl-private.h | 2 ++ + src/cairo-gl-surface.c | 1 - + 2 files changed, 2 insertions(+), 1 deletions(-) + +commit ee69f8aa5e0697aaeee9c00839fb7b30fe7e3184 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 10:30:52 2009 +0100 + + [trace] Whitespace + + A few gratuitous whitespace and increase the buffer size used whilst + reading in data files. + + util/cairo-trace/trace.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 6d30021d65aa4126cd5eef47b0e6057dfc17d7ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 10:29:49 2009 +0100 + + [trace] Only write the 4 byte length to the stream + + We were attempting to write out the whole length of the block when we were + just trying to write out the length value. + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a439bd99d0439c007bc74584c1eb56700c520b52 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 5 17:34:29 2009 +0100 + + [perf] Compare drawing random curves + + Extend the intersection tests with straight lines, with random curves as + well. + + perf/intersections.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 57 insertions(+), 1 deletions(-) + +commit 1327df2cf2f2dd9f98533d824503dfb081803b05 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 4 20:15:13 2009 +0100 + + [pattern] Invalid access beyond end of freed-pool + + Oops, we were attempting to return a pointer from beyond the end of our + array. + + src/cairo-pattern.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 920f59a755ce142b068f21b9db07f76f35449f16 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 4 20:13:43 2009 +0100 + + [build] Configure switch to disable atomics + + Workaround for my arm toolchain which succeeds in linking the configure + program, only to complain when linking a program (such as cairo-perf) + against libcairo.so. Annoying. + + build/configure.ac.system | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit cb30c1f367967e3395296a5d01a3eb9050635e3b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Aug 4 13:59:03 2009 +0100 + + [path] Extend identical lines. + + If a subsequent PATH_OP is just a continuation of the previous line, i.e. + it has the same gradient, then just replace the end-point of the previous + line with the new point rather than adding a new operation. Surprisingly + this occurs in the wild, but the main motivation is a future optimisation + to reduce the number of intersections during stroke-to-path. + + src/cairo-path-fixed.c | 31 ++++++++++++++++++++++++++++--- + src/cairoint.h | 7 +++++++ + 2 files changed, 35 insertions(+), 3 deletions(-) + +commit 85b688a3f6271427befca699de3a7a15162fc59e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 3 22:27:22 2009 +0100 + + [matrix] Use hypot() + + Use hypot() instead of open-coding sqrt(x*x + y*y). In theory, the + compiler could emit highly efficient code. In practice it's slower, but + more likely to be more accurate -- but the difference over a bare sqrt() + is likely not to be perceptible. + + src/cairo-matrix.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 0db9e010fa70c65451d324cc9c0ade989f77fedd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Aug 3 22:23:19 2009 +0100 + + [perf] Calibrate tests to run for at least 2 seconds + + By ensuring that tests take longer than a couple of seconds we eliminate + systematic errors in our measurements. However, we also effectively + eliminate the synchronisation overhead. To compensate, we attempt to + estimate the overhead by reporting the difference between a single + instance and the minimum averaged instance. + + perf/box-outline.c | 14 +++- + perf/cairo-perf-report.c | 4 +- + perf/cairo-perf.c | 39 +++++++++--- + perf/cairo-perf.h | 2 +- + perf/composite-checker.c | 22 ++++--- + perf/dragon.c | 142 +++++++++++++++++++++-------------------- + perf/fill.c | 21 +++++-- + perf/glyphs.c | 32 +++++----- + perf/intersections.c | 27 ++++---- + perf/long-dashed-lines.c | 9 ++- + perf/long-lines.c | 68 ++++++++++---------- + perf/mask.c | 45 ++++++++----- + perf/mosaic.c | 38 ++++++----- + perf/paint-with-alpha.c | 5 +- + perf/paint.c | 5 +- + perf/pattern_create_radial.c | 24 ++++--- + perf/pythagoras-tree.c | 20 +++--- + perf/rectangles.c | 38 ++++++----- + perf/rounded-rectangles.c | 47 +++++++++++--- + perf/spiral.c | 51 +++++++-------- + perf/stroke.c | 19 ++++-- + perf/subimage_copy.c | 7 ++- + perf/tessellate.c | 17 +++--- + perf/text.c | 27 +++++---- + perf/twin.c | 29 +++++---- + perf/unaligned-clip.c | 37 +++++------ + perf/world-map.c | 78 ++++++++++++----------- + perf/zrusin.c | 10 ++- + 28 files changed, 496 insertions(+), 381 deletions(-) + +commit 60c574ad062f3d8526056942bb7c9e71610a2773 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Aug 5 15:11:00 2009 +0100 + + [surface] Protect against the user setting a fallback resolution of 0. + + Bug 23067 -- using clear drawing operator crashes printing + http://bugs.freedesktop.org/show_bug.cgi?id=23067 + + Here we were hitting an assert within the paginated surface after creating + a zero sized fallback image, due to the paginated surface being created + with an x fallback resolution of 0 dpi (by + _gtk_printer_create_cairo_surface(), gtk/gtkprinter.c:924). + + Avoid the bug by guarding against bad input to + cairo_surface_set_fallback_resolution() which also allows us to identity + the invalid caller. + + src/cairo-surface.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit a3f393cf644d75065fe524e2fbb28f55844f43bf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 09:52:34 2009 +0100 + + [configure] Also check for libiberty.h + + cairo-trace also uses the libiberty.h without checking for its presence -- + causing a build failure if bfd was installed but not that header. + + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 51bd27afa147f78c8f4f3778cee725b6444e7eb0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 09:41:15 2009 +0100 + + [boilerplate/test] Convert make-*-constructors to shell + + Remove the intermediate C program that was a nuisance whilst + cross-compiling and replace it with a simple shell script that is just a + combination of cat + sed. + + boilerplate/Makefile.am | 17 +-- + boilerplate/make-cairo-boilerplate-constructors.c | 163 -------------------- + boilerplate/make-cairo-boilerplate-constructors.sh | 24 +++ + build/configure.ac.tools | 8 - + test/Makefile.am | 11 +- + test/make-cairo-test-constructors.c | 162 ------------------- + test/make-cairo-test-constructors.sh | 24 +++ + 7 files changed, 56 insertions(+), 353 deletions(-) + +commit 5dd29d7e2da8684ea46c8f1baba42e6dc64f1351 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Aug 6 09:55:43 2009 +0100 + + [directfb] Conditionally use DSPF_BGR555 + + Appears that this token is more recent than some of my headers, so check + for its presence before use. + + src/cairo-directfb-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 1d2abe7d1061e580e189604b25465c8025cedfb7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 19:38:23 2009 +0100 + + [gl] Refresh clip-operator ref. + + A minor renderering difference, acceptable. + + test/Makefile.am | 1 + + test/clip-operator.gl.argb32.ref.png | Bin 0 -> 8296 bytes + 2 files changed, 1 insertions(+), 0 deletions(-) + +commit 640a0be2e2ef0124424aeca32915a2f644b03d27 +Merge: 067de9c 5c2239b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 18:03:35 2009 +0100 + + Merge branch 'gl-glyph-cache' + + Comparing the glyph-cache on an i915: + + gnome-terminal-20090728: 1.51x speedup + firefox-20090601: No change + +commit 5c2239be4b11437b1ab1731ef2dfac6cfb8095b1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 16:29:49 2009 +0100 + + [gl] Use scissors rather than allocating a temporary depth buffer. + + src/cairo-gl-glyphs.c | 9 ---- + src/cairo-gl-private.h | 9 ++++ + src/cairo-gl-surface.c | 114 ++++++++++-------------------------------------- + 3 files changed, 32 insertions(+), 100 deletions(-) + +commit 067de9cf62223ee7a36aab10e3d8a4e0dcda4741 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 17:49:39 2009 +0100 + + [test] Add clip-fill. + + Test filling through a complex clip. + + test/Makefile.am | 4 ++ + test/Makefile.sources | 1 + + test/clip-fill.c | 78 ++++++++++++++++++++++++++++++++++ + test/clip-fill.ps.xfail.png | Bin 0 -> 522 bytes + test/clip-fill.ref.png | Bin 0 -> 1035 bytes + test/clip-fill.xlib-fallback.ref.png | Bin 0 -> 1039 bytes + test/clip-fill.xlib.ref.png | Bin 0 -> 1049 bytes + 7 files changed, 83 insertions(+), 0 deletions(-) + +commit 7db1fb6fa97e0c44e66c0ae533b94fb3f26b273d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 16:57:14 2009 +0100 + + [test] Add clip-text + + Test applying a complex clip to text. + + test/Makefile.am | 4 ++ + test/Makefile.sources | 1 + + test/clip-text.c | 88 +++++++++++++++++++++++++++++++++++++++++++ + test/clip-text.ps.xfail.png | Bin 0 -> 434 bytes + test/clip-text.ref.png | Bin 0 -> 928 bytes + test/clip-text.svg.ref.png | Bin 0 -> 933 bytes + test/clip-text.xlib.ref.png | Bin 0 -> 900 bytes + 7 files changed, 93 insertions(+), 0 deletions(-) + +commit 728d3f6383bba218de03f2693f289ddad6a80d0c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 16:24:37 2009 +0100 + + Revert "[gl] Fixup unbounded regions after spans" + + This reverts commit f7121ca88844fa70ecb1a35f3f6c9b653324718d. + + src/cairo-gl-surface.c | 68 +++++------------------------------------------- + 1 files changed, 7 insertions(+), 61 deletions(-) + +commit 74bdea1249bc1fcd223e9bab83d9b9e22fa98b99 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 16:20:54 2009 +0100 + + [spans] Emit empty rows. + + A problem that does not present itself whilst using spans to intermediate + masks is that the tor-span-convertor did not emit the empty rows. When + compositing directly using spans with an unbounded operator this was + causing rendering artefacts, for overlapping-glyphs and the gl backend. + + src/cairo-tor-scan-converter.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 1e4b9ab04bfe18f50b9b7c2cdb75d5828e33ef69 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 15:27:20 2009 +0100 + + [gl] Return status from _render_glyphs() + + src/cairo-gl-glyphs.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 097484da6fd70867ed2128e78247eab5c43217fb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 14:48:32 2009 +0100 + + [boilerplate] Conditionally tweak the xlib surface + + Prior to introduction of the buggy members to the surface, we obviously + cannot set them. However, the boilerplate code is meant to compile against + older revisions of the library so we need to check for the existence prior + to use. + + boilerplate/cairo-boilerplate-xlib.c | 10 ++++++++-- + src/cairo-xlib-surface-private.h | 3 +++ + 2 files changed, 11 insertions(+), 2 deletions(-) + +commit 397538a251ae19bb1a34650763eb9a80108a96de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 12:17:28 2009 +0100 + + [boilerplate] Update fallbacks after disabling RENDER + + The xlib surface caches flags based on RENDER version, so after disabling + render to force fallbacks, we need to ensure that the flags are reset. + + boilerplate/cairo-boilerplate-xlib.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 786d1f962a7e7ee7036ea85d4ea3aec7580e25db +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 13:17:24 2009 +0100 + + [xlib] Use server-side gradients. + + We can offload creation of gradients to server that support RENDER 0.10 + and later. This greatly reduces the amount of traffic we need to send over + our display connection as the gradient patterns are much smaller than the + full image. Even if the server fallbacks to using pixman, performance + should be improved by the reduced transport overhead. Furthermore this is a + requisite to enable hardware accelerated gradients with the xlib backend. + + Running cairo-perf-trace on tiny, Celeron/i915: + + before: firefox-20090601 211.585 + after: firefox-20090601 270.939 + + and on tiger, CoreDuo/nvidia: + + before: firefox-20090601 70.143 + after: firefox-20090601 87.326 + + where linear gradients are used extensively throughout the GTK+ theme. + Not quite the result I was expecting! + + In particular, looking at tiny: + + xlib-rgba paint-with-alpha_linear-rgba_over-512 47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%): 2.62x slowdown + █▋ + xlib-rgba paint-with-alpha_linear3-rgba_over-512 47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%): 2.62x slowdown + █▋ + xlib-rgba paint-with-alpha_linear-rgb_over-512 47.19 (47.21 0.02%) -> 123.37 (123.70 0.13%): 2.61x slowdown + █▋ + xlib-rgba paint-with-alpha_linear3-rgb_over-512 47.30 (47.31 0.04%) -> 123.52 (123.62 0.09%): 2.61x slowdown + █▋ + xlib-rgba paint_linear3-rgb_over-512 47.29 (47.32 0.05%) -> 118.95 (119.60 0.29%): 2.52x slowdown + █▌ + xlib-rgba paint_linear-rgba_over-512 47.14 (47.17 0.06%) -> 116.76 (117.06 0.16%): 2.48x slowdown + █▌ + xlib-rgba paint_linear3-rgba_over-512 47.32 (47.34 0.04%) -> 116.85 (116.98 0.05%): 2.47x slowdown + █▌ + xlib-rgba paint_linear-rgb_over-512 47.15 (47.19 0.03%) -> 114.08 (114.55 0.20%): 2.42x slowdown + █▍ + xlib-rgba paint-with-alpha_radial-rgb_over-512 117.25 (119.43 1.21%) -> 194.36 (194.73 0.09%): 1.66x slowdown + ▋ + xlib-rgba paint-with-alpha_radial-rgba_over-512 117.22 (117.26 0.02%) -> 193.81 (194.17 0.11%): 1.65x slowdown + ▋ + xlib-rgba paint_radial-rgba_over-512 117.23 (117.26 0.02%) -> 186.35 (186.41 0.03%): 1.59x slowdown + ▋ + xlib-rgba paint_radial-rgb_over-512 117.23 (117.27 0.02%) -> 184.14 (184.62 1.51%): 1.57x slowdown + ▋ + + Before 1.10, we may choose to disable server-side gradients for the + current crop of Xorg servers, similar to the extended repeat modes. + + [Updated by Chris Wilson. All bugs are his.] + + NEWS | 28 ++++ + src/cairo-xlib-display.c | 9 +- + src/cairo-xlib-private.h | 3 +- + src/cairo-xlib-surface-private.h | 5 +- + src/cairo-xlib-surface.c | 306 ++++++++++++++++++++++++++++++++++---- + 5 files changed, 318 insertions(+), 33 deletions(-) + +commit 53cbbad8fbbd2b9423a5eb179d0cec3fc7678791 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 11:35:45 2009 +0100 + + [xlib] Disable extended repeat modes if RENDER < 0.10 + + The extended repeat modes were only introduced in RENDER 0.10, so disable + them if the server reports an earlier version. This is in addition to + disabling the repeat modes if we know (guess!) the server to have a buggy + implementation. + + src/cairo-xlib-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit e283e53563915daa11566ba006e1bf1e12b0d2fc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 10:50:13 2009 +0100 + + [perf] Print min_ticks in report + + As the change and ranking is based on the min_ticks, and as this can + sometimes deviate wildly from median_ticks, include min_ticks in the + output. + + In particular it helps to explain cases like: + + xlib-rgba rectangles_similar-rgba-mag_source-512 10.13 88.41% -> 5.77 0.19%: 1.50x slowdown + + which becomes + + xlib-rgba rectangles_similar-rgba-mag_source-512 3.83 (10.13 88.41%) -> 5.75 (5.77 0.19%): 1.50x slowdown + + (Considering the poor standard deviation on the initial measurement, this + is more likely a sampling error than a true regression.) + + perf/cairo-perf-diff-files.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit ce8a8424aa4331f119b115123faf7b773b5f25d0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 31 09:36:10 2009 +0100 + + [perf] Change the order of slowdowns. + + More the large slowdowns to the end. This has two pleasing effects: + + 1. There is symmetry between large speedups at the top, and large + slowdowns at the bottom, with long bars -> short bars -> long bars. + + 2. After a cairo-perf-diff run the largest slowdowns are immediately + visible on the console. What better way to flag performance + regressions? + + perf/cairo-perf-diff-files.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +commit 877ed645f95ff048f7c5d2ce0fb92389918711a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 30 22:09:55 2009 +0100 + + [perf] Add a more complex fill, a set of rings + + In investigating performance regressions with the wip/tessellator, I'm + keen to inspect how the tessellator scales with polygon complexity. + + perf/fill.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 files changed, 37 insertions(+), 0 deletions(-) + +commit 3dbc4170f0e89f02455b82c6496d6322e56e0491 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 30 10:35:11 2009 +0100 + + [perf] Add a single shot long-lines + + Compare the performance of self-intersection removal by comparing the cost + of individually stroking each line versus stroking them all en-mass. + + perf/long-lines.c | 45 ++++++++++++++++++++++++++++++++++----------- + 1 files changed, 34 insertions(+), 11 deletions(-) + +commit 2f033af5ab15dc56675c42434bb1c18655012b03 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 30 09:42:31 2009 +0100 + + [perf] Fix the asymmetry in long lines + + We missed the final long diagonal to the bottom-right. + + perf/long-lines.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 944206e55ba997a4a55334be3c7ebf8141016be7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 30 09:36:28 2009 +0100 + + [perf] Correct typo in long-lines.c + + Computed may_y using height not width, fortunately the test cases have + always been square. + + perf/long-lines.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 229887e980f03d90248add8af9cd0a9be6cb0f9a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 19:48:00 2009 +0100 + + [perf] Check output + + Add a CAIRO_PERF_OUTPUT environment variable to cause cairo-perf to first + generate an output image in order to manually check that the test is + functioning correctly. This needs to be automated, so that we have + absolute confidence that the performance tests are not broken - but isn't + that the role of the test suite? If we were ever to publish cairo-perf + results, I would want some means of verification that the test-suite had + first been passed. + + perf/cairo-perf.c | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit 8c6ecfe6488dff93090d5d0a2d814466804bc7de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 16:17:36 2009 +0100 + + [perf] Remove the warning about failing to open a directory + + The warning is repeated in the error message if we fail to find any + traces, and now that we search a path it is likely that some elements do + not exist. Thus we annoy the user with irrelevant, non-fatal warnings. + + Still looking for suggestions for the most appropriate home for the system + wide cairo-traces dir... + + perf/cairo-perf-trace.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit 8c1aed17ca5dafb00175ac413d56760a3ef012f9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 13:24:19 2009 +0100 + + [perf] Add another stroking micro-benchmark + + The original stroke only contains a single subpath. Self-intersection + removal particularly affects strokes with multiple curved segments, so add + a path that encompasses both straight edges and rounded corners. + + perf/stroke.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +commit 71f5649846aa8e9e2178e7caf69ab47554f86c4d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 15:36:25 2009 +0100 + + [path] Fix iter to handle circular list of buffers + + When switching the path over to use the circularly linked list, 73f801, + I missed updating the path iterator. + + src/cairo-path-fixed-private.h | 1 + + src/cairo-path-fixed.c | 9 +++++++-- + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit acfcf4a31b3370ca7bbdd522fad9ddc483df3472 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 16:10:04 2009 +0100 + + [path] Remove the broken rel-curve-to as line-to + + As pointed out by Andrea, and now tested by test/degenerate-rel-curve-to, + this attempt at removing degenerate curve-to was broken. + + src/cairo-path-fixed.c | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +commit 81d3e15e6ca7b7c1a07fdfb6d03c43484ce9f502 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 29 16:07:17 2009 +0100 + + [test] Yet another bug in curve-to as line-to. + + Andrea Canciani (ranma42) found another instance of my broken 'degenerate' + curve-to as line-to optimisation. All I can say is when I do something + wrong, at least I'm consistent! + + This test case highlights the bug in the rel-curve-to path. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/degenerate-rel-curve-to.c | 99 +++++++++++++++++++++++++++++ + test/degenerate-rel-curve-to.ps.xfail.png | Bin 0 -> 202 bytes + test/degenerate-rel-curve-to.ref.png | Bin 0 -> 270 bytes + 5 files changed, 102 insertions(+), 0 deletions(-) + +commit f7121ca88844fa70ecb1a35f3f6c9b653324718d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 20:48:26 2009 +0100 + + [gl] Fixup unbounded regions after spans + + src/cairo-gl-surface.c | 68 +++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 61 insertions(+), 7 deletions(-) + +commit 5631f01075a030255c5eb47a8ee600b062705d0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 18:56:12 2009 +0100 + + [gl] Cache texture snapshots. + + src/cairo-gl-glyphs.c | 32 ++++- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-surface.c | 301 +++++++++++++++++++++++++++++------------------- + 3 files changed, 206 insertions(+), 129 deletions(-) + +commit 3b0bb2cfd2ad8579e88f1c0ab46f5ccf762e0974 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 18:04:59 2009 +0100 + + [gl] Replace DrawPixels with TexSubImage + + src/cairo-gl-surface.c | 60 +++++++++++++++++++++-------------------------- + 1 files changed, 27 insertions(+), 33 deletions(-) + +commit 4b7a1a2da7a7f55db788cbfb3164f9f948bbb26b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 17:32:30 2009 +0100 + + [gl] Disable the EXTEND_REFLECT convertor + + As we can handle EXTEND_REFLECT via the samplers, we do not need to + convert such patterns to EXTEND_REPEAT during acquisition. + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 780a95b024c5880353ffc256a634eb3bcc641601 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 16:49:04 2009 +0100 + + [gl] Trim glyphs to surface/clip extents. + + src/cairo-gl-glyphs.c | 21 ++++++++++++++++++--- + 1 files changed, 18 insertions(+), 3 deletions(-) + +commit b1227dea29d3e357cc69c49eed0ae10d5578f24a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 16:39:52 2009 +0100 + + [gl] Render glyphs to an intermediate mask as opposed to falling back. + + There are many common scenarios, mostly involving overlapping glyphs, + for which to guarantee correct rendering we have to composite the glyphs + via an explicit mask. That is instead of just blending the glyphs on to + the destination, we have to add the glyphs to a mask, and then composite + that mask+source with the destination. + + src/cairo-gl-glyphs.c | 306 +++++++++++++++++++++++++++++++------------------ + 1 files changed, 194 insertions(+), 112 deletions(-) + +commit cd259489e2f41caaa7441233d87b46fbd43991ae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 15:58:54 2009 +0100 + + [gl] Fallback for overlapping glyphs. + + src/cairo-analysis-surface.c | 6 ++++-- + src/cairo-gl-glyphs.c | 35 ++++++++++++++++++++--------------- + src/cairo-gl-private.h | 13 +++++++++++++ + src/cairo-scaled-font.c | 23 +++++++++++++++++++++-- + src/cairo-surface-fallback.c | 3 ++- + src/cairo-xcb-surface.c | 3 ++- + src/cairo-xlib-surface.c | 3 ++- + src/cairoint.h | 3 ++- + 8 files changed, 66 insertions(+), 23 deletions(-) + +commit 3d8f1d3dc83b9a86f2f104f0e2afa192a34d18c8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 15:38:45 2009 +0100 + + [gl] Only unlock the glyph cache when full. + + src/cairo-gl-glyphs.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit 922b1fe8e380ceba0630935460ce758ef660df75 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Jul 28 22:34:42 2009 +0930 + + Ensure Type 3 fonts do not use the name .notdef in the PS encoding + + src/cairo-scaled-font-subsets.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a251e34dbbcb652906f7fddd2a72cbb5992b58ae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 13:44:19 2009 +0100 + + [gl] Move check for vertex buffer support to individual operations. + + As we can fallback instead of using vertex buffers, do so rather than + preventing any use of GL acceleration. + + src/cairo-gl-glyphs.c | 3 +++ + src/cairo-gl-surface.c | 17 +++++++++-------- + 2 files changed, 12 insertions(+), 8 deletions(-) + +commit 90657bacc306e65e07e9eb16561a805150aef778 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 13:30:31 2009 +0100 + + [gl] Separate out supported operator check. + + By performing the check on whether the operator is supported prior to + acquiring the context, we do not need to handle the error part way + through the context setup. This makes the code much cleaner, and save + some work for the unsupported cases. + + src/cairo-gl-glyphs.c | 7 ++++--- + src/cairo-gl-private.h | 5 ++++- + src/cairo-gl-surface.c | 46 ++++++++++++++++++---------------------------- + 3 files changed, 26 insertions(+), 32 deletions(-) + +commit 21d50e2163038c8acc0eef738acf61f851835f7d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 13:24:43 2009 +0100 + + [gl] Unthaw font along contended path. + + If we bail after freezing the font, make sure we thaw that it is thawed + before returning. + + src/cairo-gl-glyphs.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 5440055fc0329c726d324984cd2fdf07badc7e0f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Jul 28 20:59:25 2009 +0930 + + Ensure Type 3 fonts do not add a .notdef glyph + + src/cairo-scaled-font-subsets.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1ae5a41951b8a8cb415835559f91d1636a885216 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Jul 28 20:54:58 2009 +0930 + + PDF: Only Type 3 fonts should include glyph 0 in /ToUnicode + + 4c498098 made all 8-bit fonts include glyph 0 which incorrectly + included Type 1 fallback fonts. + + src/cairo-pdf-surface.c | 20 +++++++++++++------- + src/cairo-scaled-font-subsets.c | 1 + + src/cairoint.h | 1 + + 3 files changed, 15 insertions(+), 7 deletions(-) + +commit c11f369057c5ebb958bec58ef41f8ad4b43bdbee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 13:02:10 2009 +0100 + + [perf] Avoid NULL derefs on broken result files. + + Instead of testing for a NULL return we checked that the pointer didn't + point to NIL. Oops. + + perf/cairo-perf-report.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 19f44982348d247057df4481010c1e3ddc80bac2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 12:58:07 2009 +0100 + + [test] Wrap yet another call to get_image_surface() inside a timeout. + + I missed this call to get_image_surface() that is now being hit having + restored the reference image for dash-infinite-loop. + + test/cairo-test.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit e2f912dc5bbfad3a6f4b5e1dbfbe51be148b3232 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 09:32:36 2009 +0100 + + [script] Add cvi, cvr, mod + + Add implementations of convert-to-integer, convert-to-real and modulus + supplied by Zack Weinberg <zweinberg@mozilla.com>. + + util/cairo-script/cairo-script-operators.c | 95 +++++++++++++++++++++++++++- + util/cairo-script/cairo-script-private.h | 3 + + util/cairo-script/cairo-script-scanner.c | 6 +- + 3 files changed, 100 insertions(+), 4 deletions(-) + +commit 24b5ac6377f0e4b76b73460a497b9861fc01a889 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 08:05:22 2009 +0100 + + [test] Add timeouts around finishing and converting surfaces to images. + + In order to catch infinite loops whilst replaying and converting vector + surfaces to images (via external renderers) we need to also install + alarms around the calls to finish() and get_image(). + + test/cairo-test.c | 14 ++++++++++---- + 1 files changed, 10 insertions(+), 4 deletions(-) + +commit dacc380dd9ea23fe060d0397104ecd4b2a6d0eae +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Jul 11 02:59:12 2009 +0300 + + [test] Test extremely small dash lengths. + + The stroker code is liable to wedge when passed + dash patterns which don't advance the dash offset + due to limited precision arithmetic. This test + attempts to hit all the places in the stroker where + that can happen. + + Reported on the cairo mailing list by Hans Breuer: + + http://lists.cairographics.org/archives/cairo/2009-June/017506.html + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/dash-infinite-loop.c | 83 +++++++++++++++++++++++++++++++++++++++ + test/dash-infinite-loop.ref.png | Bin 0 -> 642 bytes + 4 files changed, 85 insertions(+), 0 deletions(-) + +commit 128d6fb2daf4e57def813511cc89167217041bf4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 08:37:54 2009 +0100 + + [path] Remove the erroneous conversion of a 'zero-length' curve-to + + As pointed out by Andrea, and now tested by test/degenerate-curve-to, a + curve-to that begins and ends on the same point may extend further due to + its control points. It can not be simply replaced with a degenerate + line-to. In order to do so we will need more extensive degeneracy + checking, ala _cairo_spline_init(). + + src/cairo-path-fixed.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 660c389d11bda29498807f41d3b761fa540ae9b9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 28 08:18:17 2009 +0100 + + [test] Add degenerate-curve-to + + Andrea Canciani (ranma42) pointed out a second bug in the curve-to as + line-to optimisation, that is a curve starting and finishing on the same + point is not necessarily degenerate. This test case exercises 5 different + curves that start and end on the same point. + + test/Makefile.am | 2 + + test/Makefile.sources | 1 + + test/degenerate-curve-to.c | 103 +++++++++++++++++++++++++++++++++ + test/degenerate-curve-to.ps.xfail.png | Bin 0 -> 202 bytes + test/degenerate-curve-to.ref.png | Bin 0 -> 276 bytes + 5 files changed, 106 insertions(+), 0 deletions(-) + +commit d31de83e01468eaf9e1a906aef536b63e77cb752 +Author: Carl Worth <cworth@cworth.org> +Date: Mon Jul 27 15:58:27 2009 -0700 + + Mark curve-to-as-line-to as XFAIL for PS backend. + + Looks like ghostscript has a similar buggy optimization like we + just fixed in cairo. I'm just waiting on a new bugzilla account + from bugs.ghostscript.com after which I plan to report the bug + there. + + test/curve-to-as-line-to.ps.xfail.png | Bin 0 -> 112 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 45919a4f0c94a247b1c6941dbc4a57f6c9399396 +Author: Carl Worth <cworth@cworth.org> +Date: Mon Jul 27 15:45:55 2009 -0700 + + Revert "[path] Convert straight curve-to to line-to" + + This reverts commit c72ca2f2296b5fbc5859059b98221e5ffe087dae. + + This commit was broken as verified by the curve-to-as-line-to test + case. + + src/cairo-path-fixed.c | 12 ------------ + 1 files changed, 0 insertions(+), 12 deletions(-) + +commit 5bed405b278a6b934369873f55117d497f69bc3a +Author: Carl Worth <cworth@cworth.org> +Date: Mon Jul 27 15:45:15 2009 -0700 + + Revert "[spline] Treat a straight spline as degenerate." + + This reverts commit f3d265559a2f97152ce8f307ea3ce83463083088. + + This commit was broken as verified by the curve-to-as-line-to test + case. + + src/cairo-spline.c | 9 --------- + 1 files changed, 0 insertions(+), 9 deletions(-) + +commit 01acad1659caf766c57849f85dc3536fe2167608 +Merge: 3cc9a60 cf15aed +Author: Carl Worth <cworth@cworth.org> +Date: Mon Jul 27 15:26:19 2009 -0700 + + Merge branch 'master' of git.cairographics.org:/git/cairo + +commit 3cc9a6050d9704976d8efe373b913e5309bde6d2 +Author: Carl Worth <cworth@cworth.org> +Date: Mon Jul 27 15:24:55 2009 -0700 + + Add new test: curve-to-as-line-to + + This test anticipates a future optimization, (already pushed + upstream but not pulled yet), with a buggy implementation + of replacing curve_to with line_to. + + test/Makefile.sources | 1 + + test/curve-to-as-line-to.c | 95 ++++++++++++++++++++++++++++++++++++++ + test/curve-to-as-line-to.ref.png | Bin 0 -> 95 bytes + 3 files changed, 96 insertions(+), 0 deletions(-) + +commit e19b2866ed095cf66e9344efa442ae01dc7913ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 19:51:36 2009 +0100 + + [gl] Actually remove the glyph from the rtree on scaled_font_fini + + Mark the node as available when the scaled_glyph is finished, and then + attempt to collapse the parent node. + + src/cairo-gl-glyphs.c | 5 +++-- + src/cairo-rtree-private.h | 3 +++ + src/cairo-rtree.c | 13 +++++++++++++ + 3 files changed, 19 insertions(+), 2 deletions(-) + +commit e0b7979a30fff2a22fef5c170fd72c37c197ee0e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 17:44:10 2009 +0100 + + [gl] Switch to using the common rtree implementation. + + src/cairo-gl-glyphs.c | 440 +++++++---------------------------------------- + src/cairo-gl-private.h | 52 ++---- + src/cairo-gl-surface.c | 5 + + 3 files changed, 89 insertions(+), 408 deletions(-) + +commit 37bf06d66efa238c4ff9c74c86a0c9d037b300e6 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jul 27 09:16:46 2009 -0700 + + [gl] Fix handling of clip for glyphs (clip-operator test). + + src/cairo-gl-glyphs.c | 43 ++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 42 insertions(+), 1 deletions(-) + +commit 74f33513194ec3d8e69a21aa71aa7fc854415e83 +Author: Eric Anholt <eric@anholt.net> +Date: Fri Jul 24 14:08:55 2009 -0700 + + [gl] Switch the glyph cache to using VBOs. + + This is a major performance improvement for GL even on non-TNL hardware + (i915), as we get to emit one giant DrawArrays and make GL drivers love us. + Now we're actually faster than not having the glyph cache. + + Before glyph cache (HP 945GM): + [ 0] gl firefox-20090601 238.103 238.195 0.35% 5/6 + After: + [ 0] gl firefox-20090601 68.181 76.735 5.46% 6/6 + + src/cairo-gl-glyphs.c | 177 +++++++++++++++++++++++++++++++++---------------- + 1 files changed, 120 insertions(+), 57 deletions(-) + +commit ee4138e587a67c3fc4d0e89b899109af89f16e72 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jul 23 21:12:59 2009 -0700 + + [gl] Start adding glyph cache support. + + This is pretty much cut-and-paste from ickle's cairo-drm-i915-surface, and + uses fixed function and doesn't use VBOs. + + src/Makefile.sources | 2 +- + src/cairo-gl-glyphs.c | 829 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-private.h | 115 +++++++ + src/cairo-gl-surface.c | 69 ++--- + 4 files changed, 965 insertions(+), 50 deletions(-) + +commit cf15aed0c4e843e7297c5a1979ac0318f6df4947 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 19:18:21 2009 +0100 + + [xlib] Add a timely reminder to ensure that bugs are properly filed. + + In a discussion on IRC, attention was drawn to a dubious comment in + _cairo_xlib_show_glyphs() - the precise details of which have passed + out of the collective memory. + + src/cairo-xlib-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 2da01ed552d48808cdf3aa7798ddfb959d016f0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 18:20:22 2009 +0100 + + [rtree] Merge the common unpin_and_evict_unused() routine + + Having written the same method to prune glyphs from the rtree three times, + I thought wise to add the common method to the core routines. + + src/cairo-rtree-private.h | 1 + + src/cairo-rtree.c | 50 +++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 49 insertions(+), 2 deletions(-) + +commit 9f6a0f5668601c74886378d6cdb9588621d30e6d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 14:01:32 2009 +0100 + + [paginated] Propagate error return during finish. + + In bed2701, I removed the explicit finish of the paginated's target + surface, since as a wrapper it did not explicitly own the surface and so + should not be calling finish(). However, we do need to propagate errors + from the backing surface, such as PDF, which will only be detected during + the implicit finish in the final destroy. So check to see it we hold the + last reference to the target (and so our destroy will trigger the implicit + finish) and call the finish explicitly and check the error status + afterwards. + + src/cairo-paginated-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 6ca3720ba66f443e70c961f7d4fdac604c831e97 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 10:06:34 2009 +0100 + + [test] Overlapping glyphs + + Add a test case to explicitly check handling of overlapping glyphs. + + test/Makefile.am | 4 + + test/Makefile.sources | 1 + + test/overlapping-glyphs.argb32.ref.png | Bin 0 -> 2696 bytes + test/overlapping-glyphs.c | 123 ++++++++++++++++++++++++++ + test/overlapping-glyphs.pdf.argb32.xfail.png | Bin 0 -> 2199 bytes + test/overlapping-glyphs.pdf.rgb24.xfail.png | Bin 0 -> 1692 bytes + test/overlapping-glyphs.rgb24.ref.png | Bin 0 -> 1650 bytes + 7 files changed, 128 insertions(+), 0 deletions(-) + +commit 09a2b2ed3189fe12483cbd673c24ceddc2c20f3f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 10:14:24 2009 +0100 + + [xlib] Fast-path the likely case of retrieving a known xrender_format + + If we know the CPU can read pointers atomically, then we can simply peek + into the cached_xrender_formats to see if we already have a match, before + taking the mutex. (Acquiring the mutex here is a minor nuisance that + appears on the callgrind profiles.) + + src/cairo-xlib-display.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit efb3445ee1553c91e62f6b0fe50ab72d65f5c81c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 27 10:18:25 2009 +0100 + + Add a simple rectangle tree (rtree) implementation + + In order to efficient store small images, we need to pack them into a + large texture. The rtree handles allocation of small rectangles out of a + much larger whole. As well as tracking free rectangles, it can also be + used to note which parts of the texture are 'pinned' -- that is have + operations currently pending and so can not be modified until that batch + of operations have been flushed. When the rtree is full, i.e. there is no + single free rectangle to accommodate the allocation request, it will + randomly evict an unpinned block large enough to fit the request. The + block may comprise just a single glyph, or a subtree of many glyphs. This + may not be the best strategy, but it is an effective start. + + src/Makefile.sources | 2 + + src/cairo-rtree-private.h | 124 ++++++++++++++++ + src/cairo-rtree.c | 349 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 475 insertions(+), 0 deletions(-) + +commit c72ca2f2296b5fbc5859059b98221e5ffe087dae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 26 09:07:48 2009 +0100 + + [path] Convert straight curve-to to line-to + + Avoid the high cost associated with curves if we can convert the curve to + a straight line. + + src/cairo-path-fixed.c | 12 ++++++++++++ + 1 files changed, 12 insertions(+), 0 deletions(-) + +commit f3d265559a2f97152ce8f307ea3ce83463083088 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 26 09:03:36 2009 +0100 + + [spline] Treat a straight spline as degenerate. + + The fallback for degenerate splines is to treat them as a line-to, so if + the spline is straight, we can just replace it with a simple line-to by + treating as degenerate. + + src/cairo-spline.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 25858d524d158531a71a2e772551b1e497d9d423 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 26 08:13:28 2009 +0100 + + [script] Fix reference to font source after transferring to mmap + + After diverting the pointers to accommodate lazy decompressing of the + source, the bytecode pointer was left pointing to the original location + that had already been freed - thus passing an invalid block to FreeType + and unsurprisingly then, blowing up. + + util/cairo-script/cairo-script-operators.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit ede0f7e7df4e17ddc1ffe98dcdfe0115a58e7b14 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 25 07:19:22 2009 +0100 + + [pdf] Eliminate redundant whole-page clip. + + We do not to emit a clip if it covers the whole page. + + src/cairo-pdf-surface.c | 16 ++++++++++++++++ + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 3868 -> 3919 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3806 -> 3867 bytes + test/scale-offset-image.pdf.xfail.png | Bin 8692 -> 8694 bytes + test/scale-offset-similar.pdf.xfail.png | Bin 9369 -> 9368 bytes + 5 files changed, 16 insertions(+), 0 deletions(-) + +commit 4c498098c0dc66dc8c3e8cd60f79e5e5eda206b9 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Jul 24 21:36:47 2009 +0930 + + PDF: Fix glyph 0 in toUnicode stream when using user fonts + + _cairo_pdf_surface_emit_to_unicode_stream() was reserving glyph 0 for + the .notdef glyph (as required by TrueType/CFF/Type1 fallback + fonts). However Type 3 fonts do not reserve glyph 0 for .notdef and + need glyph 0 to be included in the toUnicode stream. + + http://lists.cairographics.org/archives/cairo/2009-July/017731.html + + src/cairo-pdf-surface.c | 71 +++++++++++++++++++++++++++++----------------- + 1 files changed, 45 insertions(+), 26 deletions(-) + +commit e577096dff714266101ba86ac275864b854096a4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 23:17:07 2009 +0100 + + [boilerplate] Fix compilation against old revisions (as old as 1.9.2!) + + boilerplate/Makefile.am | 7 +++++- + boilerplate/cairo-boilerplate-pdf.c | 4 +++ + boilerplate/cairo-boilerplate-ps.c | 4 +++ + boilerplate/cairo-boilerplate-svg.c | 4 +++ + boilerplate/cairo-boilerplate-test-surfaces.c | 31 +++++++++++++++--------- + boilerplate/cairo-boilerplate.c | 10 +++++-- + src/cairo-types-private.h | 5 +++- + util/cairo-script/cairo-script-operators.c | 2 + + 8 files changed, 50 insertions(+), 17 deletions(-) + +commit 0466053099b7f27065267d49c84e9e24bff6c7a1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 23:45:01 2009 +0100 + + [image] Discard redundant clears + + On slow machines the call to pixman_fill_sse2() on similar surfaces that + we know are already zeroed takes a significant amount of time [12.77% of + the profile for a firefox trace, cf to just 3% of the profile is spent + inside memset]. + + Rather than solve why the pixman_fill_sse2() is so slow, simply skip the + redundant clears. + + src/cairo-image-surface.c | 35 ++++++++++++++++++++++++++++++++++- + src/cairoint.h | 1 + + 2 files changed, 35 insertions(+), 1 deletions(-) + +commit 8b8e03503d7a4fdacfc48e0b35c9b02d7a08c1e2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 22:00:05 2009 +0100 + + [script] mark scan_read() inline + + Small function that is critical to performance whilst scanning scripts. + + util/cairo-script/cairo-script-scanner.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit f02ba09475b751fba411addb96718dbcb1de5132 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 20:23:51 2009 +0100 + + [xlib] Check workqueue before taking the display mutex + + Optimistically check to see if there is any outstanding work before + checking under the mutex. We don't care if we occasionally do not run the + queue this time due to contention, since we will most likely check again + very shortly or clean up with the display. + + src/cairo-xlib-display.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 4dc62bbedc5d8669c0508963497c568d0202f579 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 19:34:10 2009 +0100 + + [test] Extend radial gradients to check r2 < r1 + + Include additional gradients to cover the cases where r1 > r2, as a pixman + bug was exposed by: + [Bug 22908] Invalid output of radial gradient + http://bugs.freedesktop.org/show_bug.cgi?id=22908 + + test/radial-gradient.c | 36 +++++++++++++++++++++++------------- + test/radial-gradient.pdf.ref.png | Bin 79612 -> 277162 bytes + test/radial-gradient.ref.png | Bin 91159 -> 280971 bytes + 3 files changed, 23 insertions(+), 13 deletions(-) + +commit e98e2690cb4ac475819394334cb5e61a8e3d5557 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 18:32:47 2009 +0100 + + [test] Fix use of uninitialized widths. + + user-font-rescale copied unitialized values from the widths array into + the desired array. Although these corresponded to unused glyphs and so + were never used during the rendering, the values may have been illegal + causing FPE as they were copied. + + test/user-font-rescale.c | 13 +++++-------- + 1 files changed, 5 insertions(+), 8 deletions(-) + +commit 596dec95610ef02d86ede94eca5b83221b0b533a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 18:15:38 2009 +0100 + + [test] Trap SIGFPE + + Note the crash if we hit a floating-point exception. + + test/cairo-test.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 0561539880b480273767a9559da89a25970802e2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 18:31:37 2009 +0100 + + [scaled-font] cairo_scaled_font_glyph_extents() initialise extents + + Ensure that the extents are zeroed on error. + + src/cairo-scaled-font.c | 23 ++++++++++++++++------- + 1 files changed, 16 insertions(+), 7 deletions(-) + +commit 5c843b5f8eca4b6f9756644143bc1be3bc3cbc84 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 20:43:28 2009 +0100 + + [scaled-font] Skip empty glyphs + + Skip the composition of empty glyphs - prevents redundant calls through + the stack. + + src/cairo-scaled-font.c | 57 +++++++++++++++++++++++++--------------------- + 1 files changed, 31 insertions(+), 26 deletions(-) + +commit 0c4692a1d0667f5850f59c65754a3ffbaf688afe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 23:34:55 2009 +0100 + + [perf] Specify html file on cmdline instead of redirecting all output + + Redirecting all output was causing the build messages to be entangled with + the Performance Change html. + + perf/Makefile.am | 4 ++-- + perf/cairo-perf-diff | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 1ec1d6148e85d4a9b9da825ea57adb0b8ceba1c0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 22:42:44 2009 +0100 + + [perf] Compare performance against most recent tag. + + perf/Makefile.am | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +commit 9d7fd626c39c37368ea05f91a358899e5b5b898c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 17:05:28 2009 +0100 + + [script] Decompress font sources + + Need to decompress patterns and embedded bytecode before passing to + fontconfig/FreeType. + + util/cairo-script/cairo-script-operators.c | 119 +++++++++++++++++++++++----- + 1 files changed, 99 insertions(+), 20 deletions(-) + +commit 5d8f366581c0ca31fac76c991cb681d036af275f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 16:36:02 2009 +0100 + + [test] clip representation is no longer surface dependent + + So we can test the api just once in the preamble and not per-target. + + test/get-clip.c | 200 ++++++++++++++++++++---------------------------------- + 1 files changed, 74 insertions(+), 126 deletions(-) + +commit c3f2db4f73e93a3dafe0f52a5f9ca09ca78cc906 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 15:18:55 2009 +0100 + + [drm] Add an accelerated image surface. + + Use the DRM interface to h/w accelerate composition on image surfaces. + The purpose of the backend is simply to explore what such a hardware + interface might look like and what benefits we might expect. The + use case that might justify writing such custom backends are embedded + devices running a drm compositor like wayland - which would, for example, + allow one to write applications that seamlessly integrated accelerated, + dynamic, high quality 2D graphics using Cairo with advanced interaction + (e.g. smooth animations in the UI) driven by a clutter framework... + + In this first step we introduce the fundamental wrapping of GEM for intel + and radeon chipsets, and, for comparison, gallium. No acceleration, all + we do is use buffer objects (that is use the kernel memory manager) to + allocate images and simply use the fallback mechanism. This provides a + suitable base to start writing chip specific drivers. + + boilerplate/Makefile.sources | 2 + + boilerplate/Makefile.win32.features | 20 + + boilerplate/cairo-boilerplate-drm.c | 91 ++++ + build/Makefile.win32.features | 2 + + build/Makefile.win32.features-h | 6 + + build/configure.ac.features | 1 + + configure.ac | 25 + + perf/cairo-perf-trace.c | 3 + + perf/cairo-perf.c | 5 +- + src/Makefile.sources | 13 + + src/Makefile.win32.features | 28 + + src/cairo-debug.c | 4 + + src/cairo-drm.h | 135 +++++ + src/cairo-freelist-private.h | 59 ++- + src/cairo-freelist.c | 73 +++ + src/cairo-image-surface.c | 1 + + src/cairo-mutex-list-private.h | 3 + + src/cairo.h | 2 + + src/cairoint.h | 8 + + src/drm/cairo-drm-bo.c | 120 +++++ + src/drm/cairo-drm-gallium-surface.c | 696 ++++++++++++++++++++++++++ + src/drm/cairo-drm-intel-private.h | 182 +++++++ + src/drm/cairo-drm-intel-surface.c | 475 ++++++++++++++++++ + src/drm/cairo-drm-intel.c | 933 +++++++++++++++++++++++++++++++++++ + src/drm/cairo-drm-ioctl-private.h | 12 + + src/drm/cairo-drm-private.h | 257 ++++++++++ + src/drm/cairo-drm-radeon-private.h | 110 ++++ + src/drm/cairo-drm-radeon-surface.c | 437 ++++++++++++++++ + src/drm/cairo-drm-radeon.c | 447 +++++++++++++++++ + src/drm/cairo-drm-surface.c | 517 +++++++++++++++++++ + src/drm/cairo-drm.c | 362 ++++++++++++++ + test/cairo-test.c | 2 +- + test/get-clip.c | 1 + + 33 files changed, 5025 insertions(+), 7 deletions(-) + +commit bed2701e1c89095878d549cbca8f22d84f3dda3c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 15:32:13 2009 +0100 + + Remove clip handling from generic surface layer. + + Handling clip as part of the surface state, as opposed to being part of + the operation state, is cumbersome and a hindrance to providing true proxy + surface support. For example, the clip must be copied from the surface + onto the fallback image, but this was forgotten causing undue hassle in + each backend. Another example is the contortion the meta surface + endures to ensure the clip is correctly recorded. By contrast passing the + clip along with the operation is quite simple and enables us to write + generic handlers for providing surface wrappers. (And in the future, we + should be able to write more esoteric wrappers, e.g. automatic 2x FSAA, + trivially.) + + In brief, instead of the surface automatically applying the clip before + calling the backend, the backend can call into a generic helper to apply + clipping. For raster surfaces, clip regions are handled automatically as + part of the composite interface. For vector surfaces, a clip helper is + introduced to replay and callback into an intersect_clip_path() function + as necessary. + + Whilst this is not primarily a performance related change (the change + should just move the computation of the clip from the moment it is applied + by the user to the moment it is required by the backend), it is important + to track any potential regression: + + ppc: + Speedups + ======== + image-rgba evolution-20090607-0 1026085.22 0.18% -> 672972.07 0.77%: 1.52x speedup + ▌ + image-rgba evolution-20090618-0 680579.98 0.12% -> 573237.66 0.16%: 1.19x speedup + ▎ + image-rgba swfdec-fill-rate-4xaa-0 460296.92 0.36% -> 407464.63 0.42%: 1.13x speedup + ▏ + image-rgba swfdec-fill-rate-2xaa-0 128431.95 0.47% -> 115051.86 0.42%: 1.12x speedup + ▏ + Slowdowns + ========= + image-rgba firefox-periodic-table-0 56837.61 0.78% -> 66055.17 3.20%: 1.09x slowdown + ▏ + + NEWS | 6 + + boilerplate/cairo-boilerplate-glitz-glx.c | 4 - + boilerplate/cairo-boilerplate-pdf.c | 1 - + boilerplate/cairo-boilerplate-ps.c | 8 +- + boilerplate/cairo-boilerplate-qt.cpp | 4 +- + boilerplate/cairo-boilerplate-svg.c | 1 - + boilerplate/cairo-boilerplate-test-surfaces.c | 113 +- + boilerplate/cairo-boilerplate.c | 100 +- + boilerplate/cairo-boilerplate.h | 2 + + perf/unaligned-clip.c | 3 + + src/Makefile.sources | 7 + + src/cairo-analysis-surface-private.h | 6 +- + src/cairo-analysis-surface.c | 539 ++++----- + src/cairo-beos-surface.cpp | 409 +++---- + src/cairo-clip-private.h | 87 +- + src/cairo-clip.c | 1290 ++++++++++---------- + src/cairo-debug.c | 2 + + src/cairo-directfb-surface.c | 491 ++++---- + src/cairo-ft-font.c | 53 +- + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 216 +++- + src/cairo-glitz-surface.c | 213 ++-- + src/cairo-gstate.c | 233 +++-- + src/cairo-image-surface.c | 173 ++- + src/cairo-meta-surface-private.h | 43 +- + src/cairo-meta-surface.c | 550 ++++----- + src/cairo-os2-surface.c | 14 +- + src/cairo-paginated-private.h | 2 - + src/cairo-paginated-surface-private.h | 9 - + src/cairo-paginated-surface.c | 234 ++--- + src/cairo-path-bounds.c | 65 +- + src/cairo-path-fill.c | 11 +- + src/cairo-path-fixed-private.h | 36 +- + src/cairo-path-fixed.c | 201 +++- + src/cairo-path-in-fill.c | 27 +- + src/cairo-path-stroke.c | 8 +- + src/cairo-pattern.c | 127 +- + src/cairo-pdf-surface-private.h | 3 + + src/cairo-pdf-surface.c | 220 ++-- + src/cairo-ps-surface-private.h | 4 + + src/cairo-ps-surface.c | 367 ++++--- + src/cairo-qt-surface.cpp | 373 +++--- + src/cairo-quartz-image-surface.c | 14 +- + src/cairo-quartz-private.h | 2 + + src/cairo-quartz-surface.c | 136 ++- + src/cairo-region-private.h | 73 ++ + src/cairo-region.c | 170 ++- + src/cairo-scaled-font.c | 132 +-- + src/cairo-script-surface.c | 611 ++++++++-- + src/cairo-script.h | 10 + + src/cairo-spans-private.h | 19 +- + src/cairo-spans.c | 20 +- + src/cairo-stroke-style.c | 8 +- + src/cairo-surface-clipper-private.h | 72 ++ + src/cairo-surface-clipper.c | 138 +++ + src/cairo-surface-fallback-private.h | 21 +- + src/cairo-surface-fallback.c | 995 +++++++++------- + src/cairo-surface-private.h | 19 +- + src/cairo-surface-wrapper-private.h | 156 +++ + src/cairo-surface-wrapper.c | 449 +++++++ + src/cairo-surface.c | 857 ++++---------- + src/cairo-svg-surface-private.h | 4 +- + src/cairo-svg-surface.c | 527 +++++---- + src/cairo-traps.c | 26 +- + src/cairo-type3-glyph-surface-private.h | 9 +- + src/cairo-type3-glyph-surface.c | 94 +- + src/cairo-types-private.h | 9 +- + src/cairo-user-font.c | 30 +- + src/cairo-vg-surface.c | 122 +- + src/cairo-win32-font.c | 16 +- + src/cairo-win32-printing-surface.c | 194 ++-- + src/cairo-win32-private.h | 15 +- + src/cairo-win32-surface.c | 279 ++--- + src/cairo-xcb-surface.c | 248 ++-- + src/cairo-xlib-surface-private.h | 2 +- + src/cairo-xlib-surface.c | 492 ++++---- + src/cairo.c | 83 +- + src/cairo.h | 30 +- + src/cairoint.h | 325 ++--- + src/test-fallback-surface.c | 4 +- + src/test-fallback16-surface.c | 4 +- + src/test-null-surface.c | 35 +- + src/test-paginated-surface.c | 100 +-- + src/test-paginated-surface.h | 6 +- + src/test-wrapping-surface.c | 272 ++++ + src/test-wrapping-surface.h | 51 + + test/Makefile.am | 75 +- + test/Makefile.sources | 2 + + test/buffer-diff.c | 12 +- + test/cairo-test.c | 18 +- + test/clip-operator.pdf.argb32.ref.png | Bin 0 -> 9340 bytes + test/clip-operator.pdf.argb32.xfail.png | Bin 9340 -> 0 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 0 -> 5146 bytes + test/clip-operator.pdf.rgb24.xfail.png | Bin 5155 -> 0 bytes + test/clip-operator.svg12.argb32.xfail.png | Bin 8404 -> 8406 bytes + test/clip-operator.svg12.rgb24.xfail.png | Bin 4523 -> 4540 bytes + test/clip-operator.xlib-fallback.ref.png | Bin 0 -> 3226 bytes + test/clip-operator.xlib-fallback.rgb24.ref.png | Bin 3254 -> 0 bytes + test/clip-push-group.pdf.ref.png | Bin 0 -> 164 bytes + test/clip-push-group.ref.png | Bin 199 -> 164 bytes + test/clip-push-group.xlib.ref.png | Bin 0 -> 155 bytes + test/clip-unbounded.c | 80 ++ + test/clip-unbounded.ref.png | Bin 0 -> 100 bytes + test/clip-unbounded.rgb24.ref.png | Bin 0 -> 97 bytes + test/clip-unbounded.svg12.rgb24.xfail.png | Bin 0 -> 100 bytes + test/clipped-group.pdf.argb32.ref.png | Bin 298 -> 0 bytes + test/clipped-group.pdf.ref.png | Bin 0 -> 310 bytes + test/clipped-group.pdf.rgb24.ref.png | Bin 298 -> 0 bytes + test/clipped-group.ref.png | Bin 350 -> 316 bytes + ...integer-translate-source.svg12.argb32.xfail.png | Bin 0 -> 16392 bytes + ...-integer-translate-source.svg12.rgb24.xfail.png | Bin 0 -> 16392 bytes + test/device-offset-fractional.pdf.argb32.ref.png | Bin 275 -> 0 bytes + test/device-offset-fractional.pdf.ref.png | Bin 277 -> 0 bytes + test/device-offset-fractional.pdf.rgb24.ref.png | Bin 275 -> 0 bytes + test/device-offset-fractional.pdf.xfail.png | Bin 0 -> 275 bytes + test/extended-blend-alpha.svg12.argb32.xfail.png | Bin 0 -> 6857 bytes + test/extended-blend-alpha.svg12.rgb24.xfail.png | Bin 0 -> 5014 bytes + test/extended-blend.svg12.argb32.xfail.png | Bin 0 -> 2273 bytes + test/extended-blend.svg12.rgb24.xfail.png | Bin 0 -> 1856 bytes + test/fill-empty.argb32.ref.png | Bin 0 -> 99 bytes + test/fill-empty.c | 62 + + test/fill-empty.rgb24.ref.png | Bin 0 -> 97 bytes + test/fill-empty.svg12.rgb24.xfail.png | Bin 0 -> 99 bytes + test/filter-nearest-offset.pdf.xfail.png | Bin 1926 -> 1867 bytes + test/filter-nearest-transformed.pdf.xfail.png | Bin 488 -> 482 bytes + ...t-text-vertical-layout-type1.pdf.argb32.ref.png | Bin 3632 -> 0 bytes + test/ft-text-vertical-layout-type1.pdf.ref.png | Bin 3968 -> 3635 bytes + ...ft-text-vertical-layout-type1.pdf.rgb24.ref.png | Bin 3632 -> 0 bytes + ...t-text-vertical-layout-type3.pdf.argb32.ref.png | Bin 3642 -> 0 bytes + test/ft-text-vertical-layout-type3.pdf.ref.png | Bin 3634 -> 3639 bytes + ...ft-text-vertical-layout-type3.pdf.rgb24.ref.png | Bin 3642 -> 0 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 3609 -> 3608 bytes + test/group-unaligned.svg.argb32.xfail.png | Bin 522 -> 520 bytes + test/group-unaligned.xlib-fallback.ref.png | Bin 496 -> 474 bytes + test/image-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + test/image-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + test/in-fill-trapezoid.c | 19 +- + test/mask-glyphs.svg.ref.png | Bin 1211170 -> 1211147 bytes + test/mask.pdf.argb32.ref.png | Bin 0 -> 7837 bytes + test/mask.pdf.argb32.xfail.png | Bin 7944 -> 0 bytes + test/mask.pdf.rgb24.ref.png | Bin 0 -> 7301 bytes + test/mask.pdf.rgb24.xfail.png | Bin 7388 -> 0 bytes + test/mask.xlib-fallback.rgb24.ref.png | Bin 7216 -> 0 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4009 -> 3868 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3905 -> 3806 bytes + test/operator-clear.xlib.argb32.ref.png | Bin 0 -> 1071 bytes + test/operator-clear.xlib.ref.png | Bin 951 -> 0 bytes + test/operator-clear.xlib.rgb24.ref.png | Bin 0 -> 951 bytes + test/operator-source.pdf.rgb24.ref.png | Bin 0 -> 3645 bytes + test/operator-source.pdf.rgb24.xfail.png | Bin 3645 -> 0 bytes + test/operator-source.svg12.argb32.xfail.png | Bin 2951 -> 2967 bytes + test/operator-source.svg12.rgb24.xfail.png | Bin 2963 -> 2976 bytes + test/operator-source.xlib-fallback.ref.png | Bin 0 -> 3177 bytes + test/operator-source.xlib-fallback.rgb24.ref.png | Bin 3193 -> 0 bytes + test/path-append.xlib-fallback.ref.png | Bin 6357 -> 6320 bytes + test/pdf-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + test/pdf-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + test/ps-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + test/ps-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + test/push-group.xlib-fallback.rgb24.ref.png | Bin 2912 -> 0 bytes + test/scale-offset-image.meta.xfail.png | Bin 0 -> 8599 bytes + test/scale-offset-image.pdf.argb32.ref.png | Bin 8692 -> 0 bytes + test/scale-offset-image.pdf.rgb24.ref.png | Bin 8691 -> 0 bytes + test/scale-offset-image.pdf.xfail.png | Bin 0 -> 8692 bytes + test/scale-offset-image.xlib-fallback.xfail.png | Bin 0 -> 8580 bytes + test/scale-offset-similar.meta.xfail.png | Bin 0 -> 9095 bytes + test/scale-offset-similar.pdf.argb32.ref.png | Bin 9278 -> 0 bytes + test/scale-offset-similar.pdf.rgb24.ref.png | Bin 9278 -> 0 bytes + test/scale-offset-similar.pdf.xfail.png | Bin 0 -> 9369 bytes + test/scale-offset-similar.xlib-fallback.xfail.png | Bin 0 -> 8580 bytes + test/self-intersecting.argb32.xfail.png | Bin 287 -> 235 bytes + test/self-intersecting.pdf.argb32.xfail.png | Bin 295 -> 285 bytes + test/self-intersecting.pdf.rgb24.xfail.png | Bin 272 -> 269 bytes + test/self-intersecting.rgb24.xfail.png | Bin 282 -> 240 bytes + test/smask-fill.xlib-fallback.ref.png | Bin 1156 -> 0 bytes + test/smask-text.xlib.ref.png | Bin 0 -> 1672 bytes + test/smask.xlib.ref.png | Bin 0 -> 3393 bytes + test/surface-pattern-big-scale-down.ps.xfail.png | Bin 0 -> 238 bytes + test/svg-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + test/svg-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + ...allback16-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + ...fallback16-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + test/text-pattern.pdf.argb32.ref.png | Bin 0 -> 1831 bytes + test/text-pattern.pdf.argb32.xfail.png | Bin 1845 -> 0 bytes + test/text-pattern.pdf.rgb24.ref.png | Bin 0 -> 1598 bytes + test/text-pattern.pdf.rgb24.xfail.png | Bin 1599 -> 0 bytes + test/unbounded-operator.svg12.argb32.xfail.png | Bin 2767 -> 2771 bytes + test/unbounded-operator.svg12.rgb24.xfail.png | Bin 1719 -> 1731 bytes + test/user-font-proxy.svg.ref.png | Bin 16817 -> 16814 bytes + test/xlib-surface-source.svg12.argb32.xfail.png | Bin 0 -> 278 bytes + test/xlib-surface-source.svg12.rgb24.xfail.png | Bin 0 -> 278 bytes + util/cairo-script/cairo-script-file.c | 39 +- + util/cairo-script/cairo-script-objects.c | 22 + + util/cairo-script/cairo-script-private.h | 9 +- + util/cairo-script/cairo-script-scanner.c | 52 +- + util/cairo-trace/trace.c | 119 +- + 196 files changed, 7741 insertions(+), 5903 deletions(-) + +commit f5a1cdf283a6aa1f4409ccbf3c2274fb587724fe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 14:46:16 2009 +0100 + + [gl] Simplify the common CLEAR of a surface + + Almost every surface is at sometime cleared, so catch the operation in + paint(), and emit a simple glClear() instead. + + src/cairo-gl-surface.c | 25 ++++++++++++++++++++++++- + 1 files changed, 24 insertions(+), 1 deletions(-) + +commit eed17527f62eab826af65258b60cd4545a71a22d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 14:30:46 2009 +0100 + + [gl] Do not use unchecked GL v1.5 features + + The span renderer uses ARB_vertex_buffer_object which was included into + the core as part of OpenGL 1.5. We failed to check for the required version + during initialisation, and to my surprise the i915 can only support OpenGL + 1.4 as it lacks ARB_occlusion_query. So just use the ARB extension instead + which is present on i915. + + src/cairo-gl-surface.c | 24 +++++++++++++----------- + 1 files changed, 13 insertions(+), 11 deletions(-) + +commit 6c28c7a1e268fad0ad34cac0d8a9a3951d8f3c7a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 23 08:45:58 2009 +0100 + + [perf] Add a simple report printer. + + After a run, it can be useful to reprint the results, so add + cairo-perf-print to perform that task. + + For the future, I'd like to move the performance suite over to the + git/perf style of single, multi-function binary. + + The sequence of operations that I typically do are: + + ./cairo-perf-trace -r -v -i 6 > `git describe`.`hostname`.perf + ./cairo-perf-diff-files REVA REVB + ./cairo-perf-print REVA + ./cairo-perf-compare-backends REVA + + which misses the caching available with cairo-perf-diff. 'make html' is + almost what I want, but still too prescriptive. However, that does need to + be addressed for continuous performance monitoring. + + Along the perf lines, those sequence of operations become: + ./cairo-perf record -i 6 + ./cairo-perf report + ./cairo-perf report REVA REVB + ./cairo-perf report --backends="image,xlib,gl" REVA REVB + ./cairo-perf report --html REVA REVB + + Also we want to think about installing the cairo-perf binary. So we want + to differentiate when run inside a git checkout. + + perf/Makefile.am | 8 ++++- + perf/cairo-perf-print.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 78 insertions(+), 2 deletions(-) + +commit 92ba74d760f20cd257b3916a51c8efef1c0e021e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 19:04:07 2009 +0100 + + [vg] Compile fixes for EGL boilerplate + + boilerplate/cairo-boilerplate-vg.c | 19 +++++++++---------- + 1 files changed, 9 insertions(+), 10 deletions(-) + +commit bfbe875ded0b0666a8048ef5fb598179a81c610a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 07:52:30 2009 +0100 + + [gl] Enable GL backend for cairo-perf-trace + + perf/cairo-perf-trace.c | 3 +++ + perf/cairo-perf.c | 4 +++- + 2 files changed, 6 insertions(+), 1 deletions(-) + +commit fed000620335a5fc2bda2ffeca5cbdd0ca5a158c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 07:49:05 2009 +0100 + + [NEWS] Add stub for OpenGL. + + NEWS | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit bff0b11634ffe52a5c8b2bbc9b6aee5bc3d2772c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 07:45:21 2009 +0100 + + [gl] Update reference images + + test/Makefile.am | 14 ++++++++++++++ + test/a1-image-sample.gl.xfail.png | Bin 0 -> 120 bytes + test/alpha-similar.gl.argb32.xfail.png | Bin 0 -> 99 bytes + test/alpha-similar.gl.rgb24.xfail.png | Bin 0 -> 93 bytes + test/device-offset-fractional.gl.xfail.png | Bin 0 -> 311 bytes + test/filter-nearest-offset.gl.xfail.png | Bin 0 -> 260 bytes + test/filter-nearest-transformed.gl.xfail.png | Bin 0 -> 514 bytes + test/finer-grained-fallbacks.gl.argb32.ref.png | Bin 0 -> 1075 bytes + test/mask-glyphs.gl.ref.png | Bin 0 -> 1188669 bytes + test/meta-surface-pattern.gl.argb32.ref.png | Bin 0 -> 3130 bytes + test/scale-offset-image.gl.ref.png | Bin 0 -> 9197 bytes + test/scale-offset-similar.gl.ref.png | Bin 0 -> 9197 bytes + test/source-clip-scale.gl.ref.png | Bin 0 -> 164 bytes + test/unbounded-operator.gl.argb32.xfail.png | Bin 0 -> 2805 bytes + test/unbounded-operator.gl.rgb24.xfail.png | Bin 0 -> 1355 bytes + 15 files changed, 14 insertions(+), 0 deletions(-) + +commit 653351cd2e9fbe42333cd5ce57b7b49c6da3d122 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 07:38:24 2009 +0100 + + [gl] Copy font options from image backend. + + Enable hint metrics similar to the default image backend. However, + consider using the display stored in the GLX context to query the screen + default. + + src/cairo-gl-surface.c | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + +commit a2ac67274d4ef89079c47cc415144a6ac0303f70 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 00:05:07 2009 +0100 + + [gl] Add warning about missing hook for XCloseDisplay(). + + src/cairo-glx-context.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit f2f42ec70a626a69f4b29f55f9d1818942bb0b19 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 22 00:01:22 2009 +0100 + + [gl] Apply pixel sample bias for spans + + src/cairo-gl-surface.c | 10 ++++++---- + 1 files changed, 6 insertions(+), 4 deletions(-) + +commit 9e420f5d0669ec12eaaf7faf4e55642c10b95fb3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:45:00 2009 +0100 + + [gl] Another whitespace pass. + + src/cairo-gl-surface.c | 69 ++++++++++++++++++++++++----------------------- + 1 files changed, 35 insertions(+), 34 deletions(-) + +commit 222fd8b49b25c56f38ad375059240983a8f576ce +Merge: 5471603 7ee0fee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:42:34 2009 +0100 + + Merge commit 'anholt/gl-span-renderer' + +commit 5471603b527ecf43aaa72665d47929a1038aa642 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:38:05 2009 +0100 + + [gl] Use QUADS for drawing fill_rectangles() not TRIFAN + + As each rectangle is independent, we need to draw the array using QUADS. + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c3ef0c8d2011a23d73ff919dbb947ca68e1d8c1b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:31:30 2009 +0100 + + [gl] Whitespace + + Ensure we leave a space between a function call and its parameters. + + src/cairo-gl-surface.c | 90 ++++++++++++++++++++++++------------------------ + 1 files changed, 45 insertions(+), 45 deletions(-) + +commit b71c27bf4ebd19f74f22392ddb2612d843c74a38 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:26:15 2009 +0100 + + [gl] Remove dead code. + + The loop between texture_setup() and clone_similar() should be + impossible, since every compositing backend should know how to clone an + image surface. cairo-gl is no longer an exception and so this code can + safely be removed. + + src/cairo-gl-surface.c | 25 +------------------------ + 1 files changed, 1 insertions(+), 24 deletions(-) + +commit c8cc6a205a68a7c87239424aa93a29b5b166561d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 23:08:39 2009 +0100 + + [gl] Avoid temporary allocation of pixman trapezoids + + When creating the trapezoid mask, avoid having to allocate a temporary + array to hold the converted pixman trapezoids by instead rasterizing each + trapezoid separately into the mask. + + src/cairo-gl-surface.c | 82 +++++++++++++++++++++--------------------------- + 1 files changed, 36 insertions(+), 46 deletions(-) + +commit 5deb8fa213ce86759053be391966618ee0959f50 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 9 16:20:32 2009 +0100 + + [gl] Construct a dummy window for the initial context + + In order to make the initial context current we need a Drawable that + matches the context. In general, the RootWindow may not match the desired + context so we need to query the context and construct an appropriate + Drawable. + + src/cairo-glx-context.c | 70 ++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 63 insertions(+), 7 deletions(-) + +commit 911482e5ae88ba26a1b3290731968f8b8a80cd70 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 22 23:44:27 2009 +0100 + + [gl] Constrain image sources to max texture size + + src/cairo-gl-private.h | 2 ++ + src/cairo-gl-surface.c | 19 +++++++++++++++++++ + 2 files changed, 21 insertions(+), 0 deletions(-) + +commit 1ae5942a3aa9f73aa71438dc40221836b0dff7e2 +Merge: fd9df49 6a59574 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 22:28:44 2009 +0100 + + Merge commit 'anholt/gl' + + Conflicts: + boilerplate/Makefile.sources + boilerplate/cairo-boilerplate.c + build/configure.ac.features + src/cairo.h + util/cairo-script/Makefile.am + +commit fd9df4978d56bbb85ecd795afce72c0310dbcf3f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 21 20:51:46 2009 +0100 + + [perf] Don't override CAIRO_TRACE_DIR in cairo-perf-diff + + perf/cairo-perf-diff | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit 2dd97ae59c482f09e42d719a941e189560f00b8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 22:19:21 2009 +0100 + + [perf] Include trace comparison in html output + + build/Makefile.am.analysis | 2 ++ + perf/Makefile.am | 2 +- + perf/cairo-perf-diff | 17 +++++++---------- + perf/make-html.py | 3 +-- + 4 files changed, 11 insertions(+), 13 deletions(-) + +commit f30cee70f5fadd1f2af60310a148f61ed4fc7069 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 22:17:30 2009 +0100 + + [perf] Search multiple directories for traces + + In view of sharing traces between multiple builder, add some system wide + directories to the search path. This should be refined to a single + canonical location before release. + + perf/cairo-perf-trace.c | 23 +++++++++++++++++++++-- + 1 files changed, 21 insertions(+), 2 deletions(-) + +commit ebac096648d638d6405152d37d7b58a0f6ad3242 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 19:54:12 2009 +0100 + + [build] And export CC_FOR_BUILD so that we can actually use it! + + build/configure.ac.tools | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit ed7853d4991f17a5e6df694808d33603eecf9186 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 19:37:27 2009 +0100 + + [build] Use ${CC} as the default value for CC_FOR_BUILD + + build/configure.ac.tools | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 809f77a5cb7c17582a0ed90285a3c48c0696ed3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 13:44:48 2009 +0100 + + [test] Summarise tests that fail during the preamble. + + Some tests only run and check during the preamble phase, and those + failures were being ignored during the summary. + + test/cairo-test-runner.c | 109 ++++++++++++++++++++++++++++++++++++---------- + 1 files changed, 85 insertions(+), 24 deletions(-) + +commit dbaa08e80b6d53f905974f3d2012f9425d9b8603 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 11:53:17 2009 +0100 + + [test] Fallback to comparing the base image references + + After looking at backend specific images, check against the base image + reference. This is useful to fallback surfaces like xlib-fallback, which + should look closer to the image backend than the xlib backend. + + test/cairo-test.c | 231 +++++++++++++++++++++++++++++++++++++---------------- + 1 files changed, 163 insertions(+), 68 deletions(-) + +commit 164e0d2ea38baacd5888bffa5bebb5d64bfee01b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 11:02:04 2009 +0100 + + [test] Misidentification of XFAIL as NEW + + cut'n'paste error compared the image against the known failure instead of + any recorded new failure, when checking for NEW fails. + + test/cairo-test.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e2883177487ba294a0c97bafb00e2f56e5fe84d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 20 18:55:04 2009 +0100 + + Add a jhbuild moduleset. + + util/cairo.modules | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit 0c1e86d661e145981050129b163eae0fb8f4a963 +Author: Pierre Tardy <tardyp@gmail.com> +Date: Sat Jul 18 19:16:20 2009 +0100 + + Cross-compilation fix for boilerplate/test + + boilerplate/Makefile.am | 2 +- + test/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit aac256b2692d15fc21abcdc9c1b9e5fd35f63f66 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 18 16:15:47 2009 +0100 + + Compile fixes for mingw32. + + Trivial typos found whilst using a cross-compiler. + + src/cairo-win32-surface.c | 1 + + util/cairo-script/cairo-script-private.h | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 922b01ad141305f909a4cfffc6c65a27c6d7a8a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 17 14:27:19 2009 +0100 + + [test] Add a simplified CLEAR test. + + Just performs a very basic masked clear. This does not exhibit the bug I was + looking for, but is still useful for its simplicity. + + test/Makefile.am | 4 ++ + test/Makefile.sources | 1 + + test/clear.argb32.ref.png | Bin 0 -> 695 bytes + test/clear.c | 86 +++++++++++++++++++++++++++++++++++++ + test/clear.rgb24.ref.png | Bin 0 -> 618 bytes + test/clear.svg12.argb32.xfail.png | Bin 0 -> 170 bytes + test/clear.svg12.rgb24.xfail.png | Bin 0 -> 170 bytes + 7 files changed, 91 insertions(+), 0 deletions(-) + +commit 52fa8760aeef38abbab0484a6978adaf4f100f90 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 15 16:37:25 2009 +0100 + + Add OpenVG backend. + + Based on the work by Øyvind Kolås and Pierre Tardy -- many thanks to + Pierre for pushing this backend for inclusion as well as testing and + reviewing my initial patch. And many more thanks to pippin for writing the + backend in the first place! + + Hacked and chopped by myself into a suitable basis for a backend. Quite a + few issues remain open, but would seem to be ready for testing on suitable + hardware. + + AUTHORS | 3 +- + NEWS | 3 + + boilerplate/Makefile.sources | 1 + + boilerplate/Makefile.win32.features | 30 + + boilerplate/cairo-boilerplate-vg.c | 350 +++++++ + build/Makefile.win32.features | 3 + + build/Makefile.win32.features-h | 9 + + build/configure.ac.features | 3 + + configure.ac | 43 + + src/Makefile.sources | 3 + + src/Makefile.win32.features | 42 + + src/cairo-vg-surface.c | 1938 +++++++++++++++++++++++++++++++++++ + src/cairo-vg.h | 103 ++ + src/cairo.h | 4 +- + test/cairo-test.c | 3 +- + test/get-clip.c | 1 + + util/cairo-trace/trace.c | 70 ++ + 17 files changed, 2606 insertions(+), 3 deletions(-) + +commit 34d5b862bce3e9273391eb5d2c384394cca94d2d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 16 14:18:13 2009 +0100 + + [xlib] Enable Render support for the extended PDF operators + + With the latest 0.11 release of renderproto we now have the ability to + use the extended PDF operators via Render. + + src/cairo-image-surface.c | 10 +++++--- + src/cairo-xlib-surface.c | 48 ++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 51 insertions(+), 7 deletions(-) + +commit 01eec61f4ffae4f492d667b6accb5ed3f6960d2c +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:59 2009 -0400 + + [qt] Remove use of unnecessary QBrush pointer + + QBrush is a implicitly shared datastructure. There is on need to layer + "explicit pointer based sharing" atop of it. + + Mozilla Bug #498871 + + src/cairo-qt-surface.cpp | 31 +++++++++++++++---------------- + 1 files changed, 15 insertions(+), 16 deletions(-) + +commit 222c12cc4e48c2c9178a7390ea8edd73d7cb56bb +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:59 2009 -0400 + + [qt] Remove use of unnecessary QPen pointer + + QPen is a implicitly shared class, so there is no need to do explicit sharing + via pointers. + + Mozilla Bug #498873 + + src/cairo-qt-surface.cpp | 22 ++++++++++------------ + 1 files changed, 10 insertions(+), 12 deletions(-) + +commit 0797b2fcaad0c17c35e67ec5d01a0556a76ee39d +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:59 2009 -0400 + + [qt] Cleanup some whitespace + + Mozilla bug #498843 + + src/cairo-qt-surface.cpp | 212 +++++++++++++++++++++++----------------------- + 1 files changed, 106 insertions(+), 106 deletions(-) + +commit d782ba04b76ae18c562840242dc535e9db48aa13 +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:58 2009 -0400 + + [qt] Add method to flush qpainter + + This is required for non-X11 rendering backends. + + Mozilla bug #498910 + + src/cairo-qt-surface.cpp | 14 +++++++++++++- + 1 files changed, 13 insertions(+), 1 deletions(-) + +commit e713857b85ef45d923eae94d8e4c05c7b2049ca5 +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:58 2009 -0400 + + [qt] Move _opstr() inside the #if 0 to avoid warnings + + Mozilla bug #498917 + + src/cairo-qt-surface.cpp | 50 +++++++++++++++++++++++----------------------- + 1 files changed, 25 insertions(+), 25 deletions(-) + +commit 4f9551e5e533deb66401b601766bf4263192b6de +Author: Tobias Hunger <tobias.hunger@gmail.com> +Date: Thu Jul 16 00:16:57 2009 -0400 + + [qt] Reduce padding in cairo_qt_surface_t struct + + Removes 4 bytes of padding (on a 32bit system) from the datastructure by + reordering the members. + + Mozilla bug #498880 + + src/cairo-qt-surface.cpp | 27 ++++++++++++++------------- + 1 files changed, 14 insertions(+), 13 deletions(-) + +commit 1caa34103925c53b180cd614f5c6b425b5a3f271 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 15 13:26:34 2009 +0100 + + Fix build under distcheck + + Need to play a little dance to get the sources included and paths correct + whilst building source files with objdir != srcdir under distcheck. + + boilerplate/Makefile.am | 10 ++-- + boilerplate/make-cairo-boilerplate-constructors.c | 19 ++++-- + doc/public/tmpl/cairo-surface.sgml | 2 + + doc/public/tmpl/cairo.sgml | 15 ++++ + test/Makefile.am | 9 +-- + test/make-cairo-test-constructors.c | 13 +++- + util/cairo-script/csi-bind.c | 76 +++++++++++++++++++++ + 7 files changed, 125 insertions(+), 19 deletions(-) + +commit 818ad38a0e323892231469520a4b077f4dae31d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 19:07:42 2009 +0100 + + [boilerplate] Add make-...-constructors to .gitignore + + boilerplate/.gitignore | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 9a65b4a116a3ae451cbba2826467ad3375235a5c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 19:06:53 2009 +0100 + + [perf] Add cairo-traces to .gitignore + + perf/.gitignore | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 5796a9240ea02dbdbef0d51a4ee71398fea858ad +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 19:04:56 2009 +0100 + + [test] Reconstruct REFERENCE_IMAGES + + Rebuild the list from scratch using the contents of my git working tree. + + test/Makefile.am | 449 +++++++++++++++++++++-------------------------------- + 1 files changed, 178 insertions(+), 271 deletions(-) + +commit 8c55ca9ebce487c5ca8b1712f8358a6361032d43 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 16:54:51 2009 +0100 + + [directfb] Silence compiler warnings. + + Add extended blend mode to operator switch. + + src/cairo-directfb-surface.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 8ad3fca2109f18b5125e7087b3059eb4225eec3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 16:51:31 2009 +0100 + + [glitz] Extended blend mode support + + Ensure that we fallback given an extended operator. + + src/cairo-glitz-surface.c | 80 +++++++++++++++++++++++++++++++++----------- + 1 files changed, 60 insertions(+), 20 deletions(-) + +commit 333d37a60fa80f325612ea94b19ec9892dff8cfb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 16:41:00 2009 +0100 + + [pdf] Silence copmiler. + + Fill in missing case values to silence the compiler, and remind us should + we every add more operators in future. + + src/cairo-pdf-surface.c | 95 ++++++++++++++++++++++++----------------------- + 1 files changed, 48 insertions(+), 47 deletions(-) + +commit 710308c64e298ae35988fb0881a33cbe92af48ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 16:31:41 2009 +0100 + + [script] Extended blend mode support. + + src/cairo-script-surface.c | 18 +++++++++++++++++- + util/cairo-script/cairo-script-operators.c | 15 +++++++++++++++ + util/cairo-trace/trace.c | 18 +++++++++++++++++- + 3 files changed, 49 insertions(+), 2 deletions(-) + +commit 100f0d94eebcec05372263b2e68c27b91b52a1c8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jul 14 16:30:36 2009 +0100 + + [cairo] Remove trailing spaces in comments. + + vim highlights these errors making my screen go red and upsets me. + So they must die. + + src/cairo.h | 22 +++++++++++----------- + 1 files changed, 11 insertions(+), 11 deletions(-) + +commit 75736603d3b976dab8ac1ef473164c618084ee60 +Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> +Date: Wed Aug 29 15:11:23 2007 +0200 + + [SVG] Add extended blend modes. + + src/cairo-svg-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 47af6cf2803737ab7248d1ce4d76f038d1f3188e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Jul 14 15:34:13 2009 +0200 + + [pdf] Add support for the extra blend modes + + HSL modes support added by Benjamin Otte <otte@gnome.org> + + src/cairo-pdf-surface-private.h | 4 + + src/cairo-pdf-surface.c | 162 ++++++++++++++++++++++++++++++++++++++- + 2 files changed, 164 insertions(+), 2 deletions(-) + +commit cf186d60b0d96cde859869237fa859e28a74a037 +Author: Benjamin Otte <otte@gnome.org> +Date: Thu Aug 30 10:16:00 2007 +0200 + + [xlib] Add support for new operators + + This is of course just making sure fallbacks get used as Render does not support + the new operators yet. + + src/cairo-xlib-surface.c | 28 +++++++++++++++++++++++++++- + 1 files changed, 27 insertions(+), 1 deletions(-) + +commit 0fd944d4bfbc2fff9960378eafd18a7d8fb9f296 +Author: Benjamin Otte <otte@gnome.org> +Date: Tue Jul 14 15:28:10 2009 +0200 + + Use new pixman extended blend operators + + It also adds extended-blend tests. + + Based on a previous patch by Emmanuel Pacaud <emmanuel.pacaud@free.fr> + + src/cairo-image-surface.c | 31 ++++++++ + src/cairo-misc.c | 30 ++++++++ + src/cairo.h | 53 +++++++++++++- + test/Makefile.am | 4 + + test/Makefile.sources | 2 + + test/extended-blend-alpha.argb32.ref.png | Bin 0 -> 9777 bytes + test/extended-blend-alpha.c | 115 +++++++++++++++++++++++++++++ + test/extended-blend-alpha.rgb24.ref.png | Bin 0 -> 5743 bytes + test/extended-blend.argb32.ref.png | Bin 0 -> 4071 bytes + test/extended-blend.c | 117 ++++++++++++++++++++++++++++++ + test/extended-blend.rgb24.ref.png | Bin 0 -> 3772 bytes + 11 files changed, 351 insertions(+), 1 deletions(-) + +commit 16387f0a7dd3b474bcaf637d3e290029b79afec1 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jul 14 11:16:24 2009 +0200 + + [configure] Bump pixman dependency + + Version 0.15.16 contains the new PDF blend mode operators. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 655a4dbc36d95ce4a82cbc13aa9e2002b41fa4de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 13 14:31:43 2009 +0100 + + [test] Track XFAIL using expected results stored as xfail.png + + Instead of tagging the sources, which is insensitive to changes, track the + known failure modes by recording the current fail as an xfail.png + reference. (We also introduce a new.png to track a fresh error, so that + they are not lost in the noise of the old XFAILs and hopefully do not + cause everyone to fret). + + As we have removed the XFAIL tagging we find, surprise surprise, that some + tests are now working -- so review all the reference images (as also some + .ref.png now should be .xfail.png). + + Note: I've only checked image,pdf,ps,svg. The test surfaces report some + failures that probably need to addressed in source. I've not correct the + changes for win32 and quartz. Nor fixed up the experimental backends. + + test/alpha-similar.c | 2 +- + test/alpha-similar.pdf.argb32.xfail.png | Bin 0 -> 95 bytes + test/alpha-similar.pdf.rgb24.xfail.png | Bin 0 -> 93 bytes + test/alpha-similar.ps.argb32.xfail.png | Bin 0 -> 95 bytes + test/alpha-similar.ps.rgb24.xfail.png | Bin 0 -> 93 bytes + test/alpha-similar.svg.argb32.xfail.png | Bin 0 -> 99 bytes + test/alpha-similar.svg.rgb24.xfail.png | Bin 0 -> 95 bytes + test/big-line.c | 2 +- + test/big-line.ps.argb32.ref.png | Bin 0 -> 977 bytes + test/big-line.ps.rgb24.ref.png | Bin 0 -> 709 bytes + test/big-line.ps2.ref.png | Bin 1148 -> 0 bytes + test/big-line.ps2.rgb24.ref.png | Bin 830 -> 0 bytes + test/big-line.ps3.ref.png | Bin 1148 -> 0 bytes + test/big-line.ps3.rgb24.ref.png | Bin 830 -> 0 bytes + test/big-line.ref.png | Bin 1486 -> 0 bytes + test/big-line.rgb24.ref.png | Bin 1308 -> 0 bytes + test/big-trap.c | 7 +- + test/cairo-test-runner.c | 161 ++------ + test/cairo-test.c | 405 ++++++++++++++------ + test/cairo-test.h | 56 +++- + test/caps-joins-alpha.svg11.ref.png | Bin 2454 -> 0 bytes + test/caps-joins-alpha.svg12.ref.png | Bin 2454 -> 0 bytes + test/clip-fill-rule.test-fallback.rgb24.ref.png | Bin 361 -> 0 bytes + test/clip-nesting.test-fallback.rgb24.ref.png | Bin 936 -> 0 bytes + test/clip-operator.c | 2 +- + test/clip-operator.pdf.argb32.ref.png | Bin 11603 -> 0 bytes + test/clip-operator.pdf.argb32.xfail.png | Bin 0 -> 9340 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 6882 -> 0 bytes + test/clip-operator.pdf.rgb24.xfail.png | Bin 0 -> 5155 bytes + test/clip-operator.svg12.argb32.xfail.png | Bin 0 -> 8404 bytes + test/clip-operator.svg12.rgb24.xfail.png | Bin 0 -> 4523 bytes + test/clip-operator.test-fallback.argb32.ref.png | Bin 8252 -> 0 bytes + test/clip-operator.test-fallback.rgb24.ref.png | Bin 3241 -> 0 bytes + test/clip-twice.test-fallback.argb32.ref.png | Bin 1343 -> 0 bytes + test/clip-twice.test-fallback.rgb24.ref.png | Bin 1179 -> 0 bytes + test/composite-integer-translate-source.c | 2 +- + test/degenerate-arc.test-fallback.argb32.ref.png | Bin 547 -> 0 bytes + test/degenerate-arc.test-fallback.rgb24.ref.png | Bin 547 -> 0 bytes + test/degenerate-dash.c | 2 +- + test/degenerate-dash.ps.xfail.png | Bin 0 -> 1835 bytes + test/degenerate-path.c | 2 +- + test/degenerate-path.ps.argb32.xfail.png | Bin 0 -> 236 bytes + test/degenerate-path.ps.rgb24.xfail.png | Bin 0 -> 186 bytes + test/degenerate-path.ps2.argb32.ref.png | Bin 390 -> 0 bytes + test/degenerate-path.ps2.rgb24.ref.png | Bin 358 -> 0 bytes + test/degenerate-path.ps3.argb32.ref.png | Bin 390 -> 0 bytes + test/degenerate-path.ps3.rgb24.ref.png | Bin 358 -> 0 bytes + test/device-offset-scale.c | 2 +- + test/device-offset-scale.svg.xfail.png | Bin 0 -> 128 bytes + test/extend-pad-border.c | 2 +- + test/extend-pad-border.ps.ref.png | Bin 0 -> 649 bytes + test/extend-pad-border.svg.xfail.png | Bin 0 -> 1063 bytes + test/extend-pad-similar.svg.xfail.png | Bin 0 -> 270 bytes + test/extend-pad.svg.xfail.png | Bin 0 -> 270 bytes + test/fallback-resolution.c | 14 +- + test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 3750 -> 0 bytes + test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 3758 -> 0 bytes + ...fill-alpha-pattern.test-fallback.argb32.ref.png | Bin 3379 -> 0 bytes + .../fill-alpha-pattern.test-fallback.rgb24.ref.png | Bin 3379 -> 0 bytes + test/fill-alpha.test-fallback.argb32.ref.png | Bin 2824 -> 0 bytes + test/fill-alpha.test-fallback.rgb24.ref.png | Bin 2824 -> 0 bytes + test/fill-and-stroke-alpha-add.c | 2 +- + test/fill-and-stroke-alpha-add.svg12.xfail.png | Bin 0 -> 614 bytes + test/fill-degenerate-sort-order.c | 2 +- + .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin 0 -> 1901 bytes + test/fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin 0 -> 1645 bytes + ...enerate-sort-order.test-fallback.argb32.ref.png | Bin 2378 -> 0 bytes + ...generate-sort-order.test-fallback.rgb24.ref.png | Bin 2041 -> 0 bytes + test/fill-image.xlib.ref.png | Bin 0 -> 1460 bytes + test/fill-rule.test-fallback.argb32.ref.png | Bin 1979 -> 0 bytes + test/fill-rule.test-fallback.rgb24.ref.png | Bin 1703 -> 0 bytes + test/filter-bilinear-extents.pdf.ref.png | Bin 798 -> 0 bytes + test/filter-bilinear-extents.pdf.xfail.png | Bin 0 -> 401 bytes + test/filter-nearest-offset.pdf.ref.png | Bin 997 -> 0 bytes + test/filter-nearest-offset.pdf.xfail.png | Bin 0 -> 1926 bytes + test/filter-nearest-offset.svg.xfail.png | Bin 0 -> 4419 bytes + test/filter-nearest-offset.svg11.ref.png | Bin 4739 -> 0 bytes + test/filter-nearest-offset.svg12.ref.png | Bin 4739 -> 0 bytes + test/filter-nearest-transformed.pdf.ref.png | Bin 552 -> 0 bytes + test/filter-nearest-transformed.pdf.xfail.png | Bin 0 -> 488 bytes + test/filter-nearest-transformed.svg.xfail.png | Bin 0 -> 546 bytes + test/filter-nearest-transformed.svg11.ref.png | Bin 559 -> 0 bytes + test/filter-nearest-transformed.svg12.ref.png | Bin 559 -> 0 bytes + test/finer-grained-fallbacks.c | 2 +- + test/finer-grained-fallbacks.svg12.argb32.ref.png | Bin 0 -> 190 bytes + test/finer-grained-fallbacks.svg12.rgb24.ref.png | Bin 0 -> 191 bytes + ...-grained-fallbacks.test-fallback.argb32.ref.png | Bin 1111 -> 0 bytes + ...r-grained-fallbacks.test-fallback.rgb24.ref.png | Bin 854 -> 0 bytes + test/font-matrix-translation.svg.ref.png | Bin 0 -> 870 bytes + test/font-matrix-translation.svg11.argb32.ref.png | Bin 857 -> 0 bytes + test/font-matrix-translation.svg11.ref.png | Bin 970 -> 0 bytes + test/font-matrix-translation.svg11.rgb24.ref.png | Bin 857 -> 0 bytes + test/font-matrix-translation.svg12.argb32.ref.png | Bin 857 -> 0 bytes + test/font-matrix-translation.svg12.ref.png | Bin 970 -> 0 bytes + test/font-matrix-translation.svg12.rgb24.ref.png | Bin 857 -> 0 bytes + test/ft-show-glyphs-positioning.svg.ref.png | Bin 0 -> 6018 bytes + test/ft-show-glyphs-positioning.svg11.ref.png | Bin 6590 -> 0 bytes + test/ft-show-glyphs-positioning.svg12.ref.png | Bin 6590 -> 0 bytes + test/ft-show-glyphs-table.svg.ref.png | Bin 0 -> 10005 bytes + test/ft-show-glyphs-table.svg11.argb32.ref.png | Bin 9953 -> 0 bytes + test/ft-show-glyphs-table.svg11.rgb24.ref.png | Bin 9953 -> 0 bytes + test/ft-show-glyphs-table.svg12.argb32.ref.png | Bin 9953 -> 0 bytes + test/ft-show-glyphs-table.svg12.rgb24.ref.png | Bin 9953 -> 0 bytes + test/ft-text-vertical-layout-type1.svg.ref.png | Bin 0 -> 3607 bytes + ...text-vertical-layout-type1.svg11.argb32.ref.png | Bin 3614 -> 0 bytes + test/ft-text-vertical-layout-type1.svg11.ref.png | Bin 3973 -> 0 bytes + ...-text-vertical-layout-type1.svg11.rgb24.ref.png | Bin 3614 -> 0 bytes + ...text-vertical-layout-type1.svg12.argb32.ref.png | Bin 3614 -> 0 bytes + test/ft-text-vertical-layout-type1.svg12.ref.png | Bin 3973 -> 0 bytes + ...-text-vertical-layout-type1.svg12.rgb24.ref.png | Bin 3614 -> 0 bytes + ...tical-layout-type1.test-fallback.argb32.ref.png | Bin 3639 -> 0 bytes + ...rtical-layout-type1.test-fallback.rgb24.ref.png | Bin 3639 -> 0 bytes + test/ft-text-vertical-layout-type3.svg.ref.png | Bin 0 -> 3626 bytes + ...text-vertical-layout-type3.svg11.argb32.ref.png | Bin 3640 -> 0 bytes + test/ft-text-vertical-layout-type3.svg11.ref.png | Bin 3957 -> 0 bytes + ...-text-vertical-layout-type3.svg11.rgb24.ref.png | Bin 3640 -> 0 bytes + ...text-vertical-layout-type3.svg12.argb32.ref.png | Bin 3640 -> 0 bytes + test/ft-text-vertical-layout-type3.svg12.ref.png | Bin 3957 -> 0 bytes + ...-text-vertical-layout-type3.svg12.rgb24.ref.png | Bin 3640 -> 0 bytes + ...tical-layout-type3.test-fallback.argb32.ref.png | Bin 3605 -> 0 bytes + ...rtical-layout-type3.test-fallback.rgb24.ref.png | Bin 3605 -> 0 bytes + test/gradient-alpha.pdf.argb32.ref.png | Bin 126 -> 0 bytes + test/gradient-alpha.pdf.rgb24.ref.png | Bin 121 -> 0 bytes + test/gradient-constant-alpha.pdf.argb32.ref.png | Bin 116 -> 0 bytes + test/gradient-constant-alpha.pdf.rgb24.ref.png | Bin 115 -> 0 bytes + test/group-unaligned.pdf.new.png | Bin 0 -> 427 bytes + test/group-unaligned.pdf.ref.png | Bin 414 -> 0 bytes + test/group-unaligned.svg.argb32.ref.png | Bin 524 -> 0 bytes + test/group-unaligned.svg.argb32.xfail.png | Bin 0 -> 522 bytes + test/group-unaligned.svg.rgb24.ref.png | Bin 434 -> 0 bytes + test/group-unaligned.svg.rgb24.xfail.png | Bin 0 -> 425 bytes + test/huge-linear.c | 2 +- + test/huge-linear.pdf.ref.png | Bin 0 -> 1577 bytes + test/huge-radial.c | 2 +- + test/huge-radial.pdf.argb32.ref.png | Bin 0 -> 177382 bytes + test/huge-radial.pdf.rgb24.ref.png | Bin 0 -> 225358 bytes + test/large-source-roi.c | 2 +- + test/large-source-roi.ref.png | Bin 102 -> 0 bytes + test/linear-gradient.pdf.ref.png | Bin 1125 -> 0 bytes + test/linear-gradient.svg11.argb32.ref.png | Bin 988 -> 0 bytes + test/linear-gradient.svg11.ref.png | Bin 1000 -> 0 bytes + test/linear-gradient.svg11.rgb24.ref.png | Bin 988 -> 0 bytes + test/linear-gradient.svg12.argb32.ref.png | Bin 988 -> 0 bytes + test/linear-gradient.svg12.ref.png | Bin 1000 -> 0 bytes + test/linear-gradient.svg12.rgb24.ref.png | Bin 988 -> 0 bytes + test/linear-gradient.test-fallback.argb32.ref.png | Bin 923 -> 0 bytes + test/linear-gradient.test-fallback.rgb24.ref.png | Bin 923 -> 0 bytes + test/long-lines.c | 2 +- + test/long-lines.ref.png | Bin 247 -> 0 bytes + test/make-html.pl | 13 +- + test/mask-alpha.svg.rgb24.xfail.png | Bin 0 -> 585 bytes + test/mask-alpha.svg11.argb32.ref.png | Bin 642 -> 0 bytes + test/mask-alpha.svg11.rgb24.ref.png | Bin 592 -> 0 bytes + test/mask-alpha.svg12.argb32.ref.png | Bin 642 -> 0 bytes + test/mask-alpha.svg12.rgb24.ref.png | Bin 592 -> 0 bytes + test/mask-alpha.test-fallback.argb32.ref.png | Bin 627 -> 0 bytes + test/mask-ctm.svg11.argb32.ref.png | Bin 108 -> 0 bytes + test/mask-ctm.svg12.argb32.ref.png | Bin 108 -> 0 bytes + test/mask-glyphs.c | 2 +- + test/mask-glyphs.pdf.ref.png | Bin 0 -> 1187713 bytes + test/mask-glyphs.svg.ref.png | Bin 0 -> 1211170 bytes + test/mask-surface-ctm.svg11.argb32.ref.png | Bin 108 -> 0 bytes + test/mask-surface-ctm.svg12.argb32.ref.png | Bin 108 -> 0 bytes + test/mask-transformed-similar.svg.ref.png | Bin 0 -> 3365 bytes + test/mask-transformed-similar.svg11.ref.png | Bin 4051 -> 0 bytes + test/mask-transformed-similar.svg12.ref.png | Bin 4051 -> 0 bytes + test/mask.pdf.argb32.ref.png | Bin 9946 -> 0 bytes + test/mask.pdf.argb32.xfail.png | Bin 0 -> 7944 bytes + test/mask.pdf.rgb24.ref.png | Bin 8745 -> 0 bytes + test/mask.pdf.rgb24.xfail.png | Bin 0 -> 7388 bytes + test/mask.svg.argb32.xfail.png | Bin 0 -> 8613 bytes + test/mask.svg.rgb24.xfail.png | Bin 0 -> 7189 bytes + test/mask.svg11.argb32.ref.png | Bin 8682 -> 0 bytes + test/mask.svg11.rgb24.ref.png | Bin 7203 -> 0 bytes + test/mask.svg12.argb32.ref.png | Bin 8682 -> 0 bytes + test/mask.svg12.rgb24.ref.png | Bin 7203 -> 0 bytes + test/mask.test-fallback.argb32.ref.png | Bin 8457 -> 0 bytes + test/mask.test-fallback.rgb24.ref.png | Bin 7058 -> 0 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 4009 bytes + test/meta-surface-pattern.pdf.ref.png | Bin 4111 -> 0 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 3905 bytes + test/meta-surface-pattern.svg.argb32.ref.png | Bin 0 -> 3930 bytes + test/meta-surface-pattern.svg.rgb24.ref.png | Bin 0 -> 3910 bytes + test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3924 -> 0 bytes + test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 3914 -> 0 bytes + test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3924 -> 0 bytes + test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 3914 -> 0 bytes + test/operator-alpha.c | 2 +- + test/operator-alpha.svg12.argb32.xfail.png | Bin 0 -> 274 bytes + test/operator-alpha.svg12.rgb24.xfail.png | Bin 0 -> 248 bytes + test/operator-clear.c | 2 +- + test/operator-clear.pdf.argb32.ref.png | Bin 1607 -> 0 bytes + test/operator-clear.pdf.rgb24.ref.png | Bin 1402 -> 0 bytes + test/operator-clear.svg12.argb32.xfail.png | Bin 0 -> 405 bytes + test/operator-clear.svg12.rgb24.xfail.png | Bin 0 -> 535 bytes + test/operator-clear.xlib.ref.png | Bin 0 -> 951 bytes + test/operator-source.c | 2 +- + test/operator-source.pdf.argb32.ref.png | Bin 5112 -> 0 bytes + test/operator-source.pdf.rgb24.ref.png | Bin 4186 -> 0 bytes + test/operator-source.pdf.rgb24.xfail.png | Bin 0 -> 3645 bytes + test/operator-source.svg12.argb32.xfail.png | Bin 0 -> 2951 bytes + test/operator-source.svg12.rgb24.xfail.png | Bin 0 -> 2963 bytes + test/operator-source.test-fallback.argb32.ref.png | Bin 4401 -> 0 bytes + test/operator-source.test-fallback.rgb24.ref.png | Bin 3200 -> 0 bytes + test/operator.c | 2 +- + test/operator.svg12.argb32.xfail.png | Bin 0 -> 238 bytes + test/operator.svg12.rgb24.xfail.png | Bin 0 -> 242 bytes + test/over-above-source.c | 2 +- + test/over-above-source.svg12.rgb24.xfail.png | Bin 0 -> 563 bytes + .../over-above-source.test-fallback.argb32.ref.png | Bin 533 -> 0 bytes + test/over-above-source.test-fallback.rgb24.ref.png | Bin 450 -> 0 bytes + test/over-around-source.c | 2 +- + test/over-around-source.svg12.argb32.xfail.png | Bin 0 -> 559 bytes + test/over-around-source.svg12.rgb24.xfail.png | Bin 0 -> 559 bytes + ...over-around-source.test-fallback.argb32.ref.png | Bin 610 -> 0 bytes + test/over-below-source.c | 2 +- + test/over-below-source.svg12.argb32.xfail.png | Bin 0 -> 224 bytes + test/over-below-source.svg12.rgb24.xfail.png | Bin 0 -> 224 bytes + test/over-between-source.c | 2 +- + test/over-between-source.svg12.argb32.xfail.png | Bin 0 -> 224 bytes + test/over-between-source.svg12.rgb24.xfail.png | Bin 0 -> 224 bytes + ...ver-between-source.test-fallback.argb32.ref.png | Bin 578 -> 0 bytes + test/paint-source-alpha.c | 2 +- + test/paint-source-alpha.svg.ref.png | Bin 0 -> 693 bytes + test/paint-source-alpha.svg11.ref.png | Bin 756 -> 0 bytes + test/paint-source-alpha.svg12.ref.png | Bin 505 -> 0 bytes + test/paint-with-alpha.svg.ref.png | Bin 0 -> 483 bytes + test/paint-with-alpha.svg11.ref.png | Bin 516 -> 0 bytes + test/paint-with-alpha.svg12.ref.png | Bin 516 -> 0 bytes + test/path-precision.c | 9 +- + test/push-group.svg11.argb32.ref.png | Bin 3034 -> 0 bytes + test/push-group.svg12.argb32.ref.png | Bin 3034 -> 0 bytes + test/push-group.test-fallback.argb32.ref.png | Bin 3107 -> 0 bytes + test/push-group.test-fallback.rgb24.ref.png | Bin 2942 -> 0 bytes + test/radial-gradient.svg11.ref.png | Bin 91039 -> 0 bytes + test/radial-gradient.svg12.ref.png | Bin 91039 -> 0 bytes + ...ndom-intersections.test-fallback.argb32.ref.png | Bin 132312 -> 0 bytes + ...andom-intersections.test-fallback.rgb24.ref.png | Bin 132312 -> 0 bytes + test/rotate-image-surface-paint.pdf.ref.png | Bin 196 -> 0 bytes + test/rotate-image-surface-paint.pdf.xfail.png | Bin 0 -> 207 bytes + test/rotate-image-surface-paint.svg.ref.png | Bin 0 -> 209 bytes + test/rotate-image-surface-paint.svg11.ref.png | Bin 248 -> 0 bytes + test/rotate-image-surface-paint.svg12.ref.png | Bin 248 -> 0 bytes + test/scale-offset-image.c | 2 +- + test/scale-offset-image.pdf.argb32.ref.png | Bin 0 -> 8692 bytes + test/scale-offset-image.pdf.rgb24.ref.png | Bin 0 -> 8691 bytes + test/scale-offset-image.xfail.png | Bin 0 -> 8599 bytes + test/scale-offset-image.xlib.xfail.png | Bin 0 -> 9100 bytes + test/scale-offset-similar.c | 2 +- + test/scale-offset-similar.pdf.argb32.ref.png | Bin 0 -> 9278 bytes + test/scale-offset-similar.pdf.rgb24.ref.png | Bin 0 -> 9278 bytes + test/scale-offset-similar.xfail.png | Bin 0 -> 8599 bytes + test/scale-offset-similar.xlib.xfail.png | Bin 0 -> 8570 bytes + ...scale-source-surface-paint.svg.argb32.xfail.png | Bin 0 -> 229 bytes + .../scale-source-surface-paint.svg.rgb24.xfail.png | Bin 0 -> 222 bytes + ...scale-source-surface-paint.svg11.argb32.ref.png | Bin 229 -> 0 bytes + .../scale-source-surface-paint.svg11.rgb24.ref.png | Bin 243 -> 0 bytes + ...scale-source-surface-paint.svg12.argb32.ref.png | Bin 229 -> 0 bytes + .../scale-source-surface-paint.svg12.rgb24.ref.png | Bin 243 -> 0 bytes + test/self-copy-overlap.c | 2 +- + test/self-copy-overlap.ref.png | Bin 1140 -> 0 bytes + test/self-copy-overlap.rgb24.ref.png | Bin 608 -> 0 bytes + test/self-intersecting.argb32.xfail.png | Bin 0 -> 287 bytes + test/self-intersecting.c | 2 +- + test/self-intersecting.pdf.argb32.xfail.png | Bin 0 -> 295 bytes + test/self-intersecting.pdf.rgb24.xfail.png | Bin 0 -> 272 bytes + test/self-intersecting.ps.argb32.xfail.png | Bin 0 -> 186 bytes + test/self-intersecting.ps.rgb24.xfail.png | Bin 0 -> 186 bytes + test/self-intersecting.rgb24.xfail.png | Bin 0 -> 282 bytes + test/self-intersecting.xlib.argb32.xfail.png | Bin 0 -> 235 bytes + test/self-intersecting.xlib.rgb24.xfail.png | Bin 0 -> 240 bytes + test/set-source.svg11.argb32.ref.png | Bin 104 -> 0 bytes + test/set-source.svg12.argb32.ref.png | Bin 104 -> 0 bytes + test/smask-fill.c | 2 +- + test/smask-fill.svg.ref.png | Bin 0 -> 1150 bytes + test/smask-fill.svg11.argb32.ref.png | Bin 1128 -> 0 bytes + test/smask-fill.svg11.ref.png | Bin 1166 -> 0 bytes + test/smask-fill.svg11.rgb24.ref.png | Bin 1128 -> 0 bytes + test/smask-fill.svg12.argb32.ref.png | Bin 1128 -> 0 bytes + test/smask-fill.svg12.ref.png | Bin 1166 -> 0 bytes + test/smask-fill.svg12.rgb24.ref.png | Bin 1128 -> 0 bytes + test/smask-fill.test-fallback.argb32.ref.png | Bin 1148 -> 0 bytes + test/smask-fill.test-fallback.rgb24.ref.png | Bin 1148 -> 0 bytes + test/smask-image-mask.c | 2 +- + test/smask-mask.c | 2 +- + test/smask-mask.pdf.xfail.png | Bin 0 -> 4401 bytes + test/smask-mask.svg.ref.png | Bin 0 -> 2376 bytes + test/smask-mask.svg11.ref.png | Bin 2529 -> 0 bytes + test/smask-mask.svg12.ref.png | Bin 2529 -> 0 bytes + test/smask-paint.c | 2 +- + test/smask-paint.pdf.xfail.png | Bin 0 -> 4513 bytes + test/smask-paint.svg.ref.png | Bin 0 -> 2453 bytes + test/smask-paint.svg11.ref.png | Bin 2612 -> 0 bytes + test/smask-paint.svg12.ref.png | Bin 2612 -> 0 bytes + test/smask-stroke.c | 2 +- + test/smask-stroke.pdf.xfail.png | Bin 0 -> 392 bytes + test/smask-text.c | 2 +- + test/smask-text.pdf.ref.png | Bin 0 -> 1874 bytes + test/smask-text.ref.png | Bin 1777 -> 1874 bytes + test/smask-text.svg.ref.png | Bin 0 -> 1794 bytes + test/smask-text.svg11.argb32.ref.png | Bin 1791 -> 0 bytes + test/smask-text.svg11.ref.png | Bin 1886 -> 0 bytes + test/smask-text.svg11.rgb24.ref.png | Bin 1791 -> 0 bytes + test/smask-text.svg12.argb32.ref.png | Bin 1791 -> 0 bytes + test/smask-text.svg12.ref.png | Bin 1886 -> 0 bytes + test/smask-text.svg12.rgb24.ref.png | Bin 1791 -> 0 bytes + test/smask.c | 2 +- + test/smask.pdf.xfail.png | Bin 0 -> 4393 bytes + test/smask.ref.png | Bin 3587 -> 3417 bytes + test/smask.svg.ref.png | Bin 0 -> 3458 bytes + test/smask.svg11.ref.png | Bin 3634 -> 0 bytes + test/smask.svg12.ref.png | Bin 3634 -> 0 bytes + test/source-clip-scale.svg.ref.png | Bin 0 -> 116 bytes + test/source-clip-scale.svg11.ref.png | Bin 119 -> 0 bytes + test/source-clip-scale.svg12.ref.png | Bin 119 -> 0 bytes + test/surface-pattern-big-scale-down.c | 2 +- + test/surface-pattern-big-scale-down.ref.png | Bin 226 -> 191 bytes + test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 1532 -> 0 bytes + test/surface-pattern-scale-down.pdf.ref.png | Bin 0 -> 1589 bytes + test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 1532 -> 0 bytes + test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 3834 -> 0 bytes + test/surface-pattern-scale-up.pdf.ref.png | Bin 0 -> 2712 bytes + test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 3834 -> 0 bytes + test/surface-pattern.pdf.ref.png | Bin 14800 -> 0 bytes + test/surface-pattern.pdf.xfail.png | Bin 0 -> 10528 bytes + test/surface-pattern.ps.xfail.png | Bin 0 -> 2188 bytes + test/surface-pattern.ps2.ref.png | Bin 2364 -> 0 bytes + test/surface-pattern.ps3.ref.png | Bin 2364 -> 0 bytes + test/surface-pattern.svg.ref.png | Bin 16069 -> 0 bytes + test/surface-pattern.svg.xfail.png | Bin 0 -> 16069 bytes + test/text-pattern.pdf.argb32.ref.png | Bin 2334 -> 0 bytes + test/text-pattern.pdf.argb32.xfail.png | Bin 0 -> 1845 bytes + test/text-pattern.pdf.rgb24.ref.png | Bin 1915 -> 0 bytes + test/text-pattern.pdf.rgb24.xfail.png | Bin 0 -> 1599 bytes + test/text-pattern.svg.argb32.ref.png | Bin 0 -> 1745 bytes + test/text-pattern.svg.rgb24.ref.png | Bin 0 -> 1453 bytes + test/text-pattern.svg11.argb32.ref.png | Bin 1743 -> 0 bytes + test/text-pattern.svg11.rgb24.ref.png | Bin 1563 -> 0 bytes + test/text-pattern.svg12.argb32.ref.png | Bin 1743 -> 0 bytes + test/text-pattern.svg12.rgb24.ref.png | Bin 1563 -> 0 bytes + test/text-rotate.svg.ref.png | Bin 0 -> 17024 bytes + test/text-rotate.svg11.argb32.ref.png | Bin 16942 -> 0 bytes + test/text-rotate.svg11.ref.png | Bin 18301 -> 0 bytes + test/text-rotate.svg11.rgb24.ref.png | Bin 16942 -> 0 bytes + test/text-rotate.svg12.argb32.ref.png | Bin 16942 -> 0 bytes + test/text-rotate.svg12.ref.png | Bin 18301 -> 0 bytes + test/text-rotate.svg12.rgb24.ref.png | Bin 16942 -> 0 bytes + test/text-transform.svg.ref.png | Bin 0 -> 5682 bytes + test/text-transform.svg11.argb32.ref.png | Bin 5677 -> 0 bytes + test/text-transform.svg11.rgb24.ref.png | Bin 5677 -> 0 bytes + test/text-transform.svg12.argb32.ref.png | Bin 5677 -> 0 bytes + test/text-transform.svg12.rgb24.ref.png | Bin 5677 -> 0 bytes + test/trap-clip.pdf.argb32.ref.png | Bin 6746 -> 0 bytes + test/trap-clip.pdf.rgb24.ref.png | Bin 6616 -> 0 bytes + test/trap-clip.test-fallback.argb32.ref.png | Bin 5753 -> 0 bytes + test/trap-clip.test-fallback.rgb24.ref.png | Bin 5379 -> 0 bytes + test/twin.svg.ref.png | Bin 3027 -> 3040 bytes + test/unbounded-operator.c | 2 +- + test/unbounded-operator.svg12.argb32.xfail.png | Bin 0 -> 2767 bytes + test/unbounded-operator.svg12.rgb24.xfail.png | Bin 0 -> 1719 bytes + .../unbounded-operator.test-fallback.rgb24.ref.png | Bin 1306 -> 0 bytes + test/user-font-mask.svg.ref.png | Bin 0 -> 2030 bytes + test/user-font-mask.svg11.ref.png | Bin 2224 -> 0 bytes + test/user-font-proxy.svg.ref.png | Bin 0 -> 16817 bytes + test/user-font-proxy.svg11.argb32.ref.png | Bin 16836 -> 0 bytes + test/user-font-proxy.svg11.ref.png | Bin 17902 -> 0 bytes + test/user-font-proxy.svg11.rgb24.ref.png | Bin 16836 -> 0 bytes + test/user-font-proxy.svg12.argb32.ref.png | Bin 16836 -> 0 bytes + test/user-font-proxy.svg12.ref.png | Bin 17902 -> 0 bytes + test/user-font-proxy.svg12.rgb24.ref.png | Bin 16836 -> 0 bytes + test/user-font-proxy.test-fallback.argb32.ref.png | Bin 16835 -> 0 bytes + test/user-font-proxy.test-fallback.rgb24.ref.png | Bin 16835 -> 0 bytes + test/user-font-rescale.svg.ref.png | Bin 0 -> 14873 bytes + test/user-font-rescale.svg11.ref.png | Bin 15741 -> 0 bytes + test/user-font-rescale.svg12.ref.png | Bin 15741 -> 0 bytes + test/user-font.svg.ref.png | Bin 0 -> 6379 bytes + test/user-font.svg11.argb32.ref.png | Bin 6411 -> 0 bytes + test/user-font.svg11.ref.png | Bin 6134 -> 0 bytes + test/user-font.svg11.rgb24.ref.png | Bin 6411 -> 0 bytes + test/user-font.svg12.argb32.ref.png | Bin 6411 -> 0 bytes + test/user-font.svg12.ref.png | Bin 6134 -> 0 bytes + test/user-font.svg12.rgb24.ref.png | Bin 6411 -> 0 bytes + test/user-font.test-fallback.argb32.ref.png | Bin 5601 -> 0 bytes + test/user-font.test-fallback.rgb24.ref.png | Bin 5601 -> 0 bytes + 384 files changed, 438 insertions(+), 303 deletions(-) + +commit a81cf14bd6de545e9108f5c24c59e55026df86de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 13 10:58:44 2009 +0100 + + [test] Sanitise REFERENCE_IMAGES + + Add and delete files to satisfy 'make check-ref-missing'. + + test/Makefile.am | 6 ------ + test/fill-image.test-fallback.ref.png | Bin 1462 -> 0 bytes + test/fill-image.xlib.ref.png | Bin 1462 -> 0 bytes + test/group-unaligned.ref.png | Bin 0 -> 434 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4011 -> 0 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 3910 -> 0 bytes + test/operator-clear.test-fallback.ref.png | Bin 1071 -> 0 bytes + test/operator-clear.xlib.ref.png | Bin 1071 -> 0 bytes + 8 files changed, 0 insertions(+), 6 deletions(-) + +commit 7f3eda4e9f9e6cb6f3a33871ed42099c822d0ea2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jul 13 10:43:34 2009 +0100 + + [test] Update reference images for gs 8.64 + + test/Makefile.am | 7 +++++-- + test/README | 2 +- + test/close-path-current-point.ps.ref.png | Bin 0 -> 1490 bytes + test/extend-pad.ps.ref.png | Bin 0 -> 314 bytes + test/fill-image.ps.ref.png | Bin 0 -> 1799 bytes + test/test-fallback16-surface-source.ps.ref.png | Bin 0 -> 292 bytes + test/user-font-proxy.ps.ref.png | Bin 0 -> 7766 bytes + test/user-font-proxy.ps2.ref.png | Bin 8171 -> 0 bytes + test/user-font-proxy.ps3.ref.png | Bin 8171 -> 0 bytes + 9 files changed, 6 insertions(+), 3 deletions(-) + +commit 0d44416b9dd8149032039cf44ea14bf4867f3c54 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Jul 12 19:21:28 2009 +0930 + + PDF: Don't round pattern y location to an integer + + Using cairo_surface_get_extents() to get page height does not work + when the page height is not an integer. + + http://lists.cairographics.org/archives/cairo/2009-July/017570.html + + src/cairo-pdf-surface.c | 10 +--------- + 1 files changed, 1 insertions(+), 9 deletions(-) + +commit 9686331cb07a8f9018f28dc7d6d6e3726e289fda +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat May 2 18:05:20 2009 +0300 + + [spans] Round rasterization grid pixel areas instead of truncating. + + When converting a grid pixel area into the range [0,255] the + GRID_AREA_TO_ALPHA() macro would truncate extra bits off the result + rather than rounding. This could cause seams between abutting + collinear edges of separately rendered polygons even when the + coordinates of the abutting edges were the same. + + Reported by Soeren Sandmann on the cairo mailing list: + + http://lists.cairographics.org/archives/cairo/2009-May/017043.html + + src/cairo-tor-scan-converter.c | 4 ++-- + test/clip-operator.ref.png | Bin 8210 -> 8191 bytes + test/clip-operator.test-paginated.argb32.ref.png | Bin 8247 -> 8189 bytes + test/fill-degenerate-sort-order.ref.png | Bin 2406 -> 2399 bytes + test/fill-rule.ref.png | Bin 2061 -> 2065 bytes + test/finer-grained-fallbacks.ref.png | Bin 1069 -> 1070 bytes + test/linear-gradient.pdf.argb32.ref.png | Bin 1112 -> 0 bytes + test/linear-gradient.pdf.ref.png | Bin 935 -> 1125 bytes + test/linear-gradient.pdf.rgb24.ref.png | Bin 1112 -> 0 bytes + test/mask-alpha.ref.png | Bin 643 -> 632 bytes + test/mask.pdf.argb32.ref.png | Bin 9918 -> 9946 bytes + test/mask.ref.png | Bin 8581 -> 8603 bytes + test/operator-clear.ref.png | Bin 1084 -> 1070 bytes + test/operator-clear.test-fallback.ref.png | Bin 0 -> 1071 bytes + test/operator-clear.xlib.ref.png | Bin 0 -> 1071 bytes + test/operator-source.ref.png | Bin 4425 -> 4395 bytes + test/radial-gradient.pdf.argb32.ref.png | Bin 79601 -> 0 bytes + test/radial-gradient.pdf.ref.png | Bin 79490 -> 79612 bytes + test/radial-gradient.pdf.rgb24.ref.png | Bin 79601 -> 0 bytes + test/trap-clip.pdf.argb32.ref.png | Bin 6745 -> 6746 bytes + test/trap-clip.pdf.rgb24.ref.png | Bin 6621 -> 6616 bytes + test/trap-clip.ref.png | Bin 5829 -> 5820 bytes + test/trap-clip.test-paginated.argb32.ref.png | Bin 5865 -> 5898 bytes + 23 files changed, 2 insertions(+), 2 deletions(-) + +commit fbd88db938bf3bb03934795da9b3d184c4f43608 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 5 14:43:50 2009 +0100 + + [path] Don't include current-point in hash + + As we don't strictly use the current-point in comparing paths, exclude it + from the hash. Similarly use the path content flags as a cheap means to + differentiate contents. + + src/cairo-path-fixed.c | 17 +++++++++-------- + 1 files changed, 9 insertions(+), 8 deletions(-) + +commit 73f8019fd2afd0ad41c2515bef9877348355d246 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 5 14:37:02 2009 +0100 + + [path] Use cairo_list_t instead of open-coding its own + + Use the cairo_list_t and its style of iterators to improve the readability + of the cairo_path_buf_t management. Note the complications that arise from + the embedding of the initial buf -- however the macros do help make the + unusual manipulations more identifiable. + + src/cairo-path-fixed-private.h | 14 ++- + src/cairo-path-fixed.c | 226 +++++++++++++++++++--------------------- + src/cairo.c | 2 +- + 3 files changed, 114 insertions(+), 128 deletions(-) + +commit a04e3726648c62a1385b67cfc16a785a468e1d13 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 5 09:21:47 2009 +0100 + + [path] Add path watch debugging + + Simple debug macro to print the path to stderr during construction. + + src/cairo-path-fixed-private.h | 9 +++++++++ + src/cairo-path-fixed.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 35 insertions(+), 0 deletions(-) + +commit 1645352bfb69cc6d43fcbf3c77b4da5693af322a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 5 09:09:42 2009 +0100 + + [path] Evaluate is_box && is_region during construction + + Whilst constructing the path, if the operations continue to be + axis-aligned lines, allow the is_box and is_region flags to persist. These + are set to false as soon as a curve-to is added, a diagonal or in the case + of is_region a non-integer point. + + src/cairo-path-fixed-private.h | 8 + + src/cairo-path-fixed.c | 286 +++++++++++++++------------------------- + src/cairo.c | 2 + + src/cairoint.h | 3 - + 4 files changed, 115 insertions(+), 184 deletions(-) + +commit 4bb157672ef8cb7d486d6ccdaaa3890e3f45e17a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 23:44:09 2009 +0100 + + [test] Rename some structures within cairo-test-trace + + Simply rename a few structures so that their names are less confusing with + the mix of process and threads used to executes traces. + + test/cairo-test-trace.c | 224 +++++++++++++++++++++++----------------------- + 1 files changed, 112 insertions(+), 112 deletions(-) + +commit 53a54827f7d8ca8500f3f9674edbd7e768e8a50d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jul 5 09:22:05 2009 +0100 + + [boilerplate] Add missing header file. + + Deleted so many, and forgot to add just this little one. Sigh. + + boilerplate/cairo-boilerplate-private.h | 49 +++++++++++++++++++++++++++++++ + 1 files changed, 49 insertions(+), 0 deletions(-) + +commit ee8c50f2d6f1dba41f829c715b7bc59b5eeda50d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 22:00:09 2009 +0100 + + Remove the defunct test-meta surface + + Replace the internal test-meta surface will the freshly exported, + real meta-surface. + + boilerplate/cairo-boilerplate-test-surfaces.c | 38 --- + boilerplate/cairo-boilerplate.c | 35 +++ + src/Makefile.sources | 2 - + src/test-meta-surface.c | 358 ------------------------- + src/test-meta-surface.h | 50 ---- + util/cairo-trace/trace.c | 49 +++- + 6 files changed, 69 insertions(+), 463 deletions(-) + +commit 88cb69b10c66751f687c3745c8e9861b105de3a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 21:43:27 2009 +0100 + + [boilerpate] Move target definition to backends. + + By moving the backend target definition out of the massive amlagamated + block in cairo-boilerplate.c and into each of the + cairo-boilerplate-backend.c, we make it much easier to add new targets as + the information need only be entered in a single file and not scattered + across three. However, updating the target interface means trawling across + all the files -- except given that I found it difficult maintaining the + single massive array I do not see this as an increase in the maintenance + burden. + + boilerplate/.gitignore | 2 + + boilerplate/Makefile.am | 12 + + boilerplate/Makefile.sources | 27 +- + boilerplate/cairo-boilerplate-beos-private.h | 40 -- + boilerplate/cairo-boilerplate-beos.cpp | 48 ++- + boilerplate/cairo-boilerplate-directfb-private.h | 26 - + boilerplate/cairo-boilerplate-directfb.c | 29 +- + boilerplate/cairo-boilerplate-glitz-agl.c | 31 +- + boilerplate/cairo-boilerplate-glitz-glx.c | 31 +- + boilerplate/cairo-boilerplate-glitz-private.h | 88 --- + boilerplate/cairo-boilerplate-glitz-wgl.c | 32 +- + boilerplate/cairo-boilerplate-pdf-private.h | 60 -- + boilerplate/cairo-boilerplate-pdf.c | 48 +- + boilerplate/cairo-boilerplate-ps-private.h | 71 --- + boilerplate/cairo-boilerplate-ps.c | 73 ++- + boilerplate/cairo-boilerplate-qt-private.h | 60 -- + boilerplate/cairo-boilerplate-qt.cpp | 29 +- + boilerplate/cairo-boilerplate-quartz-private.h | 44 -- + boilerplate/cairo-boilerplate-quartz.c | 29 +- + boilerplate/cairo-boilerplate-script-private.h | 57 -- + boilerplate/cairo-boilerplate-script.c | 28 +- + boilerplate/cairo-boilerplate-svg-private.h | 72 --- + boilerplate/cairo-boilerplate-svg.c | 70 ++- + .../cairo-boilerplate-test-surfaces-private.h | 99 --- + boilerplate/cairo-boilerplate-test-surfaces.c | 117 ++++- + boilerplate/cairo-boilerplate-win32-printing.c | 43 +- + boilerplate/cairo-boilerplate-win32-private.h | 65 -- + boilerplate/cairo-boilerplate-win32.c | 28 +- + boilerplate/cairo-boilerplate-xcb-private.h | 47 -- + boilerplate/cairo-boilerplate-xcb.c | 28 +- + boilerplate/cairo-boilerplate-xlib-private.h | 71 --- + boilerplate/cairo-boilerplate-xlib.c | 207 ++++--- + boilerplate/cairo-boilerplate.c | 639 +++----------------- + boilerplate/cairo-boilerplate.h | 3 +- + boilerplate/make-cairo-boilerplate-constructors.c | 156 +++++ + test/make-cairo-test-constructors.c | 28 +- + 36 files changed, 946 insertions(+), 1592 deletions(-) + +commit 8a10ab1c04298d6c22ae8aabec5d762141a8e98f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 18:46:21 2009 +0100 + + [script] Tidy dict construction for glyphs + + Replace dict with '<< ... >>' similar to surface definitions as it is + easier to read in scripts. + + src/cairo-script-surface.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit fef3649953a3dcc3a17d9d5858f56690a8782501 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 18:32:57 2009 +0100 + + [script] Fix the trivial errors running the test suite + + A few typos crept in breaking the script output and various refreshes of + the expected results. + + src/cairo-script-surface.c | 33 ++++++++++++++++++++--------- + test/mime-data.script.ref.png | Bin 1982 -> 2041 bytes + test/scale-offset-image.c | 2 +- + test/scale-offset-similar.c | 2 +- + util/cairo-script/cairo-script-scanner.c | 6 +++- + 5 files changed, 29 insertions(+), 14 deletions(-) + +commit 2395bba1e66a2623cb288e13effc206f86e5e62e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 18:31:49 2009 +0100 + + [any2ppm] Choose a more appropriate format for the replay content + + Actually select a format that matches the request content when replaying + the script to an image. + + test/any2ppm.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit 9942a89870f7754e28ff334010c4432553cf7d91 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 18:30:24 2009 +0100 + + [boilerplate] Read whole RGB lines at a time + + Rather than read+unpack each pixel, read in a whole RGB packed line and + unpack the whole line in a single pass. + + boilerplate/cairo-boilerplate.c | 13 +++++++------ + 1 files changed, 7 insertions(+), 6 deletions(-) + +commit 23648e2fdfefba4df08bc854d725758209998e1f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 00:40:32 2009 +0100 + + [script] Prototypical binary translator + + Hook into the scanner to write out binary version of the tokenized + objects -- note we bind executable names (i.e. check to see if is an + operator and substitute the name with an operator -- this breaks + overloading of operators by scripts). + + By converting scripts to a binary form, they are more compact and + execute faster: + + firefox-world-map.trace 526850146 bytes + bound.trace 275187755 bytes + + [ # ] backend test min(s) median(s) stddev. count + [ 0] null bound 34.481 34.741 0.68% 3/3 + [ 1] null firefox-world-map 89.635 89.716 0.19% 3/3 + [ 0] drm bound 79.304 79.350 0.61% 3/3 + [ 1] drm firefox-world-map 135.380 135.475 0.58% 3/3 + [ 0] image bound 95.819 96.258 2.85% 3/3 + [ 1] image firefox-world-map 156.889 156.935 1.36% 3/3 + [ 0] xlib bound 539.130 550.220 1.40% 3/3 + [ 1] xlib firefox-world-map 596.244 613.487 1.74% 3/3 + + This trace has a lot of complex paths and the use of binary floating point + reduces the file size by about 50%, with a commensurate reduction in scan + time and significant reduction in operator lookup overhead. Note that this + test is still IO/CPU bound on my i915 with its pitifully slow flash... + + util/cairo-script/Makefile.am | 5 +- + util/cairo-script/cairo-script-file.c | 44 +- + util/cairo-script/cairo-script-interpreter.c | 85 ++- + util/cairo-script/cairo-script-interpreter.h | 9 +- + util/cairo-script/cairo-script-objects.c | 8 +- + util/cairo-script/cairo-script-operators.c | 2 +- + util/cairo-script/cairo-script-private.h | 27 +- + util/cairo-script/cairo-script-scanner.c | 1059 ++++++++++++++++++-------- + 8 files changed, 906 insertions(+), 333 deletions(-) + +commit 07c0c8c5c0820e93403623eb5c1fa2df8ca89c60 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 14:07:16 2009 +0100 + + [surface] Refactor meta-surface clone + + Whilst still obnoxious, at least moving it to a separate function is more + readable. + + src/cairo-surface.c | 140 +++++++++++++++++++++++++++++---------------------- + 1 files changed, 79 insertions(+), 61 deletions(-) + +commit 7903c80ee81777bab6eec408c10b2b59330b10f7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 13:50:15 2009 +0100 + + [meta] Cache replays when used as a pattern source + + Use the cow-snapshotting mechanism to store the meta surface replay (either + to an image inside acquire_source_image() or to a similar surface during + clone_similar()). + + Fixes Bug 17971 -- Extreme slowdown for manual convolutions in most + vector backends. + https://bugs.freedesktop.org/show_bug.cgi?id=17971 + + src/cairo-meta-surface.c | 18 ++++++++- + src/cairo-surface.c | 92 +++++++++++++++++++++++++++++++++++----------- + src/cairoint.h | 3 +- + 3 files changed, 88 insertions(+), 25 deletions(-) + +commit f353ba46a3b8c260f96588fd6bb8d07c2a09d01a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 13:49:35 2009 +0100 + + [meta] Copy extents on snapshotting. + + Need to copy across the extents as well when snapshotting. + + src/cairo-meta-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit f4019be7bdff5c67d679f4de1070c25aa99a993d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 13:16:42 2009 +0100 + + [trace] Remove a few transient pattern def/undef + + It is easier on the eye to use + '1 index set-source exch pop' + rather than + 'dup /p0 exch def p0 set-source /p0 undef' + (as patterns are expected to be temporary so we strive to avoid naming + them). + + util/cairo-trace/trace.c | 42 +++++++++++++++++++++++++++++++----------- + 1 files changed, 31 insertions(+), 11 deletions(-) + +commit dcb7f1d034438c5c890490df93a86b40fea3036c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jul 4 08:08:25 2009 +0100 + + [script] Add missing include <string.h> + + As reported by Magnus Boman <captain.magnus@gmail.com>. + + Fixes Bug 22610 -- Patch to add missing include in util/cairo-script/csi-replay.c + http://bugs.freedesktop.org/show_bug.cgi?id=22610 + + util/cairo-script/csi-replay.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 97bd2228a6635bbb0eac4ce95801754957dbb7ba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 19:41:51 2009 +0100 + + [script] Insert spaces around '<<' and '>>' + + The dictionary constructors are just ordinary tokens so need space for + delimiters. + + src/cairo-script-surface.c | 62 +++++++++++++++----------------------------- + 1 files changed, 21 insertions(+), 41 deletions(-) + +commit 6003ab77e1ebefadb97338de0e7da4a76d973b1a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 18:26:50 2009 +0100 + + Export meta-surface + + The meta-surface is a vital tool to record a trace of drawing commands + in-memory. As such it is used throughout cairo. + + The value of such a surface is immediately obvious and should be + applicable for many applications. The first such case is by + cairo-test-trace which wants to record the entire graph of drawing commands + that affect a surface in the event of a failure. + + NEWS | 27 +++++ + boilerplate/Makefile.win32.features | 8 ++ + boilerplate/cairo-boilerplate.c | 12 +- + build/Makefile.win32.features-h | 1 + + build/configure.ac.features | 1 + + configure.ac | 4 + + perf/cairo-perf.c | 6 +- + src/Makefile.win32.features | 8 ++ + src/cairo-meta-surface-private.h | 14 +-- + src/cairo-meta-surface.c | 202 +++++++++++++++++++++++++++-------- + src/cairo-paginated-surface.c | 16 ++-- + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-script-surface.c | 10 +- + src/cairo-surface.c | 2 +- + src/cairo-svg-surface.c | 8 +- + src/cairo-type3-glyph-surface.c | 8 +- + src/cairo-types-private.h | 3 +- + src/cairo-user-font.c | 7 +- + src/cairo-win32-printing-surface.c | 2 +- + src/cairo.h | 22 ++++- + src/test-meta-surface.c | 16 +--- + src/test-meta-surface.h | 8 +- + test/cairo-test-trace.c | 58 ++++------- + test/get-clip.c | 5 + + 25 files changed, 296 insertions(+), 156 deletions(-) + +commit 2a9903dbbfeb3fe843f0d618d15674b37a29f3a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 12:48:40 2009 +0100 + + [script] Trim some excess verbage + + Remove some redundant defining of surfaces and contexts and of setting + defaults. In order to reduce the number of defines, we need to operate on + the operand stack more frequently - though in practice those operations + are quite rare. + + src/Makefile.sources | 1 + + src/cairo-list-private.h | 189 +++++++++++++++ + src/cairo-script-surface.c | 561 ++++++++++++++++++++++++++++++-------------- + 3 files changed, 572 insertions(+), 179 deletions(-) + +commit 28773fe79f883c32ee4e55e49f5dc3fced00c4f6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 13:17:47 2009 +0100 + + [test-meta] Initialize image + + Oops, stupid mistake - missed off the initialization of the image to NULL + from the last commit. + + src/test-meta-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit ac6c3dbbaed377273b73da6e9e03bb8380a78ec4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 12:56:20 2009 +0100 + + [test-meta] Lazily allocate image + + Only allocate the image on first use, as we may never actually need to + construct the image output. + + src/test-meta-surface.c | 42 ++++++++++++++++++++++++------------------ + 1 files changed, 24 insertions(+), 18 deletions(-) + +commit fe73a9dd1413a851beeca7a0fc4ab7cb351ea9ea +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jul 3 11:24:42 2009 +0100 + + [test] Record trace to an in-memory meta-surface + + Requires hooking into test-meta-surface currently. Export meta-surface! + + The idea is that on detection of an error, we can reconstruct a minimal + trace from the meta-surface. The first step is to simply dump the trace + for the failing meta-surface. Later, we should automatically minimise + this further. + + src/test-meta-surface.c | 101 ++++++++----- + src/test-meta-surface.h | 4 + + test/Makefile.am | 3 + + test/cairo-test-trace.c | 371 +++++++++++++++++++++++++++++++++++++++++------ + 4 files changed, 397 insertions(+), 82 deletions(-) + +commit 633efe81873168506ec3594eae1f6ac38d71026c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jul 2 09:17:43 2009 +0100 + + [surface] Allocate temporary region on stack + + Avoid a very short-lived temporary heap allocation of a region. + + src/cairo-surface.c | 13 +++++-------- + 1 files changed, 5 insertions(+), 8 deletions(-) + +commit b2e2a2f31af33ff01d78c6c8786249a623017ffa +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 15:47:51 2009 +0200 + + [test] Update argb32 pdf reference image for trap-clip + + test/trap-clip.pdf.argb32.ref.png | Bin 6720 -> 6745 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 910afc7a8e5c40f4fe682ec0b0f3836a07ea721d +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 15:40:24 2009 +0200 + + [test] Mark all smask tests as XFAIL for pdf + + Those tests use linear gradients which are not correctly handled by + poppler yet. See https://bugs.freedesktop.org/show_bug.cgi?id=10942 + + test/README | 11 +++++++++++ + test/smask-fill.c | 2 +- + test/smask-image-mask.c | 2 +- + test/smask-mask.c | 2 +- + test/smask-paint.c | 2 +- + test/smask-stroke.c | 2 +- + test/smask-text.c | 2 +- + test/smask.c | 2 +- + 8 files changed, 18 insertions(+), 7 deletions(-) + +commit 5becfc2bd59956090daa8afd68db2f139dcb8392 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 14:58:40 2009 +0200 + + [test] Add pdf reference image for rotate-image-surface-paint + + Remove also argb32 and rgb24 pdf reference images. + + test/Makefile.am | 3 +-- + test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 215 -> 0 bytes + test/rotate-image-surface-paint.pdf.ref.png | Bin 0 -> 196 bytes + test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 215 -> 0 bytes + 4 files changed, 1 insertions(+), 2 deletions(-) + +commit f81203cde864af1a1fea81a438e4f4effe928808 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 14:44:19 2009 +0200 + + [test] Add pdf reference image for mask-transformed-image + + test/Makefile.am | 1 + + test/mask-transformed-image.pdf.ref.png | Bin 0 -> 3528 bytes + 2 files changed, 1 insertions(+), 0 deletions(-) + +commit 9d538ef337e9ca1600f842cd2164ff5e6629090a +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 14:42:32 2009 +0200 + + [test] Update argb32 and rgb24 pdf reference image for mask + + test/mask.pdf.argb32.ref.png | Bin 9903 -> 9918 bytes + test/mask.pdf.rgb24.ref.png | Bin 8735 -> 8745 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 97def877bb1c290735875061118bd795b9b83215 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 14:18:30 2009 +0200 + + [test] Update pdf reference image for surface-pattern + + Remove also argb32 and rgb24 pdf reference images. + + test/Makefile.am | 2 -- + test/surface-pattern.pdf.argb32.ref.png | Bin 14808 -> 0 bytes + test/surface-pattern.pdf.ref.png | Bin 14791 -> 14800 bytes + test/surface-pattern.pdf.rgb24.ref.png | Bin 14808 -> 0 bytes + 4 files changed, 0 insertions(+), 2 deletions(-) + +commit 8a6bdc63c1491dc77e8d9e192b9e44d9ff2e3c9b +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 13:33:07 2009 +0200 + + [test] Update argb32 and rgb24 pdf reference image for text-pattern + + test/text-pattern.pdf.argb32.ref.png | Bin 2151 -> 2334 bytes + test/text-pattern.pdf.rgb24.ref.png | Bin 508 -> 1915 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit b46ba7aa33ba604628f1c94449019895b1d7ef82 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 13:25:39 2009 +0200 + + [test] Update pdf reference image for text-transform + + test/text-transform.pdf.ref.png | Bin 3796 -> 5586 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 9bc7ab980d6e834dacaf4f48f199e8c95cfba94e +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 12:09:50 2009 +0200 + + [test] Update pdf reference image for filter-nearest-transformed + + Remove also argb32 and rgb24 pdf reference images. + + test/Makefile.am | 2 -- + test/filter-nearest-transformed.pdf.argb32.ref.png | Bin 488 -> 0 bytes + test/filter-nearest-transformed.pdf.ref.png | Bin 548 -> 552 bytes + test/filter-nearest-transformed.pdf.rgb24.ref.png | Bin 488 -> 0 bytes + 4 files changed, 0 insertions(+), 2 deletions(-) + +commit 27938f7e3ff357e5fe8a05e547cf83dbad7551ef +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 12:04:06 2009 +0200 + + [test] Update pdf reference image for filter-nearest-offset + + Remove also argb32 and rgb24 pdf reference images. + + test/Makefile.am | 2 -- + test/filter-nearest-offset.pdf.argb32.ref.png | Bin 4295 -> 0 bytes + test/filter-nearest-offset.pdf.ref.png | Bin 4537 -> 997 bytes + test/filter-nearest-offset.pdf.rgb24.ref.png | Bin 4295 -> 0 bytes + 4 files changed, 0 insertions(+), 2 deletions(-) + +commit e6576e8912196607fdd3613c6924e26c2ce7a951 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 11:56:18 2009 +0200 + + [test] Update argb32 pdf reference image for clip-operator + + test/clip-operator.pdf.argb32.ref.png | Bin 11604 -> 11603 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 13d9374ec13c62233312beb0feb9a47531aec2e3 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Mon Jun 29 17:36:47 2009 +0200 + + [test] Remove PDF reference images for scale-source-surface-paint + + It works with current poppler now + + test/Makefile.am | 2 -- + test/scale-source-surface-paint.pdf.argb32.ref.png | Bin 182 -> 0 bytes + test/scale-source-surface-paint.pdf.rgb24.ref.png | Bin 198 -> 0 bytes + 3 files changed, 0 insertions(+), 2 deletions(-) + +commit 3710c4184c2e87368dde5ccb25f3648b861b6059 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Mon Jun 29 17:32:54 2009 +0200 + + [test] Remove PDF reference images for paint-with-alpha + + It works with current poppler now + + test/Makefile.am | 1 - + test/paint-with-alpha.pdf.ref.png | Bin 466 -> 0 bytes + 2 files changed, 0 insertions(+), 1 deletions(-) + +commit 8162acd81a898247f19054a136af95062e3b0e91 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Mon Jun 29 12:42:52 2009 +0200 + + [test] Remove PDF reference images for paint-source-alpha + + It works with current poppler now + + test/Makefile.am | 2 -- + test/paint-source-alpha.pdf.argb32.ref.png | Bin 471 -> 0 bytes + test/paint-source-alpha.pdf.ref.png | Bin 473 -> 0 bytes + 3 files changed, 0 insertions(+), 2 deletions(-) + +commit 1e1f4fd0920cb2b0882137b4cc500dcbae42d2dc +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Tue Jun 30 11:05:50 2009 +0200 + + [test] Use poppler_page_render with a transparent surface + + Instead of using an opaque surface filled in white, use a transparent + surface and fill it in white by using CAIRO_OPERATOR_DEST_OVER after + rendering. + + test/any2ppm.c | 9 +++++---- + test/pdf2png.c | 9 +++++---- + 2 files changed, 10 insertions(+), 8 deletions(-) + +commit 700a555d194a20c00df69b963cdc5b6153e162a4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 1 19:41:42 2009 +0100 + + [surface] Expose a SURFACE_TYPE_MISMATCH nil object + + Gah, yet more error object bloat. Must finish cairo-object. + + src/cairo-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 8f4611a94bda407b5944520b95599441a4ff5327 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 1 19:39:57 2009 +0100 + + [perf] Fix use-after-free when retrieving error line number + + We find out the status on destroying the script and then attempt to query + the defunct script for more info about the error. Wrong. + + perf/cairo-perf-trace.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 7c160dea5456b783d9b04b5c11bbacb9a89fa031 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 1 10:12:50 2009 +0100 + + [perf] Unbreak cairo-perf-diff builder + + perf/cairo-perf-diff | 19 ++++++++++--------- + 1 files changed, 10 insertions(+), 9 deletions(-) + +commit 3d88f99668308315db759af3dac789973caa8eae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jul 1 09:57:56 2009 +0100 + + [perf] Enable cairo-perf-trace in cairo-perf-diff + + Only as a --trace option for now. + + perf/cairo-perf-diff | 51 +++++++++++++++++++++++++++++++++++-------------- + 1 files changed, 36 insertions(+), 15 deletions(-) + +commit 1564d67d63618e12c58dc1d65c7e68505950e4d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 30 22:22:39 2009 +0100 + + [perf] Exclude the xlib-reference target from cairo-perf + + perf/cairo-perf-trace.c | 3 ++- + perf/cairo-perf.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit e5b4f78bff20903fef5f55a0fcd026590ea444a4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 30 22:12:50 2009 +0100 + + [boilerplate] Only include null-test-surface >= cairo-1.9.3 + + boilerplate/cairo-boilerplate-test-surfaces.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit e0bdbb437ee699d6f75df34494a6e290dc55aa39 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 30 22:04:01 2009 +0100 + + [xlib] Remove redundant checks for src_picture==None + + Before attempting to even set the attributes on the source Picture, we + ensure that it exists. So remove the redundant safe-guards to do nothing + if it doesn't exist. + + src/cairo-xlib-surface.c | 12 +----------- + 1 files changed, 1 insertions(+), 11 deletions(-) + +commit b7f68d3518e25fb02c9d36d14de9dc0c905ffe8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 30 20:46:12 2009 +0100 + + [perf] Enable trace directory recursion. + + I have an idea to categorise traces within their own subdirectories and so + for convenience added path walking to cairo-perf-trace. Principally this + should allow for forests of symlinks of all types. + + perf/cairo-perf-trace.c | 104 ++++++++++++++++++++++++++++++----------------- + perf/cairo-perf.h | 1 + + 2 files changed, 68 insertions(+), 37 deletions(-) + +commit 6102dd0c1c26e289ad08d1cf0cc366e6298f5711 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 29 10:50:44 2009 +0100 + + [ft] Correct reference counting for implementation font face + + We are expected to return a new reference from get_implementation(), and + failing to do so was causing use-after-frees (detected by the reference + counting checks). + + src/cairo-ft-font.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit 4f745fbe3329a4fd5164c7bd7fe61c0395e8d1ee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 29 10:49:51 2009 +0100 + + [test] Only run fallback-resolution for enabled targets + + A secondary check that both activates CAIRO_TEST_TARGET and prevents a + NULL-deref with the null test surface. + + test/fallback-resolution.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit d80f5580ef371a1d4b1746b4ad54d97274d2d6cd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 21:11:41 2009 +0100 + + [pattern] Mark _cairo_pattern_nil as static + + Fixes check-def.sh failure. + + src/cairo-pattern.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 758a18b354cefca841536c7d91f8f5758456f72f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 20:56:33 2009 +0100 + + [test] Timeout support for tests + + Enforce that each test must render within 60 seconds or be considered to + have hit an infinite loop and be reported as a CRASH. The timeout value is + adjustable via CAIRO_TEST_TIMEOUT -- a value of 0 will disable. + + build/configure.ac.system | 3 +++ + test/cairo-test.c | 18 ++++++++++++++++++ + test/cairo-test.h | 2 ++ + 3 files changed, 23 insertions(+), 0 deletions(-) + +commit f7021d8f3e59d1f7fa77135366bbbd6845dff684 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 20:41:04 2009 +0100 + + [script] Enable error handling for recursive scanners + + It's conceivable that a script could execute another file and so we should + only setjmp on the first invocation. + + util/cairo-script/cairo-script-private.h | 1 + + util/cairo-script/cairo-script-scanner.c | 15 ++++++++++++--- + 2 files changed, 13 insertions(+), 3 deletions(-) + +commit 963664727b4754f92a876c36557922821706f591 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 10:49:37 2009 +0100 + + [trace] Compile fix for --enable-script + + Silly typo as pointed out by Hans Breuer <hans@breuer.org>. + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2ecafb025c8b15a86372b655e763d742a0f6ef85 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 10:09:01 2009 +0100 + + [script] Reuse glyph advance cache over multiple invocations + + Store the metric cache as user-data on the scaled-font so that we can + retrieve it on future calls to show-glyphs and friends. + + util/cairo-script/cairo-script-operators.c | 413 +++++++++------------------- + 1 files changed, 131 insertions(+), 282 deletions(-) + +commit 663da31bbe7cf6021c8d59a4d4ddd2702cfe860f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 01:17:13 2009 +0100 + + [boilerplate] Propagate original error from create_from_png() + + During cairo_boilerplate_get_image_surface_from_png() the original status + returned by cairo_image_surface_create_from_png() could have been masked + by inappropriate context construction when flattening or extracting. + Simply check after creating the surface from the png file, and return + immediately if in error. + + boilerplate/cairo-boilerplate.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 2bbb69420289aa372512602db312611369e70f54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 00:57:10 2009 +0100 + + [test] Disable fallback16 testing + + Only use the RGB16_565 surface as a source during testing. We presume that + pixman is itself rigorously tested and the output is equivalent to the + image surface. Enabling this test surface would require too large of a + burden to maintain the reference images for the 16-bit backend. + + boilerplate/cairo-boilerplate.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 34ac8673b2d51edeb0b29a4949d7d16c3d07a790 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 28 00:48:05 2009 +0100 + + [script] Use setjmp exception handling during scanning + + Save ~5% of overhead by using longjmp on error to terminate scanning + instead of propagating the error, incurring lots of redundant error + checks. + + util/cairo-script/cairo-script-interpreter.c | 14 +- + util/cairo-script/cairo-script-objects.c | 46 +--- + util/cairo-script/cairo-script-private.h | 53 +++-- + util/cairo-script/cairo-script-scanner.c | 390 ++++++++++++-------------- + 4 files changed, 222 insertions(+), 281 deletions(-) + +commit 2b1ec7a4d87399824dacb9803627c9322b12d894 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 22:48:19 2009 +0100 + + [cairo] Report true error via pattern from cairo_pop_group() + + Report the correct error via the returned pattern->status rather than + simply returning the NO_MEMORY nil object. + + src/cairo-pattern.c | 4 ++-- + src/cairo.c | 18 +++++++++++------- + src/cairoint.h | 4 +++- + 3 files changed, 16 insertions(+), 10 deletions(-) + +commit 5c3be3ece27b7cf6e4b1262ea18ac51b45c62389 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 22:40:15 2009 +0100 + + [cairo] Mark cr->status guard as unlikely + + For correct operation, the context should never be in error, so mark the + error context as being unlikely to optimize the common path. + + src/cairo.c | 199 +++++++++++++++++++++++++++++------------------------------ + 1 files changed, 97 insertions(+), 102 deletions(-) + +commit f3880283331f3bda374e24fd0e1de677d8d368a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 20:18:18 2009 +0100 + + [gstate] Avoid temporary allocation for transformed patterns + + Observe that patterns are not altered during an operation and so we are + safe to use the data from the original pattern without copying. (This is + enforced through the declaration that the backends operate on constant + patterns which are not allowed to be referenced or destroyed.) + + src/cairo-gstate.c | 184 ++++++++++++++++----------------------------------- + src/cairo-pattern.c | 31 +++++++++ + src/cairoint.h | 4 + + 3 files changed, 92 insertions(+), 127 deletions(-) + +commit 3759c7b34b662ccdc0486c68798aca0a6438ab7e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 19:38:30 2009 +0100 + + [perf] Enable the null-backend for trace replays. + + perf/cairo-perf-trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8d4c704129132effa10fb9242239952c2f4b7721 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 19:34:20 2009 +0100 + + [ft] Cache the resolved font face + + Keep the resolved font face alive whilst the default FcConfig remains + identical i.e. resolve the pattern again if the system configuration + changes (e.g. a new font is added or the rules are updated). This should + retain the benefits of lazily resolving font patterns whilst improving + performance by reducing the number of calls to FcFontMatch(). + + src/cairo-ft-font.c | 39 ++++++++++++++++++++++++++++++++++----- + 1 files changed, 34 insertions(+), 5 deletions(-) + +commit ddadd41a6c3d6a7cdaa07373b24325f59d3436e3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 18:07:36 2009 +0100 + + [test] Remove broken PDF reference images for push-group + + More XFAIL reference images that are now invalidated by changes in + poppler. + + test/Makefile.am | 3 --- + test/push-group.pdf.argb32.ref.png | Bin 2722 -> 0 bytes + test/push-group.pdf.ref.png | Bin 2807 -> 0 bytes + test/push-group.pdf.rgb24.ref.png | Bin 2740 -> 0 bytes + 4 files changed, 0 insertions(+), 3 deletions(-) + +commit 4d233fa4a6a16d400ba959f4c1c5d84fdd26d8fc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 18:04:37 2009 +0100 + + [test] Remove invalid smask PDF reference images + + These need to be recorded using an XFAIL reference. In the meantime, as + the poppler output has changed, just remove all the invalid PDF reference + images. + + test/Makefile.am | 19 ------------------- + test/smask-fill.pdf.argb32.ref.png | Bin 1909 -> 0 bytes + test/smask-fill.pdf.ref.png | Bin 1075 -> 0 bytes + test/smask-fill.pdf.rgb24.ref.png | Bin 1909 -> 0 bytes + test/smask-image-mask.pdf.argb32.ref.png | Bin 1651 -> 0 bytes + test/smask-image-mask.pdf.ref.png | Bin 421 -> 0 bytes + test/smask-image-mask.pdf.rgb24.ref.png | Bin 1651 -> 0 bytes + test/smask-mask.pdf.argb32.ref.png | Bin 4398 -> 0 bytes + test/smask-mask.pdf.ref.png | Bin 3731 -> 0 bytes + test/smask-mask.pdf.rgb24.ref.png | Bin 4398 -> 0 bytes + test/smask-paint.pdf.argb32.ref.png | Bin 4496 -> 0 bytes + test/smask-paint.pdf.ref.png | Bin 3800 -> 0 bytes + test/smask-paint.pdf.rgb24.ref.png | Bin 4496 -> 0 bytes + test/smask-stroke.pdf.argb32.ref.png | Bin 1417 -> 0 bytes + test/smask-stroke.pdf.ref.png | Bin 449 -> 0 bytes + test/smask-stroke.pdf.rgb24.ref.png | Bin 1417 -> 0 bytes + test/smask-text.pdf.ref.png | Bin 1806 -> 0 bytes + test/smask.pdf.argb32.ref.png | Bin 4496 -> 0 bytes + test/smask.pdf.ref.png | Bin 3800 -> 0 bytes + test/smask.pdf.rgb24.ref.png | Bin 4496 -> 0 bytes + 20 files changed, 0 insertions(+), 19 deletions(-) + +commit 86624627e4b196a78cfd9bd642299441e838e0f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 17:53:18 2009 +0100 + + [test] Add group-unaligned + + Test case for: + Bug 22441 -- Unexpected shift with push_group and pop_group + https://bugs.freedesktop.org/show_bug.cgi?id=22441 + + This is a test that demonstrates the error in the pdf backend when using + groups on surfaces with non-integer sizes. In order to create such a + surface, we need to update the boilerplate to use doubles instead of + integers when specifying the surface size. + + boilerplate/cairo-boilerplate-beos-private.h | 16 +++--- + boilerplate/cairo-boilerplate-beos.cpp | 8 +- + boilerplate/cairo-boilerplate-directfb-private.h | 8 +- + boilerplate/cairo-boilerplate-directfb.c | 8 +- + boilerplate/cairo-boilerplate-glitz-agl.c | 8 +- + boilerplate/cairo-boilerplate-glitz-glx.c | 10 ++-- + boilerplate/cairo-boilerplate-glitz-private.h | 24 ++++---- + boilerplate/cairo-boilerplate-glitz-wgl.c | 8 +- + boilerplate/cairo-boilerplate-pdf-private.h | 8 +- + boilerplate/cairo-boilerplate-pdf.c | 14 ++-- + boilerplate/cairo-boilerplate-ps-private.h | 16 +++--- + boilerplate/cairo-boilerplate-ps.c | 30 +++++----- + boilerplate/cairo-boilerplate-qt-private.h | 10 ++-- + boilerplate/cairo-boilerplate-qt.cpp | 8 +- + boilerplate/cairo-boilerplate-quartz-private.h | 8 +- + boilerplate/cairo-boilerplate-quartz.c | 8 +- + boilerplate/cairo-boilerplate-script-private.h | 8 +- + boilerplate/cairo-boilerplate-script.c | 12 ++-- + boilerplate/cairo-boilerplate-svg-private.h | 16 +++--- + boilerplate/cairo-boilerplate-svg.c | 30 +++++----- + .../cairo-boilerplate-test-surfaces-private.h | 40 +++++++------- + boilerplate/cairo-boilerplate-test-surfaces.c | 40 +++++++------- + boilerplate/cairo-boilerplate-win32-printing.c | 8 +- + boilerplate/cairo-boilerplate-win32-private.h | 16 +++--- + boilerplate/cairo-boilerplate-win32.c | 8 +- + boilerplate/cairo-boilerplate-xcb-private.h | 8 +- + boilerplate/cairo-boilerplate-xcb.c | 8 +- + boilerplate/cairo-boilerplate-xlib-private.h | 24 ++++---- + boilerplate/cairo-boilerplate-xlib.c | 45 +++++++++------ + boilerplate/cairo-boilerplate.c | 10 ++-- + boilerplate/cairo-boilerplate.h | 8 +- + test/Makefile.am | 7 ++ + test/Makefile.sources | 1 + + test/cairo-test.c | 2 +- + test/cairo-test.h | 4 +- + test/group-unaligned.c | 60 ++++++++++++++++++++ + test/group-unaligned.pdf.ref.png | Bin 0 -> 414 bytes + test/group-unaligned.ps.ref.png | Bin 0 -> 332 bytes + test/group-unaligned.svg.argb32.ref.png | Bin 0 -> 524 bytes + test/group-unaligned.svg.rgb24.ref.png | Bin 0 -> 434 bytes + test/group-unaligned.xlib-fallback.ref.png | Bin 0 -> 496 bytes + test/group-unaligned.xlib.ref.png | Bin 0 -> 466 bytes + 42 files changed, 312 insertions(+), 235 deletions(-) + +commit c506ddb58612c69b80b08be3a6d14c5bcc1ac21f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 27 16:54:37 2009 +0100 + + [pdf] Restore original surface size after emitting group mask + + A trivial fix to reset the original surface size after emitting the group. + The annoying aspect is that this should have been caught by the test suite. + Alas, no. A gentle reminder that simple line coverage is insufficient. :( + + src/cairo-pdf-surface.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit f8a2665840f12ae48798b0ffca49681e276823ba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 26 07:22:49 2009 +0100 + + [cairo] Trivial code tidy + + src/cairo.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c7cf5317f58b382c47ad2d1b4d8db3133b0c4d4b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Jun 24 23:33:44 2009 +0100 + + [test] Fix Makefile.am for Solaris make. + + Sun's make doesn't like conditional assignments to variables + in dependencies in the form of "target: VAR+=VAL". This + construct was used to force the test suite run in the foreground + in the check-valgrind target. It is replaced by a more + explicit set of the CAIRO_TEST_MODE environment variable. + + test/Makefile.am | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit b82e7740c102afa7b9184b2556b887cf7a0211b0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 21 22:25:08 2009 +0100 + + [atomic] Silence compiler warnings by defining an intptr_t + + Evaulate the integer sizes during configure to find one of the exact same + size as a void* to use in the conversion of the atomic ptr cmpxchg to an + atomic int cmpxchg. + + build/configure.ac.system | 3 +++ + src/cairo-atomic-private.h | 19 ++++++++++++------- + 2 files changed, 15 insertions(+), 7 deletions(-) + +commit a2d4fb50092c0cbb31a5df1bca9111957238139b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jun 21 14:09:10 2009 +0100 + + [test] Fix a typo in the _POSIX_SOURCE version number. + + I hope POSIX isn't around in 20000 AD! + + test/cairo-test.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 80990c7f729a666fc646182a36ffd311d7396a1a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jun 21 14:02:46 2009 +0100 + + [atomic] Use an integer __sync_val_compare_and_swap() for pointer CAS. + + Fix an implicit pointer/integer cast in _cairo_atomic_ptr_cmpxchg() + when building with LLVM/clang. + + The Intel synchronization primitives __sync_val_compare_and_swap() + are only defined by Intel for types int, long, long long and their + unsigned variants. This patch uses one of those for + _cairo_atomic_ptr_cmpxchg() instead of relying on a gcc extension of + __sync_val_compare_and_swap() to pointer types. + + src/cairo-atomic-private.h | 9 ++++++++- + src/cairo-atomic.c | 6 +++++- + 2 files changed, 13 insertions(+), 2 deletions(-) + +commit d0c1c9282164bffb76f7419873e93608dc6d9876 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 21 10:08:21 2009 +0100 + + [boilerplate] Implement a reference xlib surface + + Create an xlib target that uses a separate display, specified by + CAIRO_REFERENCE_DISPLAY, that can be used as a reference implementation + for the normal display. So this can be used by cairo-trace-test to create + a reference surface that mimics exactly the true surface, but if it + targets an Xvfb display will be entirely rendered in software. If + CAIRO_REFERENCE_DISPLAY is not set, the reference surface degrades into an + xlib-fallback surface which is a close approximation (but still has + behavioural differences). + + boilerplate/cairo-boilerplate-xlib-private.h | 11 ++++++ + boilerplate/cairo-boilerplate-xlib.c | 51 ++++++++++++++++++++++++++ + boilerplate/cairo-boilerplate.c | 14 ++++++- + 3 files changed, 74 insertions(+), 2 deletions(-) + +commit d2244053dcca687a878b1008e3a8219f11d7bd0d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 21 08:58:08 2009 +0100 + + [perf] Force rebuild if make fails + + The build system has a singular failure whereby if a backend disappears + between on compile and the next, automake will fail to reconstruct the + Makefiles - resulting in a broken build. Attempt to fix this by removing + the build dir and recloning, which should work for any corrupt caches but + obviously will fail again at a true build failure. + + perf/cairo-perf-diff | 63 +++++++++++++++++++++++++++++-------------------- + 1 files changed, 37 insertions(+), 26 deletions(-) + +commit ef0d307d549b9cc7a98cdce2ee4bae40d0fd0bd1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 21 08:43:55 2009 +0100 + + [perf] Need to version surface types + + As cairo-perf-diff will execute the current cairo-perf against historical + revisions, any introduced api must be protect in order to compile on old + versions. + + perf/cairo-perf-trace.c | 8 ++++++++ + perf/cairo-perf.c | 6 ++++++ + 2 files changed, 14 insertions(+), 0 deletions(-) + +commit 44b72ba6d7bdcc5f4e431af178bc7c22f13e88e0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 20 13:09:46 2009 +0100 + + [perf] Add a non-build mode to graph + + Add --show to cairo-perf-graph just to graph perf files that currently + exist and not build the missing cases. + + perf/cairo-perf-graph | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit d4dd6fcf3a4e0d7426657592ebb3d65a2ae0bc4a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 20 13:08:50 2009 +0100 + + [perf] Show speedup/slowdownn labels on graph + + Add labels show that it is clear which direction is faster on the graph. + + perf/cairo-perf-graph-widget.c | 166 ++++++++++++++++++++++++++++++++++++--- + 1 files changed, 153 insertions(+), 13 deletions(-) + +commit b71b6ecb59bf83605bb2bb10e3f8acd7dd950242 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 21:21:02 2009 +0100 + + [test] Fix the image compare + + Oh, it's a bad sign when I can't even correctly compare a bunch of pixels. + + test/cairo-test-trace.c | 101 ++++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 86 insertions(+), 15 deletions(-) + +commit d544828934e479071fe5246fc0bdbbad33c097e8 +Author: M Joonas Pihlaja <rowan@sal.math.ualberta.ca> +Date: Sat Jun 20 06:16:51 2009 -0600 + + [build] Look for libpng.pc as well when configuring. + + The OpenBSD png package installs only libpng.pc and not + any of libpng{13,12,10}.pc. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5733d8d6c35e1a77513a49267a47f6caae68e829 +Author: M Joonas Pihlaja <rowan@sal.math.ualberta.ca> +Date: Sat Jun 20 06:11:44 2009 -0600 + + [build] Remove a level of quoting from CAIRO_PARSE_VERSION. + + The m4 that comes with OpenBSD gets confused by the extra quoting + applied to the version number argument when building the + bodies of the cairo_version_{major,minor,micro} macros using + m4_bpatsubst(). Since we're making sure that the argument is always + a number, we can safely use the unquoted \2 body rather than \[\2\]. + + acinclude.m4 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3bad3efaa2fa00275c1d27c95ccbf1fcdfdfef3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 19:09:03 2009 +0100 + + [test] Add cairo-test-trace to .gitignore + + test/.gitignore | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 62dc0ae46c26652da9a76b851bab594020020115 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 19:03:17 2009 +0100 + + [cairo] Offset the current path when pushing/popping groups. + + We need to translate the path in order to compensate for the device offset + applied to the group surface when pushing and popping. (The path is + transformed to device space on creation, and so needs recomputing for the + new device.) + + src/cairo.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 851c8839622619779c9169299e3efccd108d0395 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 19:00:39 2009 +0100 + + [test] Add group-clip + + Larry Ewing found an ancient and nasty bug whereby a path was not + corrected whilst pushing and popping groups. + + AUTHORS | 1 + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/group-clip.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ + test/group-clip.ref.png | Bin 0 -> 191 bytes + 5 files changed, 60 insertions(+), 0 deletions(-) + +commit 0a34abace781976b92287dd07daa2b41e168c4f6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 18:40:43 2009 +0100 + + [test] Experiment with reference targets + + Specify another boilerplate target to use as the reference for this + target. We then use this in cairo-test-trace in preference to using the + image surface. Still not perfect, though the framework is improving. + + boilerplate/cairo-boilerplate.c | 254 ++++++++++++++++++++++----------------- + boilerplate/cairo-boilerplate.h | 5 + + test/Makefile.am | 6 +- + test/cairo-test-trace.c | 229 +++++++++++++++++++++++++++++------ + 4 files changed, 341 insertions(+), 153 deletions(-) + +commit cec8579348fb39ca879285bebfb1ee65cbae502d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 16:09:26 2009 +0100 + + [xlib] Remove redundant code to query a xrender_format from a visual + + We always query an xrender_format for a Visual upon surface creation, so + checking again in create_similar() is redundant. (It also interferes with + disabling XRender...) + + src/cairo-xlib-surface.c | 9 ++------- + 1 files changed, 2 insertions(+), 7 deletions(-) + +commit dd842a2bed1568000c9727fc35d4683db349e506 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 14:59:59 2009 +0100 + + [boilerplate] Missing static on pdf user data key. + + boilerplate/cairo-boilerplate-pdf.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2da906f4764d5fe7cbb08ec238b01e2a03696899 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 19 18:44:23 2009 +0300 + + [script] Include unistd.h if we're twiddling file descriptors. + + Including sys/mman.h doesn't pull in unistd.h on Solaris 9 so + we have to include it explicitly. + + util/cairo-script/cairo-script-operators.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +commit 1b6dbcbbebf18d6239fcc618f3389e9c0fc981f3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 19 18:39:53 2009 +0300 + + [trace] Compile without fontconfig. + + Use CAIRO_HAS_FC_FONT to decide whether to export + cairo_ft_font_face_create_for_pattern() or not. + + util/cairo-trace/trace.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit d9b5a98a78b712a2ad64408fa47ba6aa34e29f1f +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 19 18:34:34 2009 +0300 + + [build] Require fontconfig >= 2.2.95 if we're using it at all. + + We require at least fontconfig 2.2.95 when we're using + fontconfig because we depend on the FcResultOutOfMemory + error code introduced in that version. + + configure.ac | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 84e587bbfad6586e41fac86c4d19005418115ac5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 14:41:39 2009 +0100 + + [trace] Prevent a child process from writing to the same file + + After opening a specific file or fd for ourselves, reset the + CAIRO_TRACE_FD to point to an invalid fd in order to prevent any child + processes (who inherit our environment) from attempting to trace cairo + calls. If we allow them to continue, then the two traces will intermix + and be unreplayable. + + util/cairo-trace/trace.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 18edea36ba6604e4cbdbda1ed56e6117b5768d94 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 14:14:32 2009 +0100 + + [perf] Report line of error during trace + + Query the number of new lines processed so far and report that on hitting + an error. + + perf/cairo-perf-trace.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 55721d380d5a75a9448f522f9ad48cd18a6c2f65 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 14:13:34 2009 +0100 + + [script] Report line number + + Count the number of newlines processed in the trace and provide an API for + the user to query. + + util/cairo-script/cairo-script-interpreter.c | 6 ++++++ + util/cairo-script/cairo-script-interpreter.h | 3 +++ + util/cairo-script/cairo-script-private.h | 2 ++ + util/cairo-script/cairo-script-scanner.c | 12 +++++++++--- + 4 files changed, 20 insertions(+), 3 deletions(-) + +commit 030ef4ca0023166fcb82f0a0b1512eb31beb3385 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 11:56:14 2009 +0100 + + [trace] Change the threshold at which pixel data is immediately copied + + Embed the pixels for images less than 32*32 as this catches most icons + which are frequently uploaded, but is still an unlikely size for a + destination image surface. + + util/cairo-trace/trace.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit d3330d7beba0e0d2543e40a0e0e4d81ea9a78b45 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 19 11:15:30 2009 +0100 + + [ft] Substitute twin if there are no fonts + + Fixes bug 22356 -- Spurious "out of memory" error on system without fonts + https://bugs.freedesktop.org/show_bug.cgi?id=22356 + + If FcFontMatch() fails, then it means that there are no fonts available on + the system (or it may have been a malloc error, we have no way of telling). + Instead of report NO_MEMORY and disabling all drawing, one of the + rationales for including a builtin font was so that we could continue even + in the face of this error and show *something* to the user. (This being a + last resort (and especially important for demos!) and hopefully easier to + diagnose than no output at all.) + + src/cairo-font-face-twin.c | 75 ++++++++++++++++++++++++++++++++++---------- + src/cairo-ft-font.c | 6 +++- + src/cairoint.h | 3 ++ + 3 files changed, 66 insertions(+), 18 deletions(-) + +commit 6d8b353658da1ad973e3bda9e89799a7467d8182 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 19 02:37:19 2009 +0300 + + [spans] Squash a compiler warning when creating error objects. + + Handle the new CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED status code + in the switch/case of the ..._create_in_error() functions for + creating span renderers or scan converters. + + src/cairo-spans.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 7651227d3dfe4ebf40e95a72106957a9ec51dd3e +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jun 19 02:03:39 2009 +0300 + + Revert "[test] Make the xlib-fallback use the image refs." + + This reverts commit 903b39c30448d62e2cbf9d075c5256a333bd5d8f. + + The xlib-fallback actually renders mostly via traps at the moment, + so staying with xlib refs is the right thing to do. + + boilerplate/cairo-boilerplate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 729457b174cb19f4e0750486caed9582c5708930 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat May 2 23:30:02 2009 +0300 + + [test] Add trap rendered ref images for fill-image. + + The fill code path for the xlib and fallback surfaces use trapezoids + rather than spans, so there's lots of differences due to antialising + differences at the edge of the fill. This patch adds a ref image + for the xlib and test-fallback surfaces. + + test/fill-image.test-fallback.ref.png | Bin 0 -> 1462 bytes + test/fill-image.xlib.ref.png | Bin 0 -> 1462 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 8e7f667abb94262b63b4fd589f5ee06cb8974aaf +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat May 2 19:09:27 2009 +0300 + + [test] Mark scale-offset tests as XFAIL for image, xlib-fallback. + + The scale-offset tests trigger a loss-of-precision bug when + converting double matrices from cairo to pixman format. + + http://lists.cairographics.org/archives/cairo/2008-November/015671.html + + test/Makefile.am | 2 ++ + test/scale-offset-image.c | 2 +- + test/scale-offset-similar.c | 2 +- + 3 files changed, 4 insertions(+), 2 deletions(-) + +commit c12533b1358c9e5c1c3440efca4dc44ba2de9f6d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 17:46:14 2009 +0100 + + [pattern] Add _cairo_pattern_fini_snapshot + + Symmetric operation to _cairo_pattern_init_snapshot() this exists simply + to break the circular reference between the meta-surface and snapshot-cow. + + src/cairo-meta-surface.c | 24 ++++++++++++------------ + src/cairo-pattern.c | 17 +++++++++++++++++ + src/cairoint.h | 3 +++ + 3 files changed, 32 insertions(+), 12 deletions(-) + +commit 2213c447373b600c1583b2edd24775c5c031231c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 17:14:53 2009 +0100 + + [svg] Break circular snapshot reference by explicit finish + + The svg backend snapshots the meta surface which because of snapshot-cow + creates a circular reference back to the creator. So in order to break the + circular reference when we have finished with the snapshot, we need to + call cairo_surface_finish() in addition to simply destroying the surface. + + src/cairo-svg-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit cd9eef1aad87558d3f2d47cfcfa2f5b9b254692c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 16:42:56 2009 +0100 + + [scaled-font] Check the MRU font before resolving the implementor + + This should hide most of the overhead of resolving a frequently used toy font. + + src/cairo-scaled-font.c | 23 +++++++++++++++-------- + 1 files changed, 15 insertions(+), 8 deletions(-) + +commit 5ad64dfda26f97f243f13e9b766567a30fda67a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 16:39:02 2009 +0100 + + [test] Add the sha1sum of the required fonts + + (Note, I think these are currently out-of-date... But it will serve as a + useful reminder to verify and update them in future.) + + test/README | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit 3063f0f44c61869bc6bb07d46bf881f1558ac015 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 16:33:12 2009 +0100 + + [scaled-font-subset] Check for matching font-face implementors + + Catch toy and user fonts which may have different font-faces for their + implementation than the original ones they were created with. + + src/cairo-scaled-font-subsets.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 6e78c94615e407d72d4778d5558dc218e0402cbc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 16:30:41 2009 +0100 + + [test] Move calls to the getters from out of the innermost loops. + + Tidy the code slightly by removing excess and unsightly calls to + cairo_test_get_context() and cairo_get_scaled_font(). + + test/show-glyphs-many.c | 19 ++++++++++++------- + 1 files changed, 12 insertions(+), 7 deletions(-) + +commit 3da32e35afa57533379c3de35459f23aef7c3d04 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 15:31:27 2009 +0100 + + [analysis] Restore nops for the analysis null surface + + Joonas reported that adding the extra routines to the null-surface as used + by the analysis surface broke user-fonts. So create a separate null + backend to be exported via the test-null surface. + + src/cairo-analysis-surface.c | 57 ++-------------- + src/test-null-surface.c | 157 +++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 161 insertions(+), 53 deletions(-) + +commit c0e01d9cd71bd958e1b31a03cea4c08a1bdf4926 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 18 14:32:53 2009 +0100 + + [xlib] Improve GC caching efficacy + + Shrink the overall size of the per-screen GC cache, but allow multiple GCs + per depth, as it quite common to need up to two temporary GCs along some + drawing paths. Decrease the number of GCs we obtain in total by returning + clean (i.e. a GC without a clip set) back to the screen pool after use. + Compensate for the increased number of put/get by performing the query + using atomic operations where available. So overall we see a dramatic + reduction on the numbers of XCreateGC and XFreeGC, of even greater benefit + for RENDER-less servers. + + src/cairo-xlib-private.h | 11 ++- + src/cairo-xlib-screen.c | 200 +++++++++++++++++++++++++++++++++++----------- + src/cairo-xlib-surface.c | 58 +++++++++----- + 3 files changed, 197 insertions(+), 72 deletions(-) + +commit 7f238f542441cc5912d14e5c6f9c49ffd0b83fad +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Jun 18 17:13:13 2009 -0400 + + Use the scanline rasterizer in the win32 backend. + + Brings http://people.mozilla.com/~jmuizelaar/world-map.html from 8fps to 13fps + in Vista on a Mac Mini + + src/cairo-win32-surface.c | 146 ++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 144 insertions(+), 2 deletions(-) + +commit d066154e62d6b4ecad15e0eef431aa2f4a56fecb +Author: Jeff Muizelaar <jeff@infidigm.net> +Date: Tue Jun 16 15:55:53 2009 -0400 + + Factor out _cairo_image_surface_span_render_row() + + This allows other backends use the same function for rendering rows. + More specifically, I intend to use this with the win32-backend. + + src/cairo-image-surface.c | 36 +++++++++++++++++++++++------------- + src/cairoint.h | 6 ++++++ + 2 files changed, 29 insertions(+), 13 deletions(-) + +commit fd142d0a6e21c492624ca8bc5019d89b0d7c5457 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 18 16:14:50 2009 +0100 + + [shave] Robuster usage of the test shell built-in. + + Solaris 9 confuses shave, resulting in an empty variable. + This patch papers over the resulting build failure from + the test shell built-in being called with an empty argument + which was unquoted. + + build/shave.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9ecee571c12e4d1645d9db2929280c9b35b1aad4 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 18 16:09:31 2009 +0100 + + [test/build] Don't test Freetype font stuff without Fontconfig. + + Most Freetype hitting tests require Fontconfig to find + them some fonts. + + test/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 742b1ad4b069653a99fc6bd4510f2b6abb6abf95 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 23:41:28 2009 +0100 + + [test] Fix checking of the fenv.h include. + + This adds a configure check for fenv.h and makes + invalid-matrix.c check for it with HAVE_FENV_H instead + of HAVE_FEDISABLEEXCEPT -- turns out Solaris doesn't + have fedisableexcept(), but it does have feclearexcept(). + + The same issue appears on OSX and was fixed in + ab86662ab499e1f29c0f8c4248771e730c281e3f. This patch + adds some configure magic. + + build/configure.ac.system | 2 +- + test/invalid-matrix.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 75f1d11d93236b19d06515b8ed2baf612b0767ab +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 21:28:04 2009 +0300 + + [test] Fallback to HUGE_VAL in place of INFINITY in invalid-matrix.c. + + GCC 3.4.3 on OpenSolaris does not recognise INFINITY. Use HUGE_VAL + instead for every compiler instead of just MSVC. + + test/invalid-matrix.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d1994d1ac292cbc896cffd24094ddfa5f2b1e8a9 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 23:46:13 2009 +0300 + + [test/any2ppm] Daemonize without BSD's daemon(). + + Solaris libc doesn't provide daemon() so implement + any2ppm daemon's detaching without it. + + test/Makefile.am | 2 +- + test/any2ppm.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 58 insertions(+), 6 deletions(-) + +commit aafff0b9528952fbbe9d04a70bf8c76ee701743f +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 23:50:03 2009 +0300 + + [boilerplate] Check for connect() in libsocket. + + Solaris requires -lsocket to be able to talk to + the any2ppm daemon over unix domain sockets. + + boilerplate/Makefile.am | 2 ++ + build/configure.ac.system | 4 ++++ + 2 files changed, 6 insertions(+), 0 deletions(-) + +commit c4c06931690226e12622a957bbb6d652134f78b0 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 16:14:33 2009 +0300 + + [test] Make test constructors without perl. + + Remove the dependency on perl when building the test suite + by replacing the script which makes cairo-test-constructors.c + with a C program. + + test/.gitignore | 1 + + test/Makefile.am | 9 ++- + test/Makefile.win32 | 7 +- + test/make-cairo-test-constructors.c | 153 ++++++++++++++++++++++++++++++++++ + test/make-cairo-test-constructors.pl | 18 ---- + 5 files changed, 165 insertions(+), 23 deletions(-) + +commit cdd27a8d4cc3486867cff4ce81bb4e064eb74d58 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun May 24 16:19:31 2009 +0300 + + [test] Never use gcc __attribute__ magic for constructors. + + The configure test for __attribute__((constructor)) succeeds when + compiling with Sun Studio 12 on OpenSolaris but the attribute + is just ignored and has no actual effect. This causes the test + suite to not run any tests at all. With this patch we revert to + always using make-cairo-test-constructors.pl. + + build/configure.ac.system | 10 ---------- + test/Makefile.am | 7 ++----- + test/cairo-test-private.h | 2 -- + test/cairo-test-runner.c | 2 -- + test/cairo-test.h | 14 -------------- + 5 files changed, 2 insertions(+), 33 deletions(-) + +commit 46eb56a99f72b364e3eabe46f9b2995ed0696bd3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jun 18 16:42:53 2009 +0300 + + [cairo-surface] Handle the all clipped out case for regions. + + Explicitly handle a region clip which represents that the + entire surface is clipped out by passing in a temporary + empty region to the backend set_clip_region() method. + Previously the passed in region may have been NULL even + when clip->all_clipped = TRUE. + + Fixes a bug tickled by the clip-all test case which was + brought to light by 394e139213e8f6692115c4c24818bfeb5e6d456a. + + src/cairo-surface.c | 34 +++++++++++++++++++++++++++++++--- + 1 files changed, 31 insertions(+), 3 deletions(-) + +commit 002264d572841f06930869a6c87fa2c987346dd6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 17 17:15:26 2009 +0100 + + [clip] Missing {} (coding style) + + Carl spotted that I'd slipped in a little CODING_STYLE violation. + + src/cairo-clip.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit bc87074185592eae367b6c091241957b94202fda +Author: Nis Martensen <nis.martensen@web.de> +Date: Tue Jun 16 23:27:20 2009 +0200 + + [path] Fix missing implicit move-to + + When cairo_curve_to happens to start a new subpath (e.g., after a call + to cairo_new_sub_path()), it also needs to update the last_move_point. + Otherwise the new current point after a close_path() will be at an + unexpected position. + + Therefore, call _cairo_path_fixed_move_to() explicitly. + + AUTHORS | 1 + + src/cairo-path-fixed.c | 6 +++--- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit 3c5e57e694d1a8a0a48a66e0d61d8257c23a780e +Author: Nis Martensen <nis.martensen@web.de> +Date: Tue Jun 16 23:38:50 2009 +0200 + + [test] Verify current point position after subpath closure + + Make sure cairo_close_path always takes the current point where it + should be. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/close-path-current-point.c | 95 +++++++++++++++++++++++++++++++++ + test/close-path-current-point.ref.png | Bin 0 -> 1916 bytes + 4 files changed, 97 insertions(+), 0 deletions(-) + +commit 394e139213e8f6692115c4c24818bfeb5e6d456a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 17 14:46:53 2009 +0100 + + [clip] During _clip() limit the extracted traps to the current clip extents + + By applying a tight _cairo_traps_limit() we can reduce the amount of work + we need to do when tessellating the path and extracting the trapezoids. + + src/cairo-clip.c | 39 +++++++++++++++++++++++++++++++++++---- + 1 files changed, 35 insertions(+), 4 deletions(-) + +commit 650b85ec7721fb1302284e3ca4b7f4b72358abed +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 17 14:19:19 2009 +0100 + + [clip] Avoid copying region within _cairo_clip_intersect_region() + + Within _cairo_clip_intersect_region() we can simply assign the freshly + extracted traps-region if we previously had no region set. + + src/cairo-clip.c | 12 +++--------- + 1 files changed, 3 insertions(+), 9 deletions(-) + +commit 4bc89e224f74f24272c97dec93d70f0c4dd1963c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 16 15:13:46 2009 +0100 + + [NEWS] Add release notes from 1.8.8 + + NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 68 insertions(+), 1 deletions(-) + +commit 116c93cb7fe8ad55457c53b4652e8d3117581158 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 16 11:36:36 2009 +0100 + + [cairo] Remove instance of 'return free()' + + Gah! This is a GCC-ism, so therefore it has to go. + + src/cairo.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 22587f57bd5d1b4440d936cd4655a7e8fcebdf36 +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Sun Jun 14 20:43:05 2009 +0100 + + Import Qt backend by Mozilla + + Written by Vladimir Vukicevic to enable integration with Qt embedded + devices, this backend allows cairo code to target QPainter, and use + it as a source for other cairo backends. + + This imports the sources from mozilla-central: + http://mxr.mozilla.org/mozilla-central/find?text=&kind=text&string=cairo-qpainter + renames them from cairo-qpainter to cairo-qt, and integrates the patch + by Oleg Romashin: + https://bugs.freedesktop.org/attachment.cgi?id=18953 + + And then attempts to restore 'make check' to full functionality. + + However: + - C++ does not play well with the PLT symbol hiding, and leaks into the + global namespace. 'make check' fails at check-plt.sh + + - Qt embeds a GUI into QApplication which it requires to construct any + QPainter drawable, i.e. used by the boilerplate to create a cairo-qt + surface, and this leaks fonts (cairo-ft-fonts no less) causing assertion + failures that all cairo objects are accounted for upon destruction. + + [Updated by Chris Wilson] + Acked-by: Jeff Muizelaar <jeff@infidigm.net> + Acked-by: Carl Worth <cworth@cworth.org> + + boilerplate/Makefile.sources | 3 + + boilerplate/Makefile.win32.features | 10 + + boilerplate/cairo-boilerplate-qt-private.h | 60 + + boilerplate/cairo-boilerplate-qt.cpp | 90 ++ + boilerplate/cairo-boilerplate.c | 23 + + boilerplate/cairo-boilerplate.h | 3 + + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 + + build/configure.ac.features | 1 + + configure.ac | 11 + + perf/cairo-perf-trace.c | 1 + + perf/cairo-perf.c | 3 +- + src/Makefile.am | 2 +- + src/Makefile.sources | 3 + + src/Makefile.win32.features | 14 + + src/cairo-debug.c | 42 + + src/cairo-qt-surface.cpp | 1876 ++++++++++++++++++++++++++++ + src/cairo-qt.h | 89 ++ + src/cairo-xlib-surface.c | 6 + + src/cairo.h | 4 +- + src/check-def.sh | 7 +- + src/check-preprocessor-syntax.sh | 3 +- + 22 files changed, 2247 insertions(+), 8 deletions(-) + +commit 7d3881114add18d5934073d0b04755d343ea38c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 15 15:13:43 2009 +0100 + + [perf] Report errors during replays + + perf/cairo-perf-trace.c | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + +commit 061e0477e9a894241806eeacbde2f3770b751f34 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 15 15:10:50 2009 +0100 + + [perf] Report iteration count + + Show number of discard results by showing the number of statistically + valid samples out of total population count. + + perf/cairo-perf-trace.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit bab8af62e772844f08a244d99f705e318af3f58c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 15 15:01:34 2009 +0100 + + [region] Add PLT entry for cairo_region_create_rectangles() + + src/cairo-region.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 6da9c410d4696ebba0fb563a858f1625bf3b1f9e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 15 12:14:51 2009 +0100 + + Missing header file for cairo-test-null-surface. + + src/test-null-surface.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 46 insertions(+), 0 deletions(-) + +commit e5727e20f52eb0308a8ad1c44a6eb4c7c65d7ff0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 15 11:58:58 2009 +0100 + + Expose _cairo_null_surface_create() via a test surface + + Using a null surface is a convenient method to measure the overhead of the + performance testing framework, so export it although as a test-surface so + that it will only be available in development builds and not pollute + distributed libraries. + + .../cairo-boilerplate-test-surfaces-private.h | 10 ++++ + boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++++++ + boilerplate/cairo-boilerplate.c | 9 +++ + perf/cairo-perf-trace.c | 6 +- + src/Makefile.sources | 2 + + src/cairo-analysis-surface.c | 56 ++++++++++++++++++-- + src/test-null-surface.c | 48 +++++++++++++++++ + test/cairo-test.c | 14 ++++-- + util/cairo-trace/trace.c | 26 +++++++++ + 9 files changed, 175 insertions(+), 12 deletions(-) + +commit f2057061c67236a79c8bb69b84e44e151109629a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 14 09:10:08 2009 +0100 + + [trace] Add sticky bit to (system-wide) trace output dir + + Need to allow user programs to dump their traces into the common output + directory, when using /etc/ld.so.preload to capture traces for the entire + desktop. + + util/cairo-trace/Makefile.am | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 3fe50a77ea21bcddb701a8640b5ecad9f6f5ab01 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 22:27:17 2009 +0100 + + [configure] Rephrase warning message for disabling core features. + + "strictly recommended" is an odd phrase and though the stern warning is + appropriate as replacing a system library with a more limited version is + likely to cause mayhem, we are but mere servants and should be reserved in + our parlance. + + build/configure.ac.features | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 5d57aeaa23566739ba01a0fac1c3b90ce27b28cd +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Tue May 26 17:53:37 2009 -0400 + + Reinstate cairo_region_create_rectangles() + + cairo_region_union_rectangle() is linear in the number of rectangles + in the region. There is no way to make it significantly faster without + losing the ability to return errors synchronously, so a + cairo_region_create_rectangles() is needed to avoid a large + performance regression. + + src/cairo-region.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-traps.c | 47 ++++++++++++++++++++++++++++------------------- + src/cairo.h | 4 ++++ + src/cairoint.h | 1 + + 4 files changed, 77 insertions(+), 19 deletions(-) + +commit 216a2e24c7375e48677ce30f9fe8fb3d8bbdd10d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 21:40:05 2009 +0100 + + [test] Minor tweak to cairo-test-trace + + Cleanse the code of a couple of redundant pointer manipulations. + + test/cairo-test-trace.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +commit 2ab4245c866bcefb755a33f7eaa6ef1277f82df1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 21:33:09 2009 +0100 + + [test] Need SOURCE when copying image data + + As cairo-test-trace does not clear the image data before reuse, using + the default OVER operator will cause differing results for each process + when inadvertently alpha blending into the shared memory region. As we + essentially want to just copy the source pixels, be explicit and set the + SOURCE operator. + + test/cairo-test-trace.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit e003d665fe45905606a792e4a783f65fc7e84550 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 19:18:11 2009 +0100 + + [test] Disable compilation of cairo-test-trace without shm_open() + + Remember to only add cairo-test-trace to the list of EXTRA_PROGRAM so long + as we can actually compile it. + + test/Makefile.am | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit c092136fe9e5fee71dfe02f945fe5676f43b2d05 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 18:59:17 2009 +0100 + + [configure] Check for shm_open() + + As needed for cairo-test-trace. + + build/configure.ac.system | 8 ++++++++ + test/Makefile.am | 4 +++- + 2 files changed, 11 insertions(+), 1 deletions(-) + +commit f298dd92ca0b789a3d2b591753c992e1673b2d87 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 18:49:16 2009 +0100 + + [test] Remove dlmalloc + + cairo-test-trace's shared memory allocation pattern is much simpler than + anticipated as it allocates a bunch of images and then frees them all, + and so only needs a simple linear allocator. + + test/Makefile.am | 1 - + test/cairo-test-trace.c | 62 +- + test/dlmalloc.c | 5099 ----------------------------------------------- + 3 files changed, 11 insertions(+), 5151 deletions(-) + +commit 37f32f29518bdc1428c7ec137f212313e377486c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 18:31:35 2009 +0100 + + [util] Disable default build of font-view + + It's only a demonstration utility after a all and we do not need to incur + the cost of relinking it everytime we modify the main library. + + util/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0eca1b17b14057ef88ae2df500679e62ffb50118 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 17:16:20 2009 +0100 + + [surface] Give ownership of the snapshot to the snapshotter. + + Previously the reference to the newly created snapshot was owned by the + containing pattern. The consequence of this was that when the pattern was + destroyed the snapshot was cleaned up which prevent reuse of the snapshot + across multiple pages. Transferring ownership upon attachment of the + snapshot to the target means that the snapshot stays in existence until + the target itself is destroyed or modified *and* the containing pattern + is consumed. Obvious in hindsight. + + src/cairo-surface.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit a1b3392e60b6b4ff4b650f4d48d56568c1851245 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 16:37:43 2009 +0100 + + [surface] Mark cairo_surface_show_page() with begin-modification + + cairo_surface_show_page() clears the surface after presentation, so we + need to discard the snapshots here. + + src/cairo-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1798bdd322e0d25147195198bf0c5e9506c61a15 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Jun 13 22:47:41 2009 +0930 + + Fix PDF pattern embedding + + The PDF snapshot cow patch was reusing a previously emitted surface + pattern if the surface unique id matched the current surface. This + resulted in incorrect output as the new pattern may have a different + pattern matrix. + + This patch fixes the PDF backend to always emit a new pattern but + re-use previously emitted image or metasurface XObjects. + + src/cairo-pdf-surface-private.h | 21 ++- + src/cairo-pdf-surface.c | 532 ++++++++++++++++++++++++++------------- + 2 files changed, 372 insertions(+), 181 deletions(-) + +commit f115c5479ead934774fea99d74d780e2bb1681c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 15:49:15 2009 +0100 + + [trace] Strip absolute path off name when profiling + + Carl spotted this last night, but I misinterpreted it as an old problem + caused by the application changing its working directory before its first + cairo call - thus causing cairo-trace to attempt to open a file in the new + directory. Instead the problem was attempting to trace an executable with + an absolute path, where we just tagged it with a .lzma extentsion and + attempted to pipe the output there. Obviously this fails for the user + profiling system binaries. So use basename to strip the leading path. + + util/cairo-trace/cairo-trace.in | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit c52eed6680dd13f6bc65dc4a26b6c8eab5a94a54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 15:42:43 2009 +0100 + + [trace] Handle wrapping python + + python lazily loads libcairo.so and so it is not available via RTLD_NEXT, + and we need to dlopen cairo ourselves. Similarly the linker is not able to + resolve any naked function references and so we need to ensure that all of + our own calls into the library are wrapped with DLCALL. + + util/cairo-trace/trace.c | 145 ++++++++++++++++++++++++++-------------------- + 1 files changed, 83 insertions(+), 62 deletions(-) + +commit 606790a86083d31fa50ed5e0cf621eca56c16e33 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 14:07:22 2009 +0100 + + [script] Disable compilation of examples + + Now that cairo-perf-trace exists and is a far superior replay tool, use + EXTRA_PROGRAM for the original replay tools. + + util/cairo-script/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 31b7652e1fa2ab2bd9e9df7f5517b7d678faf6aa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 12:19:51 2009 +0100 + + [test] Never, ever, blame a crashing test on external factors. + + test/cairo-test-runner.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3dde883b779b81b95f420039c02b51b029311f78 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 10:13:20 2009 +0100 + + [test] Code review after sleep + + Review cairo-test-trace.c and rewrite parts to ease understanding and fix + various bugs - such as failure to notice the slaves crashing and not + releasing our shared memory after an interrupt. + + test/cairo-test-trace.c | 400 ++++++++++++++++++++++++++++------------------- + 1 files changed, 236 insertions(+), 164 deletions(-) + +commit 1f542965f0310aed493651b8ddc1e98a4192b977 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 13 08:24:22 2009 +0100 + + [perf] Mention cairo-perf-compare-backends in the README + + perf/README | 16 ++++++++++++++++ + 1 files changed, 16 insertions(+), 0 deletions(-) + +commit 3b6e4018c69f88135f8d937724acf90adb003bad +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 22:19:56 2009 +0100 + + [test] Add cairo-test-trace + + The basic premise is that we feed the trace to multiple backends in + parallel and compare the output at the end of each context (based on + the premise that contexts demarcate expose events, or their logical + equivalents) with that of the image[1] backend. Each backend is + executed in a separate process, for robustness, with the image data + residing in shared memory and synchronising over a socket. + + [1] Should be reference implementation, currently the image backend is + considered to be the reference for all other backends. + + test/Makefile.am | 16 +- + test/cairo-test-trace.c | 1225 ++++++++++++ + test/dlmalloc.c | 5099 +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 6339 insertions(+), 1 deletions(-) + +commit a41e1275d28317c88e29b7f142cfc835673c01f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 12:32:51 2009 +0100 + + [boilerplate] Make array of targets const. + + Protect the boilerplate targets from unexpected modifications. + + boilerplate/cairo-boilerplate.c | 8 ++++---- + boilerplate/cairo-boilerplate.h | 4 ++-- + perf/cairo-perf-trace.c | 6 +++--- + perf/cairo-perf.c | 4 ++-- + perf/cairo-perf.h | 4 ++-- + test/cairo-test.h | 2 +- + 6 files changed, 14 insertions(+), 14 deletions(-) + +commit 6aebde6598c629d667b06e20111106832d139c4d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 12:25:22 2009 +0100 + + [boilerplate] Export cairo_boilerplate_get_image_target() + + A routine to scan the compiled list of targets and return the entry + corresponding to the image backend. + + boilerplate/cairo-boilerplate.c | 17 +++++++++++++++++ + boilerplate/cairo-boilerplate.h | 3 +++ + 2 files changed, 20 insertions(+), 0 deletions(-) + +commit d008167b9bcd6a24199740183bbfcabcfdccdd63 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Jun 12 12:08:22 2009 -0700 + + Makefile: Fix two typos preventing doc-publish from working + + It seems that everything up to this point in release-publish + worked fine, so with these fixes, hopefully the next run of + make release-publish will work without any snags. + + build/Makefile.am.releasing | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 98eb84cfbbf2cfdb0153c8e924099cef016a412a +Author: Carl Worth <cworth@cworth.org> +Date: Fri Jun 12 12:07:59 2009 -0700 + + Increment version to 1.9.3 after the 1.9.2 snapshot. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e9b9d2a7c17ca4b2bc2991fdc4893aed850578db +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jun 11 15:28:59 2009 -0700 + + Update version to 1.9.2 + + In preparation for the (long overdue) 1.9.2 snapshot today. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8ac8c5b428d11b11ba9fb55264cd9091368f6acb +Author: Carl Worth <cworth@cworth.org> +Date: Fri Jun 12 11:49:52 2009 -0700 + + NEWS: Fix date and name of 1.9.2 snapshot + + It's a snapshot, not a release, and the broken REFERENCE_IMAGE list + derailed me from finishing yesterday. + + NEWS | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 3f474555dd00b8585ae3db848cf46984d77bd16e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 11:19:50 2009 +0100 + + [test] Add jp2.jp2 to EXTRA_DIST + + Required by test/mime-data and so triggering failures during distcheck as + it was not packaged. + + test/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 7f114b781f5c530d57530e5f76402e41cdabac6b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 11:15:16 2009 +0100 + + [doc] Workaround read-only tree during make distcheck + + This looks to be an ugly necessity to work-around the nasty issue that + we currently gtkdoc expect to be run inside the source tree. I'm sure + Behdad will be able to resolve this much more elegantly than this quick + and fragile attempt. + + build/Makefile.am.gtk-doc | 11 ++++++----- + build/configure.ac.features | 2 +- + doc/public/Makefile.am | 5 +++-- + 3 files changed, 10 insertions(+), 8 deletions(-) + +commit 1498c9c333d7579231ac44a91f00f0a49360702d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 07:38:00 2009 +0100 + + [script] Also mmap backing storage for the pattern descriptions + + These can be reasonably large and persist for long times due to the + font holdover caches, so manually swap them out to save space on tiny + swapless machines. + + util/cairo-script/cairo-script-operators.c | 14 +++++++++++++- + 1 files changed, 13 insertions(+), 1 deletions(-) + +commit 80ba06803b50cc0f76039939f25372cbbe2e8d81 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 12 08:03:12 2009 +0100 + + [Makefile] Update list of reference images. + + test/Makefile.am | 1432 +++++++++++++++++++++++++++++++----------------------- + 1 files changed, 818 insertions(+), 614 deletions(-) + +commit fb21a0da8730823ff092f8e298af3d5b4e8c90e4 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jun 11 15:28:02 2009 -0700 + + Update CLEANFILES for 'make distcheck' + + This is a standard part of the release ritual. + + test/Makefile.am | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit a4f023ef2eb041fecba5f3fd2d5a1594975ca211 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jun 11 14:51:14 2009 -0700 + + NEWS: Update date for snapshot planned for today. + + NEWS | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 82139b42919be1acf6bade733bb2ff489e50812d +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jun 11 14:51:10 2009 -0700 + + NEWS: Explain bovine polaroids a bit more. + + It's a fun joke, but the COW snapshots feature is important enough + that we should actually tell users what it is. + + NEWS | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 4d5f66d5b1f243e58d43dc89568be9240262fd5c +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jun 11 14:42:11 2009 -0700 + + NEWS: Cleanup in preparation for 1.9.2 snapshot + + Mostly just wrapping to a reasonable line length, and some minor + wording changes. + + NEWS | 71 +++++++++++++++++++++++++++++++++++++++++------------------------ + 1 files changed, 45 insertions(+), 26 deletions(-) + +commit 19630f4b73a4fdfb9855ececd6614493e68d3b95 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Jun 10 17:39:48 2009 -0700 + + Make the warning about the need to --enable-gtk-doc more explicit. + + I must have read it three times and kept thinking, "but I *did* + just install gtk-doc", before I finally understood what it was + trying to tell me. + + build/Makefile.am.gtk-doc | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 3aaea453b0f0880d6c8825be21e67821732d1635 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 22:36:01 2009 +0100 + + [script] Store fonts inside mmaped files. + + As an aide to tiny swapless systems write the rarely used bytes that + define type42 fonts into a deleted file and mmap them back into our + address space. + + build/configure.ac.system | 3 + + util/cairo-script/cairo-script-operators.c | 91 +++++++++++++++++++++++----- + 2 files changed, 78 insertions(+), 16 deletions(-) + +commit 6167f27adfd530bdf091a0e7a3e0141d5db66f00 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 22:33:00 2009 +0100 + + [script] Fix memleak of duplicated strings from files + + csi_string_new() duplicated the bytes which was not what was desired, so + implement a csi_string_new_for_bytes() to take ownership and prevent the + leak that was occuring, for example, every time we create a new font face. + + util/cairo-script/cairo-script-file.c | 5 +++-- + util/cairo-script/cairo-script-objects.c | 27 +++++++++++++++++++++++++++ + util/cairo-script/cairo-script-private.h | 6 ++++++ + 3 files changed, 36 insertions(+), 2 deletions(-) + +commit 13b56c42bfdb9ad36f9b1bd22f83d7ef3a074ddc +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Jun 11 17:32:23 2009 -0400 + + Fix compilation on OS X when compiling for 64 bit + + OS X doesn't support ATSUI in 64 bit so don't include the cairo ATSUI + API in that case. + + src/cairo-quartz-font.c | 3 ++- + src/cairo-quartz.h | 2 ++ + 2 files changed, 4 insertions(+), 1 deletions(-) + +commit 9e3019ef987f8d3ad424c13ffae5a15b08beb327 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 22:27:18 2009 +0100 + + [perf] Add libcairoperf.la to DEPENDENCIES + + It seems adding the explicit dependencies to encourage it to rebuild + components from other parts of the source tree removed the automagic + dependency of libcairoperf.la. So add it to the list. Maybe this is not + the correct solution, but it works again for now. + + perf/Makefile.am | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 55cbf525479cde8251cc9199f9db89e510d6a9c1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 15:40:27 2009 +0100 + + [perf] Fix -i getopt parsing. + + Gah, I presumed that the ':' separated options that required arguments + from stand-alone options. I was wrong. The ':' indicates that the + preceding option takes an argument. So add it back to -i. + + perf/cairo-perf-trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 614bfdc0846856653a742b035e70d009b0a716cc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 15:35:05 2009 +0100 + + [xcb] Trivial compile fix. + + Update show_glyphs() interface. + + src/cairo-xcb-surface.c | 11 ++++++----- + 1 files changed, 6 insertions(+), 5 deletions(-) + +commit f7dbdf1fd1d7cc14491a9419c316b078247e145e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 09:39:20 2009 +0100 + + [script] Hide pixman-ops when copying pixels + + Seeing unexpected time inside pixman composite is quite disturbing when + trying to track down the apparent slowness in some benchmarks. Remove one + source of this artefact by simply memcpy'ing pixel data when trivial. + + util/cairo-script/cairo-script-operators.c | 70 ++++++++++++++++++++++------ + 1 files changed, 55 insertions(+), 15 deletions(-) + +commit ecee5663bf900ab97d2bb7ec41ade838f167e1cd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 01:05:28 2009 +0100 + + [perf] Fixup compare-backends to work with just a single test. + + perf/cairo-perf-compare-backends.c | 17 ++++++----------- + 1 files changed, 6 insertions(+), 11 deletions(-) + +commit 42c0aee1d9ff5e0182c41ed505a2b0f56e564cbb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 12:58:05 2009 +0100 + + [perf] Add a -x to exclude traces from a benchmark. + + Read names of traces to exclude from a file specified using -x on the + commandline, i.e. + $ ./cairo-perf-trace -x cairo-traces/tiny.exclude + + This is a convenient method for me to exclude certain traces for + particular machines. For example tiny cannot run + firefox-36-20090609.trace as that has a greater working set than the + available RAM on tiny. + + perf/cairo-perf-trace.c | 135 ++++++++++++++++++++++++++++++++++++++++++++--- + perf/cairo-perf.h | 2 + + 2 files changed, 130 insertions(+), 7 deletions(-) + +commit b40ce402ada8d57c5093715be530df08459d1654 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 11 09:16:29 2009 +0100 + + [NEWS] Add more notes + + NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++------ + 1 files changed, 44 insertions(+), 6 deletions(-) + +commit 610da573e91810c53305b6bfe02eb7b714e3d08e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 10 12:59:36 2009 +0100 + + [win32-font] Non-fatal error from GetGlyphOutlineW(GGO_METRICS) + + If GetGlyphOutlineW(GGO_METRICS) fails to retreive the metrics for the + specified glyph it returns GDI_ERROR. Like ft, do not interpret this as a + fatal error but just mark the glyph as empty. + + Fixes http://bugs.freedesktop.org/show_bug.cgi?id=20255 + Bug 20255 -- cairo_scaled_font_glyph_extents breaks with invalid glyph id + + src/cairo-win32-font.c | 10 ++-------- + 1 files changed, 2 insertions(+), 8 deletions(-) + +commit 81b5dc42b0e754d602506a8ccd231df9afd71593 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 10 08:49:39 2009 +0100 + + [perf] Expand the section on cairo-perf-trace in the README + + Promote the information on how to use cairo-perf-trace and include it + immediately after the details on cairo-perf. This should make it much + clearer on how to replay the traces, and the difference between the two + benchmarks. + + perf/README | 37 ++++++++++++++++++++++++++++++++++--- + 1 files changed, 34 insertions(+), 3 deletions(-) + +commit ec92e633edd377747155b60aa225b266c38bc498 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 10 08:34:57 2009 +0100 + + [perf] Couple cairo-perf-traces into make perf + + Rather than complicating cairo-perf to extend it to perform both micro- + and macro-benchmarks, simply run the two binaries in succession during + make perf. + + For bonus points, consider whether we should hook cairo-perf-trace into + cairo-perf-diff. + + perf/Makefile.am | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 0db946cdd9fe601a060b62c5df7df3022ea5e2d6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 9 16:19:36 2009 +0100 + + [perf] Add explicit dependences for the local libraries + + Update the build rules and add the dependences for the libraries built in + other parts of cairo. + + perf/Makefile.am | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) + +commit 844c809698635cf44658fcbfb5da6976890185b9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 9 12:45:53 2009 +0100 + + [boilerplate] Print out known targets on error. + + Improve the 'Cannot find target ...' error message for an incorrect + CAIRO_TEST_TARGET by actually listing the targets that have been compiled + into the test suite. + + boilerplate/cairo-boilerplate.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit ac563715506b911f142dd0e4460a6effee45119d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 23:58:56 2009 +0100 + + [test] Exercise overlapping glyphs + + Quite an expensive test that converts an image into a distorted array of + glyphs, using a perspective transformation taking the intensity of the + pixel as depth. This generates a pretty picture and many overlapping + glyphs. + + test/Makefile.am | 1 + + test/Makefile.sources | 1 + + test/mask-glyphs.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++ + test/mask-glyphs.ref.png | Bin 0 -> 1189352 bytes + 4 files changed, 177 insertions(+), 0 deletions(-) + +commit 015df191ba947e714285145c3a4ead198ba0d07e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 17:40:16 2009 +0100 + + [trace] Prevent overflowing the operand stack when recreating objects + + Objects like cairo_scaled_font_t may return a reference to a previously + defined scaled-font instead of creating a new token each time. This caused + cairo-trace to overflow its operand stack by pushing a new instance of the + old token every time. Modify the tracer such that a font token can only + appear once on the stack -- for font-faces we remove the old operand and + for scaled-fonts we simply pop, chosen to reflect expected usage. + + util/cairo-trace/trace.c | 89 ++++++++++++++++++++++++++++++++------------- + 1 files changed, 63 insertions(+), 26 deletions(-) + +commit 09492288b33c36093e50d39e4e7e632ab659a0e2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 17:38:14 2009 +0100 + + [trace] Option to re-enable mark-dirty + + Applications such as swfdec have a strictly correct use of mark-dirty and + so we need an option to re-enable mark-dirty tracing in conjunction with + --profile. + + util/cairo-trace/cairo-trace.in | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 39bac6edddb8913d07fb25f14f088967ca846a78 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 11:52:56 2009 +0100 + + [perf] Mention cairo-perf-trace early on in the README + + perf/README | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 34ccaeae2d3cf1b5bdd8b97581d6e70324494356 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jun 8 00:12:28 2009 +0100 + + [perf] Continuously update the summary for traces + + perf/cairo-perf-trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 055e9b0eb650bec6ae8297e5a36f1cac22c43d56 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 23:35:57 2009 +0100 + + [test] Cache resolved scaled-font + + The intention is to stress test the solid pattern caches, so we can cheat + and avoid repeatedly resolving the toy font. + + test/solid-pattern-cache-stress.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 25c37509396a89deb644cbd6ada99137ba9d3095 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 19:23:04 2009 +0100 + + [scaled-font] Report the original-font-face + + When queried with cairo_scaled_font_get_font_face() return the original + font-face which matches the one supplied by the user, rather than the + implementation derived face. + + Fixes test/font-face-get-type. + + src/cairo-scaled-font.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 6d693f6bd7c629372cfb6c284ca98dc04619bfe9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 18:59:36 2009 +0100 + + [ft] Support font_face->get_implementation + + The lazy resolution of patterns was defeating the scaled_font cache as + ft-fonts that resolved to the same unscaled font were being given different + font-faces upon creation. We can keep the lazy resolution by simply asking + the ft backend to create a fully resolved ft-font-face when we need to + create a scaled-font. This font is then keyed by the resolved font-face + and so will match all future lazily resolved identical patterns. + + src/cairo-ft-font.c | 117 +++++++++++++++++++------------------------- + src/cairo-scaled-font.c | 20 +++++-- + src/cairo-toy-font-face.c | 41 ++++++++++------ + src/cairoint.h | 9 ++- + 4 files changed, 96 insertions(+), 91 deletions(-) + +commit a29426f4bffc0a3f5bb349a2ba44203394339ae8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 17:24:40 2009 +0100 + + [ft] Assert that we create an unscaled font for the resolved pattern + + src/cairo-ft-font.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 7d8a0a1cdd62112ccdae2a80bb55ec9cec99b978 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 17:01:57 2009 +0100 + + [cairo] Keep a small stash of cairo contexts + + A cairo context is meant to be extremely cheap to create such that it can + be used in transient expose events. Thus these are allocated reasonably + frequently and show up malloc profiles. + + src/cairo.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 files changed, 49 insertions(+), 2 deletions(-) + +commit f08fe5b550d53c93b73c6295f8a85a8dcd4a1f4a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jun 7 15:55:20 2009 +0100 + + [trace] Redirect stdout to /dev/null when compressing + + Otherwise we mix in stdout in with the trace and prevent replay. + + util/cairo-trace/cairo-trace.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 750c1b5b48dcd33ba4a4d5290c50f564bf45bc58 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 21:45:18 2009 +0100 + + [configure] Check for FcInit() + + configure.ac | 2 +- + test/cairo-test.c | 2 ++ + 2 files changed, 3 insertions(+), 1 deletions(-) + +commit f7a562a590493904cf10b4fb9af3b42fb3f8a3a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 14:58:46 2009 +0100 + + [configure] Don't attempt to build GTK+ utilities on system without GTK+ + + configure.ac | 3 ++- + util/Makefile.am | 5 ++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit 6a5957475139a7c80a6bb55fb63927e5ec8866f6 +Author: Eric Anholt <eric@anholt.net> +Date: Sun Jun 7 10:43:43 2009 +0000 + + [gl] consolidate the pixman format to GL format/type/internalformat code. + + This means that draw_image gets all the love that the pattern texture code + does. Not that I'm sure it still needs to exist. + + src/cairo-gl-surface.c | 321 ++++++++++++++++++++++++------------------------ + 1 files changed, 158 insertions(+), 163 deletions(-) + +commit cb1e5674cd7a61a2d96bd4ae8895b26686571e78 +Author: Eric Anholt <eric@anholt.net> +Date: Sun Jun 7 10:09:28 2009 +0000 + + [gl] Add support for more 16-bit image formats. + + Fixes test-fallback16-surface-source + + src/cairo-gl-surface.c | 54 ++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 48 insertions(+), 6 deletions(-) + +commit 7a95b2745ae619f6ca4631f3cdb03e12203126f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 21:36:08 2009 +0100 + + [boilerplate] Minor typo in win32-printing + + boilerplate/cairo-boilerplate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 16eb160c7794ad34c17c5b12ec586d956baf9831 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 20:09:15 2009 +0100 + + [script] Enable compilation without fontconfig + + Some insane people actually try compiling cairo with freetype and without + fontconfig... + + util/cairo-script/cairo-script-operators.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit d753ba96aba4dbbcbd0da1823be8824ba233f079 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 5 17:59:38 2009 +0100 + + [script] Manage used entries within hash tables + + Apply the patch from Karl Tomlinson, + https://bugs.freedesktop.org/attachment.cgi?id=19802, to repack the hash + table if the number of free slots falls too low. + + util/cairo-script/cairo-script-hash.c | 109 ++++++++++++++++++++---------- + util/cairo-script/cairo-script-private.h | 1 + + 2 files changed, 73 insertions(+), 37 deletions(-) + +commit 4ccfd474a36f482adcab49a8d38742121817b47e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 13:32:21 2009 +0100 + + [perf] Switch to using clock_gettime() + + Try using clock_gettime() for a high resolution stable time source in + preference to the potentially unstable TSC. + + build/configure.ac.system | 9 ++++- + perf/cairo-perf-posix.c | 72 +++++++++++++++++++++++++++++++++------------ + 2 files changed, 60 insertions(+), 21 deletions(-) + +commit 867c88ae90e4e69a556c032fa67d94a292f5d817 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 12:59:39 2009 +0100 + + [script] Add a finish method to the interpreter + + When using fonts circular references are established between the holdover + font caches and the interpreter which need manual intervention via + cairo_script_interpreter_finish() to break. + + perf/cairo-perf-trace.c | 3 +- + util/cairo-script/cairo-script-interpreter.c | 51 ++++++++++++++++++++------ + util/cairo-script/cairo-script-interpreter.h | 3 ++ + util/cairo-script/cairo-script-objects.c | 35 ++++++++++++------ + util/cairo-script/cairo-script-private.h | 3 ++ + 5 files changed, 70 insertions(+), 25 deletions(-) + +commit 098822d7ee7f14096dd269c1bc96e39da126622c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jun 6 10:35:19 2009 +0100 + + [script] Fix erroneous error return when rendering type3 glyphs + + Only return a USER_FONT_ERROR if an error occurs whilst rendering the + glyph! + + util/cairo-script/cairo-script-operators.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 24e51dd2ee04884e1f6f9f527b6675ad5f883ee2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 5 18:34:29 2009 +0100 + + [atomic] Hide compiler warnings + + Add uint variants of _cairo_atomic_int_*() to hide the compiler warnings + about sign conversions. + + src/cairo-atomic-private.h | 3 +++ + src/cairo-surface.c | 6 +++--- + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit 4ae5e2d44555a7219eb76ee187a8f588606c112f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 5 18:29:40 2009 +0100 + + [atomic] Provide mutex-based ptr cmpxchg + + To handle those CPUs where we do not have an atomic cmpxchg. + + src/cairo-atomic-private.h | 3 +++ + src/cairo-atomic.c | 13 +++++++++++++ + 2 files changed, 16 insertions(+), 0 deletions(-) + +commit a1d0a06b6275cac3974be84919993e187394fe43 +Author: Thomas Jaeger <ThJaeger@gmail.com> +Date: Thu Feb 19 12:02:41 2009 -0500 + + xlib, xcb: Hand off EXTEND_PAD/EXTEND_REFLECT to Render + + Most drivers and the X server used to have incorrect RepeatPad/RepeatReflect + implementations, forcing cairo to fall back to client-side software rendering, + which is painfully slow due to pixmaps being transfered over the wire. These + issues are mostly fixed in the drivers (with the exception of radeonhd, whose + developers didn't respond) and the RepeatPad software fallback is implemented + correctly as of pixman-0.15.0, so this patch will hand off composite operations + with EXTEND_PAD/EXTEND_REFLECT source patterns to XRender. + + There is no way to detect whether the X server or the drivers use a + broken Render implementation, we make a guess based on the server + version: It's probably safe to assume that 1.7 X servers will use + fixed drivers and a recent enough version of pixman. + + AUTHORS | 1 + + src/cairo-xcb-surface.c | 15 +++++++++++++-- + src/cairo-xlib-display.c | 15 +++++++++++---- + src/cairo-xlib-private.h | 1 + + src/cairo-xlib-surface-private.h | 1 + + src/cairo-xlib-surface.c | 21 ++++++++++++++++++--- + 6 files changed, 45 insertions(+), 9 deletions(-) + +commit 60aefd0d634c531353c92b77b36424b142efeb93 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jun 5 07:30:13 2009 +0100 + + [configure] Bump pixman dependency. + + Reflect was only fixed in the 0.15 series, so require at least that + version of pixman so we can that advantage of that and drop our + workaround. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9d7a7e76b8bccc2517950976bb8557cd7b955a11 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 4 22:19:31 2009 +0100 + + [scaled-font] Close race from 16d128 + + Whilst waiting for the fontmap lock on destruction another thread may not + only have resurrected the font but also destroyed it acquired the lock + first and inserted into the holdovers before the first thread resumes. So + check that the font is not already in the holdovers array before + inserting. + + src/cairo-scaled-font-private.h | 6 +++--- + src/cairo-scaled-font.c | 33 +++++++++++++++++++++++---------- + 2 files changed, 26 insertions(+), 13 deletions(-) + +commit f4d9a4482fa1bfa37783ca139e3716c8d8649f32 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 4 14:13:06 2009 +0100 + + [pattern] Generalise the freed pattern pool + + Also cache recently freed surface and gradient patterns. With thanks to + Jonathan Morton for the inspiration and initial pointer pool code for + pixman. + + src/cairo-atomic-private.h | 1 + + src/cairo-mutex-list-private.h | 1 - + src/cairo-pattern.c | 170 ++++++++++++++++++++++++++-------------- + 3 files changed, 112 insertions(+), 60 deletions(-) + +commit 132f44dce1884c9beed8c5e6588140ee8fa9cfbe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 4 14:12:20 2009 +0100 + + valgrindify init/fini routines + + Annotate object init/fini routines to detect use-after-free for + on-stack/embedded objects. + + src/cairo-debug.c | 2 - + src/cairo-freelist.c | 7 ------ + src/cairo-gstate.c | 7 ++++++ + src/cairo-path-fixed.c | 10 ++------ + src/cairo-pattern.c | 49 +++++++++++++++++++++++++++++++++++++++++++++- + src/cairo-pen.c | 8 +++++- + src/cairo-polygon.c | 4 +++ + src/cairo-region.c | 5 ++++ + src/cairo-stroke-style.c | 6 +++++ + src/cairo-traps.c | 4 +++ + src/cairo.c | 1 + + src/cairoint.h | 4 +++ + 12 files changed, 88 insertions(+), 19 deletions(-) + +commit e89828c5331579d0d4019b6339df09ba1e2aa32e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 21:52:02 2009 +0100 + + [freelist] valgrindify freed blocks + + Mark freed blocks as unaccessible upon free() and then as undefined + on alloc(). + + src/cairo-freelist.c | 26 ++++++++++++++++++++++---- + 1 files changed, 22 insertions(+), 4 deletions(-) + +commit 4e11d56f8e5f409ea2476315c9d67116b213b738 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 4 11:16:48 2009 +0100 + + [perf] Update trace summary after each iteration + + Running the macro-benchmarks takes so long, feedback is important. + + perf/cairo-perf-trace.c | 29 ++++++++++++++++++++++++++++- + perf/cairo-perf.h | 1 + + 2 files changed, 29 insertions(+), 1 deletions(-) + +commit 5c2e73e74cb9aef92fdd90a91df44b417a036ebd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jun 4 10:03:45 2009 +0100 + + [perf] Enable traces to be interrupted + + Waiting for a long running benchmark can be very annoying, especially if + you just want a rough-and-ready result. So hook into SIGINT and stop the + current benchmark (after the end of the iteration) on the first ^C. A + second ^C within the same iteration will kill the program as before. + + perf/cairo-perf-trace.c | 20 +++++++++++++++++++- + 1 files changed, 19 insertions(+), 1 deletions(-) + +commit 2eaced24475622e73fbf6e3307ab46e3fe37eaef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 21:49:17 2009 +0100 + + [perf] Reconstruct interpreter for each run + + Destroy the interpreter after each run of a trace so that we collect any + left-over garbage. + + perf/cairo-perf-trace.c | 21 ++++++++++----------- + 1 files changed, 10 insertions(+), 11 deletions(-) + +commit 1b92ea250fdaef9add1a68bb8565847e6d56b023 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 20:28:49 2009 +0100 + + [ft] Don't call FT_Done_Face() on a face we do not own + + _font_map_release_face_lock_held() was being called unconditionally during + _cairo_ft_font_reset_static_data(). This presents two problems. The first + is that we call FT_Done_Face() on an object not owned by cairo, and the + second is that the bookkeeping is then incorrect which will trigger an + assert later. + + src/cairo-ft-font.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 8e5295979fe087fadeff0f56c036f9d002086996 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 20:17:59 2009 +0100 + + [pattern] Typo in document + + Remove extraneous markup from program-listing. + + https://bugs.freedesktop.org/show_bug.cgi?id=20441 + + src/cairo-pattern.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit fa5d6c7afdb9b742ad653c65e8804e84f2964599 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 19:29:19 2009 +0100 + + [trace] Add a --profile mode + + To save typing when creating macro-benchmarks --profile disables + mark-dirty and caller-info and compresses the trace using LZMA. Not for + computers short on memory! + + perf/README | 11 +++++++++-- + util/cairo-trace/cairo-trace.in | 18 ++++++++++++++++++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +commit 9451f0b983665d13ad777bc8fd88507fb7a317b4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 13:26:52 2009 +0100 + + [perf] Drop ticks from trace benchmarks + + Don't report the tick values for the macro-benchmarks as these are so + large as to be meaningless. + + perf/cairo-perf-trace.c | 37 ++++++++++++++++++++----------------- + 1 files changed, 20 insertions(+), 17 deletions(-) + +commit c988dc3719e345f6e1db6b0d656077a6b253b26d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 10:51:23 2009 +0100 + + [cairo] Doc typo. + + Fix conflicting sentence as pointed out by + https://bugs.freedesktop.org/show_bug.cgi?id=20183 + + src/cairo.c | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit 35d0dd00c9f21cc4fd392d4627756f8d5b53a11b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 10:49:16 2009 +0100 + + [image] Doc typo. + + Correct parameter reference as pointed out by + https://bugs.freedesktop.org/show_bug.cgi?id=20182 + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 58459ac6435a2889b90580ddf00e69107361f431 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 10:45:51 2009 +0100 + + [font-options] Doc typo + + Remove duplicate 'with' as pointed out by + https://bugs.freedesktop.org/show_bug.cgi?id=20180 + + src/cairo-font-options.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8d39dee8e2aea2200fec460e8540838ec29cae5f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 10:40:38 2009 +0100 + + [cairo] Update documentation for bug 20154 + + Several typographical errors were pointed out in + https://bugs.freedesktop.org/show_bug.cgi?id=20154 + + src/cairo.c | 17 ++++++++--------- + 1 files changed, 8 insertions(+), 9 deletions(-) + +commit 73469e693c02e6a99a32f12ac333737b47408e5e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 09:51:52 2009 +0100 + + [cairo] Tweak error strings. + + Rewrite a few error strings so that they more closer match the + documentation. Where they differ, I believe I have chosen the more + informative combination of the two texts. + + src/cairo-misc.c | 12 ++++++------ + src/cairo.h | 4 ++-- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit ab86662ab499e1f29c0f8c4248771e730c281e3f +Author: Andrew Lavin <aj.lavin@gmail.com> +Date: Fri May 22 16:36:40 2009 -0400 + + [test] Compile fix for invalid-matrix + + Fixed test compile error on OS X that caused fenv.h not to be included. + + test/invalid-matrix.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit eec547648439884a464eef832067a363cf1547e2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jun 3 08:57:15 2009 +0100 + + [perf] s/git/anongit/ + + Third time lucky? + + perf/cairo-perf-trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ce7e6339428703069f798dffcf23ec3e98cb554f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 21:54:44 2009 +0100 + + [perf] Warn if no traces were found + + perf/cairo-perf-trace.c | 28 ++++++++++++++++++++-------- + 1 files changed, 20 insertions(+), 8 deletions(-) + +commit f0366f0f3263397181699bf6bf2ed3968ea66403 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 21:48:26 2009 +0100 + + [perf] Update to point to new toplevel cairo-traces repo + + perf/cairo-perf-trace.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit c9cd2f9ca101c25d04f52578d54be36ae646049e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 18:47:07 2009 +0100 + + [cairo] PLT symbols for cairo_set_source_rgb + + Added a private use in user-font, but forgot to add a hidden symbol. + + src/cairo.c | 1 + + src/cairoint.h | 1 + + 2 files changed, 2 insertions(+), 0 deletions(-) + +commit 21550a753059b4f880f03ea96148befaa34a6426 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 18:08:45 2009 +0100 + + [user-font] Set the initial colour to white + + An issue occured when using subpixel antialiasing with user-fonts and + XRender - the glyphs were transparent, as demonstrated by the font-view + example. + + The problem lies in that enabling subpixel antialiasing triggers use of an + ARGB32 image surface for rendering the glyph, but the default colour is + black (so the only information is in the alpha-channel). Given an ARGB32 + glyph XRender treats it as a per-channel mask, but since the R,G,B + channels were uniformly zero, the glyph is rendered as transparent. + + Fix this by setting the initial colour to white before rendering the image + surface for a user-font glyph, which generates the appropiate gray-level + mask by default. + + src/cairo-user-font.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit b5799e073e4e404aea277b7640eeee2120318823 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 18:07:31 2009 +0100 + + [xlib] Use bswap_32 + + Byteswap the ARGB32 glyphs using bswap_32 instead of open-coding. + + src/cairo-xlib-surface.c | 30 +++++++++++------------------- + 1 files changed, 11 insertions(+), 19 deletions(-) + +commit 56e9765f82a64940b36a64688267fbe5d1c8919e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 14:25:04 2009 +0000 + + [util] Add font-view + + A C variant of Behdad's python example font viewer. + + util/Makefile.am | 5 ++ + util/font-view.c | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 189 insertions(+), 0 deletions(-) + +commit d331dda48017667c15f95bf7d510bce2f38111de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 15:41:19 2009 +0100 + + [perf] Missing ')' in output + + perf/cairo-perf-compare-backends.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c9ddaf8e7f0006f308aab0b87cf0425b2690d914 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Sep 7 13:09:09 2008 +0930 + + PDF: Don't embed the same pattern more than once + + The PDF surface now keeps track of all the patterns it is embedding in + a hash table keyed by the unique_id returned by the + _cairo_surface_get_unique_id(). + + src/cairo-pdf-surface-private.h | 13 +++- + src/cairo-pdf-surface.c | 134 ++++++++++++++++++++++++++++++--------- + 2 files changed, 115 insertions(+), 32 deletions(-) + +commit f7613eeecea1218d353a183078fb77bc5cf4e72e +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Tue Nov 25 20:15:15 2008 +0100 + + Add more surface snapshots providers + + This patch adds more implementation of the snapshot method. For + surface types where acquire_source_image is already making a copy + of the bits, doing another one as is the case for the fallback + implementation is a waste. + + src/cairo-glitz-surface.c | 16 +++++++++++++++- + src/cairo-quartz-surface.c | 19 ++++++++++++++++++- + src/cairo-xcb-surface.c | 17 ++++++++++++++++- + src/cairo-xlib-surface.c | 20 +++++++++++++++++++- + 4 files changed, 68 insertions(+), 4 deletions(-) + +commit cffb398f5a484000be458d04ef8f8bce3f6c7e3d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 21:07:07 2009 +0100 + + Add a generic cow-snapshotting framework + + Provide a mechanism for backends to attach and remove snapshots. This can + be used by backends to provide a cache for _cairo_surface_clone_similar(), + or by the meta-surfaces to only emit a single pattern for each unique + snapshot. + + In order to prevent stale data being returned upon a snapshot operation, + if the surface is modified (via the 5 high level operations, and on + notification of external modification) we break the association with any + current snapshot of the surface and thus preserve the current data for + their use. + + src/cairo-meta-surface.c | 1 - + src/cairo-surface-fallback.c | 2 +- + src/cairo-surface-private.h | 7 +- + src/cairo-surface.c | 272 ++++++++++++++++++++++++++++++++---------- + src/cairoint.h | 12 ++ + test/mask.c | 12 ++- + test/trap-clip.c | 12 ++- + 7 files changed, 249 insertions(+), 69 deletions(-) + +commit 7ed050fd435f17d25c7b757b02cfe200f8779fc2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 13:08:25 2009 +0100 + + [perf] Benchmark traces + + Add a variant of cairo-perf that measures the time to replay traces. + + boilerplate/cairo-boilerplate-system.c | 15 + + boilerplate/cairo-boilerplate-system.h | 4 + + perf/.gitignore | 1 + + perf/Makefile.am | 17 + + perf/README | 31 ++ + perf/cairo-perf-compare-backends.c | 10 +- + perf/cairo-perf-trace.c | 530 ++++++++++++++++++++++++++++++++ + 7 files changed, 605 insertions(+), 3 deletions(-) + +commit 403f780b292762aa45056c2fb5a48bb806521173 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 09:16:16 2009 +0100 + + [perf] Add a verbose flag for summary output with raw + + Use 'cairo-perf -v -r' to have both the summary output along with the raw + values. This gives a progress report whilst benchmarking, very reassuring + with long running tests. + + perf/cairo-perf.c | 82 +++++++++++++++++++++++++++++++++------------------- + perf/cairo-perf.h | 3 ++ + 2 files changed, 55 insertions(+), 30 deletions(-) + +commit 70fd2bbce38fca65db6725c632ee591352dfe42c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jun 2 09:00:21 2009 +0100 + + [perf] Exclude similar testing by default + + There are synchronisation issues with similar surfaces (as only the + original target surface is synced) which interferes with making + performance comparisons. (There still maybe some value should you be aware + of the limitations...) + + perf/cairo-perf.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit bc49cb377c70c4c6926ca52e34094e99a4591f14 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 30 12:28:23 2009 +0100 + + [perf] Benchmark mixing different masks and sources + + perf/Makefile.am | 1 + + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/mask.c | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 293 insertions(+), 0 deletions(-) + +commit 4aca84ddb22bc178cbc9b132b9ce06af3f4b300b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 28 18:05:26 2009 +0100 + + [perf] Add a pure glyphs performance metric + + Use the new API Behdad exposed in 1.8 to precompute a glyph string using + Cairo and then benchmark cairo_show_glyphs(). This is then equivalent to + the text benchmark but without the extra step of converting to glyphs on + every call to cairo_show_text() i.e. it shows the underlying glyph + rendering performance. + + perf/Makefile.am | 1 + + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/glyphs.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 100 insertions(+), 0 deletions(-) + +commit 55f4e0e4e8c7df59bfc9e6ffea8daa065276e42f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 30 16:50:17 2009 +0100 + + [perf] Change seperators from '-' to '.' + + This allows the perf tests to use '-' in the name which is easier to read + and differentiates with using '_' to separate source and operators. + + perf/cairo-perf-compare-backends.c | 22 ++++++++++++---------- + perf/cairo-perf-cover.c | 32 ++++++++++++++++---------------- + perf/cairo-perf-report.c | 16 +++++++++++++--- + perf/cairo-perf.c | 8 ++++---- + perf/mosaic.c | 8 ++++---- + perf/pattern_create_radial.c | 4 ++-- + perf/pythagoras-tree.c | 2 +- + perf/subimage_copy.c | 4 ++-- + perf/unaligned-clip.c | 2 +- + perf/world-map.c | 4 ++-- + perf/zrusin.c | 4 ++-- + 11 files changed, 59 insertions(+), 47 deletions(-) + +commit b7c03d4e400245fc2b2d748fe808a9724e61f22f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 16:31:51 2009 +0100 + + [ps] Trivial warning fix. + + src/cairo-ps-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 99482b17a50a8ae52b7627bf624e358ed3623540 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 18:34:54 2009 +0100 + + [script] Improve caching of glyph advance + + The glyph advance cache was only enabled for glyph indices < 256, + causing a large number of misses for non-ASCII text. Improve this by + simply applying the modulus of the index to select the cache slot - which + may cause some glyph advances to be overwritten and re-queried, but + improves the hit rate. + + util/cairo-script/cairo-script-operators.c | 39 ++++++++++------------------ + 1 files changed, 14 insertions(+), 25 deletions(-) + +commit 51193f1610c0f6893768e43e90a3395ec96c28fb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 28 14:16:58 2009 +0100 + + [pattern] Pass flags to _cairo_pattern_acquire_surface() + + Allow the caller to choose whether or not various conversions take place. + The first flag is used to disable the expansion of reflected patterns into a + repeating surface. + + src/cairo-directfb-surface.c | 1 + + src/cairo-glitz-surface.c | 1 + + src/cairo-image-surface.c | 3 +++ + src/cairo-pattern.c | 13 +++++++++++-- + src/cairo-xcb-surface.c | 4 ++++ + src/cairo-xlib-surface.c | 5 +++++ + src/cairoint.h | 6 ++++++ + 7 files changed, 31 insertions(+), 2 deletions(-) + +commit 4ec451a2fa4050a60a81d01473d23ff2973f47e6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 17:35:54 2009 +0100 + + [scaled-font] Cache repeated glyphs during probing device_extents + + Maintain a local on-stack cache of recently queried glyphs to avoid + relatively expensive hash table queries. + + src/cairo-scaled-font.c | 35 +++++++++++++++++++++++------------ + 1 files changed, 23 insertions(+), 12 deletions(-) + +commit ec22ae5b1d7e8ec364813f3b1c73f538018ecb57 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 11:11:06 2009 +0100 + + [scaled-font] Compare most recently used font directly + + Avoid the relatively expensive _cairo_scaled_font_init_key() operation + when checking against the most recently used font. + + src/cairo-scaled-font.c | 28 +++++++++++++++++++++++----- + 1 files changed, 23 insertions(+), 5 deletions(-) + +commit 16d128c15edf36a6e285fe4fbd6a828b64fd7f87 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 21:10:04 2009 +0100 + + [scaled-font] Lazily acquire the font_map_lock on font destruction. + + We can defer taking the cairo_scaled_font_map_lock until we drop the + last reference to the scaled font so long as we double check the reference + count after waiting for the lock and not making assumptions about + unreferenced fonts during construction. This is significant as even + acquiring the uncontended cairo_scaled_font_map_lock during + cairo_scaled_font_destroy() was showing up as a couple of percent on text + heavy profiles (e.g. gnome-terminal). + + src/cairo-scaled-font.c | 32 +++++++++++++++++--------------- + 1 files changed, 17 insertions(+), 15 deletions(-) + +commit dc083ab30a5b781e205354c525ee054982364abd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 14:54:34 2009 +0100 + + [cairo] Track the MRU scaled font + + When observing applications two patterns emerge. The first is due to + Pango, which wraps each glyph run within a context save/restore. This + causes the scaled font to be evicted after every run and reloaded on the + next. This is caught by the MRU slot on the cairo_scaled_font_map and + prevents a relatively costly traversal of the hash table and holdovers. + + The second pattern is by applications that directly manage the rendering + of their own glyphs. The prime example of this is gnome-terminal/vte. Here + the application frequently alternates between a few scaled fonts - which + requires a hash table retrieval every time. + + By introducing a MRU slot on the gstate we are able to directly recover + the scaled font around 90% of the time. + + Of 110,000 set-scaled-fonts: + 4,000 were setting the current font + 96,000 were setting to the previous font + 2,500 were recovered from the MRU on the cairo_scaled_font_map + 7,500 needed a hash retrieval + which compares to ~106,000 hash lookups without the additional MRU slot on + the gstate. + + This translates to an elapsed time saving of ~5% when replaying a + gnome-terminal trace using the drm backend. + + src/cairo-gstate-private.h | 1 + + src/cairo-gstate.c | 18 ++++++++++++++---- + src/cairo.c | 6 ++++++ + 3 files changed, 21 insertions(+), 4 deletions(-) + +commit fda89c56ff484a8cd33cd780e8b9396d3538284d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 15:59:16 2009 +0100 + + Markup a few more functions as const/pure + + src/cairoint.h | 59 +++++++++++++++++++++++++++++-------------------------- + 1 files changed, 31 insertions(+), 28 deletions(-) + +commit f59f44c140e5f60d336423e0585d2bb8a6c0ea01 +Merge: 2da78fd 4232719 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Jun 2 00:37:19 2009 -0700 + + Merge commit 'origin/master' into gl + + Felt like pulling the latest stuff, since I branched back in February. + + Conflicts: + build/configure.ac.features + src/cairo.h + util/cairo-script/csi-replay.c + +commit 2da78fd4666faa27d037ae3625ca83353a6e7629 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 14:04:21 2009 -0700 + + [gl] Drop use of packed datatypes where it's disallowed. + + I had naively assumed that GL image specification let you do useful things + and describe the most common datatypes in graphics, since we do things that + way inside of the DRI drivers. Silly me. GL_BGR and GL_RGB can't do + GL_UNSIGNED_INT_8_8_8_8{,_REV}, so no specifying 24-depth 32-bpp data with + implicit alpha. GL_BGR can't even do r5g6b5! + + This fixes 20 regressions in the test suite. + + src/cairo-gl-surface.c | 25 +++++++++++++------------ + 1 files changed, 13 insertions(+), 12 deletions(-) + +commit 69a150b7d8115babf2c60d7c5f7ca340162dc098 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 13:36:32 2009 -0700 + + [gl] Initialize has_alpha in the image surface composite fastpath. + + Fixes bilevel-image, set-source, and zero-alpha. + + src/cairo-gl-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 7ee0fee900bf30a7ca0497ab64199c9013f81cdd +Merge: 882f1d5 d3a478b +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 10:45:36 2009 -0700 + + Merge branch 'gl' into gl-span-renderer + + Conflicts: + src/cairo-gl-surface.c + +commit d3a478b6c0dca3884a68c5014185cad0a166801c +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 10:19:24 2009 -0700 + + [gl] Fix check-plt.sh for the GL surface. + + src/cairo-gl-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit 1f7c393a6d63282a632a62264b99e67e26ecf38e +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 10:10:00 2009 -0700 + + [gl] Fix check-doc-syntax.sh for GL surface. + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 19bc0f2f1d75b1514b22d0bb737bad67ff8d1ee6 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Jun 1 10:09:16 2009 -0700 + + [gl] Fix check-def.sh for GL surface. + + src/cairo-gl-surface.c | 2 +- + src/cairo-gl.h | 6 ------ + 2 files changed, 1 insertions(+), 7 deletions(-) + +commit e05097c604c607d27b341cd33426001bd2d1f690 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 27 16:45:20 2009 +0100 + + [surface] Assign a unique id to the surface. + + Allocate an ever-increasing, non-zero, unique identifier to each surface. + True for the first 4-billion... + + src/cairo-pattern.c | 11 ++++++++--- + src/cairo-surface-private.h | 2 ++ + src/cairo-surface.c | 25 +++++++++++++++++++++++++ + 3 files changed, 35 insertions(+), 3 deletions(-) + +commit 45835f623f5ddda6e3258361b9d6ab27860a9198 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 12:46:46 2009 +0100 + + [cache] Expose init/fini methods so that caches can be embedded. + + The structure is already exposed, so just expose the + constructors/destructors in order to enable caches to be embedded and + remove a superfluous malloc. + + src/cairo-cache-private.h | 27 +++++++++--- + src/cairo-cache.c | 110 +++++++++++++++----------------------------- + src/cairo-scaled-font.c | 35 +++++++------- + src/cairo-types-private.h | 14 ------ + 4 files changed, 77 insertions(+), 109 deletions(-) + +commit c3aac9cf49362b726a54a33a46bd8511a10f644f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 10:37:30 2009 +0100 + + [image] Eliminate trapezoid array allocation + + By simply iterating over the array cairo_trapezoid_t, converting each one + separately to a pixman_trapezoid_t and rasterizing each one individually + we can avoid the common heap allocation. pixman performs exactly the same + iteration internally so there is no efficiency loss. + + src/cairo-image-surface.c | 92 ++++++++++++++++++++++----------------------- + 1 files changed, 45 insertions(+), 47 deletions(-) + +commit 7b2bc441387abcf3967587f571dc5741d0a53938 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 10:41:53 2009 +0100 + + [surface-fallback] Tidy pattern handling. + + Make the treatment of replacing the NULL source pattern with WHITE + consistent. As it is a solid pattern, we can skip _cairo_pattern_fini() + and so make the code more readable, and consistent along the error paths. + + src/cairo-surface-fallback.c | 83 +++++++++++++++++------------------------- + 1 files changed, 33 insertions(+), 50 deletions(-) + +commit e83e113eae9e7cb3e09719bfc0ad68450faf3ecd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 23:25:38 2009 +0100 + + [surface] Speed up cairo_surface_get_mime_data(). + + The number of mime-types attached to a surface is usually small, + typically zero. Therefore it is quicker to do a strcmp() against + each key in the private mime-data array than it is to intern the + string (i.e. compute a hash, search the hash table, and do a final + strcmp). + + src/cairo-array.c | 8 -------- + src/cairo-surface.c | 33 ++++++++++++++++++--------------- + src/cairoint.h | 6 ++++++ + 3 files changed, 24 insertions(+), 23 deletions(-) + +commit 247e76b923d54f639e2ca50c8da945c15b691158 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 08:53:45 2009 +0100 + + [script] Speed up floating-point scanner + + Hard-code frequent exponents to reduce number of calls to pow(). + + util/cairo-script/cairo-script-scanner.c | 45 ++++++++++++++++++++--------- + 1 files changed, 31 insertions(+), 14 deletions(-) + +commit c5e85835b29c7654e1c28a90b2e587afba7b6f0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 26 15:52:30 2009 +0100 + + [debug] Relax ASSERT_NOT_REACHED + + Need to actually handle random pixman image formats... + For the time being, ignore them. + + src/cairo-debug.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4232719af968ed05636fe34f2ffe2520dc02d737 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat May 30 23:03:55 2009 -0400 + + [ft] Fix vertical advance metrics of bitmap fonts (#21985) + + src/cairo-ft-font.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 4314cae874dec2747df6be88859d7b6174eece31 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed May 27 17:56:05 2009 +0930 + + Fix typo in comment + + src/cairo-truetype-subset.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 7dbc2fe80a4fe0dcee4a293e47ab6edcefc24e18 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 20:36:34 2009 +0100 + + [script] Simplify _dictionary_name_equal + + Just a simple return TRUE since all necessary checking is performed by + _csi_hash_table_lookup(). + + util/cairo-script/cairo-script-objects.c | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +commit 0b5e92e66be94ce7cc9c31e911f23c4cb7ec77af +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 19:56:57 2009 +0100 + + [script] Check hash value between comparing keys + + util/cairo-script/cairo-script-hash.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit a364f71194aa2ea92071662f156c9b2a4d9211b4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 21:25:27 2009 +0100 + + [trace] Set output location using pwd + + Record the current working directory and pass that along to cairo-trace so + that the trace output is local to the user and not the application. This + is vital if the application is called via a script that changes directory. + + util/cairo-trace/cairo-trace.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a76e09ea656faa63fbfa159e8f52c9c9ec7d35c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 21:22:43 2009 +0100 + + [trace] Missing newlines in error messages. + + util/cairo-trace/trace.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b7f199fde25c960bf87302d5e868a7c2dffa4f5d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 12:40:35 2009 +0100 + + [pattern] Trim REPEAT source size when applicable. + + Some backends are quite constrained with surface sizes and so trigger + fallbacks when asked to clone large images. To avoid this we attempt + to trim ROIs (as these are often limited to the destination image, and + so can be accommodated by the hardware). This patch allows trimming + REPEAT sources both horizontally and vertically independently. + + src/cairo-pattern.c | 21 ++++++++++++++++++--- + 1 files changed, 18 insertions(+), 3 deletions(-) + +commit e4efc80b8e89b05afc22d74f984f4ec9012bc39b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 21:15:22 2009 +0100 + + [build] Make valgrind support user-configurable + + As the number of places where we add valgrind client requests grows, it + becomes imperative that we should be able to disable them with a simple + configure time option. + + build/configure.ac.analysis | 37 ++++++++++++++++++++++--------------- + 1 files changed, 22 insertions(+), 15 deletions(-) + +commit d840deb57b51236820dc8c320ecd7540973de873 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 22:11:22 2009 +0100 + + [in-fill] Fix typo in on-vertex test. + + Eeek! Comparing point->y against in_fill->x is a bad idea. + + src/cairo-path-in-fill.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit cfd484cd01a77b1f91e27daccfc5f240cf7c692d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon May 25 22:10:20 2009 +0100 + + [test] Change test semantics to match new in-fill definition + + The in-fill definition has changed to include queries on the edges and + vertices, so update the test case to match. + + test/in-fill-trapezoid.c | 77 ++++++++++++++++++++++++++++++++++------------ + 1 files changed, 57 insertions(+), 20 deletions(-) + +commit b71b019fe50a9188ddbecd1945606da8ba3bad53 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 27 16:32:21 2009 +0000 + + [in-fill] Treat on-edge queries as inside. + + Jeff Muizelaar noted that the treatment of edges differed with firefox's + canvas definition, which considers a point on any edge as inside. The + current implementation has a similar definition to that of flash, for + which the top and right edges are outside. Arguably, firefox has the more + intuitive definition here... + + src/cairo-path-in-fill.c | 21 ++++++++++++++++++++- + 1 files changed, 20 insertions(+), 1 deletions(-) + +commit efd0f0b2922d0801e4e0e8e75ddf9b9892a2f2e6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 20 18:49:28 2009 +0100 + + [xlib] Handle too-large images gracefully. + + Trigger a fallback to an image surface for massive patterns. + + src/cairo-xlib-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 3c6838532a62c294e7f18b13b0b7f8da9a1a1e1e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 20 18:46:35 2009 +0100 + + [surface] Early return if the backend cannot clone an image + + If the backend cannot create a similar surface to hold the image, then + report back the failure before embarking upon an infinite recursion. + The UNSUPPORTED return should percolate up through the call stack and + trigger a fallback. + + src/cairo-surface.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit bf2c7356d4c955fb770863874a0ea111e9ba02a4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 22 12:52:43 2009 +0100 + + [surface] Provide nil-surface for INVALID_SIZE + + So that we can faithfully report back failure if the user tries to create + a surface larger than the backend can support. + + src/cairo-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 6717f0d748000416172057d0aab2471377456e27 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 20 17:35:19 2009 +0100 + + [win32] Wrap win32-font usage with CAIRO_HAS_WIN32_FONT + + Bug 19251: --enable-win32=yes and --enable-win32-font=no causes + compilation failure + [https://bugs.freedesktop.org/show_bug.cgi?id=19251] + + Wrap use of the win32 font backend within win32-printing-surface within + CAIRO_HAS_WIN32_FONT ifdefs to prevent compilation failure if the user + explicitly disables the win32 font backend. + + src/cairo-win32-printing-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit c7d2b0de830f4c653fbb5016c4efdc5f0e5af0eb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed May 20 17:34:56 2009 +0100 + + [win32] Typo + + Correct function name in error string. + + src/cairo-win32-printing-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 87b764908a38cbb4159ac76d8b7d1d08a24b838e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 19 15:53:55 2009 +0100 + + [gl] Add EGL target + + Split the GLX context from the GL surface to enable use of an alternative + EGL interface. + + boilerplate/Makefile.win32.features | 20 ++ + boilerplate/cairo-boilerplate-gl.c | 2 +- + build/Makefile.win32.features | 2 + + build/Makefile.win32.features-h | 6 + + build/configure.ac.features | 3 + + configure.ac | 30 +++- + src/Makefile.sources | 4 +- + src/Makefile.win32.features | 28 +++ + src/cairo-egl-context.c | 181 ++++++++++++++++++ + src/cairo-gl-private.h | 88 +++++++++ + src/cairo-gl-surface.c | 191 ++++++++----------- + src/cairo-gl.h | 41 +++- + src/cairo-glx-context.c | 136 +++++++++++++ + test/.gitignore | 2 + + test/Makefile.am | 10 + + test/egl-flowers.c | 358 +++++++++++++++++++++++++++++++++++ + test/glx-flowers.c | 256 +++++++++++++++++++++++++ + util/cairo-script/.gitignore | 2 + + util/cairo-script/Makefile.am | 15 ++ + util/cairo-script/csi-egl.c | 263 +++++++++++++++++++++++++ + util/cairo-script/csi-glx.c | 150 +++++++++++++++ + util/cairo-script/csi-replay.c | 61 ++++++ + 22 files changed, 1723 insertions(+), 126 deletions(-) + +commit 6e87e354e42d1a758a252533407e6e1829638544 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun May 17 18:14:28 2009 +0930 + + Correct the comment for the index_to_ucs4 font backend function + + src/cairoint.h | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 2a34992cccfd77c2acf30fe851311f16137ba32f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun May 17 18:12:39 2009 +0930 + + Ensure win32 font index_to_ucs4() sets ucs4 to -1 if lookup fails + + src/cairo-win32-font.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 4c8e5485a10478c19e8a6cb48595473f5bb8ee8a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun May 17 18:05:42 2009 +0930 + + Fix win32 build breakage + + that was caused by c25992479aca481d326f72665ebdcf0904273eac + + src/cairo-win32-private.h | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 31596cf2b298054bbd3e340ae77a3388eadc0d8b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 15 17:40:26 2009 +0100 + + [debug] Check image contents using memcheck. + + As an aide to tracking down the source of uninitialised reads, run + VALGRIND_CHECK_MEM_IS_DEFINED() over the contents of image surfaces at the + boundary between backends, e.g. upon setting a glyph image or acquiring + a source image. + + src/cairo-debug.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + src/cairo-ft-font.c | 2 ++ + src/cairo-pattern.c | 2 ++ + src/cairo-png.c | 2 ++ + src/cairo-scaled-font.c | 3 +++ + src/cairo-surface.c | 32 +++++++++++++++++++++++--------- + src/cairoint.h | 11 +++++++++++ + 7 files changed, 85 insertions(+), 9 deletions(-) + +commit 791a6fa399894e735d522781b15b7f18c3ecd4d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 15 16:57:49 2009 +0100 + + [memfault] Update macros to avoid namescape collision with memcheck + + Basing the macro names of the memfault skin lead to a namespace + collision with memcheck. After updating the headers, update cairo's usage + to match. + + src/cairo-malloc-private.h | 2 +- + test/cairo-test.c | 62 ++++++++++++++++++++++---------------------- + 2 files changed, 32 insertions(+), 32 deletions(-) + +commit c897f36a6b09f3591d858142e3236f256f0bd6a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 15 20:37:52 2009 +0100 + + [test] Stress the ft from-face cache + + Create a set of font faces using the same FT_Face to stress test the + handling of from-face fonts within the backend cache. + + test/ft-font-create-for-ft-face.c | 109 ++++++++++++++++++++++++++++++++++--- + 1 files changed, 102 insertions(+), 7 deletions(-) + +commit 477df1f5504a507d0c5960aa7e21375284a6f99c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 15 10:48:56 2009 +0100 + + [test] Clear expected floating point exceptions + + test/invalid-matrix deliberately feeds garbage into the API to test our + error detection. This causes FPE to be raised during the course of the + test - so they are deliberately disable for the duration. However, the + exceptions were not being cleared and so the FPE could be triggered on + the next floating point operation. This was being masked during make check, + by the fact that each test is run in its own forked process and was only + observed when multiple tests were run in foreground mode. + + build/configure.ac.system | 2 +- + test/invalid-matrix.c | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletions(-) + +commit f47a93ef30249b531e588335045d052c3dcc71bd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 9 09:55:49 2009 +0100 + + [test] Check text->path with user-fonts (twin) + + Check behaviour of user-fonts, twin in particular, when using the text as + a path. + + test/twin.c | 11 ++++++++++- + test/twin.ps.ref.png | Bin 1114 -> 2197 bytes + test/twin.ref.png | Bin 1492 -> 4038 bytes + test/twin.svg.ref.png | Bin 1487 -> 3027 bytes + 4 files changed, 10 insertions(+), 1 deletions(-) + +commit 669e7ae5c98812360bf20b798c20024ae2e9810b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 8 17:36:01 2009 +0100 + + [test] Relax APPROX_EQUALS condition + + The bounding box of the text is rounded to the nearest pixel boundaries, + so therefore the test must accept a similar level of imprecision. + + test/get-path-extents.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit fe7410c6cdc19bb366bf1e93481bf8287a14d52e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 9 19:01:06 2009 +0100 + + [test] Add a note to "Getting the elusive zero failures" + + The test suite depends upon many external factors and in order to achieve + a pass, your system must match that upon which the reference images were + generated. Add a note to read test/README in case of failures so that the + casual user is not unduly alarmed by cairo reportedly failing. + + test/cairo-test-runner.c | 12 ++++++++++++ + 1 files changed, 12 insertions(+), 0 deletions(-) + +commit 2f962799a77faef0e6ad62c79bd7eebc9b8c5a4b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 15 18:49:03 2009 +0100 + + [test] Fix typos that excluded backend test sources + + test/Makefile.am | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit c25992479aca481d326f72665ebdcf0904273eac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat May 9 10:10:14 2009 +0100 + + [xlib] Use minimal depth for similar clones. + + Damian Frank noted + [http://lists.cairographics.org/archives/cairo/2009-May/017095.html] + a performance problem with an older XServer with an + unaccelerated composite - similar problems will be seen with non-XRender + servers which will trigger extraneous fallbacks. The problem he found was + that painting an ARGB32 image onto an RGB24 destination window (using + SOURCE) was going via the RENDER protocol and not core. He was able to + demonstrate that this could be worked around by declaring the pixel data as + an RGB24 image. The issue is that the image is uploaded into a temporary + pixmap of matching depth (i.e. 32 bit for ARGB32 and 24 bit for RGB23 + data), however the core protocol can only blit between Drawables of + matching depth - so without the work-around the Drawables are mismatched + and we either need to use RENDER or fallback. + + This patch adds a content mask to _cairo_surface_clone_similar() to + provide the extra bit of information to the backends for when it is + possible for them to drop channels from the clone. This is used by the + xlib backend to only create a 24 bit source when blitting to a Window. + + src/cairo-clip.c | 1 + + src/cairo-directfb-surface.c | 2 + + src/cairo-glitz-surface.c | 3 ++ + src/cairo-image-surface.c | 4 +++ + src/cairo-pattern.c | 18 ++++++++++++-- + src/cairo-quartz-surface.c | 1 + + src/cairo-surface-fallback-private.h | 1 + + src/cairo-surface-fallback.c | 3 +- + src/cairo-surface.c | 7 +++++- + src/cairo-win32-surface.c | 3 +- + src/cairo-xcb-surface.c | 5 ++++ + src/cairo-xlib-surface.c | 42 +++++++++++++++++++++++++-------- + src/cairoint.h | 4 +++ + src/test-fallback-surface.c | 1 + + src/test-fallback16-surface.c | 2 + + test/surface-source.c | 1 + + 16 files changed, 82 insertions(+), 16 deletions(-) + +commit 0238fe2cafea2e1ed19bb222117bd73ee6898d4d +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Thu May 14 11:46:29 2009 +0100 + + [ft] Resolve mutual referencing problems with zombie faces + + Bug 21706 -- zombie ft_font_face / ft_unscaled_font mutual + referencing problems + [http://bugs.freedesktop.org/show_bug.cgi?id=21706] + + There can be more than one zombie font_face belonging to an unscaled_font, + but only the first is destroyed. This leaks the client's FT_Face + (and associated font data) as release of the FT_Face depends on release + of the font_face. + + (The reason why Firefox ends up with two different font_faces for one + unscaled_font is that load_flags for faces with artificial oblique have + FT_LOAD_NO_BITMAP set. + https://bugzilla.mozilla.org/show_bug.cgi?id=486974) + + Also it's possible for _cairo_ft_font_face_create to pull out a zombie + font_face from the unscaled_font, which would crash + _cairo_ft_font_face_scaled_font_create, as that expects non-null + font_face->unscaled (if !font-face->pattern). + + AUTHORS | 2 +- + src/cairo-ft-font.c | 38 ++++++++++++++++++++++++++++++-------- + 2 files changed, 31 insertions(+), 9 deletions(-) + +commit d6f6ec9082c86b9fd9e2389b9627f08a91c2cdd3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 8 16:43:43 2009 +0100 + + [ft] Restore the ability to lazily resolve patterns. + + I broke the ability for the ft font backend to resolve patterns whilst + fixing the font creation to propagate the error status from fontconfig + (be27e8). By adjusting the sequence of error checks we do not confuse + the absence of a match with a fatal error and thereby restoring the + lazy pattern resolution whilst ensuring error propagation. + + src/cairo-ft-font.c | 32 +++++++++++++++++--------------- + 1 files changed, 17 insertions(+), 15 deletions(-) + +commit a352fd46020e18f9d9f839f0c3f3a63c1d8c0ae1 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri May 15 15:34:05 2009 -0400 + + Only include <strings.h> for ffs() when we HAVE_FFS + + This fixes breakage caused by 3d3d10a31e04498ef91a288d89b3dec291bfc323 + + src/cairo-skiplist.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 882f1d5a60abfbf83c65fe00b31bb4c8e5c82f62 +Author: Eric Anholt <eric@anholt.net> +Date: Sun May 10 16:56:49 2009 -0700 + + [gl] Use spans directly as geometry instead of rasterizing to a temporary. + + I was hoping for a bigger win than this, but cairogears is now significantly + faster than it was with just traps. One potential problem is that adding + src texture coordinates blew up vertex size from 12 bytes to 20, and we're + emitting quite a few vertices. There's plenty of hope for the future, + though: With shaders we could remove the 2 new texcoords again by stuffing a + position to source coordinate transformation matrix in constants. Then + with EXT_geometry_shader4 plus EXT_gpu_shader4 we should be able to get the + 24 bytes for 2 vertices down to 16 or less. + + src/cairo-gl-surface.c | 316 ++++++++++++++++++++++++++---------------------- + 1 files changed, 171 insertions(+), 145 deletions(-) + +commit 7b4f2d5e6dd37232d4fa764b69065c7d96856dcc +Author: Eric Anholt <eric@anholt.net> +Date: Sun May 10 14:50:22 2009 -0700 + + [gl] Use Enable/DisableClientState for arrays for consistency. + + src/cairo-gl-surface.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 705ee3da1372e8533f25e0b4bde072e4bf76872b +Author: Eric Anholt <eric@anholt.net> +Date: Sat May 9 12:17:12 2009 -0700 + + [gl] Add HW spans implementation using VBOs and GL_LINES. + + This is a minor performance regression over software, but is the basis for + not rasterizing the geometry into a temporary mask, which should be a + significant win. + + src/cairo-gl-surface.c | 145 +++++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 124 insertions(+), 21 deletions(-) + +commit 934af24ccce9c06fc38ab7735d643d230fb3b8ad +Author: Eric Anholt <eric@anholt.net> +Date: Sat May 9 10:03:06 2009 -0700 + + [gl] Use the span renderer with an image surface temporary. + + This appears to be no performance difference in cairogears versus the traps + fallback before, but is a step towards handing the information off to the + hardware. + + src/cairo-gl-surface.c | 210 +++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 208 insertions(+), 2 deletions(-) + +commit 17b41fe7e3b8b493341be6384d816105aadf0cb6 +Author: Eric Anholt <eric@anholt.net> +Date: Sun May 10 10:17:27 2009 -0700 + + [gl] Use filtering of GL_NEAREST to hint to TexImage not to alloc for mipmaps. + + Gl defaults to NEAREST_MIPMAP_LINEAR on new texture objects. + This should save space or bandwidth with DRI drivers, as they'll use the + parameter as a hint, and then not have to either fix up later or waste + space for unused mipmap levels. + + src/cairo-gl-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit a438acd37c5aaedc7e7a05e6a9d8758315931b44 +Author: Eric Anholt <eric@anholt.net> +Date: Sat May 9 11:33:53 2009 -0700 + + [gl] Handle PIXMAN_b8g8r8a and PIXMAN_b8g8r8x8 in the image tex shortcut. + + src/cairo-gl-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 29768c2193b09d3bef54a178c8e3ba6f7e7cebd0 +Author: Eric Anholt <eric@anholt.net> +Date: Sat May 9 11:30:11 2009 -0700 + + [gl] Don't forget that we require ARB_texture_non_power_of_two currently. + + src/cairo-gl-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 088d2a6cc70b01f55d178d235542247180b3e5ee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 11:35:17 2009 +0100 + + [doc] Update identifiers + + doc/public/tmpl/cairo-status.sgml | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit d8fb6a03d3034cf776687bcc1f0625a8a9f2ae07 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:57:13 2009 +0100 + + [path] Define _BSD_SOURCE to enable hypot() + + hypot() is only declared for BSD/SVID/XOPEN/C99 sources. Choose BSD as + we've used that elsewhere. + + src/cairo-path-stroke.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit e38f85c5de51016b8858e755e2752816c9995ab2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:42:15 2009 +0100 + + [script] Pedantic violations + + Fixup a few trivial errors with -pedantic. + + util/cairo-script/cairo-script-operators.c | 2 +- + util/cairo-script/cairo-script-private.h | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 0c00556990a842e0ee0056134c6e196c2fb372b7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:11:12 2009 +0100 + + [script] Missing include for INT32_MAX + + Avoid depending upon stdint.h, or rather cut'n'pasting Cairo's portable + defines, by using INT_MAX and limits.h instead. + + util/cairo-script/cairo-script-file.c | 3 ++- + util/cairo-script/cairo-script-objects.c | 3 ++- + util/cairo-script/cairo-script-operators.c | 13 +++++++------ + util/cairo-script/cairo-script-scanner.c | 5 +++-- + util/cairo-script/cairo-script-stack.c | 7 ++++--- + 5 files changed, 18 insertions(+), 13 deletions(-) + +commit 3d3d10a31e04498ef91a288d89b3dec291bfc323 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:10:47 2009 +0100 + + [skiplist] Missing include for ffs() + + src/cairo-skiplist.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit e5752865ab0ebefec313ab9a6f90451ef2d7af95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:58:45 2009 +0100 + + [cairo] Protect typeof against -ansi + + s/typeof/__typeof__/ to allow the [gcc-specific] macro to continue to work + despite -ansi. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5f4f2ab01ab3fa6b07ac7521dfeaf90a787a5dee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:34:47 2009 +0100 + + [cairo] Remove stray semi-colon + + Pedantic finds another victim. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d86ad461cf7a9d857bd07a6b775c84acbf35647b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 14:16:05 2009 +0100 + + [cairo] Convert C99 comments to /* ... */ + + First victim of -pedantic... + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 695f648607dd5a78cf29dcc33ed19aa223d0416a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 11:16:10 2009 +0100 + + [cairo] Fix errors reported by check-doc + + Identity a few new instances of CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED in + comments with %. + + src/cairo.h | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 849bdee199b5ebba467603a69d30bb519c10bc75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 11:36:38 2009 +0100 + + [check] Quieten output during checking headers-standalone + + Remove the duplication of the compile line and enable shave to replace it + entirely with a "CHECK $header". This should make errors more obvious. + + build/shave.in | 3 +++ + src/Makefile.am.analysis | 2 +- + 2 files changed, 4 insertions(+), 1 deletions(-) + +commit 84fad4b11bc26cfd0847660e3309eb902d783713 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 11:31:22 2009 +0100 + + [build] Fix gtk-doc interoperation with shave + + Add --tag=CC to the libtool invocations. + + build/Makefile.am.gtk-doc | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit fd72c56af833a738ddc8f188cabe03d9f8b45475 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu May 7 11:27:43 2009 +0100 + + [build] Report status of gtk-doc in summary + + build/configure.ac.features | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 428fb58a4c96391f96f48026be49a4533cd12834 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Apr 28 15:03:53 2009 -0400 + + [user-font] Add CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED + + This is useful for language bindings to signal that a method is not + implemented. + + src/cairo-misc.c | 2 ++ + src/cairo-surface.c | 1 + + src/cairo-user-font.c | 14 +++++++++++--- + src/cairo.h | 23 ++++++++++++++--------- + 4 files changed, 28 insertions(+), 12 deletions(-) + +commit f9573d03dde2c38674d36b783044715ab5104b0a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Mar 17 19:48:12 2009 -0400 + + Err, make gtk-doc happy again + + doc/public/tmpl/cairo-status.sgml | 2 +- + src/cairo.h | 2 -- + 2 files changed, 1 insertions(+), 3 deletions(-) + +commit 30735f790aa3cef822f132932f43a4738cd8cd95 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 5 18:37:25 2009 +0100 + + [xlib] Use a similar content surface for cloning images + + Simply request a surface with a similar content to the source image when + uploading pixel data. Failing to do so prevents using a 16-bit (or + otherwise non-standard pixman image format) window as a source - in fact + it will trigger an infinite recursion. + + src/cairo-xlib-surface.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +commit 60e38d0530443aa9c78e74e47ba5574887ae220c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 5 17:05:39 2009 +0100 + + [surface] Convert FORMAT_INVALID during snapshots + + Currently the surface snapshotting attempts to clone the source using a + new surface of identical format. This will raise an error if the source is + an unusual xserver, for example one operating at 16bpp. The solution to + this is to create the surface using the content type rather than the + format (as elsewhere within the code base). However, we also wish to + preserve FORMAT_A1 (which is lost if we only choose the format based on + _cairo_format_from_content) as the various backends may be able to + trivially special case such bitmaps. + + src/cairo-surface-fallback.c | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit 31f5a2e94d669b9d2785de944d4aee584fd1d76e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 5 15:52:55 2009 +0100 + + [png] Coerce FORMAT_INVALID to a known image format + + It is possible for cairo_surface_write_to_png() to acquire a non-standard + image surface when, for example, we try to dump a low bit-depth XServer. + Handle this scenario by coercing the unknown image format to a standard + type via pixman. + + src/cairo-png.c | 44 ++++++++++++++++++++++++++++++-------------- + 1 files changed, 30 insertions(+), 14 deletions(-) + +commit c488b336449a1a7ca4d3f90785afeec9e21784c3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 5 13:59:07 2009 +0100 + + [test] Create a new fallback surface to exercise 16-bit paths. + + Add a variation of test-fallback-surface that forces the use of a 16-bit + pixman format code instead of the standard 32-bit types. This creates an + image surface akin to the fallbacks used with low bit-depth xservers. + + .../cairo-boilerplate-test-surfaces-private.h | 11 + + boilerplate/cairo-boilerplate-test-surfaces.c | 16 ++ + boilerplate/cairo-boilerplate.c | 18 ++ + src/Makefile.sources | 2 + + src/test-fallback16-surface.c | 234 ++++++++++++++++++++ + src/test-fallback16-surface.h | 52 +++++ + test/Makefile.am | 4 + + test/Makefile.sources | 3 + + test/test-fallback16-surface-source.c | 43 ++++ + test/test-fallback16-surface-source.ref.png | Bin 0 -> 268 bytes + 10 files changed, 383 insertions(+), 0 deletions(-) + +commit 1d609d672273da494fd596606b59ab1c0010ae6d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue May 5 17:11:55 2009 +0100 + + [image] Treat A1 image surfaces as BILEVEL_ALPHA + + Categorise the transparency of FORMAT_A1 image surfaces as BILEVEL_ALPHA. + + src/cairo-image-surface.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit aac132a76a2af3719088678295169f1962a555e6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 24 10:14:36 2009 +0100 + + [image] Make _cairo_image_analayze_transparency() more format agnostic + + Use the content in preference to the format to determine + CAIRO_IMAGE_IS_OPAQUE/CAIRO_IMAGE_HAS_ALPHA. + + src/cairo-image-surface.c | 17 +++++++---------- + 1 files changed, 7 insertions(+), 10 deletions(-) + +commit 4be6de9fc6192d59c8d61e8edafed941e868a756 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 24 10:03:20 2009 +0100 + + [image] Return FORMAT_INVALID for an error surface. + + The default error value should be CAIRO_FORMAT_INVALID [-1] not 0 (which + corresponds to CAIRO_FORMAT_ARGB32). + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6675cf558719f81afe2a4331bc6adb3cda637a26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri May 1 09:31:53 2009 +0100 + + [build] Add lcov-1.7 to known list + + build/configure.ac.analysis | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 526fcdb7e6cc8b522508762b1a68a5585fddf823 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Apr 20 10:56:06 2009 +0100 + + [build] Enable shave support + + shave transforms the messy output of autotools into a pretty (quiet!) + Kbuild-like one. + + Lets see how controversial a simple change can be... + + build/.gitignore | 2 + + build/aclocal.dolt.m4 | 1 + + build/aclocal.shave.m4 | 77 ++++++++++++++++++++++++++++++++++++++++++++++ + build/shave-libtool.in | 69 +++++++++++++++++++++++++++++++++++++++++ + build/shave.in | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 4 ++ + 6 files changed, 232 insertions(+), 0 deletions(-) + +commit 1ae2ddc1dd4c90d50b8c57c4de677f8ab96b1fa2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 17:19:12 2009 +0100 + + [memfault] Manually inject faults when using stack allocations + + Ensure that no assumptions are made that a small allocation will succeed + by manually injecting faults when we may be simply allocating from an + embedded memory pool. + + The main advantage in manual fault injection is improved code coverage - + from within the test suite most allocations are handled by the embedded + memory pools. + + src/cairo-array.c | 3 +++ + src/cairo-bentley-ottmann.c | 3 +++ + src/cairo-gstate.c | 3 +++ + src/cairo-hull.c | 3 +++ + src/cairo-image-surface.c | 6 ++++++ + src/cairo-malloc-private.h | 7 +++++++ + src/cairo-misc.c | 3 +++ + src/cairo-path-stroke.c | 2 ++ + src/cairo-pattern.c | 9 +++++++++ + src/cairo-pen.c | 9 +++++++++ + src/cairo-polygon.c | 5 +++++ + src/cairo-scaled-font.c | 3 +++ + src/cairo-stroke-style.c | 3 +++ + src/cairo-traps.c | 5 +++++ + 14 files changed, 64 insertions(+), 0 deletions(-) + +commit 817589e1967ebdd5e5bda1781eb76010fd8c37dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 13:01:52 2009 +0100 + + [test] Call FcInit() manually. + + Pre-initialise fontconfig whilst memfault is disabled to avoid a lot of + expensive, redundant testing of FcInit() throughout the test suite. + + test/cairo-test.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit be27e844c83c0f5cf25dee1c62768dbf70897a06 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 17:13:52 2009 +0100 + + [ft] Propagate status from font creation + + Return the true error status whel + _cairo_ft_unscaled_font_create_internal(). This ensures that the original + error is not masked and we are able to report the error during fontconfig + pattern resolution. + + src/cairo-ft-font.c | 90 +++++++++++++++++++++++++++++---------------------- + 1 files changed, 51 insertions(+), 39 deletions(-) + +commit d46c56f18c8a93d3d50be9333292c7c9b0ac0a78 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 13:00:59 2009 +0100 + + [ft] Check for pattern duplication failure. + + Check the return of FcPatternDuplicate() for failure, and propagate the + error. + + src/cairo-ft-font.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 50302f156dfba4dcb3639843d7eda819f2c6797c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 12:59:36 2009 +0100 + + [ft] Check (correctly!) for pattern duplication failure. + + Check the return from FcPatternDuplicate() for allocation failure (and not + the original pattern)! + + src/cairo-ft-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8bf109bd2a9c9bf755671185733def898a4f96f2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Apr 16 17:17:06 2009 +0100 + + [pattern] Silence compiler with impossible case. + + Assert that the pattern is one of the four known types, and return an + error so that the compiler knows that the local variable can not be used + uninitialised. + + src/cairo-pattern.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 5a76c233bffda65140c6ada9b5f2ed7d3bcc999e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 14 11:02:40 2009 +0100 + + [type3] Propagate error from font creation. + + Perform an error check after creating a scaled-font to prevent operations + on a nil-object. + + src/cairo-type3-glyph-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit d46bd67c8b3f63d6286845e814f8f1e040f89737 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 10 14:55:24 2009 +0100 + + [type3] Add status checks. + + Propagate error from the stream when creating the surface and add status + guards before writing to the potential nil object. + + src/cairo-type3-glyph-surface.c | 26 +++++++++++++++++++++++--- + 1 files changed, 23 insertions(+), 3 deletions(-) + +commit a6ffb69a54f15659dac7c6b2e1c98bd7893ccdf1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 3 17:28:05 2009 +0100 + + [type3] Check error status before emit_image(). + + Be careful not to pass an error object down to emit_image() hook, + propagate the error instead. This relieves the burden of the error check + from the callee -- which was causing an assertion failure in the ps + backend. + + src/cairo-type3-glyph-surface.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 21d1138da9bcf9c006e0cf3f3d1d50e1c7cec1de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 10 14:53:55 2009 +0100 + + [scaled-font-subsets] Check for malloc failure. + + Check that the utf8 string is successfully allocated before writing to it, + otherwise propagate the error status back to the callers. + + src/cairo-scaled-font-subsets.c | 63 +++++++++++++++++++++----------------- + 1 files changed, 35 insertions(+), 28 deletions(-) + +commit 0f0e2d738437176e72317b37ef66fbc56c60ba93 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 10 14:52:48 2009 +0100 + + [pdf] Propagate failure from type3 glyph surface creation. + + Add an early check that we successfully created the glyph surface. + + src/cairo-pdf-surface.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) + +commit 1496c5cf51a2304dfd4e9d359a0645ff44fadd3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 10 14:50:26 2009 +0100 + + [analysis] Use _cairo_region_init() + + Avoid secondary allocations of the thin region wrappers during surface + creation by embedding them into the parent structure. This has the + satisfactory side-effect of not requiring status checks which current code + lacks. + + src/cairo-analysis-surface.c | 26 +++++++++++++------------- + 1 files changed, 13 insertions(+), 13 deletions(-) + +commit ad83765a1441cb369c3e7f3de77c243297406c7a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Apr 3 09:23:58 2009 +0100 + + [xlib] Allocate bounded region on stack. + + Eliminate the extremely short-lived and oft unnecessary heap allocation + of the region by first checking to see whether the clip exceeds the + surface bounds and only then intersect the clip with a local + stack-allocated region. + + src/cairo-region.c | 23 ++++++++++++++++++ + src/cairo-xlib-surface.c | 58 ++++++++++++++++++++++++++++++---------------- + src/cairoint.h | 10 ++++++++ + 3 files changed, 71 insertions(+), 20 deletions(-) + +commit 75b06b8bdb5efaf030e063c1f66583d8fde347dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 1 11:43:16 2009 +0100 + + [pattern] Do not modify outparam on error path. + + The pdf backend was crashing as a failed pattern copy stored an invalid + pointer with the resource group. + + src/cairo-pattern.c | 21 +++++++++++---------- + 1 files changed, 11 insertions(+), 10 deletions(-) + +commit 82cccb26723697492504f395fed33afba28d84ba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Apr 14 11:01:39 2009 +0100 + + [test] Handle memfaults during surface-finish-twice + + Check and report memory allocation failures. + + test/surface-finish-twice.c | 17 +++++++++++------ + 1 files changed, 11 insertions(+), 6 deletions(-) + +commit f12d52bfcae0792729b33a1fd1b2d23bd3fc7cf3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Apr 4 19:02:15 2009 +0100 + + [test] Use xmalloc() to evade memfault. + + Do not use the simple malloc() as memfault will inject allocation failures + (unlike xmalloc() for which faults are excluded) - as this is unnecessary + inside the test harness and thus does not exercise any cairo code paths. + + test/show-glyphs-many.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ca501d99bbec432252cbb134d863801d4a792a44 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Apr 1 11:41:59 2009 +0100 + + [test] Disable signal handling under valgrind + + Capturing and handling the signals prevents valgrind from providing + backtraces for fatal signals -- which is often more useful. + + test/cairo-test.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f8539726368141f8b42c7817cfd59b4abfce33f3 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Apr 7 14:50:25 2009 -0400 + + [win32] Fix building with libpng and zlib + + Include zlib and libpng dependencies using something like '$(cairo_dir)/../zlib/zdll.lib' + instead of just 'zdll.lib'. Also, do similarly for the headers. + + build/Makefile.win32.common | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit 1798fc6607a89811929d1f21cc71c751438f5699 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Apr 5 11:17:02 2009 +0930 + + Fix the TrueType subsetting fix in 9b496af5c + + Oops. + + src/cairo-truetype-subset.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit fe97e815e81f4429889fd52bb525c260f9967356 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Apr 5 01:04:12 2009 +1030 + + Fix TrueType subsetting bug + + Fix incorrect counting of arguments in composite glyphs + + src/cairo-truetype-subset-private.h | 2 +- + src/cairo-truetype-subset.c | 12 +++++++----- + 2 files changed, 8 insertions(+), 6 deletions(-) + +commit 9b496af5c214283c297a52c90a04743f9da9f6a3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Apr 5 00:44:02 2009 +1030 + + Fix buffer size check in TrueType subsetting + + Andrew Cowie reported a problem with the Charis SIL font being + embedded as a fallback font. + + The buffer size check for composite glyphs was incorrect causing the + subsetting to fail for some fonts. + + src/cairo-truetype-subset.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ba2ec8e1d9144c4a27917e59cb15039552eb008c +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Apr 1 13:29:12 2009 -0400 + + Remove trailing comma in cairo_region_overlap_t enum. + + src/cairo.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2d6336624c33e9c674c192b68eb501373a96dc87 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Apr 1 11:32:58 2009 -0400 + + [test-win32] Fix static linking of the test suite. + + Previously, the test suite needed to be dynamically linked to work. + + boilerplate/Makefile.win32 | 2 +- + test/Makefile.win32 | 9 ++++++--- + test/pdiff/Makefile.win32 | 2 +- + 3 files changed, 8 insertions(+), 5 deletions(-) + +commit 0f21893b0510a188439c2d8cd448bcfcf17ef8c6 +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Wed Apr 1 08:54:30 2009 -0400 + + [region] pixman_region32_contains_point() does not allow NULL for box + + src/cairo-region.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit e46c1d7fa34b4ba89fc3e0fe6f3042a6fa8c0398 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:39:46 2009 +0100 + + [scaled-font-subset] Cleanup after failure to convert to utf16. + + Avoid leaking the local hashtable and strings after failing to convert the + string to utf16. + + src/cairo-scaled-font-subsets.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 180b964aac4e058e6783778d33772f08e13b3669 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:37:44 2009 +0100 + + [scaled-font-subset] Propagate error from scaled-font to collection. + + Don't attempt to collect the sub_font if it is in error. + + src/cairo-scaled-font-subsets.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 8362c6f726979abc43ad9f7303bd45fcb03f83b3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:36:08 2009 +0100 + + [type1] Fixup error path during write_charstrings() + + On the common error path we attempted to unlock a mutex that was not + always held, so reorder the error paths appropriately. + + src/cairo-type1-fallback.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 88956cd42e9cc03cb8b4ec730062993eaaf3938d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:35:24 2009 +0100 + + [ps] Check for error during stroking. + + Add a missing error status check that caused errors during stroke to be + masked. + + src/cairo-ps-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 043352aa8d1e3aeacf3b877f45e1bc451a676e15 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:34:41 2009 +0100 + + [pdf] Prevent leak of pad_image on error path. + + Ensure that the local pad_image is destroyed after an error. + + src/cairo-pdf-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b0689f56118dd8ccda6f29901d41cf8f80983aa0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 31 10:27:15 2009 +0100 + + Check for errors during get_mime_data() + + cairo_surface_get_mime_data() may raise an error on the surface, so we + need to check lest it goes unnoticed and we generate a corrupt file. + + src/cairo-pdf-surface.c | 2 ++ + src/cairo-ps-surface.c | 2 ++ + src/cairo-svg-surface.c | 2 ++ + 3 files changed, 6 insertions(+), 0 deletions(-) + +commit 9f63cbb870892253f363ddb7aac908263672c8dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 19:09:13 2009 +0100 + + [pdf] Free compressed stream after error. + + Ensure that the compressed stream is destroyed after encountering an + error. + + src/cairo-pdf-surface.c | 13 ++++++++----- + 1 files changed, 8 insertions(+), 5 deletions(-) + +commit ba1a0fa601a817ff489bc5373af57977e41eb99f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 19:08:41 2009 +0100 + + [truetype] Free local names on failure. + + Ensure that all local allocations are freed on the error path. + + src/cairo-truetype-subset.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +commit edce97a750acf4368bd7249ec6b9a195f8584cdf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 16:50:51 2009 +0100 + + [pdf] Remove false assertion. + + The stream itself may be in an error state, so an error could be raised. + + src/cairo-pdf-surface.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit b580a4a8d6c056ba8b47be32ea8c5b9a1d90d01e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 16:50:10 2009 +0100 + + [test] Improve fault injection coverage + + In order to exercise the meta-surfaces, we need to inject faults into + cairo_surface_finish(). + + boilerplate/cairo-boilerplate.c | 16 +++++++++++++--- + test/cairo-test.c | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 48 insertions(+), 3 deletions(-) + +commit 80d5b53b474c94219c51ae16dcc19098a2d86165 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Tue Mar 31 05:47:44 2009 -0400 + + [region] Change name of cairo_region_empty() to cairo_region_is_empty() + + src/cairo-clip.c | 2 +- + src/cairo-region.c | 6 +++--- + src/cairo-surface-fallback.c | 2 +- + src/cairo.h | 2 +- + src/cairoint.h | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +commit 77ee65fd03d06064be023f022d565c5038fe26df +Author: Jonathan Kew <jfkthame@gmail.com> +Date: Mon Mar 30 14:45:48 2009 -0400 + + [win32] Fix horizontal glyph positioning bug + + The _cairo_win32_scaled_font_backend version of show_glyphs collects + glyph runs to hand to ExtTextOutW until the y-offset changes, then flushes the + glyphs buffered so far. As each glyph is buffered, it also calculates and + buffers the dx value for the preceding glyph. + + However, when it sees a change in dy and decides to flush, it should *not* + append an entry to the dx buffer, as this would be the "dx" of the previous + glyph, and instead the new start_x value will be used for the new glyph run + that's being collected. This bug means that after any vertically-offset glyph, + the remaining glyphs in the run will get incorrect dx values (horizontal + escapement). + + Mozilla bug #475092 + + src/cairo-win32-font.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit aee71e2063b1d6d23cd8dcef7789c9cf106af32a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 13:41:00 2009 +0100 + + [test] Memfault checks. + + Don't assume an error means the test failed, check for injected allocation + errors. + + test/create-from-png.c | 164 +++++++++++++++++++++++++++++++++--------------- + 1 files changed, 113 insertions(+), 51 deletions(-) + +commit ea6197c2f5f04d5e8e8035a330c5199b37beb702 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:54:26 2009 +0100 + + [surface] Propagate region allocation failure. + + Propagate the error status from failing to allocate the region. + + src/cairo-surface.c | 21 ++++++++++----------- + 1 files changed, 10 insertions(+), 11 deletions(-) + +commit c35d226f7d3654b312e18068b8ccb47a51002a39 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:46:37 2009 +0100 + + [traps] Propagate allocation failure. + + Report failure to allocation region. + + src/cairo-traps.c | 23 ++++++++++------------- + 1 files changed, 10 insertions(+), 13 deletions(-) + +commit e238d10b30e18084bf07eb1643fdf48ef35467ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:22:18 2009 +0100 + + [region] Use const cairo_rectangle_int_t consistently. + + Add the const declaration to a couple of functions. + + src/cairo-region.c | 4 ++-- + src/cairo.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit de1612bdd767ca37e01938f8e41d9699531a49d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:17:49 2009 +0100 + + [region] Use _cairo_status_is_error + + Replace the open-coded version with the more readable macro. + + src/cairo-region.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f027405429d0133b2840c4b82bc553355fa5f3d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:12:41 2009 +0100 + + [region] Add leading underscore to private _cairo_region_set_error() + + Differentiate the private _cairo_region_set_error() function by using a + leading underscore. + + src/cairo-region.c | 24 ++++++++++++------------ + 1 files changed, 12 insertions(+), 12 deletions(-) + +commit ed7188a471f73abcc4ca3e2a92685088134391c7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 30 10:07:48 2009 +0100 + + [region] Add slim_hidden_def. + + Fixes for check-plt.sh (and a few adjacent whitespace). + + src/cairo-region.c | 244 ++++++++++++++++++++++++++++------------------------ + 1 files changed, 133 insertions(+), 111 deletions(-) + +commit f31c6548f818e1d4e257d94d623705284bcc4274 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Mar 28 19:26:03 2009 +0000 + + Silence compiler warnings for CAIRO_STATUS_LAST_STATUS + + Add ASSERT_NOT_REACHED (or similar) cases to the error handling switches + to silence the compiler. + + src/cairo-misc.c | 5 +++-- + src/cairo-spans.c | 2 ++ + src/cairo-surface.c | 1 + + 3 files changed, 6 insertions(+), 2 deletions(-) + +commit 979337dd4da40abb2ea49968a2c01709d9046aab +Author: Eric Anholt <eric@anholt.net> +Date: Sat Mar 28 21:53:04 2009 -0700 + + [gl] Wire blend factors using dst alpha to constants for CAIRO_CONTENT_COLOR. + + This fixes the operator and operator-alpha tests to rgb24 destinations. + While we request an RGB texture, the returned texture has alpha bits, so when + we blend against it as a renderbuffer, we get the junk alpha values. Whether + or not this is a driver bug, we'll have this problem when we get visuals + with alpha bits for windows despite not requestiong alpha, so we have to + handle it in cairo. + + src/cairo-gl-surface.c | 22 ++++++++++++++++++---- + 1 files changed, 18 insertions(+), 4 deletions(-) + +commit 809f7dc4c83009f0a67bc8af0608b480bf7fb00e +Author: Eric Anholt <eric@anholt.net> +Date: Sat Mar 28 21:30:13 2009 -0700 + + [gl] Make sure test visuals for CAIRO_CONTENT_COLOR_ALPHA have alpha bits. + + Since we're just making FBOs, the visual chosen probably shouldn't matter, + and it doesn't on Intel. But it does seem like the right thing to do. + + boilerplate/cairo-boilerplate-gl.c | 25 ++++++++++++++++++------- + 1 files changed, 18 insertions(+), 7 deletions(-) + +commit 93c437d4b9261bc1ce3daf9cbd02d9cc4d2584cc +Author: Eric Anholt <eric@anholt.net> +Date: Sat Mar 28 20:59:01 2009 -0700 + + [gl] Use GLEW to detect required extension presence. + + configure.ac | 9 +++++++++ + src/cairo-gl-surface.c | 13 +++++++++++++ + 2 files changed, 22 insertions(+), 0 deletions(-) + +commit 62d84847c3b857b8fd5aeea3f4b5c0f2f4c91625 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Mar 28 03:58:51 2009 -0400 + + [region] Add documentation for all the new region methods. + + src/cairo-region.c | 260 +++++++++++++++++++++++++++++++++++++++++++++------ + src/cairo.h | 6 +- + 2 files changed, 232 insertions(+), 34 deletions(-) + +commit 980e9f0dbd4f21c0ccf4cc33b0b0f2f370667290 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Mar 28 03:04:28 2009 -0400 + + [region] Fix status propagation for regions + + When an operation fails, store the status code in the destination + region rather than leaving it unchanged. + + src/cairo-region.c | 66 +++++++++++++++++++++++++++++++++++++++++----------- + 1 files changed, 52 insertions(+), 14 deletions(-) + +commit 64e490a464472cfe06d779503601d41972ed4518 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Mar 28 01:10:24 2009 -0400 + + [region] Use signed ints for width and height in cairo_rectangle_int_t + + src/cairo.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 26999e5aa8b5d353596e31d4b3823cafe007125c +Author: Søren Sandmann <sandmann@redhat.com> +Date: Fri Mar 27 08:48:42 2009 -0400 + + [region] Add cairo_region_intersect_rectangle() and _subtract_rectangle() + + Intersecting with and subtracting rectangles is quite common, and we + already have cairo_union_rectangle(). + + src/cairo-clip.c | 27 ++++----------------------- + src/cairo-region.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- + src/cairo-surface.c | 9 +-------- + src/cairo.h | 11 ++++++++++- + src/cairoint.h | 2 ++ + 5 files changed, 61 insertions(+), 33 deletions(-) + +commit 4b3245481cfbf96388c140421a071fd1f79ad601 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Feb 21 08:13:25 2009 -0500 + + [region] Expand rect to rectangle in a couple of names + + Specifically, + + cairo_region_union_rect -> cairo_region_union_rectangle + cairo_region_create_rect -> cairo_region_create_rectangle + + Also delete cairo_region_clear() which is not that useful. + + src/cairo-analysis-surface.c | 4 ++-- + src/cairo-clip.c | 4 ++-- + src/cairo-region.c | 16 +++------------- + src/cairo-surface-fallback.c | 2 +- + src/cairo-surface.c | 4 ++-- + src/cairo-traps.c | 2 +- + src/cairo-xlib-surface.c | 2 +- + src/cairo.h | 7 ++----- + src/cairoint.h | 5 ++--- + 9 files changed, 16 insertions(+), 30 deletions(-) + +commit bf6d9bc1758ac1971485b6565d29934d6b06bef2 +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Wed Feb 18 08:01:19 2009 -0500 + + [region] Delete cairo_region_create_rectangles() + + It was only used in _cairo_traps_extract_region() which could be + simplified significantly by calling cairo_region_union_rect() + repeatedly instead. + + src/cairo-region.c | 44 -------------------------------------- + src/cairo-traps.c | 60 ++++++++++++++++++++-------------------------------- + src/cairo.h | 4 --- + src/cairoint.h | 1 - + 4 files changed, 23 insertions(+), 86 deletions(-) + +commit e6d82afcab01cc91b88185abc8d1bfb9df5c2c19 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Wed Feb 18 00:20:46 2009 -0500 + + [region] Add slim_hidden_proto for region functions + + src/cairoint.h | 18 ++++++++++++++++++ + 1 files changed, 18 insertions(+), 0 deletions(-) + +commit e29103c08189cab9de34f577951219a69bd7c8e2 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Wed Feb 18 00:11:35 2009 -0500 + + [region] Move region function prototypes to cairo.h along with helper types. + + Move struct _cairo_region to cairoint.h and delete + cairo-region-private.h. Delete cairo_private from the function + definitions that had it. + + src/Makefile.sources | 1 - + src/cairo-analysis-surface.c | 1 - + src/cairo-clip-private.h | 1 - + src/cairo-region-private.h | 128 ------------------------------------------ + src/cairo-region.c | 6 +- + src/cairo-types-private.h | 6 -- + src/cairo.h | 75 ++++++++++++++++++++++++ + src/cairoint.h | 6 ++- + 8 files changed, 83 insertions(+), 141 deletions(-) + +commit 1cca5a1348d071a3c8e2ba9d3ba0d9670b9564f4 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Tue Feb 17 23:52:18 2009 -0500 + + [region] Remove underscores from _cairo_region_* + + src/cairo-analysis-surface.c | 18 +++++------- + src/cairo-clip.c | 50 +++++++++++++++++----------------- + src/cairo-directfb-surface.c | 4 +- + src/cairo-paginated-surface.c | 4 +- + src/cairo-region-private.h | 36 ++++++++++++------------ + src/cairo-region.c | 61 ++++++++++++++++++++--------------------- + src/cairo-surface-fallback.c | 20 +++++++------- + src/cairo-surface.c | 14 +++++----- + src/cairo-traps.c | 10 +++--- + src/cairo-win32-surface.c | 8 +++--- + src/cairo-xcb-surface.c | 4 +- + src/cairo-xlib-surface.c | 14 +++++----- + 12 files changed, 120 insertions(+), 123 deletions(-) + +commit fcdca966941f4f7cc908bd46df1ec9a6b0f757c1 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Tue Feb 17 22:52:50 2009 -0500 + + [region] Always define cairo_rectangle_int_t with ints + + Use ints in cairo_rectangle_int_t, no matter the fixed type. + + src/cairo-types-private.h | 38 +++++++++----------------------------- + 1 files changed, 9 insertions(+), 29 deletions(-) + +commit cfa7a384b730289233bef556fe1919f781eac684 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Tue Feb 17 23:40:02 2009 -0500 + + [region] Add _cairo_region_contains_point() + + src/cairo-region-private.h | 5 ++++- + src/cairo-region.c | 15 +++++++++++++-- + src/cairo.h | 1 + + 3 files changed, 18 insertions(+), 3 deletions(-) + +commit 15564d1949778124e553d792f85cae2b031aad45 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Tue Feb 17 05:58:34 2009 -0500 + + [region] Add _cairo_region_union + + src/cairo-region-private.h | 4 ++++ + src/cairo-region.c | 16 ++++++++++++++++ + 2 files changed, 20 insertions(+), 0 deletions(-) + +commit df883aa937d2f3ecf52048b60caff48b1c9edac9 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Tue Feb 17 06:06:40 2009 -0500 + + [region] Add a cairo_region_overlap_t type + + src/cairo-analysis-surface.c | 4 ++-- + src/cairo-region-private.h | 8 +++++++- + src/cairo-region.c | 33 ++++++++++++++++++++++++--------- + 3 files changed, 33 insertions(+), 12 deletions(-) + +commit ebd0e685ae2d76c3af96d748a33a7194c70749f3 +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Mon Feb 16 05:41:31 2009 -0500 + + [region] Consistently use rectangles in the API of regions + + Usually, rectangles are more useful than boxes, so regions should only + expose rectangles in their public API. + + Specifically, + _cairo_region_num_boxes becomes _cairo_region_num_rectangles + _cairo_region_get_box becomes _cairo_region_get_rectangle + + Remove the cairo_box_int_t type + + src/cairo-clip.c | 22 ++++++------------ + src/cairo-directfb-surface.c | 26 +++++++++++----------- + src/cairo-paginated-surface.c | 34 ++++++++++++++-------------- + src/cairo-region-private.h | 14 ++++++------ + src/cairo-region.c | 28 ++++++++++++------------ + src/cairo-surface-fallback.c | 2 +- + src/cairo-surface.c | 25 ++++++-------------- + src/cairo-traps.c | 31 +++++++++++++------------ + src/cairo-types-private.h | 6 ----- + src/cairo-win32-surface.c | 48 ++++++++++++++++++++-------------------- + src/cairo-xcb-surface.c | 24 ++++++++++---------- + src/cairo-xlib-surface.c | 29 ++++++++++++------------ + 12 files changed, 134 insertions(+), 155 deletions(-) + +commit c29aeee2d3569cd43e88adc05662bb6306987b8b +Author: Søren Sandmann <sandmann@redhat.com> +Date: Thu Dec 11 18:37:40 2008 -0500 + + [region] Change sense of _cairo_region_not_empty() to _cairo_region_empty() + + Having "not" in the name causes double negatives. + + src/cairo-clip.c | 2 +- + src/cairo-region-private.h | 2 +- + src/cairo-region.c | 6 +++--- + src/cairo-surface-fallback.c | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +commit c88321d0a2b9d200b2044674d02fa0683feca74c +Author: Søren Sandmann <sandmann@redhat.com> +Date: Thu Dec 11 16:20:23 2008 -0500 + + [region] Miscellaneous bug fixes. + + - Initialize region->status in _cairo_region_create_boxes() + - Make _cairo_region_copy() actually return a region. + - Fix a bug where a NULL region could be dereferenced + + Also add an assertion that the result of cairo_region_copy() is never + NULL. + + src/cairo-clip.c | 2 ++ + src/cairo-image-surface.c | 2 +- + src/cairo-region.c | 4 +++- + 3 files changed, 6 insertions(+), 2 deletions(-) + +commit 93b285dc2c9c9ec486e0096933c3611f73374fcb +Author: Søren Sandmann <sandmann@redhat.com> +Date: Thu Dec 11 15:50:15 2008 -0500 + + [region] Get rid of clip->has_region + + src/cairo-clip-private.h | 1 - + src/cairo-clip.c | 36 +++++++++++++++--------------------- + src/cairo-surface.c | 2 +- + 3 files changed, 16 insertions(+), 23 deletions(-) + +commit e3e1b35eb9eb3cf90d882a7452580f9efe00b89a +Author: Søren Sandmann <sandmann@redhat.com> +Date: Thu Dec 11 15:29:23 2008 -0500 + + [region] Make cairo_region_t a malloced object. + + src/cairo-analysis-surface.c | 26 +++---- + src/cairo-clip-private.h | 2 +- + src/cairo-clip.c | 99 ++++++++++++------------- + src/cairo-region-private.h | 42 ++++++----- + src/cairo-region.c | 168 +++++++++++++++++++++++++++++++++--------- + src/cairo-surface-fallback.c | 65 ++++++++--------- + src/cairo-surface.c | 29 ++++---- + src/cairo-traps.c | 14 ++- + src/cairo-xlib-surface.c | 16 ++-- + src/cairoint.h | 2 +- + 10 files changed, 280 insertions(+), 183 deletions(-) + +commit c2c637cf1d89fc8fdcced4467d602a55ef0b14e0 +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Mar 28 04:26:10 2009 -0400 + + Simplify _cairo_clip_intersect_region() + + The intermediate intersection region is not necessary because if the + operation fails, clip->region will end up as a pixman error region. + + src/cairo-clip.c | 19 +++++-------------- + 1 files changed, 5 insertions(+), 14 deletions(-) + +commit fe10cd6467f2ec58532dc7c713bb6d08dab08442 +Author: Bertram Felgenhauer <int-e@gmx.de> +Date: Fri Mar 27 07:10:21 2009 +0100 + + [spline] fix wrong sign in _cairo_spline_bound. + + src/cairo-spline.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 53107de63a954105f8820e5b96e2a1956cb7af8c +Author: Bertram Felgenhauer <int-e@gmx.de> +Date: Thu Mar 26 04:56:27 2009 +0100 + + [in_fill] Correctly track current point in curve_to. + + When discarding a bezier path segment, we still need to update the + current point. + + src/cairo-path-in-fill.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 578b06a978d51dc3d1d844ee7eea9ddd8329cc8d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 23 10:56:43 2009 +0000 + + [perf] Use CAIRO_LDFLAGS + + Use CAIRO_LDFLAGS in order to pull in additional link options, such as + --coverage. + + perf/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ac30ced6135c5cf0fb34a67fe8f863030c1fbeb9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 22 19:02:27 2009 +0000 + + [test] Check for surface create failure. + + If the image surface creation fails, the data pointer will be NULL leading + to a segfault -- so check! + + test/user-font-mask.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +commit b5a4a2c4b1b1bab25e2ff0842e3c27205ec73d51 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 22 19:00:04 2009 +0000 + + [test] Early test for memfault. + + Check the error status within after each iteration in + solid-pattern-cache-stress. + + test/solid-pattern-cache-stress.c | 41 +++++++++++++++++++++++++++---------- + 1 files changed, 30 insertions(+), 11 deletions(-) + +commit 1a7b94f934f8c9a25e60d9466651b0b7fb919656 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Mar 20 11:06:29 2009 +0000 + + [test] Check for errors during get-path-extents. + + Need to check that an error was not raised on the context before checking + whether the extents match expectations. + + test/get-path-extents.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 3b545330887209c68128fca0d1bb40bf4927c2a6 +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Sat Mar 21 11:56:18 2009 -0700 + + [win32] Use _hypot instead of hypot + + The hypot symbol is deprecated on Win32, and nonexistent on Windows CE + + src/cairo-compiler-private.h | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 895fce1632069ddfb8c581d2b23b1b3552e35104 +Author: Stefan Klug <Klug.Stefan@gmx.de> +Date: Fri Mar 20 17:20:22 2009 -0400 + + [wince] Use the official _WIN32_WCE define instead of WINCE + + src/cairo-misc.c | 4 ++-- + src/cairoint.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 86a935de42318c4be92a657ce8e8c452693d4414 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Mar 20 17:14:08 2009 -0400 + + [msvc] Fix definition of CAIRO_ENSURE_UNIQUE for non-x86 + + The current definition of CAIRO_ENSURE_UNIQUE uses x86 assembly so make sure we + only compile it when targeting x86. + + src/cairo-compiler-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c932a809d6484503d7ee267d934bbc87c8d44092 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 17 12:01:13 2009 +0000 + + [test] Propagate allocation failure. + + Check for memfaults during rel-path test. + + test/rel-path.c | 19 ++++++++++++++++--- + 1 files changed, 16 insertions(+), 3 deletions(-) + +commit 7db55b37d4aef188e04771b45076f6735507c209 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 17 11:58:16 2009 +0000 + + [test] Destroy pattern on error paths. + + Destroy the pattern after encountering an error in pattern-getters test. + + test/pattern-getters.c | 29 +++++++++++++++++++++++++---- + 1 files changed, 25 insertions(+), 4 deletions(-) + +commit dc176d88ac03ae71fc32abb27329a35650801d99 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 17 10:42:37 2009 +0000 + + [test] Trivial leak on error in show-glyphs-many. + + Free the allocated glyph array after failure. + + test/show-glyphs-many.c | 11 ++++++----- + 1 files changed, 6 insertions(+), 5 deletions(-) + +commit a4b44ca89eb9975e6af2913e50ec3c3eb566cfdd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 17 14:56:42 2009 +0000 + + [pattern] Report the true error status from getters. + + As the getters actually return an error status, use it to report any + pre-existing error status on the pattern. + + src/cairo-pattern.c | 18 ++++++++++++++++++ + 1 files changed, 18 insertions(+), 0 deletions(-) + +commit 496bbcf58233ceecfffc52ae5b1a3a1f07516c67 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Mar 17 19:46:25 2009 -0400 + + Make CAIRO_STATUS_LAST_STATUS public + + doc/public/tmpl/cairo-status.sgml | 1 + + src/cairo.h | 12 ++++++++++-- + src/cairoint.h | 6 ------ + 3 files changed, 11 insertions(+), 8 deletions(-) + +commit 922c108365b940dbabf23358189bbaa8602446c9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Mar 17 19:22:31 2009 -0400 + + [twin] Reorganize matching code to better reflect the code in Pango + + Makes it easier to update later. + + src/cairo-font-face-twin.c | 179 +++++++++++++++++++++++++++++++++----------- + src/cairoint.h | 4 + + 2 files changed, 138 insertions(+), 45 deletions(-) + +commit 2b4044a36f8b156ca0e58b72614659324a9b022e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Mar 17 18:52:16 2009 -0400 + + [twin] Update parsed weights and stretches from Pango + + src/cairo-font-face-twin.c | 64 ++++++++++++++++++++++++++----------------- + 1 files changed, 39 insertions(+), 25 deletions(-) + +commit 3ec94f9b5917b8f71304c982bd153e5a810f3b12 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Mar 17 00:53:30 2009 -0400 + + Support compiling without fontconfig + + Adds a new, fake, fontconfig font backend. Fontconfig can be disabled + using --disable-fc, in which case the toy text API wont find fonts and + the internal font will always be used. + + Also defines the feature macro CAIRO_HAS_FC_FONT. The two fontconfig-specific + functions in cairo-ft.h depend on that macro now. + + boilerplate/Makefile.win32.features | 10 ++++++++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 ++ + build/configure.ac.features | 1 + + configure.ac | 26 +++++++++++++------- + doc/public/cairo-sections.txt | 1 + + doc/public/tmpl/cairo-ft.sgml | 9 +++++++ + doc/public/tmpl/cairo-status.sgml | 2 +- + src/Makefile.win32.features | 14 +++++++++++ + src/cairo-ft-font.c | 43 +++++++++++++++++++++++++++++----- + src/cairo-ft.h | 23 ++++++++++++------ + src/cairo-os2-surface.c | 6 +++- + src/cairo-path-fixed.c | 2 +- + src/cairo-scaled-font.c | 4 +- + src/cairo-xlib-display.c | 2 - + src/cairo-xlib-screen.c | 23 ++++++++---------- + 16 files changed, 125 insertions(+), 45 deletions(-) + +commit 0e7bcb5e3793771d50f7d391d7b1e538ef220a80 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 16 21:32:44 2009 +0000 + + [scaled-font] Improve comments. + + Grr. I thought I had merged this in with the previous commit... + + src/cairo-scaled-font.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 9c80392ac415e7f07c71261d280ac4376d3c8471 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 16 19:31:38 2009 +0000 + + [scaled-font] Lean and mean global glyph cache. + + Jeff Muizelaar pointed out that the severe overallocation implicit in the + current version of the glyph cache is obnoxious and prevents him from + accepting the trunk into Mozilla. Jeff captured a trace of scaled font + and glyph usage during a tp run and presented his analysis in + http://lists.cairographics.org/archives/cairo/2009-March/016706.html + + Using that data, the design was changed to allocate pages of glyphs from a + capped global pool but with per-font hash tables. This should allow the + glyph cache to have tight memory bounds with fair allocation according to + usage. Note that both the old design and the 1.8 glyph cache had + essentially unbounded memory constraints, since each scaled font could + cache up to 256 glyphs (1.8) or had a reserved page (old), with no limit + on the number of active fonts. Currently the eviction policy is a simple + random strategy, this gives a 'fair' allotment of the cache, but a LRU + variant might perform better. + + On a sample run of firefox-3.0.7 perusing BBC news in 32 languages: + 1.8: cache allocation 8190x, ~1.2 MiB; elapsed 88.2s + old: cache allocation 771x, ~13.8 MiB; elapsed 81.7s + lean: cache allocation 433x, ~1.8 MiB; elapsed 82.4s + + src/cairo-cache-private.h | 5 +- + src/cairo-cache.c | 39 ++--- + src/cairo-ft-font.c | 4 +- + src/cairo-hash-private.h | 6 +- + src/cairo-hash.c | 55 ------ + src/cairo-scaled-font-private.h | 6 +- + src/cairo-scaled-font.c | 396 ++++++++++++++++++++------------------- + src/cairo-types-private.h | 3 + + src/cairoint.h | 7 +- + 9 files changed, 232 insertions(+), 289 deletions(-) + +commit 121d4bb656755b7ca89065bf87e3e4e47c49c89d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Mar 16 19:42:47 2009 +0000 + + [scaled-font] Initialise original_font_face + + Eek, attempting to use+free an uninitialised pointer! + + src/cairo-scaled-font.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 2df498ba452b188f2f40413c91fec5e5ed9cf967 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Mar 5 23:26:44 2009 -0800 + + [gl] Use triangle fan instead of GL_QUADS for the single quad we draw. + + This saves the driver from converting the quad into tris on its own. We'd + rather be able to specify a rect as 2-3 points and use the rectangular + rendering feature that most of our hardware has, if it was possible, but + it isn't exposed in GL. + + src/cairo-gl-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9099c7e7307a39bc630919faa65bba089fd15104 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Mar 4 09:26:17 2009 +0000 + + [trace] Disable mark dirty tracing. + + Applications like firefox have a very conservative approach and mark + surfaces dirty before every render. As we record the image data every + time, firefox traces can grow very large with redundant data - so allow + the user to disable mark dirty tracing. + + util/cairo-trace/cairo-trace.in | 19 +++++++++++++++---- + util/cairo-trace/trace.c | 27 ++++++++++++++++++++------- + 2 files changed, 35 insertions(+), 11 deletions(-) + +commit addeb32c751ac080fe634ea6f83076d018944e4a +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Mar 3 12:20:47 2009 -0500 + + [pdf] Intialize 'interpolate' + + Intialize 'interpolate' to prevent a gcc warning. Do this instead of adding a + 'default' case to the switch statement so that we still get warnings if new + filter types are added. + + src/cairo-pdf-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a8158d443e6a4bafae28a46b883cbdcfd5789eec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 3 11:21:35 2009 +0000 + + [truetype] Move the sizeof asserts to compile time. + + Eliminate the need for a runtime test on the sizeof the private structures + by performing the check at compile time. This was provoked by Ginn Chenn + noting that the test was including a private header. + + src/cairo-truetype-subset.c | 15 ++++++++++ + test/Makefile.sources | 1 - + test/truetype-tables.c | 63 ------------------------------------------- + 3 files changed, 15 insertions(+), 64 deletions(-) + +commit e4b1f871e9cbb04590df5dc6f6f7854642fa0340 +Author: Ginn Chen <Ginn.Chen@Sun.COM> +Date: Tue Mar 3 10:27:11 2009 +0000 + + [configure] Detect mkdir variant with non-gcc compilers. + + It doesn't work for non GCC compiler right now, as "-Werror -Wall" is + an error to non GCC compiler. + + I swapped the sequence of build/configure.ac.system and build/ + configure.ac.warnings, then WARN_CFLAGS can be used. + + build/configure.ac.system | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f178f55e47013a92a47a24ac04b1041963b03976 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 3 10:25:05 2009 +0000 + + [test/any2ppm] Update the cairo-script-interpreter callback. + + Reflect the current prototype which now specifies the content to use when + creating the surface. + + test/any2ppm.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 694f2eea9feecfdc437e6964d1e758fab7315af9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Mar 3 10:24:25 2009 +0000 + + [test/any2ppm] Add feature checks for daemon() + + Add the feature checks for the presence of the daemon() function call. + + test/any2ppm.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit 9304984f4e20beec7b4de6a4141e2fd489130006 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 1 10:10:24 2009 +0000 + + [path] Fix regression introduced with 005436 + + The order of the multiplication of the CTM and device_transform was + reversed. + + src/cairo-path.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit b30de64a8ca3de7632696f45bdb580217bd9f8a1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Mar 1 10:05:16 2009 +0000 + + [test] Add regression test for 005436 + + Jeff Muizelaar found a regression in commit 005436 and submitted this + little test to exercise it. The essence of the bug appears to be wrt to + the product of the CTM and device transform matrices. + + test/Makefile.sources | 1 + + test/path-append.c | 81 ++++++++++++++++++++++++++++++++ + test/path-append.ps.ref.png | Bin 0 -> 4516 bytes + test/path-append.ref.png | Bin 0 -> 6165 bytes + test/path-append.test-fallback.ref.png | Bin 0 -> 6461 bytes + test/path-append.xlib-fallback.ref.png | Bin 0 -> 6357 bytes + test/path-append.xlib.ref.png | Bin 0 -> 6461 bytes + 7 files changed, 82 insertions(+), 0 deletions(-) + +commit e20f1a0c76f2185760ca3a7466e25de6beedeaac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 27 16:30:05 2009 +0000 + + [in-fill] Close the path, cf fill() + + In order for in-fill treat the path equivalently to a fill, we need to + close the path after interpretation. + + src/cairo-path-in-fill.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 102ddd37bb329d41241f434ede0f9cba8424e71e +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 26 16:04:49 2009 -0500 + + [win32] Include $(OPT) flags when linking cairo.dll + + This will pass in -Zi which causes the /DEBUG flag to be passed to the + linker keeping the debug information from being discarded during link. + + src/Makefile.win32 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit eb2a73ba6d290497cabb0f917c0375eea919178e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 24 20:27:36 2009 +0000 + + [ps] Check the status of _cairo_type3_glyph_surface_create() + + Doing so serves two purposes. The first is to do an early error check and + the second is to clearly initialise the status variable. + + src/cairo-ps-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 6eb0a9d97ff7eaaee69ca10e4081cb950a543ce3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Feb 15 21:27:29 2009 +0000 + + [scaled-font] Hold reference to original font face + + As noted by Carl during his LCA talk, caching of toy fonts was broken + because we create the scaled font using the implementation font face and + lose the reference to the containing font face that is cached by the toy + font face create routines. So the toy fonts were not being preserved for + the duration of the holdover scaled fonts and we recreated a new font + face, new scaled font and new glyph caches every time we needed a font. + + src/cairo-ft-font.c | 2 +- + src/cairo-scaled-font-private.h | 2 ++ + src/cairo-scaled-font.c | 17 +++++++++++++---- + src/cairo-toy-font-face.c | 1 + + 4 files changed, 17 insertions(+), 5 deletions(-) + +commit fe7d5323f5bc734e76179b74d68fcba9b924ba94 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 19 16:00:17 2009 -0500 + + Relanding: Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error() + + When using MSVC, _cairo_error() can be folded into other identical functions. + If that happens, _cairo_error isn't really useful anymore. Using the + CAIRO_ENSURE_UNIQUE macro makes sure this doesn't happen. + + Use __asm to serve as a line delimiter. This allows us to use the + __asm{} block in a macro. + + src/cairo-compiler-private.h | 24 ++++++++++++++++++++++++ + src/cairo.c | 1 + + 2 files changed, 25 insertions(+), 0 deletions(-) + +commit 78de0e045ec0c10708052ed48df228e786839ddb +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 19 15:45:11 2009 -0500 + + Revert "Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error()" + + This reverts commit 126824f5e6279f56dab0c040394b6c326b848cf7. + + It turns out MSVC doesn't handle line continuation characters in __asm{} + blocks very well, so revert for now until I come up with something that + works. + + src/cairo-compiler-private.h | 24 ------------------------ + src/cairo.c | 1 - + 2 files changed, 0 insertions(+), 25 deletions(-) + +commit 126824f5e6279f56dab0c040394b6c326b848cf7 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 19 13:31:55 2009 -0500 + + Add CAIRO_ENSURE_UNIQUE macro and use it in _cairo_error() + + When using MSVC, _cairo_error() can be folded into other identical functions. If + that happens, _cairo_error isn't really useful anymore. Using the + CAIRO_ENSURE_UNIQUE macro makes sure this doesn't happen. + + src/cairo-compiler-private.h | 24 ++++++++++++++++++++++++ + src/cairo.c | 1 + + 2 files changed, 25 insertions(+), 0 deletions(-) + +commit d4227fc9126ffbb3a967aea1bc9795e7e64ee8e1 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 19 11:45:14 2009 -0500 + + [test] Fix assert on default font family in toy-font-face + + toy-font-face was checking that cairo_toy_font_face_get_family returned "" + which is CAIRO_FONT_FAMILY_DEFAULT when the freetype font backend is the + default. However, when other font backends are the default the returned family + is different. Therefore, instead of checking for "", we check for the appropriate + string depending on the backend. + + test/toy-font-face.c | 19 +++++++++++++++---- + 1 files changed, 15 insertions(+), 4 deletions(-) + +commit 06fa7a8386b267fdbd7635b952adc75a58f62584 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Feb 18 18:43:29 2009 -0500 + + Fix a const warning in _cairo_user_data_array_foreach() + + _cairo_user_data_array_foreach() was taking a function + with a void *key parameter instead of a const void *key + to match cairo_user_data_slot_t. + + src/cairo-array.c | 2 +- + src/cairo-surface.c | 2 +- + src/cairoint.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit f7b3c9df5885a1cd7981ee12b91962bdbfff47af +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon Feb 16 22:28:32 2009 -0500 + + Add test/Makefile.sources + + This lets test/Makefile.am and test/Makefile.win32 share a common list of sources. + It also makes test/Makefile.win32 useful again. + + test/Makefile.am | 251 ++++--------------------------------------------- + test/Makefile.sources | 251 +++++++++++++++++++++++++++++++++++++++++++++++++ + test/Makefile.win32 | 125 +++++-------------------- + 3 files changed, 293 insertions(+), 334 deletions(-) + +commit e380beae5382df547a1b538de94e90c0e2339141 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Feb 16 14:01:43 2009 +0200 + + [sdl] Remove new backend. + + The SDL backend makes invalid assumptions about SDL_Surface locking + semantics and doesn't deal correctly with the unpremultiplied pixel + format supported by SDL. Removed as per discussion on the mailing list. + + http://lists.cairographics.org/archives/cairo/2009-February/016595.html + + boilerplate/Makefile.sources | 3 - + boilerplate/Makefile.win32.features | 10 - + boilerplate/cairo-boilerplate-sdl-private.h | 56 ---- + boilerplate/cairo-boilerplate-sdl.c | 69 ----- + boilerplate/cairo-boilerplate.c | 15 - + build/Makefile.win32.features | 1 - + build/Makefile.win32.features-h | 3 - + build/configure.ac.features | 1 - + configure.ac | 8 - + doc/public/tmpl/cairo-surface.sgml | 1 - + perf/Makefile.am | 4 - + perf/cairo-perf.c | 4 - + src/Makefile.sources | 3 - + src/Makefile.win32.features | 14 - + src/cairo-sdl-surface.c | 418 --------------------------- + src/cairo-sdl.h | 54 ---- + src/cairo.h | 2 - + test/Makefile.am | 4 - + test/cairo-test-runner.c | 4 - + test/get-clip.c | 1 - + 20 files changed, 0 insertions(+), 675 deletions(-) + +commit 79a72e63585d7fce7898f2c8bd997c6d88f8895f +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Mon Feb 16 05:44:15 2009 -0500 + + Delete _cairo_region_boxes_fini() + + src/cairo-region.c | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +commit f6daa664c1b2c894ba3baf2e7a72566bda1fd636 +Author: Søren Sandmann <sandmann@daimi.au.dk> +Date: Sun Feb 15 18:55:17 2009 -0500 + + Delete _cairo_region_get_boxes() in favor of _cairo_region_get_box() + + The _cairo_region_get_boxes() interface was difficult to use and often + caused unnecessary memory allocation. With _cairo_region_get_box() it + is possible to access the boxes of a region without allocating a big + temporary array. + + src/cairo-clip.c | 21 +++++++---------- + src/cairo-directfb-surface.c | 21 +++++++---------- + src/cairo-paginated-surface.c | 19 ++++++--------- + src/cairo-region-private.h | 10 ++------ + src/cairo-region.c | 39 ++++++++------------------------ + src/cairo-sdl-surface.c | 21 +++++++---------- + src/cairo-surface.c | 44 ++++++++++++++----------------------- + src/cairo-win32-surface.c | 48 +++++++++++++++++++--------------------- + src/cairo-xcb-surface.c | 26 +++++++++------------ + src/cairo-xlib-surface.c | 31 +++++++++++--------------- + 10 files changed, 112 insertions(+), 168 deletions(-) + +commit 54228cb5fe0c41b10f0ec4a206b5fac28823cde6 +Author: Eric Anholt <eric@anholt.net> +Date: Sun Feb 15 14:29:55 2009 -0800 + + [gl] Use textures and not fbo-based surfaces for image surface patterns. + + This cuts the BO allocation overhead for traps in more than half, and reduces + the load on the accelerator. + + src/cairo-gl-surface.c | 191 ++++++++++++++++++++++++++++++++++++++++++++---- + 1 files changed, 176 insertions(+), 15 deletions(-) + +commit fcb13d262c5a09e56dc25c76103ef4ba623929ff +Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk> +Date: Sun Feb 15 15:59:10 2009 -0500 + + Simplify region handling in xlib surface + + src/cairo-xlib-surface.c | 11 +++-------- + 1 files changed, 3 insertions(+), 8 deletions(-) + +commit b43e7aee98a8d69677f7e6d2584fe01f550f896b +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Feb 13 12:15:23 2009 -0500 + + [wince] We don't need cairo_win32_tmpfile on Windows CE + + _cairo_win32_tmpfile() uses _open_osfhandle() which is not available + on Windows CE. However, Windows CE doesn't have the permisions problems + that necessitated _cairo_win32_tmpfile() in the first place so we can just + use tmpfile() on Windows CE. + + src/cairo-misc.c | 5 ++++- + src/cairoint.h | 2 +- + 2 files changed, 5 insertions(+), 2 deletions(-) + +commit fa66291c8862ed592fca469ceab0ac9b1d270835 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 28 14:22:58 2009 +0000 + + [perf] Test non-antialiased fill. + + Just because the i915 can special case such fills using a single-pass + tessellation in the stencil buffer. + + perf/fill.c | 21 +++++++++++++++++++++ + 1 files changed, 21 insertions(+), 0 deletions(-) + +commit aab9ed3432f0ea7b8b24990de4aa134bb599a3e5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 30 10:22:47 2009 +0000 + + [perf] Env variable to ignore similar targets whilst benchmarking. + + Use CAIRO_TEST_IGNORE_SIMILAR to skip similar targets. + + perf/cairo-perf.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 655f6987334b991763a5ab7746dbfd73c6b05f3e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 6 20:11:17 2009 +0000 + + [perf] Split can_run? into a separate precondition. + + Allow tests to skip unnecessary setup when pruning the list of perf cases. + + perf/box-outline.c | 3 +++ + perf/cairo-perf.c | 24 ++++++++++++++++-------- + perf/cairo-perf.h | 4 ++++ + perf/composite-checker.c | 3 +++ + perf/dragon.c | 3 +++ + perf/fill.c | 3 +++ + perf/intersections.c | 3 +++ + perf/long-dashed-lines.c | 3 +++ + perf/long-lines.c | 3 +++ + perf/mosaic.c | 3 +++ + perf/paint-with-alpha.c | 3 +++ + perf/paint.c | 3 +++ + perf/pattern_create_radial.c | 3 +++ + perf/pythagoras-tree.c | 3 +++ + perf/rectangles.c | 3 +++ + perf/rounded-rectangles.c | 3 +++ + perf/spiral.c | 3 +++ + perf/stroke.c | 3 +++ + perf/subimage_copy.c | 3 +++ + perf/tessellate.c | 3 +++ + perf/text.c | 3 +++ + perf/twin.c | 3 +++ + perf/unaligned-clip.c | 3 +++ + perf/world-map.c | 3 +++ + perf/zrusin.c | 3 +++ + 25 files changed, 89 insertions(+), 8 deletions(-) + +commit 798581a1b5a8a56ce9d16c5b21eab82851061732 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 30 22:12:49 2009 +0000 + + [perf] Extend range of testing. + + Primarily to test longer glyph runs, but also test large upper bounds for + strokes and fills. + + perf/cairo-perf.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 1522fac5c71708fc9e98e03da9f51926c1e3769c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 3 17:18:53 2009 +0000 + + [perf] Fix infinite loop in text + + The row would wrap-around with the character index, causing an infinite + loop when trying to fill a window of size 512x512 and above. + + perf/text.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit 187e3473512e40fa1d046783e797ec3a198b09b2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 13 13:09:32 2009 +0000 + + [test] Free ref_name in fallback-resolution. + + Trivial leak of a few thousand bytes. + + test/fallback-resolution.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 005436758c5679f76cc462841678fb93d6c7e0ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 3 10:20:26 2009 +0000 + + [path] Inline path ops during append_to_context() + + By inlining the operations, and most significantly, precomputing the + combined user-to-backend matrix, we can achieve a speed up of over 50%, + which is a noticeable performance boost in swfdec - where append-to-path + accounts for over 35% [inclusive] of the time for a h/w accelerated + backend. + + src/cairo-path.c | 76 +++++++++++++++++++++++++++++++++++++++++------------- + 1 files changed, 58 insertions(+), 18 deletions(-) + +commit d295942b9d4da3be3318cd5fe2d3b0b1fe005d11 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 31 00:56:45 2009 +0000 + + Inline _cairo_restrict_value() + + This is one instance where the function call overhead dominated the + function call in both time and size. + + src/cairo-misc.c | 9 --------- + src/cairo-pattern.c | 32 ++++++++++++++++---------------- + src/cairo.c | 14 ++++++++------ + src/cairoint.h | 13 +++++++++++-- + 4 files changed, 35 insertions(+), 33 deletions(-) + +commit cc8a09567ca034e7d95e2ef8a3ec833b12c9f87a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 13 13:23:50 2009 +0000 + + [surface] Move the meta-data copy-on-snapshot to the generic layer. + + As pointed out by Paolo Bonzini, copying the meta data for a snapshot is + common for all backends and so should be handled by the generic layer. + + src/cairo-surface-fallback.c | 11 ----------- + src/cairo-surface.c | 30 +++++++++++++++++++++++++++--- + 2 files changed, 27 insertions(+), 14 deletions(-) + +commit adaf70a93f4449e85997bcde531b76c9044758ea +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 13 12:56:46 2009 +0000 + + [surface] Separate the mime-data from the user-data. + + Move the mime-data into its own array so that it cannot be confused with + user-data and we do not need to hard-code the copy list during + snapshotting. The copy-on-snapshotting code becomes far simpler and will + accommodate all future mime-types. + + Keeping mime-data separate from user-data is important due to the + principle of least surprise - the API is different and so it would be + surprising if you queried for user-data and were returned an opaque + mime-data pointer, and vice versa. (Note this should have been prevented + by using interned strings, but conceptually it is cleaner to make the + separation.) Also it aides in trimming the user data arrays which are + linearly searched. + + Based on the original patch by Adrian Johnson: + http://cgit.freedesktop.org/~ajohnson/cairo/commit/?h=metadata&id=37e607cc777523ad12a2d214708d79ecbca5b380 + + src/cairo-array.c | 36 ++++++++++++++++++++++++++++++++++++ + src/cairo-surface-fallback.c | 27 +++++++-------------------- + src/cairo-surface-private.h | 1 + + src/cairo-surface.c | 42 +++++++++++++++++++++--------------------- + src/cairoint.h | 14 ++++++++++++-- + 5 files changed, 77 insertions(+), 43 deletions(-) + +commit 2280de9d0282a599309ec12dc576bae54857f873 +Merge: 17ce858 de7270c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 13 10:08:21 2009 +0000 + + Merge branch '1.8' + +commit de7270cb1e9510cb230e80045c812fa68fcfa585 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Feb 13 10:03:22 2009 +0000 + + [cairo] Describe the restrictions upon cairo_set_tolerance() + + Truc Troung reported that the behaviour of + cairo_set_tolerance()/cairo_get_tolerance() was inconsistent with the + documentation, i.e. we failed to mention that the tolerance would be + restricted to the smalled fixed-point value. + + Add a sentence to the documentation that describes the restriction without + mentioning what that is... Hopefully that is sufficient detail to + accommodate the reporter, without exposing internal implementation details. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=20095 + Bug 20095 - The cairo_set_tolerance() function behavior is inconsistency + with the spec + + src/cairo.c | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 17ce8584e7142d13bd7a777c9570e5548a06a90c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Feb 12 18:26:57 2009 +0000 + + [NEWS] Add API changes. + + Scan the public headers for obvious additions. + + NEWS | 20 +++++++++++++++++++- + 1 files changed, 19 insertions(+), 1 deletions(-) + +commit 2df611a3810eb64c8ed22dfae5f3d3157eef7e6a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Feb 10 10:28:28 2009 +0000 + + [script] Expose a normal xlib window for replay + + Provide a visible surface for replaying scripts against. + + util/cairo-script/csi-replay.c | 122 +++++++++++++++++++++------------------ + 1 files changed, 66 insertions(+), 56 deletions(-) + +commit 8e1f103540392b17c51b4fb4b3c3480430cbc212 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 12 12:02:17 2009 -0500 + + Divert pclose to _pclose for MSVC + + Commit bf62798b1284533e28b78717dac8070ca6d29e54 added a diversion for + popen but not for pclose. This is needed for linking the boilerplate + with the test suite. + + src/cairo-compiler-private.h | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 4c6e7a16032fb223f4224d4355c2ea046cd8fc4b +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 11 05:09:23 2009 -0800 + + [gl] Add support for constant color directly, not through a texture. + + src/cairo-gl-surface.c | 337 +++++++++++++++++++++++++++++++++++------------- + 1 files changed, 248 insertions(+), 89 deletions(-) + +commit 31fb7382d22c9293c093b60716ee4e393fa0d5cf +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 11 05:09:51 2009 -0800 + + [gl] Fix some memory leaks on boilerplate-based runs. + + boilerplate/cairo-boilerplate-gl.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit df96fc1f92b68ef3e76750d0891377980e039b09 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Feb 9 15:42:09 2009 -0800 + + [gl] Avoid re-binding the same draw buffer. + + The driver could be smarter and avoid a lot of the cost, but this is easy + and avoids needing much driver smarts. + + src/cairo-gl-surface.c | 30 ++++++++++++++++++++---------- + 1 files changed, 20 insertions(+), 10 deletions(-) + +commit fb6937565be558e7ff8ba3dd815a427721783cba +Author: Eric Anholt <eric@anholt.net> +Date: Mon Feb 9 15:30:21 2009 -0800 + + [gl] Add interface for creating surfaces from window backbuffers. + + src/cairo-gl-surface.c | 85 +++++++++++++++++++++++++++++++++++++++++++++-- + src/cairo-gl.h | 9 ++--- + 2 files changed, 85 insertions(+), 9 deletions(-) + +commit 6cc3d8dcc0fe418c56a519180163bd49fbdb9730 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Feb 9 12:30:20 2009 -0800 + + [gl] Fix unantialiased-shapes tests. + + src/cairo-gl-surface.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +commit 23a8c58dc13bd9ff44f235bee8e4e7240831728a +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 5 11:00:59 2009 -0800 + + [gl] Fix infinite recursion on compositing A1 images. + + We could do this fast, but let's do it correct first. + + src/cairo-gl-surface.c | 28 ++++++++++++++++++++++++++++ + 1 files changed, 28 insertions(+), 0 deletions(-) + +commit b6dde667fa1c72c6da1970244c4f28c48a38f493 +Author: Eric Anholt <eric@anholt.net> +Date: Mon Feb 2 23:22:49 2009 -0800 + + [gl] Add support for composite and composite_trapezoids. + + This is a simple implementation that uses GL_ARB_texture_env_combine after + converting everything to GL surfaces (FBOs). + + src/cairo-gl-surface.c | 375 +++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 373 insertions(+), 2 deletions(-) + +commit 38a1061bbcf3e69acc05c35f2084d462b43f5477 +Merge: b3e2433 e7d4bc3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Feb 12 10:46:29 2009 +0000 + + Merge branch '1.8' + +commit e7d4bc3d864b1b42bb1cae031036ddf6a4445d3c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Feb 12 10:42:24 2009 +0000 + + [png] Correct documentation to avoid reference to NULL + + As pointed out by Truc Truong, + cairo_image_surface_create_from_png_stream() cannot return NULL and so the + documentation was incorrect. + + Fixes http://bugs.freedesktop.org/show_bug.cgi?id=20075 + Bug 20075 There is a misprint in the spec for + cairo_image_surface_create_from_png_stream() function + + src/cairo-png.c | 17 +++++++++++++++-- + 1 files changed, 15 insertions(+), 2 deletions(-) + +commit b3e2433f1e78e8799a9f57bfb6da108016687fc9 +Author: Søren Sandmann <sandmann@redhat.com> +Date: Wed Feb 11 17:55:15 2009 -0500 + + Correct the reference image for the rotate-image-surface-paint test + + test/rotate-image-surface-paint.ref.png | Bin 190 -> 191 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 41cbd935f9dba276db716e2c71ac21dc60505be9 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Feb 11 15:24:20 2009 -0500 + + [test] Add cairo_test_NaN and use it in place of strtod + + strtod("NaN") returns 0.0 with the MSVC runtime so we + need to generate NaN some other way. + + test/cairo-test.h | 15 +++++++++++++++ + test/invalid-matrix.c | 2 +- + test/user-font-rescale.c | 2 +- + 3 files changed, 17 insertions(+), 2 deletions(-) + +commit 70297f257d4dc0accb5183b806d43a033887acb7 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Feb 10 17:58:28 2009 -0500 + + [test] Add crtdbg.h include + + crtdbg.h is required for _CrtSetReportMode() and _CrtSetReportFile(). + + test/cairo-test-runner.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit b9f0c4b25223830ce73f7e3adef85a0e97a31c0e +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Feb 10 17:57:00 2009 -0500 + + Use _cairo_round() instead of round() + + MSVC doesn't have round() and the code probably wants + to round in the same direction regardless of whether + the values are negative or positive. + + src/cairo-font-face-twin.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit dffdbd85157395bceb27d30d6426aa47173f6a18 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Feb 10 17:53:39 2009 -0500 + + Add _cairo_round() + + _cairo_round() has the same behaviour as _cairo_lround() except + it returns a double instead of an integer. + + src/cairoint.h | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 41e46c7754fff3a99927979925300a7588b9962f +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Feb 10 11:44:20 2009 -0500 + + [test] Don't embed preprocessor directives inside macros + + MSVC can't handle this. GCC will warn with -pedantic, but I'm not + sure we want to enable that. + + test/user-font-mask.c | 11 ++++++----- + test/user-font-proxy.c | 10 +++++----- + test/user-font.c | 10 +++++----- + 3 files changed, 16 insertions(+), 15 deletions(-) + +commit fe40d3bdb0d0cb93169b935e44d14b15e014fa6d +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon Feb 9 23:43:04 2009 -0500 + + [test] Allocate glyph array with malloc + + Keeping it on the stack causes a stack overflow of Window's + default 1mb stack. + + test/show-glyphs-many.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 50f8c2e4f3407ef237afd94c7317b1e185ccc9dc +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon Feb 9 23:39:38 2009 -0500 + + [test] define isnan() on MSVC + + Needed for user-font-rescale.c + + test/cairo-test.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit dd9fc47418b86610d7896fcf585037c96beaa66f +Author: Jeff Muizelaar <jeff@infidigm.net> +Date: Mon Feb 9 16:31:08 2009 -0500 + + Remove zero size data array for compilation with MSVC + + MSVC doesn't support zero sized arrays very well. For example, zero + sized arrays in arrays. + + src/cairo-tor-scan-converter.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit a6c8f18a391407044b33340cf13c49368a2e810e +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon Feb 9 15:59:01 2009 -0500 + + [test] Avoid C99 designated initializers + + MSVC doesn't support these so we shouldn't use them. + + test/path-precision.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit 3d2fcec948b93f75ba49b898633a84f60d419779 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Mon Feb 9 15:12:41 2009 -0500 + + [test] Define INFINITY on MSVC + + 1./0. produces a compiler error on MSVC so we'll use HUGEVAL instead. + + test/cairo-test.h | 3 --- + test/invalid-matrix.c | 4 ++-- + 2 files changed, 2 insertions(+), 5 deletions(-) + +commit 6fb4c6200c840d438e1c9cdd2c9e7b0f140863d8 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 5 10:29:01 2009 -0800 + + [gl] Clamp surface size to a minimum of (1,1) in create_similar. + + Fixes clip-zero test. + + src/cairo-gl-surface.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit a8a40810275ff0a59f5767034372523d34fbbd1b +Author: Eric Anholt <eric@anholt.net> +Date: Thu Feb 5 09:43:38 2009 -0800 + + [gl] clear surfaces to transparent on creation + + src/cairo-gl-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit e7eb6dab12b9d622b80e4202d753324f7161b269 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 29 22:31:56 2009 -0800 + + [gl] Hook up fill_rectangles. + + First actual "acceleration" for cairogears. Actually slows things down since + we're now pingponging between cpu and gpu. + + src/cairo-gl-surface.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 118 insertions(+), 1 deletions(-) + +commit 2ad5c3fc8fdb5941bdedcda3c972b3bae426fb32 +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 4 13:10:47 2009 -0800 + + [gl] Add a shortcut from image to gl in clone_similar. + + src/cairo-gl-surface.c | 27 +++++++++++++++++++++++++++ + 1 files changed, 27 insertions(+), 0 deletions(-) + +commit d9d56bb2ed552dd40415af53105a98b9d6ba39ab +Author: Eric Anholt <eric@anholt.net> +Date: Wed Feb 4 13:06:31 2009 -0800 + + [gl] Make create_similar actually create similar instead of image. + + src/cairo-gl-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 90b30219b945d6cce941a1b702c9b789a60d8b27 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 29 22:27:39 2009 -0800 + + [gl] Replace all-software implementation with all-GL-read/drawpixels. + + src/cairo-gl-surface.c | 315 +++++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 282 insertions(+), 33 deletions(-) + +commit c22ca79863a54b4293e607c8e4d515868c216842 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 6 12:56:48 2009 -0500 + + Don't distribute cairo-features.h (#19992) + + Second time I fix this bug. Mabe we should add a test for it! + + src/Makefile.am | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit a55655a82de8dee0f171efb2f7dfb1da341ecdd6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Feb 6 12:47:38 2009 -0500 + + [test] Fix "make dist" + + doc/public/tmpl/cairo-status.sgml | 1 + + test/Makefile.am | 1 - + 2 files changed, 1 insertions(+), 1 deletions(-) + +commit af5ca7249f7628a8b0758f51934e3c1f6d9f4f36 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Feb 5 16:46:50 2009 -0500 + + [test] Fix the definition of INFINITY + + In my defence, even with INFINITY as 0, I was seeing new asserts on win32. + Caught by Jeremy Lea. + + test/invalid-matrix.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 235de8d7a492ccd132fb83f78d33b408bd76aec1 +Author: Eric Anholt <eric@anholt.net> +Date: Thu Jan 29 09:19:01 2009 -0800 + + [gl] Add basics for GL surface backend using test-fallback as base. + + boilerplate/Makefile.sources | 3 + + boilerplate/Makefile.win32.features | 10 + + boilerplate/cairo-boilerplate-gl-private.h | 59 ++++++ + boilerplate/cairo-boilerplate-gl.c | 124 ++++++++++++ + boilerplate/cairo-boilerplate.c | 25 +++ + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 + + build/configure.ac.features | 1 + + configure.ac | 7 + + perf/cairo-perf.c | 1 + + src/Makefile.sources | 4 + + src/Makefile.win32.features | 14 ++ + src/cairo-gl-surface.c | 287 ++++++++++++++++++++++++++++ + src/cairo-gl.h | 89 +++++++++ + src/cairo-mutex-list-private.h | 4 + + src/cairo.h | 4 +- + 16 files changed, 635 insertions(+), 1 deletions(-) + +commit 83ec4b16b7b9a27439fee2d84c50e30a1ec2d68c +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Feb 4 14:04:05 2009 -0500 + + Elaborate the meaning of arithmetic rounding as done by _cairo_lround() + + src/cairo-misc.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2676b3bdd6fbeef62d34c100718f76fe5bbe647d +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Feb 3 14:18:44 2009 -0500 + + [test] Define INFINITY if it hasn't been defined. + + This lets us use more of invalid-matrix on win32 + + test/cairo-test.h | 3 +++ + test/invalid-matrix.c | 22 ++-------------------- + 2 files changed, 5 insertions(+), 20 deletions(-) + +commit 6b0c2c8ba61b6fdaad4c77e1a7c02c13c70e03c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 31 11:58:19 2009 +0000 + + [directfb] Don't access the scaled_font->glyphs cache directly + + Not only does it no longer exist, but doing so bypassed the locking + mechanisms and sanity checks! + + Spotted by Lance Hepler. + + src/cairo-directfb-surface.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit d63c1ab3ffcb64220a05c80e674324f524f29dc2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jan 31 22:10:57 2009 -0500 + + [util/malloc-stats] Do a single backtrace_symbols() call + + I was hoping that this may speed things up, but it didn't. :( + + util/malloc-stats.c | 58 +++++++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 50 insertions(+), 8 deletions(-) + +commit 64d1c7587041f765b393e1802a10cce02b807ad1 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jan 31 21:34:21 2009 -0500 + + [util] Fix memset bug in malloc-stats + + util/malloc-stats.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +commit b02aeb367dc4bada5412798fa93ce74f3d861273 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jan 31 21:33:42 2009 -0500 + + [util] Don't link backtrace-symbols into malloc-stats + + On my rawhide machine, seems like the glibc backgrace-symbols is now as + good as our private backtrace-symbols. + + util/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 7375f4c76bb169cc24d5d714520c337172d3cf69 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 30 21:54:56 2009 +0000 + + Trivial warning fixes. + + Cleanup a few compiler warnings about unused variables and mismatching + pointer types. + + src/cairo-bentley-ottmann.c | 1 - + src/cairo-ps-surface.c | 4 ++-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +commit f10eaadf89fa94172a81c05a59febab3f7e32396 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 30 21:50:24 2009 +0000 + + Revert "[png] Complete the idempotent read_png() -> write_png()" + + This reverts commit 564d64a1323c5cbcde2dd9365ac790fe8aa1c5a6. + + In hindsight, and with further discussion with Jeff Muizelaar, this + behaviour of using the stored contents from the mime-data is completely + the opposite of the users' expectations. When the user calls + cairo_surface_write_to_png(), usually in the course of debugging their + rendering code, they expect the precise contents of the surface to be + saved. + + src/cairo-png.c | 14 -------------- + 1 files changed, 0 insertions(+), 14 deletions(-) + +commit dd11d905a54a123ddf619e5f0194fb1800ba643d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 30 10:09:29 2009 +0000 + + [util] Use a hash-table for malloc-stats. + + At Behdad's request, convert the array of allocators into a simple hash + table (large static number of buckets + chaining) in order to speed up + malloc profiling. + + util/malloc-stats.c | 150 +++++++++++++++++++++++++++++++++++---------------- + 1 files changed, 103 insertions(+), 47 deletions(-) + +commit 322fb00066cc4655122fcf7d738a0cbbe46fcdd1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 22:05:06 2009 +0000 + + [test] Compile again without memfault. + + Hide the valgrind macro when not using memfault. + + test/cairo-test.c | 26 ++++++++++++++++---------- + 1 files changed, 16 insertions(+), 10 deletions(-) + +commit 5e6d25e204b681c5d5fba90abfe4d7401f23460f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 20:47:09 2008 +0000 + + [skiplist] Provide an initial stack allocated pool. + + Since we only need to allocate elts for intersection events and edges, the + number of elts in flight at any one time is actually quite small and can + usually be accommodated from an embedded pool. + + src/cairo-bentley-ottmann.c | 33 ++++++++++----------------------- + src/cairo-skiplist-private.h | 9 +++++---- + src/cairo-skiplist.c | 13 ++++++------- + 3 files changed, 21 insertions(+), 34 deletions(-) + +commit dd4276c6618aa250637e4499bc7cb0a35b24448c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 30 13:49:24 2008 +0000 + + [stroker] Rectilinear dashing. + + Extend the rectilinear stroker to handle dashes, so that for pixel-aligned + dashed strokes we completely avoid tessellation overhead. + + src/cairo-matrix.c | 3 +- + src/cairo-path-stroke.c | 492 +++++++++++++++++++++++++------ + src/cairo-pen.c | 11 +- + src/cairo-stroke-style.c | 18 +- + src/cairoint.h | 11 +- + test/Makefile.am | 4 +- + test/leaky-dashed-rectangle.pdf.ref.png | Bin 0 -> 347 bytes + test/leaky-dashed-rectangle.ps.ref.png | Bin 0 -> 444 bytes + test/leaky-dashed-rectangle.ps2.ref.png | Bin 444 -> 0 bytes + test/leaky-dashed-rectangle.ps3.ref.png | Bin 444 -> 0 bytes + test/leaky-dashed-rectangle.ref.png | Bin 366 -> 347 bytes + 11 files changed, 437 insertions(+), 102 deletions(-) + +commit 7f95288c03a400bf770165d427ef623d924b3b47 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 09:47:01 2009 +0000 + + [ft] Improve error status propagation. + + Propagate the error status from deep within the bowels, in order to reduce + the number of duplicate _cairo_error() and generally clean up the return + values. + + src/cairo-ft-font.c | 65 +++++++++++++++++++++++++-------------------------- + 1 files changed, 32 insertions(+), 33 deletions(-) + +commit 53bd2ae2ce27f9b954f34bc9921d798c9a074125 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 21:36:27 2009 +0000 + + [ft] Distinguish fatal backend errors whilst constructing scaled fonts. + + We now have the ability to distinguish an error case where the backend is + left in an inconsistent state from a transitory error. For the former we + need to report the error condition via the return value, which will be + propagated to the font-face. For the latter we just construct an in-error + scaled font nil-object which is passed back to the user. + + src/cairo-ft-font.c | 38 ++++++++++++++++++++++++++------------ + 1 files changed, 26 insertions(+), 12 deletions(-) + +commit f17aeedab31753974cce027f92571107425b1bcd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 21:11:41 2009 +0000 + + [scaled-font] Differentiate fatal error when creating fonts + + We only want to set the error state on the backend when it implies that + the font-face is in an inconsistent state. For example, this may be due to + a locking error in the backend or that we have detected a corrupt font. + + In contrast, if we merely fail to allocated the scaled font then we just + wish to return that error to the user, without making the font-face itself + inert. + + src/cairo-scaled-font.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit 58cab06c4c2c49bbecb11efaae6b41d30c06eff0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 20:52:29 2009 +0000 + + [scaled-font] Guard against invalid matrices when creating the scaled font. + + Check the user input for validity before passing the values on to the + backend. Currently the error is detected by the backend and the error is + propagated onto the font-face. + + src/cairo-scaled-font.c | 22 ++++++++++++++++++++-- + 1 files changed, 20 insertions(+), 2 deletions(-) + +commit 97c88f2af04b6bc5161fa2b567b5e922d7fd326a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 20:51:02 2009 +0000 + + [surface] Fix memleak of along set_mime_data() error path + + Free the mime_data holder if we fail to attach it to the surface. + + src/cairo-surface.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit d20e5fc2d95c61ab04e085bf3a99d2cb958421a5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 15:08:58 2009 +0000 + + [ps] Free images after emitting patterns. + + Ensure that the temporary images are freed after we finish with the + pattern. + + Note that we are using 3 members of the surface for temporary storage + whilst emitting patterns, this should be reviewed. + + src/cairo-ps-surface-private.h | 3 +++ + src/cairo-ps-surface.c | 18 ++++++++++++++++-- + 2 files changed, 19 insertions(+), 2 deletions(-) + +commit e6102dbe028ca93db936b2f4cd6368e2ba0a2209 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 14:00:13 2009 +0000 + + [png] Avoid a double free of the memory stream after error. + + _cairo_memory_stream_destroy() finalizes the stream even if the stream was + in error and that error is reported back to the caller - so ensure we + don't try to free the stream again. + + src/cairo-png.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0f3e366f8bbbaa80b518eb1b0297a6122901ce66 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 26 10:54:45 2009 +0000 + + [font-face] Close a race when resurrecting fonts. + + Paul Messmer provided a thorough analysis of a race between destroying the + final reference on a font and a concurrent recreation of the font - + demonstrating how it is possible for the create() to return the font that + was in the process of being freed. + + To stop the race, we need to recheck the reference count upon taking the + mutex guarding the hash table. + + src/cairo-ft-font.c | 6 ++++++ + src/cairo-toy-font-face.c | 6 ++++++ + 2 files changed, 12 insertions(+), 0 deletions(-) + +commit 312b5680a5754c8e7ee1332206b81449cf9bf8a3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 21:13:15 2009 +0000 + + [cff-subset] Free ps_name. + + Ensure ps_name is freed along error paths and by the normal destructor. + + src/cairo-cff-subset.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 5176507fcb61ae1ec1143aa0b6b098bc92575c48 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 13:37:54 2009 +0000 + + [truetype] Free font name. + + Remember to free the font name on destruction. + + src/cairo-truetype-subset.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ab0ac1b8a84b0d259602f0029a3b5552466f35a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 09:45:11 2009 +0000 + + [truetype] Initialise font_name + + Ensure the font_name is initialized to NULL. + + src/cairo-cff-subset.c | 2 ++ + src/cairo-truetype-subset.c | 1 + + 2 files changed, 3 insertions(+), 0 deletions(-) + +commit 8388af137841679b7c510980daf3cec1427b6e6b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 09:50:38 2009 +0000 + + [test] Trivial fixes for error paths. + + Kill a few leaks along error paths in the test code. + + test/create-from-png-stream.c | 36 ++++++++++++++++++++++++++++-------- + test/mime-data.c | 4 ++++ + 2 files changed, 32 insertions(+), 8 deletions(-) + +commit 3752f690b467432ab5b1058d450cb79d719a794a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 09:49:41 2009 +0000 + + [test] Suppress suppressed memfault report + + Check to see if there are any *unsuppressed* memfaults before declaring + unreported faults. + + test/cairo-test.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 8dc4c0da9b13b16c593e874d59c13a89a77a2481 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 13:17:24 2009 +0000 + + [toy-font] Fix unwind behaviour following error during construction. + + We failed to cleanup the font face correctly after an allocation failure + during _cairo_toy_font_face_init() leading to memleaks and live entries + being left in the font-face hash tables. + + src/cairo-toy-font-face.c | 43 +++++++++++++++++++++---------------------- + 1 files changed, 21 insertions(+), 22 deletions(-) + +commit 1d52fbc8f4f70e9e2419a6ed66cd907552d1d13b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 12:51:52 2009 +0000 + + [tessellator] Memleak on error path. + + Add a missing _cairo_skip_list_fini() after failure to allocate the + events. + + src/cairo-bentley-ottmann.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 6b5d2bf1a742b34a58d65f188fe15ffbf2f83118 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 10:42:42 2009 +0000 + + [trace] Comment out the redundant wrapping of FT_Open_Face() + + Remove the left-over debugging spew, but leave a comment to hopefully + clarify the situation with wrapping FT_Open_Face(). + + util/cairo-trace/trace.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit faa004033cde21cd81890c7f82abae8eb766bb4b +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jan 22 11:52:54 2009 +1100 + + cairo-trace: Print name of trace file. + + It's just a lot easier to use cairo-trace if it tells you + what file it just created. + + util/cairo-trace/trace.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit d108b2777fcd6ef4fa45aeeef457dc58522e325b +Author: Daniel Holbert <dholbert@mozilla.com> +Date: Fri Jan 23 10:18:48 2009 +0000 + + Spelling corrections: s/it's/its/ + + As a fun itch to scratch, I've been fixing incorrect uses of the + contraction "it's" in comments within the mozilla source tree (tracked + in https://bugzilla.mozilla.org/show_bug.cgi?id=458167 ), and I ran + across 6 instances of this typo in mozilla's snapshot of cairo. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-ft-font.c | 2 +- + src/cairo-matrix.c | 2 +- + src/cairo-mutex-impl-private.h | 2 +- + src/cairo-pdf-operators.c | 2 +- + src/cairo-surface-fallback.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit 6394ec3048f31b867d9588853fa400c6c630c6f1 +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Mon Dec 15 09:32:43 2008 +0100 + + [surface] add CAIRO_STATUS_INVALID_SIZE + + Adds an error code replacing CAIRO_STATUS_NO_MEMORY in one case where it + is not really appropriate. CAIRO_STATUS_INVALID_SIZE is used by several + backends that do not support image sizes beyond 2^15 pixels on each side. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-misc.c | 4 +++- + src/cairo-os2-surface.c | 9 +++++---- + src/cairo-quartz-image-surface.c | 5 +++-- + src/cairo-quartz-surface.c | 4 ++-- + src/cairo-spans.c | 2 ++ + src/cairo-surface.c | 1 + + src/cairo-xlib-surface.c | 7 +++---- + src/cairo.h | 6 ++++-- + src/cairoint.h | 2 +- + 9 files changed, 24 insertions(+), 16 deletions(-) + +commit 46acfd2e85dd6f7a73e1172d363d509c769376f2 +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Tue Dec 23 08:31:30 2008 +0100 + + [glitz] use image fallback if the cairo_content_t is unsupported + + The agreement on the mailing list was that returning NULL is the right + thing to do, and indeed the callers of _cairo_glitz_surface_create_similar + are prepared to receive NULL and return CAIRO_STATUS_INT_UNSUPPORTED in + that case. + + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + src/cairo-glitz-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 01d20b79daf0abe0f69ccec4ecd5122c5bfe9a4e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 23 10:09:37 2009 +0000 + + [scaled-font] Fix up syntax in doc comments + + The old NULL vs %NULL conflict. + + src/cairo-scaled-font-subsets-private.h | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit aaec63d48386ec825cd4d6e67b6adf7c5fd3b167 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 21 15:04:47 2008 +0000 + + [scaled-font] Global glyph cache + + Currently glyphs are cached independently in each font i.e. each font + maintains a cache of up to 256 glyphs, and there can be as many scaled fonts + in use as the application needs and references (we maintain a holdover + cache of 512 scaled fonts as well). + + Alternatively, as in this patch, we can maintain a global pool of glyphs + split between all open fonts. This allows a heavily used individual font + to cache more glyphs than we could allow if we used per-font glyph caches, + but at the same time maintains fairness across all fonts (by using random + replacement) and provides a cap on the maximum number of global glyphs. + + The glyphs are allocated in pages, which are cached in the global pool. + Using pages means we can exploit spatial locality within the font + (nearby indices are typically used in clusters) to reduce frequency of small + allocations and allow the scaled font to reserve a single MRU page of + glyphs. This caching dramatically reduces the cairo overhead during the + cairo-perf benchmarks, and drastically reduces the number of allocations + made by the application (for example browsing multi-lingual site with + firefox). + + boilerplate/cairo-boilerplate.c | 5 +- + src/cairo-cache-private.h | 8 + + src/cairo-cache.c | 36 +++-- + src/cairo-hash-private.h | 4 + + src/cairo-hash.c | 117 +++++++++++---- + src/cairo-mutex-list-private.h | 1 + + src/cairo-scaled-font-private.h | 6 +- + src/cairo-scaled-font.c | 306 ++++++++++++++++++++++++++++----------- + src/cairoint.h | 9 +- + 9 files changed, 351 insertions(+), 141 deletions(-) + +commit 54f6a49ebb18cf396823d0d70b95e4e264142171 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 19 15:36:29 2009 +0000 + + [bounds] Skip spline evaluation based on bounding bbox of control points. + + The bounding polygon of the control points, defines the extents of the + spline. Therefore if the control points are entirely contained within the + current path extents, so is the spline and we do not need to evaluate its + tight bounds. + + src/cairo-path-bounds.c | 21 +++++++++++++++++++-- + 1 files changed, 19 insertions(+), 2 deletions(-) + +commit e217c4da7bc5c4817e0d829ff61dd2bd5b3145a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 19 15:28:05 2009 +0000 + + [in-stroke] Check point against extents before computing path. + + We can avoid tessellating the path entirely by first checking whether the + query point is inside the path extents. + + src/cairo-gstate.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 48f9a0e6da0dd24ea9c809876ef3c745dcfd0d52 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 15 00:26:03 2009 +0000 + + [spline] Correct the definition of a cubic Bezier curve. + + Add the missing coefficients for p1 and p2 so the derivation of the + derivative and the solution for its inflection points stands correct. + + src/cairo-spline.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit ee7ac5681fa6a74b68beeae667d96d1421050fc9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 21 12:04:06 2009 +0000 + + [path] A degenerate curve_to becomes a line_to. + + Be consistent. + + src/cairo-path-fixed.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 778ced4879b09f7482bd41c398bf2d984754ed0b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 14 18:55:32 2009 +0000 + + [path] Rename _cairo_path_fixed_approximate_extents() + + Rename approximate_extents() to approximate_clip_extents() so that it is + consistent with the fill and stroke variants and clearer under what + circumstances you may wish to use it. + + src/cairo-analysis-surface.c | 2 +- + src/cairo-clip.c | 4 ++-- + src/cairo-path-bounds.c | 4 ++-- + src/cairo-surface-fallback.c | 2 +- + src/cairoint.h | 4 ++-- + 5 files changed, 8 insertions(+), 8 deletions(-) + +commit 75f7c420b624049c1f6c51795679f8029cd2231d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 21 13:09:41 2009 +0000 + + [perf] Remove a redundant clear during source init. + + After a short wild goose chase to see why + cairo_image_surface_fill_rectangles() was appearing in the profile, + tweak init_and_set_source_surface() to remove the redundant clear and + to propagate any errors in the auxiliary context. + + perf/cairo-perf-cover.c | 7 ++----- + 1 files changed, 2 insertions(+), 5 deletions(-) + +commit 706f6de68da65911f434d2065dcb143649fa793e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jan 18 16:47:59 2009 +0000 + + [perf] Add another variation on the many-rectangles case + + This variation aims to show the difference between calling fill once + per-rectangle, or once for all rectangles. + + perf/rectangles.c | 20 ++++++++++++++++++++ + 1 files changed, 20 insertions(+), 0 deletions(-) + +commit ff5d37a8ad063e84e88f453a403715bc85f8a3ec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 29 10:09:11 2009 +0000 + + [mutex] Civilise the comment. + + Note bene that Behdad does not like people shouting. + + src/cairo-mutex-impl-private.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f4ff6128d7fb6e4b5ba361a597fc6c0c88d5ec00 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Jan 28 17:16:32 2009 -0500 + + Avoid "empty body in an if-statement" warning + + Use '(void)expr;' instead of 'if (expr) ;' to avoid getting the warning. + 'if (expr) {}' is an option, however '(void)expr;' seems like a more common + idiom and getting warnings for __attribute__((warn_unsed_result)) functions is + probably prefered. + + src/cairo-mutex-impl-private.h | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 41feeedcc14bf8caef3c039de49f4f28143712c7 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Dec 3 23:58:22 2008 +1030 + + Use PS font name in PS TrueType fonts + + src/cairo-ps-surface.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit b7a9e1d4ac3972bc3d215070124b6a9eda68d3e3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Dec 3 23:58:05 2008 +1030 + + Embed full font name in PDF TrueType and CFF fonts + + if the full font name was available in the font. + + src/cairo-pdf-surface.c | 32 ++++++++++++++++++++++++-------- + 1 files changed, 24 insertions(+), 8 deletions(-) + +commit 6f2db9a4b07cde2c4932ea481228abc248e90145 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Dec 3 23:57:38 2008 +1030 + + Use PS font name in CFF and TrueType PDF font subsets + + James Cloos found that the font name in embedded fonts should be the + PostScript font name (nameID=6 in the name table). + + http://lists.cairographics.org/archives/cairo/2008-December/015919.html + + src/cairo-cff-subset.c | 70 ++++++++++++++-------- + src/cairo-pdf-surface.c | 16 +++--- + src/cairo-scaled-font-subsets-private.h | 19 +++++-- + src/cairo-truetype-subset.c | 97 ++++++++++++++++++++++--------- + 4 files changed, 136 insertions(+), 66 deletions(-) + +commit 2ed08f7801a2af27e35afcf57f00f4bf5d48384a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Dec 3 23:56:01 2008 +1030 + + Factor out duplicate code in truetype and cff subsetting + + The code for reading the font name from the name table has been moved + to a new function: _cairo_truetype_read_font_name(). + + src/cairo-cff-subset.c | 60 ++----------- + src/cairo-scaled-font-subsets-private.h | 18 ++++ + src/cairo-truetype-subset.c | 149 ++++++++++++++++++------------- + 3 files changed, 114 insertions(+), 113 deletions(-) + +commit 1deb1e451022b9dd5aa6ecb0b580b006047b630e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Nov 25 23:11:01 2008 +1030 + + PDF: Include subset tag in font name + + PDF requires font names of subsetted fonts to be preprended with + "XXXXXX+" where XXXXXX is a sequence of 6 uppercase letters unique the + font and the set of glyphs in the subset. + + src/cairo-pdf-surface.c | 112 +++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 104 insertions(+), 8 deletions(-) + +commit c4e54629bb444ed3e850ca8deec175936b90c4e4 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Jan 22 12:26:55 2009 +1100 + + Add details to test/COPYING about license of bundled fonts. + + Just the public-doamin 6x13.pcf file for now, but Adrian will + be bundling more soon. + + test/COPYING | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 6801f28f6dfeb21eec44052e75156e9d2b82422e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 14 13:59:28 2009 +0000 + + [perf] Add a utility to compare backends. + + A minor variation on cairo-perf-diff-files that compares tests with the + same name for multiple backends. + + perf/.gitignore | 1 + + perf/Makefile.am | 8 +- + perf/cairo-perf-compare-backends.c | 393 ++++++++++++++++++++++++++++++++++++ + perf/cairo-perf-diff-files.c | 2 +- + perf/cairo-perf-graph-files.c | 2 +- + perf/cairo-perf-report.c | 43 ++++- + perf/cairo-perf.h | 9 +- + 7 files changed, 448 insertions(+), 10 deletions(-) + +commit 4c79cd480db1cf10b6018bce3ea966587efc6081 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Jan 13 12:52:52 2009 +0000 + + [perf] Tweak dragon to hit fill_rectangles(). + + Add a second dragon path that is pixel-aligned and uses a solid pattern, + so that it can be drawn using fill-rectangles. + + perf/dragon.c | 42 +++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 41 insertions(+), 1 deletions(-) + +commit de9e6b5a3f4e4752e0f99e3ae20ac263a5aae4bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 12 01:00:30 2009 +0000 + + [perf] Cover linear gradient with 3 stops. + + The i915 is able to special case gradients with just 2 color stops to + avoid creating temporary gradient textures, so add a 3 stop linear + gradient to compare the speed difference. + + perf/cairo-perf-cover.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 files changed, 36 insertions(+), 0 deletions(-) + +commit 7cbc55f21624159dfa58a9a50ec004af9368ab3d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 10 00:12:06 2009 +0000 + + [perf] Add scaled similar surface sources. + + Cover the similar source with min/mag scale factors as well, so we can + compare the performance impact with scaled image sources. This is useful + to distinguish between transport overhead and transform cost. + + perf/cairo-perf-cover.c | 44 ++++++++++++++++++++++++++++++++++++++++---- + 1 files changed, 40 insertions(+), 4 deletions(-) + +commit afce1cfe987eeec6516aed1eb8fd97c2d3b9b07b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 9 14:22:36 2009 +0000 + + [scaled-font] Avoid repeated lookup of the same unicode during text->glyphs + + Performing the unicode to index is quite expensive, the + FcFreeTypeCharIndex() taking over 12% in the cairo-perf text benchmarks. + By adding a simple cache of translated unicode indices, we save around 25% + of the lookups during benchmarks, with a relative reduction in runtime. + + src/cairo-scaled-font.c | 63 ++++++++++++++++++++++++++++++---------------- + 1 files changed, 41 insertions(+), 22 deletions(-) + +commit 49eca78a4265432e285af58435219e8b804b38bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Jan 12 12:42:46 2009 +0000 + + [test] Add a huge-radial test case. + + Also test the handling of radial gradients with large radii. + + test/Makefile.am | 11 +++-- + test/huge-linear.c | 67 +++++++++++++++++++++++++++++++++ + test/huge-linear.ps3.ref.png | Bin 0 -> 1786 bytes + test/huge-linear.ref.png | Bin 0 -> 1619 bytes + test/huge-pattern.c | 65 -------------------------------- + test/huge-pattern.pdf.argb32.ref.png | Bin 2430 -> 0 bytes + test/huge-pattern.pdf.ref.png | Bin 2716 -> 0 bytes + test/huge-pattern.pdf.rgb24.ref.png | Bin 2817 -> 0 bytes + test/huge-pattern.ps3.ref.png | Bin 1786 -> 0 bytes + test/huge-pattern.ref.png | Bin 1619 -> 0 bytes + test/huge-radial.c | 69 ++++++++++++++++++++++++++++++++++ + test/huge-radial.ps3.ref.png | Bin 0 -> 18449 bytes + test/huge-radial.ref.png | Bin 0 -> 41702 bytes + 13 files changed, 142 insertions(+), 70 deletions(-) + +commit 7709d1d9d43a42dd8f9293f18141c57c76ca0970 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Jan 7 21:12:21 2009 +0000 + + [test] Add fill-image. + + A filled equivalent of stroke-image, that checks that the pattern + matrices are applied correctly during fills - useful with the + segregation between fills and strokes introduced by spans. + + test/Makefile.am | 2 + + test/fill-image.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++ + test/fill-image.ref.png | Bin 0 -> 1317 bytes + 3 files changed, 85 insertions(+), 0 deletions(-) + +commit 5605e4bfcd0b6e3e34eed3785bc8ae51b24a7385 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Jan 4 11:26:45 2009 +0000 + + [test] Propagate failure from painting large-source-roi + + Use cairo_get_target() to propagate any failure when creating the + large-source. + + test/large-source-roi.c | 28 ++++++++++++++++++++-------- + 1 files changed, 20 insertions(+), 8 deletions(-) + +commit 59a14f622389ae3f34f93c78b709df2ad6d1d624 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Jan 10 13:09:06 2009 -0500 + + Comment win32 maintainer-clean files again + + Makefile.am | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit cc5119173918623ce13363f4b25cd06076fc3fbc +Author: Søren Sandmann Pedersen <sandmann@redhat.com> +Date: Sat Jan 10 12:13:40 2009 -0500 + + Uncomment win32 maintainer-clean files to make Makefile.am syntactically correct + + Makefile.am | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 06deaa98b67f9e674a6933a8f54dae6a45faf6ff +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jan 9 15:55:24 2009 -0500 + + [build] Include all generated win32 build files in the repo + + So a git clone can be built on win32. The files only change after adding + new backends. + + Makefile.am | 4 +- + boilerplate/.gitignore | 2 +- + boilerplate/Makefile.am | 2 +- + boilerplate/Makefile.win32.features | 233 ++++++++++++++++++++++++++ + build/.gitignore | 4 +- + build/Makefile.win32.features | 22 +++ + build/Makefile.win32.features-h | 70 ++++++++ + src/.gitignore | 3 +- + src/Makefile.am | 2 +- + src/Makefile.win32.features | 311 +++++++++++++++++++++++++++++++++++ + 10 files changed, 644 insertions(+), 9 deletions(-) + +commit a5c1cdf2b030959309e1645bd115f058f1367296 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Nov 13 12:11:12 2008 +0200 + + [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents. + + This fixes the clip-all test case crashing for me. + + src/cairo-clip.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8157bc8a2dc0d555606d19ad52ae7a603471edd6 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sun Jan 4 04:14:28 2009 +0200 + + [test] Stress test using large source images. + + This test attempts to trigger failures in those backend clone_similar + methods that have size restrictions on the resulting image. It also + triggers errors in scaling down large image surfaces as the image + backend also fails this test. + + test/Makefile.am | 2 + + test/large-source-roi.c | 64 +++++++++++++++++++++++++++++++++++++++++ + test/large-source-roi.ref.png | Bin 0 -> 102 bytes + 3 files changed, 66 insertions(+), 0 deletions(-) + +commit 388ae177e4100698289819429fa1f8e6958d1c60 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 3 22:51:28 2009 +0000 + + [boilerplate] Remove CAIRO_BOILERPLATE_LOG() + + The variadic macro is only used within boilerplate/ so replace it with a + simple, and portable, call to fprintf. + + boilerplate/cairo-boilerplate-beos.cpp | 19 +++---------------- + boilerplate/cairo-boilerplate-glitz-agl.c | 10 +++++----- + boilerplate/cairo-boilerplate-glitz-glx.c | 6 +++--- + boilerplate/cairo-boilerplate-glitz-wgl.c | 10 +++++----- + boilerplate/cairo-boilerplate-system.c | 16 ++++++++-------- + boilerplate/cairo-boilerplate-xcb.c | 4 ++-- + boilerplate/cairo-boilerplate.h | 4 ---- + test/cairo-test.h | 1 - + 8 files changed, 26 insertions(+), 44 deletions(-) + +commit 5f816ccd25d1cd303fc1e9e44e80c1207b2a424a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 3 22:30:55 2009 +0000 + + [boilerplate] Redefine DEBUG() for portability concerns + + Behdad warned that using an empty variadic macro was non-portable. + + boilerplate/cairo-boilerplate-xlib.c | 18 +++++++++--------- + boilerplate/cairo-boilerplate.h | 2 +- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit acb2717372f3862ddbde8cfdc814132808b71f86 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 3 21:50:55 2009 +0000 + + [quartz] Define RTLD_DEFAULT + + RTLD_DEFAULT is a gnu-ism (at least according to the manpage on my linux + system) so declare _GNU_SOURCE before including dlfcn.h and failing that + provide our own definition. + + src/cairo-quartz-surface.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit ff1f5de5511ba0b7842b53223c26986e4bcdc38a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Jan 3 11:44:58 2009 +0000 + + [boilerplate] Suppress xlib warnings on stderr + + If we cannot test the xlib backend simply because there is no Display, + just report UNTESTED and do not clutter the output with superfluous + warnings [see the output from the buildbots for an example]. However, + keep the warnings around so that a developer can re-enable them + and so simply move them to a new "lower priority" macro. + + boilerplate/cairo-boilerplate-xlib.c | 18 +++++++++--------- + boilerplate/cairo-boilerplate.h | 4 ++++ + 2 files changed, 13 insertions(+), 9 deletions(-) + +commit 75538962c8af11b1ec669caca6259b7769b5cc1d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 17:45:26 2009 +0000 + + [boilerplate] Check the return of pclose() + + pclose() returns the child exit status, so we can use that to detect + errors in the convertor process. + + boilerplate/cairo-boilerplate.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 333158ec85cf3c610cc8965fc3f99d72b534cc2e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 15:36:39 2009 +0000 + + [configure] Replace awk comparator with an aclocal version + + As reported in https://bugs.freedesktop.org/show_bug.cgi?id=19283, the + fallback freetype version compare is broken inside the configure script as + the $1-$3 arguments are interpreted as the script is constructed. To avoid + making that awk comparison any more complicated, we import a version compare + from the autoconf archives - such that we have a reusable macro for the + furture. + + build/aclocal.compare.m4 | 162 ++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 18 ++---- + 2 files changed, 168 insertions(+), 12 deletions(-) + +commit dc33ae24619f4602c23716e9e407f8dd4f1b4a1d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 14:29:53 2009 +0000 + + [boilerplate] Use pclose() after popen + + Joonas pointed out that we should be using pclose() on a stream returned + by popen(). + + boilerplate/cairo-boilerplate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f230ce7658910c7f4f8feb722b77a2141824f963 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 14:03:35 2009 +0000 + + [path] Fix typo in bounds for empty path. + + We set the width to be zero, twice, and the height not even once! + + src/cairo-path-bounds.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 163c326c82a45c1f3ee84bbfaee2cc2e6dc1fafc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 13:46:16 2009 +0000 + + [test] Free test name + + Adding the missing free for the converted test name. + + test/cairo-test.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit dd65be740c475daf75c602fc79ff25977674d9cf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 13:42:53 2009 +0000 + + [test/pdf-mime-data] Free data on error paths. + + Cleanup the allocated buffers on error. + + test/pdf-mime-data.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 65f9760d661a0eb2edf9e53fb1b74666ce0ba3b9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 13:43:33 2009 +0000 + + [toy-font-face] Return defaults for error objects. + + Similar to the behaviour of the other objects, we return the default + conditions if the object is in any error (and not just a nil object). + + src/cairo-toy-font-face.c | 28 ++++++++++++++++++++++++---- + 1 files changed, 24 insertions(+), 4 deletions(-) + +commit d478d5ed5ce7c19a02e11435bcf69e867c6705d9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jan 2 06:48:54 2009 -0500 + + [doc] Give a small hint about Twin font + + Though, the details are not documented yet. I'm not sure how much of it + I do want to document. + + src/cairo-toy-font-face.c | 2 +- + src/cairo.c | 7 +++++++ + 2 files changed, 8 insertions(+), 1 deletions(-) + +commit a023104400f7f08775e9e52c304f5df2bc96382d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Jan 2 10:32:39 2009 +0000 + + [trace] Adopt _cairo_dtostr + + In order to have locale-independent output of decimal values, we need to + manually transform such numbers into strings. As this is a solved problem + for cairo, we adopt _cairo_output_stream_printf() and in particular the + _cairo_dtostr() routine for our own printf processing. + + util/cairo-trace/trace.c | 920 +++++++++++++++++++++++++++------------------- + 1 files changed, 546 insertions(+), 374 deletions(-) + +commit c601f308430f4d33929109fb9170b9322edca3c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Jan 1 16:55:08 2009 +0000 + + [cairo] Early return if we attempt to set the same colour. + + Profiling a silly video renderer that called set-source; rectangle; fill; + for each pixel, we can shave 5% off the cairo overhead by introducing an + early return if we attempt to reset the current colour. + + src/cairo.c | 30 ++++++++++++++++++++++++++++++ + 1 files changed, 30 insertions(+), 0 deletions(-) + +commit fb3522f33a565576002595bf03e07f6c8b16a471 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 19:19:54 2008 +0000 + + [os2] Fix memory leak of surface on error path + + Of we fail to create the mutex, free the surface before returning the + failure. + + Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19208. + + src/cairo-os2-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 8d23c3a6c2ab0ae168afb695e2b8c5f121ed2be3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 19:17:28 2008 +0000 + + [quartz] Delay allocation of string until after guard. + + Fixes a memory leak should we bail due to the version of Quartz being + insufficient. + + Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19209. + + src/cairo-quartz-font.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 9c9ed8f0b5ce8bc3036dcb0bf841ffaa24797cfa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 13:04:31 2008 +0000 + + [scaled-font] Post-process hash value. + + Mix the bits within the hash value to reduce clustering. + + src/cairo-scaled-font.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 555dd6b97ec432787d83242727164d25b459cf54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 13:02:00 2008 +0000 + + [scaled-font] Switch to a constant loop for hashing. + + As we only use the FNV hash for hashing matrices, expose the constant size + to the compiler so that it can perform its magic. + + src/cairo-scaled-font.c | 18 ++++++++---------- + 1 files changed, 8 insertions(+), 10 deletions(-) + +commit f5274f5847519208865159fa9bb254d76ba8ddac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 16:31:28 2008 +0000 + + Iterate over hash table using foreach() in destructors. + + Don't use the remarkably inefficient _cairo_hash_table_random_entry() to + remove all entries from the hash table! + + src/cairo-cff-subset.c | 21 +++++++++++---------- + src/cairo-ft-font.c | 47 ++++++++++++++++++++++------------------------- + 2 files changed, 33 insertions(+), 35 deletions(-) + +commit 1c4ea84b24f3f7e480f9c50b5bd77ac703c36ef0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 20:32:44 2008 +0000 + + [cairo] Early return if we attempt to set the same scaled_font + + If the application calls cairo_set_scaled_font() with the current + scaled font, we can return early as it is a no-op. + + src/cairo.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit b661f3d27ba77cdf470a86f6320b1bb31d92a9f0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 18:34:16 2008 +0000 + + [cairo] Embed a second gstate. + + Experiment with embedding a second gstate into the initial context to + reduce allocations. + + src/cairo-private.h | 2 +- + src/cairo.c | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 8abd21bd3afc143501f66fdcdc0c6c4139df490b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 23 15:09:15 2008 +0000 + + [script] Call the context creation hook + + Hook in the creation hook so applications can record or even modify the + contexts used in replay. + + util/cairo-script/cairo-script-operators.c | 7 ++++++- + 1 files changed, 6 insertions(+), 1 deletions(-) + +commit 2c9323d3942cbf93b100f711000f48a3eb869271 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 14:11:37 2008 +0000 + + [script] more targets + + util/cairo-script/csi-replay.c | 101 ++++++++++++++++++++++++++++++++++----- + 1 files changed, 88 insertions(+), 13 deletions(-) + +commit fd96cea4fefeeee8bcccde663faa559151e2606e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 12:54:53 2008 +0000 + + [script] Improve array construction. + + Limit the memory allocation to the initial array size and perform a direct + copy from the operand stack to the array. + + util/cairo-script/cairo-script-objects.c | 27 ++++++++++++---- + util/cairo-script/cairo-script-operators.c | 45 +++++++++++---------------- + util/cairo-script/cairo-script-private.h | 1 + + util/cairo-script/cairo-script-scanner.c | 2 +- + util/cairo-script/cairo-script-stack.c | 2 +- + 5 files changed, 41 insertions(+), 36 deletions(-) + +commit ecb8dce27c769158fe4a92432a90b24a96f8afa9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 18:32:44 2008 +0000 + + [script] Recreate surface content. + + Use the content recorded in the trace, defaulting to COLOR_ALPHA, to + determine the replayed surface type. + + util/cairo-script/cairo-script-interpreter.h | 1 + + util/cairo-script/cairo-script-operators.c | 8 ++- + util/cairo-script/csi-exec.c | 1 + + util/cairo-script/csi-replay.c | 80 +++++++++++++++++++------- + util/cairo-trace/trace.c | 8 ++- + 5 files changed, 74 insertions(+), 24 deletions(-) + +commit d21529b9ef31228182d2f61bb4f7beb6319b10c4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 15:38:13 2008 +0000 + + [trace] Correct escaped characters in string literal. + + Laziness caused the control character to be used instead of its + replacement in the escaped string! + + util/cairo-trace/trace.c | 13 ++++++++++++- + 1 files changed, 12 insertions(+), 1 deletions(-) + +commit ca39c4bf7f90646b70b2bbe9e7318fcfae99e35e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 15:35:40 2008 +0000 + + [trace] Correct a couple of typos. + + A couple of minor typos in the escaped characters strings. + + util/cairo-trace/trace.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 1f2fec7388092c8fea87651f9094ca2e0be2104b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 19 18:04:03 2008 +0000 + + [trace] Fix OBO in emit_glyphs() + + The largest index that will fit within 8 bits is 255 not 256! + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 7ebe9e68371e4e77139d9abeb7feb390203b1c8e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 21:59:16 2008 +0000 + + [trace] Minor tidy. + + Improve scoping of variables. + + util/cairo-trace/trace.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 931556005a1946c5e730afc7977551a2bc5be42c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 21:57:19 2008 +0000 + + [trace] Remove the forced switching to C locale + + This interferes with the application being traced. It is not clear from + printf(3) whether "%.f" is locale dependent or not - but until we have a + failure do not break applications unnecessarily! + + util/cairo-trace/cairo-trace.in | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit d0f41b92bf9a9ee313dde6f451b26fffb65a0906 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 17:26:43 2008 +0000 + + [trace] Do not force the output filename. + + Handle the case of tracing an application that spawns it own graphical + children but using the autonaming facility within cairo-trace. Currently + the traced process tree would all attempt to write to the same file, + creating a broken trace. This means sacrificing the display of the output + name, but allows use for a wider range of applications. + + util/cairo-trace/cairo-trace.in | 25 ++++++------------------- + 1 files changed, 6 insertions(+), 19 deletions(-) + +commit 19e8c5c7f4a561f2454380c8f4098a832d716d28 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 19:27:33 2008 +0000 + + [test] Fix mismatched free. + + A couple of strings allocated using glib functions but freed with system + malloc. + + Reported: http://bugs.freedesktop.org/show_bug.cgi?id=19210. + + test/pdf2png.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 6662eede2af2da50bff1902e694204c69e84f036 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 19:14:23 2008 +0000 + + [perf] Fix errors reported by cppcheck + + Trivial mistakes, identified in bugs + http://bugs.freedesktop.org/show_bug.cgi?id=19206 and + http://bugs.freedesktop.org/show_bug.cgi?id=19207. + + perf/cairo-perf-graph-files.c | 2 +- + perf/cairo-perf-report.c | 7 ++++--- + 2 files changed, 5 insertions(+), 4 deletions(-) + +commit 8419c4f124c6ffa75b44901dccab33df8bb6287a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 20 15:34:41 2008 +0000 + + [perf] Correct another reference to '<cairo>' + + I think that's the last use of the old internal name for twin! + + perf/twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 14d94d9354170003ec15847873a273c1752cf9f2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Jan 2 02:56:38 2009 -0500 + + Fix various README typos + + HACKING | 2 +- + src/README | 4 ++-- + util/README | 6 ++++++ + 3 files changed, 9 insertions(+), 3 deletions(-) + +commit 28a72648ba7abe02ebd4df7234424e333b85dc9c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Dec 30 13:48:47 2008 -0500 + + [gstate] Change the glyph dropping safety margin from 2em to 10em + + The small margin caused bugs with math fonts. See: + https://bugzilla.mozilla.org/show_bug.cgi?id=460023 + + src/cairo-gstate.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit fa63c43532de4a38d59d2746c34c815d18121062 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Dec 29 16:11:29 2008 +0000 + + [spline] Be pedantic and propagate errors. + + We know that the current users will always return SUCCESS, but propagate + the status return for future users. + + src/cairo-path-bounds.c | 6 ++---- + src/cairo-spline.c | 15 +++++++++++---- + src/cairo-types-private.h | 2 +- + src/cairoint.h | 2 +- + 4 files changed, 15 insertions(+), 10 deletions(-) + +commit 7df082dd8aaa9d31479a8bb1f6f1dfe07f52019a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Dec 29 16:06:36 2008 +0000 + + [test] Update twin reference images + + Subsequent to recent tweaks, update the reference images for twin. + + test/Makefile.am | 6 ++---- + test/twin.c | 2 +- + test/twin.pdf.ref.png | Bin 1669 -> 0 bytes + test/twin.ps.ref.png | Bin 0 -> 1114 bytes + test/twin.ps2.ref.png | Bin 1095 -> 0 bytes + test/twin.ps3.ref.png | Bin 1095 -> 0 bytes + test/twin.ref.png | Bin 1712 -> 1492 bytes + test/twin.svg.ref.png | Bin 0 -> 1487 bytes + test/twin.svg11.argb32.ref.png | Bin 1797 -> 0 bytes + test/twin.svg11.ref.png | Bin 1662 -> 0 bytes + test/twin.svg11.rgb24.ref.png | Bin 1797 -> 0 bytes + test/twin.svg12.argb32.ref.png | Bin 1797 -> 0 bytes + test/twin.svg12.ref.png | Bin 1662 -> 0 bytes + test/twin.svg12.rgb24.ref.png | Bin 1797 -> 0 bytes + 14 files changed, 3 insertions(+), 5 deletions(-) + +commit e10af38799eb77f1a7b5f75e76c733353c7b8622 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Dec 29 12:54:13 2008 +0000 + + make "make check" happy again + + Add the missing scoping that caused check-plt to complain. + + src/cairo-font-face-twin.c | 6 ++++-- + src/cairo-scaled-font.c | 2 ++ + src/cairo.c | 4 ++++ + src/cairoint.h | 8 +++++++- + 4 files changed, 17 insertions(+), 3 deletions(-) + +commit 010085622674bd02098742f401409da8e7c1b1dc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Dec 29 12:45:13 2008 +0000 + + [path] Remove tolerance from path bounders + + With Behdad's analytical analysis of the spline bbox, tolerance is now + redundant for the path extents and the approximate bounds, so remove it + from the functions parameters. + + src/cairo-analysis-surface.c | 3 +-- + src/cairo-gstate.c | 3 +-- + src/cairo-path-bounds.c | 18 ++++++------------ + src/cairo-surface-fallback.c | 1 - + src/cairoint.h | 5 +---- + 5 files changed, 9 insertions(+), 21 deletions(-) + +commit 84b81388bef4a2f300580081415fe09947edb96e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Dec 29 12:16:53 2008 +0000 + + [test] Draw spline bbox + + Add the stroked extents to the spline-decomposition test. + + test/Makefile.am | 6 +-- + test/spline-decomposition.c | 63 +++++++++++++++++++++++++++++++ + test/spline-decomposition.pdf.ref.png | Bin 20404 -> 19156 bytes + test/spline-decomposition.ps.ref.png | Bin 0 -> 9090 bytes + test/spline-decomposition.ps2.ref.png | Bin 8957 -> 0 bytes + test/spline-decomposition.ps3.ref.png | Bin 8957 -> 0 bytes + test/spline-decomposition.ref.png | Bin 20402 -> 19107 bytes + test/spline-decomposition.svg.ref.png | Bin 0 -> 19156 bytes + test/spline-decomposition.svg11.ref.png | Bin 20404 -> 0 bytes + test/spline-decomposition.svg12.ref.png | Bin 20404 -> 0 bytes + 10 files changed, 65 insertions(+), 4 deletions(-) + +commit efb17160904eda8fdb21fa1fd10a09081cf5cb3e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 16:06:27 2008 -0500 + + [_cairo_spline_bound] Protect against b == 0 + + src/cairo-spline.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit 0b59e29004bb19eb9bd458bbe6a48a7c367f72d0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 02:49:39 2008 -0500 + + [_cairo_spline_bound] Simplify condition + + src/cairo-spline.c | 14 +++++++++----- + 1 files changed, 9 insertions(+), 5 deletions(-) + +commit 3bf1b7d574620b1ab3c1fa50977a23d36ab04a40 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 02:41:39 2008 -0500 + + [_cairo_spline_bound] Fix the check for feasible solutions + + Also make it more strict. The only times we call sqrt now is + when a solution in (0,1) exists. + + src/cairo-spline.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit 7f840d156c1212eeb0fddad4b4a6844a9c070bd5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 02:02:30 2008 -0500 + + [spline] Save a couple more muls + + src/cairo-spline.c | 26 +++++++++++++------------- + 1 files changed, 13 insertions(+), 13 deletions(-) + +commit 3292f9906b3637564c37863dde5d214b0fee2885 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 01:59:12 2008 -0500 + + [spline] Do some checks to avoid calling sqrt() if no feasible solution exists + + src/cairo-spline.c | 27 ++++++++++++++++++++------- + 1 files changed, 20 insertions(+), 7 deletions(-) + +commit efe4d2ce99e65f9841951d3ff3e0536973bfb12c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 01:22:40 2008 -0500 + + [spline] Simplify code + + src/cairo-spline.c | 19 +++++++++---------- + 1 files changed, 9 insertions(+), 10 deletions(-) + +commit 8672178bf6c7f3a38e11e224f1d484b1f0c7fd7b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Dec 28 01:20:37 2008 -0500 + + [spline] Remove duplicated code by using a macro + + src/cairo-spline.c | 50 +++++++++++++++++++++----------------------------- + 1 files changed, 21 insertions(+), 29 deletions(-) + +commit ef0f6c3ca311c41c9062e1298b020eae1212984e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 27 23:13:45 2008 -0500 + + [spline] Add an analytical bounder for splines + + The way this works is very simple: Once for X, and once for Y, it + takes the derivative of the bezier equation, equals it to zero and + solves to find the extreme points, and if the extreme points are + interesting, adds them to the bounder. + + Not the fastest algorithm out there, but my estimate is that if + _de_casteljau() ends up breaking a stroke in at least 10 pieces, + then the new bounder is faster. Would be good to see some real + perf data. + + src/cairo-path-bounds.c | 18 ++----- + src/cairo-spline.c | 131 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 6 ++ + 3 files changed, 141 insertions(+), 14 deletions(-) + +commit f2f62c7c4402a28a65c8171238d163af6b2fb95a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 20:28:54 2008 -0500 + + [twin] Micro-optimize + + src/cairo-font-face-twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 50bc2bc0170be2a9c84ae3064525b18190e22b48 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 27 11:46:24 2008 +0000 + + [path] Simply track the current point for bounds. + + The idea is to track always update the current point, but not add it + during a move-to. + + src/cairo-path-bounds.c | 25 +++++++++++-------------- + 1 files changed, 11 insertions(+), 14 deletions(-) + +commit 078ebb01ba0b99ab4973ba479fe438f0674aa102 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 27 11:29:15 2008 +0000 + + [path] Initialise spline from current point + + Joonas spotted that the breakage with the curve bounds was the result of + initialising the spline using the original move to point and not the + current point. + + Fixes: Bug 19256 Gnome Foot in gnome-games rendered incorrectly + (https://bugs.freedesktop.org/show_bug.cgi?id=19256) + + src/cairo-path-bounds.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 4320ea68875cc015dfecdf5ed40195e276efca07 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 26 00:01:01 2008 +0000 + + [trace] Fix up positional arguments + + James Cloos pointed out that the correct form to use is "$@" when + executing the command line. + + util/cairo-trace/cairo-trace.in | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit e76a676c8f3d6dc9199cf0bc0856af0c659f4a16 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 25 09:51:51 2008 +0000 + + [twin] Trivial spelling correction. + + This ain't no decadent descendent of the Hershey font... + + src/cairo-font-face-twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9332c0a8eaf266e99555df9ad7769f8b5804cbfd +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 16:38:04 2008 -0500 + + [util] Add waterfall + + util/Makefile.am | 3 +- + util/waterfall | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 99 insertions(+), 1 deletions(-) + +commit ab1febbf22a641feb2fda4b21156b2bd45df039b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 16:35:33 2008 -0500 + + [twin] Resnap margin under monospace + + src/cairo-font-face-twin.c | 14 +++++++++++++- + 1 files changed, 13 insertions(+), 1 deletions(-) + +commit 3c91d9f5a2a290653a56242eed6acae4f16e99e3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 16:30:01 2008 -0500 + + [twin] Adjust margins + + src/cairo-font-face-twin.c | 114 +++++++++++++++++++++++++++----------------- + 1 files changed, 70 insertions(+), 44 deletions(-) + +commit 0b5c60bae1fb0924bbd43daab38932052e10b3be +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 15:48:46 2008 -0500 + + [twin] Clean up hinting + + src/cairo-font-face-twin.c | 89 +++++++++++++++++++++----------------------- + 1 files changed, 42 insertions(+), 47 deletions(-) + +commit 6e7a2c4ce32ddfb0e58a74fcba8c4e46e46d32a4 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 15:34:50 2008 -0500 + + [twin] Fix monospace for narrow glyphs + + src/cairo-font-face-twin.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +commit e8e6ae1294f11addcbc8a95db471bb48a50b0b1a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 15:15:15 2008 -0500 + + [twin] Cache pen and other properties on the scaled font + + src/cairo-font-face-twin.c | 170 ++++++++++++++++++++++++++------------------ + 1 files changed, 101 insertions(+), 69 deletions(-) + +commit e133cc14469e8ebb8311bf8db206147f6b07786d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 14:56:32 2008 -0500 + + [twin] Don't stretch pen + + src/cairo-font-face-twin.c | 11 +++++------ + 1 files changed, 5 insertions(+), 6 deletions(-) + +commit dec4d791f4cc626d1fa52d68518f787210240812 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 14:24:08 2008 -0500 + + [twin] Minor shuffling + + src/cairo-font-face-twin.c | 142 +++++++++++++++++++++++++------------------- + 1 files changed, 81 insertions(+), 61 deletions(-) + +commit c3de08ee2fcfb0e092f0299e249b0f5fe56b87bf +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 14:11:52 2008 -0500 + + [twin] Further reduce weight + + src/cairo-font-face-twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5c201ef5cfdfdd4e19db7e0995b85fbb3f2e6090 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 26 00:05:19 2008 -0500 + + [scaled-font] Make cairo_debug_reset_static_data() work again + + I broke it in a5983929f8f07f384f78e0b604e22037cf5ed716 + + src/cairo-debug.c | 2 ++ + src/cairo-scaled-font.c | 4 +--- + src/cairoint.h | 3 +++ + 3 files changed, 6 insertions(+), 3 deletions(-) + +commit 730ed68ec1ac10dcb9c7c69759f72fcaa3ea82e5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 23:29:02 2008 -0500 + + [pattern] Fix comment typo + + src/cairo-pattern.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a5f4a97aa4122d8c4b8f31053d421a52c356e270 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 02:48:26 2008 -0500 + + [twin] Don't hint pen if hint-style is SLIGHT + + src/cairo-font-face-twin.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 0c7eaf6e0a2c2f0db634f8120fcbc03f7e8fd751 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 02:44:19 2008 -0500 + + [twin] Improve glyph hints + + src/cairo-font-face-twin-data.c | 202 ++++++++++++++++++++++----------------- + 1 files changed, 116 insertions(+), 86 deletions(-) + +commit e6205ea5a38c9de4c08b313a1beb70d4a38b0676 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 02:10:16 2008 -0500 + + [twin] Improve hinting + + src/cairo-font-face-twin.c | 90 +++++++++++++++++-------------------------- + 1 files changed, 36 insertions(+), 54 deletions(-) + +commit da8658b67510daaefd542b80e6a997bbdfd82d44 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 01:35:36 2008 -0500 + + [twin] Hint dots + + src/cairo-font-face-twin-data.c | 24 ++++++++++++------------ + 1 files changed, 12 insertions(+), 12 deletions(-) + +commit f4c81e18f85c6a68d682301abfd75e7c208c1e1a +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 01:29:41 2008 -0500 + + [twin] Disable pen hinting if hinting is off + + src/cairo-font-face-twin.c | 27 +++++++++++++++++++-------- + 1 files changed, 19 insertions(+), 8 deletions(-) + +commit af91fc1974ce2dfbaab187e22769cdfb9e6279d9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 01:24:46 2008 -0500 + + [twin] Optimize hinting + + src/cairo-font-face-twin.c | 7 +------ + 1 files changed, 1 insertions(+), 6 deletions(-) + +commit 439959d1af1f6c4ce174a3fee524eacfc18a00bd +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 25 01:06:47 2008 -0500 + + [twin] Implement hinting + + src/cairo-font-face-twin.c | 148 ++++++++++++++++++++++++++++++++++++++------ + 1 files changed, 129 insertions(+), 19 deletions(-) + +commit 9f9f5317dca6a9988a0a62aaa60393570157af63 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 22:29:59 2008 -0500 + + [util] Fix pangram + + util/cairo-view | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 8296bc74c8687a2f52e06174e9dc70d32d1181c8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 18:00:04 2008 -0500 + + [twin] Reduce the weight just a bit, such that bold doesn't look as bad + + src/cairo-font-face-twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b2f89625453e2a15da175ea5b4ca5af6c2201d96 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 17:29:21 2008 -0500 + + [twin] Adjust baseline + + src/cairo-font-face-twin.c | 11 ++++------- + 1 files changed, 4 insertions(+), 7 deletions(-) + +commit f980d017d2360634f391eb1129317446bfe42cc9 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 17:00:43 2008 -0500 + + [twin] Remove serif setting + + I don't think I'm going to implement serif-drawing soon, so, remove the + infrastructure. Can always be added back later. + + src/cairo-font-face-twin.c | 21 ++------------------- + 1 files changed, 2 insertions(+), 19 deletions(-) + +commit 1116febb40cb5e5f7eafe97999d1143347819b3f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 16:32:25 2008 -0500 + + [twin] Implement small-caps + + src/cairo-font-face-twin.c | 27 ++++++++++++++++----------- + 1 files changed, 16 insertions(+), 11 deletions(-) + +commit 6767673961401c7ab7b92eb8dfbb345efb560741 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 16:13:12 2008 -0500 + + [twin] Implement stretch + + src/cairo-font-face-twin.c | 27 +++++++++++++++++++++------ + 1 files changed, 21 insertions(+), 6 deletions(-) + +commit 0656e947f11356877014df93bd083123c7313dc3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 15:43:17 2008 -0500 + + [twin] Implement slant + + src/cairo-font-face-twin.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 9d493fcd16fb770f21fa732b08834f3a435fe1f2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 15:36:57 2008 -0500 + + [twin] Disable the serif mode + + src/cairo-font-face-twin.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 6c1d21bf8947f5b11702626ddfd9bac18073188d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 03:47:21 2008 -0500 + + [twin] Implement monospace + + src/cairo-font-face-twin.c | 30 +++++++++++++++++++++++------- + 1 files changed, 23 insertions(+), 7 deletions(-) + +commit 5def8c587b2b897bfebc6d77a6a3e13355cae2f2 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 24 03:45:06 2008 -0500 + + [twin] Fix dots + + src/cairo-font-face-twin-data.c | 54 +++++++++++++++++++++++--------------- + 1 files changed, 33 insertions(+), 21 deletions(-) + +commit a303bbaea332df20b81f068366d701d66913c043 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Dec 23 16:12:56 2008 -0500 + + [font-face-get-type] Fix test to cleanup the surface and context properly + + Destroy the context and the surface even when the test fails. + + I ran into this because cairo_debug_reset_static_data() is called between the + tests on the quartz backend (it doesn't fork) and isn't on other backends? This + is perhaps a mistake... + + test/font-face-get-type.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit 52cc31a7fa6570e538762631359a92e7b717710e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Dec 23 13:48:52 2008 -0500 + + [util] Add cairo-view + + util/Makefile.am | 3 +- + util/cairo-view | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 115 insertions(+), 1 deletions(-) + +commit 418c7ef133840c10eb0be7e75c7dd11533fbe897 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Dec 23 02:39:17 2008 -0500 + + [twin] Adjust font extents + + src/cairo-font-face-twin.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 96e41c28e980f313c51a0eed81681e7e48752797 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 20 23:30:59 2008 -0500 + + [twin] Minor cleanup + + src/cairo-font-face-twin.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +commit 556f6ce364d81f9309162d21deb86a3d5b8b9a6e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 20 23:16:53 2008 -0500 + + [twin] close_path the Q + + src/cairo-font-face-twin-data.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6929ed800d19f359af7436636e8adc6203083a10 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 20 20:25:01 2008 -0500 + + [twin] Fix serif option parsing. Also make serif and weight do something + + src/cairo-font-face-twin.c | 20 ++++++++++++++++---- + 1 files changed, 16 insertions(+), 4 deletions(-) + +commit d423339fcef3c41225196c4371fb2c133ca61144 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 20 19:39:58 2008 -0500 + + [twin] Add face properties + + Just parse them now. We don't use them yet. + + src/cairo-font-face-twin.c | 191 ++++++++++++++++++++++++++++++++++++++++++-- + src/cairo-user-font.c | 4 +- + src/cairoint.h | 6 +- + 3 files changed, 189 insertions(+), 12 deletions(-) + +commit 93672d842f2b2c840bb9e73901faa4ce5df9c792 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 23 15:00:47 2008 +0000 + + [test] Fix reference handling in user-font-rescale + + user-font-rescale stored the current font on the context in order to + create a rescaling proxy font. As we failed to take a reference to the + font, it caught us by surprise when the font disappeared as we modified + the context before creating our proxy. Ho hum. + + test/user-font-rescale.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 5ad65dc4be5964265946de59a951f2304d64159e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Dec 23 14:56:48 2008 +1030 + + Document PDF restrict_to_version API + + doc/public/cairo-sections.txt | 4 ++++ + doc/public/tmpl/cairo-pdf.sgml | 35 +++++++++++++++++++++++++++++++++++ + src/cairo-pdf.h | 2 ++ + 3 files changed, 41 insertions(+), 0 deletions(-) + +commit 1869e0240bcc93c93e8abd1c8f930cf08ca8ee24 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Dec 23 14:37:30 2008 +1030 + + Document cairo_surface_(set|get)_mime_data() and mime types + + doc/public/cairo-sections.txt | 5 +++ + doc/public/tmpl/cairo-surface.sgml | 50 ++++++++++++++++++++++++++++++++++- + 2 files changed, 53 insertions(+), 2 deletions(-) + +commit 1f894033f077731485e1228f7e071e75c37a9947 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Dec 23 03:14:38 2008 +0200 + + [spans] Close open subpaths when filling with a scan converter. + + As reported by Christian Persch, open subpaths weren't being + closed when rendering to an image surface: + + http://bugs.freedesktop.org/show_bug.cgi?id=19240 + + src/cairo-spans.c | 53 +++++++++++++++++++++++++++++++---------------------- + 1 files changed, 31 insertions(+), 22 deletions(-) + +commit 0aa34c6435eaa260292cf10d270ebbf3314c7924 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Dec 23 02:18:14 2008 +0200 + + [svg] Fix build when building only the svg vector surface. + + The SVG vector surface pulls in font subsetting and that in turns + uses the PDF operators in cairo-type3-glyph-surface.c. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 38ec6e302cdd703447f169d95121d434c7495501 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Dec 23 02:05:32 2008 +0200 + + [test] Fix any2ppm build when building without the full complement of surfaces. + + It was complaining about g_init_type () being used without the proper includes + which would have been pulled in by the svg or poppler includes. + + test/any2ppm.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 6ce97907edfa8a7b09abfc090a9c03d235de2ada +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Dec 22 11:09:27 2008 +1030 + + win32-font: truncate instead of fail if toy font name too long + + http://lists.cairographics.org/archives/cairo/2008-December/016109.html + + src/cairo-win32-font.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +commit d99583bae680fea852e957afdf674e2031aa7928 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Dec 21 17:03:17 2008 +1030 + + Fix win32 font breakage + + as a result of the toy font face changes in f7ab65e9b0c0f08be8d294e90131baa2decf1f1d + + src/cairo-win32-font.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit a5983929f8f07f384f78e0b604e22037cf5ed716 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Dec 20 01:18:12 2008 -0500 + + [toy-font-face] Move toy font face code in a file of its own + + src/Makefile.sources | 1 + + src/cairo-debug.c | 2 +- + src/cairo-font-face.c | 449 ------------------------------------ + src/cairo-mutex-list-private.h | 2 +- + src/cairo-os2-surface.c | 9 +- + src/cairo-scaled-font.c | 4 +- + src/cairo-toy-font-face.c | 489 ++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 5 +- + 8 files changed, 497 insertions(+), 464 deletions(-) + +commit 8bf49b27aeea8179b5862a424fb3ef1934be6e0e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Dec 19 20:46:36 2008 -0500 + + [font-face] Use cairo_font_face_t instead of toy, for nil objects + + And with a NULL backend. We are not supposed to read the nil objects + afterall. + + If this causes crashes, the crash site should be fixed. + + src/cairo-font-face.c | 55 +++++++++---------------------------------------- + src/cairoint.h | 2 +- + 2 files changed, 11 insertions(+), 46 deletions(-) + +commit e3675f8ac0acb285b2d669c0a44322623dac5fe9 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Dec 19 08:50:26 2008 -0500 + + Fix definition of _cairo_quartz_font_face_backend + + Removes the NULL so that _cairo_quartz_font_face_scaled_font_create + is in the correct location. + + src/cairo-quartz-font.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit fa7d96e1236cdfa0016f96e5c7b6bd209c405cba +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Fri Dec 19 08:47:07 2008 -0500 + + Fix compilation of quartz surface. + + Declares _cairo_quartz_scaled_font_backend ahead of time and makes it static. + Also, removes the 'static' from the _cairo_quartz_font_backend definition. + + src/cairo-quartz-font.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit f8886ad1b30ec9c29ec5ac3e9cd5519dbc9e7b65 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 18 20:50:20 2008 -0500 + + [scaled-font-zero-matrix] Destrory scaled font and font options + + Oops. + + test/scaled-font-zero-matrix.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 4567692326daf592ab432670c6d33b49f940dd35 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 18 18:03:40 2008 -0500 + + Add test creating a scaled font with a zero ctm matrix + + test/Makefile.am | 1 + + test/scaled-font-zero-matrix.c | 59 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 60 insertions(+), 0 deletions(-) + +commit 18054ef00c69f62804e08734fd2c3286373b451f +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 18 18:01:52 2008 -0500 + + [test] Quartz doesn't like being forked + + When the cairo-test-suite forks CoreFoundation complains with: + "The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec(). + When forked so avoid doing it in the test suite for now. In the future we should investigate + the possibility of a work around. + + test/cairo-test-runner.c | 12 ++++++++---- + 1 files changed, 8 insertions(+), 4 deletions(-) + +commit b4e0d489bb0317fdd935ad2d29830e48b5ce4f6c +Merge: 813cbf1 f60da9a +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 18 17:25:17 2008 -0500 + + Merge branch '1.8' + + Conflicts: + NEWS + build/Makefile.am.changelog + cairo-version.h + src/cairo-gstate.c + +commit f60da9a379890a3a4cd74cdad48e73c22cb74160 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 18 17:07:25 2008 -0500 + + Fix _compute_transform to check for nearly degenerate matrices + + If a matrix was something like [0 .000001 0, .000001 0 0] the old code would + assume that xx and yy were greater than 0 and turn the nearly degenerate matrix + into an actual degenerate one. This caused things to blow up later on. Now we + check that our nearly rectangular matrices are not nearly degenerate, and let + the nearly degenerate ones fall through to the non-rectangular path. + + Note: I'm not sure why NEARLY_ZERO(d) is fabs(d) < 1/65536 instead of some + other value. Hopefully, it's a useful definition. + + This problem was found by a test case attached to: + https://bugzilla.mozilla.org/show_bug.cgi?id=467423 + + src/cairo-win32-font.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 813cbf13ddbd3d4b708b3b362dd6c108966f44d5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 14:52:03 2008 +0000 + + [path] Separate the approx. bounds into 3 distinct functions + + Based on feedback from Jeff Muizelaar, there is a case for a very quick + and dirty extents approximation based solely on the curve control points + (for example when computing the clip intersect rectangle of a path) and + by moving the stroke extension into a core function we can clean up the + interface for all users, and centralise the logic of approximating the + stroke extents. + + src/cairo-analysis-surface.c | 32 ++++++------- + src/cairo-clip.c | 14 +++--- + src/cairo-path-bounds.c | 101 +++++++++++++++++++++++++++++++++++++++-- + src/cairo-rectangle.c | 10 ---- + src/cairo-surface-fallback.c | 10 ++-- + src/cairoint.h | 19 +++++--- + 6 files changed, 134 insertions(+), 52 deletions(-) + +commit dea40e61babe608315b6d365094cf518814b134e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 11:50:00 2008 +0000 + + [path] Return the fixed-point bounds of the path + + When analysing the stroke extents, we need the original fixed-point + extents so that we do not incur an OBO when we round-to-integer a second + time. We also need a more accurate estimate than simply using the control + points of the curve, so pass in tolerance and decompose until someone + discovers a cheaper algorithm to determine the precise aligned bounding + box of a bezier curve. + + src/cairo-analysis-surface.c | 30 ++++++------- + src/cairo-clip.c | 25 ++++++----- + src/cairo-path-bounds.c | 95 +++++++++++++++++++++--------------------- + src/cairo-rectangle.c | 10 ++++ + src/cairo-surface-fallback.c | 9 +++- + src/cairoint.h | 9 +++- + 6 files changed, 98 insertions(+), 80 deletions(-) + +commit 3a53e0261b1b5af21bf37e2a211eefd501bd5358 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 11:10:17 2008 +0000 + + [test] Update twin reference images. + + Closing the 'o' in twin has removed a slight artefact - update the reference + images to match. + + test/twin.pdf.ref.png | Bin 1673 -> 1669 bytes + test/twin.ref.png | Bin 1718 -> 1712 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit c2478de26cc1781b8f8604191a9f75ad29eac746 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 10:50:45 2008 +0000 + + [twin] Switch internal users to the new name. + + s/<cairo>/@cairo:/ + + doc/tutorial/src/twin.c | 2 +- + test/twin.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 3424b5f8c8cb1f2ef16b9e8429e64f720106f4d8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 10:47:44 2008 +0000 + + [scaled-font] Make check-doc happy + + Replace a structure marker '#' with a macro marker '%'. + + src/cairo-scaled-font.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 449bf0bb7bff38da1c5d0286cb4f22c858bcc3a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 10:45:22 2008 +0000 + + [script] Silence incorrect compiler warnings + + Bah, the compiler failed to do its IPA correctly and wrongly complained + about potential use of uninitialised out-params guarded by the return + value. Silence them! + + util/cairo-script/cairo-script-operators.c | 38 ++++++++++++++-------------- + 1 files changed, 19 insertions(+), 19 deletions(-) + +commit ce0b136a441382b25d0932cd66a906a30a693365 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 20:34:45 2008 +0000 + + Query the backend to see if we can repaint the solid pattern. + + If we are dithering on the Xlib backend we can not simply repaint the + surface used for a solid pattern and must recreate it from scratch. + However, for ordinary XRender usage we do not want to have to pay that + price - so query the backend to see if we can reuse the surface. + + src/cairo-analysis-surface.c | 2 ++ + src/cairo-meta-surface.c | 1 + + src/cairo-paginated-surface.c | 1 + + src/cairo-pdf-surface.c | 1 + + src/cairo-script-surface.c | 1 + + src/cairo-surface.c | 41 ++++++++++++++++++++++++----------------- + src/cairo-xlib-surface.c | 12 +++++++++++- + src/cairoint.h | 5 +++++ + src/test-meta-surface.c | 1 + + src/test-paginated-surface.c | 1 + + 10 files changed, 48 insertions(+), 18 deletions(-) + +commit 0df43251d4b4641d16c0a2e2c49d18dd2a9c832e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 23:45:39 2008 +0000 + + [replay] Take advantage of unresolved fonts + + As Behdad has changed the underlying ft-font to accept unresolved patterns, + take advantage of that to simplify the replay code. + + util/cairo-script/cairo-script-operators.c | 16 ++-------------- + 1 files changed, 2 insertions(+), 14 deletions(-) + +commit 97a00bdd4eefade8d0808b5572bcdbba26c9c8f3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 17:32:07 2008 +0000 + + [cairoint.h] Wrap macro in parenthesis + + Ensure that the stride calculation macro is not influenced by surrounding + precedence issues by enclosing it in a pair of parenthesis. + + src/cairoint.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit aa65e756d496f4c3a8b43d2100e17dc39c2c26b7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 5 11:21:11 2008 +0000 + + [script] Avoid creating 0x0 windows + + XCreateWindow dies if asked to create a 0x0 window, so don't and use a 1x1 + pixel window for a zero-sized surface. + + util/cairo-script/csi-replay.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 6458903c95c2bba3f1b9ceaaafb6979d180ab039 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 10:07:32 2008 +0000 + + [image] Eliminate the short-lived context used for coercing. + + When coercing from one image format to another we performed a paint + operation using a temporary context - this is overkill as we can just call + _cairo_surface_paint() directly. + + src/cairo-image-surface.c | 42 ++++++++++++++++++++++---------------- + src/cairo-scaled-font.c | 40 +++++++++++++++++++----------------- + src/cairo-svg-surface.c | 18 +++++++--------- + src/cairo-type3-glyph-surface.c | 20 +++-------------- + src/cairoint.h | 4 +- + 5 files changed, 59 insertions(+), 65 deletions(-) + +commit 9b46d13b6cd58c711010df89a41b216c5cc8c881 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 23:52:32 2008 +0000 + + [trace] Runtime version check. + + Check that the application is using cairo >= 1.9 before attempting to + query the mime-data. + + util/cairo-trace/trace.c | 47 ++++++++++++++++++++++++--------------------- + 1 files changed, 25 insertions(+), 22 deletions(-) + +commit 2d790daa957471670f4ae0d3b22da89e4ee7111f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 18 00:47:08 2008 +0000 + + [pattern] Use a solid pattern for a uniform gradient. + + If each color stop in a gradient is identical, replace the gradient + surface with a simple solid surface. As seen in the wild. + + src/cairo-pattern.c | 54 ++++++++++++++++++++++++++++++++++++-------------- + 1 files changed, 39 insertions(+), 15 deletions(-) + +commit 25a4677200ea6689be0dca9d533842dc7da54837 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 17 09:29:35 2008 +0000 + + [analysis] Use approximate extents. + + Use the approximate path based extents to avoid tessellation. + + src/cairo-analysis-surface.c | 54 +++++++++++++---------------------------- + 1 files changed, 17 insertions(+), 37 deletions(-) + +commit 18bca91411e9ba6e1e58dbc945a0567d2661568f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Dec 18 02:12:14 2008 -0500 + + [twin] close_path the 'o' + + src/cairo-font-face-twin-data.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5ee6aad471d460f960a5e7a5a8e35aca0f0af60e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 18:05:51 2008 -0500 + + [toy] Use twin font if font backend returns UNSUPPORTED + + src/cairo-font-face.c | 19 ++++++++----------- + 1 files changed, 8 insertions(+), 11 deletions(-) + +commit eb069094ea4471b3e63881fe0f8b958ad8924c7d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 17:30:34 2008 -0500 + + Treat any toy family starting with "@cairo:" as request for twin + + src/cairo-font-face.c | 3 ++- + src/cairoint.h | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 32c66109059398e88f50335bef75fa8c0e51c4c8 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Dec 17 17:43:37 2008 -0500 + + Call _cairo_error when propagating error status from the font_face. + + src/cairo-gstate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1d72e53c3e99f93aa59967c76f1b1b4c035b9130 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Dec 17 17:42:18 2008 -0500 + + Add a missing _cairo_error() to a bunch of status returns. + + src/cairo-misc.c | 4 ++-- + src/cairo-scaled-font.c | 14 +++++++------- + src/cairo.c | 2 +- + 3 files changed, 10 insertions(+), 10 deletions(-) + +commit af3a892c3ef6a7c1d28d523944bbb67e59edc1de +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 16:45:28 2008 -0500 + + [ft] Remove stale comment + + src/cairo-ft-font.c | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit 0137b9bd320783264d865a397392b0ee14fd69b3 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Wed Dec 17 16:40:12 2008 -0500 + + [ft] Don't call FT_Done_Face() on faces we did not create + + src/cairo-ft-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e4d7c87b5e449a743a68dd256faaa3242f191a44 +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Wed Dec 17 16:40:12 2008 -0500 + + [ft] Don't call FT_Done_Face() on faces we did not create + + src/cairo-ft-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6778a5f67ae2e35e809cf4464530e2bb05870378 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 16:19:45 2008 -0500 + + [.gitignore] Update + + build/.gitignore | 2 ++ + src/.gitignore | 1 + + 2 files changed, 3 insertions(+), 0 deletions(-) + +commit 26f471999973c538e45db0ae9f0227fbe5dedf24 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 16:08:32 2008 -0500 + + [scaled-font] Improve docs + + src/cairo-scaled-font.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +commit f7ab65e9b0c0f08be8d294e90131baa2decf1f1d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Dec 17 06:25:50 2008 -0500 + + Clean up toy font face handling + + This commit moves the toy-to-real mapping from the scaled font creation + time to font face creation. A toy font face will keep an internal ref + to an implementation face. Then cairo_scaled_font_create() will simply + substitute the implementation face before creating anything. + + This also modifies the cairo-ft toy creation in that we now create a + non-resolved pattern and store it in a cairo-ft font-face. We then + do the resolving and unscaled font creation at scaled-font creation + time. This also means that cairo_ft_font_face_create_for_pattern() + now accepts non-resolved patterns too, and does the right thing about + them. As much as that can be called right. + + Some testing of toy font creation performance is in order, as is testing + win32 and quartz font backends. + + src/cairo-font-face.c | 143 +++++++++--------- + src/cairo-ft-font.c | 371 ++++++++++++++++++++++++++++------------------- + src/cairo-quartz-font.c | 208 ++++++++++----------------- + src/cairo-scaled-font.c | 19 +-- + src/cairo-user-font.c | 62 +------- + src/cairo-win32-font.c | 20 +-- + src/cairoint.h | 40 ++--- + 7 files changed, 412 insertions(+), 451 deletions(-) + +commit 43edb4dd7b8d0614a6c2be15dfa72f980dd55f1d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 12 18:10:58 2008 +0000 + + Fix compilation with gcov + + We need to add --coverage to LDFLAGS, so create CAIRO_LDFLAGS and use that + to populate AM_LDFLAGS. + + boilerplate/Makefile.am | 1 + + build/configure.ac.analysis | 6 +++++- + build/configure.ac.features | 1 + + src/Makefile.am | 3 ++- + test/Makefile.am | 17 +++++++++-------- + 5 files changed, 18 insertions(+), 10 deletions(-) + +commit bcea3151d66495f03d67ce71274203d0515caf4c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 12 14:08:11 2008 +0000 + + [test] Add missing joins.ref.png + + Missed this file when adding the reference images for joins. + + test/joins.ref.png | Bin 0 -> 5879 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit 8cec548854d86dac8f0c99e99461421c8ad653b1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 14:06:07 2008 +0000 + + [NEWS] Add notes for 1.8.6 + + Add the historical blurb for 1.8.6. + + NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 49 insertions(+), 0 deletions(-) + +commit 0a1d194ad85398c8711268fd9ba679f8609206a1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 14:53:27 2008 +0000 + + [perf] Fix for git-1.6 + + git-1.6 moved all the subcommands out of the PATH so update our usage. + + perf/cairo-perf-graph | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 1c2eba92c16207a48f9c8f52065fbf9a65d16fcd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 13:05:01 2008 +0000 + + [RELEASING] Update Makefile for git-1.6 + + Git moved all the subcommands out of the PATH, so we need to update our + usage. + + build/Makefile.am.changelog | 4 ++-- + build/Makefile.am.releasing | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 2fa6b6353740b7941e90e50bf6b0eb5f06aa11b5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 11:40:12 2008 +0000 + + [RELEASING] Correct a few minor typos. + + As I was reading through the instructions, take the opportunity to fix a + few spelling mistakes. + + RELEASING | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 1950abd14c28d58913c085d3829eb99a078cf2d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 11:26:56 2008 +0000 + + [doc] Fix erroneous doc comment. + + A normal comment was marked as a gtk-doc entry and thus causing gtk-doc to + complain. + + src/cairo-path-fixed.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9485cd947f982ecd1e4f8d948786af3265d6eb74 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 16:35:14 2008 +0000 + + Increment version to 1.8.7 after the 1.8.6 release. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e2a2eddcfb8fc73f3decdb91c00e8e6d5282e09c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 14:07:11 2008 +0000 + + Increment version to 1.8.6 + + In preparation for the next stable release. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit ef7c42a7d390064b2a5b08e14d5f65b8ea4628e3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 14:06:07 2008 +0000 + + [NEWS] Add notes for 1.8.6 + + Add the historical blurb for 1.8.6. + + NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 50 insertions(+), 0 deletions(-) + +commit ce91e6ac360e1dbe57a4e729b68d84499603e9ae +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 14:53:27 2008 +0000 + + [perf] Fix for git-1.6 + + git-1.6 moved all the subcommands out of the PATH so update our usage. + + perf/cairo-perf-graph | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f8372509aff662e9cbabeb99560b01019395c15e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 13:05:01 2008 +0000 + + [RELEASING] Update Makefile for git-1.6 + + Git moved all the subcommands out of the PATH, so we need to update our + usage. + + build/Makefile.am.changelog | 4 ++-- + build/Makefile.am.releasing | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 9faa9a214994fe27a0cb27a298881f23c2050bbe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 11:40:12 2008 +0000 + + [RELEASING] Correct a few minor typos. + + As I was reading through the instructions, take the opportunity to fix a + few spelling mistakes. + + RELEASING | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit b1be4196513263bdbf58944ea6ac87708a399c5f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Dec 14 11:26:56 2008 +0000 + + [doc] Fix erroneous doc comment. + + A normal comment was marked as a gtk-doc entry and thus causing gtk-doc to + complain. + + src/cairo-path-fixed.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 79bd32a6ccb1a882ddd2b1585ab155f568bf5ec7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 6 13:32:37 2008 +0200 + + [perf-diff] Fix cairo-perf-diff for git 1.6 + + Since git 1.6 the plumbing commands aren't installed in the user's + path by default. This patch fixes cairo-perf-diff to find the + git-sh-setup command from git's lib dir. + (cherry picked from commit 0c0f4862c52d68776024f125b003ade455044b27) + + perf/cairo-perf-diff | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 97b5240beeb9206f4dbda6ffce33b51aa16eec2f +Author: Julien Danjou <julien@danjou.info> +Date: Tue Nov 18 10:01:49 2008 +0100 + + [xcb] check for render extension presence + + Otherwise this may leads to an invalid memory access to r. + + Fixes: Bug 18588 - XCB backend fails with missing render. + https://bugs.freedesktop.org/show_bug.cgi?id=18588 + + Signed-off-by: Julien Danjou <julien@danjou.info> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + (cherry picked from commit 834f1d7b7097dcc3a32f6c65d21e87fd272d924a) + + AUTHORS | 1 + + src/cairo-xcb-surface.c | 8 ++++++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit 6fed98c0d3b0708ad5171654179a482fa7d88805 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 5 21:14:45 2008 +0000 + + [gstate] Remove culled glyphs from clusters. + + Sascha Steinbiss reported a bug where the PDF backend was reading beyond + the end of the glyph array: + http://lists.cairographics.org/archives/cairo/2008-December/015976.html. + + It transpires that in the early glyph culling in the gstate we were + not updating the clusters to skip culled glyphs. + + src/cairo-gstate.c | 223 +++++++++++++++++++++++++++++++++++++++++----------- + 1 files changed, 176 insertions(+), 47 deletions(-) + +commit 2b7c6f361a3cfe309ff0bcb606b808acbf36aa0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 12:33:12 2008 +0000 + + [skiplist] Allocate elements in chunks. + + Use a pool allocator to preallocate a chunk from which to allocate the + skiplist elements (if we failed to reallocate from the freelists). + + src/cairo-bentley-ottmann.c | 33 ++++++++++++---- + src/cairo-skiplist-private.h | 3 +- + src/cairo-skiplist.c | 85 +++++++++++++++++++++++++++++++++-------- + 3 files changed, 94 insertions(+), 27 deletions(-) + +commit 903b39c30448d62e2cbf9d075c5256a333bd5d8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 4 15:22:01 2008 +0000 + + [test] Make the xlib-fallback use the image refs. + + The xlib-fallback is closer to the image than the xlib backend, so prefer + not to use the xlib.ref.png. + + boilerplate/cairo-boilerplate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 792057539bf814cc00447a0a53978e0af3efe270 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 3 10:52:59 2008 +0000 + + [test] Only delete output images beneath output. + + We were using an overly-liberal find that also deleted copied output for + use in CAIRO_REF_DIR if that directory was below test/. So only delete + files below output/ (which should only be used by cairo-test). + + test/Makefile.am | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit 913cbad25e08a07c05b8c2e6ddd3c343ca2462b2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 2 13:06:50 2008 +0000 + + [test] Add a simple joins test case + + Exercise joins between short (<LINE_WIDTH) lines - used in debugging + stroke-to-path. + + test/Makefile.am | 3 + + test/joins.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ + test/joins.ps.ref.png | Bin 0 -> 5496 bytes + 3 files changed, 112 insertions(+), 0 deletions(-) + +commit 9f4f41de7d20ee46ee8ca06716cbc18e55cfcf86 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 2 13:05:30 2008 +0000 + + [tutorial] Correct twin font name + + We changed the name for the builtin font from "cairo" to "<cairo>" to + reduce possible naming conflicts - update the tutorial to match. + + doc/tutorial/src/twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4ff884fe4df64234a7da4635d78ffafabe00f18c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 30 19:18:15 2008 +0000 + + [test] Check idempotency of append_path() -> copy_path() + + The API should preserve the precision across the public interface so that + the user is able to retrieve the co-ordinates that he used to construct + the path. However since we transform the path to a 24.8 fixed-point + internal represent we currently incur a precision-loss - the affects of + which can be seen in the miter-precision test case for example. It is + planned to move to keeping the path as doubles until the backend + explicitly requests the fixed-point coodinates (and some backends, e.g. + pdf, might only ever use the doubles). Then, barring rounding errors + during path transformations, we should be able to return the exact path + the user set (under an identity CTM, of course ;-). + + test/Makefile.am | 1 + + test/path-precision.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 109 insertions(+), 0 deletions(-) + +commit fe4af195a7880336894a5fbae86740ef55c14cbf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 30 13:48:11 2008 +0000 + + [test] Add a rectilinear-dash test case. + + Exercise dashing on pixel-aligned boundaries to test extending the + rectilinear stroker to handle dashes. + + test/Makefile.am | 2 + + test/rectilinear-dash.c | 176 +++++++++++++++++++++++++++++++++++++++++ + test/rectilinear-dash.ref.png | Bin 0 -> 291 bytes + 3 files changed, 178 insertions(+), 0 deletions(-) + +commit 1d68ee73f8d406671d25a1ab6c3cfb096a7a6ce7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 23 08:59:56 2008 +0000 + + [pattern] Compute the combined color content. + + When multiplying two colors together, the combined content is simply the + or of the their contents. + + src/cairo-pattern.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 30cef3116ed960a94323477154896a03c4fb30bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 11 01:45:31 2008 +0000 + + [spans] Add a sentinel cell to the cell_list. + + By terminating the list with a cell for INT_MAX, we remove a few + conditionals from the hot-paths. + + src/cairo-tor-scan-converter.c | 25 +++++++++++++++---------- + 1 files changed, 15 insertions(+), 10 deletions(-) + +commit 3b2bb95249afdc3a705d0ce5205019e7d9d31020 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 11 01:22:37 2008 +0000 + + [spans] Embed 64 edge buckets into polygon + + Frequently we only need a few y-buckets, so embed 64 into the parent + structure. + + src/cairo-tor-scan-converter.c | 40 ++++++++++++---------------------------- + 1 files changed, 12 insertions(+), 28 deletions(-) + +commit 70235df72e3f33482527090d7039d8cab7ef6ff9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 11 00:32:13 2008 +0000 + + [spans] Pool capacity is in bytes not elements. + + Set the polygon capacity to a shade under 8k, not 200 bytes, reducing the + number of malloc calls made by the scan convertor by a factor of 40! + + src/cairo-tor-scan-converter.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 6f284587a4ef829a1666fe730e590b59e4eedd5e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 13:50:23 2008 +0000 + + [script] Add examples + + Add some simple examples to demonstrate CairoScript, courtesy of M Joonas + Philaja. + + configure.ac | 1 + + util/cairo-script/Makefile.am | 2 + + util/cairo-script/examples/Makefile.am | 10 + + util/cairo-script/examples/dragon.cs | 48 + + util/cairo-script/examples/hilbert.cs | 51 + + util/cairo-script/examples/infinichess.cs | 29 + + util/cairo-script/examples/interference.cs | 46 + + util/cairo-script/examples/pythagoras-tree.cs | 53 + + util/cairo-script/examples/sierpinski.cs | 37 + + .../examples/wedgeAnnulus_crop_ybRings.cs | 30 + + util/cairo-script/examples/world-map.cs | 209 +++ + util/cairo-script/examples/zrusin.cs | 1333 ++++++++++++++++++++ + 12 files changed, 1849 insertions(+), 0 deletions(-) + +commit 463dc2891312e3658875d6964a91e7e875de4b38 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 21:09:14 2008 +0000 + + [script] Allocate the interned strings from a permanent pool + + Reduce memory fragmentation by allocating the permanent strings from a + single pool. + + util/cairo-script/cairo-script-interpreter.c | 52 ++++++++++++++++++++----- + util/cairo-script/cairo-script-private.h | 4 ++ + 2 files changed, 45 insertions(+), 11 deletions(-) + +commit adc9c90d79cf4bf5e3789ceadab6a49da746274a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 21:00:11 2008 +0000 + + [script] Freed object cache. + + Cache the last freed object to reduce malloc pressure. + + util/cairo-script/cairo-script-hash.c | 3 - + util/cairo-script/cairo-script-interpreter.c | 16 ++-- + util/cairo-script/cairo-script-objects.c | 118 +++++++++++++++++-------- + util/cairo-script/cairo-script-private.h | 5 +- + 4 files changed, 91 insertions(+), 51 deletions(-) + +commit 1042909796295234d8aadf674824d306d7bcc9b5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 17:56:19 2008 +0000 + + [script] Replay multiple files. + + Iterate over the argument vector and replay each file on the command line. + + util/cairo-script/csi-replay.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit c5c04528b51b9025f48fb0f3b1c4a8dc98acb214 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 17:30:21 2008 +0000 + + [script] Slab allocator + + Allocate small objects from a pool and maintain a per-size free-list. + + util/cairo-script/cairo-script-interpreter.c | 65 +++++++++++++++++++++++++- + util/cairo-script/cairo-script-private.h | 22 +++++++++ + 2 files changed, 85 insertions(+), 2 deletions(-) + +commit 83f0e6cf6245c0b3fd7a9b572e5dcea9b633a644 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 16:46:05 2008 +0000 + + [script] Inline the stack push + + Frequently to push an object onto the stack all we need is to simply + perform the struct copy - so inline it and only call the out-of-line + function if we need to enlarge the stack. + + util/cairo-script/cairo-script-interpreter.c | 20 ++++++------ + util/cairo-script/cairo-script-operators.c | 43 ++++++-------------------- + util/cairo-script/cairo-script-private.h | 14 ++++++++- + util/cairo-script/cairo-script-stack.c | 13 +++---- + 4 files changed, 39 insertions(+), 51 deletions(-) + +commit 565b3d6ad64fe9d35ebddb4f6b46e492740ee59f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 15:16:02 2008 +0000 + + [script] Switch to hyphens. + + Using hyphen in the operators is easier to read than underscores. + + src/cairo-script-surface.c | 60 +++++----- + util/cairo-script/cairo-script-operators.c | 189 ++++++++++++++++++---------- + util/cairo-trace/trace.c | 114 +++++++++--------- + 3 files changed, 211 insertions(+), 152 deletions(-) + +commit 3abfd836a021a2950b7eea97f3b30011d58efcc8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 14:34:41 2008 +0000 + + [script] Null constructor + + Expose 'null', principally for comparison purposes. + + util/cairo-script/cairo-script-operators.c | 8 +++++++- + util/cairo-script/cairo-script-private.h | 7 +++++++ + 2 files changed, 14 insertions(+), 1 deletions(-) + +commit 7540ac7f23db47ee3f58a557ce91aaf1c0bc72d5 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Dec 9 07:52:21 2008 +0200 + + [script] Reverse direction of bitshift. + + Positive shift counts should shift left according to PostScript. + + util/cairo-script/cairo-script-operators.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 4be479cc63a783da18652528f33bd08427a74fe7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 13:20:06 2008 +0000 + + [script] Add simple to integer converter + + Simple operator to coerce the type of the object on top of the stack to + integer. + + util/cairo-script/cairo-script-operators.c | 23 +++++++++++++++++++++++ + 1 files changed, 23 insertions(+), 0 deletions(-) + +commit 6711b591b9efd8f116f2683f17d52e9a9ddfbaba +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 12:34:30 2008 +0000 + + [script] Simple replay. + + Basic script executer. + + util/cairo-script/.gitignore | 1 + + util/cairo-script/Makefile.am | 5 ++++- + util/cairo-script/csi-exec.c | 29 +++++++++++++++++++++++++++++ + 3 files changed, 34 insertions(+), 1 deletions(-) + +commit 177a68ef3ecd1717b81c93c53f8c7ae27838e2e5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 13:21:19 2008 +0000 + + [script] Add a few mathematical constants + + Just pi and the sqrt(2) for the moment, more to come on demand. + + util/cairo-script/cairo-script-interpreter.c | 26 ++++++++++++++++++++++++++ + util/cairo-script/cairo-script-operators.c | 17 +++++++++++++++++ + util/cairo-script/cairo-script-private.h | 8 ++++++++ + 3 files changed, 51 insertions(+), 0 deletions(-) + +commit 5dfaa22a578ff6561e8d15a8c08546c840476313 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 12:26:09 2008 +0000 + + [script] Add repeat operator. + + Simple operator to repeat procedure n times. + + util/cairo-script/cairo-script-operators.c | 37 +++++++++++++++++++++++++++- + 1 files changed, 36 insertions(+), 1 deletions(-) + +commit 738cb327450821db2d3689e514376c0d9bc55e87 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Dec 9 05:59:19 2008 +0200 + + [script] Fix \t escapes in string literals. + + Typo \r -> \t. + + util/cairo-script/cairo-script-scanner.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 265ebd372a4fd510bc29c749a46393ee7caace41 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Dec 8 10:14:33 2008 +0200 + + [script] Flesh out the relational comparison operators to be more PostScript-like. + + The relational comparison operators can now compare strings vs names + by content as well as performing automatic type promotions on the + numeric types. For other types relational comparisons succeeed + only if the values compare equal according to the eq operator, and + put the interpreter into a type-error state otherwise. + + util/cairo-script/cairo-script-objects.c | 103 ++++++++++++++++++++ + util/cairo-script/cairo-script-operators.c | 144 +++++----------------------- + util/cairo-script/cairo-script-private.h | 5 + + 3 files changed, 132 insertions(+), 120 deletions(-) + +commit 05afec7a8ac590d0d53a254895796f36a8b0eaf3 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Dec 8 10:06:53 2008 +0200 + + [script] Implement the ne operator. + + util/cairo-script/cairo-script-operators.c | 19 ++++++++++++++++++- + 1 files changed, 18 insertions(+), 1 deletions(-) + +commit 1aeb96dc287b516955db1909995e45fe26d4f87a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Dec 8 10:03:57 2008 +0200 + + [script] Implement PostScript-like semantics for the eq operator. + + The eq operator would only work for some types and put the + interpreter in an error state if passed objects it didn't + know how to compare. It would also not compare strings + by value nor allow strings to be compared to names. + This patch makes any two objects comparable. + + util/cairo-script/cairo-script-objects.c | 92 ++++++++++++++++++++++++++++ + util/cairo-script/cairo-script-operators.c | 64 +------------------- + util/cairo-script/cairo-script-private.h | 4 + + 3 files changed, 97 insertions(+), 63 deletions(-) + +commit 620028fd19b091f525964b689ebd3a70e1636da2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Dec 8 09:23:37 2008 +0200 + + [script] Don't segfault when hashing empty strings. + + Check for the empty string. + + util/cairo-script/cairo-script-interpreter.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +commit 4ba77f776509caad030edf818a076ea9b071ad23 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Mon Dec 8 07:16:14 2008 +0200 + + [script] Fix dictionary construction to access the right stack slots. + + It bound values to themselves and ignored keys. + + util/cairo-script/cairo-script-operators.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit af53297a97eec505ac2a90768badda72056c6e3b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Dec 11 00:35:20 2008 +0000 + + [cairo] Use a stack buffer for text path. + + First try to allocate glyphs from the stack, similar to cairo_show_text(). + + src/cairo.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit 09589e20e14476df609581027d14628f52091e71 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 23:45:44 2008 +0000 + + [clip] Intersect to region extents. + + When querying the intersection of a rectangle with the clip region, the + result only depends upon the region extents so we do not need to perform + an expensive region-region intersection computation. + + src/cairo-clip.c | 18 +++++------------- + src/cairo-surface-fallback.c | 1 - + 2 files changed, 5 insertions(+), 14 deletions(-) + +commit c5acb125e9509570c407a069f7e89acfbadda57b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 23:06:22 2008 +0000 + + [surface] Avoid a short-lived context during fallback_clone_similar() + + We can paint to the surface directly without need of a temporary context, + so do so. + + src/cairo-surface-fallback.c | 41 +++++++++++++++++++---------------------- + 1 files changed, 19 insertions(+), 22 deletions(-) + +commit 888f62feaa73be326d41a485c0bcf81a3e466ee1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 17:42:16 2008 +0000 + + [test] Propagate error from path + + If the path is in error, just append it to the context so that the error + is propagated correctly. + + test/copy-path.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit f13f63e3d85d28a17a3cb60b7d1a7b552f2b6872 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 08:54:03 2008 +0000 + + [test/clip-nesting] Propagate status from sub-context. + + Use cairo_path_append() to propagate an error status from a child context + to it parent so that it is properly reported under memfault. + + test/clip-nesting.c | 16 ++++++++++++++++ + 1 files changed, 16 insertions(+), 0 deletions(-) + +commit e6e33b036f9de5087a72cf1de9c0a4ce97c75812 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Dec 10 08:50:57 2008 +0000 + + [test/solid-pattern-cache-stress] Propagate status from sub-contexts. + + Use a cairo_append_path() to set an arbitrary error status on the parent + context, in order to propagate errors from a child. + + test/solid-pattern-cache-stress.c | 32 +++++++++++++++++++++++++------- + 1 files changed, 25 insertions(+), 7 deletions(-) + +commit bcb2724920aa1bca1a9a82b5017d3180f5f9523e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 9 20:44:25 2008 +0000 + + [path] Mark points as const during _cairo_path_fixed_interpret() + + Use const to document the read-only nature of the arguments passed to the + callbacks. + + src/cairo-path-bounds.c | 33 +++-------- + src/cairo-path-fill.c | 33 ++--------- + src/cairo-path-fixed.c | 86 +++++++++++++--------------- + src/cairo-path-in-fill.c | 12 ++-- + src/cairo-path-stroke.c | 108 ++++++++++++------------------------ + src/cairo-path.c | 26 +++++---- + src/cairo-pdf-operators.c | 12 ++-- + src/cairo-pen.c | 4 +- + src/cairo-quartz-surface.c | 11 +++- + src/cairo-rectangle.c | 6 +- + src/cairo-scaled-font.c | 12 ++-- + src/cairo-script-surface.c | 12 ++-- + src/cairo-spans.c | 18 ++---- + src/cairo-svg-surface.c | 15 +++-- + src/cairo-type1-fallback.c | 16 +++--- + src/cairo-types-private.h | 3 +- + src/cairo-win32-printing-surface.c | 12 ++-- + src/cairoint.h | 12 ++-- + 18 files changed, 186 insertions(+), 245 deletions(-) + +commit 68b29cafa597128e7cae86608e04ecae6070dad9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 9 20:15:34 2008 +0000 + + [spline] Propagate errors during add point. + + Yikes! The callback could fail so we need to propagate the error status. + + src/cairo-path-fill.c | 11 +++-------- + src/cairo-path-fixed.c | 7 ++----- + src/cairo-path-in-fill.c | 7 ++----- + src/cairo-path-stroke.c | 14 ++++++-------- + src/cairo-pen.c | 23 ++++++++++++----------- + src/cairo-spline.c | 40 ++++++++++++++++++++-------------------- + src/cairo-types-private.h | 6 +++++- + src/cairoint.h | 9 ++------- + 8 files changed, 52 insertions(+), 65 deletions(-) + +commit 2f3905dec38a710234aba30e1983b80ea3066a50 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 9 19:21:35 2008 +0000 + + [image] Set status on error path. + + We failed to set the status after cairo_image_surface_create() returned an + error. + + src/cairo-image-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit dfc49a67e62bea359b33413e9b882e92952431de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 9 14:44:51 2008 +0000 + + [test] Trim the number of fallback resolutions tested. + + Simplify the test matrix to only include testing the fallback-resolution + of a uniform scale in one or both axes. + + test/Makefile.am | 20 --- + test/fallback-resolution.c | 222 ++++++++++++++----------- + test/fallback-resolution.ppi150x150.ref.png | Bin 8043 -> 8058 bytes + test/fallback-resolution.ppi150x300.ref.png | Bin 6848 -> 0 bytes + test/fallback-resolution.ppi150x37.5.ref.png | Bin 13176 -> 0 bytes + test/fallback-resolution.ppi150x600.ref.png | Bin 6338 -> 0 bytes + test/fallback-resolution.ppi150x72.ref.png | Bin 8370 -> 8303 bytes + test/fallback-resolution.ppi150x75.ref.png | Bin 10445 -> 0 bytes + test/fallback-resolution.ppi300x150.ref.png | Bin 6851 -> 0 bytes + test/fallback-resolution.ppi300x300.ref.png | Bin 5637 -> 5639 bytes + test/fallback-resolution.ppi300x37.5.ref.png | Bin 12870 -> 0 bytes + test/fallback-resolution.ppi300x600.ref.png | Bin 4848 -> 0 bytes + test/fallback-resolution.ppi300x72.ref.png | Bin 7053 -> 7014 bytes + test/fallback-resolution.ppi300x75.ref.png | Bin 9617 -> 0 bytes + test/fallback-resolution.ppi37.5x150.ref.png | Bin 12728 -> 0 bytes + test/fallback-resolution.ppi37.5x300.ref.png | Bin 11981 -> 0 bytes + test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 14098 -> 14092 bytes + test/fallback-resolution.ppi37.5x600.ref.png | Bin 11654 -> 0 bytes + test/fallback-resolution.ppi37.5x72.ref.png | Bin 12990 -> 12906 bytes + test/fallback-resolution.ppi37.5x75.ref.png | Bin 13787 -> 0 bytes + test/fallback-resolution.ppi600x150.ref.png | Bin 6096 -> 0 bytes + test/fallback-resolution.ppi600x300.ref.png | Bin 4812 -> 0 bytes + test/fallback-resolution.ppi600x37.5.ref.png | Bin 12401 -> 0 bytes + test/fallback-resolution.ppi600x600.ref.png | Bin 4104 -> 4090 bytes + test/fallback-resolution.ppi600x72.ref.png | Bin 6398 -> 6326 bytes + test/fallback-resolution.ppi600x75.ref.png | Bin 8974 -> 0 bytes + test/fallback-resolution.ppi72x150.ref.png | Bin 8069 -> 8061 bytes + test/fallback-resolution.ppi72x300.ref.png | Bin 6803 -> 6911 bytes + test/fallback-resolution.ppi72x37.5.ref.png | Bin 13147 -> 13167 bytes + test/fallback-resolution.ppi72x600.ref.png | Bin 6245 -> 6214 bytes + test/fallback-resolution.ppi72x72.ref.png | Bin 8409 -> 8416 bytes + test/fallback-resolution.ppi72x75.ref.png | Bin 10628 -> 10620 bytes + test/fallback-resolution.ppi75x150.ref.png | Bin 9940 -> 0 bytes + test/fallback-resolution.ppi75x300.ref.png | Bin 9003 -> 0 bytes + test/fallback-resolution.ppi75x37.5.ref.png | Bin 14020 -> 0 bytes + test/fallback-resolution.ppi75x600.ref.png | Bin 8455 -> 0 bytes + test/fallback-resolution.ppi75x72.ref.png | Bin 10202 -> 10119 bytes + test/fallback-resolution.ppi75x75.ref.png | Bin 12101 -> 12127 bytes + 38 files changed, 121 insertions(+), 121 deletions(-) + +commit 0ebbcd671c362d98a60214872fa48aee1e42dde1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 9 14:30:58 2008 +0000 + + [test] Fix memleak from fallback-resolution. + + The test-name was being recreated for every pass, but was never freed. + + test/fallback-resolution.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit a9697e5fb04d045fe7aaf0cee80c41eb9d09e1c1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 12 11:08:13 2008 +0000 + + [test] Exercise glyph culling. + + Sascha Steinbiss reported an issue with glyph culling, + http://lists.cairographics.org/archives/cairo/2008-December/015976.html, + whereby we failed to update the text clusters upon culling the glyphs in + the gstate and proceeded to read beyond the end of the glyph array in the + PDF backend. This test case setups a similar condition as reported, by + trying to write a wide string into a small box. + + test/Makefile.am | 3 ++ + test/culled-glyphs.c | 62 +++++++++++++++++++++++++++++++++++++++++ + test/culled-glyphs.ps.ref.png | Bin 0 -> 372 bytes + test/culled-glyphs.ref.png | Bin 0 -> 434 bytes + 4 files changed, 65 insertions(+), 0 deletions(-) + +commit 095a1fd7860bd1f6d4116766ade0ec9a382bb957 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 5 21:14:45 2008 +0000 + + [gstate] Remove culled glyphs from clusters. + + Sascha Steinbiss reported a bug where the PDF backend was reading beyond + the end of the glyph array: + http://lists.cairographics.org/archives/cairo/2008-December/015976.html. + + It transpires that in the early glyph culling in the gstate we were + not updating the clusters to skip culled glyphs. + + src/cairo-gstate.c | 223 +++++++++++++++++++++++++++++++++++++++++----------- + src/cairo.c | 9 ++- + 2 files changed, 183 insertions(+), 49 deletions(-) + +commit 834f1d7b7097dcc3a32f6c65d21e87fd272d924a +Author: Julien Danjou <julien@danjou.info> +Date: Tue Nov 18 10:01:49 2008 +0100 + + [xcb] check for render extension presence + + Otherwise this may leads to an invalid memory access to r. + + Fixes: Bug 18588 - XCB backend fails with missing render. + https://bugs.freedesktop.org/show_bug.cgi?id=18588 + + Signed-off-by: Julien Danjou <julien@danjou.info> + Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> + + AUTHORS | 1 + + src/cairo-xcb-surface.c | 8 ++++++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit e184bf0d3592c8703b1193d37553cdcdee313139 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Dec 12 10:12:43 2008 +0000 + + Fix compilation with --enable-png=no + + Adrian Johnson spotted that the build was broken if the PNG functions were + disabled. Fix. + + src/cairoint.h | 1 - + util/cairo-script/cairo-script-operators.c | 8 ++++++++ + util/cairo-trace/trace.c | 4 ++++ + 3 files changed, 12 insertions(+), 1 deletions(-) + +commit 391c6026402dee09bb34816637114cea990cd93a +Merge: 2f1b581 d93bf10 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 11 14:41:01 2008 -0500 + + Merge branch '1.8' + +commit 2f1b581f54713c899f3b03af1e0ac8c38c36c385 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 11 10:34:37 2008 -0500 + + [quartz] Create a copy instead of increasing the reference + + The pattern could be stack allocated so we can't take a reference to it. + + Some testing of quartz shows that it doesn't deal with malloc failure particularily + well. In the best case CGFunctionCreate returns NULL, in the worst case it just crashes. + Quartz does seem to be able to handle a NULL CGFunctionRef, so returning NULL if + we fail to copy the pattern avoids complicating the code to deal with + propagating the failure and shouldn't cause any additional crashes. + + Based on a patch by Paolo Bonzini. + + src/cairo-quartz-surface.c | 16 ++++++++++++++-- + 1 files changed, 14 insertions(+), 2 deletions(-) + +commit f7b3f1b7d70a271575d3bb233b7ee51a21861c05 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Dec 10 17:54:59 2008 -0500 + + [quartz] Propagate const patterns through the casts + + As part of this avoid using cairo_pattern_get_matrix() because it requires a + 'cairo_pattern_t *' instead of 'const cairo_pattern *' + + Also, make a copy of the pattern before pasing it in to cairo_set_source() + + src/cairo-quartz-surface.c | 39 +++++++++++++++++++++++---------------- + 1 files changed, 23 insertions(+), 16 deletions(-) + +commit d93bf10edc7e432349524221a3d1b0f0b2ec8090 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Dec 10 17:02:55 2008 -0500 + + [quartz] Create a copy of the pattern so that the reference counts are balanced + + The pattern could be stack allocated so we can't take a reference to it; + instead make a copy. + + Based on a patch by Paolo Bonzini. + + src/cairo-quartz-surface.c | 16 ++++++++++++++-- + 1 files changed, 14 insertions(+), 2 deletions(-) + +commit db4c427e8460b0e326691bd6d3784178a713eb33 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Dec 9 12:03:11 2008 -0500 + + [quartz] Change some pattern casts to access to the base class + + Avoiding casts gives us some more type safety. + + src/cairo-quartz-surface.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 5f60e2e00455f2894c7ce3805a029c806f21514a +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Dec 9 11:41:10 2008 -0500 + + Reorganize the (set|get)_antialias prototypes + + Move _cairo_gstate_set_antialias() and _cairo_gstate_get_antialias() into the + gstate section of cairoint.h + + src/cairoint.h | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +commit 673640a3b3931995897b01d49c5dd8d82b50dac2 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 4 17:53:06 2008 -0500 + + [win32] Use MOD instead of the '%' operator + + Repeat should be handled using MOD instead of '%' so that negative numbers + are handled as expected. E.g. -1 mod 600 = 599, not 495 as the '%' operator + gives. This was causing https://bugzilla.mozilla.org/show_bug.cgi?id=466258 + + Patch from Robert O'Callahan + + src/cairo-win32-surface.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit 5e06085b483dcaaa7b1b29b13cd2813c7e51e02a +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Aug 1 23:28:15 2008 +0300 + + [cairo-spans] Render clip mask surfaces with spans if we can. + + Generating surface masks for clipping can also benefit from span + rendering sometimes. + + src/cairo-clip.c | 140 ++++++++++++++++++++ + test/clip-fill-rule.pdf.argb32.ref.png | Bin 0 -> 509 bytes + test/clip-fill-rule.rgb24.ref.png | Bin 380 -> 390 bytes + test/clip-fill-rule.test-paginated.rgb24.ref.png | Bin 0 -> 361 bytes + test/clip-fill-rule.xlib.rgb24.ref.png | Bin 0 -> 380 bytes + test/clip-nesting.pdf.argb32.ref.png | Bin 0 -> 850 bytes + test/clip-nesting.rgb24.ref.png | Bin 955 -> 963 bytes + test/clip-nesting.test-fallback.rgb24.ref.png | Bin 0 -> 936 bytes + test/clip-nesting.test-paginated.rgb24.ref.png | Bin 0 -> 936 bytes + test/clip-nesting.xlib.rgb24.ref.png | Bin 0 -> 955 bytes + test/clip-operator.pdf.argb32.ref.png | Bin 11600 -> 11604 bytes + test/clip-operator.ps3.argb32.ref.png | Bin 7574 -> 7576 bytes + test/clip-operator.ref.png | Bin 8247 -> 8210 bytes + test/clip-operator.test-paginated.argb32.ref.png | Bin 0 -> 8247 bytes + test/clip-twice.pdf.argb32.ref.png | Bin 1458 -> 1498 bytes + test/clip-twice.ref.png | Bin 1362 -> 1342 bytes + test/clip-twice.rgb24.ref.png | Bin 1198 -> 1203 bytes + test/clip-twice.test-fallback.argb32.ref.png | Bin 0 -> 1343 bytes + test/clip-twice.test-fallback.rgb24.ref.png | Bin 0 -> 1179 bytes + test/clip-twice.test-paginated.argb32.ref.png | Bin 0 -> 1361 bytes + test/clip-twice.test-paginated.rgb24.ref.png | Bin 0 -> 1199 bytes + test/clip-twice.xlib.ref.png | Bin 0 -> 1362 bytes + test/clip-twice.xlib.rgb24.ref.png | Bin 0 -> 1198 bytes + test/device-offset-fractional.pdf.argb32.ref.png | Bin 0 -> 275 bytes + test/device-offset-fractional.pdf.rgb24.ref.png | Bin 0 -> 275 bytes + test/filter-nearest-offset.pdf.argb32.ref.png | Bin 0 -> 4295 bytes + test/filter-nearest-offset.pdf.rgb24.ref.png | Bin 0 -> 4295 bytes + test/filter-nearest-transformed.pdf.argb32.ref.png | Bin 0 -> 488 bytes + test/filter-nearest-transformed.pdf.rgb24.ref.png | Bin 0 -> 488 bytes + test/linear-gradient.pdf.argb32.ref.png | Bin 1118 -> 1112 bytes + test/linear-gradient.pdf.rgb24.ref.png | Bin 1118 -> 1112 bytes + test/mask.pdf.argb32.ref.png | Bin 9956 -> 9903 bytes + test/mask.ref.png | Bin 8571 -> 8581 bytes + test/mask.svg11.argb32.ref.png | Bin 8625 -> 8682 bytes + test/mask.svg12.argb32.ref.png | Bin 8625 -> 8682 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 4017 -> 4011 bytes + test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3928 -> 3924 bytes + test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3928 -> 3924 bytes + test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 209 -> 215 bytes + test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 207 -> 215 bytes + test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 2386 -> 1532 bytes + test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 2386 -> 1532 bytes + test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 4247 -> 3834 bytes + test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 4247 -> 3834 bytes + test/surface-pattern.pdf.argb32.ref.png | Bin 0 -> 14808 bytes + test/surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 14808 bytes + test/trap-clip.pdf.rgb24.ref.png | Bin 6642 -> 6621 bytes + test/trap-clip.ref.png | Bin 5865 -> 5829 bytes + test/trap-clip.test-paginated.argb32.ref.png | Bin 0 -> 5865 bytes + 49 files changed, 140 insertions(+), 0 deletions(-) + +commit 18634c37026a2d6147443cb6d991576f62b07e6d +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jul 24 20:47:14 2008 +0300 + + [cairo-spans] Hook up filling paths with spans to cairo-surface-fallback.c. + + This speeds up the mask generation step in cairo_fill() for the image + surface by up to 10x in especially favourable cases. + + image-rgba twin-800 7757.80 0.20% -> 749.41 0.29%: 10.36x speedup + image-rgba spiral-diag-pixalign-nonzero-fill-512 15.16 0.44% -> 3.45 8.80%: 5.54x speedup + + More typical simple non-rectilinear geometries are sped up by 30-50%. + This patch does not affect any stroking operations or any fill + operations of pixel aligned rectilinear geometries; those are still + rendered using trapezoids. + + src/cairo-surface-fallback.c | 86 +++++++++++++++++++- + test/clip-fill-rule.test-fallback.rgb24.ref.png | Bin 0 -> 361 bytes + test/clip-operator.pdf.argb32.ref.png | Bin 12125 -> 11600 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 7367 -> 6882 bytes + test/clip-operator.ps2.rgb24.ref.png | Bin 3624 -> 3736 bytes + test/clip-operator.ps3.argb32.ref.png | Bin 0 -> 7574 bytes + test/clip-operator.ps3.rgb24.ref.png | Bin 3624 -> 3736 bytes + test/clip-operator.ref.png | Bin 8271 -> 8247 bytes + test/clip-operator.rgb24.ref.png | Bin 3258 -> 3279 bytes + test/clip-operator.test-fallback.argb32.ref.png | Bin 0 -> 8252 bytes + test/clip-operator.test-fallback.rgb24.ref.png | Bin 0 -> 3241 bytes + test/clip-operator.xlib-fallback.rgb24.ref.png | Bin 0 -> 3254 bytes + test/clip-operator.xlib.ref.png | Bin 0 -> 8271 bytes + test/clip-operator.xlib.rgb24.ref.png | Bin 0 -> 3258 bytes + test/clip-twice.pdf.argb32.ref.png | Bin 0 -> 1458 bytes + test/clipped-group.pdf.argb32.ref.png | Bin 0 -> 298 bytes + test/clipped-group.pdf.rgb24.ref.png | Bin 0 -> 298 bytes + test/degenerate-arc.ref.png | Bin 616 -> 544 bytes + test/degenerate-arc.test-fallback.argb32.ref.png | Bin 0 -> 547 bytes + test/degenerate-arc.test-fallback.rgb24.ref.png | Bin 0 -> 547 bytes + test/degenerate-arc.xlib.ref.png | Bin 0 -> 616 bytes + test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 3887 -> 3750 bytes + test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 3840 -> 3758 bytes + test/fill-alpha-pattern.ps3.argb32.ref.png | Bin 0 -> 4070 bytes + test/fill-alpha-pattern.ps3.rgb24.ref.png | Bin 0 -> 4473 bytes + test/fill-alpha-pattern.ref.png | Bin 3653 -> 3374 bytes + ...fill-alpha-pattern.test-fallback.argb32.ref.png | Bin 0 -> 3379 bytes + .../fill-alpha-pattern.test-fallback.rgb24.ref.png | Bin 0 -> 3379 bytes + test/fill-alpha-pattern.xlib.ref.png | Bin 0 -> 3653 bytes + test/fill-alpha.ref.png | Bin 2989 -> 2728 bytes + test/fill-alpha.test-fallback.argb32.ref.png | Bin 0 -> 2824 bytes + test/fill-alpha.test-fallback.rgb24.ref.png | Bin 0 -> 2824 bytes + test/fill-alpha.xlib.ref.png | Bin 0 -> 2989 bytes + test/fill-degenerate-sort-order.ref.png | Bin 2397 -> 2406 bytes + test/fill-degenerate-sort-order.rgb24.ref.png | Bin 2060 -> 2052 bytes + ...enerate-sort-order.test-fallback.argb32.ref.png | Bin 0 -> 2378 bytes + ...generate-sort-order.test-fallback.rgb24.ref.png | Bin 0 -> 2041 bytes + test/fill-degenerate-sort-order.xlib.ref.png | Bin 0 -> 2397 bytes + test/fill-degenerate-sort-order.xlib.rgb24.ref.png | Bin 0 -> 2060 bytes + test/fill-missed-stop.pdf.argb32.ref.png | Bin 0 -> 452 bytes + test/fill-rule.ref.png | Bin 1979 -> 2061 bytes + test/fill-rule.rgb24.ref.png | Bin 1722 -> 1780 bytes + test/fill-rule.test-fallback.argb32.ref.png | Bin 0 -> 1979 bytes + test/fill-rule.test-fallback.rgb24.ref.png | Bin 0 -> 1703 bytes + test/fill-rule.xlib.ref.png | Bin 0 -> 1979 bytes + test/fill-rule.xlib.rgb24.ref.png | Bin 0 -> 1722 bytes + test/finer-grained-fallbacks.ps2.argb32.ref.png | Bin 0 -> 1173 bytes + test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 1096 -> 1154 bytes + test/finer-grained-fallbacks.ps3.argb32.ref.png | Bin 0 -> 1173 bytes + test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 1096 -> 1154 bytes + test/finer-grained-fallbacks.ref.png | Bin 1111 -> 1069 bytes + test/finer-grained-fallbacks.rgb24.ref.png | Bin 1114 -> 839 bytes + ...-grained-fallbacks.test-fallback.argb32.ref.png | Bin 0 -> 1111 bytes + ...r-grained-fallbacks.test-fallback.rgb24.ref.png | Bin 0 -> 854 bytes + test/finer-grained-fallbacks.xlib.ref.png | Bin 0 -> 1111 bytes + test/finer-grained-fallbacks.xlib.rgb24.ref.png | Bin 0 -> 1114 bytes + test/font-matrix-translation.svg11.argb32.ref.png | Bin 0 -> 857 bytes + test/font-matrix-translation.svg11.rgb24.ref.png | Bin 0 -> 857 bytes + test/font-matrix-translation.svg12.argb32.ref.png | Bin 0 -> 857 bytes + test/font-matrix-translation.svg12.rgb24.ref.png | Bin 0 -> 857 bytes + test/ft-show-glyphs-table.svg11.argb32.ref.png | Bin 0 -> 9953 bytes + test/ft-show-glyphs-table.svg11.rgb24.ref.png | Bin 0 -> 9953 bytes + test/ft-show-glyphs-table.svg12.argb32.ref.png | Bin 0 -> 9953 bytes + test/ft-show-glyphs-table.svg12.rgb24.ref.png | Bin 0 -> 9953 bytes + ...t-text-vertical-layout-type1.pdf.argb32.ref.png | Bin 0 -> 3632 bytes + ...ft-text-vertical-layout-type1.pdf.rgb24.ref.png | Bin 0 -> 3632 bytes + test/ft-text-vertical-layout-type1.ref.png | Bin 3980 -> 3643 bytes + ...text-vertical-layout-type1.svg11.argb32.ref.png | Bin 0 -> 3614 bytes + ...-text-vertical-layout-type1.svg11.rgb24.ref.png | Bin 0 -> 3614 bytes + ...text-vertical-layout-type1.svg12.argb32.ref.png | Bin 0 -> 3614 bytes + ...-text-vertical-layout-type1.svg12.rgb24.ref.png | Bin 0 -> 3614 bytes + ...tical-layout-type1.test-fallback.argb32.ref.png | Bin 0 -> 3639 bytes + ...rtical-layout-type1.test-fallback.rgb24.ref.png | Bin 0 -> 3639 bytes + test/ft-text-vertical-layout-type1.xlib.ref.png | Bin 0 -> 3980 bytes + ...t-text-vertical-layout-type3.pdf.argb32.ref.png | Bin 0 -> 3642 bytes + ...ft-text-vertical-layout-type3.pdf.rgb24.ref.png | Bin 0 -> 3642 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 3934 -> 3609 bytes + ...text-vertical-layout-type3.svg11.argb32.ref.png | Bin 0 -> 3640 bytes + ...-text-vertical-layout-type3.svg11.rgb24.ref.png | Bin 0 -> 3640 bytes + ...text-vertical-layout-type3.svg12.argb32.ref.png | Bin 0 -> 3640 bytes + ...-text-vertical-layout-type3.svg12.rgb24.ref.png | Bin 0 -> 3640 bytes + ...tical-layout-type3.test-fallback.argb32.ref.png | Bin 0 -> 3605 bytes + ...rtical-layout-type3.test-fallback.rgb24.ref.png | Bin 0 -> 3605 bytes + test/ft-text-vertical-layout-type3.xlib.ref.png | Bin 0 -> 3934 bytes + test/huge-pattern.pdf.argb32.ref.png | Bin 0 -> 2430 bytes + test/linear-gradient.pdf.argb32.ref.png | Bin 0 -> 1118 bytes + test/linear-gradient.pdf.rgb24.ref.png | Bin 0 -> 1118 bytes + test/linear-gradient.ref.png | Bin 1021 -> 983 bytes + test/linear-gradient.svg11.argb32.ref.png | Bin 0 -> 988 bytes + test/linear-gradient.svg11.rgb24.ref.png | Bin 0 -> 988 bytes + test/linear-gradient.svg12.argb32.ref.png | Bin 0 -> 988 bytes + test/linear-gradient.svg12.rgb24.ref.png | Bin 0 -> 988 bytes + test/linear-gradient.test-fallback.argb32.ref.png | Bin 0 -> 923 bytes + test/linear-gradient.test-fallback.rgb24.ref.png | Bin 0 -> 923 bytes + test/linear-gradient.xlib.ref.png | Bin 0 -> 1021 bytes + test/mask-alpha.ref.png | Bin 640 -> 643 bytes + test/mask-alpha.svg11.argb32.ref.png | Bin 615 -> 642 bytes + test/mask-alpha.svg11.rgb24.ref.png | Bin 0 -> 592 bytes + test/mask-alpha.svg12.argb32.ref.png | Bin 615 -> 642 bytes + test/mask-alpha.svg12.rgb24.ref.png | Bin 0 -> 592 bytes + test/mask-alpha.test-fallback.argb32.ref.png | Bin 0 -> 627 bytes + test/mask-alpha.xlib.ref.png | Bin 0 -> 640 bytes + test/mask-alpha.xlib.rgb24.ref.png | Bin 0 -> 599 bytes + test/mask.pdf.argb32.ref.png | Bin 8881 -> 9956 bytes + test/mask.pdf.rgb24.ref.png | Bin 8267 -> 8735 bytes + test/mask.ref.png | Bin 8476 -> 8571 bytes + test/mask.rgb24.ref.png | Bin 7041 -> 7216 bytes + test/mask.svg11.argb32.ref.png | Bin 8527 -> 8625 bytes + test/mask.svg11.rgb24.ref.png | Bin 7935 -> 7203 bytes + test/mask.svg12.argb32.ref.png | Bin 8527 -> 8625 bytes + test/mask.svg12.rgb24.ref.png | Bin 7935 -> 7203 bytes + test/mask.test-fallback.argb32.ref.png | Bin 0 -> 8457 bytes + test/mask.test-fallback.rgb24.ref.png | Bin 0 -> 7058 bytes + test/mask.xlib-fallback.rgb24.ref.png | Bin 0 -> 7216 bytes + test/mask.xlib.ref.png | Bin 0 -> 8476 bytes + test/mask.xlib.rgb24.ref.png | Bin 0 -> 7041 bytes + test/meta-surface-pattern.pdf.argb32.ref.png | Bin 0 -> 4017 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 4009 -> 3910 bytes + test/meta-surface-pattern.svg11.argb32.ref.png | Bin 3924 -> 3928 bytes + test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 4593 -> 3914 bytes + test/meta-surface-pattern.svg12.argb32.ref.png | Bin 3924 -> 3928 bytes + test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 4593 -> 3914 bytes + test/operator-clear.pdf.argb32.ref.png | Bin 1614 -> 1607 bytes + test/operator-clear.ps2.argb32.ref.png | Bin 0 -> 1156 bytes + test/operator-clear.ps3.argb32.ref.png | Bin 0 -> 1156 bytes + test/operator-source.pdf.argb32.ref.png | Bin 5149 -> 5112 bytes + test/operator-source.pdf.rgb24.ref.png | Bin 4354 -> 4186 bytes + test/operator-source.ref.png | Bin 4420 -> 4425 bytes + test/operator-source.rgb24.ref.png | Bin 3201 -> 3231 bytes + test/operator-source.test-fallback.argb32.ref.png | Bin 0 -> 4401 bytes + test/operator-source.test-fallback.rgb24.ref.png | Bin 0 -> 3200 bytes + test/operator-source.xlib-fallback.rgb24.ref.png | Bin 0 -> 3193 bytes + test/operator-source.xlib.ref.png | Bin 0 -> 4420 bytes + test/operator-source.xlib.rgb24.ref.png | Bin 0 -> 3201 bytes + test/over-above-source.ps2.argb32.ref.png | Bin 636 -> 558 bytes + test/over-above-source.ps3.argb32.ref.png | Bin 636 -> 558 bytes + test/over-above-source.ref.png | Bin 538 -> 560 bytes + test/over-above-source.rgb24.ref.png | Bin 461 -> 466 bytes + .../over-above-source.test-fallback.argb32.ref.png | Bin 0 -> 533 bytes + test/over-above-source.test-fallback.rgb24.ref.png | Bin 0 -> 450 bytes + test/over-above-source.xlib.ref.png | Bin 0 -> 538 bytes + test/over-above-source.xlib.rgb24.ref.png | Bin 0 -> 461 bytes + test/over-around-source.pdf.argb32.ref.png | Bin 0 -> 585 bytes + test/over-around-source.ps2.argb32.ref.png | Bin 632 -> 522 bytes + test/over-around-source.ps3.argb32.ref.png | Bin 632 -> 522 bytes + test/over-around-source.ref.png | Bin 614 -> 645 bytes + ...over-around-source.test-fallback.argb32.ref.png | Bin 0 -> 610 bytes + test/over-around-source.xlib.ref.png | Bin 0 -> 614 bytes + test/over-around-source.xlib.rgb24.ref.png | Bin 0 -> 503 bytes + test/over-below-source.pdf.argb32.ref.png | Bin 0 -> 464 bytes + test/over-between-source.ps2.argb32.ref.png | Bin 678 -> 551 bytes + test/over-between-source.ps3.argb32.ref.png | Bin 678 -> 551 bytes + test/over-between-source.ref.png | Bin 575 -> 612 bytes + ...ver-between-source.test-fallback.argb32.ref.png | Bin 0 -> 578 bytes + test/over-between-source.xlib.ref.png | Bin 0 -> 575 bytes + test/over-between-source.xlib.rgb24.ref.png | Bin 0 -> 473 bytes + test/push-group.pdf.argb32.ref.png | Bin 0 -> 2722 bytes + test/push-group.pdf.rgb24.ref.png | Bin 2714 -> 2740 bytes + test/push-group.ref.png | Bin 3126 -> 3060 bytes + test/push-group.rgb24.ref.png | Bin 2961 -> 2912 bytes + test/push-group.svg11.argb32.ref.png | Bin 2935 -> 3034 bytes + test/push-group.svg12.argb32.ref.png | Bin 2935 -> 3034 bytes + test/push-group.test-fallback.argb32.ref.png | Bin 0 -> 3107 bytes + test/push-group.test-fallback.rgb24.ref.png | Bin 0 -> 2942 bytes + test/push-group.xlib-fallback.rgb24.ref.png | Bin 0 -> 2912 bytes + test/push-group.xlib.ref.png | Bin 0 -> 3126 bytes + test/push-group.xlib.rgb24.ref.png | Bin 0 -> 2961 bytes + test/radial-gradient.pdf.argb32.ref.png | Bin 0 -> 79601 bytes + test/radial-gradient.pdf.rgb24.ref.png | Bin 0 -> 79601 bytes + test/random-intersections.ref.png | Bin 148722 -> 133462 bytes + ...ndom-intersections.test-fallback.argb32.ref.png | Bin 0 -> 132312 bytes + ...andom-intersections.test-fallback.rgb24.ref.png | Bin 0 -> 132312 bytes + test/random-intersections.xlib.ref.png | Bin 0 -> 148722 bytes + test/smask-fill.pdf.argb32.ref.png | Bin 0 -> 1909 bytes + test/smask-fill.pdf.rgb24.ref.png | Bin 0 -> 1909 bytes + test/smask-fill.ref.png | Bin 1223 -> 1156 bytes + test/smask-fill.svg11.argb32.ref.png | Bin 0 -> 1128 bytes + test/smask-fill.svg11.rgb24.ref.png | Bin 0 -> 1128 bytes + test/smask-fill.svg12.argb32.ref.png | Bin 0 -> 1128 bytes + test/smask-fill.svg12.rgb24.ref.png | Bin 0 -> 1128 bytes + test/smask-fill.test-fallback.argb32.ref.png | Bin 0 -> 1148 bytes + test/smask-fill.test-fallback.rgb24.ref.png | Bin 0 -> 1148 bytes + test/smask-fill.xlib-fallback.ref.png | Bin 0 -> 1156 bytes + test/smask-fill.xlib.ref.png | Bin 0 -> 1223 bytes + test/smask-image-mask.pdf.argb32.ref.png | Bin 0 -> 1651 bytes + test/smask-image-mask.pdf.rgb24.ref.png | Bin 0 -> 1651 bytes + test/smask-mask.pdf.argb32.ref.png | Bin 0 -> 4398 bytes + test/smask-mask.pdf.rgb24.ref.png | Bin 0 -> 4398 bytes + test/smask-paint.pdf.argb32.ref.png | Bin 0 -> 4496 bytes + test/smask-paint.pdf.rgb24.ref.png | Bin 0 -> 4496 bytes + test/smask-stroke.pdf.argb32.ref.png | Bin 0 -> 1417 bytes + test/smask-stroke.pdf.rgb24.ref.png | Bin 0 -> 1417 bytes + test/smask-text.svg11.argb32.ref.png | Bin 0 -> 1791 bytes + test/smask-text.svg11.rgb24.ref.png | Bin 0 -> 1791 bytes + test/smask-text.svg12.argb32.ref.png | Bin 0 -> 1791 bytes + test/smask-text.svg12.rgb24.ref.png | Bin 0 -> 1791 bytes + test/smask.pdf.argb32.ref.png | Bin 0 -> 4496 bytes + test/smask.pdf.rgb24.ref.png | Bin 0 -> 4496 bytes + test/text-pattern.pdf.argb32.ref.png | Bin 1823 -> 2151 bytes + test/text-pattern.svg11.argb32.ref.png | Bin 1733 -> 1743 bytes + test/text-pattern.svg12.argb32.ref.png | Bin 1733 -> 1743 bytes + test/text-rotate.svg11.argb32.ref.png | Bin 0 -> 16942 bytes + test/text-rotate.svg11.rgb24.ref.png | Bin 0 -> 16942 bytes + test/text-rotate.svg12.argb32.ref.png | Bin 0 -> 16942 bytes + test/text-rotate.svg12.rgb24.ref.png | Bin 0 -> 16942 bytes + test/text-transform.svg11.argb32.ref.png | Bin 0 -> 5677 bytes + test/text-transform.svg11.rgb24.ref.png | Bin 0 -> 5677 bytes + test/text-transform.svg12.argb32.ref.png | Bin 0 -> 5677 bytes + test/text-transform.svg12.rgb24.ref.png | Bin 0 -> 5677 bytes + test/trap-clip.pdf.argb32.ref.png | Bin 5809 -> 6720 bytes + test/trap-clip.pdf.rgb24.ref.png | Bin 5768 -> 6642 bytes + test/trap-clip.ps2.argb32.ref.png | Bin 5690 -> 4849 bytes + test/trap-clip.ref.png | Bin 5772 -> 5865 bytes + test/trap-clip.rgb24.ref.png | Bin 5365 -> 5457 bytes + test/trap-clip.test-fallback.argb32.ref.png | Bin 0 -> 5753 bytes + test/trap-clip.test-fallback.rgb24.ref.png | Bin 0 -> 5379 bytes + test/trap-clip.xlib.ref.png | Bin 0 -> 5772 bytes + test/trap-clip.xlib.rgb24.ref.png | Bin 0 -> 5365 bytes + test/twin.svg11.argb32.ref.png | Bin 0 -> 1797 bytes + test/twin.svg11.rgb24.ref.png | Bin 0 -> 1797 bytes + test/twin.svg12.argb32.ref.png | Bin 0 -> 1797 bytes + test/twin.svg12.rgb24.ref.png | Bin 0 -> 1797 bytes + test/unbounded-operator.pdf.argb32.ref.png | Bin 0 -> 2713 bytes + test/unbounded-operator.ps2.argb32.ref.png | Bin 0 -> 2713 bytes + test/unbounded-operator.ps3.argb32.ref.png | Bin 0 -> 2713 bytes + test/unbounded-operator.rgb24.ref.png | Bin 1315 -> 1341 bytes + .../unbounded-operator.test-fallback.rgb24.ref.png | Bin 0 -> 1306 bytes + test/unbounded-operator.xlib.rgb24.ref.png | Bin 0 -> 1315 bytes + test/user-font-proxy.pdf.argb32.ref.png | Bin 0 -> 16937 bytes + test/user-font-proxy.pdf.rgb24.ref.png | Bin 0 -> 16937 bytes + test/user-font-proxy.ref.png | Bin 18121 -> 16937 bytes + test/user-font-proxy.svg11.argb32.ref.png | Bin 0 -> 16836 bytes + test/user-font-proxy.svg11.rgb24.ref.png | Bin 0 -> 16836 bytes + test/user-font-proxy.svg12.argb32.ref.png | Bin 0 -> 16836 bytes + test/user-font-proxy.svg12.rgb24.ref.png | Bin 0 -> 16836 bytes + test/user-font-proxy.test-fallback.argb32.ref.png | Bin 0 -> 16835 bytes + test/user-font-proxy.test-fallback.rgb24.ref.png | Bin 0 -> 16835 bytes + test/user-font-proxy.xlib.ref.png | Bin 0 -> 18121 bytes + test/user-font.ref.png | Bin 6183 -> 6082 bytes + test/user-font.svg11.argb32.ref.png | Bin 0 -> 6411 bytes + test/user-font.svg11.rgb24.ref.png | Bin 0 -> 6411 bytes + test/user-font.svg12.argb32.ref.png | Bin 0 -> 6411 bytes + test/user-font.svg12.rgb24.ref.png | Bin 0 -> 6411 bytes + test/user-font.test-fallback.argb32.ref.png | Bin 0 -> 5601 bytes + test/user-font.test-fallback.rgb24.ref.png | Bin 0 -> 5601 bytes + test/user-font.xlib.ref.png | Bin 0 -> 6183 bytes + 246 files changed, 85 insertions(+), 1 deletions(-) + +commit 85b81a3e59401e2fc68209634f7622694e7d30e1 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 11 13:10:20 2008 +0300 + + [cairo-spans] Implement a span renderer for cairo_image_surface_t. + + This implementation first produces an A8 alpha mask and then + pixman_image_composites the result to the destination with the source. + Clipping is handled by pixman when it is region clipping or by + cairo-surface-fallback when it is something more complex. + + src/cairo-image-surface.c | 273 ++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 233 insertions(+), 40 deletions(-) + +commit 7994fc06ad66e31fcbc16f6e8cd9ad226022ec8c +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Aug 28 22:16:07 2008 +0300 + + [cairo-spans] New cairo_tor_scan_converter_t. + + Imports a new polygon scan converter implementation from the + repository at + + http://cgit.freedesktop.org/~joonas/glitter-paths/ + + Glitter paths is a stand alone polygon rasteriser derived from David + Turner's reimplementation of Tor Anderssons's 15x17 supersampling + rasteriser from the Apparition graphics library. The main new feature + in this implementation is cheaply choosing per-scan line between doing + fully analytical coverage computation for an entire row at a time + vs. using a supersampling approach. + + src/Makefile.sources | 1 + + src/cairo-spans-private.h | 10 + + src/cairo-spans.c | 18 +- + src/cairo-tor-scan-converter.c | 2003 ++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 2027 insertions(+), 5 deletions(-) + +commit 2078e5b20fdff76ada6e13b29b2775b7dcd35439 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jul 31 01:58:08 2008 +0300 + + [cairo-spans] New _cairo_path_fixed_fill_using_spans(). + + Adds a helper function for backends to use for filling a path using + spans. + + src/cairo-spans-private.h | 10 +++ + src/cairo-spans.c | 145 +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 155 insertions(+), 0 deletions(-) + +commit 4a9b274eebe674bbc5c66dc3e33256723cdf9829 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 11 00:59:47 2008 +0300 + + [cairo-spans] Add a check/create_span_renderer backend methods. + + A surface will have the chance to use span rendering at cairo_fill() + time by creating a renderer for a specific combination of + pattern/dst/op before the path is scan converted. The protocol is to + first call check_span_renderer() to see if the surface wants to render + with spans and then later call create_span_renderer() to create the + renderer for real once the extents of the path are known. + + No backends have an implementation yet. + + src/cairo-analysis-surface.c | 4 +++ + src/cairo-beos-surface.cpp | 2 + + src/cairo-directfb-surface.c | 2 + + src/cairo-glitz-surface.c | 2 + + src/cairo-image-surface.c | 2 + + src/cairo-meta-surface.c | 2 + + src/cairo-os2-surface.c | 2 + + src/cairo-paginated-surface.c | 2 + + src/cairo-pdf-surface.c | 2 + + src/cairo-ps-surface.c | 2 + + src/cairo-quartz-image-surface.c | 2 + + src/cairo-quartz-surface.c | 2 + + src/cairo-script-surface.c | 2 + + src/cairo-sdl-surface.c | 2 + + src/cairo-surface.c | 53 ++++++++++++++++++++++++++++++++++++ + src/cairo-svg-surface.c | 2 + + src/cairo-type3-glyph-surface.c | 2 + + src/cairo-win32-printing-surface.c | 2 + + src/cairo-win32-surface.c | 2 + + src/cairo-xcb-surface.c | 2 + + src/cairo-xlib-surface.c | 2 + + src/cairoint.h | 30 ++++++++++++++++++++ + src/test-fallback-surface.c | 2 + + src/test-meta-surface.c | 2 + + src/test-paginated-surface.c | 2 + + 25 files changed, 131 insertions(+), 0 deletions(-) + +commit 948c3526dcdbc440395fff4ce9bf4b7553930d92 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Oct 24 17:37:30 2008 +0300 + + [cairo-spans] New abstract types for scan converting polygons. + + A cairo_span_renderer_t implementation can be provided by a surface if + it wants to render paths as horizontal spans of the alpha component of + a mask. Its job is to composite a source pattern to the destination + surface when given spans of alpha coverage for a row while taking care + of backend specific clipping. + + A cairo_scan_converter_t takes edges of a flattened path and generates + spans for a span renderer to render. + + src/Makefile.sources | 2 + + src/cairo-spans-private.h | 124 +++++++++++++++++++++++ + src/cairo-spans.c | 242 +++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 1 + + 4 files changed, 369 insertions(+), 0 deletions(-) + +commit 4b227143b3daab75148cd54c9e7580d509864e0d +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Jul 31 01:54:53 2008 +0300 + + [cairo-spans] Introduce a type to track which pixels combine in a compositing op. + + A cairo_composite_rectangles_t contains the coordinates of rectangular + windows into each of the source pattern, mask, clip and destination + surface containing the pixels that will combine in a compositing + operation. The idea is to have a uniform way to represent all the + translations involved rather than overloading parameters like src_x/y, + dst_x/y, etc., sometimes with different incompatible meanings across + functions. + + src/cairo-rectangle.c | 21 +++++++++++++++++++++ + src/cairo-types-private.h | 24 ++++++++++++++++++++++++ + src/cairoint.h | 7 +++++++ + 3 files changed, 52 insertions(+), 0 deletions(-) + +commit a370d077bc697588b6dac2556afa0b95ff83a77d +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Jul 25 16:35:14 2008 +0300 + + [path-fixed] New _cairo_path_fixed_is_region(). + + We want to hit the current fast paths for rendering axis aligned + rectilinear paths rather than spans, and for that we need to be able + to identify regional paths. + + src/cairo-path-fixed.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 3 + + 2 files changed, 99 insertions(+), 0 deletions(-) + +commit 6acb8223930081f70b422ef93a49ea645c2cc12d +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Sep 12 19:32:12 2008 +0300 + + [path-fixed] Avoid extra indirection when iterating already flat paths. + + Perform a plain iteration rather than a flattening one if the path + knows it doesn't have any curves. + + src/cairo-path-fixed.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +commit 0c0f4862c52d68776024f125b003ade455044b27 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Dec 6 13:32:37 2008 +0200 + + [perf-diff] Fix cairo-perf-diff for git 1.6 + + Since git 1.6 the plumbing commands aren't installed in the user's + path by default. This patch fixes cairo-perf-diff to find the + git-sh-setup command from git's lib dir. + + perf/cairo-perf-diff | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit afba0c312958852586b846ec615cff1bd3e5cde7 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Sep 12 17:41:45 2008 +0300 + + [perf] Add perf tests to hit rectilinear code paths. + + These tests look at the differences in code paths + hit by filling paths that are rectilinear (or not) and + pixel aligned (or not) with the even-odd and non-zero + fill rules. The paths are not simple, so they don't + hit the special case quad/triangle tessellator. + + perf/Makefile.am | 3 +- + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/spiral.c | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 204 insertions(+), 1 deletions(-) + +commit 8ec58113df417e1ec1d331ab65267c34e6d32096 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Fri Sep 12 17:32:40 2008 +0300 + + [perf] Explicitly test rendering a path with lots of intersections. + + We don't have one just for this purpose. The only other + path with many intersections that gets actually rendered is zrusin-another, + but that might be sped up in the future (say by identifying + collinearities up front or something like that.) + + perf/Makefile.am | 3 +- + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/intersections.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 101 insertions(+), 1 deletions(-) + +commit 08b486c9aa1d6ad01f1b17a16dcb4d695e8cbf7d +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Thu Dec 4 17:53:06 2008 -0500 + + [win32] Use MOD instead of the '%' operator + + Repeat should be handled using MOD instead of '%' so that negative numbers + are handled as expected. E.g. -1 mod 600 = 599, not 495 as the '%' operator + gives. This was causing https://bugzilla.mozilla.org/show_bug.cgi?id=466258 + + Patch from Robert O'Callahan + + src/cairo-win32-surface.c | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +commit 540de34453d16092acd2978b513831a02f01f59f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 26 12:53:29 2008 +0000 + + [matrix] Optimise invert for simple scaling|translation matrices. + + Peter Hercek reported, and provided a very useful test case for, a bug + that caused his applications to crash with Cairo detecting an + non-invertible pattern matrix and thus asserting the impossible happened. + Bisecting revealed that the bug first appeared with 3c18d95 and + disappeared with 0d0c6a1. Since neither of these explain the crash, + further investigation revealed a compiler bug (gcc 4.3.3 20081130, + earlier versions have different bugs!) that caused the matrix inversion + to be invalid iff _cairo_matrix_scalar_multiply() was inlined (i.e. -O0, + or an explicit noinline atttribute on that function prevented the bug, as + did -msse.) So we apply this workaround to hide the bug in the stable + series... + + The matrix is quite often just a simple scale and translate (or even + identity!). For this class of matrix, we can skip the full adjoint + rearrangement and determinant calculation and just compute the inverse + directly. + (cherry picked from commit 0d0c6a199c5b631299c72dce80d66ac0f4936a64) + + src/cairo-matrix.c | 26 +++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletions(-) + +commit aff32019a70600fec5040a5a73c4f0b688826064 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sun Nov 30 23:28:59 2008 -0500 + + [Makefile.am] Use top_srcdir instead of srcdir + + Doesn't make much difference here, but makes our intention clear. + + build/Makefile.am.changelog | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 51a75ad932af4a3c3da96ef98de79328afa200c3 +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Sun Nov 30 20:42:49 2008 +0800 + + glitz: Replace specified color with an opaque one if dst surface don't have an alpha channel. + + Otherwise if underlying glitz drawable has an alpha channel, glitz_set_rectangles + will set its alpha channel to specified value instead of opaque one and effects following + composite operations since glitz draws to attached drawable then copies its content to + the dst surface. With this commit, three test cases such as operator, operator-alpha and + unbounded-operator passes now. + + src/cairo-glitz-surface.c | 18 ++++++++++++------ + 1 files changed, 12 insertions(+), 6 deletions(-) + +commit 7247017cf5e6b497a5836d9081ee153d27c6b15e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 29 11:47:25 2008 +0000 + + Fix up a couple of likely(malloc==NULL) + + Adrian Johnson spotted that I marked a few malloc failures as likely, + whoops. + + src/cairo-cff-subset.c | 4 ++-- + src/cairo-clip.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 1659db2c1f4cc72e51fb43d119822ec7aaa77ac0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 29 10:37:58 2008 +0000 + + [test] Fix surface leak from device-offset-positive. + + A forgotten cairo_surface_destroy() caused the similar surface to be + leaked during the test. + + test/device-offset-positive.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 0d757a793d7fe2860c6a522124a123864fc97f0a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 29 10:36:34 2008 +0000 + + [png] Fix leak of original png data on error path. + + The error path was missing a _cairo_output_stream_destroy() to cleanup a + copy of the incoming PNG data. + + src/cairo-png.c | 15 +++++++++++---- + 1 files changed, 11 insertions(+), 4 deletions(-) + +commit e6963a5bfebda69a1ef0a986cede84bcd955b6d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 17:26:55 2008 +0000 + + Mark allocation failures as unlikely. + + Use the gcc likelihood annotation to indicate that allocation failures are + extremely unlikely. + + src/cairo-analysis-surface.c | 4 +- + src/cairo-array.c | 4 +- + src/cairo-base85-stream.c | 2 +- + src/cairo-bentley-ottmann.c | 13 +++---- + src/cairo-cache.c | 6 ++-- + src/cairo-cff-subset.c | 66 +++++++++++++++++++------------------- + src/cairo-clip.c | 8 ++-- + src/cairo-deflate-stream.c | 2 +- + src/cairo-directfb-surface.c | 2 +- + src/cairo-font-face.c | 6 ++-- + src/cairo-ft-font.c | 25 ++++++++------- + src/cairo-gstate.c | 17 +++++----- + src/cairo-hash.c | 6 ++-- + src/cairo-hull.c | 2 +- + src/cairo-image-surface.c | 12 +++--- + src/cairo-lzw.c | 4 +- + src/cairo-meta-surface.c | 24 +++++++------- + src/cairo-misc.c | 24 +++++++++----- + src/cairo-output-stream.c | 14 ++++---- + src/cairo-paginated-surface.c | 2 +- + src/cairo-path-fixed.c | 4 +- + src/cairo-path-stroke.c | 4 +- + src/cairo-path.c | 8 ++-- + src/cairo-pattern.c | 36 ++++++++++---------- + src/cairo-pdf-operators.c | 6 ++-- + src/cairo-pdf-surface.c | 34 ++++++++++---------- + src/cairo-pen.c | 8 ++-- + src/cairo-png.c | 14 ++++---- + src/cairo-polygon.c | 2 +- + src/cairo-ps-surface.c | 16 +++++----- + src/cairo-region.c | 2 +- + src/cairo-scaled-font-subsets.c | 28 ++++++++-------- + src/cairo-scaled-font.c | 29 ++++++++--------- + src/cairo-script-surface.c | 14 ++++---- + src/cairo-sdl-surface.c | 2 +- + src/cairo-skiplist.c | 2 +- + src/cairo-stroke-style.c | 2 +- + src/cairo-surface-fallback.c | 2 +- + src/cairo-surface.c | 4 +- + src/cairo-svg-surface.c | 16 +++++----- + src/cairo-traps.c | 4 +- + src/cairo-truetype-subset.c | 30 +++++++++--------- + src/cairo-type1-fallback.c | 15 ++++----- + src/cairo-type1-subset.c | 22 ++++++------ + src/cairo-type3-glyph-surface.c | 2 +- + src/cairo-user-font.c | 2 +- + src/cairo-xlib-display.c | 4 +- + src/cairo-xlib-screen.c | 2 +- + src/cairo-xlib-surface.c | 25 +++++++-------- + src/cairo-xlib-visual.c | 2 +- + src/cairo.c | 4 +- + src/test-fallback-surface.c | 2 +- + src/test-meta-surface.c | 2 +- + src/test-paginated-surface.c | 2 +- + 54 files changed, 300 insertions(+), 294 deletions(-) + +commit d1801c23fae3777c7c59e084894a3410f7a1f932 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 15:38:37 2008 +0000 + + Mark if(status) as being unlikely. + + The error paths should be hit very rarely during normal operation, so mark + them as being unlikely so gcc may emit better code. + + src/cairo-analysis-surface.c | 24 ++-- + src/cairo-array.c | 6 +- + src/cairo-cache.c | 4 +- + src/cairo-cff-subset.c | 208 ++++++++++++------------ + src/cairo-clip.c | 23 ++-- + src/cairo-font-face.c | 14 +- + src/cairo-ft-font.c | 44 +++--- + src/cairo-gstate.c | 66 ++++---- + src/cairo-image-surface.c | 16 +- + src/cairo-lzw.c | 4 +- + src/cairo-meta-surface.c | 42 +++--- + src/cairo-misc.c | 6 +- + src/cairo-output-stream.c | 2 +- + src/cairo-paginated-surface.c | 38 +++--- + src/cairo-path-fill.c | 6 +- + src/cairo-path-fixed.c | 14 +- + src/cairo-path-stroke.c | 56 ++++---- + src/cairo-path.c | 6 +- + src/cairo-pattern.c | 34 ++-- + src/cairo-pdf-operators.c | 60 ++++---- + src/cairo-pdf-surface.c | 334 +++++++++++++++++++------------------- + src/cairo-pen.c | 6 +- + src/cairo-png.c | 14 +- + src/cairo-ps-surface.c | 122 +++++++------- + src/cairo-scaled-font-subsets.c | 30 ++-- + src/cairo-scaled-font.c | 72 ++++---- + src/cairo-script-surface.c | 160 ++++++++++---------- + src/cairo-sdl-surface.c | 4 +- + src/cairo-surface-fallback.c | 82 +++++----- + src/cairo-surface.c | 60 ++++---- + src/cairo-svg-surface.c | 84 +++++----- + src/cairo-traps.c | 12 +- + src/cairo-truetype-subset.c | 98 ++++++------ + src/cairo-type1-fallback.c | 44 +++--- + src/cairo-type1-subset.c | 46 +++--- + src/cairo-type3-glyph-surface.c | 10 +- + src/cairo-user-font.c | 18 +- + src/cairo-xlib-screen.c | 4 +- + src/cairo-xlib-surface.c | 92 ++++++------ + src/cairo.c | 138 ++++++++-------- + 40 files changed, 1053 insertions(+), 1050 deletions(-) + +commit f0804d4856496a46d0b2270d5815856bf63b4cf8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 28 23:58:55 2008 +0000 + + [test] Exercise caps and joins under reflection. + + The nature of the joins depends critically upon whether the joint is + clockwise or counter-clockwise, so extend the basic caps-joins test to + exercise both conditions i.e. repeat the test under a reflection. + + test/Makefile.am | 6 ++- + test/caps-joins-curve.c | 111 ++++++++++++++++++++++++++++++++++++++ + test/caps-joins-curve.ps.ref.png | Bin 0 -> 3728 bytes + test/caps-joins-curve.ref.png | Bin 0 -> 5132 bytes + test/caps-joins.c | 40 ++++++++++---- + test/caps-joins.ps.ref.png | Bin 0 -> 2282 bytes + test/caps-joins.ps2.ref.png | Bin 1459 -> 0 bytes + test/caps-joins.ps3.ref.png | Bin 1459 -> 0 bytes + test/caps-joins.ref.png | Bin 1488 -> 2380 bytes + test/dash-curve.ref.png | Bin 39642 -> 39696 bytes + 10 files changed, 143 insertions(+), 14 deletions(-) + +commit f39dd86e292e9af3438acb041a3a7330fb4a3b22 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 27 00:23:11 2008 +0000 + + [test] Add simple cap test. + + Add a test case that only exercises capping, useful for developing + new strokers. + + test/Makefile.am | 3 ++ + test/caps.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ + test/caps.ps.ref.png | Bin 0 -> 1466 bytes + test/caps.ref.png | Bin 0 -> 1601 bytes + 4 files changed, 90 insertions(+), 0 deletions(-) + +commit f2982e103c27cad1edf648dadcfffe1a15763efd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 17:23:33 2008 +0000 + + [fill] Allow rectangles to be implicitly closed. + + Also scan for appendages of simple rectangles. + + src/cairo-path-fill.c | 2 +- + src/cairo-path-fixed-private.h | 4 ++-- + src/cairo-path-fixed.c | 14 +++++++++----- + 3 files changed, 12 insertions(+), 8 deletions(-) + +commit d2bcf1d76defda861e1a7f2271046851083ad694 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 28 17:12:03 2008 +0000 + + [path] Carefully check for no more points. + + As the empty path points to an embedded buf, we cannot rely on the buf + pointer being NULL to mark end-of-path. + + src/cairo-path-fixed-private.h | 10 +++++----- + src/cairo-path-fixed.c | 15 ++++++++++++--- + 2 files changed, 17 insertions(+), 8 deletions(-) + +commit 424aba9be558e89b4d42554ca6a5042574e3df75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 20:38:24 2008 +0000 + + [check] Search for the word NOTE + + Add word boundary markers around the regexp so that we only match for the + word NOTE and not on substrings like GL_NOTEQUAL. + + src/check-doc-syntax.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 36147140ce56d8d3492b971a9b6ceff97e212e01 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 28 18:54:02 2008 +0000 + + [perf] Fix build + + If automake detects the use of cairo_perf_LDADD in an unused conditional + that overrides the default - so we need to manually set cairo_perf_LDADD. + + perf/Makefile.am | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit ed6bd4766cb47e97b1a6ecb81eff5bf4673d549b +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Fri Nov 28 07:54:41 2008 +0800 + + image: Use unsigned long to compute color masks. + + Use unsigned long in the first place to prevent compiler from + expanding signed bit to all upper bits. e.g, a alpha mask 0xff0000 + will expand to 0xffffffffff00000 on 64 bit platform which is not + what we expected. + + src/cairo-image-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 41cb91d417e7c0dc1cc767ea0fb38a1f8b3f4e43 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Wed Nov 26 23:49:12 2008 +0200 + + [script] Use the in-tree libcairo for csi-replay. + + csi-replay was missing the in-tree libcairo.la so the build was + failing while looking for new symbols from the system libcairo. + + util/cairo-script/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f5634818f1e5cc0adaa326662c099a75f4e615eb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 14:56:38 2008 +0000 + + [os2] Move include cairo.h before os2.h + + The defines need to come first, but we specify that cairo.h is the first + header file to be included by files. + + src/cairo-os2.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2f0f9a1a593db43dd04507c5989cd0af4b1486de +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Nov 13 10:50:41 2008 +0100 + + [os2] Fix includes + + Patch from Dave Yeo to make cairo-os2.h include os2.h directly so the + header is standalone. + + src/cairo-os2-private.h | 11 ----------- + src/cairo-os2-surface.c | 5 ----- + src/cairo-os2.h | 8 ++++++++ + 3 files changed, 8 insertions(+), 16 deletions(-) + +commit 5591cb58fd94483ec3dc7c169ae8cf0a6b7841bd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 17:43:22 2008 +0000 + + [script] Only use zlib if available. + + Conditionally link against zlib - replaying a script will fail if the + trace uses a compressed format. + + configure.ac | 5 ++++- + util/cairo-script/Makefile.am | 2 +- + util/cairo-script/cairo-script-file.c | 5 ++++- + util/cairo-script/cairo-script-operators.c | 2 ++ + 4 files changed, 11 insertions(+), 3 deletions(-) + +commit 9432c0c9b89ed6b3d369b377cf884918cd6180db +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 17:33:35 2008 +0000 + + [script] Link the interpreter against the built library. + + Ensure we correctly link against the version of cairo just built. + + util/cairo-script/Makefile.am | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 815e5b962ef8477c344da0f0b52c1f85c9854777 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 17:30:29 2008 +0000 + + [script] Add a fallback image surface for replay + + If we do not have a native windowing surface compiled into the library, + just replay the script to an image surface. + + util/cairo-script/csi-replay.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 5e376523628d5e2078e395ea7263a04bacd37c47 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 17:26:57 2008 +0000 + + [skiplist] Check for ffs() + + Wine at least does not provide ffs(), so check at configure time and + open-code a replacement. + + build/configure.ac.system | 2 +- + src/cairo-skiplist.c | 11 +++++++++++ + 2 files changed, 12 insertions(+), 1 deletions(-) + +commit 60282b866aab359840b4bcaa6aaccaca2eccd3d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 16:58:29 2008 +0000 + + [glitz] Fix clone_similar(). + + Clone similar open-coded various image surface functions and failed to + clone a sub-region resulting in failures for mask-transformed-* and + large-source. + + src/cairo-glitz-surface.c | 458 ++++++++++++++------------------------------- + 1 files changed, 137 insertions(+), 321 deletions(-) + +commit 47275c7ece06c0d02f2d7c9aa81d87a7144392b0 +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Wed Nov 26 15:56:48 2008 +0100 + + [test] Fix glitz-surface-source test + + The recent changes to separate glitz/agl broke the compilation of the + glitz-surface-source test. + + test/glitz-surface-source.c | 96 ++++++++++++++++++++++++++++++++- + test/glitz-surface-source.ps2.ref.png | Bin 0 -> 376 bytes + test/glitz-surface-source.ps3.ref.png | Bin 0 -> 376 bytes + 3 files changed, 94 insertions(+), 2 deletions(-) + +commit a84ea7829065b7e1d33d6fed6bcf0c7c8abd383a +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Wed Nov 26 15:49:00 2008 +0100 + + [test] Add quartz-surface-source test + + Add a simple test to exercise using a Quartz surface as a source. + + test/Makefile.am | 6 ++++- + test/quartz-surface-source.c | 42 ++++++++++++++++++++++++++++++++ + test/quartz-surface-source.ps2.ref.png | Bin 0 -> 376 bytes + test/quartz-surface-source.ps3.ref.png | Bin 0 -> 376 bytes + test/quartz-surface-source.ref.png | Bin 0 -> 332 bytes + 5 files changed, 47 insertions(+), 1 deletions(-) + +commit 993941cfd701eb222b81cdddeabf6f7ff2daa150 +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Wed Nov 26 13:32:11 2008 +0000 + + [perf] Fix SDL compilation for MacOS X + + The attached patch makes the SDL tests compile under Mac OS X. The + problem is: + + 1) that <SDL_main.h> should be included in files that define the main + function for SDL Mac OS X programs (this is not true with the upcoming + SDL 1.3 release). + + 2) that -lSDLmain, because it is statically linked, needs the Cocoa + framework in the LDADD of the main program. Again, 1.3 will not require + this. + + perf/Makefile.am | 4 ++++ + perf/cairo-perf.c | 4 ++++ + test/Makefile.am | 4 ++++ + test/cairo-test-runner.c | 4 ++++ + 4 files changed, 16 insertions(+), 0 deletions(-) + +commit 8a5b55ca6c69671a138f65ab15bcf93163f24a37 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 13:26:40 2008 +0000 + + [matrix] Impose a maximum number of refinement iterations + + Ensure we do not loop forever trying to minimise the error between the + pixman and cairo matrices - for instance when the FPU is not running at + full precision. + + src/cairo-matrix.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 4218699642c621eb3098a5251ef88d8c7d8a96d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 11:54:29 2008 +0000 + + [skiplist] Use ffs() + + Use ffs() [find-first-set-bit] instead of open-coding, which is about 25% + faster on my test machine. + + src/cairo-skiplist.c | 11 +---------- + 1 files changed, 1 insertions(+), 10 deletions(-) + +commit 039437c9cfaeed7a2cc1977623ab8bda9854b58a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 26 10:31:09 2008 +0000 + + [png] Use FILE* instead of void*. + + Adrian Johnson reported that cygwin complained about the use of the void * + within feof() as it was using a macro and attempted a to deference the + void*... + + src/cairo-png.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 8fa3cd95641e9138406d651b0734ee84f1da60d2 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Nov 26 06:40:47 2008 +1030 + + Change uint to uint32_t + + src/cairo-image-info.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e828f7330633cd839f094bf8409de0bcff17c95c +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Wed Nov 26 00:09:11 2008 +0800 + + glitz: Apply fixup to unbounded operators to clear area outside of mask + + src/cairo-glitz-surface.c | 79 +++++++++++++++++++++++++++++++++++++------- + 1 files changed, 66 insertions(+), 13 deletions(-) + +commit 449e7518bee5d0238138176b3b71d137c6fc01e7 +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Tue Nov 25 22:55:24 2008 +0800 + + glitz: set correct parameters for linear and radial pattern. + + Glitz expects 16.16 fixed point, but we use 24.8 fixed point by default. + + src/cairo-glitz-surface.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit 3bde440e00ba19e968b854c1505dc4d1ace83504 +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Tue Nov 25 22:36:53 2008 +0800 + + glitz: fixup another stupid bug in fill_rectangles. + + Wny I doesn't notice them before. Without fixes it fills n_rect times of + the first one in the rectangle list. + + src/cairo-glitz-surface.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit 4ac38f7c2bde67cab37805cab8a2effb2a8617e4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 11:52:01 2008 +0000 + + [fill] Emit rectangles for GdkRegion + + Scan the path for a series of consistently wound rectangles. + + src/cairo-path-fill.c | 85 ++++++++++++++++++++++------ + src/cairo-path-fixed-private.h | 17 ++++++ + src/cairo-path-fixed.c | 124 +++++++++++++++++++++++++++++++++++++--- + 3 files changed, 201 insertions(+), 25 deletions(-) + +commit 23df74e5ffd6be876f3c19ee9d71683f5a0ed6f4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 11:45:30 2008 +0000 + + [xlib] Cosmetic tweak. + + Tightly scope the local rects. + + src/cairo-xlib-surface.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 06fabd6cbd0ad187f5f9f155d6b7962f76ec5dda +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 12:05:26 2008 +0000 + + [path] Fix up extents. + + Forgot to round the box to the integer rectangle and missed why only + testing on image. Very naughty. + + src/cairo-analysis-surface.c | 2 +- + src/cairo-path-bounds.c | 20 +++++++++++--------- + 2 files changed, 12 insertions(+), 10 deletions(-) + +commit 1f44fb97f3973aa90c4f27bcf9341149370c825d +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Tue Nov 25 20:45:03 2008 +0800 + + cairo-script: add $(top_builddir)/src to CPPPATH. + + $(top_builddir)/src is needed to find cairo-features.h while + building out of tree. + + util/cairo-script/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 487c708b3b6727eb2f8d3714edeae356a7cbbd40 +Author: Paolo Bonzini <bonzini@gnu.org> +Date: Tue Nov 25 20:40:37 2008 +0800 + + [boilerplate] fix compilation for glitz-agl + + As suggested on the list, this splits the cairo-boilerplate-glitz.c + file in three separate files, one for each backend. Furthermore, + it fixes a few problems in compilation of the AGL backend test harness. + + boilerplate/Makefile.sources | 6 +- + boilerplate/cairo-boilerplate-glitz-agl.c | 166 ++++++++ + boilerplate/cairo-boilerplate-glitz-glx.c | 244 ++++++++++++ + boilerplate/cairo-boilerplate-glitz-private.h | 6 + + boilerplate/cairo-boilerplate-glitz-wgl.c | 164 ++++++++ + boilerplate/cairo-boilerplate-glitz.c | 517 ------------------------- + 6 files changed, 585 insertions(+), 518 deletions(-) + +commit ca80b8c652dde4449216da9d11691202eef97bbd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 10:25:24 2008 +0000 + + [pdf] Add a default case to silence the compiler. + + The foolish compiler was emitting a warning about a potential + uninitialized variable even though the switch was fully populated. + + src/cairo-pdf-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit b8991a1c69ae5d8fb630296a3c689aa8d1546671 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 10:11:59 2008 +0000 + + [in-fill] Add the implicit close-path during move-to. + + When interpreting a fixed-path for a fill operation, any move-to + implicitly closes the current path. + + src/cairo-gstate.c | 12 ++++++------ + src/cairo-path-in-fill.c | 23 +++++++++++++---------- + src/cairo.c | 11 ++++------- + src/cairoint.h | 4 ++-- + 4 files changed, 25 insertions(+), 25 deletions(-) + +commit 59de6fb89e80ee6aeeb2984b545ceb9bb9f0f7bb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 25 10:04:50 2008 +0000 + + [path] Compute approximate extents. + + When computing the bounds of the clip path, we care more for a fast result + than absolute precision as the extents are only used as a guide to trim + the future operations. So computing the extents of the path suffices. + + src/cairo-analysis-surface.c | 16 ++-------- + src/cairo-clip.c | 29 +++---------------- + src/cairo-gstate.c | 13 ++------ + src/cairo-path-bounds.c | 63 ++++++++++++++++++++++++++++++++++++++--- + src/cairo-surface.c | 8 +++-- + src/cairo.c | 10 ++---- + src/cairoint.h | 8 ++++- + 7 files changed, 84 insertions(+), 63 deletions(-) + +commit b6bf047494fc308fff00d818b2920d8ba4aa7aed +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 21 15:27:31 2008 +0000 + + [clip] Check for error surface + + The update to use a NULL backend with an error surface broke creating a + context from an error surface. + + src/cairo-clip.c | 2 +- + src/cairo.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 721cad9b24c2ad049320950d231ed84046c5b8ab +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Nov 24 22:41:03 2008 +1030 + + Fix typo + + src/cairo-misc.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 70e4c532722bbcad1eca50438e6ab2cdd0ea9b53 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Nov 24 22:38:30 2008 +1030 + + Document location of image format specifications + + src/cairo-image-info.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 4ca644af274bda4603e7d02dbeca8641bbb3ff79 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Nov 24 00:29:54 2008 +1030 + + Win32-print: Add PNG embedding support + + src/cairo-win32-printing-surface.c | 106 +++++++++++++++++++++++++++--------- + src/cairo-win32-private.h | 3 + + 2 files changed, 82 insertions(+), 27 deletions(-) + +commit f59a3e03fc91dc4a1769b07bda77a364cc570bc8 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 22:27:49 2008 +1030 + + Add PNG get info function + + src/cairo-image-info-private.h | 5 ++++ + src/cairo-image-info.c | 46 ++++++++++++++++++++++++++++++++++----- + 2 files changed, 45 insertions(+), 6 deletions(-) + +commit 1892907e24d9f9f31942c6962aaa6d2ff9553ce7 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 21:36:40 2008 +1030 + + PDF: Disable PDF 1.5 features when version 1.4 is selected + + JPEG 2000 image embedding and ActualText marked content are + PDF 1.5 features. + + src/cairo-pdf-operators-private.h | 5 +++++ + src/cairo-pdf-operators.c | 8 ++++++++ + src/cairo-pdf-surface.c | 7 +++++++ + 3 files changed, 20 insertions(+), 0 deletions(-) + +commit c4a57385fa2e69020f43519bea21b98182bf5fd7 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 21:12:08 2008 +1030 + + PDF: Add cairo_pdf_surface_restrict_to_version API + + Now that we are using PDF 1.5 features, add an api to select between + version 1.4 or 1.5. + + src/cairo-pdf-surface-private.h | 2 + + src/cairo-pdf-surface.c | 116 +++++++++++++++++++++++++++++++++++++-- + src/cairo-pdf.h | 24 ++++++++ + 3 files changed, 136 insertions(+), 6 deletions(-) + +commit d85e836911d661275c29f2348a047e5d911f9004 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 21:03:22 2008 +1030 + + PDF: Add newline to end of binary streams + + PDF requires white space before the "endstream" + + src/cairo-pdf-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit b87d81ef0bb52570385a3c9e331651cbeb87b2bb +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 19:29:26 2008 +1030 + + Add image/jp2 to mime-data test + + test/jp2.jp2 | Bin 0 -> 2999 bytes + test/mime-data.c | 7 ++++++- + test/mime-data.pdf.ref.png | Bin 4466 -> 6482 bytes + test/mime-data.ps.ref.png | Bin 4466 -> 4554 bytes + test/mime-data.ref.png | Bin 155 -> 185 bytes + test/mime-data.svg.ref.png | Bin 6153 -> 6264 bytes + 6 files changed, 6 insertions(+), 1 deletions(-) + +commit 7fdb712cbaadc95c02f607a9f6c995f8beb01342 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 18:56:12 2008 +1030 + + PDF: Add JPEG2000 image embedding + + Requires increasing the PDF version to 1.5. + + src/cairo-pdf-surface.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 51 insertions(+), 1 deletions(-) + +commit 0746efbf0718095920d9258942d32a7023d22131 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 18:47:13 2008 +1030 + + Add JPEG2000 mimetype and image info function + + src/cairo-image-info-private.h | 4 ++ + src/cairo-image-info.c | 100 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-surface-fallback.c | 1 + + src/cairo.h | 1 + + 4 files changed, 106 insertions(+), 0 deletions(-) + +commit 5de1e4de938d03406ce3364c6c1baa958f210410 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 23 18:33:58 2008 +1030 + + Move cairo-jpeg-info.c to cairo-image-info.c + + Other image formats will be added to the same file. + + src/Makefile.sources | 4 +- + src/cairo-image-info-private.h | 54 ++++++++++++++ + src/cairo-image-info.c | 141 ++++++++++++++++++++++++++++++++++++ + src/cairo-jpeg-info-private.h | 54 -------------- + src/cairo-jpeg-info.c | 141 ------------------------------------ + src/cairo-pdf-surface.c | 6 +- + src/cairo-ps-surface.c | 6 +- + src/cairo-svg-surface.c | 6 +- + src/cairo-win32-printing-surface.c | 6 +- + 9 files changed, 209 insertions(+), 209 deletions(-) + +commit 63180edf6f7cc81beda626190ca1055efa330fda +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Sun Nov 23 11:42:26 2008 +0800 + + glitz: set clone_offset_{x, y} on success in clone_similar. + + With this fix, glitz backend passes 135 test cases and fails 66 test cases. + + src/cairo-glitz-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 36c1b3e5919f119a054e425ca03f7ce810d3e7ec +Author: Luo Jinghua <sunmoon1997@gmail.com> +Date: Sun Nov 23 10:27:49 2008 +0800 + + glitz: fixup a stupid bug in get_image. + + _pixman_format_from_masks returns a boolean instead of cairo status code. + Without this fix, get_image bails out over and over again even operations + was completed successfully. :-( + + src/cairo-glitz-surface.c | 14 +++++++++----- + 1 files changed, 9 insertions(+), 5 deletions(-) + +commit c8b70aacc6b5523e2f73bebf4f61e876de1c3b3f +Author: Nicolas Bruguier <gandalfn@club-internet.fr> +Date: Sat Nov 22 18:16:17 2008 +0800 + + glitz: bring glitz backend to more or less working state. + + Thanks Nicolas Bruguier for writing the original patch and + thanks Paolo Bonzini for pointing out. This patch converts 24.8 + fixed point values into 16.16 ones before passing them down to glitz. + And I fixed a use-after-free issue in _cairo_glitz_surface_set_clip_region. + glitz_surface_set_clip_region takes the pointer and doesn't copy the + clip boxes, the original code frees the clip boxes immediately after + setting clip region. Keeping the box around with the life time of clip + region fixes the bug. + + src/cairo-glitz-surface.c | 329 ++++++++++++++++++++++----------------------- + 1 files changed, 163 insertions(+), 166 deletions(-) + +commit 77e60df32fa59328bd32095c77f8c360805b5db7 +Author: Maarten Maathuis <madman2003@gmail.com> +Date: Sat Nov 8 15:29:40 2008 +0100 + + cairo-xcb: avoid leaking memory + + src/cairo-xcb-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 361962b7fb4385f164673991670b6fce0839d32a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 08:42:30 2008 +0000 + + [directfb] Compile fix with debug enabled. + + Fix a trivial compile failure reported here: + Bug 18322 - bug in _cairo_directfb_surface_release_source_image function + (http://bugs.freedesktop.org/show_bug.cgi?id=18322) + + src/cairo-directfb-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit f15b1f26becf28457e9ccf8903257a0dec25d547 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 23:19:19 2008 +0000 + + [region] Use the caller supplied array for extracting boxes. + + Allow the user to pass in a pre-allocated array and use it if the number + of boxes permits. This eliminates the frequent allocations during clipping + by toolkits. + + src/cairo-directfb-surface.c | 6 ++++-- + src/cairo-glitz-surface.c | 1 + + src/cairo-paginated-surface.c | 3 +++ + src/cairo-region.c | 11 ++++++----- + src/cairo-sdl-surface.c | 1 + + src/cairo-surface.c | 15 ++++++++------- + src/cairo-win32-surface.c | 3 ++- + src/cairo-xcb-surface.c | 1 + + src/cairo-xlib-surface-private.h | 2 +- + src/cairo-xlib-surface.c | 13 ++++++++----- + 10 files changed, 35 insertions(+), 21 deletions(-) + +commit 9d2c55c661885c06eed44e810004c2ebe07038d3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 21:53:34 2008 +0000 + + [traps] Embed sufficient traps to accommodate a stroke rectangle + + Small numbers of traps are frequently generated from either a path of a + single line, or that of a rectangle. Therefore should embed sufficient + storage with cairo_traps_t to accommodate the stroke of a single rectangle + (e.g. a pango unknown glyph hexbox) to avoid frequent allocations. + + src/cairoint.h | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit a11442154d958d5c9694eb944a715a6c689fda85 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 18:00:40 2008 +0000 + + [cairo] Allocate glyphs on the stack for show_text(). + + First try to use a stack buffer for the glyphs and clusters if the user + calls cairo_show_text() - for example, as pango does to draw the unknown hex + box. + + src/cairo.c | 18 ++++++++++++++---- + 1 files changed, 14 insertions(+), 4 deletions(-) + +commit 9556266ffcb1c34187730af90bb847950d6db66e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 09:40:25 2008 +0000 + + [surface] Make the error surfaces have a NULL backend. + + By using a NULL backend for the error surfaces, instead of a pointer to + the image surface backend end, we save a few lookup/redirections during + dynamic linking. + + src/cairo-surface.c | 22 ++++++---------------- + 1 files changed, 6 insertions(+), 16 deletions(-) + +commit cfd2c73826f5bf20624fbdf5b16fd08fbe18a914 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 09:36:02 2008 +0000 + + [image] Trim image surface size by a few bytes + + Convert an infrequently accessed series of cairo_bool_t and short enums + to a common bitfield. + + src/cairo-image-surface.c | 11 ++++++----- + src/cairoint.h | 7 ++++--- + 2 files changed, 10 insertions(+), 8 deletions(-) + +commit 1f48b36933b5ff082edf3e221563c15c3bf16b75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 20 12:41:18 2008 +0000 + + [script] Build fix for ! HAS_FT_FONT + + Correct the macro definition used when compiling without FreeType. + + util/cairo-script/cairo-script-operators.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 0d5e533b6cc43c4ebc030140933247cf160d47cd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 17:03:13 2008 +0000 + + [trace] Correctly push font-face onto the operand stack. + + We tried to push a reference to an undefined font-face, now we just copy + from the operand stack. + + util/cairo-trace/trace.c | 61 +++++++++++++++++++++++++++------------------- + 1 files changed, 36 insertions(+), 25 deletions(-) + +commit b426346b482e2687081433213ae107cb7b2ebe58 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 16:04:57 2008 +0000 + + [trace] Construct matrices directly + + Avoid building a temporary array by constructing the matrix directly. + + util/cairo-trace/trace.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 727ff2bd7260f26c9390079258c43e6890ef2284 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 14:25:20 2008 +0000 + + [xlib] Explicitly track whether the GC has clip_rects. + + Simplify the logic and remove some pessimism from the code by explicitly + tracking when we set clip rectangles on the GC. + + src/cairo-xlib-surface-private.h | 1 + + src/cairo-xlib-surface.c | 6 +++--- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit 63a86a470fb88ee876414164e7e26789c1065b82 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 14:04:01 2008 +0000 + + [surface] Replay meta surfaces to a similar surface. + + When cloning a meta-surface, first attempt to replay it to a similar + surface rather than a full-sized image buffer. + + src/cairo-surface.c | 30 ++++++++++++++++++++++++++++-- + 1 files changed, 28 insertions(+), 2 deletions(-) + +commit 7657bda0172f823fba61db4f66e0166c7619fbd2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 18 11:23:33 2007 +0000 + + [perf/pythagoras_tree] Another fractal. + + Test lots of rectangles and recursion path construction. + + perf/Makefile.am | 3 +- + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/pythagoras-tree.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 90 insertions(+), 1 deletions(-) + +commit abd0a2627d198eddb628bbc1f2974435a74655a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Dec 18 10:49:23 2007 +0000 + + [perf/dragon] Add a dragon curve perf case. + + Inspired by http://labs.trolltech.com/blogs/2007/08/31/rasterizing-dragons/ + and http://en.wikipedia.org/wiki/Dragon_curve, add a performance test case + to measure drawing this space-filling fractal curve. + + perf/Makefile.am | 3 +- + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/dragon.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 170 insertions(+), 1 deletions(-) + +commit 81ef772aa0bf512ec5ad8752da160117498bdb30 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 11:00:35 2008 +0000 + + [xlib] Mark GC as dirty if we have an outstanding clip. + + Ginn Chen reported a regression with Firefox where "the whole area of web + page is transparent until it redraws", and bisected it to the change to + lazily clear the clip. + + The bug would appears to be when we have an inconsistent GC clip - i.e. + the clip on the surface has been cleared, but we have not yet used and + thus cleared the GC, so that we did not mark the GC as having a clip set + when we freed it. + + src/cairo-xlib-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit c41b99268dd2424d09ab12ca560d5db30b6b6faf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 11:49:04 2008 +0000 + + Conditionally include byteswap.h + + Fixup compilation by copying the checks from cairo-wideint-private.h to + conditionally include byteswap.h and provide fallback implementations. + + util/cairo-script/cairo-script-interpreter.c | 1 - + util/cairo-script/cairo-script-operators.c | 1 - + util/cairo-script/cairo-script-private.h | 17 +++++++++++++++++ + util/cairo-script/cairo-script-scanner.c | 1 - + util/cairo-trace/trace.c | 17 ++++++++++++++++- + 5 files changed, 33 insertions(+), 4 deletions(-) + +commit 8345fedbe4d4d003c1f26a78ac7c512c04d04173 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 11:44:42 2008 +0000 + + [spline] Fix compile. + + Do not return the result of a void function. gcc chose to not warn about + this when removing the return parameter... + + src/cairo-spline.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit b6c371a47f33ec10d4d6130cc15677761df2bdfd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 08:44:24 2008 +0000 + + [pattern] Cosmetic. + + surface is equal to pattern->surface at this point. + + src/cairo-pattern.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 7894abbe6d43b10ab2a92d99bdd6a08878e9022c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 19 08:37:26 2008 +0000 + + [test] Support foreground only execution. + + Add an option to prevent forking - which makes it difficult to + valgrind/gdb individual tests. + + test/Makefile.am | 1 + + test/cairo-test-runner.c | 120 +++++++++++++++++++++++++--------------------- + 2 files changed, 67 insertions(+), 54 deletions(-) + +commit 645df0c6d2a3d9999bb18ddb8bb9995b3d597554 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 16:37:59 2008 +0000 + + [scaled-font] Clean-up compiler warning. + + gcc warns that the status may be used uninitialized, so fix it. + + src/cairo-scaled-font-subsets.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit 2fdee490745a6c3a75691907aadf8ae38c57234c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 17 12:22:39 2008 +0000 + + [compiler] likelihood macros + + Behdad prefers these to be upper-case to be consistent with G_UNLIKELY and + friends. However, as I intend to use these for nearly all instances of + if(status), I suggest that we keep to the short and not so loud: + if (unlikely (status)) + return status; + + src/cairo-compiler-private.h | 8 ++++---- + src/cairo-hash.c | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 97edc680c189205ac2f4e150009f1f1cbe55ba1a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 10:49:27 2008 +0000 + + [twin] Reduce tolerance. + + As the glyphs are rendered to cache, ensure that they are rendered at the + highest quality settings. + + src/cairo-font-face-twin.c | 1 + + src/cairo.c | 1 + + src/cairoint.h | 1 + + test/Makefile.am | 1 + + test/twin.pdf.ref.png | Bin 0 -> 1673 bytes + test/twin.ref.png | Bin 1673 -> 1718 bytes + 6 files changed, 4 insertions(+), 0 deletions(-) + +commit e50538863a2c063eba61b36cc08eff6eeb712956 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 10:45:19 2008 +0000 + + [twin] Tweak line width. + + Slightly increase line width to eliminate internal holes in the characters + where the strokes were not quite overlapping. + + src/cairo-font-face-twin.c | 2 +- + test/twin.c | 2 +- + test/twin.ps2.ref.png | Bin 1167 -> 1095 bytes + test/twin.ps3.ref.png | Bin 1167 -> 1095 bytes + test/twin.ref.png | Bin 1836 -> 1673 bytes + test/twin.svg11.ref.png | Bin 1773 -> 1662 bytes + test/twin.svg12.ref.png | Bin 1773 -> 1662 bytes + 7 files changed, 2 insertions(+), 2 deletions(-) + +commit 91c17d33324b51a3876bc6ce778c684111139303 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 18 00:32:54 2008 +0000 + + [trace] Simple unbounded cache for symbol lookups. + + Reparsing the dwarf info for every lookup is very slow, so cache the + symbol lookups. This initial implementation is unbounded in the simple + belief that the actual number of unique lookups during a program's + lifetime should be fairly small. (Extending to a bounded MRU list is left + as an exercise for the reader.) + + util/cairo-trace/lookup-symbol.c | 70 ++++++++++++++++++++++++++++++++----- + util/cairo-trace/trace.c | 9 +++-- + 2 files changed, 65 insertions(+), 14 deletions(-) + +commit 2839a0e800d6cc12b28da44f30a9e278ceac65aa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 16 20:04:55 2008 +0000 + + [script] Add a simple replay. + + A very simple replay program for trace replay. + + util/cairo-script/.gitignore | 1 + + util/cairo-script/Makefile.am | 7 +++- + util/cairo-script/csi-replay.c | 85 ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 92 insertions(+), 1 deletions(-) + +commit b091c5bfcad170fd563699a1c8b11e7d25d159a2 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Tue Nov 18 00:20:38 2008 +0200 + + BIBLIOGRAPHY: Cite Hars & Petruska's Pseudorandom Recursions paper. + + BIBLIOGRAPHY | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +commit 3a82f943988413e0d3fada9932bb385f4cbdb3c7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 16 18:21:52 2008 +0000 + + [test] Add util/cairo-script to include path. + + any2ppm needs the include path for cairo-script-interpreter so that it can + be built without an existing install. + + test/Makefile.am | 3 ++- + test/any2ppm.c | 3 --- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 997fa6a7729b72b25d9275929bf190e71eed1b9d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 16 17:43:40 2008 +0000 + + [configure] Remove old line for CairoScript testing. + + CairoScript testing should now be unconditional so remove the surplus + message. + + build/configure.ac.features | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit a2eff7c7deb9b41c387472bb91b9a7b9c8f319f0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 16 16:19:25 2008 +0000 + + [test] Add build rule for libcairo-script-interpreter.la + + Add a rule to build the cairo-script-interpreter on behalf of any2ppm. + + test/Makefile.am | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit bf309aab6072ee1004073e71bccdf3c8040a8ad6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 15 11:36:41 2008 +0000 + + [configure] Delete CAN_TEST_SCRIPT + + A CairoScript interpreter is built under utils and so is always available. + + configure.ac | 3 --- + test/any2ppm.c | 8 -------- + 2 files changed, 0 insertions(+), 11 deletions(-) + +commit d7873eecc598a558a2a862add8e9b056c4a23a4a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 14 17:18:47 2008 +0000 + + [spline] Eliminate intermediate allocations during spline decomposition. + + The spline decomposition code allocates and stores points in a temporary + buffer which is immediately consumed by the caller. If the caller supplies + a callback that handles each point computed along the spline, then we can + use the point immediately and avoid the allocation. + + src/cairo-bentley-ottmann.c | 12 +-- + src/cairo-path-fill.c | 23 ++--- + src/cairo-path-fixed.c | 27 ++--- + src/cairo-path-in-fill.c | 21 ++-- + src/cairo-path-stroke.c | 101 +++++++++-------- + src/cairo-pen.c | 254 ++++++++++++++++++++++++++++--------------- + src/cairo-polygon.c | 23 ++-- + src/cairo-spline.c | 121 ++++----------------- + src/cairo-types-private.h | 13 +- + src/cairoint.h | 65 ++++++++--- + 10 files changed, 331 insertions(+), 329 deletions(-) + +commit 3bf8379408ce9b1e08d130bcd1076766e36f1bef +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 14 09:50:29 2008 +0000 + + [type1] Propagate fatal NO_MEMORY erro from FreeType. + + If FreeType fails to load the glyph, check for a fatal error before + falling back (and effectively masking the fatal condition). + + src/cairo-type1-subset.c | 14 ++++++++++++-- + 1 files changed, 12 insertions(+), 2 deletions(-) + +commit db9ed77d8aa4f4b4c8410e52e5bbd16ffa94ee24 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 20:36:14 2008 +0000 + + [cairo] FLush surface on cairo_destroy() + + When discussing the implications of snapshot cow, one of the questions + that we raised was what happens on cairo_destroy()? The lifetime of the + context implicitly marks the extents of the drawing operations, typically + the expose event (or perhaps one phase of it). Therefore at the end of the + sequence we implicitly wish to flush the graphics events to the surface. + + src/cairo.c | 11 +++++++++++ + 1 files changed, 11 insertions(+), 0 deletions(-) + +commit 032be9849dfc32ec8802a4f086619755a3a397f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 16:36:01 2008 +0000 + + [skiplist] Inline testing. + + Add a loop to create a skip list to allow manual checking. + + src/Makefile.am | 5 ++++- + src/cairo-skiplist.c | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 1 deletions(-) + +commit e44c1f26e48cfb2f74834b6a8ef8532b0bd28982 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Sat Oct 18 01:15:44 2008 +0300 + + Use a smaller and faster random number generator. + + The previous LFSR generator used a large table to be speedy. The + replacement generator is the single stage generator (1) from section + 5.4 of [HP2007], requires no tables or extra state. I've run the + generator through Rob Brown's extended Dieharder test suite and it + passes all but one self-proclaimed buggy test (-d2) and the 2D sphere + minimum distance test (-d12). + + [HP2007] Hars L. and Petruska G., ``Pseudorandom Recursions: Small and Fast Pseurodandom Number Generators for Embedded Applications'', + Hindawi Publishing Corporation + EURASIP Journal on Embedded Systems + Volume 2007, Article ID 98417, 13 pages + doi:10.1155/2007/98417 + http://www.hindawi.com/getarticle.aspx?doi=10.1155/2007/98417&e=cta + + src/cairo-skiplist.c | 200 +++----------------------------------------------- + 1 files changed, 11 insertions(+), 189 deletions(-) + +commit a4c5371b5e6d0df71efc75fee6f6a8fe8c6d3488 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 14:56:38 2008 +0000 + + [os2] Move include cairo.h before os2.h + + The defines need to come first, but we specify that cairo.h is the first + header file to be included by files. + + src/cairo-os2.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 456252a1c2b00685bee18c01bf27738d6125b4f8 +Merge: 3b11997 ab61544 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Nov 14 15:27:34 2008 +0100 + + Merge branch '1.8' + + Conflicts: + + NEWS + cairo-version.h + +commit ab61544b30406a49abc1f559d81129edce6d41ec +Author: Carl Worth <cworth@cworth.org> +Date: Fri Nov 14 13:17:01 2008 +0100 + + Increment version to 1.8.5 after the 1.8.4 release. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 66e8f142e381501d114888c2d1fc1e7f6d6a9857 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Nov 14 11:08:40 2008 +0100 + + Increment version to 1.8.4 + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b9c1344ad82d38bb86fa85fbb565b2de64aa0e35 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Nov 14 11:07:10 2008 +0100 + + NEWS: Add notes for cairo 1.8.4 + + Just a few bug fixes here. + + NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 52 insertions(+), 0 deletions(-) + +commit 3b11997a23baa9e38e87b584ee29f4888a5d92f7 +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Nov 13 18:01:47 2008 +0200 + + [cairo-script] Remove outdated #error to allow compilation to succeed. + + The interpreter doesn't depend on the script surface anymore. + + util/cairo-script/cairo-script-interpreter.h | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +commit d654d528de16769932131da80f4b925151d50103 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Nov 13 16:45:15 2008 +0100 + + Blacklist "X.Org" < 7.0 with the buggy_repeat workaround. + + This is in response to a report that a 6.9 server crashes with + cairo's extend-reflect test: + + https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2 + + src/cairo-xlib-display.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 35a1ba0ddc45f9cc785c6f8a37b6bb49c953e047 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Nov 13 16:36:20 2008 +0100 + + Document the buggy_repeat workaround more carefully. + + It's a confusing condition, so let's be explicit about where + the various numbers come from. + + src/cairo-xlib-display.c | 54 ++++++++++++++++++++++++++++++++------------- + 1 files changed, 38 insertions(+), 16 deletions(-) + +commit cdfffc7420e005b2a7d1979feef8bd304183126c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 11:07:45 2008 +0000 + + Add CairoScript interpreter + + Add a CairoScript interpreter library and use it to replay the test output + for the CairoScript backend. The library is also used by the currently + standalone Sphinx debugger [git://anongit.freedesktop.org/~ickle/sphinx]. + The syntax/operator semantics are not yet finalized, but are expected to + mature before the next stable release. + + configure.ac | 20 +- + test/Makefile.am | 4 +- + test/any2ppm.c | 43 +- + util/Makefile.am | 2 +- + util/cairo-script/COPYING | 17 + + util/cairo-script/Makefile.am | 21 + + util/cairo-script/cairo-script-file.c | 1018 +++++ + util/cairo-script/cairo-script-hash.c | 448 ++ + util/cairo-script/cairo-script-interpreter.c | 473 +++ + util/cairo-script/cairo-script-interpreter.h | 104 + + util/cairo-script/cairo-script-objects.c | 666 +++ + util/cairo-script/cairo-script-operators.c | 5791 ++++++++++++++++++++++++++ + util/cairo-script/cairo-script-private.h | 853 ++++ + util/cairo-script/cairo-script-scanner.c | 1180 ++++++ + util/cairo-script/cairo-script-stack.c | 196 + + 15 files changed, 10802 insertions(+), 34 deletions(-) + +commit a856371bef496da0e84226f4fd2fc3cb72e955ac +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 10:45:34 2008 +0000 + + Add CairoScript backend. + + A new meta-surface backend for serialising drawing operations to a + CairoScript file. The principal use (as currently envisaged) is to provide + a round-trip testing mechanism for CairoScript - i.e. we can generate + script files for every test in the suite and check that we can replay them + with perfect fidelity. (Obviously this does not provide complete coverage + of CairoScript's syntax, but should give reasonable coverage over the + operators.) + + boilerplate/Makefile.sources | 3 + + boilerplate/cairo-boilerplate-script-private.h | 57 + + boilerplate/cairo-boilerplate-script.c | 125 ++ + boilerplate/cairo-boilerplate.c | 16 + + build/configure.ac.features | 2 + + configure.ac | 16 + + doc/public/tmpl/cairo-surface.sgml | 1 + + src/Makefile.sources | 3 + + src/cairo-base85-stream.c | 1 + + src/cairo-cache-private.h | 2 +- + src/cairo-cache.c | 41 +- + src/cairo-deflate-stream.c | 1 + + src/cairo-ft-font.c | 12 + + src/cairo-ft-private.h | 3 + + src/cairo-gstate.c | 3 +- + src/cairo-output-stream-private.h | 19 +- + src/cairo-output-stream.c | 43 +- + src/cairo-path-fixed-private.h | 11 + + src/cairo-path-fixed.c | 164 ++ + src/cairo-pattern.c | 255 +++ + src/cairo-pdf-operators.c | 1 + + src/cairo-ps-surface.c | 2 + + src/cairo-scaled-font-private.h | 9 +- + src/cairo-scaled-font.c | 5 + + src/cairo-script-surface.c | 2598 ++++++++++++++++++++++++ + src/cairo-script.h | 74 + + src/cairo-types-private.h | 1 + + src/cairo.h | 4 +- + src/cairoint.h | 18 + + test/Makefile.am | 4 +- + test/any2ppm.c | 87 +- + test/mime-data.script.ref.png | Bin 0 -> 1982 bytes + 32 files changed, 3540 insertions(+), 41 deletions(-) + +commit 47a56e08501ec9375f75c15e35a68c77b313ada4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 10 16:51:52 2008 +0100 + + [type1] Bind the RD procedure + + As the RD procedure may be called several hundred times for a full font, + it is worth binding. + + src/cairo-type1-fallback.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 0769d39d0093ec3bff5b72ecbfcef1bae2f03be2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 11:13:22 2008 +0000 + + Add predicate likelihood macros. + + Define the couple of standard macros that we can use to guide gcc + optimisations of which code path will be most likely taken. + + src/cairo-compiler-private.h | 17 +++++++++++++++++ + 1 files changed, 17 insertions(+), 0 deletions(-) + +commit b06c50cc54140a662adacde6336a3e7777f26ac3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 11:21:26 2008 +0000 + + [cairoint.h] Remove unused PLT entries. + + Trim the slim_hidden_proto/def to match the currently used functions. + + src/cairo-pattern.c | 1 - + src/cairo.c | 3 --- + src/cairoint.h | 16 ++++++---------- + 3 files changed, 6 insertions(+), 14 deletions(-) + +commit 20fc2a2f92e27082a8806b9acb4b904dc84da672 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 11 11:35:14 2008 +0000 + + [in-fill] Fixup boundary insideness testing + + Benjamin Otte noticed that the top-left vertex was now included within the + fill extents. Having updated the test case to check the insideness + conditions as defined by flash, fix the edge handling to match. + + src/cairo-path-in-fill.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9afad537301529a5a4b4ddf8b7e4425002ea39c7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 11 10:22:17 2008 +0000 + + [test] Expand in-fill-trapezoid + + Test vertices and edges of a rectangle to probe 'corner-cases', using the + insideness conditions from flash. + + test/in-fill-trapezoid.c | 34 ++++++++++++++++++++++++++++++++++ + 1 files changed, 34 insertions(+), 0 deletions(-) + +commit cebc84f367a81eedebf7ab0b6b082691923c3ef7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 8 00:06:38 2008 +0000 + + [hash] Separate out unique patterns of iterating over the table. + + Avoid unnecessary conditionals for the hotpaths by separating out the + iteration over the elements into their distinct modes. + + src/cairo-font-face.c | 2 +- + src/cairo-hash.c | 185 ++++++++++++++++++++++------------------------- + src/cairo-scaled-font.c | 11 ++- + 3 files changed, 93 insertions(+), 105 deletions(-) + +commit 5f0aa274459fa182d1f82d393224c46ce2b12785 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 13 10:45:15 2008 +0000 + + [trace] Add caller line info. + + Use lookup_symbol() on the return address to identify the caller and emit + useful debug info to the trace. + + util/cairo-trace/cairo-trace.in | 27 +++++++- + util/cairo-trace/lookup-symbol.c | 72 +++++++++----------- + util/cairo-trace/trace.c | 134 ++++++++++++++++++++++++++++++++++---- + 3 files changed, 178 insertions(+), 55 deletions(-) + +commit 4cd6b0c0b9862f398877cb23c294399b480ac8d0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 12 00:37:40 2008 +0000 + + [trace] Check for an undefined pattern and use index instead. + + util/cairo-trace/trace.c | 20 ++++++++++++++++++-- + 1 files changed, 18 insertions(+), 2 deletions(-) + +commit 76f249a49399744d6d936e36ca4d68ab4a1f3d3b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 11 09:12:50 2008 +0000 + + [trace] Detect and report broken traces. + + We cannot trace the cairo-script-interpreter as that uses Cairo's private + symbols. + + util/cairo-trace/trace.c | 15 ++++++++++++++- + 1 files changed, 14 insertions(+), 1 deletions(-) + +commit 01e2021b2b7b66e7cdb9c4b0326fd5793759848b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 10 16:15:28 2008 +0000 + + [trace] Trace mark-dirty + + Capture the image data on mark dirty and record in the trace. + + util/cairo-trace/cairo-trace.in | 2 +- + util/cairo-trace/trace.c | 121 +++++++++++++++++++++++++++++++++----- + 2 files changed, 106 insertions(+), 17 deletions(-) + +commit 8f3d0b55f50168f061a01eecfcb4ebecbff0e1c6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 11 09:25:24 2008 +0000 + + [trace] Add unstable warning. + + Add warning that CairoScript is unfinished and I may radically alter the + format/syntax/language before release. + + util/cairo-trace/trace.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 7ad2635ebe84ba7c050a7f00c5389cdc31ab1172 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 11 09:46:38 2008 +0000 + + [trace] Disable stdout by default. + + Don't hog the terminal when we save to a trace file anyway. + + util/cairo-trace/cairo-trace.in | 48 +++++++++++++++++++++++--------------- + 1 files changed, 29 insertions(+), 19 deletions(-) + +commit efa9e1088cbf1b5331cc0bab3348520f3b91ae4b +Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi> +Date: Thu Nov 13 12:11:12 2008 +0200 + + [clip] Fix uninitialised status return in _cairo_clip_intersect_mask() for empty extents. + + This fixes the clip-all test case crashing for me. + + src/cairo-clip.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 279a7cef349cf5aa87cdeacb9424413f51117fe8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Nov 13 10:50:41 2008 +0100 + + [os2] Fix includes + + Patch from Dave Yeo to make cairo-os2.h include os2.h directly so the + header is standalone. + + src/cairo-os2-private.h | 11 ----------- + src/cairo-os2-surface.c | 5 ----- + src/cairo-os2.h | 8 ++++++++ + 3 files changed, 8 insertions(+), 16 deletions(-) + +commit 0a682034a04fa7fc1407e7bc093ae01f4b385ad7 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Nov 11 13:26:09 2008 -0500 + + Make the clipping implementation comment clearer + + When reviewing the spans changes, I reread this comment and it wasn't as clear + as it could be. + + src/cairo-clip.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 4fdd856569a67636aaf29bc1a76eed44418db484 +Author: Peter Weilbacher <mozilla@weilbacher.org> +Date: Tue Nov 11 15:37:09 2008 +0100 + + README: adapt pixman version requirement to match configure.ac + + README | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9c0042840c70c14e3e608ac3849edf5f1ef99816 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Tue Nov 11 08:41:31 2008 -0500 + + [quartz] Add the proper propagation of extents + + This fixes the problems introduced by d682d275b90f7326df76d2764c513c8b6d5b551b + + src/cairo-quartz-surface.c | 24 +++++++++++++----------- + 1 files changed, 13 insertions(+), 11 deletions(-) + +commit 57551a91168a68399add9e5c324fba03961b7747 +Author: Jeff Muizelaar <jeff@infidigm.net> +Date: Tue Nov 11 08:31:23 2008 -0500 + + [quartz] Fix fallout caused by const cairo_pattern_t * + + 794460186459981cd43ca38f3eba07e3f6bf8908 broke the quartz backend. + Fix it by adding const to the appropriate parameters in the function + declarations and copying the pattern when needed. + + src/cairo-quartz-surface.c | 41 ++++++++++++++++++++++++----------------- + 1 files changed, 24 insertions(+), 17 deletions(-) + +commit 164069b339843837e04e2522a615f03a83b362c0 +Author: Maarten Maathuis <madman2003@gmail.com> +Date: Sat Nov 8 15:29:40 2008 +0100 + + cairo-xcb: avoid leaking memory + + src/cairo-xcb-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 5badcf6e370b9808374a1fa547383b236a9dcd21 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 8 11:17:34 2008 +0000 + + [trace] Use a string literal for the type. + + In order that the string is interned and so is only allocated the once. + + util/cairo-trace/trace.c | 28 ++++++++++++++-------------- + 1 files changed, 14 insertions(+), 14 deletions(-) + +commit 1d0faefbc8700833e9bde8a9c825b02b0f3cf910 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 7 22:48:21 2008 +0000 + + [trace] Record the XID as a number + + Don't waste string constants (which get interned) for a simple number! + + util/cairo-trace/trace.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 899a159b133e22f71e2a176785c91e78838c3fee +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 8 11:16:03 2008 +0000 + + [trace] Remove stray /source + + An accidental /source was pushing pushed onto the operand stack and never + used. + + util/cairo-trace/trace.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit f1cae5c52a5ee71b7933fca702bb525d98936838 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 7 20:52:08 2008 +0000 + + [ps] Trivial compile warning clenaup. + + Add a missing const to silence the compiler. + + src/cairo-ps-surface.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2b32c8b9e572c96ce8ba5c7d43b568f18f6da295 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 7 20:30:33 2008 +0000 + + [hash] Return lookup entry. + + Use the return value to return the result from _cairo_hash_table_lookup() + (as opposed to filling an output parameter on the stack) as this (a) + results in cleaner code (no strict-alias breaking pointer casts), (b) + produces a smaller binary and (c) is measurably faster. + + src/cairo-cache-private.h | 5 +-- + src/cairo-cache.c | 8 ++---- + src/cairo-cff-subset.c | 24 ++++++++----------- + src/cairo-font-face.c | 9 +++---- + src/cairo-ft-font.c | 6 ++-- + src/cairo-hash-private.h | 7 ++--- + src/cairo-hash.c | 24 ++++++------------- + src/cairo-misc.c | 7 ++--- + src/cairo-scaled-font-subsets.c | 47 +++++++++++++++++++-------------------- + src/cairo-scaled-font.c | 18 ++++++-------- + 10 files changed, 67 insertions(+), 88 deletions(-) + +commit d15fb9344bf86dd52cda0b43d3dfc49397fd84ec +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Fri Nov 7 20:06:35 2008 +0000 + + [hash] Set is_unique when finding an available for inserts + + As we obey the rule in Cairo that we only insert if we know that there is + no existing entry in the hash table, we can therefore perform a much quicker + search knowing that the key is unique. + + src/cairo-hash.c | 16 +++++++--------- + 1 files changed, 7 insertions(+), 9 deletions(-) + +commit cd2e18ddc65959a736fc7b7f6bbd3e76af0495a9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 7 18:35:39 2008 +0000 + + [test] Fix-up rgb byte packing + + Another embarrassing, but thankfully, trivial bug. + + boilerplate/cairo-boilerplate.c | 2 ++ + test/any2ppm.c | 14 +++++++++----- + 2 files changed, 11 insertions(+), 5 deletions(-) + +commit 2554d1759835a174b89107808d81d044c3e2e098 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Nov 7 13:26:46 2008 +0000 + + [surface] Pass a separate closure for the mime-type destroy notifier. + + A limitation of the current API was that the destroy notifier was called + on the mime-data block. This prevents the user from passing in a pointer + to a managed block, for example a mime-data block belonging to a + ref-counted object. We can overcome this by allowing the user to specify + the closure to be used with the destroy notifier. + + src/cairo-png.c | 3 ++- + src/cairo-surface.c | 9 ++++++--- + src/cairo-types-private.h | 1 + + src/cairo.h | 11 ++++++----- + test/mime-data.c | 3 ++- + test/pdf-mime-data.c | 4 +++- + util/cairo-trace/trace.c | 6 ++++-- + 7 files changed, 24 insertions(+), 13 deletions(-) + +commit ff0bd64e9436026f11e85eafcd74e9a0131c8b9f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 6 01:22:39 2008 +0000 + + [NEWS] Add a few notes. + + Help Carl with a speedy snapshot by writing a few notes about what has been + added so far to 1.9. + + NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 42 insertions(+), 0 deletions(-) + +commit 13627b46209f9239d10a155f2de7e53c0585e4c2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 6 01:04:52 2008 +0000 + + [in-fill] Fix transposed arguments. + + Silly typo that escaped the test suite. + + src/cairo-path-in-fill.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 9dee7af41f4f5a4c1285e9d7951148e78659c064 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 6 01:02:23 2008 +0000 + + [test] Add off-centre tests to in-fill-trapezoid. + + Reading through the previous commit spotted that the arguments to + edge_compare_for_y_against_x were transposed, but the test-suite had + failed to catch detect it. This is due that in order to actually + solve the equation we need to have a diagonal edge passing near an + off-centre point of interest, which was not among the test cases. So add + some off-centre tests to fully exercise the code. + + test/in-fill-trapezoid.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 66 insertions(+), 0 deletions(-) + +commit f5965cb7d6559e051c2581fe446d0b9f40427eb2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 23:48:52 2008 +0000 + + [in-fill] Avoid tessellation by counting number of edge crossing to -∞ + + Benjamin Otte reports that in one particular benchmark cairo_in_fill() is + a hotspot in the profile. Currently we tessellate the entire path and then + search for a containing trapezoid. This is very expensive compared to the + simple method of counting the number of edge crossing between the point of + interest and x=-∞. For example, this speeds tessellate-256 up by almost 3 + orders of magnitude. + + src/Makefile.sources | 1 + + src/cairo-gstate.c | 30 +----- + src/cairo-path-in-fill.c | 264 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 9 ++ + 4 files changed, 279 insertions(+), 25 deletions(-) + +commit 0ac98461597420d3dfe52e405c6b3322d32f4854 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Nov 6 00:04:11 2008 +0000 + + [test] Add WINDING variants to in-fill test + + Check cairo_in_fill() with some WINDING tests as well as the current + EVEN_ODD. + + test/in-fill-trapezoid.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 56 insertions(+), 0 deletions(-) + +commit 476d5daa9bfc5e9014d1b6572853d1d78ce6a6d9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 19:29:04 2008 +0000 + + [trace] Only build if we have zlib. + + Use the configure check for libz and do not attempt to build the trace + unless we have zlib. + + configure.ac | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 34564aa84a4642dceba75efdeef438be6c6896c8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 19:27:49 2008 +0000 + + [test/pdf2png] Remove dependency on GdkPixbuf + + It's appears to be dropped from the current poppler trunk, so just use our + own venerable cairo_surface_write_ton_png(). + + configure.ac | 2 +- + test/pdf2png.c | 32 +++++++++++++++++++------------- + 2 files changed, 20 insertions(+), 14 deletions(-) + +commit 564d64a1323c5cbcde2dd9365ac790fe8aa1c5a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 18:47:34 2008 +0000 + + [png] Complete the idempotent read_png() -> write_png() + + Write out the original PNG mime-data if attached to the surface during + cairo_surface_write_to_png(). Similar to how the compressed alternate + representations are handled by the other backends. + + Note: by automatically attaching and using the mime-data in preference to + the image data, we break the read_from_png(); draw(); write_to_png() + cycle. + + src/cairo-png.c | 14 ++++++++++++++ + 1 files changed, 14 insertions(+), 0 deletions(-) + +commit ec559822cfe6df0006ca2db2aa3a11699326865c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 18:11:36 2008 +0000 + + [trace] Use the mime-type image representation + + When emitting image data, first check to see if we have a pre-compressed + alternate representation. + + util/cairo-trace/trace.c | 303 ++++++++++++++++++++++++++++++++-------------- + 1 files changed, 214 insertions(+), 89 deletions(-) + +commit d63267e4e7e148836dcfc4c8e2a8396ddaab70d8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 17:18:51 2008 +0000 + + [test] Update mime-data to check image/png + + Add a "image/png" mime-type test. + + test/Makefile.am | 1 + + test/mime-data.c | 67 +++++++++++++++++++++++++++++--------------- + test/mime-data.pdf.ref.png | Bin 4345 -> 4466 bytes + test/mime-data.ps.ref.png | Bin 4345 -> 4466 bytes + test/mime-data.ref.png | Bin 127 -> 155 bytes + test/mime-data.svg.ref.png | Bin 0 -> 6153 bytes + test/png.png | Bin 0 -> 2096 bytes + 7 files changed, 45 insertions(+), 23 deletions(-) + +commit e4ec5c762f6d01cc5af28dc0a256e268a04101aa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 16:44:49 2008 +0000 + + [svg] Embed original PNG data. + + Embed the attached PNG representation of a surface in preference to + re-encoding the surface. + + src/cairo-svg-surface.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 files changed, 38 insertions(+), 0 deletions(-) + +commit e40d62a0fe96b8b937017a3bc2f18766c411ec41 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 16:38:34 2008 +0000 + + [png] Attach the png representation to cairo_surface_create_from_png(). + + Attach the original png data as an alternate representation for image + surfaces created by cairo_surface_create_from_png(). + + src/cairo-output-stream-private.h | 5 ++ + src/cairo-output-stream.c | 28 ++++++++- + src/cairo-png.c | 127 +++++++++++++++++++++++-------------- + src/cairo-surface-fallback.c | 20 +++--- + src/cairo.h | 1 + + 5 files changed, 122 insertions(+), 59 deletions(-) + +commit 89616dee8f11c6a7de3fa476b13661420648786f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 16:41:13 2008 +0000 + + [surface] Don't allocate a structure for mime_data == NULL. + + If the user attempts to clear the attached mime data representation, just + clear the user data slot and do not allocate an empty structure. + + src/cairo-surface.c | 21 ++++++++++++--------- + 1 files changed, 12 insertions(+), 9 deletions(-) + +commit a1ab11df01962bea5752f5a5b53926a26a6f34ae +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Nov 5 11:50:20 2008 -0500 + + Define RepeatNone, etc if the available Render version doesn't (#18385) + + src/cairo-xlib-xrender-private.h | 18 ++++++++++++++++++ + 1 files changed, 18 insertions(+), 0 deletions(-) + +commit 43cfaec39cc742ddfbf566b36391d620400e10be +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Wed Nov 5 11:50:20 2008 -0500 + + Define RepeatNone, etc if the available Render version doesn't (#18385) + + src/cairo-xlib-xrender-private.h | 18 ++++++++++++++++++ + 1 files changed, 18 insertions(+), 0 deletions(-) + +commit 199c0e71139fe9baf83e74ea69c01629ace5f9a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 15:12:19 2008 +0000 + + [svg] Embed jpeg data. + + Support jpeg embedding for svg output. + + src/cairo-svg-surface.c | 50 +++++++++++++++++++++++++++++++++++++++++++--- + test/Makefile.am | 1 + + 2 files changed, 47 insertions(+), 4 deletions(-) + +commit 2261590875b4be7aa258c51e766f68974750e9e7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 15:11:32 2008 +0000 + + [trace] Trim a few bytes from glyph arrays + + Remove some redundant whitespace from the glyph arrays to improve + readability and shrink the output file size. + + util/cairo-trace/trace.c | 65 +++++++++++++++++++++++++++------------------- + 1 files changed, 38 insertions(+), 27 deletions(-) + +commit 248dd97075b50cd91619022098ed5dd35a66b5df +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Nov 6 00:17:53 2008 +1030 + + win32-printing: Implement JPEG support + + src/cairo-win32-printing-surface.c | 91 ++++++++++++++++++++++++++++++++---- + src/cairo-win32-private.h | 3 + + 2 files changed, 85 insertions(+), 9 deletions(-) + +commit 29621bd3995c5269fd6f73ab501383433bd29768 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 12:16:47 2008 +0000 + + [matrix] Remove stray offset from previous commit. + + I moved the pixel centre to xc,yc but forgot to remove it during + compensation - as caught by the test suite. + + Refresh a couple of reference images that depend upon exact pixel-centre + rounding conditions. + + src/cairo-matrix.c | 8 ++++---- + test/rotate-image-surface-paint.ref.png | Bin 232 -> 190 bytes + test/surface-pattern.pdf.ref.png | Bin 14776 -> 14791 bytes + test/surface-pattern.ref.png | Bin 11044 -> 11100 bytes + test/surface-pattern.svg.ref.png | Bin 16151 -> 16069 bytes + 5 files changed, 4 insertions(+), 4 deletions(-) + +commit e811173311ebe76d47eebcf5c6c5c798f9d3ea72 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 10:59:15 2008 +0000 + + [matrix] Compensate pixman_matrix in device space. + + We wish to reduce the visible error when converting to a pixman matrix, so + perform the compensation in device space instead of pattern space. + + src/cairo-image-surface.c | 4 +- + src/cairo-matrix.c | 53 +++++++++++++++++++++++++++----------------- + 2 files changed, 34 insertions(+), 23 deletions(-) + +commit c95eebc92316ad50840fab1cec6c14b6c3e50fa5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 09:56:02 2008 +0000 + + [pattern] Split the translation between the matrix and [xy]_offset + + pixman limits the src] co-ordinates (and thus [xy]_offset] to 16bits, + so we need to be careful how much of the translation vector to push into + [xy]_offset. Since the range is the same for both, split the integer + component between the matrix and the offset. + + test/scale-offset* now at least shows the source image, even if it is + misplaced. + + src/cairo-pattern.c | 7 +++++-- + test/scale-offset-image.ps.ref.png | Bin 7445 -> 7289 bytes + test/scale-offset-image.ref.png | Bin 10005 -> 9953 bytes + test/scale-offset-similar.ps.ref.png | Bin 7819 -> 7860 bytes + test/scale-offset-similar.ref.png | Bin 10005 -> 9953 bytes + 5 files changed, 5 insertions(+), 2 deletions(-) + +commit d1b8186fd75922e73e62ef8f2ebb011e334ebe36 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 01:16:25 2008 +0000 + + [trace] Correct emission of set_font_face and set_source + + set_font_face was not consuming it's operand but blithely placing an + undefined font_face onto the operand stack, whereas set_source was + performing invalid exchanges on the stack. + + util/cairo-trace/trace.c | 36 +++++++++++++++++++++++++++--------- + 1 files changed, 27 insertions(+), 9 deletions(-) + +commit 4a4b10271a614ee9bf982994b8f9ec6b6102ee10 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 00:02:09 2008 +0000 + + [trace] Capture foreign drawables. + + If we attempt to use a surface as a source before we write to it, record + the surface contents. + + util/cairo-trace/trace.c | 102 +++++++++++++++++++++++++++++++++++++++++---- + 1 files changed, 93 insertions(+), 9 deletions(-) + +commit 432fe1ec2792153ec2559ef52aece3fcdc9c5df4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 15:30:23 2008 +0000 + + [trace] Mark filter mode as immediate. + + Be consistent and use "//" for the filter mode to indicate a constant. + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 68309481aa9295026e3e7e6407c793f899b5e600 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Nov 5 08:03:01 2008 +0000 + + [test] Mark targets with is_meta? + + Allow tests to skip targets based on whether they are a meta surface or + not. + + boilerplate/cairo-boilerplate.c | 40 +++++++++++++++++++++++--------------- + boilerplate/cairo-boilerplate.h | 1 + + test/cairo-test.c | 13 +++++++++++- + 3 files changed, 37 insertions(+), 17 deletions(-) + +commit 8855f9583e84ae2e6d981e21133f590bff2065ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 20:04:02 2008 +0000 + + [test] Add scale-offset-(similar|image) + + Add a test case for the scaling bug reported by Michel Iwaniec: + http://lists.cairographics.org/archives/cairo/2008-November/015660.html + + test/Makefile.am | 6 ++ + test/scale-offset-image.c | 142 +++++++++++++++++++++++++++++++++ + test/scale-offset-image.ps.ref.png | Bin 0 -> 7445 bytes + test/scale-offset-image.ref.png | Bin 0 -> 10005 bytes + test/scale-offset-similar.c | 143 ++++++++++++++++++++++++++++++++++ + test/scale-offset-similar.ps.ref.png | Bin 0 -> 7819 bytes + test/scale-offset-similar.ref.png | Bin 0 -> 10005 bytes + 7 files changed, 291 insertions(+), 0 deletions(-) + +commit aad980900314bd032468f41a3216769c66e62097 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 19:11:55 2008 +0000 + + [test] Only depend on any2ppm if we build it. + + Do not add a dependency to any2ppm if it has been deconfigured. + + test/Makefile.am | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 59bdeba9abd7bef15c6855d707c4cf92b623cb00 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 18:42:05 2008 +0000 + + [matrix] Minimise pixman conversion error. + + Minimise the error of the pixman matrix about the centre of the displayed + area rather than the origin. + + src/cairo-image-surface.c | 25 +++++++++++++++++-------- + src/cairo-matrix.c | 24 ++++++++++++++---------- + src/cairo-pattern.c | 3 ++- + src/cairo-xlib-surface.c | 33 +++++++++++++++++++++++---------- + src/cairoint.h | 4 +++- + test/Makefile.am | 3 +-- + test/surface-pattern.pdf.ref.png | Bin 15996 -> 14776 bytes + test/surface-pattern.ref.png | Bin 11439 -> 11044 bytes + test/surface-pattern.svg.ref.png | Bin 0 -> 16151 bytes + test/surface-pattern.svg11.ref.png | Bin 17663 -> 0 bytes + test/surface-pattern.svg12.ref.png | Bin 17663 -> 0 bytes + 11 files changed, 60 insertions(+), 32 deletions(-) + +commit 068d465bb3541cc0ffc3cb9daa0848365c0a6a24 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 14:57:21 2008 +0000 + + [trace] Fix emission of cairo_scaled_font_create() + + In the case where the font face was no longer on the operand stack, the + font face would not have been passed to cairo_scaled_font_create(). + + util/cairo-trace/trace.c | 27 +++++++++++++-------------- + 1 files changed, 13 insertions(+), 14 deletions(-) + +commit a3d56c60e85176526d6cce139441b6921acc9218 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 14:06:02 2008 +0000 + + [trace] Use a common directory by default. + + If called directly (e.g. via /etc/ld.so.preload) put the output trace into + a central directory, and not the pwd. + + util/cairo-trace/Makefile.am | 10 ++++++++-- + util/cairo-trace/trace.c | 8 ++++++-- + 2 files changed, 14 insertions(+), 4 deletions(-) + +commit 3f7a21c5c93d8648ded097757852df44fc9fcaeb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 13:46:10 2008 +0000 + + [test] Add jpeg.jpg to EXTRA_DIST + + Forgot to add the new file to the distribution with the previous commit. + + test/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 9900a2adf3e43e752bd421f00e81873b41db4c30 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 13:41:02 2008 +0000 + + [test] Update mime-data jpeg reference data. + + <adrianj> ickle_: If we are going to use a different image for jpeg in + mime-data maybe we could create a jpg that contains the text "jpeg". That + way when support for the other image formats is added the mime-data test + could have one image for each type with each image and it is easy to see + that each image is the correct one. + + test/jpeg.jpg | Bin 0 -> 2316 bytes + test/mime-data.c | 6 +++--- + test/mime-data.pdf.ref.png | Bin 96 -> 4345 bytes + test/mime-data.ps.ref.png | Bin 368 -> 4345 bytes + test/mime-data.ref.png | Bin 263 -> 127 bytes + 5 files changed, 3 insertions(+), 3 deletions(-) + +commit c13a09ddb411287224c15728b14f23fef472f7d0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 13:00:36 2008 +0000 + + [test] Use a different jpeg image for mime-data + + Detect when we successfully encode the JPEG data from the mime-type by + using a completely image. + + test/Makefile.am | 3 +++ + test/mime-data.c | 6 +++++- + test/mime-data.pdf.ref.png | Bin 0 -> 96 bytes + test/mime-data.ps.ref.png | Bin 0 -> 368 bytes + test/scarab.jpg | Bin 0 -> 9650 bytes + 5 files changed, 8 insertions(+), 1 deletions(-) + +commit 8407470409ad9cb93263a1c2da7dd7446d3f897e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 12:45:47 2008 +0000 + + [test] Adapt pdf-mime-data for non-srcdir build. + + Need to look for reference/input images from srcdir as well. + + test/Makefile.am | 2 +- + test/pdf-mime-data.c | 44 ++++++++++++++++++++++++++++++++------------ + 2 files changed, 33 insertions(+), 13 deletions(-) + +commit 8007618837c0292b6ebc6a4f954c5049d4e99d8a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 12:31:10 2008 +0000 + + [test] Fix compilation of imagediff. + + imagediff broke once again. + + test/Makefile.am | 3 ++- + test/imagediff.c | 17 +++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletions(-) + +commit 282d7744275f623ce550638df953ef279d2209f0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 12:53:15 2008 +0000 + + [mime-type] Request the mime-data for the source surface, not ourselves! + + Fixup a typo I introduced that caused us to request the jpeg data for the + destination surface and not the source. + + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 5 ++--- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit aa616abc9ab02e333cf0cad4f524b15c710bf449 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 11:18:22 2008 +0000 + + [png] Use RGB for opaque images. + + If the ARGB32 is opaque, discard the alpha channel - so we should generate + byte identical output to the reference images. + + src/cairo-png.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +commit 30976635d7072c06d00e39b106e41be7b08c6c49 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Nov 4 22:52:45 2008 +1030 + + PS: Implement JPEG embedding + + src/cairo-ps-surface.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 101 insertions(+), 3 deletions(-) + +commit 73bc278c7a4630cd9299c974771ffd6e9245d0ac +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Tue Nov 4 22:25:26 2008 +1030 + + Add pdf mime data test + + To test that images in PDF files correctly embedded the mime data. + + test/Makefile.am | 2 + + test/pdf-mime-data.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 153 insertions(+), 0 deletions(-) + +commit 3f18d38fbdc661d34e0fd951e0fd3aa1aa2cbcc9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 10:31:48 2008 +0000 + + [win32] Compile fix for extend-pad extents. + + Update the show_glyphs() prototype to include the extents argument. + + src/cairo-win32-printing-surface.c | 3 ++- + src/cairo-win32-private.h | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 5ba95b7e1287ade0b8a1acf2f5cb73fa1f44c451 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 09:22:28 2008 +0000 + + [trace] Convert [1 0 0 1 0 0] to identity + + Simplify the trace/replay by replacing the identity array with the + identity operator. + + util/cairo-trace/trace.c | 34 +++++++++++++++++++++++++--------- + 1 files changed, 25 insertions(+), 9 deletions(-) + +commit 3664b32195b101ebab9a5f9087095306f8969c80 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Nov 4 10:38:41 2008 +0000 + + [trace] Remove more @..@ from Makefile.am + + Use $(..) for make variable substitution as opposed to incorrectly using + @..@ for substitution by configure. + + util/cairo-trace/Makefile.am | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 1d8ad69abb88f6e0283b6ce2aadc5d801b8e3722 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Nov 4 01:51:06 2008 -0500 + + [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363) + + build/aclocal.dolt.m4 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 310026ab42c2078e2749c886c74c5b38cab41671 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Nov 4 01:51:06 2008 -0500 + + [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363) + + build/aclocal.dolt.m4 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 90217550120f129004bc555b59ced28b4b25a4d4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 23:45:12 2008 +0000 + + [mime-data] Copy a reference to the mime-data on snapshotting. + + Instead of doing a full-copy of the mime data (which can be 10K-100K, + or even larger) just copy a reference to the original mime to the + snapshot surface (as suggested by Behdad). + + src/cairo-surface-fallback.c | 29 +++------------- + src/cairo-surface.c | 79 +++++++++++++++++++++++++++++------------- + src/cairo-types-private.h | 2 + + src/cairoint.h | 5 +++ + 4 files changed, 67 insertions(+), 48 deletions(-) + +commit 4f032ca35a7086b76775e4b53c6b99ba4e1eb3cb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 23:23:09 2008 +0000 + + [trace] Install cairo-trace.so into $(libdir)/cairo + + Install the auxiliary library into the cairo subdirectory within the + lib path, so that it doesn't clutter $(libdir) and sets a precedent for + future auxiliary libraries. + + util/cairo-trace/Makefile.am | 7 ++++--- + util/cairo-trace/cairo-trace.in | 13 ++++++++++--- + 2 files changed, 14 insertions(+), 6 deletions(-) + +commit c80a1c68c19f876c9f55b7c6d62b18ae110b11d0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 23:16:09 2008 +0000 + + [configure] Make trace consistent. + + Remove the debianism from the comments for HAVE_BFD and comply with + Behdad's guidelines on using $(...) within Makefile.am. + + configure.ac | 5 ++--- + util/cairo-trace/Makefile.am | 6 +++--- + 2 files changed, 5 insertions(+), 6 deletions(-) + +commit 43e2370b024f66d995c514fd53414d3d8588a481 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 14:20:35 2008 +0000 + + [test] Update extend-pad. + + extend-pad was not a clear demonstration of the EXTEND_PAD mode, so revamp + it to show the filter extending a 4 pixel surface to cover the entire + output. However, this hides a discrepancy with the vector surfaces that we + cannot prevent the external renders from applying an interpolation to the + border pixels, so we copy the original test to extend-pad-border to check + the desired behaviour on boundary pixels. + + test/Makefile.am | 4 ++ + test/extend-pad-border.c | 95 +++++++++++++++++++++++++++++++++++++++ + test/extend-pad-border.ref.png | Bin 0 -> 616 bytes + test/extend-pad-similar.c | 82 +++++++++++++++++++++++++++++++++ + test/extend-pad-similar.ref.png | Bin 0 -> 315 bytes + test/extend-pad.c | 50 ++++++++------------- + test/extend-pad.ref.png | Bin 616 -> 315 bytes + 7 files changed, 200 insertions(+), 31 deletions(-) + +commit b3462c5616ae24fd391ad0872d2fbb98c6cd0c92 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 13:10:42 2008 +0000 + + [test] Convert a few residual '-out.*' + + Catch a few -out.* hiding in boilerplate. + + boilerplate/cairo-boilerplate-pdf.c | 2 +- + boilerplate/cairo-boilerplate-ps.c | 2 +- + boilerplate/cairo-boilerplate-svg.c | 2 +- + boilerplate/cairo-boilerplate-win32-printing.c | 2 +- + test/Makefile.am | 6 +++--- + 5 files changed, 7 insertions(+), 7 deletions(-) + +commit 34586860ef08e6aab988ba227997dfe376f9d319 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 12:11:14 2008 +0000 + + [trace] Big-endian compile fixes. + + A few typos. + + util/cairo-trace/trace.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit ca83df55a63eab1821dbc009f65b3b09d61f5b62 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 11:46:31 2008 +0000 + + [trace] Wrap test surfaces. + + Wrap the test surfaces to avoid crashes whilst tracing the test suite. + + util/cairo-trace/trace.c | 116 ++++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 108 insertions(+), 8 deletions(-) + +commit 2c08f3f83b1acd168cd74b300272970658179a0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 11:30:38 2008 +0000 + + [trace] Autodetect -lbfd during configure + + Stop being lazy and detect libbfd during configure. + + configure.ac | 10 ++++++++++ + util/cairo-trace/Makefile.am | 2 +- + util/cairo-trace/lookup-symbol.c | 6 +++--- + 3 files changed, 14 insertions(+), 4 deletions(-) + +commit 8fc3d0ffebea5622332327cdef9222486cc85581 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 11:01:22 2008 +0000 + + [mime-data] Allow embedding of arbitrary mime-types. + + Use the surface user-data array allow to store an arbitrary set of + alternate image representations keyed by an interned string (which + ensures that it has a unique key in the user-visible namespace). + + Update the API to mirror that of cairo_surface_set_user_data() [i.e. + return a status indicator] and switch internal users of the mime-data to + the public functions. + + src/cairo-debug.c | 2 + + src/cairo-jpeg-info-private.h | 6 +- + src/cairo-jpeg-info.c | 19 +++---- + src/cairo-misc.c | 98 +++++++++++++++++++++++++++++++++++ + src/cairo-mutex-list-private.h | 1 + + src/cairo-pdf-surface.c | 16 +++--- + src/cairo-surface-fallback.c | 37 +++++++++---- + src/cairo-surface-private.h | 4 -- + src/cairo-surface.c | 91 ++++++++++++++++++++++++++------- + src/cairo-types-private.h | 7 +++ + src/cairo.h | 4 +- + src/cairoint.h | 8 +++ + test/Makefile.am | 3 + + test/mime-data.c | 111 ++++++++++++++++++++++++++++++++++++++++ + test/mime-data.ref.png | Bin 0 -> 263 bytes + test/romedalen.jpg | Bin 0 -> 11400 bytes + util/cairo-trace/trace.c | 2 +- + 17 files changed, 351 insertions(+), 58 deletions(-) + +commit afef83a1fae028b45cefd6b4698e7b32ad4d6fc7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Nov 3 09:40:35 2008 +0000 + + Compile tidy. + + Fix a few minor compiler warnings. + + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-surface.c | 6 +++--- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit f77723fc88c12ebf6f5bff5a1797649d134ecc5d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 2 19:59:53 2008 +0000 + + [pdf] Missing status check. + + Check that stream was successfully opened before attempting to write to + it. + + src/cairo-pdf-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 04e3bb932eeac4f403b512087b96a164d082d52c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Nov 2 21:51:37 2008 +0000 + + [trace] Emit set_mime_data(). + + Wrap the new cairo_surface_set_mime_data() function. + + util/cairo-trace/trace.c | 30 ++++++++++++++++++++++++++++-- + 1 files changed, 28 insertions(+), 2 deletions(-) + +commit 350fa7b98e5045a4fa05f64a1ad7d8167036be34 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Nov 1 13:12:43 2008 +0000 + + [trace] Fix boundary terminations + + Don't increment the terminator! + + util/cairo-trace/trace.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f3cbc5cf4580da83b7edacfd381afee3d571c659 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 23:47:16 2008 +0000 + + [trace] Use utf8 len in show_text_glyphs(). + + Honour the parameter specifying the length of the utf8 string when + emitting show_text_glyphs. + + util/cairo-trace/trace.c | 36 ++++++++++++++++++++---------------- + 1 files changed, 20 insertions(+), 16 deletions(-) + +commit 6434cddb899d750b815d71f8f51ae3e4568dd3c0 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 2 11:42:33 2008 +1030 + + type1-subset: return unsupported on FT errors + + and let type1-fallback handle it. This fixes the bug reported by + Peter Weilbacher in + http://lists.cairographics.org/archives/cairo/2008-October/015569.html + + src/cairo-type1-subset.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 1685bbee1bf1ebc015ada94f77756d8d10c7818d +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 2 19:50:59 2008 +1030 + + test/README: fix typo + + test/README | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 540ac11113015f0fd6856d016cb38fec5282b6ce +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 2 11:42:33 2008 +1030 + + type1-subset: return unsupported on FT errors + + and let type1-fallback handle it. This fixes the bug reported by + Peter Weilbacher in + http://lists.cairographics.org/archives/cairo/2008-October/015569.html + + src/cairo-type1-subset.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 3707178fa48e23b85c5640f3cee72e19f49c700b +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Sep 8 10:26:58 2008 +0930 + + PDF: Implement JPEG image embedding + + src/Makefile.sources | 2 + + src/cairo-jpeg-info-private.h | 54 ++++++++++++++++ + src/cairo-jpeg-info.c | 142 +++++++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 55 ++++++++++++++++ + 4 files changed, 253 insertions(+), 0 deletions(-) + +commit 3c684347f49a581bfba35202ec61a5f6334acd4a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Sep 7 20:46:20 2008 +0930 + + Add cairo_surface_set_mime_data() + + Currently only handles jpeg data. + + src/cairo-surface-fallback.c | 15 +++++++++ + src/cairo-surface-private.h | 4 ++ + src/cairo-surface.c | 67 ++++++++++++++++++++++++++++++++++++++++++ + src/cairo.h | 15 +++++++++ + 4 files changed, 101 insertions(+), 0 deletions(-) + +commit a39a4f52ac4a057f579e881a9a929029bcc514d1 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 21:02:26 2008 +0930 + + PS: meta-surface patterns with EXTEND_PAD are unsupported + + We have to use fallback images for this. + + src/cairo-ps-surface.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 19ee13ca2b5b1e08a7fc965516be514d2fe40232 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 21:01:17 2008 +0930 + + PS: Implement EXTEND_PAD for image patterns + + Images with EXTEND_PAD are painted into a new image the size of the + operation extents. The new image is then embedded in the PS file with + the pattern matrix adjusted to ensure the image origin is in the + correct location. + + src/cairo-ps-surface-private.h | 1 + + src/cairo-ps-surface.c | 99 +++++++++++++++++++++++++++++++++------- + 2 files changed, 83 insertions(+), 17 deletions(-) + +commit e639b536711c07bc09355205f476ab3f73012268 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 21:00:30 2008 +0930 + + PDF: meta-surface patterns with EXTEND_PAD are unsupported + + We have to use fallback images for this. + + src/cairo-pdf-surface.c | 8 ++++++-- + 1 files changed, 6 insertions(+), 2 deletions(-) + +commit 6c92edd9a3b0c79857cfa8dee482efa56f40c714 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 20:56:49 2008 +0930 + + PDF: Implement EXTEND_PAD for image patterns + + Images with EXTEND_PAD are painted into a new image the size of the + operation extents. The new image is then embedded in the PDF file with + the pattern matrix adjusted to ensure the image origin is in the + correct location. + + src/cairo-pdf-surface.c | 70 +++++++++++++++++++++++++++++++++++++++++----- + 1 files changed, 62 insertions(+), 8 deletions(-) + +commit d146cb4056ab54cf85454a6fe9d36282ca7a3f2e +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 20:56:01 2008 +0930 + + PDF: Store the operation extents in each pattern + + The extents will be used by EXTEND_PAD patterns as well as any other + pattern that can benefit from knowing the extents of the operation it + will be used with. + + src/cairo-pdf-surface-private.h | 1 + + src/cairo-pdf-surface.c | 30 ++++++++++++++++++++++++------ + 2 files changed, 25 insertions(+), 6 deletions(-) + +commit fb7cfdd94d4e436e066d884f6dc294efd896b344 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 20:52:08 2008 +0930 + + Make meta-surface store and replay extents of each operation + + To be able to provide the extents of each operation to the backend + during the render phase the meta-surface needs to store the extents + computed by the analysis surface during the analysis phase. + + The extents argument is either a pointer to the extents of the operation + stored in the meta-surface or NULL. During analysis the analysis surface + writes the extents to the meta-surface. During the render phase the extents + is made available to paginated surface backends. + + src/cairo-analysis-surface.c | 12 ++++++++++++ + src/cairo-meta-surface-private.h | 1 + + src/cairo-meta-surface.c | 33 +++++++++++++++++++++++++++------ + 3 files changed, 40 insertions(+), 6 deletions(-) + +commit d682d275b90f7326df76d2764c513c8b6d5b551b +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 1 20:50:53 2008 +0930 + + Add an extents argument to the high level surface backend functions + + Add a "cairo_rectangle_int_t *extents" argument to to the following + backend functions: + paint + mask, + stroke + fill + show_glyphs + show_text_glyphs + + This will be used to pass the extents of each operation computed by + the analysis surface to the backend. This is required for implementing + EXTEND_PAD. + + src/cairo-analysis-surface.c | 49 ++++++++++++++++++++++-------------- + src/cairo-directfb-surface.c | 3 +- + src/cairo-gstate.c | 12 ++++---- + src/cairo-meta-surface.c | 27 +++++++++++-------- + src/cairo-paginated-surface.c | 27 +++++++++++-------- + src/cairo-pdf-surface.c | 18 +++++++++---- + src/cairo-ps-surface.c | 12 ++++++--- + src/cairo-quartz-surface.c | 15 +++++++--- + src/cairo-surface.c | 45 +++++++++++++++++++-------------- + src/cairo-svg-surface.c | 24 +++++++++++------ + src/cairo-type3-glyph-surface.c | 17 ++++++++---- + src/cairo-win32-printing-surface.c | 12 ++++++--- + src/cairo-win32-surface.c | 3 +- + src/cairo-xlib-surface.c | 8 +++-- + src/cairoint.h | 39 +++++++++++++++++++--------- + src/test-meta-surface.c | 25 +++++++++++------- + src/test-paginated-surface.c | 25 +++++++++++------- + 17 files changed, 223 insertions(+), 138 deletions(-) + +commit ed2081d97401741db10b0244eaba7ff31ae63346 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sun Nov 2 15:05:07 2008 +1030 + + Specify a background color for XFAIL text + + To improve readability on terminals with a white background. + + test/cairo-test.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 81c3009c077ddab40df052bffaa646526e2b8dfc +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Oct 31 16:45:58 2008 -0400 + + [boilerplate/Makefile.win32] Only build source files, not headers + + boilerplate/Makefile.win32 | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit d5f88c28021907ad761a1bf1c311bfd206db617e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Oct 31 13:43:37 2008 -0400 + + [.gitignore] Add + + util/cairo-trace/.gitignore | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 49bd253fd36dc93219a5414c6e7a6daeaa9c63b9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 16:40:49 2008 +0000 + + [tessellator] Refine the math comments. + + First of a simple substitution for -?-, as they are very confusing in + context with other minus signs floating around. + + Carl has promised to go over these docs with me at the HackFest in order + to improve them (and verify them). + + src/cairo-bentley-ottmann.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +commit ab8a0bfd82f8f474714d7aae4ceff4e7848c9b4b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 16:09:13 2008 +0000 + + Add a COPYING file to each aux. source directory + + Include a COPYING inside perf/, test/, util/ to clarify the licensing + conditions beneath the respective directories. This is because cairo + itself (libcairo.so) is LGPL-2.1/MPL-1.1 but that only relates to src/. + The auxiliary source files are under a mix of free licenses and we wish to + be clear just what license applies to each file. + + In particular, cairo-trace needs to include the GPL terms and conditions. + + COPYING | 17 +- + perf/COPYING | 5 + + perf/Makefile.am | 2 +- + test/COPYING | 5 + + test/Makefile.am | 2 +- + util/COPYING | 4 + + util/Makefile.am | 1 + + util/cairo-trace/COPYING | 5 + + util/cairo-trace/COPYING-GPL-3 | 674 ++++++++++++++++++++++++++++++++++++++++ + util/cairo-trace/Makefile.am | 5 +- + 10 files changed, 709 insertions(+), 11 deletions(-) + +commit c554f18d78fff71aff2d79309b19155de407363d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 15:37:58 2008 +0000 + + [util] Add cairo-trace. + + This tool can be used to trace all the cairo function calls made by an + applications. This is useful for either extracting a test case triggering + a bug from an application, or simply to get a general idea of how an + application is using cairo. + + After make install, cairo-trace program arguments, will print out all the + cairo calls to the terminal and also capture theme in ./program.$pid.trace + + The format of the output is CairoScript, watch this space for more + cairo-script tools! + + build/configure.ac.system | 2 + + configure.ac | 17 + + util/Makefile.am | 6 + + util/README | 8 - + util/cairo-trace/Makefile.am | 21 + + util/cairo-trace/cairo-trace.in | 58 + + util/cairo-trace/lookup-symbol.c | 290 ++++ + util/cairo-trace/lookup-symbol.h | 24 + + util/cairo-trace/trace.c | 3345 ++++++++++++++++++++++++++++++++++++++ + 9 files changed, 3763 insertions(+), 8 deletions(-) + +commit 992f74d884c9ea83f7b51c6959dd93718027b99a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 13:50:55 2008 +0000 + + [test] Use '.' as the field separator in the names + + We frequently use '-' within the test name or format name and so we + encounter confusion as '-' is also used as the field separator. At times + this has caused a new test to break an old test because the new test would + match one of the old test's target specific reference images. So switch + everything over to use '.' between fields (test name, target, format, + subtest, etc.). + + test/.gitignore | 8 +- + test/Makefile.am | 1402 ++++++++++---------- + test/a1-image-sample-ref.png | Bin 148 -> 0 bytes + test/a1-image-sample.ref.png | Bin 0 -> 148 bytes + test/a1-mask-ref.png | Bin 131 -> 0 bytes + test/a1-mask.ref.png | Bin 0 -> 131 bytes + test/a1-traps-sample-ref.png | Bin 148 -> 0 bytes + test/a1-traps-sample.ref.png | Bin 0 -> 148 bytes + test/a8-mask-ref.png | Bin 128 -> 0 bytes + test/a8-mask.ref.png | Bin 0 -> 128 bytes + test/alpha-similar-ref.png | Bin 99 -> 0 bytes + test/alpha-similar-rgb24-ref.png | Bin 99 -> 0 bytes + test/alpha-similar.ref.png | Bin 0 -> 99 bytes + test/alpha-similar.rgb24.ref.png | Bin 0 -> 99 bytes + test/big-line-ps2-ref.png | Bin 1148 -> 0 bytes + test/big-line-ps2-rgb24-ref.png | Bin 830 -> 0 bytes + test/big-line-ps3-ref.png | Bin 1148 -> 0 bytes + test/big-line-ps3-rgb24-ref.png | Bin 830 -> 0 bytes + test/big-line-quartz-ref.png | Bin 1075 -> 0 bytes + test/big-line-quartz-rgb24-ref.png | Bin 941 -> 0 bytes + test/big-line-ref.png | Bin 1486 -> 0 bytes + test/big-line-rgb24-ref.png | Bin 1308 -> 0 bytes + test/big-line.ps2.ref.png | Bin 0 -> 1148 bytes + test/big-line.ps2.rgb24.ref.png | Bin 0 -> 830 bytes + test/big-line.ps3.ref.png | Bin 0 -> 1148 bytes + test/big-line.ps3.rgb24.ref.png | Bin 0 -> 830 bytes + test/big-line.quartz.ref.png | Bin 0 -> 1075 bytes + test/big-line.quartz.rgb24.ref.png | Bin 0 -> 941 bytes + test/big-line.ref.png | Bin 0 -> 1486 bytes + test/big-line.rgb24.ref.png | Bin 0 -> 1308 bytes + test/bilevel-image-ref.png | Bin 131 -> 0 bytes + test/bilevel-image.ref.png | Bin 0 -> 131 bytes + test/bitmap-font-ref.png | Bin 950 -> 0 bytes + test/bitmap-font-rgb24-ref.png | Bin 890 -> 0 bytes + test/bitmap-font.ref.png | Bin 0 -> 950 bytes + test/bitmap-font.rgb24.ref.png | Bin 0 -> 890 bytes + test/cairo-test.c | 68 +- + test/cairo-test.h | 1 + + test/caps-joins-alpha-quartz-ref.png | Bin 2466 -> 0 bytes + test/caps-joins-alpha-ref.png | Bin 2463 -> 0 bytes + test/caps-joins-alpha-svg11-ref.png | Bin 2454 -> 0 bytes + test/caps-joins-alpha-svg12-ref.png | Bin 2454 -> 0 bytes + test/caps-joins-alpha.quartz.ref.png | Bin 0 -> 2466 bytes + test/caps-joins-alpha.ref.png | Bin 0 -> 2463 bytes + test/caps-joins-alpha.svg11.ref.png | Bin 0 -> 2454 bytes + test/caps-joins-alpha.svg12.ref.png | Bin 0 -> 2454 bytes + test/caps-joins-ps2-ref.png | Bin 1459 -> 0 bytes + test/caps-joins-ps3-ref.png | Bin 1459 -> 0 bytes + test/caps-joins-ref.png | Bin 1488 -> 0 bytes + test/caps-joins.ps2.ref.png | Bin 0 -> 1459 bytes + test/caps-joins.ps3.ref.png | Bin 0 -> 1459 bytes + test/caps-joins.ref.png | Bin 0 -> 1488 bytes + test/caps-sub-paths-ref.png | Bin 197 -> 0 bytes + test/caps-sub-paths.ref.png | Bin 0 -> 197 bytes + test/clip-all-ref.png | Bin 118 -> 0 bytes + test/clip-all.ref.png | Bin 0 -> 118 bytes + test/clip-empty-ref.png | Bin 118 -> 0 bytes + test/clip-empty.ref.png | Bin 0 -> 118 bytes + test/clip-fill-rule-pixel-aligned-ref.png | Bin 195 -> 0 bytes + test/clip-fill-rule-pixel-aligned-rgb24-ref.png | Bin 184 -> 0 bytes + test/clip-fill-rule-pixel-aligned.ref.png | Bin 0 -> 195 bytes + test/clip-fill-rule-pixel-aligned.rgb24.ref.png | Bin 0 -> 184 bytes + test/clip-fill-rule-ps2-argb32-ref.png | Bin 310 -> 0 bytes + test/clip-fill-rule-ps2-rgb24-ref.png | Bin 302 -> 0 bytes + test/clip-fill-rule-ps3-argb32-ref.png | Bin 310 -> 0 bytes + test/clip-fill-rule-ps3-rgb24-ref.png | Bin 302 -> 0 bytes + test/clip-fill-rule-ref.png | Bin 431 -> 0 bytes + test/clip-fill-rule-rgb24-ref.png | Bin 380 -> 0 bytes + test/clip-fill-rule.ps2.argb32.ref.png | Bin 0 -> 310 bytes + test/clip-fill-rule.ps2.rgb24.ref.png | Bin 0 -> 302 bytes + test/clip-fill-rule.ps3.argb32.ref.png | Bin 0 -> 310 bytes + test/clip-fill-rule.ps3.rgb24.ref.png | Bin 0 -> 302 bytes + test/clip-fill-rule.ref.png | Bin 0 -> 431 bytes + test/clip-fill-rule.rgb24.ref.png | Bin 0 -> 380 bytes + test/clip-nesting-ps2-argb32-ref.png | Bin 651 -> 0 bytes + test/clip-nesting-ps2-rgb24-ref.png | Bin 636 -> 0 bytes + test/clip-nesting-ps3-argb32-ref.png | Bin 651 -> 0 bytes + test/clip-nesting-ps3-rgb24-ref.png | Bin 636 -> 0 bytes + test/clip-nesting-quartz-ref.png | Bin 1067 -> 0 bytes + test/clip-nesting-quartz-rgb24-ref.png | Bin 956 -> 0 bytes + test/clip-nesting-ref.png | Bin 1050 -> 0 bytes + test/clip-nesting-rgb24-ref.png | Bin 955 -> 0 bytes + test/clip-nesting.ps2.argb32.ref.png | Bin 0 -> 651 bytes + test/clip-nesting.ps2.rgb24.ref.png | Bin 0 -> 636 bytes + test/clip-nesting.ps3.argb32.ref.png | Bin 0 -> 651 bytes + test/clip-nesting.ps3.rgb24.ref.png | Bin 0 -> 636 bytes + test/clip-nesting.quartz.ref.png | Bin 0 -> 1067 bytes + test/clip-nesting.quartz.rgb24.ref.png | Bin 0 -> 956 bytes + test/clip-nesting.ref.png | Bin 0 -> 1050 bytes + test/clip-nesting.rgb24.ref.png | Bin 0 -> 955 bytes + test/clip-operator-pdf-argb32-ref.png | Bin 12125 -> 0 bytes + test/clip-operator-pdf-rgb24-ref.png | Bin 7367 -> 0 bytes + test/clip-operator-ps2-rgb24-ref.png | Bin 3624 -> 0 bytes + test/clip-operator-ps3-ref.png | Bin 8188 -> 0 bytes + test/clip-operator-ps3-rgb24-ref.png | Bin 3624 -> 0 bytes + test/clip-operator-quartz-ref.png | Bin 9539 -> 0 bytes + test/clip-operator-quartz-rgb24-ref.png | Bin 4412 -> 0 bytes + test/clip-operator-ref.png | Bin 8271 -> 0 bytes + test/clip-operator-rgb24-ref.png | Bin 3258 -> 0 bytes + test/clip-operator.pdf.argb32.ref.png | Bin 0 -> 12125 bytes + test/clip-operator.pdf.rgb24.ref.png | Bin 0 -> 7367 bytes + test/clip-operator.ps2.rgb24.ref.png | Bin 0 -> 3624 bytes + test/clip-operator.ps3.ref.png | Bin 0 -> 8188 bytes + test/clip-operator.ps3.rgb24.ref.png | Bin 0 -> 3624 bytes + test/clip-operator.quartz.ref.png | Bin 0 -> 9539 bytes + test/clip-operator.quartz.rgb24.ref.png | Bin 0 -> 4412 bytes + test/clip-operator.ref.png | Bin 0 -> 8271 bytes + test/clip-operator.rgb24.ref.png | Bin 0 -> 3258 bytes + test/clip-push-group-ps2-argb32-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-ps2-rgb24-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-ps3-argb32-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-ps3-rgb24-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-quartz-ref.png | Bin 203 -> 0 bytes + test/clip-push-group-ref.png | Bin 199 -> 0 bytes + test/clip-push-group.ps2.argb32.ref.png | Bin 0 -> 179 bytes + test/clip-push-group.ps2.rgb24.ref.png | Bin 0 -> 179 bytes + test/clip-push-group.ps3.argb32.ref.png | Bin 0 -> 179 bytes + test/clip-push-group.ps3.rgb24.ref.png | Bin 0 -> 179 bytes + test/clip-push-group.quartz.ref.png | Bin 0 -> 203 bytes + test/clip-push-group.ref.png | Bin 0 -> 199 bytes + test/clip-twice-ps2-argb32-ref.png | Bin 575 -> 0 bytes + test/clip-twice-ps2-rgb24-ref.png | Bin 541 -> 0 bytes + test/clip-twice-ps3-argb32-ref.png | Bin 575 -> 0 bytes + test/clip-twice-ps3-rgb24-ref.png | Bin 541 -> 0 bytes + test/clip-twice-quartz-ref.png | Bin 1171 -> 0 bytes + test/clip-twice-quartz-rgb24-ref.png | Bin 1111 -> 0 bytes + test/clip-twice-ref.png | Bin 1362 -> 0 bytes + test/clip-twice-rgb24-ref.png | Bin 1198 -> 0 bytes + test/clip-twice.ps2.argb32.ref.png | Bin 0 -> 575 bytes + test/clip-twice.ps2.rgb24.ref.png | Bin 0 -> 541 bytes + test/clip-twice.ps3.argb32.ref.png | Bin 0 -> 575 bytes + test/clip-twice.ps3.rgb24.ref.png | Bin 0 -> 541 bytes + test/clip-twice.quartz.ref.png | Bin 0 -> 1171 bytes + test/clip-twice.quartz.rgb24.ref.png | Bin 0 -> 1111 bytes + test/clip-twice.ref.png | Bin 0 -> 1362 bytes + test/clip-twice.rgb24.ref.png | Bin 0 -> 1198 bytes + test/clipped-group-ps2-ref.png | Bin 343 -> 0 bytes + test/clipped-group-ps3-ref.png | Bin 343 -> 0 bytes + test/clipped-group-ref.png | Bin 350 -> 0 bytes + test/clipped-group.ps2.ref.png | Bin 0 -> 343 bytes + test/clipped-group.ps3.ref.png | Bin 0 -> 343 bytes + test/clipped-group.ref.png | Bin 0 -> 350 bytes + test/clipped-surface-ref.png | Bin 401 -> 0 bytes + test/clipped-surface.ref.png | Bin 0 -> 401 bytes + test/close-path-ps2-ref.png | Bin 309 -> 0 bytes + test/close-path-ps3-ref.png | Bin 309 -> 0 bytes + test/close-path-ref.png | Bin 312 -> 0 bytes + test/close-path.ps2.ref.png | Bin 0 -> 309 bytes + test/close-path.ps3.ref.png | Bin 0 -> 309 bytes + test/close-path.ref.png | Bin 0 -> 312 bytes + test/composite-integer-translate-over-ps2-ref.png | Bin 15783 -> 0 bytes + test/composite-integer-translate-over-ps3-ref.png | Bin 15783 -> 0 bytes + test/composite-integer-translate-over-ref.png | Bin 16385 -> 0 bytes + ...osite-integer-translate-over-repeat-ps2-ref.png | Bin 448 -> 0 bytes + ...osite-integer-translate-over-repeat-ps3-ref.png | Bin 448 -> 0 bytes + ...composite-integer-translate-over-repeat-ref.png | Bin 401 -> 0 bytes + ...osite-integer-translate-over-repeat.ps2.ref.png | Bin 0 -> 448 bytes + ...osite-integer-translate-over-repeat.ps3.ref.png | Bin 0 -> 448 bytes + ...composite-integer-translate-over-repeat.ref.png | Bin 0 -> 401 bytes + test/composite-integer-translate-over.ps2.ref.png | Bin 0 -> 15783 bytes + test/composite-integer-translate-over.ps3.ref.png | Bin 0 -> 15783 bytes + test/composite-integer-translate-over.ref.png | Bin 0 -> 16385 bytes + .../composite-integer-translate-source-ps2-ref.png | Bin 15783 -> 0 bytes + .../composite-integer-translate-source-ps3-ref.png | Bin 15783 -> 0 bytes + test/composite-integer-translate-source-ref.png | Bin 16385 -> 0 bytes + .../composite-integer-translate-source.ps2.ref.png | Bin 0 -> 15783 bytes + .../composite-integer-translate-source.ps3.ref.png | Bin 0 -> 15783 bytes + test/composite-integer-translate-source.ref.png | Bin 0 -> 16385 bytes + test/copy-path-ps2-ref.png | Bin 474 -> 0 bytes + test/copy-path-ps3-ref.png | Bin 474 -> 0 bytes + test/copy-path-ref.png | Bin 579 -> 0 bytes + test/copy-path.ps2.ref.png | Bin 0 -> 474 bytes + test/copy-path.ps3.ref.png | Bin 0 -> 474 bytes + test/copy-path.ref.png | Bin 0 -> 579 bytes + test/create-for-stream.c | 2 +- + test/create-from-png-alpha-ref.png | Bin 150 -> 0 bytes + test/create-from-png-gray-alpha-ref.png | Bin 142 -> 0 bytes + test/create-from-png-gray-ref.png | Bin 124 -> 0 bytes + test/create-from-png-indexed-alpha-ref.png | Bin 172 -> 0 bytes + test/create-from-png-indexed-ref.png | Bin 159 -> 0 bytes + test/create-from-png-ref.png | Bin 131 -> 0 bytes + test/create-from-png-stream-ref.png | Bin 100 -> 0 bytes + test/create-from-png-stream.c | 2 +- + test/create-from-png-stream.ref.png | Bin 0 -> 100 bytes + test/create-from-png.alpha.ref.png | Bin 0 -> 150 bytes + test/create-from-png.c | 16 +- + test/create-from-png.gray-alpha.ref.png | Bin 0 -> 142 bytes + test/create-from-png.gray.ref.png | Bin 0 -> 124 bytes + test/create-from-png.indexed-alpha.ref.png | Bin 0 -> 172 bytes + test/create-from-png.indexed.ref.png | Bin 0 -> 159 bytes + test/create-from-png.ref.png | Bin 0 -> 131 bytes + test/dash-caps-joins-ps2-argb32-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-ps2-rgb24-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-ps3-argb32-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-ps3-rgb24-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-quartz-ref.png | Bin 4727 -> 0 bytes + test/dash-caps-joins-ref.png | Bin 4718 -> 0 bytes + test/dash-caps-joins.ps2.argb32.ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins.ps2.rgb24.ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins.ps3.argb32.ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins.ps3.rgb24.ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins.quartz.ref.png | Bin 0 -> 4727 bytes + test/dash-caps-joins.ref.png | Bin 0 -> 4718 bytes + test/dash-curve-ps2-ref.png | Bin 27293 -> 0 bytes + test/dash-curve-ps3-ref.png | Bin 27293 -> 0 bytes + test/dash-curve-quartz-ref.png | Bin 47965 -> 0 bytes + test/dash-curve-ref.png | Bin 39642 -> 0 bytes + test/dash-curve.ps2.ref.png | Bin 0 -> 27293 bytes + test/dash-curve.ps3.ref.png | Bin 0 -> 27293 bytes + test/dash-curve.quartz.ref.png | Bin 0 -> 47965 bytes + test/dash-curve.ref.png | Bin 0 -> 39642 bytes + test/dash-no-dash-ref.png | Bin 152 -> 0 bytes + test/dash-no-dash.ref.png | Bin 0 -> 152 bytes + test/dash-offset-negative-ref.png | Bin 171 -> 0 bytes + test/dash-offset-negative.ref.png | Bin 0 -> 171 bytes + test/dash-scale-ps2-argb32-ref.png | Bin 6318 -> 0 bytes + test/dash-scale-ps2-rgb24-ref.png | Bin 6316 -> 0 bytes + test/dash-scale-ps3-argb32-ref.png | Bin 6318 -> 0 bytes + test/dash-scale-ps3-rgb24-ref.png | Bin 6316 -> 0 bytes + test/dash-scale-quartz-ref.png | Bin 8079 -> 0 bytes + test/dash-scale-ref.png | Bin 8058 -> 0 bytes + test/dash-scale.ps2.argb32.ref.png | Bin 0 -> 6318 bytes + test/dash-scale.ps2.rgb24.ref.png | Bin 0 -> 6316 bytes + test/dash-scale.ps3.argb32.ref.png | Bin 0 -> 6318 bytes + test/dash-scale.ps3.rgb24.ref.png | Bin 0 -> 6316 bytes + test/dash-scale.quartz.ref.png | Bin 0 -> 8079 bytes + test/dash-scale.ref.png | Bin 0 -> 8058 bytes + test/dash-state-ps2-ref.png | Bin 10219 -> 0 bytes + test/dash-state-ps3-ref.png | Bin 10219 -> 0 bytes + test/dash-state-quartz-ref.png | Bin 8698 -> 0 bytes + test/dash-state-ref.png | Bin 9389 -> 0 bytes + test/dash-state.ps2.ref.png | Bin 0 -> 10219 bytes + test/dash-state.ps3.ref.png | Bin 0 -> 10219 bytes + test/dash-state.quartz.ref.png | Bin 0 -> 8698 bytes + test/dash-state.ref.png | Bin 0 -> 9389 bytes + test/dash-zero-length-ps2-ref.png | Bin 319 -> 0 bytes + test/dash-zero-length-ps2-rgb24-ref.png | Bin 304 -> 0 bytes + test/dash-zero-length-ps3-ref.png | Bin 319 -> 0 bytes + test/dash-zero-length-ps3-rgb24-ref.png | Bin 304 -> 0 bytes + test/dash-zero-length-ref.png | Bin 238 -> 0 bytes + test/dash-zero-length-rgb24-ref.png | Bin 218 -> 0 bytes + test/dash-zero-length.ps2.ref.png | Bin 0 -> 319 bytes + test/dash-zero-length.ps2.rgb24.ref.png | Bin 0 -> 304 bytes + test/dash-zero-length.ps3.ref.png | Bin 0 -> 319 bytes + test/dash-zero-length.ps3.rgb24.ref.png | Bin 0 -> 304 bytes + test/dash-zero-length.ref.png | Bin 0 -> 238 bytes + test/dash-zero-length.rgb24.ref.png | Bin 0 -> 218 bytes + test/degenerate-arc-ps2-ref.png | Bin 585 -> 0 bytes + test/degenerate-arc-ps3-ref.png | Bin 585 -> 0 bytes + test/degenerate-arc-ref.png | Bin 616 -> 0 bytes + test/degenerate-arc.ps2.ref.png | Bin 0 -> 585 bytes + test/degenerate-arc.ps3.ref.png | Bin 0 -> 585 bytes + test/degenerate-arc.ref.png | Bin 0 -> 616 bytes + test/degenerate-dash-ref.png | Bin 2005 -> 0 bytes + test/degenerate-dash.ref.png | Bin 0 -> 2005 bytes + test/degenerate-path-ps2-argb32-ref.png | Bin 390 -> 0 bytes + test/degenerate-path-ps2-rgb24-ref.png | Bin 358 -> 0 bytes + test/degenerate-path-ps3-argb32-ref.png | Bin 390 -> 0 bytes + test/degenerate-path-ps3-rgb24-ref.png | Bin 358 -> 0 bytes + test/degenerate-path-quartz-ref.png | Bin 232 -> 0 bytes + test/degenerate-path-quartz-rgb24-ref.png | Bin 198 -> 0 bytes + test/degenerate-path-ref.png | Bin 257 -> 0 bytes + test/degenerate-path-rgb24-ref.png | Bin 224 -> 0 bytes + test/degenerate-path.ps2.argb32.ref.png | Bin 0 -> 390 bytes + test/degenerate-path.ps2.rgb24.ref.png | Bin 0 -> 358 bytes + test/degenerate-path.ps3.argb32.ref.png | Bin 0 -> 390 bytes + test/degenerate-path.ps3.rgb24.ref.png | Bin 0 -> 358 bytes + test/degenerate-path.quartz.ref.png | Bin 0 -> 232 bytes + test/degenerate-path.quartz.rgb24.ref.png | Bin 0 -> 198 bytes + test/degenerate-path.ref.png | Bin 0 -> 257 bytes + test/degenerate-path.rgb24.ref.png | Bin 0 -> 224 bytes + test/degenerate-pen-ps2-ref.png | Bin 865 -> 0 bytes + test/degenerate-pen-ps3-ref.png | Bin 865 -> 0 bytes + test/degenerate-pen-quartz-ref.png | Bin 1144 -> 0 bytes + test/degenerate-pen-ref.png | Bin 1139 -> 0 bytes + test/degenerate-pen.ps2.ref.png | Bin 0 -> 865 bytes + test/degenerate-pen.ps3.ref.png | Bin 0 -> 865 bytes + test/degenerate-pen.quartz.ref.png | Bin 0 -> 1144 bytes + test/degenerate-pen.ref.png | Bin 0 -> 1139 bytes + test/device-offset-fractional-pdf-ref.png | Bin 277 -> 0 bytes + test/device-offset-fractional-ps2-ref.png | Bin 200 -> 0 bytes + test/device-offset-fractional-ps3-ref.png | Bin 200 -> 0 bytes + test/device-offset-fractional-ref.png | Bin 269 -> 0 bytes + test/device-offset-fractional.pdf.ref.png | Bin 0 -> 277 bytes + test/device-offset-fractional.ps2.ref.png | Bin 0 -> 200 bytes + test/device-offset-fractional.ps3.ref.png | Bin 0 -> 200 bytes + test/device-offset-fractional.ref.png | Bin 0 -> 269 bytes + test/device-offset-positive-ref.png | Bin 139 -> 0 bytes + test/device-offset-positive-rgb24-ref.png | Bin 130 -> 0 bytes + test/device-offset-positive.ref.png | Bin 0 -> 139 bytes + test/device-offset-positive.rgb24.ref.png | Bin 0 -> 130 bytes + test/device-offset-ref.png | Bin 137 -> 0 bytes + test/device-offset-rgb24-ref.png | Bin 130 -> 0 bytes + test/device-offset-scale-ref.png | Bin 145 -> 0 bytes + test/device-offset-scale.ref.png | Bin 0 -> 145 bytes + test/device-offset.ref.png | Bin 0 -> 137 bytes + test/device-offset.rgb24.ref.png | Bin 0 -> 130 bytes + test/extend-pad-ref.png | Bin 616 -> 0 bytes + test/extend-pad.ref.png | Bin 0 -> 616 bytes + test/extend-reflect-ps2-ref.png | Bin 146990 -> 0 bytes + test/extend-reflect-ps3-ref.png | Bin 146990 -> 0 bytes + test/extend-reflect-ref.png | Bin 153571 -> 0 bytes + test/extend-reflect-similar-ps2-ref.png | Bin 146990 -> 0 bytes + test/extend-reflect-similar-ps3-ref.png | Bin 146990 -> 0 bytes + test/extend-reflect-similar-ref.png | Bin 153571 -> 0 bytes + test/extend-reflect-similar.ps2.ref.png | Bin 0 -> 146990 bytes + test/extend-reflect-similar.ps3.ref.png | Bin 0 -> 146990 bytes + test/extend-reflect-similar.ref.png | Bin 0 -> 153571 bytes + test/extend-reflect.ps2.ref.png | Bin 0 -> 146990 bytes + test/extend-reflect.ps3.ref.png | Bin 0 -> 146990 bytes + test/extend-reflect.ref.png | Bin 0 -> 153571 bytes + test/extend-repeat-ps2-ref.png | Bin 119246 -> 0 bytes + test/extend-repeat-ps3-ref.png | Bin 119246 -> 0 bytes + test/extend-repeat-ref.png | Bin 108622 -> 0 bytes + test/extend-repeat-similar-ps2-ref.png | Bin 119246 -> 0 bytes + test/extend-repeat-similar-ps3-ref.png | Bin 119246 -> 0 bytes + test/extend-repeat-similar-ref.png | Bin 108622 -> 0 bytes + test/extend-repeat-similar.ps2.ref.png | Bin 0 -> 119246 bytes + test/extend-repeat-similar.ps3.ref.png | Bin 0 -> 119246 bytes + test/extend-repeat-similar.ref.png | Bin 0 -> 108622 bytes + test/extend-repeat.ps2.ref.png | Bin 0 -> 119246 bytes + test/extend-repeat.ps3.ref.png | Bin 0 -> 119246 bytes + test/extend-repeat.ref.png | Bin 0 -> 108622 bytes + test/fallback-resolution-ppi150x150-ref.png | Bin 8043 -> 0 bytes + test/fallback-resolution-ppi150x300-ref.png | Bin 6848 -> 0 bytes + test/fallback-resolution-ppi150x37.5-ref.png | Bin 13176 -> 0 bytes + test/fallback-resolution-ppi150x600-ref.png | Bin 6338 -> 0 bytes + test/fallback-resolution-ppi150x72-ref.png | Bin 8370 -> 0 bytes + test/fallback-resolution-ppi150x75-ref.png | Bin 10445 -> 0 bytes + test/fallback-resolution-ppi300x150-ref.png | Bin 6851 -> 0 bytes + test/fallback-resolution-ppi300x300-ref.png | Bin 5637 -> 0 bytes + test/fallback-resolution-ppi300x37.5-ref.png | Bin 12870 -> 0 bytes + test/fallback-resolution-ppi300x600-ref.png | Bin 4848 -> 0 bytes + test/fallback-resolution-ppi300x72-ref.png | Bin 7053 -> 0 bytes + test/fallback-resolution-ppi300x75-ref.png | Bin 9617 -> 0 bytes + test/fallback-resolution-ppi37.5x150-ref.png | Bin 12728 -> 0 bytes + test/fallback-resolution-ppi37.5x300-ref.png | Bin 11981 -> 0 bytes + test/fallback-resolution-ppi37.5x37.5-ref.png | Bin 14098 -> 0 bytes + test/fallback-resolution-ppi37.5x600-ref.png | Bin 11654 -> 0 bytes + test/fallback-resolution-ppi37.5x72-ref.png | Bin 12990 -> 0 bytes + test/fallback-resolution-ppi37.5x75-ref.png | Bin 13787 -> 0 bytes + test/fallback-resolution-ppi600x150-ref.png | Bin 6096 -> 0 bytes + test/fallback-resolution-ppi600x300-ref.png | Bin 4812 -> 0 bytes + test/fallback-resolution-ppi600x37.5-ref.png | Bin 12401 -> 0 bytes + test/fallback-resolution-ppi600x600-ref.png | Bin 4104 -> 0 bytes + test/fallback-resolution-ppi600x72-ref.png | Bin 6398 -> 0 bytes + test/fallback-resolution-ppi600x75-ref.png | Bin 8974 -> 0 bytes + test/fallback-resolution-ppi72x150-ref.png | Bin 8069 -> 0 bytes + test/fallback-resolution-ppi72x300-ref.png | Bin 6803 -> 0 bytes + test/fallback-resolution-ppi72x37.5-ref.png | Bin 13147 -> 0 bytes + test/fallback-resolution-ppi72x600-ref.png | Bin 6245 -> 0 bytes + test/fallback-resolution-ppi72x72-ref.png | Bin 8409 -> 0 bytes + test/fallback-resolution-ppi72x75-ref.png | Bin 10628 -> 0 bytes + test/fallback-resolution-ppi75x150-ref.png | Bin 9940 -> 0 bytes + test/fallback-resolution-ppi75x300-ref.png | Bin 9003 -> 0 bytes + test/fallback-resolution-ppi75x37.5-ref.png | Bin 14020 -> 0 bytes + test/fallback-resolution-ppi75x600-ref.png | Bin 8455 -> 0 bytes + test/fallback-resolution-ppi75x72-ref.png | Bin 10202 -> 0 bytes + test/fallback-resolution-ppi75x75-ref.png | Bin 12101 -> 0 bytes + test/fallback-resolution.c | 11 +- + test/fallback-resolution.ppi150x150.ref.png | Bin 0 -> 8043 bytes + test/fallback-resolution.ppi150x300.ref.png | Bin 0 -> 6848 bytes + test/fallback-resolution.ppi150x37.5.ref.png | Bin 0 -> 13176 bytes + test/fallback-resolution.ppi150x600.ref.png | Bin 0 -> 6338 bytes + test/fallback-resolution.ppi150x72.ref.png | Bin 0 -> 8370 bytes + test/fallback-resolution.ppi150x75.ref.png | Bin 0 -> 10445 bytes + test/fallback-resolution.ppi300x150.ref.png | Bin 0 -> 6851 bytes + test/fallback-resolution.ppi300x300.ref.png | Bin 0 -> 5637 bytes + test/fallback-resolution.ppi300x37.5.ref.png | Bin 0 -> 12870 bytes + test/fallback-resolution.ppi300x600.ref.png | Bin 0 -> 4848 bytes + test/fallback-resolution.ppi300x72.ref.png | Bin 0 -> 7053 bytes + test/fallback-resolution.ppi300x75.ref.png | Bin 0 -> 9617 bytes + test/fallback-resolution.ppi37.5x150.ref.png | Bin 0 -> 12728 bytes + test/fallback-resolution.ppi37.5x300.ref.png | Bin 0 -> 11981 bytes + test/fallback-resolution.ppi37.5x37.5.ref.png | Bin 0 -> 14098 bytes + test/fallback-resolution.ppi37.5x600.ref.png | Bin 0 -> 11654 bytes + test/fallback-resolution.ppi37.5x72.ref.png | Bin 0 -> 12990 bytes + test/fallback-resolution.ppi37.5x75.ref.png | Bin 0 -> 13787 bytes + test/fallback-resolution.ppi600x150.ref.png | Bin 0 -> 6096 bytes + test/fallback-resolution.ppi600x300.ref.png | Bin 0 -> 4812 bytes + test/fallback-resolution.ppi600x37.5.ref.png | Bin 0 -> 12401 bytes + test/fallback-resolution.ppi600x600.ref.png | Bin 0 -> 4104 bytes + test/fallback-resolution.ppi600x72.ref.png | Bin 0 -> 6398 bytes + test/fallback-resolution.ppi600x75.ref.png | Bin 0 -> 8974 bytes + test/fallback-resolution.ppi72x150.ref.png | Bin 0 -> 8069 bytes + test/fallback-resolution.ppi72x300.ref.png | Bin 0 -> 6803 bytes + test/fallback-resolution.ppi72x37.5.ref.png | Bin 0 -> 13147 bytes + test/fallback-resolution.ppi72x600.ref.png | Bin 0 -> 6245 bytes + test/fallback-resolution.ppi72x72.ref.png | Bin 0 -> 8409 bytes + test/fallback-resolution.ppi72x75.ref.png | Bin 0 -> 10628 bytes + test/fallback-resolution.ppi75x150.ref.png | Bin 0 -> 9940 bytes + test/fallback-resolution.ppi75x300.ref.png | Bin 0 -> 9003 bytes + test/fallback-resolution.ppi75x37.5.ref.png | Bin 0 -> 14020 bytes + test/fallback-resolution.ppi75x600.ref.png | Bin 0 -> 8455 bytes + test/fallback-resolution.ppi75x72.ref.png | Bin 0 -> 10202 bytes + test/fallback-resolution.ppi75x75.ref.png | Bin 0 -> 12101 bytes + test/fill-alpha-pattern-pdf-argb32-ref.png | Bin 3887 -> 0 bytes + test/fill-alpha-pattern-pdf-rgb24-ref.png | Bin 3840 -> 0 bytes + test/fill-alpha-pattern-ps3-ref.png | Bin 4380 -> 0 bytes + test/fill-alpha-pattern-ref.png | Bin 3653 -> 0 bytes + test/fill-alpha-pattern.pdf.argb32.ref.png | Bin 0 -> 3887 bytes + test/fill-alpha-pattern.pdf.rgb24.ref.png | Bin 0 -> 3840 bytes + test/fill-alpha-pattern.ps3.ref.png | Bin 0 -> 4380 bytes + test/fill-alpha-pattern.ref.png | Bin 0 -> 3653 bytes + test/fill-alpha-ref.png | Bin 2989 -> 0 bytes + test/fill-alpha.ref.png | Bin 0 -> 2989 bytes + test/fill-and-stroke-alpha-add-quartz-ref.png | Bin 603 -> 0 bytes + test/fill-and-stroke-alpha-add-ref.png | Bin 591 -> 0 bytes + test/fill-and-stroke-alpha-add.quartz.ref.png | Bin 0 -> 603 bytes + test/fill-and-stroke-alpha-add.ref.png | Bin 0 -> 591 bytes + test/fill-and-stroke-alpha-quartz-ref.png | Bin 550 -> 0 bytes + test/fill-and-stroke-alpha-ref.png | Bin 519 -> 0 bytes + test/fill-and-stroke-alpha.quartz.ref.png | Bin 0 -> 550 bytes + test/fill-and-stroke-alpha.ref.png | Bin 0 -> 519 bytes + test/fill-and-stroke-ps2-argb32-ref.png | Bin 310 -> 0 bytes + test/fill-and-stroke-ps2-rgb24-ref.png | Bin 319 -> 0 bytes + test/fill-and-stroke-ps3-argb32-ref.png | Bin 310 -> 0 bytes + test/fill-and-stroke-ps3-rgb24-ref.png | Bin 319 -> 0 bytes + test/fill-and-stroke-quartz-ref.png | Bin 286 -> 0 bytes + test/fill-and-stroke-quartz-rgb24-ref.png | Bin 264 -> 0 bytes + test/fill-and-stroke-ref.png | Bin 279 -> 0 bytes + test/fill-and-stroke-rgb24-ref.png | Bin 257 -> 0 bytes + test/fill-and-stroke.ps2.argb32.ref.png | Bin 0 -> 310 bytes + test/fill-and-stroke.ps2.rgb24.ref.png | Bin 0 -> 319 bytes + test/fill-and-stroke.ps3.argb32.ref.png | Bin 0 -> 310 bytes + test/fill-and-stroke.ps3.rgb24.ref.png | Bin 0 -> 319 bytes + test/fill-and-stroke.quartz.ref.png | Bin 0 -> 286 bytes + test/fill-and-stroke.quartz.rgb24.ref.png | Bin 0 -> 264 bytes + test/fill-and-stroke.ref.png | Bin 0 -> 279 bytes + test/fill-and-stroke.rgb24.ref.png | Bin 0 -> 257 bytes + test/fill-degenerate-sort-order-quartz-ref.png | Bin 2470 -> 0 bytes + ...fill-degenerate-sort-order-quartz-rgb24-ref.png | Bin 2098 -> 0 bytes + test/fill-degenerate-sort-order-ref.png | Bin 2397 -> 0 bytes + test/fill-degenerate-sort-order-rgb24-ref.png | Bin 2060 -> 0 bytes + test/fill-degenerate-sort-order.quartz.ref.png | Bin 0 -> 2470 bytes + ...fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin 0 -> 2098 bytes + test/fill-degenerate-sort-order.ref.png | Bin 0 -> 2397 bytes + test/fill-degenerate-sort-order.rgb24.ref.png | Bin 0 -> 2060 bytes + test/fill-missed-stop-ps2-argb32-ref.png | Bin 564 -> 0 bytes + test/fill-missed-stop-ps2-rgb24-ref.png | Bin 531 -> 0 bytes + test/fill-missed-stop-ps3-argb32-ref.png | Bin 564 -> 0 bytes + test/fill-missed-stop-ps3-rgb24-ref.png | Bin 531 -> 0 bytes + test/fill-missed-stop-ref.png | Bin 466 -> 0 bytes + test/fill-missed-stop-rgb24-ref.png | Bin 394 -> 0 bytes + test/fill-missed-stop.ps2.argb32.ref.png | Bin 0 -> 564 bytes + test/fill-missed-stop.ps2.rgb24.ref.png | Bin 0 -> 531 bytes + test/fill-missed-stop.ps3.argb32.ref.png | Bin 0 -> 564 bytes + test/fill-missed-stop.ps3.rgb24.ref.png | Bin 0 -> 531 bytes + test/fill-missed-stop.ref.png | Bin 0 -> 466 bytes + test/fill-missed-stop.rgb24.ref.png | Bin 0 -> 394 bytes + test/fill-rule-ps2-argb32-ref.png | Bin 2253 -> 0 bytes + test/fill-rule-ps2-rgb24-ref.png | Bin 2031 -> 0 bytes + test/fill-rule-ps3-argb32-ref.png | Bin 2253 -> 0 bytes + test/fill-rule-ps3-rgb24-ref.png | Bin 2031 -> 0 bytes + test/fill-rule-quartz-ref.png | Bin 2079 -> 0 bytes + test/fill-rule-quartz-rgb24-ref.png | Bin 1790 -> 0 bytes + test/fill-rule-ref.png | Bin 1979 -> 0 bytes + test/fill-rule-rgb24-ref.png | Bin 1722 -> 0 bytes + test/fill-rule.ps2.argb32.ref.png | Bin 0 -> 2253 bytes + test/fill-rule.ps2.rgb24.ref.png | Bin 0 -> 2031 bytes + test/fill-rule.ps3.argb32.ref.png | Bin 0 -> 2253 bytes + test/fill-rule.ps3.rgb24.ref.png | Bin 0 -> 2031 bytes + test/fill-rule.quartz.ref.png | Bin 0 -> 2079 bytes + test/fill-rule.quartz.rgb24.ref.png | Bin 0 -> 1790 bytes + test/fill-rule.ref.png | Bin 0 -> 1979 bytes + test/fill-rule.rgb24.ref.png | Bin 0 -> 1722 bytes + test/filter-bilinear-extents-pdf-ref.png | Bin 798 -> 0 bytes + test/filter-bilinear-extents-ps2-ref.png | Bin 556 -> 0 bytes + test/filter-bilinear-extents-ps3-ref.png | Bin 556 -> 0 bytes + test/filter-bilinear-extents-ref.png | Bin 1340 -> 0 bytes + test/filter-bilinear-extents.pdf.ref.png | Bin 0 -> 798 bytes + test/filter-bilinear-extents.ps2.ref.png | Bin 0 -> 556 bytes + test/filter-bilinear-extents.ps3.ref.png | Bin 0 -> 556 bytes + test/filter-bilinear-extents.ref.png | Bin 0 -> 1340 bytes + test/filter-nearest-offset-pdf-ref.png | Bin 4537 -> 0 bytes + test/filter-nearest-offset-ps2-ref.png | Bin 255 -> 0 bytes + test/filter-nearest-offset-ps3-ref.png | Bin 255 -> 0 bytes + test/filter-nearest-offset-ref.png | Bin 248 -> 0 bytes + test/filter-nearest-offset-svg11-ref.png | Bin 4739 -> 0 bytes + test/filter-nearest-offset-svg12-ref.png | Bin 4739 -> 0 bytes + test/filter-nearest-offset.pdf.ref.png | Bin 0 -> 4537 bytes + test/filter-nearest-offset.ps2.ref.png | Bin 0 -> 255 bytes + test/filter-nearest-offset.ps3.ref.png | Bin 0 -> 255 bytes + test/filter-nearest-offset.ref.png | Bin 0 -> 248 bytes + test/filter-nearest-offset.svg11.ref.png | Bin 0 -> 4739 bytes + test/filter-nearest-offset.svg12.ref.png | Bin 0 -> 4739 bytes + test/filter-nearest-transformed-pdf-ref.png | Bin 548 -> 0 bytes + test/filter-nearest-transformed-ref.png | Bin 570 -> 0 bytes + test/filter-nearest-transformed-svg11-ref.png | Bin 559 -> 0 bytes + test/filter-nearest-transformed-svg12-ref.png | Bin 559 -> 0 bytes + test/filter-nearest-transformed.pdf.ref.png | Bin 0 -> 548 bytes + test/filter-nearest-transformed.ref.png | Bin 0 -> 570 bytes + test/filter-nearest-transformed.svg11.ref.png | Bin 0 -> 559 bytes + test/filter-nearest-transformed.svg12.ref.png | Bin 0 -> 559 bytes + test/finer-grained-fallbacks-ps2-ref.png | Bin 1356 -> 0 bytes + test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 1096 -> 0 bytes + test/finer-grained-fallbacks-ps3-ref.png | Bin 1356 -> 0 bytes + test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 1096 -> 0 bytes + test/finer-grained-fallbacks-ref.png | Bin 1111 -> 0 bytes + test/finer-grained-fallbacks-rgb24-ref.png | Bin 1114 -> 0 bytes + test/finer-grained-fallbacks.ps2.ref.png | Bin 0 -> 1356 bytes + test/finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 0 -> 1096 bytes + test/finer-grained-fallbacks.ps3.ref.png | Bin 0 -> 1356 bytes + test/finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 0 -> 1096 bytes + test/finer-grained-fallbacks.ref.png | Bin 0 -> 1111 bytes + test/finer-grained-fallbacks.rgb24.ref.png | Bin 0 -> 1114 bytes + test/font-matrix-translation-ps2-argb32-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-ps2-rgb24-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-ps3-argb32-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-ps3-rgb24-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-quartz-ref.png | Bin 1090 -> 0 bytes + test/font-matrix-translation-ref.png | Bin 1006 -> 0 bytes + test/font-matrix-translation-svg11-ref.png | Bin 970 -> 0 bytes + test/font-matrix-translation-svg12-ref.png | Bin 970 -> 0 bytes + test/font-matrix-translation.ps2.argb32.ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation.ps2.rgb24.ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation.ps3.argb32.ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation.ps3.rgb24.ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation.quartz.ref.png | Bin 0 -> 1090 bytes + test/font-matrix-translation.ref.png | Bin 0 -> 1006 bytes + test/font-matrix-translation.svg11.ref.png | Bin 0 -> 970 bytes + test/font-matrix-translation.svg12.ref.png | Bin 0 -> 970 bytes + test/ft-show-glyphs-positioning-pdf-ref.png | Bin 3133 -> 0 bytes + test/ft-show-glyphs-positioning-ps2-ref.png | Bin 2269 -> 0 bytes + test/ft-show-glyphs-positioning-ps3-ref.png | Bin 2269 -> 0 bytes + test/ft-show-glyphs-positioning-ref.png | Bin 3444 -> 0 bytes + test/ft-show-glyphs-positioning-svg11-ref.png | Bin 6590 -> 0 bytes + test/ft-show-glyphs-positioning-svg12-ref.png | Bin 6590 -> 0 bytes + test/ft-show-glyphs-positioning.pdf.ref.png | Bin 0 -> 3133 bytes + test/ft-show-glyphs-positioning.ps2.ref.png | Bin 0 -> 2269 bytes + test/ft-show-glyphs-positioning.ps3.ref.png | Bin 0 -> 2269 bytes + test/ft-show-glyphs-positioning.ref.png | Bin 0 -> 3444 bytes + test/ft-show-glyphs-positioning.svg11.ref.png | Bin 0 -> 6590 bytes + test/ft-show-glyphs-positioning.svg12.ref.png | Bin 0 -> 6590 bytes + test/ft-show-glyphs-table-ps2-ref.png | Bin 5687 -> 0 bytes + test/ft-show-glyphs-table-ps3-ref.png | Bin 5687 -> 0 bytes + test/ft-show-glyphs-table-ref.png | Bin 11439 -> 0 bytes + test/ft-show-glyphs-table.ps2.ref.png | Bin 0 -> 5687 bytes + test/ft-show-glyphs-table.ps3.ref.png | Bin 0 -> 5687 bytes + test/ft-show-glyphs-table.ref.png | Bin 0 -> 11439 bytes + test/ft-text-antialias-none-ps2-argb32-ref.png | Bin 335 -> 0 bytes + test/ft-text-antialias-none-ps3-argb32-ref.png | Bin 335 -> 0 bytes + test/ft-text-antialias-none-ref.png | Bin 336 -> 0 bytes + test/ft-text-antialias-none.ps2.argb32.ref.png | Bin 0 -> 335 bytes + test/ft-text-antialias-none.ps3.argb32.ref.png | Bin 0 -> 335 bytes + test/ft-text-antialias-none.ref.png | Bin 0 -> 336 bytes + test/ft-text-vertical-layout-type1-pdf-ref.png | Bin 3968 -> 0 bytes + test/ft-text-vertical-layout-type1-ps2-ref.png | Bin 1846 -> 0 bytes + test/ft-text-vertical-layout-type1-ps3-ref.png | Bin 1846 -> 0 bytes + test/ft-text-vertical-layout-type1-ref.png | Bin 3980 -> 0 bytes + test/ft-text-vertical-layout-type1-svg11-ref.png | Bin 3973 -> 0 bytes + test/ft-text-vertical-layout-type1-svg12-ref.png | Bin 3973 -> 0 bytes + test/ft-text-vertical-layout-type1.pdf.ref.png | Bin 0 -> 3968 bytes + test/ft-text-vertical-layout-type1.ps2.ref.png | Bin 0 -> 1846 bytes + test/ft-text-vertical-layout-type1.ps3.ref.png | Bin 0 -> 1846 bytes + test/ft-text-vertical-layout-type1.ref.png | Bin 0 -> 3980 bytes + test/ft-text-vertical-layout-type1.svg11.ref.png | Bin 0 -> 3973 bytes + test/ft-text-vertical-layout-type1.svg12.ref.png | Bin 0 -> 3973 bytes + test/ft-text-vertical-layout-type3-pdf-ref.png | Bin 3634 -> 0 bytes + test/ft-text-vertical-layout-type3-ps2-ref.png | Bin 1804 -> 0 bytes + test/ft-text-vertical-layout-type3-ps3-ref.png | Bin 1804 -> 0 bytes + test/ft-text-vertical-layout-type3-ref.png | Bin 3934 -> 0 bytes + test/ft-text-vertical-layout-type3-svg11-ref.png | Bin 3957 -> 0 bytes + test/ft-text-vertical-layout-type3-svg12-ref.png | Bin 3957 -> 0 bytes + test/ft-text-vertical-layout-type3.pdf.ref.png | Bin 0 -> 3634 bytes + test/ft-text-vertical-layout-type3.ps2.ref.png | Bin 0 -> 1804 bytes + test/ft-text-vertical-layout-type3.ps3.ref.png | Bin 0 -> 1804 bytes + test/ft-text-vertical-layout-type3.ref.png | Bin 0 -> 3934 bytes + test/ft-text-vertical-layout-type3.svg11.ref.png | Bin 0 -> 3957 bytes + test/ft-text-vertical-layout-type3.svg12.ref.png | Bin 0 -> 3957 bytes + test/get-group-target-ref.png | Bin 134 -> 0 bytes + test/get-group-target.ref.png | Bin 0 -> 134 bytes + test/glitz-surface-source-ref.png | Bin 268 -> 0 bytes + test/glitz-surface-source.ref.png | Bin 0 -> 268 bytes + test/glyph-cache-pressure-ps2-ref.png | Bin 1454 -> 0 bytes + test/glyph-cache-pressure-ps3-ref.png | Bin 1454 -> 0 bytes + test/glyph-cache-pressure-quartz-ref.png | Bin 3654 -> 0 bytes + test/glyph-cache-pressure-ref.png | Bin 3223 -> 0 bytes + test/glyph-cache-pressure.ps2.ref.png | Bin 0 -> 1454 bytes + test/glyph-cache-pressure.ps3.ref.png | Bin 0 -> 1454 bytes + test/glyph-cache-pressure.quartz.ref.png | Bin 0 -> 3654 bytes + test/glyph-cache-pressure.ref.png | Bin 0 -> 3223 bytes + test/gradient-alpha-pdf-argb32-ref.png | Bin 126 -> 0 bytes + test/gradient-alpha-pdf-rgb24-ref.png | Bin 121 -> 0 bytes + test/gradient-alpha-ps2-argb32-ref.png | Bin 134 -> 0 bytes + test/gradient-alpha-ps2-rgb24-ref.png | Bin 130 -> 0 bytes + test/gradient-alpha-ps3-argb32-ref.png | Bin 134 -> 0 bytes + test/gradient-alpha-ps3-rgb24-ref.png | Bin 130 -> 0 bytes + test/gradient-alpha-ref.png | Bin 147 -> 0 bytes + test/gradient-alpha-rgb24-ref.png | Bin 142 -> 0 bytes + test/gradient-alpha.pdf.argb32.ref.png | Bin 0 -> 126 bytes + test/gradient-alpha.pdf.rgb24.ref.png | Bin 0 -> 121 bytes + test/gradient-alpha.ps2.argb32.ref.png | Bin 0 -> 134 bytes + test/gradient-alpha.ps2.rgb24.ref.png | Bin 0 -> 130 bytes + test/gradient-alpha.ps3.argb32.ref.png | Bin 0 -> 134 bytes + test/gradient-alpha.ps3.rgb24.ref.png | Bin 0 -> 130 bytes + test/gradient-alpha.ref.png | Bin 0 -> 147 bytes + test/gradient-alpha.rgb24.ref.png | Bin 0 -> 142 bytes + test/gradient-constant-alpha-pdf-argb32-ref.png | Bin 116 -> 0 bytes + test/gradient-constant-alpha-pdf-rgb24-ref.png | Bin 115 -> 0 bytes + test/gradient-constant-alpha-ps3-ref.png | Bin 124 -> 0 bytes + test/gradient-constant-alpha-ps3-rgb24-ref.png | Bin 124 -> 0 bytes + test/gradient-constant-alpha-ref.png | Bin 117 -> 0 bytes + test/gradient-constant-alpha-rgb24-ref.png | Bin 116 -> 0 bytes + test/gradient-constant-alpha.pdf.argb32.ref.png | Bin 0 -> 116 bytes + test/gradient-constant-alpha.pdf.rgb24.ref.png | Bin 0 -> 115 bytes + test/gradient-constant-alpha.ps3.ref.png | Bin 0 -> 124 bytes + test/gradient-constant-alpha.ps3.rgb24.ref.png | Bin 0 -> 124 bytes + test/gradient-constant-alpha.ref.png | Bin 0 -> 117 bytes + test/gradient-constant-alpha.rgb24.ref.png | Bin 0 -> 116 bytes + test/gradient-zero-stops-ref.png | Bin 105 -> 0 bytes + test/gradient-zero-stops-rgb24-ref.png | Bin 105 -> 0 bytes + test/gradient-zero-stops.ref.png | Bin 0 -> 105 bytes + test/gradient-zero-stops.rgb24.ref.png | Bin 0 -> 105 bytes + test/group-paint-ref.png | Bin 118 -> 0 bytes + test/group-paint.ref.png | Bin 0 -> 118 bytes + test/huge-pattern-pdf-ref.png | Bin 2716 -> 0 bytes + test/huge-pattern-pdf-rgb24-ref.png | Bin 2817 -> 0 bytes + test/huge-pattern-ps3-ref.png | Bin 1786 -> 0 bytes + test/huge-pattern-ref.png | Bin 1619 -> 0 bytes + test/huge-pattern.pdf.ref.png | Bin 0 -> 2716 bytes + test/huge-pattern.pdf.rgb24.ref.png | Bin 0 -> 2817 bytes + test/huge-pattern.ps3.ref.png | Bin 0 -> 1786 bytes + test/huge-pattern.ref.png | Bin 0 -> 1619 bytes + test/image-surface-source-ps2-ref.png | Bin 376 -> 0 bytes + test/image-surface-source-ps3-ref.png | Bin 376 -> 0 bytes + test/image-surface-source-ref.png | Bin 332 -> 0 bytes + test/image-surface-source.ps2.ref.png | Bin 0 -> 376 bytes + test/image-surface-source.ps3.ref.png | Bin 0 -> 376 bytes + test/image-surface-source.ref.png | Bin 0 -> 332 bytes + test/infinite-join-ps2-ref.png | Bin 218 -> 0 bytes + test/infinite-join-ps3-ref.png | Bin 218 -> 0 bytes + test/infinite-join-ref.png | Bin 194 -> 0 bytes + test/infinite-join.ps2.ref.png | Bin 0 -> 218 bytes + test/infinite-join.ps3.ref.png | Bin 0 -> 218 bytes + test/infinite-join.ref.png | Bin 0 -> 194 bytes + test/large-clip-ref.png | Bin 350 -> 0 bytes + test/large-clip.ref.png | Bin 0 -> 350 bytes + test/large-font-ref.png | Bin 6936 -> 0 bytes + test/large-font.ref.png | Bin 0 -> 6936 bytes + test/large-source-ref.png | Bin 137 -> 0 bytes + test/large-source.ref.png | Bin 0 -> 137 bytes + test/leaky-dash-ps2-argb32-ref.png | Bin 286 -> 0 bytes + test/leaky-dash-ps2-rgb24-ref.png | Bin 284 -> 0 bytes + test/leaky-dash-ps3-argb32-ref.png | Bin 286 -> 0 bytes + test/leaky-dash-ps3-rgb24-ref.png | Bin 284 -> 0 bytes + test/leaky-dash-quartz-ref.png | Bin 241 -> 0 bytes + test/leaky-dash-ref.png | Bin 243 -> 0 bytes + test/leaky-dash.ps2.argb32.ref.png | Bin 0 -> 286 bytes + test/leaky-dash.ps2.rgb24.ref.png | Bin 0 -> 284 bytes + test/leaky-dash.ps3.argb32.ref.png | Bin 0 -> 286 bytes + test/leaky-dash.ps3.rgb24.ref.png | Bin 0 -> 284 bytes + test/leaky-dash.quartz.ref.png | Bin 0 -> 241 bytes + test/leaky-dash.ref.png | Bin 0 -> 243 bytes + test/leaky-dashed-rectangle-ps2-ref.png | Bin 444 -> 0 bytes + test/leaky-dashed-rectangle-ps3-ref.png | Bin 444 -> 0 bytes + test/leaky-dashed-rectangle-ref.png | Bin 366 -> 0 bytes + test/leaky-dashed-rectangle.ps2.ref.png | Bin 0 -> 444 bytes + test/leaky-dashed-rectangle.ps3.ref.png | Bin 0 -> 444 bytes + test/leaky-dashed-rectangle.ref.png | Bin 0 -> 366 bytes + test/leaky-dashed-stroke-ps2-ref.png | Bin 5511 -> 0 bytes + test/leaky-dashed-stroke-ps3-ref.png | Bin 5511 -> 0 bytes + test/leaky-dashed-stroke-ref.png | Bin 9214 -> 0 bytes + test/leaky-dashed-stroke.ps2.ref.png | Bin 0 -> 5511 bytes + test/leaky-dashed-stroke.ps3.ref.png | Bin 0 -> 5511 bytes + test/leaky-dashed-stroke.ref.png | Bin 0 -> 9214 bytes + test/leaky-polygon-ps2-ref.png | Bin 354 -> 0 bytes + test/leaky-polygon-ps3-ref.png | Bin 354 -> 0 bytes + test/leaky-polygon-ref.png | Bin 368 -> 0 bytes + test/leaky-polygon.ps2.ref.png | Bin 0 -> 354 bytes + test/leaky-polygon.ps3.ref.png | Bin 0 -> 354 bytes + test/leaky-polygon.ref.png | Bin 0 -> 368 bytes + test/line-width-ref.png | Bin 201 -> 0 bytes + test/line-width-scale-ps2-ref.png | Bin 3911 -> 0 bytes + test/line-width-scale-ps3-ref.png | Bin 3911 -> 0 bytes + test/line-width-scale-quartz-ref.png | Bin 6434 -> 0 bytes + test/line-width-scale-ref.png | Bin 6445 -> 0 bytes + test/line-width-scale.ps2.ref.png | Bin 0 -> 3911 bytes + test/line-width-scale.ps3.ref.png | Bin 0 -> 3911 bytes + test/line-width-scale.quartz.ref.png | Bin 0 -> 6434 bytes + test/line-width-scale.ref.png | Bin 0 -> 6445 bytes + test/line-width.ref.png | Bin 0 -> 201 bytes + test/linear-gradient-pdf-ref.png | Bin 935 -> 0 bytes + test/linear-gradient-ps3-ref.png | Bin 779 -> 0 bytes + test/linear-gradient-quartz-ref.png | Bin 1164 -> 0 bytes + test/linear-gradient-ref.png | Bin 1021 -> 0 bytes + test/linear-gradient-reflect-pdf-argb32-ref.png | Bin 248 -> 0 bytes + test/linear-gradient-reflect-pdf-rgb24-ref.png | Bin 248 -> 0 bytes + test/linear-gradient-reflect-ps3-ref.png | Bin 314 -> 0 bytes + test/linear-gradient-reflect-quartz-ref.png | Bin 878 -> 0 bytes + test/linear-gradient-reflect-ref.png | Bin 216 -> 0 bytes + test/linear-gradient-reflect.pdf.argb32.ref.png | Bin 0 -> 248 bytes + test/linear-gradient-reflect.pdf.rgb24.ref.png | Bin 0 -> 248 bytes + test/linear-gradient-reflect.ps3.ref.png | Bin 0 -> 314 bytes + test/linear-gradient-reflect.quartz.ref.png | Bin 0 -> 878 bytes + test/linear-gradient-reflect.ref.png | Bin 0 -> 216 bytes + test/linear-gradient-svg11-ref.png | Bin 1000 -> 0 bytes + test/linear-gradient-svg12-ref.png | Bin 1000 -> 0 bytes + test/linear-gradient.pdf.ref.png | Bin 0 -> 935 bytes + test/linear-gradient.ps3.ref.png | Bin 0 -> 779 bytes + test/linear-gradient.quartz.ref.png | Bin 0 -> 1164 bytes + test/linear-gradient.ref.png | Bin 0 -> 1021 bytes + test/linear-gradient.svg11.ref.png | Bin 0 -> 1000 bytes + test/linear-gradient.svg12.ref.png | Bin 0 -> 1000 bytes + test/long-dashed-lines-ps2-ref.png | Bin 1516 -> 0 bytes + test/long-dashed-lines-ps3-ref.png | Bin 1516 -> 0 bytes + test/long-dashed-lines-quartz-ref.png | Bin 2313 -> 0 bytes + test/long-dashed-lines-ref.png | Bin 2116 -> 0 bytes + test/long-dashed-lines.ps2.ref.png | Bin 0 -> 1516 bytes + test/long-dashed-lines.ps3.ref.png | Bin 0 -> 1516 bytes + test/long-dashed-lines.quartz.ref.png | Bin 0 -> 2313 bytes + test/long-dashed-lines.ref.png | Bin 0 -> 2116 bytes + test/long-lines-ref.png | Bin 247 -> 0 bytes + test/long-lines.ref.png | Bin 0 -> 247 bytes + test/mask-alpha-quartz-argb32-ref.png | Bin 641 -> 0 bytes + test/mask-alpha-ref.png | Bin 640 -> 0 bytes + test/mask-alpha-rgb24-ref.png | Bin 599 -> 0 bytes + test/mask-alpha-svg11-argb32-ref.png | Bin 615 -> 0 bytes + test/mask-alpha-svg12-argb32-ref.png | Bin 615 -> 0 bytes + test/mask-alpha.quartz.argb32.ref.png | Bin 0 -> 641 bytes + test/mask-alpha.ref.png | Bin 0 -> 640 bytes + test/mask-alpha.rgb24.ref.png | Bin 0 -> 599 bytes + test/mask-alpha.svg11.argb32.ref.png | Bin 0 -> 615 bytes + test/mask-alpha.svg12.argb32.ref.png | Bin 0 -> 615 bytes + test/mask-ctm-ref.png | Bin 129 -> 0 bytes + test/mask-ctm-rgb24-ref.png | Bin 124 -> 0 bytes + test/mask-ctm-svg11-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-ctm-svg12-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-ctm.ref.png | Bin 0 -> 129 bytes + test/mask-ctm.rgb24.ref.png | Bin 0 -> 124 bytes + test/mask-ctm.svg11.argb32.ref.png | Bin 0 -> 108 bytes + test/mask-ctm.svg12.argb32.ref.png | Bin 0 -> 108 bytes + test/mask-pdf-argb32-ref.png | Bin 8881 -> 0 bytes + test/mask-pdf-rgb24-ref.png | Bin 8267 -> 0 bytes + test/mask-quartz-ref.png | Bin 10682 -> 0 bytes + test/mask-quartz-rgb24-ref.png | Bin 8418 -> 0 bytes + test/mask-ref.png | Bin 8476 -> 0 bytes + test/mask-rgb24-ref.png | Bin 7041 -> 0 bytes + test/mask-surface-ctm-ref.png | Bin 129 -> 0 bytes + test/mask-surface-ctm-rgb24-ref.png | Bin 124 -> 0 bytes + test/mask-surface-ctm-svg11-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-surface-ctm-svg12-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-surface-ctm.ref.png | Bin 0 -> 129 bytes + test/mask-surface-ctm.rgb24.ref.png | Bin 0 -> 124 bytes + test/mask-surface-ctm.svg11.argb32.ref.png | Bin 0 -> 108 bytes + test/mask-surface-ctm.svg12.argb32.ref.png | Bin 0 -> 108 bytes + test/mask-svg11-argb32-ref.png | Bin 8527 -> 0 bytes + test/mask-svg11-rgb24-ref.png | Bin 7935 -> 0 bytes + test/mask-svg12-argb32-ref.png | Bin 8527 -> 0 bytes + test/mask-svg12-rgb24-ref.png | Bin 7935 -> 0 bytes + test/mask-transformed-image-ref.png | Bin 4516 -> 0 bytes + test/mask-transformed-image.ref.png | Bin 0 -> 4516 bytes + test/mask-transformed-similar-pdf-ref.png | Bin 4213 -> 0 bytes + test/mask-transformed-similar-ref.png | Bin 4516 -> 0 bytes + test/mask-transformed-similar-svg11-ref.png | Bin 4051 -> 0 bytes + test/mask-transformed-similar-svg12-ref.png | Bin 4051 -> 0 bytes + test/mask-transformed-similar.pdf.ref.png | Bin 0 -> 4213 bytes + test/mask-transformed-similar.ref.png | Bin 0 -> 4516 bytes + test/mask-transformed-similar.svg11.ref.png | Bin 0 -> 4051 bytes + test/mask-transformed-similar.svg12.ref.png | Bin 0 -> 4051 bytes + test/mask.pdf.argb32.ref.png | Bin 0 -> 8881 bytes + test/mask.pdf.rgb24.ref.png | Bin 0 -> 8267 bytes + test/mask.quartz.ref.png | Bin 0 -> 10682 bytes + test/mask.quartz.rgb24.ref.png | Bin 0 -> 8418 bytes + test/mask.ref.png | Bin 0 -> 8476 bytes + test/mask.rgb24.ref.png | Bin 0 -> 7041 bytes + test/mask.svg11.argb32.ref.png | Bin 0 -> 8527 bytes + test/mask.svg11.rgb24.ref.png | Bin 0 -> 7935 bytes + test/mask.svg12.argb32.ref.png | Bin 0 -> 8527 bytes + test/mask.svg12.rgb24.ref.png | Bin 0 -> 7935 bytes + test/meta-surface-pattern-pdf-ref.png | Bin 4111 -> 0 bytes + test/meta-surface-pattern-pdf-rgb24-ref.png | Bin 4009 -> 0 bytes + test/meta-surface-pattern-ps2-argb32-ref.png | Bin 3257 -> 0 bytes + test/meta-surface-pattern-ps2-rgb24-ref.png | Bin 3873 -> 0 bytes + test/meta-surface-pattern-ps3-argb32-ref.png | Bin 3257 -> 0 bytes + test/meta-surface-pattern-ps3-rgb24-ref.png | Bin 3873 -> 0 bytes + test/meta-surface-pattern-quartz-ref.png | Bin 4572 -> 0 bytes + test/meta-surface-pattern-quartz-rgb24-ref.png | Bin 4063 -> 0 bytes + test/meta-surface-pattern-ref.png | Bin 3072 -> 0 bytes + test/meta-surface-pattern-rgb24-ref.png | Bin 3162 -> 0 bytes + test/meta-surface-pattern-svg11-argb32-ref.png | Bin 3924 -> 0 bytes + test/meta-surface-pattern-svg11-rgb24-ref.png | Bin 4593 -> 0 bytes + test/meta-surface-pattern-svg12-argb32-ref.png | Bin 3924 -> 0 bytes + test/meta-surface-pattern-svg12-rgb24-ref.png | Bin 4593 -> 0 bytes + test/meta-surface-pattern.pdf.ref.png | Bin 0 -> 4111 bytes + test/meta-surface-pattern.pdf.rgb24.ref.png | Bin 0 -> 4009 bytes + test/meta-surface-pattern.ps2.argb32.ref.png | Bin 0 -> 3257 bytes + test/meta-surface-pattern.ps2.rgb24.ref.png | Bin 0 -> 3873 bytes + test/meta-surface-pattern.ps3.argb32.ref.png | Bin 0 -> 3257 bytes + test/meta-surface-pattern.ps3.rgb24.ref.png | Bin 0 -> 3873 bytes + test/meta-surface-pattern.quartz.ref.png | Bin 0 -> 4572 bytes + test/meta-surface-pattern.quartz.rgb24.ref.png | Bin 0 -> 4063 bytes + test/meta-surface-pattern.ref.png | Bin 0 -> 3072 bytes + test/meta-surface-pattern.rgb24.ref.png | Bin 0 -> 3162 bytes + test/meta-surface-pattern.svg11.argb32.ref.png | Bin 0 -> 3924 bytes + test/meta-surface-pattern.svg11.rgb24.ref.png | Bin 0 -> 4593 bytes + test/meta-surface-pattern.svg12.argb32.ref.png | Bin 0 -> 3924 bytes + test/meta-surface-pattern.svg12.rgb24.ref.png | Bin 0 -> 4593 bytes + test/miter-precision-ps2-ref.png | Bin 865 -> 0 bytes + test/miter-precision-ps3-ref.png | Bin 865 -> 0 bytes + test/miter-precision-ref.png | Bin 931 -> 0 bytes + test/miter-precision.ps2.ref.png | Bin 0 -> 865 bytes + test/miter-precision.ps3.ref.png | Bin 0 -> 865 bytes + test/miter-precision.ref.png | Bin 0 -> 931 bytes + test/move-to-show-surface-ref.png | Bin 100 -> 0 bytes + test/move-to-show-surface.ref.png | Bin 0 -> 100 bytes + test/multi-page.c | 4 +- + test/new-sub-path-ps2-argb32-ref.png | Bin 556 -> 0 bytes + test/new-sub-path-ps2-rgb24-ref.png | Bin 423 -> 0 bytes + test/new-sub-path-ps3-argb32-ref.png | Bin 556 -> 0 bytes + test/new-sub-path-ps3-rgb24-ref.png | Bin 423 -> 0 bytes + test/new-sub-path-quartz-ref.png | Bin 383 -> 0 bytes + test/new-sub-path-quartz-rgb24-ref.png | Bin 357 -> 0 bytes + test/new-sub-path-ref.png | Bin 386 -> 0 bytes + test/new-sub-path-rgb24-ref.png | Bin 355 -> 0 bytes + test/new-sub-path.ps2.argb32.ref.png | Bin 0 -> 556 bytes + test/new-sub-path.ps2.rgb24.ref.png | Bin 0 -> 423 bytes + test/new-sub-path.ps3.argb32.ref.png | Bin 0 -> 556 bytes + test/new-sub-path.ps3.rgb24.ref.png | Bin 0 -> 423 bytes + test/new-sub-path.quartz.ref.png | Bin 0 -> 383 bytes + test/new-sub-path.quartz.rgb24.ref.png | Bin 0 -> 357 bytes + test/new-sub-path.ref.png | Bin 0 -> 386 bytes + test/new-sub-path.rgb24.ref.png | Bin 0 -> 355 bytes + test/nil-surface-ref.png | Bin 107 -> 0 bytes + test/nil-surface-rgb24-ref.png | Bin 106 -> 0 bytes + test/nil-surface.ref.png | Bin 0 -> 107 bytes + test/nil-surface.rgb24.ref.png | Bin 0 -> 106 bytes + test/operator-alpha-ref.png | Bin 280 -> 0 bytes + test/operator-alpha-rgb24-ref.png | Bin 229 -> 0 bytes + test/operator-alpha.ref.png | Bin 0 -> 280 bytes + test/operator-alpha.rgb24.ref.png | Bin 0 -> 229 bytes + test/operator-clear-pdf-argb32-ref.png | Bin 1614 -> 0 bytes + test/operator-clear-pdf-rgb24-ref.png | Bin 1402 -> 0 bytes + test/operator-clear-quartz-ref.png | Bin 1459 -> 0 bytes + test/operator-clear-quartz-rgb24-ref.png | Bin 1293 -> 0 bytes + test/operator-clear-ref.png | Bin 1084 -> 0 bytes + test/operator-clear-rgb24-ref.png | Bin 965 -> 0 bytes + test/operator-clear.pdf.argb32.ref.png | Bin 0 -> 1614 bytes + test/operator-clear.pdf.rgb24.ref.png | Bin 0 -> 1402 bytes + test/operator-clear.quartz.ref.png | Bin 0 -> 1459 bytes + test/operator-clear.quartz.rgb24.ref.png | Bin 0 -> 1293 bytes + test/operator-clear.ref.png | Bin 0 -> 1084 bytes + test/operator-clear.rgb24.ref.png | Bin 0 -> 965 bytes + test/operator-ref.png | Bin 238 -> 0 bytes + test/operator-rgb24-ref.png | Bin 217 -> 0 bytes + test/operator-source-pdf-argb32-ref.png | Bin 5149 -> 0 bytes + test/operator-source-pdf-rgb24-ref.png | Bin 4354 -> 0 bytes + test/operator-source-quartz-ref.png | Bin 4637 -> 0 bytes + test/operator-source-quartz-rgb24-ref.png | Bin 3533 -> 0 bytes + test/operator-source-ref.png | Bin 4420 -> 0 bytes + test/operator-source-rgb24-ref.png | Bin 3201 -> 0 bytes + test/operator-source.pdf.argb32.ref.png | Bin 0 -> 5149 bytes + test/operator-source.pdf.rgb24.ref.png | Bin 0 -> 4354 bytes + test/operator-source.quartz.ref.png | Bin 0 -> 4637 bytes + test/operator-source.quartz.rgb24.ref.png | Bin 0 -> 3533 bytes + test/operator-source.ref.png | Bin 0 -> 4420 bytes + test/operator-source.rgb24.ref.png | Bin 0 -> 3201 bytes + test/operator.ref.png | Bin 0 -> 238 bytes + test/operator.rgb24.ref.png | Bin 0 -> 217 bytes + test/over-above-source-ps2-argb32-ref.png | Bin 636 -> 0 bytes + test/over-above-source-ps3-argb32-ref.png | Bin 636 -> 0 bytes + test/over-above-source-quartz-ref.png | Bin 530 -> 0 bytes + test/over-above-source-quartz-rgb24-ref.png | Bin 456 -> 0 bytes + test/over-above-source-ref.png | Bin 538 -> 0 bytes + test/over-above-source-rgb24-ref.png | Bin 461 -> 0 bytes + test/over-above-source.ps2.argb32.ref.png | Bin 0 -> 636 bytes + test/over-above-source.ps3.argb32.ref.png | Bin 0 -> 636 bytes + test/over-above-source.quartz.ref.png | Bin 0 -> 530 bytes + test/over-above-source.quartz.rgb24.ref.png | Bin 0 -> 456 bytes + test/over-above-source.ref.png | Bin 0 -> 538 bytes + test/over-above-source.rgb24.ref.png | Bin 0 -> 461 bytes + test/over-around-source-ps2-argb32-ref.png | Bin 632 -> 0 bytes + test/over-around-source-ps2-rgb24-ref.png | Bin 538 -> 0 bytes + test/over-around-source-ps3-argb32-ref.png | Bin 632 -> 0 bytes + test/over-around-source-ps3-rgb24-ref.png | Bin 538 -> 0 bytes + test/over-around-source-quartz-ref.png | Bin 612 -> 0 bytes + test/over-around-source-quartz-rgb24-ref.png | Bin 491 -> 0 bytes + test/over-around-source-ref.png | Bin 614 -> 0 bytes + test/over-around-source-rgb24-ref.png | Bin 503 -> 0 bytes + test/over-around-source.ps2.argb32.ref.png | Bin 0 -> 632 bytes + test/over-around-source.ps2.rgb24.ref.png | Bin 0 -> 538 bytes + test/over-around-source.ps3.argb32.ref.png | Bin 0 -> 632 bytes + test/over-around-source.ps3.rgb24.ref.png | Bin 0 -> 538 bytes + test/over-around-source.quartz.ref.png | Bin 0 -> 612 bytes + test/over-around-source.quartz.rgb24.ref.png | Bin 0 -> 491 bytes + test/over-around-source.ref.png | Bin 0 -> 614 bytes + test/over-around-source.rgb24.ref.png | Bin 0 -> 503 bytes + test/over-below-source-ps2-argb32-ref.png | Bin 503 -> 0 bytes + test/over-below-source-ps3-argb32-ref.png | Bin 503 -> 0 bytes + test/over-below-source-ref.png | Bin 434 -> 0 bytes + test/over-below-source-rgb24-ref.png | Bin 392 -> 0 bytes + test/over-below-source.ps2.argb32.ref.png | Bin 0 -> 503 bytes + test/over-below-source.ps3.argb32.ref.png | Bin 0 -> 503 bytes + test/over-below-source.ref.png | Bin 0 -> 434 bytes + test/over-below-source.rgb24.ref.png | Bin 0 -> 392 bytes + test/over-between-source-ps2-argb32-ref.png | Bin 678 -> 0 bytes + test/over-between-source-ps3-argb32-ref.png | Bin 678 -> 0 bytes + test/over-between-source-quartz-ref.png | Bin 570 -> 0 bytes + test/over-between-source-quartz-rgb24-ref.png | Bin 467 -> 0 bytes + test/over-between-source-ref.png | Bin 575 -> 0 bytes + test/over-between-source-rgb24-ref.png | Bin 473 -> 0 bytes + test/over-between-source.ps2.argb32.ref.png | Bin 0 -> 678 bytes + test/over-between-source.ps3.argb32.ref.png | Bin 0 -> 678 bytes + test/over-between-source.quartz.ref.png | Bin 0 -> 570 bytes + test/over-between-source.quartz.rgb24.ref.png | Bin 0 -> 467 bytes + test/over-between-source.ref.png | Bin 0 -> 575 bytes + test/over-between-source.rgb24.ref.png | Bin 0 -> 473 bytes + test/paint-ref.png | Bin 116 -> 0 bytes + test/paint-repeat-ref.png | Bin 145 -> 0 bytes + test/paint-repeat.ref.png | Bin 0 -> 145 bytes + test/paint-source-alpha-pdf-argb32-ref.png | Bin 471 -> 0 bytes + test/paint-source-alpha-pdf-ref.png | Bin 473 -> 0 bytes + test/paint-source-alpha-ref.png | Bin 256 -> 0 bytes + test/paint-source-alpha-svg11-ref.png | Bin 756 -> 0 bytes + test/paint-source-alpha-svg12-ref.png | Bin 505 -> 0 bytes + test/paint-source-alpha.pdf.argb32.ref.png | Bin 0 -> 471 bytes + test/paint-source-alpha.pdf.ref.png | Bin 0 -> 473 bytes + test/paint-source-alpha.ref.png | Bin 0 -> 256 bytes + test/paint-source-alpha.svg11.ref.png | Bin 0 -> 756 bytes + test/paint-source-alpha.svg12.ref.png | Bin 0 -> 505 bytes + test/paint-with-alpha-pdf-ref.png | Bin 466 -> 0 bytes + test/paint-with-alpha-ref.png | Bin 256 -> 0 bytes + test/paint-with-alpha-svg11-ref.png | Bin 516 -> 0 bytes + test/paint-with-alpha-svg12-ref.png | Bin 516 -> 0 bytes + test/paint-with-alpha.pdf.ref.png | Bin 0 -> 466 bytes + test/paint-with-alpha.ref.png | Bin 0 -> 256 bytes + test/paint-with-alpha.svg11.ref.png | Bin 0 -> 516 bytes + test/paint-with-alpha.svg12.ref.png | Bin 0 -> 516 bytes + test/paint.ref.png | Bin 0 -> 116 bytes + test/pass-through-ref.png | Bin 221 -> 0 bytes + test/pass-through-rgb24-ref.png | Bin 179 -> 0 bytes + test/pass-through.ref.png | Bin 0 -> 221 bytes + test/pass-through.rgb24.ref.png | Bin 0 -> 179 bytes + test/pattern-getters-ref.png | Bin 107 -> 0 bytes + test/pattern-getters.ref.png | Bin 0 -> 107 bytes + test/pdf-features.c | 2 +- + test/pdf-surface-source-ref.png | Bin 268 -> 0 bytes + test/pdf-surface-source.c | 2 +- + test/pdf-surface-source.ref.png | Bin 0 -> 268 bytes + test/pixman-rotate-ref.png | Bin 260 -> 0 bytes + test/pixman-rotate-rgb24-ref.png | Bin 244 -> 0 bytes + test/pixman-rotate.ref.png | Bin 0 -> 260 bytes + test/pixman-rotate.rgb24.ref.png | Bin 0 -> 244 bytes + test/png.c | 2 +- + test/ps-features.c | 2 +- + test/ps-surface-source-ref.png | Bin 268 -> 0 bytes + test/ps-surface-source.c | 2 +- + test/ps-surface-source.ref.png | Bin 0 -> 268 bytes + test/push-group-pdf-ref.png | Bin 2807 -> 0 bytes + test/push-group-pdf-rgb24-ref.png | Bin 2714 -> 0 bytes + test/push-group-ref.png | Bin 3126 -> 0 bytes + test/push-group-rgb24-ref.png | Bin 2961 -> 0 bytes + test/push-group-svg11-argb32-ref.png | Bin 2935 -> 0 bytes + test/push-group-svg12-argb32-ref.png | Bin 2935 -> 0 bytes + test/push-group.pdf.ref.png | Bin 0 -> 2807 bytes + test/push-group.pdf.rgb24.ref.png | Bin 0 -> 2714 bytes + test/push-group.ref.png | Bin 0 -> 3126 bytes + test/push-group.rgb24.ref.png | Bin 0 -> 2961 bytes + test/push-group.svg11.argb32.ref.png | Bin 0 -> 2935 bytes + test/push-group.svg12.argb32.ref.png | Bin 0 -> 2935 bytes + test/radial-gradient-pdf-ref.png | Bin 79490 -> 0 bytes + test/radial-gradient-quartz-ref.png | Bin 92334 -> 0 bytes + test/radial-gradient-ref.png | Bin 91159 -> 0 bytes + test/radial-gradient-svg11-ref.png | Bin 91039 -> 0 bytes + test/radial-gradient-svg12-ref.png | Bin 91039 -> 0 bytes + test/radial-gradient.pdf.ref.png | Bin 0 -> 79490 bytes + test/radial-gradient.quartz.ref.png | Bin 0 -> 92334 bytes + test/radial-gradient.ref.png | Bin 0 -> 91159 bytes + test/radial-gradient.svg11.ref.png | Bin 0 -> 91039 bytes + test/radial-gradient.svg12.ref.png | Bin 0 -> 91039 bytes + test/random-intersections-ps2-ref.png | Bin 89253 -> 0 bytes + test/random-intersections-ps3-ref.png | Bin 89253 -> 0 bytes + test/random-intersections-quartz-ref.png | Bin 197778 -> 0 bytes + test/random-intersections-ref.png | Bin 148722 -> 0 bytes + test/random-intersections.ps2.ref.png | Bin 0 -> 89253 bytes + test/random-intersections.ps3.ref.png | Bin 0 -> 89253 bytes + test/random-intersections.quartz.ref.png | Bin 0 -> 197778 bytes + test/random-intersections.ref.png | Bin 0 -> 148722 bytes + test/rectangle-rounding-error-ref.png | Bin 231 -> 0 bytes + test/rectangle-rounding-error.ref.png | Bin 0 -> 231 bytes + test/rectilinear-fill-ref.png | Bin 162 -> 0 bytes + test/rectilinear-fill.ref.png | Bin 0 -> 162 bytes + test/rectilinear-miter-limit-ps2-ref.png | Bin 221 -> 0 bytes + test/rectilinear-miter-limit-ps3-ref.png | Bin 221 -> 0 bytes + test/rectilinear-miter-limit-ref.png | Bin 177 -> 0 bytes + test/rectilinear-miter-limit.ps2.ref.png | Bin 0 -> 221 bytes + test/rectilinear-miter-limit.ps3.ref.png | Bin 0 -> 221 bytes + test/rectilinear-miter-limit.ref.png | Bin 0 -> 177 bytes + test/rectilinear-stroke-ref.png | Bin 213 -> 0 bytes + test/rectilinear-stroke.ref.png | Bin 0 -> 213 bytes + test/reflected-stroke-ps2-ref.png | Bin 3898 -> 0 bytes + test/reflected-stroke-ps3-ref.png | Bin 3898 -> 0 bytes + test/reflected-stroke-quartz-ref.png | Bin 5293 -> 0 bytes + test/reflected-stroke-ref.png | Bin 5704 -> 0 bytes + test/reflected-stroke.ps2.ref.png | Bin 0 -> 3898 bytes + test/reflected-stroke.ps3.ref.png | Bin 0 -> 3898 bytes + test/reflected-stroke.quartz.ref.png | Bin 0 -> 5293 bytes + test/reflected-stroke.ref.png | Bin 0 -> 5704 bytes + test/rel-path-ps2-rgb24-ref.png | Bin 243 -> 0 bytes + test/rel-path-ps3-rgb24-ref.png | Bin 243 -> 0 bytes + test/rel-path-quartz-ref.png | Bin 212 -> 0 bytes + test/rel-path-quartz-rgb24-ref.png | Bin 228 -> 0 bytes + test/rel-path-ref.png | Bin 212 -> 0 bytes + test/rel-path-rgb24-ref.png | Bin 228 -> 0 bytes + test/rel-path.ps2.rgb24.ref.png | Bin 0 -> 243 bytes + test/rel-path.ps3.rgb24.ref.png | Bin 0 -> 243 bytes + test/rel-path.quartz.ref.png | Bin 0 -> 212 bytes + test/rel-path.quartz.rgb24.ref.png | Bin 0 -> 228 bytes + test/rel-path.ref.png | Bin 0 -> 212 bytes + test/rel-path.rgb24.ref.png | Bin 0 -> 228 bytes + test/rgb24-ignore-alpha-ref.png | Bin 116 -> 0 bytes + test/rgb24-ignore-alpha.ref.png | Bin 0 -> 116 bytes + test/rotate-image-surface-paint-pdf-argb32-ref.png | Bin 209 -> 0 bytes + test/rotate-image-surface-paint-pdf-rgb24-ref.png | Bin 207 -> 0 bytes + test/rotate-image-surface-paint-ps2-ref.png | Bin 212 -> 0 bytes + test/rotate-image-surface-paint-ps3-ref.png | Bin 212 -> 0 bytes + test/rotate-image-surface-paint-quartz-ref.png | Bin 257 -> 0 bytes + test/rotate-image-surface-paint-ref.png | Bin 232 -> 0 bytes + test/rotate-image-surface-paint-svg11-ref.png | Bin 248 -> 0 bytes + test/rotate-image-surface-paint-svg12-ref.png | Bin 248 -> 0 bytes + test/rotate-image-surface-paint.pdf.argb32.ref.png | Bin 0 -> 209 bytes + test/rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 0 -> 207 bytes + test/rotate-image-surface-paint.ps2.ref.png | Bin 0 -> 212 bytes + test/rotate-image-surface-paint.ps3.ref.png | Bin 0 -> 212 bytes + test/rotate-image-surface-paint.quartz.ref.png | Bin 0 -> 257 bytes + test/rotate-image-surface-paint.ref.png | Bin 0 -> 232 bytes + test/rotate-image-surface-paint.svg11.ref.png | Bin 0 -> 248 bytes + test/rotate-image-surface-paint.svg12.ref.png | Bin 0 -> 248 bytes + test/scale-down-source-surface-paint-ref.png | Bin 133 -> 0 bytes + test/scale-down-source-surface-paint.ref.png | Bin 0 -> 133 bytes + test/scale-source-surface-paint-pdf-argb32-ref.png | Bin 182 -> 0 bytes + test/scale-source-surface-paint-pdf-rgb24-ref.png | Bin 198 -> 0 bytes + test/scale-source-surface-paint-ref.png | Bin 147 -> 0 bytes + test/scale-source-surface-paint-rgb24-ref.png | Bin 136 -> 0 bytes + ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 229 -> 0 bytes + .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 243 -> 0 bytes + ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 229 -> 0 bytes + .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 243 -> 0 bytes + test/scale-source-surface-paint.pdf.argb32.ref.png | Bin 0 -> 182 bytes + test/scale-source-surface-paint.pdf.rgb24.ref.png | Bin 0 -> 198 bytes + test/scale-source-surface-paint.ref.png | Bin 0 -> 147 bytes + test/scale-source-surface-paint.rgb24.ref.png | Bin 0 -> 136 bytes + ...scale-source-surface-paint.svg11.argb32.ref.png | Bin 0 -> 229 bytes + .../scale-source-surface-paint.svg11.rgb24.ref.png | Bin 0 -> 243 bytes + ...scale-source-surface-paint.svg12.argb32.ref.png | Bin 0 -> 229 bytes + .../scale-source-surface-paint.svg12.rgb24.ref.png | Bin 0 -> 243 bytes + test/select-font-face-ps2-ref.png | Bin 959 -> 0 bytes + test/select-font-face-ps3-ref.png | Bin 959 -> 0 bytes + test/select-font-face-quartz-ref.png | Bin 2970 -> 0 bytes + test/select-font-face-ref.png | Bin 2473 -> 0 bytes + test/select-font-face.ps2.ref.png | Bin 0 -> 959 bytes + test/select-font-face.ps3.ref.png | Bin 0 -> 959 bytes + test/select-font-face.quartz.ref.png | Bin 0 -> 2970 bytes + test/select-font-face.ref.png | Bin 0 -> 2473 bytes + test/self-copy-overlap-ref.png | Bin 1140 -> 0 bytes + test/self-copy-overlap-rgb24-ref.png | Bin 608 -> 0 bytes + test/self-copy-overlap.ref.png | Bin 0 -> 1140 bytes + test/self-copy-overlap.rgb24.ref.png | Bin 0 -> 608 bytes + test/self-copy-ps2-ref.png | Bin 335 -> 0 bytes + test/self-copy-ps3-ref.png | Bin 335 -> 0 bytes + test/self-copy-ref.png | Bin 291 -> 0 bytes + test/self-copy.ps2.ref.png | Bin 0 -> 335 bytes + test/self-copy.ps3.ref.png | Bin 0 -> 335 bytes + test/self-copy.ref.png | Bin 0 -> 291 bytes + test/self-intersecting-ref.png | Bin 242 -> 0 bytes + test/self-intersecting-rgb24-ref.png | Bin 304 -> 0 bytes + test/self-intersecting.ref.png | Bin 0 -> 242 bytes + test/self-intersecting.rgb24.ref.png | Bin 0 -> 304 bytes + test/set-source-ref.png | Bin 120 -> 0 bytes + test/set-source-rgb24-ref.png | Bin 120 -> 0 bytes + test/set-source-svg11-argb32-ref.png | Bin 104 -> 0 bytes + test/set-source-svg12-argb32-ref.png | Bin 104 -> 0 bytes + test/set-source.ref.png | Bin 0 -> 120 bytes + test/set-source.rgb24.ref.png | Bin 0 -> 120 bytes + test/set-source.svg11.argb32.ref.png | Bin 0 -> 104 bytes + test/set-source.svg12.argb32.ref.png | Bin 0 -> 104 bytes + test/show-glyphs-many-ref.png | Bin 118 -> 0 bytes + test/show-glyphs-many.ref.png | Bin 0 -> 118 bytes + test/show-text-current-point-ps2-ref.png | Bin 1356 -> 0 bytes + test/show-text-current-point-ps3-ref.png | Bin 1356 -> 0 bytes + test/show-text-current-point-quartz-ref.png | Bin 3093 -> 0 bytes + test/show-text-current-point-ref.png | Bin 2411 -> 0 bytes + test/show-text-current-point.ps2.ref.png | Bin 0 -> 1356 bytes + test/show-text-current-point.ps3.ref.png | Bin 0 -> 1356 bytes + test/show-text-current-point.quartz.ref.png | Bin 0 -> 3093 bytes + test/show-text-current-point.ref.png | Bin 0 -> 2411 bytes + test/skew-extreme-ps2-ref.png | Bin 1048 -> 0 bytes + test/skew-extreme-ps3-ref.png | Bin 1048 -> 0 bytes + test/skew-extreme-ref.png | Bin 1012 -> 0 bytes + test/skew-extreme.ps2.ref.png | Bin 0 -> 1048 bytes + test/skew-extreme.ps3.ref.png | Bin 0 -> 1048 bytes + test/skew-extreme.ref.png | Bin 0 -> 1012 bytes + test/smask-fill-pdf-ref.png | Bin 1075 -> 0 bytes + test/smask-fill-ref.png | Bin 1223 -> 0 bytes + test/smask-fill-svg11-ref.png | Bin 1166 -> 0 bytes + test/smask-fill-svg12-ref.png | Bin 1166 -> 0 bytes + test/smask-fill.pdf.ref.png | Bin 0 -> 1075 bytes + test/smask-fill.ref.png | Bin 0 -> 1223 bytes + test/smask-fill.svg11.ref.png | Bin 0 -> 1166 bytes + test/smask-fill.svg12.ref.png | Bin 0 -> 1166 bytes + test/smask-image-mask-pdf-ref.png | Bin 421 -> 0 bytes + test/smask-image-mask-ref.png | Bin 643 -> 0 bytes + test/smask-image-mask.pdf.ref.png | Bin 0 -> 421 bytes + test/smask-image-mask.ref.png | Bin 0 -> 643 bytes + test/smask-mask-pdf-ref.png | Bin 3731 -> 0 bytes + test/smask-mask-ref.png | Bin 2523 -> 0 bytes + test/smask-mask-svg11-ref.png | Bin 2529 -> 0 bytes + test/smask-mask-svg12-ref.png | Bin 2529 -> 0 bytes + test/smask-mask.pdf.ref.png | Bin 0 -> 3731 bytes + test/smask-mask.ref.png | Bin 0 -> 2523 bytes + test/smask-mask.svg11.ref.png | Bin 0 -> 2529 bytes + test/smask-mask.svg12.ref.png | Bin 0 -> 2529 bytes + test/smask-paint-pdf-ref.png | Bin 3800 -> 0 bytes + test/smask-paint-ref.png | Bin 2639 -> 0 bytes + test/smask-paint-svg11-ref.png | Bin 2612 -> 0 bytes + test/smask-paint-svg12-ref.png | Bin 2612 -> 0 bytes + test/smask-paint.pdf.ref.png | Bin 0 -> 3800 bytes + test/smask-paint.ref.png | Bin 0 -> 2639 bytes + test/smask-paint.svg11.ref.png | Bin 0 -> 2612 bytes + test/smask-paint.svg12.ref.png | Bin 0 -> 2612 bytes + test/smask-pdf-ref.png | Bin 3800 -> 0 bytes + test/smask-ps2-ref.png | Bin 3669 -> 0 bytes + test/smask-ps3-ref.png | Bin 3669 -> 0 bytes + test/smask-ref.png | Bin 3587 -> 0 bytes + test/smask-stroke-pdf-ref.png | Bin 449 -> 0 bytes + test/smask-stroke-ref.png | Bin 1845 -> 0 bytes + test/smask-stroke.pdf.ref.png | Bin 0 -> 449 bytes + test/smask-stroke.ref.png | Bin 0 -> 1845 bytes + test/smask-svg11-ref.png | Bin 3634 -> 0 bytes + test/smask-svg12-ref.png | Bin 3634 -> 0 bytes + test/smask-text-pdf-ref.png | Bin 1806 -> 0 bytes + test/smask-text-ps2-ref.png | Bin 2023 -> 0 bytes + test/smask-text-ps3-ref.png | Bin 2023 -> 0 bytes + test/smask-text-ref.png | Bin 1777 -> 0 bytes + test/smask-text-svg11-ref.png | Bin 1886 -> 0 bytes + test/smask-text-svg12-ref.png | Bin 1886 -> 0 bytes + test/smask-text.pdf.ref.png | Bin 0 -> 1806 bytes + test/smask-text.ps2.ref.png | Bin 0 -> 2023 bytes + test/smask-text.ps3.ref.png | Bin 0 -> 2023 bytes + test/smask-text.ref.png | Bin 0 -> 1777 bytes + test/smask-text.svg11.ref.png | Bin 0 -> 1886 bytes + test/smask-text.svg12.ref.png | Bin 0 -> 1886 bytes + test/smask.pdf.ref.png | Bin 0 -> 3800 bytes + test/smask.ps2.ref.png | Bin 0 -> 3669 bytes + test/smask.ps3.ref.png | Bin 0 -> 3669 bytes + test/smask.ref.png | Bin 0 -> 3587 bytes + test/smask.svg11.ref.png | Bin 0 -> 3634 bytes + test/smask.svg12.ref.png | Bin 0 -> 3634 bytes + test/solid-pattern-cache-stress-ref.png | Bin 107 -> 0 bytes + test/solid-pattern-cache-stress.ref.png | Bin 0 -> 107 bytes + test/source-clip-ref.png | Bin 133 -> 0 bytes + test/source-clip-scale-pdf-ref.png | Bin 113 -> 0 bytes + test/source-clip-scale-ps2-argb32-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-ps2-rgb24-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-ps3-argb32-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-ps3-rgb24-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-quartz-ref.png | Bin 148 -> 0 bytes + test/source-clip-scale-ref.png | Bin 161 -> 0 bytes + test/source-clip-scale-svg11-ref.png | Bin 119 -> 0 bytes + test/source-clip-scale-svg12-ref.png | Bin 119 -> 0 bytes + test/source-clip-scale.pdf.ref.png | Bin 0 -> 113 bytes + test/source-clip-scale.ps2.argb32.ref.png | Bin 0 -> 183 bytes + test/source-clip-scale.ps2.rgb24.ref.png | Bin 0 -> 183 bytes + test/source-clip-scale.ps3.argb32.ref.png | Bin 0 -> 183 bytes + test/source-clip-scale.ps3.rgb24.ref.png | Bin 0 -> 183 bytes + test/source-clip-scale.quartz.ref.png | Bin 0 -> 148 bytes + test/source-clip-scale.ref.png | Bin 0 -> 161 bytes + test/source-clip-scale.svg11.ref.png | Bin 0 -> 119 bytes + test/source-clip-scale.svg12.ref.png | Bin 0 -> 119 bytes + test/source-clip.ref.png | Bin 0 -> 133 bytes + test/source-surface-scale-paint-ref.png | Bin 139 -> 0 bytes + test/source-surface-scale-paint-rgb24-ref.png | Bin 133 -> 0 bytes + test/source-surface-scale-paint.ref.png | Bin 0 -> 139 bytes + test/source-surface-scale-paint.rgb24.ref.png | Bin 0 -> 133 bytes + test/spline-decomposition-pdf-ref.png | Bin 20404 -> 0 bytes + test/spline-decomposition-ps2-ref.png | Bin 8957 -> 0 bytes + test/spline-decomposition-ps3-ref.png | Bin 8957 -> 0 bytes + test/spline-decomposition-ref.png | Bin 20402 -> 0 bytes + test/spline-decomposition-svg11-ref.png | Bin 20404 -> 0 bytes + test/spline-decomposition-svg12-ref.png | Bin 20404 -> 0 bytes + test/spline-decomposition.pdf.ref.png | Bin 0 -> 20404 bytes + test/spline-decomposition.ps2.ref.png | Bin 0 -> 8957 bytes + test/spline-decomposition.ps3.ref.png | Bin 0 -> 8957 bytes + test/spline-decomposition.ref.png | Bin 0 -> 20402 bytes + test/spline-decomposition.svg11.ref.png | Bin 0 -> 20404 bytes + test/spline-decomposition.svg12.ref.png | Bin 0 -> 20404 bytes + test/stroke-ctm-caps-ps2-ref.png | Bin 1079 -> 0 bytes + test/stroke-ctm-caps-ps3-ref.png | Bin 1079 -> 0 bytes + test/stroke-ctm-caps-quartz-ref.png | Bin 1109 -> 0 bytes + test/stroke-ctm-caps-ref.png | Bin 1057 -> 0 bytes + test/stroke-ctm-caps.ps2.ref.png | Bin 0 -> 1079 bytes + test/stroke-ctm-caps.ps3.ref.png | Bin 0 -> 1079 bytes + test/stroke-ctm-caps.quartz.ref.png | Bin 0 -> 1109 bytes + test/stroke-ctm-caps.ref.png | Bin 0 -> 1057 bytes + test/stroke-image-pdf-ref.png | Bin 1554 -> 0 bytes + test/stroke-image-ps2-ref.png | Bin 2121 -> 0 bytes + test/stroke-image-ps3-ref.png | Bin 2121 -> 0 bytes + test/stroke-image-quartz-ref.png | Bin 1802 -> 0 bytes + test/stroke-image-ref.png | Bin 1866 -> 0 bytes + test/stroke-image.pdf.ref.png | Bin 0 -> 1554 bytes + test/stroke-image.ps2.ref.png | Bin 0 -> 2121 bytes + test/stroke-image.ps3.ref.png | Bin 0 -> 2121 bytes + test/stroke-image.quartz.ref.png | Bin 0 -> 1802 bytes + test/stroke-image.ref.png | Bin 0 -> 1866 bytes + test/surface-pattern-big-scale-down-ref.png | Bin 226 -> 0 bytes + test/surface-pattern-big-scale-down.ref.png | Bin 0 -> 226 bytes + test/surface-pattern-pdf-ref.png | Bin 15996 -> 0 bytes + test/surface-pattern-ps2-ref.png | Bin 2364 -> 0 bytes + test/surface-pattern-ps3-ref.png | Bin 2364 -> 0 bytes + test/surface-pattern-ref.png | Bin 11439 -> 0 bytes + test/surface-pattern-scale-down-pdf-argb32-ref.png | Bin 2386 -> 0 bytes + test/surface-pattern-scale-down-pdf-rgb24-ref.png | Bin 2386 -> 0 bytes + test/surface-pattern-scale-down-ps2-ref.png | Bin 1324 -> 0 bytes + test/surface-pattern-scale-down-ps3-ref.png | Bin 1324 -> 0 bytes + test/surface-pattern-scale-down-quartz-ref.png | Bin 3188 -> 0 bytes + test/surface-pattern-scale-down-ref.png | Bin 1784 -> 0 bytes + test/surface-pattern-scale-down.pdf.argb32.ref.png | Bin 0 -> 2386 bytes + test/surface-pattern-scale-down.pdf.rgb24.ref.png | Bin 0 -> 2386 bytes + test/surface-pattern-scale-down.ps2.ref.png | Bin 0 -> 1324 bytes + test/surface-pattern-scale-down.ps3.ref.png | Bin 0 -> 1324 bytes + test/surface-pattern-scale-down.quartz.ref.png | Bin 0 -> 3188 bytes + test/surface-pattern-scale-down.ref.png | Bin 0 -> 1784 bytes + test/surface-pattern-scale-up-pdf-argb32-ref.png | Bin 4247 -> 0 bytes + test/surface-pattern-scale-up-pdf-rgb24-ref.png | Bin 4247 -> 0 bytes + test/surface-pattern-scale-up-ps2-ref.png | Bin 943 -> 0 bytes + test/surface-pattern-scale-up-ps3-ref.png | Bin 943 -> 0 bytes + test/surface-pattern-scale-up-ref.png | Bin 4061 -> 0 bytes + test/surface-pattern-scale-up.pdf.argb32.ref.png | Bin 0 -> 4247 bytes + test/surface-pattern-scale-up.pdf.rgb24.ref.png | Bin 0 -> 4247 bytes + test/surface-pattern-scale-up.ps2.ref.png | Bin 0 -> 943 bytes + test/surface-pattern-scale-up.ps3.ref.png | Bin 0 -> 943 bytes + test/surface-pattern-scale-up.ref.png | Bin 0 -> 4061 bytes + test/surface-pattern-svg11-ref.png | Bin 17663 -> 0 bytes + test/surface-pattern-svg12-ref.png | Bin 17663 -> 0 bytes + test/surface-pattern.pdf.ref.png | Bin 0 -> 15996 bytes + test/surface-pattern.ps2.ref.png | Bin 0 -> 2364 bytes + test/surface-pattern.ps3.ref.png | Bin 0 -> 2364 bytes + test/surface-pattern.ref.png | Bin 0 -> 11439 bytes + test/surface-pattern.svg11.ref.png | Bin 0 -> 17663 bytes + test/surface-pattern.svg12.ref.png | Bin 0 -> 17663 bytes + test/svg-clip.c | 2 +- + test/svg-surface-source-ref.png | Bin 268 -> 0 bytes + test/svg-surface-source.c | 2 +- + test/svg-surface-source.ref.png | Bin 0 -> 268 bytes + test/svg-surface.c | 2 +- + test/text-antialias-gray-quartz-ref.png | Bin 1041 -> 0 bytes + test/text-antialias-gray-ref.png | Bin 1084 -> 0 bytes + test/text-antialias-gray.quartz.ref.png | Bin 0 -> 1041 bytes + test/text-antialias-gray.ref.png | Bin 0 -> 1084 bytes + test/text-antialias-none-quartz-ref.png | Bin 300 -> 0 bytes + test/text-antialias-none-ref.png | Bin 298 -> 0 bytes + test/text-antialias-none.quartz.ref.png | Bin 0 -> 300 bytes + test/text-antialias-none.ref.png | Bin 0 -> 298 bytes + test/text-antialias-subpixel-quartz-ref.png | Bin 1065 -> 0 bytes + test/text-antialias-subpixel-ref.png | Bin 1102 -> 0 bytes + test/text-antialias-subpixel.quartz.ref.png | Bin 0 -> 1065 bytes + test/text-antialias-subpixel.ref.png | Bin 0 -> 1102 bytes + test/text-glyph-range-ps2-ref.png | Bin 1389 -> 0 bytes + test/text-glyph-range-ps3-ref.png | Bin 1389 -> 0 bytes + test/text-glyph-range-ref.png | Bin 2211 -> 0 bytes + test/text-glyph-range.ps2.ref.png | Bin 0 -> 1389 bytes + test/text-glyph-range.ps3.ref.png | Bin 0 -> 1389 bytes + test/text-glyph-range.ref.png | Bin 0 -> 2211 bytes + test/text-pattern-pdf-argb32-ref.png | Bin 1823 -> 0 bytes + test/text-pattern-pdf-rgb24-ref.png | Bin 508 -> 0 bytes + test/text-pattern-ps3-argb32-ref.png | Bin 966 -> 0 bytes + test/text-pattern-ps3-rgb24-ref.png | Bin 924 -> 0 bytes + test/text-pattern-quartz-ref.png | Bin 2158 -> 0 bytes + test/text-pattern-quartz-rgb24-ref.png | Bin 1874 -> 0 bytes + test/text-pattern-ref.png | Bin 1717 -> 0 bytes + test/text-pattern-rgb24-ref.png | Bin 1414 -> 0 bytes + test/text-pattern-svg11-argb32-ref.png | Bin 1733 -> 0 bytes + test/text-pattern-svg11-rgb24-ref.png | Bin 1563 -> 0 bytes + test/text-pattern-svg12-argb32-ref.png | Bin 1733 -> 0 bytes + test/text-pattern-svg12-rgb24-ref.png | Bin 1563 -> 0 bytes + test/text-pattern.pdf.argb32.ref.png | Bin 0 -> 1823 bytes + test/text-pattern.pdf.rgb24.ref.png | Bin 0 -> 508 bytes + test/text-pattern.ps3.argb32.ref.png | Bin 0 -> 966 bytes + test/text-pattern.ps3.rgb24.ref.png | Bin 0 -> 924 bytes + test/text-pattern.quartz.ref.png | Bin 0 -> 2158 bytes + test/text-pattern.quartz.rgb24.ref.png | Bin 0 -> 1874 bytes + test/text-pattern.ref.png | Bin 0 -> 1717 bytes + test/text-pattern.rgb24.ref.png | Bin 0 -> 1414 bytes + test/text-pattern.svg11.argb32.ref.png | Bin 0 -> 1733 bytes + test/text-pattern.svg11.rgb24.ref.png | Bin 0 -> 1563 bytes + test/text-pattern.svg12.argb32.ref.png | Bin 0 -> 1733 bytes + test/text-pattern.svg12.rgb24.ref.png | Bin 0 -> 1563 bytes + test/text-rotate-pdf-ref.png | Bin 16639 -> 0 bytes + test/text-rotate-ps2-ref.png | Bin 6851 -> 0 bytes + test/text-rotate-ps3-ref.png | Bin 6851 -> 0 bytes + test/text-rotate-quartz-ref.png | Bin 17820 -> 0 bytes + test/text-rotate-ref.png | Bin 17775 -> 0 bytes + test/text-rotate-svg11-ref.png | Bin 18301 -> 0 bytes + test/text-rotate-svg12-ref.png | Bin 18301 -> 0 bytes + test/text-rotate.pdf.ref.png | Bin 0 -> 16639 bytes + test/text-rotate.ps2.ref.png | Bin 0 -> 6851 bytes + test/text-rotate.ps3.ref.png | Bin 0 -> 6851 bytes + test/text-rotate.quartz.ref.png | Bin 0 -> 17820 bytes + test/text-rotate.ref.png | Bin 0 -> 17775 bytes + test/text-rotate.svg11.ref.png | Bin 0 -> 18301 bytes + test/text-rotate.svg12.ref.png | Bin 0 -> 18301 bytes + test/text-transform-pdf-ref.png | Bin 3796 -> 0 bytes + test/text-transform-ps2-ref.png | Bin 4154 -> 0 bytes + test/text-transform-ps3-ref.png | Bin 4154 -> 0 bytes + test/text-transform-ref.png | Bin 6200 -> 0 bytes + test/text-transform.pdf.ref.png | Bin 0 -> 3796 bytes + test/text-transform.ps2.ref.png | Bin 0 -> 4154 bytes + test/text-transform.ps3.ref.png | Bin 0 -> 4154 bytes + test/text-transform.ref.png | Bin 0 -> 6200 bytes + test/transforms-ps2-ref.png | Bin 418 -> 0 bytes + test/transforms-ps3-ref.png | Bin 418 -> 0 bytes + test/transforms-ref.png | Bin 361 -> 0 bytes + test/transforms.ps2.ref.png | Bin 0 -> 418 bytes + test/transforms.ps3.ref.png | Bin 0 -> 418 bytes + test/transforms.ref.png | Bin 0 -> 361 bytes + test/translate-show-surface-ref.png | Bin 100 -> 0 bytes + test/translate-show-surface.ref.png | Bin 0 -> 100 bytes + test/trap-clip-pdf-argb32-ref.png | Bin 5809 -> 0 bytes + test/trap-clip-pdf-rgb24-ref.png | Bin 5768 -> 0 bytes + test/trap-clip-ps2-argb32-ref.png | Bin 5690 -> 0 bytes + test/trap-clip-ps2-rgb24-ref.png | Bin 5617 -> 0 bytes + test/trap-clip-ps3-argb32-ref.png | Bin 5591 -> 0 bytes + test/trap-clip-ps3-rgb24-ref.png | Bin 5512 -> 0 bytes + test/trap-clip-quartz-ref.png | Bin 6041 -> 0 bytes + test/trap-clip-quartz-rgb24-ref.png | Bin 5385 -> 0 bytes + test/trap-clip-ref.png | Bin 5772 -> 0 bytes + test/trap-clip-rgb24-ref.png | Bin 5365 -> 0 bytes + test/trap-clip.pdf.argb32.ref.png | Bin 0 -> 5809 bytes + test/trap-clip.pdf.rgb24.ref.png | Bin 0 -> 5768 bytes + test/trap-clip.ps2.argb32.ref.png | Bin 0 -> 5690 bytes + test/trap-clip.ps2.rgb24.ref.png | Bin 0 -> 5617 bytes + test/trap-clip.ps3.argb32.ref.png | Bin 0 -> 5591 bytes + test/trap-clip.ps3.rgb24.ref.png | Bin 0 -> 5512 bytes + test/trap-clip.quartz.ref.png | Bin 0 -> 6041 bytes + test/trap-clip.quartz.rgb24.ref.png | Bin 0 -> 5385 bytes + test/trap-clip.ref.png | Bin 0 -> 5772 bytes + test/trap-clip.rgb24.ref.png | Bin 0 -> 5365 bytes + test/twin-ps2-ref.png | Bin 1167 -> 0 bytes + test/twin-ps3-ref.png | Bin 1167 -> 0 bytes + test/twin-ref.png | Bin 1836 -> 0 bytes + test/twin-svg11-ref.png | Bin 1773 -> 0 bytes + test/twin-svg12-ref.png | Bin 1773 -> 0 bytes + test/twin.ps2.ref.png | Bin 0 -> 1167 bytes + test/twin.ps3.ref.png | Bin 0 -> 1167 bytes + test/twin.ref.png | Bin 0 -> 1836 bytes + test/twin.svg11.ref.png | Bin 0 -> 1773 bytes + test/twin.svg12.ref.png | Bin 0 -> 1773 bytes + test/unantialiased-shapes-quartz-ref.png | Bin 4394 -> 0 bytes + test/unantialiased-shapes-ref.png | Bin 4459 -> 0 bytes + test/unantialiased-shapes.quartz.ref.png | Bin 0 -> 4394 bytes + test/unantialiased-shapes.ref.png | Bin 0 -> 4459 bytes + test/unbounded-operator-quartz-ref.png | Bin 4066 -> 0 bytes + test/unbounded-operator-quartz-rgb24-ref.png | Bin 1918 -> 0 bytes + test/unbounded-operator-ref.png | Bin 2777 -> 0 bytes + test/unbounded-operator-rgb24-ref.png | Bin 1315 -> 0 bytes + test/unbounded-operator.quartz.ref.png | Bin 0 -> 4066 bytes + test/unbounded-operator.quartz.rgb24.ref.png | Bin 0 -> 1918 bytes + test/unbounded-operator.ref.png | Bin 0 -> 2777 bytes + test/unbounded-operator.rgb24.ref.png | Bin 0 -> 1315 bytes + test/user-font-mask-pdf-ref.png | Bin 1927 -> 0 bytes + test/user-font-mask-ps2-ref.png | Bin 1927 -> 0 bytes + test/user-font-mask-ps3-ref.png | Bin 1927 -> 0 bytes + test/user-font-mask-ref.png | Bin 6011 -> 0 bytes + test/user-font-mask-svg11-ref.png | Bin 2224 -> 0 bytes + test/user-font-mask.pdf.ref.png | Bin 0 -> 1927 bytes + test/user-font-mask.ps2.ref.png | Bin 0 -> 1927 bytes + test/user-font-mask.ps3.ref.png | Bin 0 -> 1927 bytes + test/user-font-mask.ref.png | Bin 0 -> 6011 bytes + test/user-font-mask.svg11.ref.png | Bin 0 -> 2224 bytes + test/user-font-proxy-pdf-ref.png | Bin 18111 -> 0 bytes + test/user-font-proxy-ps2-ref.png | Bin 8171 -> 0 bytes + test/user-font-proxy-ps3-ref.png | Bin 8171 -> 0 bytes + test/user-font-proxy-ref.png | Bin 18121 -> 0 bytes + test/user-font-proxy-svg11-ref.png | Bin 17902 -> 0 bytes + test/user-font-proxy-svg12-ref.png | Bin 17902 -> 0 bytes + test/user-font-proxy.pdf.ref.png | Bin 0 -> 18111 bytes + test/user-font-proxy.ps2.ref.png | Bin 0 -> 8171 bytes + test/user-font-proxy.ps3.ref.png | Bin 0 -> 8171 bytes + test/user-font-proxy.ref.png | Bin 0 -> 18121 bytes + test/user-font-proxy.svg11.ref.png | Bin 0 -> 17902 bytes + test/user-font-proxy.svg12.ref.png | Bin 0 -> 17902 bytes + test/user-font-ps2-ref.png | Bin 5043 -> 0 bytes + test/user-font-ps3-ref.png | Bin 5043 -> 0 bytes + test/user-font-ref.png | Bin 6183 -> 0 bytes + test/user-font-rescale-ps2-ref.png | Bin 8041 -> 0 bytes + test/user-font-rescale-ps3-ref.png | Bin 8041 -> 0 bytes + test/user-font-rescale-ref.png | Bin 15937 -> 0 bytes + test/user-font-rescale-svg11-ref.png | Bin 15741 -> 0 bytes + test/user-font-rescale-svg12-ref.png | Bin 15741 -> 0 bytes + test/user-font-rescale.ps2.ref.png | Bin 0 -> 8041 bytes + test/user-font-rescale.ps3.ref.png | Bin 0 -> 8041 bytes + test/user-font-rescale.ref.png | Bin 0 -> 15937 bytes + test/user-font-rescale.svg11.ref.png | Bin 0 -> 15741 bytes + test/user-font-rescale.svg12.ref.png | Bin 0 -> 15741 bytes + test/user-font-svg11-ref.png | Bin 6134 -> 0 bytes + test/user-font-svg12-ref.png | Bin 6134 -> 0 bytes + test/user-font.ps2.ref.png | Bin 0 -> 5043 bytes + test/user-font.ps3.ref.png | Bin 0 -> 5043 bytes + test/user-font.ref.png | Bin 0 -> 6183 bytes + test/user-font.svg11.ref.png | Bin 0 -> 6134 bytes + test/user-font.svg12.ref.png | Bin 0 -> 6134 bytes + test/xlib-expose-event-ref.png | Bin 40736 -> 0 bytes + test/xlib-expose-event.c | 4 +- + test/xlib-expose-event.ref.png | Bin 0 -> 40736 bytes + test/xlib-surface-source-ps2-ref.png | Bin 376 -> 0 bytes + test/xlib-surface-source-ps3-ref.png | Bin 376 -> 0 bytes + test/xlib-surface-source-ref.png | Bin 268 -> 0 bytes + test/xlib-surface-source.ps2.ref.png | Bin 0 -> 376 bytes + test/xlib-surface-source.ps3.ref.png | Bin 0 -> 376 bytes + test/xlib-surface-source.ref.png | Bin 0 -> 268 bytes + test/zero-alpha-ref.png | Bin 115 -> 0 bytes + test/zero-alpha.ref.png | Bin 0 -> 115 bytes + 1412 files changed, 782 insertions(+), 752 deletions(-) + +commit e90073f7ddc6f461a935bc360c409b04f1fe9f74 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Sep 3 16:38:03 2008 +0100 + + [test] Build test suite into single binary. + + Avoid calling libtool to link every single test case, by building just one + binary from all the sources. + + This binary is then given the task of choosing tests to run (based on user + selection and individual test requirement), forking each test into its own + process and accumulating the results. + + Makefile.am | 1 + + boilerplate/cairo-boilerplate.c | 658 +++++++++------ + boilerplate/cairo-boilerplate.h | 1 + + build/configure.ac.noversion | 12 + + build/configure.ac.system | 57 ++ + build/configure.ac.version | 8 - + configure.ac | 16 + + doc/public/tmpl/cairo-surface.sgml | 1 + + test/.gitignore | 237 +------ + test/Makefile.am | 572 +++++++------- + test/README | 28 +- + test/a1-image-sample.c | 20 +- + test/a1-mask.c | 38 +- + test/a1-traps-sample.c | 20 +- + test/a8-mask.c | 37 +- + test/alpha-similar.c | 23 +- + test/big-line.c | 22 +- + test/big-trap.c | 22 +- + test/bilevel-image.c | 20 +- + test/bitmap-font.c | 22 +- + test/cairo-test-private.h | 74 ++ + test/cairo-test-runner.c | 907 +++++++++++++++++++++ + test/cairo-test.c | 594 ++++++++------ + test/cairo-test.h | 99 ++- + test/caps-joins-alpha.c | 26 +- + test/caps-joins.c | 27 +- + test/caps-sub-paths.c | 21 +- + test/clip-all.c | 21 +- + test/clip-empty.c | 20 +- + test/clip-fill-rule-pixel-aligned.c | 22 +- + test/clip-fill-rule.c | 20 +- + test/clip-nesting.c | 20 +- + test/clip-operator.c | 21 +- + test/clip-push-group.c | 20 +- + test/clip-twice.c | 20 +- + test/clip-zero.c | 20 +- + test/clipped-group.c | 20 +- + test/clipped-surface.c | 19 +- + test/close-path.c | 18 +- + test/composite-integer-translate-over-repeat.c | 20 +- + test/composite-integer-translate-over.c | 22 +- + test/composite-integer-translate-source.c | 22 +- + test/copy-path.c | 33 +- + test/create-for-stream.c | 53 +- + test/create-from-png-stream.c | 20 +- + test/create-from-png.c | 82 +- + test/dash-caps-joins.c | 26 +- + test/dash-curve.c | 20 +- + test/dash-no-dash.c | 20 +- + test/dash-offset-negative.c | 20 +- + test/dash-scale.c | 26 +- + test/dash-state.c | 22 +- + test/dash-zero-length.c | 20 +- + test/degenerate-arc.c | 20 +- + test/degenerate-dash.c | 20 +- + test/degenerate-path.c | 21 +- + test/degenerate-pen.c | 20 +- + test/device-offset-fractional.c | 20 +- + test/device-offset-positive.c | 20 +- + test/device-offset-scale.c | 21 +- + test/device-offset.c | 20 +- + test/extend-pad.c | 20 +- + test/extend-reflect-similar.c | 22 +- + test/extend-reflect.c | 22 +- + test/extend-repeat-similar.c | 22 +- + test/extend-repeat.c | 22 +- + test/fallback-resolution.c | 28 +- + test/fill-alpha-pattern.c | 20 +- + test/fill-alpha.c | 20 +- + test/fill-and-stroke-alpha-add.c | 20 +- + test/fill-and-stroke-alpha.c | 20 +- + test/fill-and-stroke.c | 20 +- + test/fill-degenerate-sort-order.c | 20 +- + test/fill-missed-stop.c | 19 +- + test/fill-rule.c | 20 +- + test/filter-bilinear-extents.c | 22 +- + test/filter-nearest-offset.c | 21 +- + test/filter-nearest-transformed.c | 19 +- + test/finer-grained-fallbacks.c | 20 +- + test/font-face-get-type.c | 28 +- + test/font-matrix-translation.c | 20 +- + test/font-options.c | 17 +- + test/ft-font-create-for-ft-face.c | 21 +- + test/ft-show-glyphs-positioning.c | 20 +- + test/ft-show-glyphs-table.c | 21 +- + test/ft-text-antialias-none.c | 20 +- + test/ft-text-vertical-layout-type1.c | 23 +- + test/ft-text-vertical-layout-type3.c | 20 +- + test/get-and-set.c | 20 +- + test/get-clip.c | 21 +- + test/get-group-target.c | 20 +- + test/get-path-extents.c | 20 +- + test/get-xrender-format.c | 35 +- + test/glyph-cache-pressure.c | 20 +- + test/gradient-alpha.c | 20 +- + test/gradient-constant-alpha.c | 20 +- + test/gradient-zero-stops.c | 22 +- + test/group-paint.c | 20 +- + test/huge-pattern.c | 21 +- + test/image-surface-source.c | 8 +- + test/in-fill-empty-trapezoid.c | 24 +- + test/in-fill-trapezoid.c | 20 +- + test/infinite-join.c | 22 +- + test/invalid-matrix.c | 20 +- + test/large-clip.c | 22 +- + test/large-font.c | 22 +- + test/large-source.c | 20 +- + test/leaky-dash.c | 22 +- + test/leaky-dashed-rectangle.c | 20 +- + test/leaky-dashed-stroke.c | 20 +- + test/leaky-polygon.c | 20 +- + test/line-width-scale.c | 20 +- + test/line-width-zero.c | 20 +- + test/line-width.c | 20 +- + test/linear-gradient-reflect.c | 21 +- + test/linear-gradient.c | 20 +- + test/long-dashed-lines.c | 20 +- + test/long-lines.c | 24 +- + test/make-cairo-test-constructors.pl | 18 + + test/mask-alpha.c | 20 +- + test/mask-ctm.c | 21 +- + test/mask-surface-ctm.c | 20 +- + test/mask-transformed-image.c | 19 +- + test/mask-transformed-similar.c | 19 +- + test/mask.c | 23 +- + test/meta-surface-pattern.c | 20 +- + test/miter-precision.c | 22 +- + test/move-to-show-surface.c | 20 +- + test/multi-page.c | 30 +- + test/new-sub-path.c | 22 +- + test/nil-surface.c | 20 +- + test/operator-alpha.c | 21 +- + test/operator-clear.c | 20 +- + test/operator-source.c | 20 +- + test/operator.c | 21 +- + test/over-above-source.c | 20 +- + test/over-around-source.c | 20 +- + test/over-below-source.c | 20 +- + test/over-between-source.c | 20 +- + test/paint-repeat.c | 20 +- + test/paint-source-alpha.c | 20 +- + test/paint-with-alpha.c | 20 +- + test/paint.c | 20 +- + test/pattern-get-type.c | 21 +- + test/pattern-getters.c | 20 +- + test/pdf-features.c | 31 +- + test/pdf-surface-source.c | 10 +- + test/pixman-rotate.c | 20 +- + test/png.c | 56 +- + test/ps-features.c | 29 +- + test/ps-surface-source.c | 10 +- + test/pthread-show-text.c | 41 +- + test/push-group.c | 20 +- + test/radial-gradient.c | 22 +- + test/random-intersections.c | 21 +- + test/rectangle-rounding-error.c | 22 +- + test/rectilinear-fill.c | 20 +- + test/rectilinear-miter-limit.c | 20 +- + test/rectilinear-stroke.c | 21 +- + test/reflected-stroke.c | 21 +- + test/rel-path.c | 20 +- + test/rgb24-ignore-alpha.c | 20 +- + test/rotate-image-surface-paint.c | 22 +- + test/scale-down-source-surface-paint.c | 20 +- + test/scale-source-surface-paint.c | 20 +- + test/select-font-face.c | 28 +- + test/select-font-no-show-text.c | 20 +- + test/self-copy-overlap.c | 22 +- + test/self-copy.c | 20 +- + test/self-intersecting.c | 22 +- + test/set-source.c | 20 +- + test/show-glyphs-many.c | 20 +- + test/show-text-current-point.c | 22 +- + test/skew-extreme.c | 20 +- + test/smask-fill.c | 20 +- + test/smask-image-mask.c | 20 +- + test/smask-mask.c | 20 +- + test/smask-paint.c | 20 +- + test/smask-stroke.c | 20 +- + test/smask-text.c | 20 +- + test/smask.c | 20 +- + test/solid-pattern-cache-stress.c | 20 +- + test/source-clip-scale.c | 20 +- + test/source-clip.c | 20 +- + test/source-surface-scale-paint.c | 20 +- + test/spline-decomposition.c | 20 +- + test/stroke-ctm-caps.c | 20 +- + test/stroke-image.c | 20 +- + test/surface-finish-twice.c | 20 +- + test/surface-pattern-big-scale-down.c | 20 +- + test/surface-pattern-scale-down-pdf-rgb24-ref.png | Bin 0 -> 2386 bytes + test/surface-pattern-scale-down.c | 21 +- + test/surface-pattern-scale-up.c | 21 +- + test/surface-pattern.c | 24 +- + test/surface-source.c | 15 +- + test/svg-clip.c | 26 +- + test/svg-surface-source.c | 11 +- + test/svg-surface.c | 26 +- + test/text-antialias-gray.c | 20 +- + test/text-antialias-none.c | 20 +- + test/text-antialias-subpixel.c | 20 +- + test/text-cache-crash.c | 40 +- + test/text-glyph-range-ps2-ref.png | Bin 0 -> 1389 bytes + test/text-glyph-range-ps3-ref.png | Bin 0 -> 1389 bytes + test/text-glyph-range-ref.png | Bin 1810 -> 2211 bytes + test/text-glyph-range-rgb24-ref.png | Bin 1645 -> 0 bytes + test/text-glyph-range.c | 62 +- + test/text-pattern.c | 54 +- + test/text-rotate.c | 22 +- + test/text-transform.c | 22 +- + test/text-zero-len.c | 20 +- + test/toy-font-face.c | 16 +- + test/transforms.c | 20 +- + test/translate-show-surface.c | 20 +- + test/trap-clip.c | 22 +- + test/truetype-tables.c | 18 +- + test/twin.c | 20 +- + test/unantialiased-shapes.c | 20 +- + test/unbounded-operator.c | 20 +- + test/user-data.c | 17 +- + test/user-font-mask.c | 28 +- + test/user-font-proxy.c | 28 +- + test/user-font-rescale.c | 20 +- + test/user-font.c | 28 +- + test/xlib-expose-event.c | 28 +- + test/xlib-surface-source.c | 8 +- + test/xlib-surface.c | 36 +- + test/zero-alpha.c | 20 +- + 228 files changed, 3770 insertions(+), 4123 deletions(-) + +commit 8457972d40088cda165f31fdd7bd9b4c19c6e095 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 02:16:54 2008 +0000 + + [type3] Whitespace. + + Tightly scope the output stream. + + src/cairo-type3-glyph-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 08f4d49a9464bc19bc2ca7f2356a6eb8d62f5daf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 02:03:41 2008 +0000 + + [xlib] Intialise clip_dirty. + + Eeek, forgot to set the clip_dirty to 0 on construction. + + src/cairo-xlib-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit b722d5b2b988d43931648d8377a9433d75f7d95f +Merge: 05fce5b 710f7d3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 02:24:25 2008 +0000 + + Merge branch '1.8' + +commit 710f7d30d348517602293f123525aef7677d69cf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 31 02:14:53 2008 +0000 + + [scaled-font] Fix typo that prevented meta_surface lookup. + + test/text-glyph-range was crashing since we requested the meta_surface but + the glyph wrongly believed it already had the meta_surface but was + checking for a path instead. + + src/cairo-scaled-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 05fce5bced9718ffa803f5a87df00f96809d1f53 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Apr 5 13:32:51 2008 +1030 + + PS/PDF: Set image Interpolation flag + + If the filter mode is anything other than DEFAILT, FAST or NEAREST set the + Interpolate flag in the image dictionary so that a smoothing filter is + applied when rasterising the vector file. + + As we have no control over the implementation of the Interpolate filter + (the PS/PDF specifications leave it undefined) we need to capture the + output of poppler/GS and update our reference images. (For a couple of + tests, the filtering is irrelevant so for those we set the filter to + NEAREST.) + + Note that GhostScript's Interpolate filter does not work on rotated images + (and a variety of other transformations) so several of the PS reference + images have use nearest-neighbour sampling instead of a bilinear filter. + + src/cairo-pdf-surface.c | 28 ++++++++-- + src/cairo-ps-surface.c | 28 +++++++++- + test/Makefile.am | 54 ++++++++++++++------ + test/bilevel-image.c | 1 + + test/composite-integer-translate-over-ps2-ref.png | Bin 0 -> 15783 bytes + test/composite-integer-translate-over-ps3-ref.png | Bin 0 -> 15783 bytes + ...osite-integer-translate-over-repeat-ps2-ref.png | Bin 0 -> 448 bytes + ...osite-integer-translate-over-repeat-ps3-ref.png | Bin 0 -> 448 bytes + .../composite-integer-translate-source-ps2-ref.png | Bin 0 -> 15783 bytes + .../composite-integer-translate-source-ps3-ref.png | Bin 0 -> 15783 bytes + test/create-from-png-stream.c | 1 + + test/create-from-png.c | 1 + + test/device-offset-fractional-ps2-ref.png | Bin 201 -> 200 bytes + test/device-offset-fractional-ps3-ref.png | Bin 201 -> 200 bytes + test/extend-reflect-ps2-ref.png | Bin 153322 -> 146990 bytes + test/extend-reflect-ps3-ref.png | Bin 153322 -> 146990 bytes + test/extend-reflect-similar-ps2-ref.png | Bin 153322 -> 146990 bytes + test/extend-reflect-similar-ps3-ref.png | Bin 153322 -> 146990 bytes + test/extend-repeat-ps2-ref.png | Bin 0 -> 119246 bytes + test/extend-repeat-ps3-ref.png | Bin 0 -> 119246 bytes + test/extend-repeat-similar-ps2-ref.png | Bin 0 -> 119246 bytes + test/extend-repeat-similar-ps3-ref.png | Bin 0 -> 119246 bytes + test/filter-bilinear-extents-ps2-ref.png | Bin 173 -> 556 bytes + test/filter-bilinear-extents-ps3-ref.png | Bin 173 -> 556 bytes + test/image-surface-source-ps2-ref.png | Bin 0 -> 376 bytes + test/image-surface-source-ps3-ref.png | Bin 0 -> 376 bytes + test/image-surface-source-ref.png | Bin 268 -> 332 bytes + test/stroke-image-ps2-ref.png | Bin 1786 -> 2121 bytes + test/stroke-image-ps3-ref.png | Bin 1786 -> 2121 bytes + test/surface-pattern-pdf-argb32-ref.png | Bin 14880 -> 0 bytes + test/surface-pattern-pdf-ref.png | Bin 0 -> 15996 bytes + test/surface-pattern-ps2-argb32-ref.png | Bin 2520 -> 0 bytes + test/surface-pattern-ps2-ref.png | Bin 0 -> 2364 bytes + test/surface-pattern-ps3-argb32-ref.png | Bin 2520 -> 0 bytes + test/surface-pattern-ps3-ref.png | Bin 0 -> 2364 bytes + test/surface-pattern-scale-down-pdf-argb32-ref.png | Bin 1565 -> 2386 bytes + test/surface-pattern-scale-down-ps2-argb32-ref.png | Bin 1400 -> 0 bytes + test/surface-pattern-scale-down-ps2-ref.png | Bin 0 -> 1324 bytes + test/surface-pattern-scale-down-ps3-argb32-ref.png | Bin 1400 -> 0 bytes + test/surface-pattern-scale-down-ps3-ref.png | Bin 0 -> 1324 bytes + test/surface-pattern-scale-down.c | 3 +- + test/surface-pattern-scale-up-pdf-argb32-ref.png | Bin 3886 -> 4247 bytes + test/surface-pattern-scale-up-pdf-rgb24-ref.png | Bin 0 -> 4247 bytes + test/surface-pattern-scale-up-ps2-argb32-ref.png | Bin 1011 -> 0 bytes + test/surface-pattern-scale-up-ps2-ref.png | Bin 0 -> 943 bytes + test/surface-pattern-scale-up-ps3-argb32-ref.png | Bin 1011 -> 0 bytes + test/surface-pattern-scale-up-ps3-ref.png | Bin 0 -> 943 bytes + test/surface-pattern-scale-up-ref.png | Bin 3825 -> 4061 bytes + test/surface-pattern-scale-up.c | 6 ++- + test/surface-pattern.c | 6 ++- + test/xlib-surface-source-ps2-ref.png | Bin 0 -> 376 bytes + test/xlib-surface-source-ps3-ref.png | Bin 0 -> 376 bytes + 52 files changed, 98 insertions(+), 30 deletions(-) + +commit 2c53bdb82a955c672c8fee2b1b4c991af2654ae0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 21:12:53 2008 +0100 + + [paginated] Emit fallback images using FILTER_NEAREST. + + Fallback images should (in theory) be emitted at native resolution, so + disable filtering to avoid introducing potential artifacts into cairo's + ideal output. + + src/cairo-paginated-surface.c | 13 ++++++++----- + 1 files changed, 8 insertions(+), 5 deletions(-) + +commit f03d3f9f7f923730cdc4c5f21364f752f705086a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 19:24:29 2008 +0000 + + [boilerplate] Remove #if VERSION>1.9.0 + + Remove the obsolete #if statement. + + boilerplate/cairo-boilerplate.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit ef98eb26f7484019b023cd4c93dce44f23e3a594 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 19:23:17 2008 +0000 + + [test] Reenable device offset testing. + + Restore device offset testing that was temporarily disable in the run up + to the 1.8 release. + + test/cairo-test.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 4f2f46ef1bd793a712df045178b3d00d027e3ba6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 19:14:07 2008 +0000 + + Restore the ability to choose the internal font. + + Behdad wants to include the feature with 1.10, so we enable it as early as + possible in 1.9 dev cycle to generate as much feedback as possible. + + The first change is to use "<cairo>" as being a name unlikely to clash + with any real font names. + + This reverts commits: + a824d284be23793a5c48b9ae833dcb7b2d5fff80, + 292233685534aed712dfd45e8ccf498b792ce496, + e0046aaf417a61da008dc6374871fa3687ba94ab, + f534bd549e1e2283735d1eabb60c015a5949a735. + + perf/Makefile.am | 1 + + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/twin.c | 50 +++++++++++++++++++++++++++++++++++++++ + src/cairo-font-face.c | 6 +++- + src/cairoint.h | 1 + + test/.gitignore | 1 + + test/Makefile.am | 6 ++++ + test/twin-ps2-ref.png | Bin 0 -> 1167 bytes + test/twin-ps3-ref.png | Bin 0 -> 1167 bytes + test/twin-ref.png | Bin 0 -> 1836 bytes + test/twin-svg11-ref.png | Bin 0 -> 1773 bytes + test/twin-svg12-ref.png | Bin 0 -> 1773 bytes + test/twin.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++ + 14 files changed, 125 insertions(+), 2 deletions(-) + +commit 52c3fc58b52c77282998f9ad75657a6bec5956f8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 13:04:37 2008 +0100 + + [tessellator] Simplify dequeuing by using a sentinel value. + + Instead of maintaining an index and comparing it to the count, just mark + the last startstop event with NULL and stop dequeuing events upon seeing + that sentinel value. (Removes an unreadable line, and cachegrind hints + that it may be a tiny bit faster.) + + src/cairo-bentley-ottmann.c | 32 ++++++++++++++++---------------- + 1 files changed, 16 insertions(+), 16 deletions(-) + +commit ef9e0a5d1d74ac92a1fcde5a657c866a8e6509e6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 22:09:37 2008 +0100 + + [tessellator] Use a combsort for sorting the event queue. + + In my experiments using cairo-perf, the inlined combsort is ~20% quicker + than the library qsort. + + src/Makefile.sources | 1 + + src/cairo-bentley-ottmann.c | 39 ++++++++++++----------- + src/cairo-combsort-private.h | 71 ++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 92 insertions(+), 19 deletions(-) + +commit b1461308416fa83d1de0016a9d4804b68a1f1d8f +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Oct 30 14:18:18 2008 -0400 + + [Makefile.am.releasing] Symlink /manual and /cairo-manual.tar.gz only for releases + + And not for snapshots. Also symlink /cairo-manual-X.Y.Z.tar.gz for all + versions. + + build/Makefile.am.releasing | 13 +++++++++++-- + 1 files changed, 11 insertions(+), 2 deletions(-) + +commit e3a7f522a6b96729b2a0122f8c430c24dc17fc5a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 23:33:32 2008 +0100 + + [tessellator] Perform cheap checks before computing intersect. + + First check if we can reject the intersection without having to perform + the full divides, based on analysing: + t * (ady*bdx - bdy*adx) = bdy * (ax - bx) - bdx * (ay - by) + s * (ady*bdx - bdy*adx) = ady * (ax - bx) - adx * (ay - by) + and excluding the result if by inspection we know that + (s, t) <= 0 || (s, t) => 1. + + Doing so virtually eliminates all division and speeds up the strokes (when + performing self-intersection elimination using the tessellator) perf cases + by about 5%. + + src/cairo-bentley-ottmann.c | 51 ++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 50 insertions(+), 1 deletions(-) + +commit 553fde4bb3e913de7e26bf416166d69bae4d02e1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 4 13:15:08 2008 +0100 + + [tessellator] Simplify special cases of edges to compare. + + Use our prior knowledge of the inputs and trivial conditions to simplify + the edge equations and in many common conditions, such as vertical edges + and common points, reduce the operations down to a just returning the + non-degenerate 32 bit value. This adds an overhead of a few conditionals, + but on the fast paths we actually generate fewer branches and many fewer + arithmetic operations such that it improves performance of the fill + performance tests by around 10%. + + src/cairo-bentley-ottmann.c | 136 ++++++++++++++++++++++++++++++++++--------- + 1 files changed, 108 insertions(+), 28 deletions(-) + +commit cc109df2a70e953d71e3e6fc4e6e54cce4ba0d47 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 15:50:20 2008 +0000 + + [test] Update .gitignore + + Add a couple of new programs to gitignore. + + test/.gitignore | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 7d546bba213c3b89404bb3c58a5665343abfcd51 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 29 15:46:10 2008 +0000 + + [xlib] Eliminate shadowed variable. + + Cleanup a minor -Wshadow warning. + + src/cairo-xlib-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit e3388b8180e38f79e0d5b66cc640c3d5c37db2a8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 29 15:45:09 2008 +0000 + + [cff-subset] Eliminate shadowed variable. + + Cleanup a minor -Wshadow warning. + + src/cairo-cff-subset.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 3e18114aff21acfa73a7d13a419719375ae9b5a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 29 15:43:23 2008 +0000 + + [user-font] Eliminate shadowed variable + + Cleanup a minor -Wshadow warning. + + src/cairo-user-font.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit d073537e82b57738068a7e1cf1d36ce452876804 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 29 15:41:44 2008 +0000 + + [scaled-font] Eliminate shadowed variable. + + Cleanup a minor -Wshadow warning. + + src/cairo-scaled-font.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit 6429e3f39468ef4f865681b3b5988d35906deeb0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 17:38:09 2008 +0000 + + [xlib] Only set Picture clip as necessary. + + Only set ClipRectangles on a new Picture, avoiding redundant calls to + clear the non-existent ClipMask otherwise. + + src/cairo-xlib-surface.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit cd45258c5bf6a06f7bd3f2bfaf928e423a9b70e1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 16:54:10 2008 +0000 + + [xlib] Only clear the GC clip mask as necessary. + + Avoid redundant calls to XSetClipMask() for clean GCs. + + src/cairo-xlib-private.h | 10 ++++++++-- + src/cairo-xlib-screen.c | 8 ++++++-- + src/cairo-xlib-surface.c | 7 ++++--- + 3 files changed, 18 insertions(+), 7 deletions(-) + +commit d384f864992fbf7513446a70158135a08e704678 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 16:33:51 2008 +0000 + + [xlib] Propagate real status from get_screen_info(). + + Return the real error from _cairo_xlib_screen_info_get() in order to avoid + having to create a fake NO_MEMORY error. + + src/cairo-xlib-private.h | 6 +++- + src/cairo-xlib-screen.c | 66 +++++++++++++++++++++++++-------------------- + src/cairo-xlib-surface.c | 6 ++-- + 3 files changed, 44 insertions(+), 34 deletions(-) + +commit e25b106e9c33e220fb104afb0929e766647b6de9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 16:27:58 2008 +0000 + + [xlib] Propagate real status from get_display() + + Avoid throwing away the error and inventing a new NO_MEMORY error for + _cairo_xlib_display_get(). + + src/cairo-xlib-display.c | 13 ++++++++----- + src/cairo-xlib-private.h | 4 ++-- + src/cairo-xlib-surface.c | 14 ++++++++------ + 3 files changed, 18 insertions(+), 13 deletions(-) + +commit 2555f83b11ee23829cfdeaae703420ca3e572fa1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 16:22:49 2008 +0000 + + [xlib] Avoid repeated calls to XRenderQueryVersion + + Use the value determined during display initialisation in order to avoid + redundant XRenderQueryFormats requests. + + src/cairo-xlib-display.c | 6 ++++-- + src/cairo-xlib-private.h | 2 ++ + src/cairo-xlib-surface.c | 7 ++----- + 3 files changed, 8 insertions(+), 7 deletions(-) + +commit 0d0c6a199c5b631299c72dce80d66ac0f4936a64 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 26 12:53:29 2008 +0000 + + [matrix] Optimise invert for simple scaling|translation matrices. + + The matrix is quite often just a simple scale and translate (or even + identity!). For this class of matrix, we can skip the full adjoint + rearrangement and determinant calculation and just compute the inverse + directly. + + src/cairo-matrix.c | 26 +++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletions(-) + +commit 74876b00cd969d5cfc209fa903dfad50bda59361 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 25 11:33:52 2008 +0100 + + [xlib] Exploit compaction of XRenderFillRectangle() + + libXrender amalgamates sequences of XRenderFillRectangle() into a single + XRenderFillRectangles request (when permissible). Since it is common for a + cairo application to draw rectangles individually in order to exploit fast + paths within cairo [rectilinear fills], it is a reasonably common pattern. + + src/cairo-xlib-surface.c | 50 +++++++++++++++++++++++++++++---------------- + 1 files changed, 32 insertions(+), 18 deletions(-) + +commit 64726ccfb99ba964420f3a840fd707998927e902 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 24 17:06:04 2008 +0100 + + [traps] Whitespace. + + Fixup whitespace in line with CODING_STYLE and rest of file. + + src/cairo-region.c | 6 +++--- + src/cairo-traps.c | 33 ++++++++++++++++++++------------- + 2 files changed, 23 insertions(+), 16 deletions(-) + +commit d5543005e7b7cc08f97578f301182ef4807a05fe +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 24 09:00:45 2008 +0100 + + [surface] Only copy font options if the target surface has them. + + No need to copy font options if the similar surface is from the same + backend and no special options have been applied by the user. Doing so + breaks lazy initialisation of backend specific options. + + src/cairo-surface.c | 18 +++++++++++------- + 1 files changed, 11 insertions(+), 7 deletions(-) + +commit a0023758104b700751ba8d7a66d75db139eea6cb +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 24 08:39:29 2008 +0100 + + [xlib] Defer querying of font options until first use + + Constructing the font options cause the initialisation of Xlc and invoke + several round-trips to the X server, significantly delaying the creation + of the first surface. By deferring that operation until the first use of + fonts then we avoid that overhead for very simple applications (like the + test suite) and should improve start-up latency for larger application. + + src/cairo-xlib-private.h | 4 ++++ + src/cairo-xlib-screen.c | 28 +++++++++++++++++++++++++--- + src/cairo-xlib-surface.c | 2 +- + 3 files changed, 30 insertions(+), 4 deletions(-) + +commit 6706590d4e7ad19dae0b8e3efe6f573d5688e19a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 16:22:48 2008 +0100 + + [pattern] Reduce likelihood of range overflow with large downscaling. + + Exploit the auxiliary offset vector in the attributes to reduce + likelihood of range overflow in the translation components when converting + the pattern matrix to fixed-point pixman_matrix_t. + + An example of this is bug 9148 + Bug 9148 - invalid rendering when painting large scaled-down surfaces + (https://bugs.freedesktop.org/show_bug.cgi?id=9148) + but the issue is perhaps even more likely with high resolution fallback + images. + + src/cairo-pattern.c | 19 +++++++++++++++++++ + 1 files changed, 19 insertions(+), 0 deletions(-) + +commit c0af8c70635d641fc5770afc0cd6e9285122fd72 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 16:49:23 2008 +0100 + + [pattern] Tweak REFLECT HACK + + In order to workaound a directfb bug, tweak the reflect->repeat pattern so + that it covers the destination rectangle. Although the number of paint() + increases, the number of read/written pixels remain the same so that + performance should not deteriorate, but instead be improved by using a + cloned source. The early return of the REFLECT surface is discarded so + that the latter optimisations for surface sources can be applied. One side + effect of this is that acquire_source_image() is removed due to its lax + reference counting which thereby exposes the ROI optimisations for image + destinations as well. + + src/cairo-pattern.c | 279 +++++++++++++++++++++++++-------------------------- + src/cairoint.h | 1 - + 2 files changed, 136 insertions(+), 144 deletions(-) + +commit 234623b3d5884b02a0619de8ddd57bbed36ef4fd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 14:55:26 2008 +0100 + + [pattern] Support unbounded surfaces. + + An unbounded surface should just report an infinite pattern extent and not + return UNSUPPORTED from _cairo_pattern_get_extents(). + + src/cairo-pattern.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 2836be6f7565684e86b3cc8a3d2db4ba690b3718 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 14:42:47 2008 +0100 + + Cleanup 'status && status != UNSUPPORTED' + + Replace instances of 'status && status != UNSUPPORTED' with the more + readable _cairo_status_is_error(). + + src/cairo-analysis-surface.c | 14 +++++++------- + src/cairo-clip.c | 4 ++-- + src/cairo-pdf-surface.c | 8 ++++---- + src/cairo-ps-surface.c | 4 ++-- + src/cairo-scaled-font-subsets.c | 4 ++-- + 5 files changed, 17 insertions(+), 17 deletions(-) + +commit 13ba43eb8ffc3bb6c8881d91824102a8df86d928 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 12:28:25 2008 +0100 + + [matrix] Optimize finding the bounding box under an orthogonal matrix. + + We frequently need to find the bounds of a pattern under an identity + matrix, or a simple scale+translation. For these cases we do not need to + transform each corner and search for the bounds as the matrix is x/y + separable and so allows us to inspect the results for the extreme x/y + points independently. + + src/cairo-matrix.c | 42 +++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 41 insertions(+), 1 deletions(-) + +commit 6ed957fc242d7890117f4dea121c03ec2523470c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 22:02:05 2008 +0100 + + [gstate] Use _cairo_pattern_black for the default source. + + Avoid allocating a default source pattern by using the static black pattern + object. The one complication is that we need to ensure that the static + pattern does leak to the application, so we replace it with an allocated + solid pattern within _cairo_gstate_get_source(). + + src/cairo-gstate.c | 9 +++++++-- + src/cairo-pattern.c | 12 +++++++----- + src/cairo.c | 6 +++--- + src/cairoint.h | 2 +- + 4 files changed, 18 insertions(+), 11 deletions(-) + +commit 794460186459981cd43ca38f3eba07e3f6bf8908 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 19:24:44 2008 +0100 + + [pattern] Avoid needless copying of patterns. + + Only copy the pattern if we need to modify it, e.g. preserve a copy in a + snapshot or a soft-mask, or to modify the matrix. Otherwise we can + continue to use the original pattern and mark it as const in order to + generate compiler warnings if we do attempt to write to it. + + src/cairo-analysis-surface.c | 37 ++++---- + src/cairo-directfb-surface.c | 33 +++---- + src/cairo-glitz-surface.c | 42 ++++----- + src/cairo-gstate.c | 117 ++++++++++++++-------- + src/cairo-image-surface.c | 6 +- + src/cairo-meta-surface.c | 12 +- + src/cairo-paginated-surface.c | 12 +- + src/cairo-pattern.c | 70 +++++-------- + src/cairo-pdf-surface.c | 88 +++++++++++------ + src/cairo-ps-surface.c | 39 ++++---- + src/cairo-quartz-surface.c | 10 +-- + src/cairo-scaled-font.c | 2 +- + src/cairo-sdl-surface.c | 22 ++-- + src/cairo-surface-fallback-private.h | 45 +++++---- + src/cairo-surface-fallback.c | 65 ++++++------ + src/cairo-surface.c | 181 ++++++++++++++++++++------------- + src/cairo-svg-surface.c | 50 +++++----- + src/cairo-type3-glyph-surface.c | 18 ++-- + src/cairo-win32-font.c | 26 +++--- + src/cairo-win32-printing-surface.c | 51 +++++----- + src/cairo-win32-private.h | 2 +- + src/cairo-win32-surface.c | 6 +- + src/cairo-xcb-surface.c | 42 ++++---- + src/cairo-xlib-surface.c | 14 ++-- + src/cairoint.h | 74 +++++++------- + src/test-meta-surface.c | 28 +++--- + src/test-paginated-surface.c | 40 ++++---- + 27 files changed, 605 insertions(+), 527 deletions(-) + +commit 9d2189afbd2aa1413f620a4d35016ef3be3fc0e9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 18:29:02 2008 +0100 + + [pattern] Do not recompute the inverse if setting an identical matrix. + + More micro-optimisation. + + src/cairo-pattern.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 2c277ddbea42222130b8b1c2a2b4934503b40188 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 18:17:49 2008 +0100 + + [matrix] Avoid error correction overhead for translation matrices. + + We can only correct rounding errors between cairo and pixman matrices for + scaled matrices - so skip the inversion and point transformation overhead + for simple translation matrices. + + src/cairo-matrix.c | 11 ++++++++--- + 1 files changed, 8 insertions(+), 3 deletions(-) + +commit 57a1d932f3e9d79f3259a536ec2f45f020d46de5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 18:12:10 2008 +0100 + + [array] Rearrange user_data_fini() to optimize common case. + + Micro-optimisation to avoid the _cairo_array_index() for the common case + of 0 elements. + + src/cairo-array.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +commit 2852127c72fa6cfe246e6ece0433be6c3f2a93ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 18:04:30 2008 +0100 + + [cairoint] Add a few cairo_pure. + + Start marking up the prototypes with function attributes - first the + obvious pure functions. + + src/cairoint.h | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit cf072c7203dfce989ee60e56352f548329d3d616 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 14:35:49 2008 +0000 + + [sdl] Add new backend. + + Add a new backend to allow easy interoperability with the Simple + DirectMedia Layer. + + boilerplate/Makefile.sources | 3 + + boilerplate/cairo-boilerplate-sdl-private.h | 56 ++++ + boilerplate/cairo-boilerplate-sdl.c | 69 +++++ + boilerplate/cairo-boilerplate.c | 13 + + build/configure.ac.features | 1 + + configure.ac | 8 + + src/Makefile.sources | 3 + + src/cairo-sdl-surface.c | 418 +++++++++++++++++++++++++++ + src/cairo-sdl.h | 54 ++++ + src/cairo.h | 4 +- + 10 files changed, 628 insertions(+), 1 deletions(-) + +commit 31ada1ea15d14c0a843728b105340c270e4e4613 +Merge: 30f2df1 ab15d76 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 16:56:07 2008 +0000 + + Merge branch '1.8' + +commit ab15d7627506a837fea7101661425bb923ef5b4f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 16:54:23 2008 +0000 + + [test] Remove XFAIL from user-font-mask + + user-font-mask should PASS modulo the scaling anomalies in the external + renderers, so remove it from the XFAIL list. + + test/Makefile.am | 15 ++++++--------- + test/user-font-mask-pdf-ref.png | Bin 0 -> 1927 bytes + test/user-font-mask-ps2-ref.png | Bin 0 -> 1927 bytes + test/user-font-mask-ps3-ref.png | Bin 0 -> 1927 bytes + test/user-font-mask-svg11-ref.png | Bin 0 -> 2224 bytes + 5 files changed, 6 insertions(+), 9 deletions(-) + +commit 540f555840ba4076e3ab86669daf9bee5695afa2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 14:38:44 2008 +0100 + + [analysis] Only limit to mask extends if bounded by mask. + + The extents of cairo_mask() is only limited to the mask if the operation + is bounded by the mask. + + src/cairo-analysis-surface.c | 8 ++++++-- + test/clip-operator-pdf-argb32-ref.png | Bin 11145 -> 12125 bytes + test/clip-operator-pdf-rgb24-ref.png | Bin 6530 -> 7367 bytes + test/operator-clear-pdf-argb32-ref.png | Bin 1438 -> 1614 bytes + test/operator-clear-pdf-rgb24-ref.png | Bin 1170 -> 1402 bytes + test/operator-source-pdf-argb32-ref.png | Bin 4694 -> 5149 bytes + test/operator-source-pdf-rgb24-ref.png | Bin 3848 -> 4354 bytes + 7 files changed, 6 insertions(+), 2 deletions(-) + +commit 4b2998893930e4bab19646e6f0a0c8d2a47f12a2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 14:34:30 2008 +0100 + + Review users of cairo_rectangle_int_t for incorrect unsigned promotion. + + Adrian Johnson discovered cases where we mistakenly compared the result + of unsigned arithmetic where we need signed quantities. Look for similar + cases in the users of cairo_rectangle_int_t. + + src/cairo-analysis-surface.c | 48 ++++++++++++++++++++++------------- + src/cairo-clip.c | 43 ++++++++++++++++--------------- + src/cairo-gstate.c | 4 +- + src/cairo-pattern.c | 13 ++++++--- + src/cairo-rectangle.c | 6 +++- + src/cairo-region-private.h | 3 +- + src/cairo-region.c | 3 +- + src/cairo-surface-fallback.c | 31 +++++++++++++++-------- + src/cairo-surface.c | 27 +++++++++++--------- + src/cairo-win32-surface.c | 4 +- + src/cairo-xcb-surface.c | 56 +++++++++++++---------------------------- + src/cairo-xlib-surface.c | 52 ++++++++++++-------------------------- + src/cairoint.h | 2 +- + 13 files changed, 144 insertions(+), 148 deletions(-) + +commit 0e4156121f05b14f800289ea34c5382de1f20869 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 13:37:41 2008 +0100 + + [rectangle] Fix unsigned promotion whilst computing intersect. + + _cairo_rectangle_intersect() incorrectly allows unsigned promotion during + its arithmetic. + + src/cairo-rectangle.c | 31 +++++++++++++++++-------------- + src/cairoint.h | 3 ++- + 2 files changed, 19 insertions(+), 15 deletions(-) + +commit 2464b8a0a9f7db7421c257eb4e3ac0d98af34761 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 13:36:19 2008 +0100 + + [pattern] Allow the projected surface extents to be negative. + + In order to handle projection of analysis surface with user-fonts we need + to accommodate patterns extending into negative coordinate space. + + src/cairo-pattern.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit d5d29075bdbb7f412fa6dc182573da18fd81af54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 23 15:24:13 2008 +0100 + + [gstate] Allocate temporary variable for backend_to_user transform. + + _cairo_gstate_backend_to_user_rectangle() requires that its input + arguments are non-NULL and describe the input rectangle to be transformed. + However, we were passing through output parameters from the public API + which were allowed to be NULL. So we need to allocate temporary variables + in which to compute the output rectangle, but only copy them as required. + + src/cairo-gstate.c | 69 +++++++++++++++++++++++++++++++++++++-------------- + 1 files changed, 50 insertions(+), 19 deletions(-) + +commit 30f2df1dec419a10408b53ecd26cebfcf607bf27 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 30 08:40:35 2008 -0700 + + Fix typo in bug URL. + + Thanks to AndrewR in IRC for pointing out the typo. + + NEWS | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b598dcd1b1726184506de6a9d253f6091a000922 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 30 08:29:51 2008 -0700 + + Fix release-publish to also update the current manual. + + That is, the vesion that appears as: + + http://cairographics.org/manual + and: + http://cairographics.org/cairo-manual.tar.gz + + It was silly that we previously required a manual step to + upload the documentation (which we regularly forgot to do) + and that it uploaded with a date in the name rather than a + version. So we just drop the old doc-publish Makefile target + now as it's just not useful anymore. + + RELEASING | 3 ++- + build/Makefile.am.releasing | 18 ++++-------------- + 2 files changed, 6 insertions(+), 15 deletions(-) + +commit 91183a503e3b7bed11e0149783d3974e26daf623 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 30 08:26:55 2008 -0700 + + RELEASING: Mention that a versioned manual is uploaded. + + RELEASING | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 5037fa238e820419824773fa2ea475c949e23a8c +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 30 08:23:06 2008 -0700 + + Increment version to 1.9.1 + + We're finalyl opening the 1.9 development series in order to land + lots of exciting new features that people have been working on. + + cairo-version.h | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit d53537e8b5e3a8345983d8a0529cb230fa2886d1 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Oct 30 08:20:59 2008 -0700 + + Increment version to 1.8.3 after the 1.8.2 release. + + Thanks to Chris Wilson (who else?) for the last-minute bug fix. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f7c958d97221375fdcbb6c58c3b58c07676b7589 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 21:02:04 2008 -0700 + + Increment cairo version to 1.8.2. + + Hurrah! We're finally there. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 42711a5586cba5db5451ce2400ee5fe655700391 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 09:54:47 2008 +0000 + + [xlib] Fix _draw_image_surface() with opaque images. + + If the image was opaque with no alpha channel, we filled the output alpha + with 0. Typically, the destination surface for dithering is an RGB window, + so this bug went unnoticed. However, test/xlib-expose-event is an example + where we generate an intermediate alpha-only pixmap for use as a stencil + and this was failing as the mask was left completely transparent. The + simple solution is to ensure that for opaque images, the output alpha is + set to the maximum permissible value. + + src/cairo-xlib-surface.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit c3940d342ac506055c2ce6b7e9b27f92d8a63999 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 09:59:48 2008 +0000 + + [xlib] whitespace + + Tweak the whitespace to lose some unnecessary line wrapping, casts and + blanks. + + src/cairo-xlib-surface.c | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit e51648b601de274559800c63575c7f7e0288f596 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Oct 30 04:43:45 2008 -0400 + + [test/xlib-expose-event] Save the output image to disk + + test/xlib-expose-event.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit f534bd549e1e2283735d1eabb60c015a5949a735 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 21:28:56 2008 -0700 + + Remove test/twin-ref.png. + + I missed this in a previous commit, (I think I had used a + pattern of twin-*-ref.png which of course didn't match + this file). + + test/twin-ref.png | Bin 1836 -> 0 bytes + 1 files changed, 0 insertions(+), 0 deletions(-) + +commit cf97966c07bc64ff4b169d1d8239407883a26747 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 21:01:01 2008 -0700 + + NEWS: Finish the entry for the 1.8.2 release. + + Add some summarizing paragraphs and organize bug-fixes and optimizations + into separate sections. + + NEWS | 93 ++++++++++++++++++++++++++++++++++++++++++++---------------------- + 1 files changed, 62 insertions(+), 31 deletions(-) + +commit b6741cffef6e86d59fa4809d32de14b9c5e8afbf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 01:15:45 2008 +0000 + + [NEWS] Spot another couple of typos. + + Proof-reading is difficult, even with the squiggly lines. + + NEWS | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit d20cc827791e177eb73a9003c6704b7a5bc49f71 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 30 01:06:08 2008 +0000 + + [NEWS] Correct a couple of typos. + + Whilst Carl's not looking, fix a couple of typos -- in particular the one + calling me a bug! ;-) + + NEWS | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit 0ceda81dfdfc4adcec28c71be7822caa0627d818 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 17:38:36 2008 -0700 + + NEWS: Add long list of bugs fixed for 1.8.2. + + (Still need to add a paragraph or two summarizing the release.) + + NEWS | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 110 insertions(+), 0 deletions(-) + +commit e0046aaf417a61da008dc6374871fa3687ba94ab +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 16:25:00 2008 -0700 + + Remove twin perf case. + + This performance test relied on the recently-removed ability + to select the internal twin-based font family with a name of + "cairo". + + Presumably, we'll want to bring this performance case back when + some other means of requesting that font face is added. + + perf/Makefile.am | 1 - + perf/cairo-perf.c | 1 - + perf/cairo-perf.h | 1 - + perf/twin.c | 50 -------------------------------------------------- + 4 files changed, 0 insertions(+), 53 deletions(-) + +commit 292233685534aed712dfd45e8ccf498b792ce496 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 16:25:00 2008 -0700 + + Remove twin test case. + + This test relied on the recently-removed ability to select + the internal twin-based font family with a name of "cairo". + + Presumably, we'll want to bring this test case back when + some other means of requesting that font face is added. + + test/.gitignore | 1 - + test/Makefile.am | 6 ---- + test/twin-ps2-ref.png | Bin 1167 -> 0 bytes + test/twin-ps3-ref.png | Bin 1167 -> 0 bytes + test/twin-svg11-ref.png | Bin 1773 -> 0 bytes + test/twin-svg12-ref.png | Bin 1773 -> 0 bytes + test/twin.c | 60 ----------------------------------------------- + 7 files changed, 0 insertions(+), 67 deletions(-) + +commit a824d284be23793a5c48b9ae833dcb7b2d5fff80 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 16:21:42 2008 -0700 + + Remove the ability to select the internal font face with a name of "cairo". + + It's not fair to steal this name from the namespace of family names. + There are definitely cairo.ttf files that exist out there, and people + may already be using these, (or may use them in the future), with + cairo_select_font_face and a family name of "cairo". + + In place of this, we'll want to come up with some other new, and + documented API for selecting the internal font face. + + src/cairo-font-face.c | 6 ++---- + src/cairoint.h | 1 - + 2 files changed, 2 insertions(+), 5 deletions(-) + +commit f039da8d9172a6fb60082901c8dc56c7159ecd24 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 16:17:24 2008 -0700 + + Add doltcompile and doltlibtool to .gitignore. + + These generated files were recently added to our build system. + We definitely don't want to see them in git-status output. + + .gitignore | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 81439b3bc8656b34c13b3cc7b5b6a9f03a3c8c54 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 29 16:15:12 2008 -0700 + + Add missing files to CLEANFILES and DISTCLEANFILES. + + Without these files in these lists, "make distcheck" is unhappy. + + Makefile.am | 4 +++- + test/Makefile.am | 9 +++++++++ + 2 files changed, 12 insertions(+), 1 deletions(-) + +commit dd0416f5d47a946498219616f53abdad81d4fc38 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 18:01:09 2008 -0700 + + Add recently added reference images to REFERENCE_IMAGES list. + + This is just part of the make-distcheck routine for me. I know + Behdad added a test to check for missing images in the list, but + it doesn't seem to be getting run automatically as part of + 'make test' nor 'make distcheck', (or if it it, then I'm not + noticing its output). + + test/Makefile.am | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 9cd9644c1d993f86c6eb7bee692fe642d6d280b1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 29 21:56:36 2008 +0000 + + [test] Add a pass-through test. + + Check that colour values are correctly passed through all the backends. + Simple test of the most fundamental functionality. + + test/.gitignore | 1 + + test/Makefile.am | 3 + + test/pass-through-ref.png | Bin 0 -> 221 bytes + test/pass-through-rgb24-ref.png | Bin 0 -> 179 bytes + test/pass-through.c | 99 +++++++++++++++++++++++++++++++++++++++ + 5 files changed, 103 insertions(+), 0 deletions(-) + +commit cec689eab628b59ee1d69e241c5d336760304ea0 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 17:18:34 2008 -0700 + + RELEASING: Suggest running 'make distcheck' against Xvfb. + + This avoids hitting driver-specific bugs in the X server, and is + better than doing 'DISPLAY= make distcheck' which simply disables + all xlib testing completely. + + RELEASING | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 0ca6ba18e398db7ed8f8bca5faa93d48aa3a4878 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 17:15:42 2008 -0700 + + Add note to test/README on running with Xvfb. + + This X server has been tested to run through the test suite with + no unexpected failures, and it avoids hitting any X-driver-specific + bugs. + + test/README | 17 +++++++++++++++++ + 1 files changed, 17 insertions(+), 0 deletions(-) + +commit eed67717649c343e42ce102a4d78a245dba48925 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 17:12:15 2008 -0700 + + Disable the svg12 target in boilerplate. + + This target was added to the boilerplate during 1.8.1. It currently + shows many failures in the test suite. These failures likely fall + into three different classes: + + * Tests needing new svg12-specific reference images + + * Tests exercising bugs in librsvg + + * Tests exercising existing cairo bugs + + We haven't gone through the effort to separate these, but even for + the tests that are exercising actual cairo bugs, these are likely + bugs that existed in the cairo 1.8.0 release and not regressions. + + Because of that, in this commit I'm conditionally disabling the + testing of the svg12 target. As soon as we increment the cairo + version to 1.9.0 or higher, this target will get re-enabled + automatically and we can begin the work to separate the tests as + described above and also fix the bugs. + + boilerplate/cairo-boilerplate.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit a94928ddfa066f6e6824775b9d0b6008f3fcbf26 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 15:55:38 2008 -0700 + + Add svg-specific reference images for the twin test. + + A bit annoying that I have to add the same image as both -svg11 + and -svg12 but that's all the support we have in the current + test suite. I suppose I could avoid doing that by figuring out + why this test case cannot successfully roundtrip through librsvg + and back through cairo. + + test/twin-svg11-ref.png | Bin 0 -> 1773 bytes + test/twin-svg12-ref.png | Bin 0 -> 1773 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 53554ea8892893098b29a27a23c069f0ee584a06 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 15:50:44 2008 -0700 + + Add ps2-specific reference images for trap-clip test. + + These are quite similar to the existing ps3-specific reference images. + I definitely don't see any reason why this output should be considered + a failure. + + test/trap-clip-ps2-argb32-ref.png | Bin 0 -> 5690 bytes + test/trap-clip-ps2-rgb24-ref.png | Bin 0 -> 5617 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 10fd16a05d8549753179ab5cca855539fb7dec94 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 15:41:40 2008 -0700 + + Mark user-font-mask as XFAIL. + + This test is expected to fail due to a couple of known bugs. Chris + has fixes for both bugs, but is holding off on them until after 1.8.2 + to prevent introducing any possible new bugs with his fixes. + + test/Makefile.am | 10 +++++++++- + 1 files changed, 9 insertions(+), 1 deletions(-) + +commit 655546243f57ae2a5c1813bd45994b18061f1c74 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 15:35:35 2008 -0700 + + Rename user-font-image test to user-font-mask. + + Otherwise the reference image (user-font-image-ref.png) gets + interpreted as an image-specific reference image for the + user-font test case resulting in a bogus failure. + + test/Makefile.am | 4 +- + test/user-font-image-ref.png | Bin 6011 -> 0 bytes + test/user-font-image.c | 254 ------------------------------------------ + test/user-font-mask-ref.png | Bin 0 -> 6011 bytes + test/user-font-mask.c | 254 ++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 256 insertions(+), 256 deletions(-) + +commit 42d2d1b6d3b187b5dbdb630783d7c9bf90c66fb2 +Author: Carl Worth <cworth@cworth.org> +Date: Tue Oct 28 12:48:03 2008 -0700 + + Correct NEWS to say 'release' instead of 'snapshot' for 1.8.0 + + A copy-and-paste bug strikes again. + + NEWS | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 1327ec232cfca675647fb03876487c92fb638354 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 10:00:38 2008 +0000 + + [image] Remove invalid assert. + + The assert can fail for an error surface. + + TODO: Decide what values should be returned from getters for error + surfaces. + + src/cairo-image-surface.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit 9481d999df8d399543bdbb45b85bd24b1725bece +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 09:59:01 2008 +0000 + + [image] Check create_for_data() to ensure a valid minimum stride. + + Double check that the user is not being silly by passing in a stride that + is too small for the width. evince/poppler is one such example... + + src/cairo-image-surface.c | 12 ++++++++++++ + 1 files changed, 12 insertions(+), 0 deletions(-) + +commit 88f628b3972819c0f6ce8e5f06d0f7e6abb9d661 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 28 09:11:23 2008 +0000 + + [perf] Fix rectangular case of unaligned-clip. + + Janoos spotted that the unaligned clip actually degenerated to an empty + clip due to a typo when constructing the second rectangle. Simply use a + cairo_rectangle() instead. + + perf/unaligned-clip.c | 9 +++------ + 1 files changed, 3 insertions(+), 6 deletions(-) + +commit 1522805f39c505ff05231e67de5a6e6686081d46 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 27 20:57:56 2008 -0400 + + [Makefile.am.releasing] Fix typo + + build/Makefile.am.releasing | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 3386794d96d2b1616af9db5b7df1fc5c7a5796a7 +Author: Carl Worth <cworth@cworth.org> +Date: Mon Oct 27 14:09:19 2008 -0700 + + Add creation of a versioned manual to the release-publish target. + + This arranges so that a versioned manual will be available of the form: + + http://cairographics.org/manual-X.Y.Z + + for all future releases and snapshots. We're going through the process + of manually doing all former releases, such as: + + http://cairographics.org/manual-1.2.0/ + + which the LSB folks wanted to reference. + + build/Makefile.am.releasing | 27 ++++++++++++++++++--------- + 1 files changed, 18 insertions(+), 9 deletions(-) + +commit a1a7ec6a056fa36389a48c0f53884ae7e92ebc1a +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Oct 27 23:13:05 2008 +1030 + + Change ps to ps3 in test/README + + The ps target no longer exists. + + test/README | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 670d942fe3dafbed5ceca234e760f29f793233cb +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Oct 27 23:04:16 2008 +1030 + + Change user-font-image test to use a pattern + + This can be used to expose a bug in _cairo_rectangle_intersect() by + changing: + + fixed_scale = 1024 to 1 in cairo-user-font.c + + and + + cairo_matrix_translate (&matrix, 0, -8) to (&matrix, 0, -9) in + user-font-image.c + + This will cause cairo_text_extents (cr, text, &extents) in + user-font-image.c to return a height of 8388683. + + test/user-font-image-ref.png | Bin 5502 -> 6011 bytes + test/user-font-image.c | 13 +++++++++++-- + 2 files changed, 11 insertions(+), 2 deletions(-) + +commit cdacf55e1b16a6982c681fab212405fc4af4f1db +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Mon Oct 27 22:07:04 2008 +1030 + + Add user-font-image test + + Draws bitmap glyphs using cairo_mask(). This test exposes a bug in the + calculation of the glyph extents. + + test/Makefile.am | 2 + + test/user-font-image-ref.png | Bin 0 -> 5502 bytes + test/user-font-image.c | 245 ++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 247 insertions(+), 0 deletions(-) + +commit 22e2dac819de3c082424ebf3ce8f64c9c4797e8a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 26 10:21:37 2008 +0000 + + [stroke] Ensure we record the first face for a dashed path. + + If the first face was outside the bounds then we skipped it, and so a + close would incorrectly connect to the first visible face. + + src/cairo-path-stroke.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 64fb3290f00bafc4a10e6432226f669a51fa0bc6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 26 09:54:03 2008 +0000 + + [stroke] _cairo_stroker_line_to_dashed() whitespace + + A couple of comment spelling mistakes and rearrange whitespace to more + closely match CODING_STYLE. + + src/cairo-path-stroke.c | 57 ++++++++++++++++++++++++++++++++-------------- + 1 files changed, 39 insertions(+), 18 deletions(-) + +commit 88935947d11762c91e282fb129c493afc6f2f1a6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 26 08:19:31 2008 +0000 + + [test] Add leaky-dashed-stroke + + A test case for a leak whilst closing a dashed stroke extracted from the + report by Jeff Muizelaar who found the artifact whilst looking at + firefox http://people.mozilla.com/~jmuizelaar/BerlinDistricts-check.svg + + test/.gitignore | 1 + + test/Makefile.am | 4 + + test/leaky-dashed-stroke-ps2-ref.png | Bin 0 -> 5511 bytes + test/leaky-dashed-stroke-ps3-ref.png | Bin 0 -> 5511 bytes + test/leaky-dashed-stroke-ref.png | Bin 0 -> 9214 bytes + test/leaky-dashed-stroke.c | 174 ++++++++++++++++++++++++++++++++++ + 6 files changed, 179 insertions(+), 0 deletions(-) + +commit 195fd27cc64c7aaf18a6d48ccd9d94548331fd4d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 22:04:53 2008 +0100 + + [build] Use AC_LINK_IFELSE for testing linker flags. + + Richard Hult reported that -Wl,--allow-shlib-undefined was incorrectly + being identified as supported by gcc under Mac OS/X: + + configure:25103: checking whether gcc supports -Wl,--allow-shlib-undefined + configure:25117: gcc -c -Werror -Wl,--allow-shlib-undefined conftest.c + >&5 + i686-apple-darwin9-gcc-4.0.1: --allow-shlib-undefined: linker input file + unused because linking not done + + So instead of just checking whether the compiler accepts the flag, check + that we can actually link a dummy file. + + build/aclocal.cairo.m4 | 20 ++++++++++++++++++++ + build/configure.ac.warnings | 2 +- + 2 files changed, 21 insertions(+), 1 deletions(-) + +commit d692284ab8f90d7402621f1a07aaddcf11d87ef5 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Oct 23 01:45:35 2008 -0400 + + [test/user-font] Exercise glyph 0 + + Previously there was a bug in cairo and/or poppler causing glyph 0 of + user fonts to not show up. This is fixed now, so we exercise glyph 0. + + test/user-font.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +commit e6219f7116311d999054dc31df081aa66a0cd2d3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 17:53:05 2008 +0100 + + [win32] Correct error paths in text_to_glyphs(). + + Carl spotted that 1db894 introduced an error into text_to_glyphs() such + that following an allocation error the code would attempt to thaw an + unfrozen glyph cache, leading to an attempt to unlock an unlocked mutex - + which causes a deadlock under win32. + + src/cairo-win32-font.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 09651a1c1a4856607423e9b06c1f7c397ba4f304 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 22:39:48 2008 +0100 + + Twin perf case + + perf/Makefile.am | 3 ++- + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/twin.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 54 insertions(+), 1 deletions(-) + +commit 954ebacb71071c53c4e4092b469417f01478bc2d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 15:43:56 2008 +0100 + + Map toy font face to implementation. + + Quartz fonts and user fonts use an indirect font face when creating a + scaled font for the toy font face. This means that they insert a scaled + font into the font map that has a different font face to the one that is + initially searched upon. The result is that when we try to create an + identical scaled font, we fail to find the existing scaled font and + attempt to insert a duplicate into the hash table - which triggers an + assert. + + In order to avoid creating duplicate fonts, we add a new method to the + font backends that allows cairo_scaled_font_create() to peek at the + font_face that will be used to actually implement the scaled font + constructor - thus we are able to use the correct font_face as part of the + hash key. + + src/cairo-font-face.c | 34 +++++++++++++++++++++++++++++ + src/cairo-ft-font.c | 2 + + src/cairo-quartz-font.c | 55 +++++++++++++++++++++++++++++++++++++--------- + src/cairo-scaled-font.c | 11 ++++++++- + src/cairo-user-font.c | 37 ++++++++++++++++++++++++------- + src/cairo-win32-font.c | 2 + + src/cairoint.h | 8 ++++++ + 7 files changed, 128 insertions(+), 21 deletions(-) + +commit 5e4a1cb0b830f069d99c9512563c82ad628587e3 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Wed Oct 22 21:36:42 2008 +1030 + + Don't add a notdef glyph to Type 3 font subsets + + This allows user-fonts to use glyph 0 when embedding in PS/PDF. + According to ISO32000 Type 3 fonts do not require a notdef glyph. + + src/cairo-pdf-surface.c | 19 +++------- + src/cairo-ps-surface.c | 21 ++++------- + src/cairo-scaled-font-subsets.c | 59 ++++++++++++++++++------------ + src/cairo-type3-glyph-surface-private.h | 6 --- + src/cairo-type3-glyph-surface.c | 16 -------- + 5 files changed, 48 insertions(+), 73 deletions(-) + +commit 170686d4b0ed913a1a175f3f354ec5796814b416 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 22 01:01:06 2008 +0100 + + [cairoint] Remove the duplicate prototype. + + In the previous commit I added comments and a duplicate prototype. Remove + the duplicate - but keep the comments. + + src/cairoint.h | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 1db8949f2baf1e620e1d5ef73a66de211420bd0a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 22:48:17 2008 +0100 + + Ensure that the scaled font is frozen for the lifetime of the scaled glyph. + + After discussing the scaled font locking with Behdad, it transpired that it + is not sufficient for a font to be locked for the lifetime of a scaled glyph, + but that the scaled font's glyph cache must be frozen for the glyph' + lifetime. If the cache is not frozen, then there is a possibility that the + glyph may be evicted before the reference goes out of scope i.e. the glyph + becomes invalid whilst we are trying to use it. + + Since the freezing of the cache is the stronger barrier, we remove the + locking/unlocking of the mutex from the backends and instead move the + mutex acquisition into the freeze/thaw routines. Then update the rule on + acquiring glyphs to enforce that the cache is frozen and review the usage + of freeze/thaw by all the backends to ensure that the cache is frozen for + the lifetime of the glyph. + + src/cairo-directfb-surface.c | 4 +- + src/cairo-glitz-surface.c | 2 +- + src/cairo-gstate.c | 4 - + src/cairo-meta-surface.c | 2 - + src/cairo-mutex-impl-private.h | 3 +- + src/cairo-mutex-type-private.h | 3 + + src/cairo-paginated-surface.c | 2 - + src/cairo-pdf-surface.c | 2 - + src/cairo-scaled-font-subsets.c | 30 +++--- + src/cairo-scaled-font.c | 81 ++++++++++----- + src/cairo-surface-fallback.c | 1 + + src/cairo-surface.c | 4 - + src/cairo-svg-surface.c | 4 +- + src/cairo-type1-fallback.c | 9 ++- + src/cairo-type3-glyph-surface.c | 18 ++-- + src/cairo-user-font.c | 1 - + src/cairo-win32-font.c | 12 ++- + src/cairo-xcb-surface.c | 216 +++++++++++++++++++++++---------------- + src/cairo-xlib-surface.c | 57 ++++++---- + src/cairoint.h | 4 + + src/test-meta-surface.c | 25 +---- + src/test-paginated-surface.c | 25 +---- + 22 files changed, 280 insertions(+), 229 deletions(-) + +commit b2cbbceb4ca57816a498c2c1e676b19182c34e12 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 19:44:42 2008 +0100 + + [test/meta-surface-pattern] Propagate errors. + + Use cairo_get_target() to propagate any errors from the secondary context. + + test/meta-surface-pattern.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 9d4262ebe07bacacd6e743dea616b37ac51eac01 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Oct 21 17:44:47 2008 -0400 + + [build] Use dolt + + Dolt is a hack to speed up libtool-based build systems: + + http://dolt.freedesktop.org/ + + It's completely transparent to the user. Brings make time + of cairo from 70s down to 20s. Yay! + + build/aclocal.dolt.m4 | 177 +++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 1 + + 2 files changed, 178 insertions(+), 0 deletions(-) + +commit 5a822046cc66d8405618370c1071433016969020 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:22:48 2008 +0100 + + [test/xlib-expose-event] Propagate errors. + + Use cairo_get_target() to propagate errors from secondary contexts. + + test/xlib-expose-event.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit 21223cc12ca00c52c0b39dc60db410f29e4e76c9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:29:12 2008 +0100 + + [test/unbounded-operator] Propagate errors. + + Use cairo_get_target() to propagate errors from secondary contexts. + + test/unbounded-operator.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit 4c8de6d99d337338d6fd57134247515f9815b5e5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:21:37 2008 +0100 + + [test/surface-pattern-scale-up] Propagate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/surface-pattern-scale-up.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit e8de7d1c3605fa6d89640fb4e0631c07e5366348 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:20:54 2008 +0100 + + [test/surface-pattern-scale-down] Propagate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/surface-pattern-scale-down.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit b5551cfce2969358746dadae90cbe1add012e29c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:19:40 2008 +0100 + + [test/rotate-image-surface-paint] Proapgate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/rotate-image-surface-paint.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 6d41ffbbed2ad3bab2b1a58e1e5d9e1570a37926 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:18:37 2008 +0100 + + [test/pixman-rotate] Propagate errors + + Use cairo_get_target() to propagate errors from the secondary context. + + test/pixman-rotate.c | 33 ++++++++++++++++----------------- + 1 files changed, 16 insertions(+), 17 deletions(-) + +commit 64949b81735ee4e43772224d10031f7edfbc8068 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:17:13 2008 +0100 + + [test/operator-source] Propagate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/operator-source.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 971f030b7dca7ce24e54d0465900e6984020345e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:27:17 2008 +0100 + + [test/operator-clear] Propagate errors. + + Use cairo_get_target() to propagate errors from secondary contexts. + + test/operator-clear.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit 9b919b0e91b6c64acbcbfc05c72610188327be67 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:14:51 2008 +0100 + + [test/extend-pad] Propagate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/extend-pad.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 69415b4fc6387acda7498847f8181c802c8b0982 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:25:38 2008 +0100 + + [test/device-offset-scale] Propagate errors + + Use cairo_get_target() to propagate errors from the secondary contexts. + + test/device-offset-scale.c | 14 +++++++------- + 1 files changed, 7 insertions(+), 7 deletions(-) + +commit 9ab296123ef49259a67e8dc43708023da2759283 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:14:01 2008 +0100 + + [test/device-offset-positive] Propagate errors. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/device-offset-positive.c | 12 +++++------- + 1 files changed, 5 insertions(+), 7 deletions(-) + +commit 594fa0836f2526e0a7f44fc7184f7f09de7dd41f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 11:12:11 2008 +0100 + + [test/device-offset] Propagate error. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/device-offset.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 29da47be60b0373ff93769f9f373a20b15a01e0f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 10:42:41 2008 +0100 + + [ps] Check for an empty font subset. + + Return early before trying to emit an empty subset into the document - + avoids a potential use of an uninitialised status variable. + + src/cairo-ps-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit fd1f3c27e093b1f51f0c1a381cc02cbf8f9889d7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 21 09:17:56 2008 +0100 + + [configure] Check for atomic xchg. + + Bug 18140 identifies a case where we have an atomic increment, but not an + atomic exchange. We need both to implement atomic reference counting, so + add a second check to detect whether __sync_val_compare_and_swap + generates a non-atomic instruction. + + Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18140. + + build/aclocal.cairo.m4 | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 71e4f7e3a10e6c9794360473d0114b27b42bcead +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 23:54:57 2008 +0100 + + Add API documentation for NULL filenames and write_funcs. + + Mention in the API docs that you can pass a NULL filename to + cairo_(pdf|ps|svg)_surface_create in order to construct a queryable + surface without generating any temporary files. Similarly when passing a + NULL write_func to cairo_pdf_surface_create_for_stream et al. + + src/cairo-pdf-surface.c | 10 ++++++++-- + src/cairo-ps-surface.c | 10 ++++++++-- + src/cairo-svg-surface.c | 10 ++++++++-- + 3 files changed, 24 insertions(+), 6 deletions(-) + +commit 6cb2b29434ffd5e718868d90e31cb050904b3ea7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 23:22:16 2008 +0100 + + [mutex] s/HOLDS_MUTEX/MUTEX_IS_LOCKED/ + + Behdad prefers the latter to keep a clean namespace. + + src/cairo-mutex-impl-private.h | 2 +- + src/cairo-mutex-type-private.h | 4 ++-- + src/cairo-scaled-font.c | 18 +++++++++--------- + 3 files changed, 12 insertions(+), 12 deletions(-) + +commit ae9d17c015867002895c8aa4e1c6dd1ef370dd20 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 22:31:17 2008 +0100 + + [directfb] Unbounded operators are unsupported. + + Currently the emulation of Porter-Duff operators does not correctly + handle the unbounded operators. + + src/cairo-directfb-surface.c | 10 ++++++++++ + 1 files changed, 10 insertions(+), 0 deletions(-) + +commit 1f35f31c4ee50dcc2f7c8616b9bbb5c45b4ed707 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 22:14:41 2008 +0100 + + [directfb] Fallback for SATURATE + + We're unable to satisfactorily emulate SATURATE using the src/dst blend + modes, so fallback. (Might just be a bug in libdirectfb...) + + src/cairo-directfb-surface.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit c7951c4a368baaeeadca4e2a18d3ad45225380a0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 22:04:58 2008 +0100 + + [directfb] Perfom text fallback if emulating clip regions. + + Fallback if we have a clip that is not a simple region. + + src/cairo-directfb-surface.c | 14 ++++++++++++-- + 1 files changed, 12 insertions(+), 2 deletions(-) + +commit 98933fd4b8579b68623a8212015769b058db43f5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 20:59:14 2008 +0100 + + [directfb] When blitting check if we need the un-premultiplied color. + + When blitting whether we need to use the premultiplied color is dependent + upon the destination surface capabilities. + + src/cairo-color.c | 3 ++ + src/cairo-directfb-surface.c | 75 ++++++++++++++++++++++++++++------------- + 2 files changed, 54 insertions(+), 24 deletions(-) + +commit 4af8aa5f4d31141a6a4ba914cc860aff5d342d5b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 20:15:12 2008 +0100 + + [directfb] Apply clip to release_dest_image() + + We need to respect the current clip when copying the fallback image back to + the target surface. + + src/cairo-directfb-surface.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +commit 0ba5085ba06fd1c0ff1ebc88111d4573675a2e17 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 19:41:20 2008 +0100 + + [directfb] Fix OBO in clip. + + DirectFB seems to use inclusive upper bounds. + + src/cairo-directfb-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2743e84171fd2a548ac37b1fdd3611d319acded0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 19:32:21 2008 +0100 + + [directfb] Force NEAREST. + + The current version of DirectFB does not support any filters, so set + NEAREST on the source patterns so that we can fully optimize the pattern + inside core. + + src/cairo-directfb-surface.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit f1669d31c0064b8ffbc7db2527fed85488fb305c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 19:03:33 2008 +0100 + + [directfb] Track the empty clip rectangle. + + A region with no extents means everything should be clipped out, so we + need an extra flag to disambiguate when we have 0 clip rectangles. + + src/cairo-directfb-surface.c | 6 +++++- + 1 files changed, 5 insertions(+), 1 deletions(-) + +commit ebe3048f9b74ff949795a807a7076ec756150ede +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 18:59:03 2008 +0100 + + [directfb] Cap the maximum surface size to use for the font cache. + + Fallback if we need to create a cache larger than the maximum usable + surface. + + src/cairo-directfb-surface.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit 6f35c2d13e4cb736634bf446d3b8ee38cc6a6b9b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 18:39:45 2008 +0100 + + [directfb] Only use the pure BLIT for integer translations. + + If we have non-integer translation on a source pattern then we need to use + STRECTHBLIT (the core takes care to optimize NEAREST patterns to integer + translations so that this will only be used when interpolation is + required). + + src/cairo-directfb-surface.c | 30 +++++++++++++++++++++++------- + 1 files changed, 23 insertions(+), 7 deletions(-) + +commit 55bb7087b0236fe27980efda829f7b72e047b316 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 16:47:41 2008 +0100 + + [directfb] Tweak _categorize_operation(). + + Explicitly list the extend modes that are supported/unsupported and + immediately check for an unsupported operation. + + src/cairo-directfb-surface.c | 37 +++++++++++++++++++++++++------------ + 1 files changed, 25 insertions(+), 12 deletions(-) + +commit edb65213ec975e517165bc3b623f676a12917d0c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 16:46:08 2008 +0100 + + [directfb] Support ROI cloning. + + Only clone the ROI in order to efficiently handle large sources. + + src/cairo-directfb-surface.c | 11 ++++------- + 1 files changed, 4 insertions(+), 7 deletions(-) + +commit 4006e49ac1e96a983346f97be97bfd850f247ab0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 16:45:06 2008 +0100 + + [directfb] Rename backend structure. + + Use _cairo_directfb_surface_backend for consistency with other backends. + + src/cairo-directfb-surface.c | 37 ++++++++++++++++++++++++------------- + 1 files changed, 24 insertions(+), 13 deletions(-) + +commit 7e31ddbb08a6a7cf1db06c950c3768e54a5f4cfa +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 13:04:20 2008 +0100 + + [directfb] Whitespace. + + Trim lots of trailing whitespace and fix up according to CODING_STYLE. + + src/cairo-directfb-surface.c | 1478 +++++++++++++++++++++--------------------- + 1 files changed, 733 insertions(+), 745 deletions(-) + +commit d49563280b80dd85275057b6442d2f4ece8d724c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 12:49:52 2008 +0100 + + [directfb] Simplify return from _directfb_get_operator(). + + Used only as a predicate, so simply return a boolean. + + src/cairo-directfb-surface.c | 138 +++++++++++++++++++++--------------------- + 1 files changed, 68 insertions(+), 70 deletions(-) + +commit b17d0ded8cd42d84e97ca2c1fbd4aefedd570b8e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 12:48:02 2008 +0100 + + [directfb] Use the solid pattern cache. + + The dfb backend recreated a solid color surface for every colour, + completely bypassing the solid pattern cache. + + src/cairo-directfb-surface.c | 72 ++++++++++------------------------------- + 1 files changed, 18 insertions(+), 54 deletions(-) + +commit 786bea48df0dc6d76b2ad00409804a803fe2f4b6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 12:19:50 2008 +0100 + + [boilerplate/directfb] Create ARGB surfaces on demand. + + Create an RGB or ARGB surface depending upon the content type of the test + target, with the result that the directfb rgb24 target no longer + unconditionally fails. + + boilerplate/cairo-boilerplate-directfb.c | 23 +++++++++++++---------- + 1 files changed, 13 insertions(+), 10 deletions(-) + +commit 4ba9ccc6ab5926d59696f86193f42df2195d7cda +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 23:07:38 2008 +0100 + + [configure.ac.analysis] s/safe/_save/ + + Rename the temporary variable in line with the convention used by the rest + of the build system. + + build/configure.ac.analysis | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 3a45b07af9743a26305c2576f838b4f3ef83bbb8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 10:37:46 2008 +0100 + + [perf] Free images for composite-checker + + Fix memleak of the image surfaces. + + perf/composite-checker.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 86356a9578dc248a755aceb7a04aef67a6c529b3 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 20 17:12:21 2008 +0100 + + [test] Add degenerate-dash to XFAIL. + + PS (ghostscript) interprets the degenerate end-caps quite differently, and + perhaps slightly more rationally... Add this to XFAIL, until we have a + definitive specification on how we should behave. + + test/Makefile.am | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 83d2552e4cafc9f86a8055abdf6caa685ed4922b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 20 17:59:09 2008 -0400 + + Remove CAIRO_BEGIN_DECLS uses that ickle introduced while merging + + src/cairo-mutex-impl-private.h | 2 -- + src/cairo-mutex-type-private.h | 2 -- + 2 files changed, 0 insertions(+), 4 deletions(-) + +commit eab37f76b0f26a7b007dd51debf4d4901310c8b0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 22:12:18 2008 +0100 + + [directfb] Return an error surface on create() failure. + + Do not return NULL but an NO_MEMORY error surface if we fail to allocate + the surface during creation. + + src/cairo-directfb-surface.c | 21 ++++++++++----------- + 1 files changed, 10 insertions(+), 11 deletions(-) + +commit 6a02f53dd191605986b15e4757b16f599fe8de5f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 14:21:15 2008 +0100 + + [directfb] Simplifiy ADD_TRI + + Simplify the ADD_TRI macro to make the code more readable. + + src/cairo-directfb-surface.c | 30 +++++++++++++----------------- + 1 files changed, 13 insertions(+), 17 deletions(-) + +commit aba457fe64f12598043b11ae076f0a93fe05eba7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 14:03:24 2008 +0100 + + [directfb] Add missing error status + + We jumped to the ERROR path without setting an error status - assume + NO_MEMORY. + + src/cairo-directfb-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 610451e4a7b079d30a73384a76f0aaab250c2970 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 12:45:45 2008 +0100 + + [directfb] Correct fixed-to-double conversion. + + The trapezoid calculations had not been updated after the 16.16->24.8 + switch. Use _cairo_fixed_to_double() rather than open-coding. + + src/cairo-directfb-surface.c | 110 ++++++++++++++++++++--------------------- + 1 files changed, 54 insertions(+), 56 deletions(-) + +commit 8e0950ced8837a35b9dc0254860250f9fa1a9613 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 12:11:13 2008 +0100 + + [boilerplate/directfb] Gracefully handle failure to create surface. + + Simply return NULL indicating failure to create the target surface rather + than aborting the test (allowing other targets to be tested). + + boilerplate/cairo-boilerplate-directfb.c | 230 +++++++++++++++++------------- + 1 files changed, 130 insertions(+), 100 deletions(-) + +commit 801df1b87a585ebf71e6d3d74b815f3470b81ae9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 11:55:20 2008 +0100 + + [directfb] Fix error propagation from surface_create() + + Do not mask fatal errors, but correctly propagate the error status. + + src/cairo-directfb-surface.c | 208 +++++++++++++++++++++++------------------- + 1 files changed, 114 insertions(+), 94 deletions(-) + +commit 476d17fa788fcf173e58b963540c6557f846ceed +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 11:35:27 2008 +0100 + + [directfb] Compile fix. + + Fixup compilation after 901f0b. + + src/cairo-directfb-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit d72969289db62b38ca024a41c0d8e0df480e7f8c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 09:47:33 2008 +0100 + + [image] Remove unused variable. + + Cleanup the compiler warning for the unused status after code shuffling. + + src/cairo-image-surface.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit f2ff7944264c23cbec856be3e85f240a93184f80 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 11:56:19 2008 +0100 + + [perf] A crude tool to visualise performance changes across a series. + + Generate a cairo-perf-diff graph for a series of commits in order to be + able to identify significant commits. Still very crude, but minimally + functional. + + configure.ac | 3 + + perf/.gitignore | 1 + + perf/Makefile.am | 26 ++- + perf/Makefile.win32 | 6 +- + perf/cairo-perf-diff | 12 +- + perf/cairo-perf-diff-files.c | 458 ------------------------------- + perf/cairo-perf-graph | 205 ++++++++++++++ + perf/cairo-perf-graph-files.c | 593 ++++++++++++++++++++++++++++++++++++++++ + perf/cairo-perf-graph-widget.c | 450 ++++++++++++++++++++++++++++++ + perf/cairo-perf-graph.h | 63 +++++ + perf/cairo-perf-report.c | 456 ++++++++++++++++++++++++++++++ + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 61 ++++- + perf/cairo-stats.h | 8 - + 14 files changed, 1865 insertions(+), 478 deletions(-) + +commit 41c8eefc6d432ab213f6f405c3d6346adb7f7931 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 22:24:32 2008 +0100 + + [output-stream] Protect against NULL write_func. + + Allow the user to specify a NULL write_func for the output stream so that + a dummy surface can be created, for example, for querying target font + options or font extents. + + Currently we do not perform any sanity checks at the user entry point and + will generate a mysterious SEGV during cairo_surface_finish() - which may + not immediately be obvious that it is due to a NULL write_func. + + src/cairo-output-stream.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 84e4a825fffe3d78e95dec3406a86da6a23144c2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 22:15:17 2008 +0100 + + [output-stream] Accept a NULL filename + + Principally to support creating a dummy vector surface (i.e. + cairo_ps_surface_create (NULL, 1, 1)) that can be used to determine font + extents (or target font options) before opening an output file, but also + because we currently fail to do any sanity checking at the entry point. + + src/cairo-output-stream.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +commit 52ea38f97b1b90e395c667619770482b10e5672e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:44:29 2008 +0100 + + [meta] Acquire scaled_font mutex for glyph_path(). + + The caller of _cairo_scaled_font_glyph_path() is expected to be holding + the scaled_font->mutex. + + src/cairo-meta-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 299ea0580a646dc55fd0156f1904fe4b45ec5725 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:37:38 2008 +0100 + + [user-font] Review locks under error conditions. + + Simplify the error handling by only relinquishing the global + scaled_font_map mutex if we successfully insert the placeholder font. The + result is that on the error path, there are no changes to global state and + thus we can entirely skip the user-font initialisation and + re-registration. + + src/cairo-scaled-font.c | 44 ++++++++++++++++++++++---------------------- + src/cairo-user-font.c | 39 +++++++++++++++++++++++---------------- + src/cairoint.h | 2 +- + 3 files changed, 46 insertions(+), 39 deletions(-) + +commit c76a8481f372fab8981231b257fdcc69466263d2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:36:34 2008 +0100 + + [analysis] Check for error surfaces. + + If the target surface is an error surface, ensure that we return the + appropriate error surface. Likewise, avoid writing to error surfaces. + + src/cairo-analysis-surface.c | 16 +++++++++++++--- + 1 files changed, 13 insertions(+), 3 deletions(-) + +commit 5b28b0b903cb2fdb8a5614659d528bf12488389e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:35:48 2008 +0100 + + [ps] Destroy type3 surface on error. + + After an error, ensure that the local type3 surface is destroyed. + + src/cairo-ps-surface.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 6b17c6da47c42dd04ed2acad723c25b6da41b51c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:34:17 2008 +0100 + + [type3] Acquire scaled_font mutex whilst looking up glyphs. + + When looking up the glyph in the shared scaled_font glyph cache, the + caller is required to have taken the scaled_font->mutex. + + src/cairo-type3-glyph-surface.c | 50 +++++++++++++++++++++++--------------- + 1 files changed, 30 insertions(+), 20 deletions(-) + +commit f56cf93181e73b4ba74f25ce14f7ed6c7cf36e83 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 22:13:53 2008 +0100 + + [user-font] Check for error objects. + + Check that the user has not passed in an inert error object before any + attempts to write to it and return the default values. + + src/cairo-user-font.c | 71 ++++++++++++++++++++++++++++++++++++++++-------- + 1 files changed, 59 insertions(+), 12 deletions(-) + +commit 1f9f9d936b296dbe796b1436c7da7fa3462f7d59 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:39:56 2008 +0100 + + [pdf] Acquire scaled_font mutex for show_text_glyphs(). + + We need to be holding the scaled font mutex over a call to draw text + glyphs from within an smask group. + + src/cairo-pdf-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 12fb8c9b7c808ab20bee466aa28ee368559fd902 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:33:07 2008 +0100 + + [type1] Acquire scaled_font mutex. + + In order to perform glyph lookups we need to be holding the mutex for the + scaled_font. + + src/cairo-type1-fallback.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit ca5f868a73b35eda737ae6596efff91f82eeea75 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:26:20 2008 +0100 + + [scaled-font] Zero font extents for an error surface. + + Do not attempt to read from the error object, but just return zero + extents. + + src/cairo-scaled-font.c | 13 ++++++++++++- + 1 files changed, 12 insertions(+), 1 deletions(-) + +commit 1ddf0b2a5c1f3d20b9a91acf7aae021f6b738485 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 10:35:38 2008 +0100 + + [surface] Reorder asserts to make no assumptions about error objects. + + If the surface is in error, then we cannot assume anything about the + validity of its contents other than the error status (and reference + count). This is for the cases were the surface is replaced by a nil + surface, and in future where the error surface may be replaced by a tiny + error object. + + src/cairo-surface.c | 94 +++++++++++++++++++++++++------------------------- + 1 files changed, 47 insertions(+), 47 deletions(-) + +commit 644e78ca4e6f72499fcf763acd53fa7235b0226d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 20:34:13 2008 +0100 + + [svg] Lock the scaled_font whilst emitting glyphs. + + We need to hold the scaled_font mutex whilst looking upon glyphs so lock + the font whilst iterating over the font subset. + + src/cairo-svg-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 4587e9e4f5c46656108b05f7a4841f78df14de26 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 19:11:09 2008 +0100 + + [scaled-font-subsets] Add locking to unscaled font. + + During map_glyph() we are passed a locked scaled_font for which we are + asked to add a glyph from that font into the active subsets for the + surface. This means that we eventually call scaled_glyph_lookup() to load + the glyph. But first, we attempt to find an existing an existing sub_font + for glyph, creating a new sub_font as necessary (possibly using an + entirely different unhinted scaled font). So before accessing the glyph + cache we need to make sure that we are holding the appropriate mutexes. + + src/cairo-scaled-font-subsets.c | 23 +++++++++++++++++------ + 1 files changed, 17 insertions(+), 6 deletions(-) + +commit d3a6651237a276c410885578c41fb505f83372ed +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 14:37:42 2008 +0100 + + [xlib] Set return code after failing to allocate glyph surface. + + Although we checked for an allocation error, we missed propagating the + status to the return error code. + + src/cairo-xlib-surface.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +commit bfc3a72cff1a3f9641dae7c9f121598a14eb9a5a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 14:06:03 2008 +0100 + + [gstate] Propagate error from clip. + + During clip transformation we query the clip extents which can trigger a + fatal error. Check and propagate. + + src/cairo-gstate.c | 33 +++++++++++++++++++++++---------- + 1 files changed, 23 insertions(+), 10 deletions(-) + +commit 7975cf3f2c0bc28b8b3c916d5ba725abb38b300d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 13:21:28 2008 +0100 + + [paginated] Free local reference to target on error path. + + On the error path we must destroy the local reference to the target + surface. + + src/cairo-paginated-surface.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 4662204a2a02d50e674f121d82bbb4fe1b8f1436 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 12:44:45 2008 +0100 + + [test-paginated] Fix double free of surface along error path. + + The ownership of the surface is transferred to the paginated surface, so + we do not need to destroy it ourselves along the error path. + + src/test-paginated-surface.c | 16 +++++++++------- + 1 files changed, 9 insertions(+), 7 deletions(-) + +commit bf3202fcfd281be3fa62c2d6719377a8f2a0dec4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 12:33:22 2008 +0100 + + [xlib] Fix double free of Pixmap along error path. + + If the paint fails then we attempt to free the Pixmap ourselves and via + the cairo_surface_destroy (as it also believes that it owns the Pixmap). + + src/cairo-xlib-surface.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +commit 901f0b540c764e131dd9745def329308af61b3d5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 12:19:09 2008 +0100 + + Review backend->create_similar() + + Avoid masking fatal errors by enforcing any error to be returned via an + error surface, so that the NULL return only means UNSUPPORTED. A few + backends called their create_similar() directly, without correctly checking + for a potential NULL (for example, the directfb backend was a timebomb, + since it used NULL to indicate out-of-memory). + + src/cairo-directfb-surface.c | 18 ++++++++++-------- + src/cairo-glitz-surface.c | 17 +++++++++++------ + src/cairo-quartz-surface.c | 4 ++-- + src/cairo-surface.c | 8 ++------ + src/cairo-win32-surface.c | 18 +++++++++++++----- + src/cairo-xcb-surface.c | 2 ++ + 6 files changed, 40 insertions(+), 27 deletions(-) + +commit 9529699028a5c7a3b0f81f945d25f26285247a11 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 19 09:35:07 2008 +0100 + + [test/user-font-rescale] Check and propagate errors. + + We need to check the error status on set_user_data() to be sure that the + data has been set and error otherwise. + + test/user-font-rescale.c | 63 +++++++++++++++++++++++++++++---------------- + 1 files changed, 40 insertions(+), 23 deletions(-) + +commit 683de2fea2d8cdeea9759cbf3ab7492d634e7af2 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 18 00:01:39 2008 +0100 + + [test/user-font[-proxy]] Check for error from set_user_data(). + + Check in case we fail to attach our user_data. + + test/user-font-proxy.c | 69 +++++++++++++++++++++++++++--------------------- + test/user-font.c | 24 +++++++++++++--- + 2 files changed, 58 insertions(+), 35 deletions(-) + +commit 198392990082e01443bbda5c0cbe6dc8bf090baf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 22:14:49 2008 +0100 + + [test/bitmap] Leak on error path. + + Free the FcPattern on error. + + test/bitmap-font.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 0409be426cb7f67974346a93213dd4675b59776c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 14:26:15 2008 +0100 + + [test/font-matrix-translation] Check for OOM + + First check that querying the extents did not trigger NO_MEMORY. + + test/font-matrix-translation.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit 21360bf6748b30cf58d54561e40a1aa711d8d7af +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 20:44:51 2008 +0100 + + [test/source-surface-big-scaled-down] Propagate error. + + Propagate error to source. + + test/surface-pattern-big-scale-down.c | 43 +++++++++++++++++++------------- + 1 files changed, 25 insertions(+), 18 deletions(-) + +commit 794160c35baf39593942ba71b45e4e75d2a87103 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 20:37:43 2008 +0100 + + [test/surface-pattern] Propagate error. + + Use cairo_get_target() to propagate error from secondary context. + + test/surface-pattern.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 0f48cce8d90cf95afcf86d71a932ab4e504b909b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 20:31:57 2008 +0100 + + [test/source-clip-scale] Propagate error. + + Use cairo_get_target() to propagate error from secondary context. + + test/source-clip-scale.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 6cdbd132ceba159bb7e3ac5612aa79293b21e95a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 20:22:49 2008 +0100 + + [test/source-clip] Propagate error. + + Use cairo_get_target() to propagate error from the secondary context. + + test/source-clip.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit f86f233b3e49c3f401b2fa02987b2193485e8be5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 20:14:06 2008 +0100 + + [test/smask] Propagate error. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/smask.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 4490a6c363a8745ba89bfa890519a570d098086e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 19:15:17 2008 +0100 + + [test/stroke-image] Propagate error + + Use cairo_get_target() to propagate errors from the secondary context. + + test/stroke-image.c | 19 +++++++++++-------- + 1 files changed, 11 insertions(+), 8 deletions(-) + +commit 6e6d7e52a3c16787633e5059ae36f2fb0d03148a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 19:02:31 2008 +0100 + + [test/mask] Propagate error from secondary context. + + Reset the source every time so that the error is propagate from the + secondary context using cairo_get_target(). + + test/mask.c | 6 +----- + 1 files changed, 1 insertions(+), 5 deletions(-) + +commit a56d4530d6149e2c4fc884a5cfeede2d6ff6d3b6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:54:21 2008 +0100 + + [test/smask-text] Propagate error. + + Use cairo_get_target() to propagate error from the secondary context. + + test/smask-text.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit b1e884cd89ab2b83d3b8e072414e4e3f63e3a023 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:52:55 2008 +0100 + + [test/smask-stroke] Propagate error. + + Use cairo_get_target() to propagate the error from the secondary context. + + test/smask-stroke.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) + +commit 546fbc2c0cf87abd627477056bf19063c5aa001a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:50:25 2008 +0100 + + [test/smask-paint] Propagate error. + + Use cairo_get_target() to propagate errors from the secondary context. + + test/smask-paint.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 8bd69132827fa539d9dfb65bd00e00c079827360 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:49:02 2008 +0100 + + [test/smask-mask] Propagate error. + + Use cairo_get_target() to propagate errors from the secondary contexts. + + test/smask-mask.c | 46 ++++++++++++++++++++++------------------------ + 1 files changed, 22 insertions(+), 24 deletions(-) + +commit 9c0fe6c61e92044e8599f49e75d38edcdd6be960 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:45:07 2008 +0100 + + [test/smask-image-mask] Propagate error. + + Use cairo_get_target() to propagate any error status from the secondary + context. + + test/smask-image-mask.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 373d6c76b65e826f81873b51461bdf3c30024c06 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:43:26 2008 +0100 + + [test/smask-fill] Propagate error status. + + Use cairo_get_target() to propagate the error from the secondary context. + + test/smask-fill.c | 13 ++++++------- + 1 files changed, 6 insertions(+), 7 deletions(-) + +commit bb05beaab626d2fca6d219bfd8148dde71073b39 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 15:27:11 2008 +0100 + + [test/show-glyphs-many] Check for NO_MEMORY + + As we do a manual status check, we need to perform a full check. + + test/show-glyphs-many.c | 11 ++++++----- + 1 files changed, 6 insertions(+), 5 deletions(-) + +commit c0a4ef76e17dfd43d248c13b7f0665da9b847316 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 14:57:42 2008 +0100 + + [test/composite-integer-translate-over-repeat] Propagate error. + + Use cairo_get_target() to propagate any errors from the secondary context. + + test/composite-integer-translate-over-repeat.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +commit 4a9e0f0e5ba17a322bbf0f38b2fb418211571d48 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 16:50:32 2008 +0100 + + [test/mask] Propagate error from secondary context. + + Use cairo_get_target() to infect the primary context with any errors + raised whilst drawing the mask. + + test/mask.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit eaec1caa94ac871eb881ac354c4442ddd2a308ea +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 16:20:28 2008 +0100 + + [test/ft-text-*] Check for errors from fontconfig. + + If a match cannot be found, or if any other error occured, then fontconfig + will return NULL. Check and propagate. + + test/ft-text-antialias-none.c | 31 ++++++++++++++++++++++++++----- + test/ft-text-vertical-layout-type1.c | 31 ++++++++++++++++++++++++++----- + test/ft-text-vertical-layout-type3.c | 31 ++++++++++++++++++++++++++----- + 3 files changed, 78 insertions(+), 15 deletions(-) + +commit 336eddfdbb31865e3669ceb775089c63ce1db27f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 17:19:12 2008 +0100 + + [test/get-clip] Check the status on the secondary context. + + As we solely use a secondary context, we must manually report NO_MEMORY + errors whilst running under memfault. + + test/cairo-test.c | 14 +++++++- + test/cairo-test.h | 4 ++ + test/get-clip.c | 98 +++++++++++++++++++++++++++-------------------------- + 3 files changed, 67 insertions(+), 49 deletions(-) + +commit d48f9340514c258cfece1b72d2f7e3f7b2d3c7b1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 14:05:14 2008 +0100 + + [test/clip-operator] Propagate error from secondary context. + + Use the cairo_get_target() to propagate any errors from the secondary + context. + + test/clip-operator.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +commit d11014386f739f43ec5f290714d7c51cc638f172 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 5 13:37:07 2007 +0100 + + Add support for lockdep. + + lockdep is a valgrind skin which performs pthread locking correctness + validation. In particular it allows one to write assert(HOLDS_LOCK(mutex)) + which both documents the preconditions for a function and enforces them + when the program is run under lockdep. + + As an aide to lockdep (as it works by intercepting the pthread functions), + all the mutexes should be initialised and destroyed using + pthread_mutex_init() and pthread_mutex_destroy() rather than using static + initializers and no-ops. + + src/cairo-mutex-impl-private.h | 14 ++++++++++++++ + src/cairo-mutex-type-private.h | 6 +++++- + src/cairo-scaled-font.c | 13 +++++++++++++ + 3 files changed, 32 insertions(+), 1 deletions(-) + +commit bccfdf7d93c2a92a342127fc212770f4053cb2cf +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 13:47:27 2008 +0100 + + [test] Add support for memfault. + + Add the core support to cairo-test for running the test-suite under a + malloc fault injector. This commit contains the adjustments to + cairo_test_run() to repeat the test if it detects a failure due to fault + injection and complains if it detects unreported faults or memory leaks. + + build/configure.ac.analysis | 17 +++ + test/cairo-test.c | 271 +++++++++++++++++++++++++++++++++--------- + test/cairo-test.h | 10 ++- + 3 files changed, 239 insertions(+), 59 deletions(-) + +commit 974fabfe059f9744116d20fd9f8b59f1b8c34b70 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 17 18:52:51 2008 +0100 + + [ft] Add more comments about FT_Face lifetime issues. + + Currently we only have an example of how to call FT_Done after the last + reference to the FT cairo_font_face_t has been dropped, but do not + actually explain why this needs to be done. So add a couple of sentences + to clarify the likely lifetime of the FT_Face once exposed to cairo. + + src/cairo-ft-font.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +commit 5fcfc7ebc9a2d1d947898d269be7ba91d27c5261 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 17:13:45 2008 +0100 + + [test/README] Document all fonts used. + + Do a little leg-work to answer a query in a bug report and document the + results. + + test/README | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit c1164a574d3e2cc4746384875d5c2781114c0ea4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Oct 16 08:49:13 2008 +0100 + + [type1] Add comment to warn about read() as macro. + + In case we are ever tempted to simplify the function pointer, warn that it + may alias with a macro. + + src/cairo-type1-subset.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +commit ff9ee74b37a88cba2e996bf0cdae1af6b6c6fe30 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 16 17:29:33 2008 +1030 + + Revert unintended changes to test/fallback-resolution.c in the previous commit + + test/fallback-resolution.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5911c6966de832fa350a6e9a4d587b7c3b3b4825 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Thu Oct 16 17:22:48 2008 +1030 + + Use correct inverse ctm for stroke in meta surface replay + + This fixes #9189 Dashed strokes too long in fallback images + + src/cairo-meta-surface.c | 2 +- + test/fallback-resolution.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 6afcd821182137e8c3f128f9600e97cff79978b8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 22:41:26 2008 +0100 + + [test] Add a spline test. + + Test the decomposition of 5 different types of spline curve. Useful test + for future experiments in improving the decomposition algorithm. + + Note: the vector targets all need separate reference images due to their + lack of support for cairo_set_tolerance(). Also GS strokes the Bezier + curve differently using offset curves and opposed to transcribing the + outline of a pen. + + test/.gitignore | 1 + + test/Makefile.am | 7 + + test/spline-decomposition-pdf-ref.png | Bin 0 -> 20404 bytes + test/spline-decomposition-ps2-ref.png | Bin 0 -> 8957 bytes + test/spline-decomposition-ps3-ref.png | Bin 0 -> 8957 bytes + test/spline-decomposition-ref.png | Bin 0 -> 20402 bytes + test/spline-decomposition-svg11-ref.png | Bin 0 -> 20404 bytes + test/spline-decomposition-svg12-ref.png | Bin 0 -> 20404 bytes + test/spline-decomposition.c | 416 +++++++++++++++++++++++++++++++ + 9 files changed, 424 insertions(+), 0 deletions(-) + +commit 91b0dc92c8ede189d942188f92068f189907e239 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 22:27:53 2008 +0100 + + [build] Add -fno-common. + + Generate a warning if two files define a global variable with the same + name, instead of silently merging them to reference the same location. + + build/configure.ac.warnings | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit b94b600b34793cecd9a66d37dd34a6619738e2c2 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Oct 15 13:41:03 2008 -0400 + + [quartz] Completely remove CAIRO_HAS_QUARTZ_IMAGE_SURFACE check + + Instead of fixing the check in d36b02dc662e623bee58a69c32b149a242cbf52b, just + remove it. Conditionally compilation will keep cairo-quartz-image-surface.c + from being compiled in when it is not configured to be. Suggested by Behdad. + + src/cairo-quartz-image-surface.c | 4 ---- + 1 files changed, 0 insertions(+), 4 deletions(-) + +commit d36b02dc662e623bee58a69c32b149a242cbf52b +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Oct 15 12:45:11 2008 -0400 + + [quartz] Rebalance 'CAIRO_HAS_QUARTZ_IMAGE_SURFACE' #ifdef + + Fixes compilation by re-adding '#ifdef CAIRO_HAS_QUARTZ_IMAGE_SURFACE' which + was, I assume, unintentionally removed by + 2cf4b3161c19b9b0349bd2aa94855fd0822968be. + + src/cairo-quartz-image-surface.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 83162360a44c4d4701f0ade2e2ee813f79186439 +Author: Jeff Muizelaar <jmuizelaar@mozilla.com> +Date: Wed Oct 15 10:34:12 2008 -0400 + + Fix quratz_image typo in Makefile.sources. + + src/Makefile.sources | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 877e77fa3e85c09c29e64ca5ae7329346db029cc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 12:20:00 2008 +0100 + + [glitz] Disable caching of solid surfaces. + + glitz currently has no mechanism to release resources upon connection + closure (ala XCloseDisplay) and so will attempt invalid accesses when + evicting old surfaces from the solid pattern cache. + + src/cairo-glitz-surface.c | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +commit fc04a1e0dbc3cefa51c7602e0a23dba886813fe5 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 12:13:40 2008 +0100 + + [boilerplate] Fixup compilation for gliitz. + + Convert a few old references to cairo_boilerplate_surface_set_user_data. + + boilerplate/cairo-boilerplate-glitz.c | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit e17f02add019d9acf461a1ad1245ba5be00cf336 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 10:52:33 2008 +0100 + + [type1] Protect against read macro + + POSIX allows for any of its functions to be implemented as a macro, + inflicting damage upon innocent function pointers that happen to share + the same name. + + face->stream->read() is one such example. + + As it's outside of our control (being a FT_Face) we cannot simply rename + the data member, so we need to explicitly dereference it as a function + pointer in order to disambiguate it for the compiler. + + src/cairo-type1-subset.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit bc872a5f5fb9b6318dc78d132da46a6b201f75c7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 10:21:05 2008 +0100 + + [xlib] Handle 4,20,24,28 depth XImages + + Bug 9102 cairo doesn't support 24 bits per pixel mode on X11 + (https://bugs.freedesktop.org/show_bug.cgi?id=9102) + is a reminder that that we need to support many obscure XImage formats. + With Carl's and Behdad's work to support psuedocolor we have a mechanism + in place to handle any format that is not natively handled by pixman. The + only piece we were missing was extending the swapper to handle all-known + formats and putting in defensive checks that pixels were correctly aligned + in accordance with pixman's requirements. + + src/cairo-image-surface.c | 13 ++++---- + src/cairo-xlib-surface.c | 70 +++++++++++++++++++++++++++++++++++++------- + src/cairoint.h | 2 +- + 3 files changed, 66 insertions(+), 19 deletions(-) + +commit 1728fa352011c570ce1bcc3bd14897e789c85252 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 15 09:23:01 2008 +0100 + + [svg] Add notes about why we shouldn't add DOCTYPE. + + Emmanuel Pacaud did some research into adding DOCTYPE after we had a + complaint that our SVG output failed to be validated by batik. The + conclusion he came to was that the validation of SVG was incomplete and + misleading, i.e. our output might generate false negatives leading to more + confusion. + + src/cairo-svg-surface.c | 22 ++++++++++++++++++++++ + 1 files changed, 22 insertions(+), 0 deletions(-) + +commit e9f5ee6efe7725c1e0e32fa9e85cca61ecb93440 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 14:42:48 2008 +0100 + + [doc] Fix a few gtk-doc errors. + + gtk-doc insists on a non-empty long description, even for trivial + functions that are fully described by their input arguments and return + value. Grrr. + + src/cairo-gstate.c | 4 ++++ + src/cairo-os2-surface.c | 2 ++ + src/cairo-scaled-font.c | 14 +++++++------- + src/cairo-surface.c | 4 +++- + src/cairo-unicode.c | 6 ++++-- + 5 files changed, 20 insertions(+), 10 deletions(-) + +commit 595414bb787d570ac95fc91c58c370558e9d5a54 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 14:24:49 2008 +0100 + + [test/fallback-resolution] Extend to cover separate ppi x/y. + + Adrian Johnson proposed a hack that fixed the current test by simply + scaling the dashed stroke by device_transform.xx. Obviously this exposes a + deficiency in the test case. So add an outer loop to iterate over several + common ppi for both x and y and in doing so reveal more ugly artifacts in + the current fallback code. + + test/Makefile.am | 42 +++++- + test/fallback-resolution-ppi150-ref.png | Bin 8043 -> 0 bytes + test/fallback-resolution-ppi150x150-ref.png | Bin 0 -> 8043 bytes + test/fallback-resolution-ppi150x300-ref.png | Bin 0 -> 6848 bytes + test/fallback-resolution-ppi150x37.5-ref.png | Bin 0 -> 13176 bytes + test/fallback-resolution-ppi150x600-ref.png | Bin 0 -> 6338 bytes + test/fallback-resolution-ppi150x72-ref.png | Bin 0 -> 8370 bytes + test/fallback-resolution-ppi150x75-ref.png | Bin 0 -> 10445 bytes + test/fallback-resolution-ppi300-ref.png | Bin 5637 -> 0 bytes + test/fallback-resolution-ppi300x150-ref.png | Bin 0 -> 6851 bytes + test/fallback-resolution-ppi300x300-ref.png | Bin 0 -> 5637 bytes + test/fallback-resolution-ppi300x37.5-ref.png | Bin 0 -> 12870 bytes + test/fallback-resolution-ppi300x600-ref.png | Bin 0 -> 4848 bytes + test/fallback-resolution-ppi300x72-ref.png | Bin 0 -> 7053 bytes + test/fallback-resolution-ppi300x75-ref.png | Bin 0 -> 9617 bytes + test/fallback-resolution-ppi37.5-ref.png | Bin 14098 -> 0 bytes + test/fallback-resolution-ppi37.5x150-ref.png | Bin 0 -> 12728 bytes + test/fallback-resolution-ppi37.5x300-ref.png | Bin 0 -> 11981 bytes + test/fallback-resolution-ppi37.5x37.5-ref.png | Bin 0 -> 14098 bytes + test/fallback-resolution-ppi37.5x600-ref.png | Bin 0 -> 11654 bytes + test/fallback-resolution-ppi37.5x72-ref.png | Bin 0 -> 12990 bytes + test/fallback-resolution-ppi37.5x75-ref.png | Bin 0 -> 13787 bytes + test/fallback-resolution-ppi600-ref.png | Bin 4104 -> 0 bytes + test/fallback-resolution-ppi600x150-ref.png | Bin 0 -> 6096 bytes + test/fallback-resolution-ppi600x300-ref.png | Bin 0 -> 4812 bytes + test/fallback-resolution-ppi600x37.5-ref.png | Bin 0 -> 12401 bytes + test/fallback-resolution-ppi600x600-ref.png | Bin 0 -> 4104 bytes + test/fallback-resolution-ppi600x72-ref.png | Bin 0 -> 6398 bytes + test/fallback-resolution-ppi600x75-ref.png | Bin 0 -> 8974 bytes + test/fallback-resolution-ppi72-ref.png | Bin 8409 -> 0 bytes + test/fallback-resolution-ppi72x150-ref.png | Bin 0 -> 8069 bytes + test/fallback-resolution-ppi72x300-ref.png | Bin 0 -> 6803 bytes + test/fallback-resolution-ppi72x37.5-ref.png | Bin 0 -> 13147 bytes + test/fallback-resolution-ppi72x600-ref.png | Bin 0 -> 6245 bytes + test/fallback-resolution-ppi72x72-ref.png | Bin 0 -> 8409 bytes + test/fallback-resolution-ppi72x75-ref.png | Bin 0 -> 10628 bytes + test/fallback-resolution-ppi75-ref.png | Bin 12101 -> 0 bytes + test/fallback-resolution-ppi75x150-ref.png | Bin 0 -> 9940 bytes + test/fallback-resolution-ppi75x300-ref.png | Bin 0 -> 9003 bytes + test/fallback-resolution-ppi75x37.5-ref.png | Bin 0 -> 14020 bytes + test/fallback-resolution-ppi75x600-ref.png | Bin 0 -> 8455 bytes + test/fallback-resolution-ppi75x72-ref.png | Bin 0 -> 10202 bytes + test/fallback-resolution-ppi75x75-ref.png | Bin 0 -> 12101 bytes + test/fallback-resolution.c | 199 +++++++++++++------------ + 44 files changed, 139 insertions(+), 102 deletions(-) + +commit 0d3e152d2fe28b22a27dd6b9f82e2047aea3be94 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 13:44:47 2008 +0100 + + [check-doc-syntax.sh] Allow quoting. + + func_regexp was incorrectly complaining that cairo_pure was a function without + parenthesis. The simplest solution appeared to be allow quoting of + 'cairo_pure'. + + src/cairo-compiler-private.h | 22 +++++++++++----------- + src/check-doc-syntax.sh | 6 +++--- + 2 files changed, 14 insertions(+), 14 deletions(-) + +commit 02a7ca80f9f9b62deff6c8ba4dc58fee0cebcaa6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 11:08:43 2008 +0100 + + [pattern] Correctly optimize away fractional translations. + + As is so often the case, reading the commit log gives you fresh insight in + the problem - often called confessional debugging... + + We can simplify the problem by ignoring attr->[xy]_offset, for the time + being, and focus on computing the correct matrix. This is comparatively + simple as all we need to do is perform the appropriate rounding on the + translation vector. + + src/cairo-pattern.c | 18 ++++++++++-------- + 1 files changed, 10 insertions(+), 8 deletions(-) + +commit 9886cb3353eb02ce5b99d555a35b13b8347f8e87 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 10:23:41 2008 +0100 + + [pattern] Only perform non-integer optimization for identity matrices. + + A complication I realised after pushing 3eb4bc3 was handling larger + sampled areas. Extending the test case revealed that the optimization + was broken for anything but the identity transform (after removing the + translation). Correctness first, leaving the "pixel-exact" solution for + interested reader... + + src/cairo-pattern.c | 16 ++++++---------- + test/filter-nearest-transformed-pdf-ref.png | Bin 373 -> 548 bytes + test/filter-nearest-transformed-ref.png | Bin 151 -> 570 bytes + test/filter-nearest-transformed-svg11-ref.png | Bin 217 -> 559 bytes + test/filter-nearest-transformed-svg12-ref.png | Bin 217 -> 559 bytes + test/filter-nearest-transformed.c | 24 ++++++++++++++++++++++++ + 6 files changed, 30 insertions(+), 10 deletions(-) + +commit 8dc3deecb8e0ca2f84d996096230f27ab4c24c18 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 14 08:17:23 2008 +0100 + + Add documentation for function attributes 'pure' and 'const'. + + Carl suggested that cairo_pure and cairo_const are pretty opaque, even to + the developer who added them, so it is extremely important that they have + a good description so that they are used correctly and perhaps ported to + other compilers. + + src/cairo-compiler-private.h | 20 ++++++++++++++++++++ + 1 files changed, 20 insertions(+), 0 deletions(-) + +commit 6aa1143d5a8ec45fc793102a64e956d7d1c7ad01 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 13 23:49:17 2008 +0100 + + Update documentation to remove references to cairo_has_show_text_glyphs(). + + With the addition of cairo_show_text_glyphs() came a couple of functions + to query whether the target supported the extended attributes. However, + at Carl's request cairo_has_show_text_glyphs() was removed - but the + documentation was not updated to reflect that. + + NEWS | 2 +- + src/cairo-surface.c | 3 --- + src/cairo.c | 6 +++--- + 3 files changed, 4 insertions(+), 7 deletions(-) + +commit b2053945df35d4d7eea9fe3200e9c018705309d1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 13 23:39:47 2008 +0100 + + [scaled-font] Correct documentation for cairo_scaled_font_create(). + + Fix the documentation not to suggest that NULL is a legal value for + font_options (as we temporarily made it during the 1.[57] dev cycle). + + src/cairo-scaled-font.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit 3eb4bc37577e905d93a1935e7a9cd33ae8dbda15 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 13 23:26:04 2008 +0100 + + [pattern] Optimize away fractional translation for NEAREST patterns. + + As identified in bug 15479, + Unpredictable performance of cairo-xlib with non-integer translations of a + source surface pattern + (https://bugs.freedesktop.org/show_bug.cgi?id=15479), + source surfaces with a fractional translation hit slow paths for some + drivers, causing seemingly random performance variations. As a work-around + Owen Taylor proposed that cairo could convert non-integer translations on + NEAREST sources patterns to their integer equivalents. + + The messy detail involved here is replicating the rounding mode used by + pixman for the sample offset, but otherwise the conversion is fairly + trivial. + + src/cairo-pattern.c | 35 +++++++++ + test/.gitignore | 1 + + test/Makefile.am | 5 + + test/filter-nearest-transformed-pdf-ref.png | Bin 0 -> 373 bytes + test/filter-nearest-transformed-ref.png | Bin 0 -> 151 bytes + test/filter-nearest-transformed-svg11-ref.png | Bin 0 -> 217 bytes + test/filter-nearest-transformed-svg12-ref.png | Bin 0 -> 217 bytes + test/filter-nearest-transformed.c | 103 +++++++++++++++++++++++++ + 8 files changed, 144 insertions(+), 0 deletions(-) + +commit ceab32e2c3d51c0dd29b105a5a390cdd8aa58f8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 12 12:11:12 2008 +0100 + + [win32] win32 also uses font subsets. + + Include win32 in the list of font subset users, fixes build when + cross-compiling. + + src/cairoint.h | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 1d3453eee50e4343995c5d3f225d18289fbcebec +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 12 11:21:14 2008 +0100 + + [pattern] Rescale the linear pattern matrix to avoid overflow. + + As proof-of-principle, compute a scale factor to avoid overflow when + converting a linear pattern to pixman_fixed_t. Fixes test/huge-pattern, + but the principle should be extended to handle more cases of overflow. + + src/cairo-pattern.c | 48 ++++++++++++++++++++++++++++++---- + test/Makefile.am | 5 ++- + test/huge-pattern-pdf-ref.png | Bin 0 -> 2716 bytes + test/huge-pattern-pdf-rgb24-ref.png | Bin 0 -> 2817 bytes + test/huge-pattern-ps3-ref.png | Bin 0 -> 1786 bytes + 5 files changed, 45 insertions(+), 8 deletions(-) + +commit ab1d106cba7aa4abe5f7253c089aadd15e0bb06d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 11 19:52:28 2008 +0100 + + [xlib] Use the cached xrender formats. + + Use the cached formats for consistency and simplify several double pointer + dereferences. + + src/cairo-xlib-surface.c | 64 ++++++++++++++++++++++++++++----------------- + 1 files changed, 40 insertions(+), 24 deletions(-) + +commit 6736faba3ebe4eae4c1d2aeeb3153eb6f12a32de +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 11 18:10:16 2008 +0100 + + [test/any2ppm] Do not attempt to compile PS without spectre + + Since CAN_TEST_PS_SURFACE does not currently require spectre, we were + attempting to compile in spectre support for any2ppm even on systems + without libspectre installed. Fix that by adding a separate flag for + CAIRO_HAS_SPECTRE. + + configure.ac | 5 ++++- + test/Makefile.am | 2 +- + test/any2ppm.c | 28 ++++++++++++++++++++-------- + 3 files changed, 25 insertions(+), 10 deletions(-) + +commit b35871116243724b59738fce00b512818c83ea17 +Author: Benjamin Otte <otte@gnome.org> +Date: Sat Oct 11 00:18:11 2008 +0100 + + [test] Add huge pattern. + + Add a test case to exercise range overflow during gradient construction. + + test/.gitignore | 1 + + test/Makefile.am | 4 ++ + test/huge-pattern-ref.png | Bin 0 -> 1619 bytes + test/huge-pattern.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 79 insertions(+), 0 deletions(-) + +commit 77070270813d2ca40d422e5301f75222d19e1d8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 10 22:24:01 2008 +0100 + + [test] Use _POSIX_C_SOURCE for flockfile. + + From bug 18010 (https://bugs.freedesktop.org/show_bug.cgi?id=18010), + in order to make flockfile() available we need to set _POSIX_C_SOURCE and + according to the man page, the appropriate feature check is + _POSIX_THREAD_SAFE_FUNCTIONS. + + test/cairo-test.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit 34ff7e4ac42acfb2ab9921da21933113518bd8a0 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Oct 11 23:44:37 2008 +1030 + + Check that reads in truetype_reverse_cmap are within valid data + + Bulia Byak reported a bug where cairo was crashing with a particular + font. The font had an incorrect entry in the cmap table that caused + cairo to read from outside of the buffer allocated for the cmap. + + src/cairo-truetype-subset.c | 12 +++++++++++- + 1 files changed, 11 insertions(+), 1 deletions(-) + +commit a16ef6ead2b02120ca482aa3d2667e51b0c67e78 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 10 18:03:49 2008 +0100 + + [INSTALL] Mention pkg-config requirement + + Mention that building the configure script requires at least version 0.16 + of pkg-config. + + See the old bug: + Bug 4702 PKG_PROG_PKG_CONFIG: command not found + (https://bugs.freedesktop.org/show_bug.cgi?id=4702) + + INSTALL | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit eba9d87d541d89804f70e56874538a249de08502 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 10 16:51:07 2008 +0100 + + [image] Warn about a potential NULL return after finish(). + + Improve the wording as suggested by + https://bugs.freedesktop.org/show_bug.cgi?id=12659 + to warn about the possibility of returning NULL even if the passed in + surface was an image surface. + + src/cairo-image-surface.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit ac3e4b4bea574c94de77ec15878d116b619ee3f4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Oct 10 14:00:32 2008 +0100 + + [xlib] Disable XRender support if the surface has no xrender_format + + Bug 11734: + XRender crashes due to NULL pointer from Cairo on SGI O2 + (https://bugs.freedesktop.org/show_bug.cgi?id=1173) + is an example of a case where we try to perform an XRender operation on a + surface with a format that was not supported by the XRender extension. By + marking the extension version as -1 on those surfaces, the current checks + for SURFACE_RENDER_HAS_* always correctly return false and prevent us try + to create a Picture with a NULL xrender_format. + + src/cairo-xlib-surface.c | 37 ++++++++++++++++++++++++------------- + 1 files changed, 24 insertions(+), 13 deletions(-) + +commit 8ac8e8c523abaa5db24c5303c671ff3487bf0801 +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Sun Sep 21 14:29:30 2008 +0200 + + [test] Add ps2png check program using libspectre + + Add a simple program to compliment pdf2png and svg2png. + + configure.ac | 1 + + test/Makefile.am | 8 ++++ + test/ps2png.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 122 insertions(+), 0 deletions(-) + +commit 3e6afb353da1fee624b519f5a96b3303c7eb91ae +Author: Carlos Garcia Campos <carlosgc@gnome.org> +Date: Thu Oct 9 12:11:51 2008 +0100 + + [test/any2ppm] Enable PS conversion using libspectre. + + Complete the vector trilogy using libspectre to provide a similar + interface (to poppler and librsvg) around GhostScript. + + AUTHORS | 1 + + configure.ac | 20 ++++++++++++--- + test/Makefile.am | 4 +- + test/any2ppm.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 4 files changed, 90 insertions(+), 8 deletions(-) + +commit ddd1615a1777181c6e8db1dbafacb68535ed163a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 23:13:03 2008 +0100 + + [pattern] Remove incorrect assert. + + It's possible to reach that point without setting the filter to NEAREST, + for example if using FAST or GAUSSIAN. + + src/cairo-pattern.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit c647c0bbca8694a14f5f5807b8349f0b0bb4987d +Author: Benjamin Otte <otte@gnome.org> +Date: Thu Oct 9 13:21:27 2008 +0200 + + [TEST] make imagediff work again + + It seems to have bitrotten + + test/imagediff.c | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit f644d78dc138a7ba920a108dfb058e9f0fdb5302 +Author: Björn Lindqvist <bjourne@gmail.com> +Date: Wed Oct 8 20:08:25 2008 +0100 + + [perf] Add composite performance test. + + Add a new test case to Cairo for checking the performance of Cairo's + equivalent to GDK's gdk_pixbuf_composite_color() operation. That is an + operation that happens to be extremely useful when viewing or editing + transparent images so I think it is important that it is as fast as + possible. + + AUTHORS | 1 + + perf/Makefile.am | 1 + + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/composite-checker.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 112 insertions(+), 0 deletions(-) + +commit 96b083d3f0e47f919cb6d0f06735427eaea21565 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 18:53:46 2008 +0100 + + [test] Exercise degenerate dashes. + + Add a test case to capture the current behaviour when a segment ends on + an off/on dash transition. + + Originally filed as bug: + Miter artifacts for dashed strokes + https://bugs.freedesktop.org/show_bug.cgi?id=17973 + + test/.gitignore | 1 + + test/Makefile.am | 2 + + test/degenerate-dash-ref.png | Bin 0 -> 2005 bytes + test/degenerate-dash.c | 97 ++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 100 insertions(+), 0 deletions(-) + +commit 6487a147a2129f588aae900b048b2a801ef95ec0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 15:26:03 2008 +0100 + + [cairo.h] Be defensive when checking for _MSC_VER + + Since cairo.h is a public header file, we need to be careful so that it + can be compiled by random compilers and even users specifying "-Werror + -Wundef" (mentioning no names, Company). So replace the bare (and legal) + #if _MSC_VER + with + #if defined (_MSC_VER) + just in case. + + src/cairo.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 59141e56a723f741c87e2eaa37bf96e243ac5728 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 13:50:28 2008 +0100 + + [win32] Restore fine-grained fallback support for printing. + + Missed updating win32 when implementing the new paginated API to query + support for the fine-grained fallbacks. + + (Thanks to Adrian for spotting this oversight.) + + src/cairo-win32-printing-surface.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +commit 565c02a37e2d140a20867081eea9bb5de9999b1c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 8 11:06:42 2008 +0100 + + [svg] Use finer-grained fallbacks for SVG 1.2 + + The use of fine-grained fallbacks requires the native support of the + SOURCE operator applied to an image on the target surface. SVG 1.2 + introduces the "comp-op:src" mode fulfilling this criteria - so we can + enable fine-grained fallbacks for 1.2+. + + Update test/fine-grained-fallbacks to exercise this pathway in SVG 1.2 - + as SVG natively supported all the current operations within that test. + This reveals yet another librsvg bug in handling SVG 1.2. + + src/cairo-paginated-private.h | 9 ++- + src/cairo-paginated-surface.c | 47 +++++--------- + src/cairo-pdf-surface.c | 14 +++- + src/cairo-ps-surface.c | 8 ++ + src/cairo-svg-surface.c | 34 +++++++--- + test/Makefile.am | 4 +- + test/finer-grained-fallbacks-ps2-argb32-ref.png | Bin 1047 -> 0 bytes + test/finer-grained-fallbacks-ps2-ref.png | Bin 0 -> 1356 bytes + test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 819 -> 1096 bytes + test/finer-grained-fallbacks-ps3-argb32-ref.png | Bin 1047 -> 0 bytes + test/finer-grained-fallbacks-ps3-ref.png | Bin 0 -> 1356 bytes + test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 819 -> 1096 bytes + test/finer-grained-fallbacks-ref.png | Bin 796 -> 1111 bytes + test/finer-grained-fallbacks-rgb24-ref.png | Bin 590 -> 1114 bytes + test/finer-grained-fallbacks.c | 79 ++++++++++++++++++++++- + 15 files changed, 147 insertions(+), 48 deletions(-) + +commit 0c777a3e0de0d48289432a3d66be68f8779b08a0 +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Tue Oct 7 15:20:33 2008 -0700 + + [win32] Use wide-char versions of some API functions, for compat with Windows Mobile + + src/cairo-win32-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit cf572b58e1197dac0ff1795b27b142c3e044cf45 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 09:55:03 2008 +0100 + + [tessellator] Compile fixes for !HAVE_INT64_T + + Fixup a couple of instances of implicit down-casting to 32bits from a + 64bit wide integer and add a new is_zero() predicate. + + src/cairo-bentley-ottmann.c | 14 +++++++------- + src/cairo-wideint-private.h | 10 +++++++++- + 2 files changed, 16 insertions(+), 8 deletions(-) + +commit 6b8c0559620ab23c4df1f381d2e95ffc307d2e2f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 09:43:45 2008 +0100 + + [tessellator] Avoid implicit promotion to 64bit integer. + + Avoid passing a 32bit integer as a cairo_int64_t in case we do not have a + 64bit native integral type. As a side-effect this means we can also use a + narrower multiply. + + src/cairo-bentley-ottmann.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +commit eaa4bd13926728e9da97a23df8a465ef2296049a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 21:09:16 2008 +0100 + + [pattern] After cloning adjust [xy]_offset if possible. + + For the simple case where the pattern matrix only contains an integer + translation then care is taken to convert that to a identity source matrix + with the translation applied to the [xy]_offsets. 5b97ee6525 broke this + guarantee by applying the clone offsets to the source matrix. So when the + source matrix is identity we can simply adjust the [xy]_offsets and + preserve the identity matrix. (This idea can be extended further by + removing any integer translation from the source matrix and storing it in + the [xy]_offsets as a means to extend the limited precision in + pixman_matrix_t - encountered when downscaling large images offset onto + the target surface.) + + src/cairo-pattern.c | 16 +++++++++++++--- + 1 files changed, 13 insertions(+), 3 deletions(-) + +commit 552cc09e6be2b704dc32f986c84640d50316c25c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 21:05:57 2008 +0100 + + [xlib] Check integer translation for XCopyArea. + + A precondition for using the core XCopyArea protocol is that the source + attributes contain only integer translations. However, we failed to apply + any integer translations from the source matrix to the XCopyArea offsets. + This worked prior to 5b97ee6525 as + _cairo_pattern_acquire_surface_for_surface() was careful to only generate + an identity matrix if the pattern matrix only contained an integer + translation (and thus we would use XCopyArea in the xlib backend). + + src/cairo-xlib-surface.c | 10 ++++++++-- + 1 files changed, 8 insertions(+), 2 deletions(-) + +commit 308485a3fc70bc4455a01990443c1f954b8a66f8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Oct 7 20:19:10 2008 +0100 + + [test] Add a test for a reported regression by Michael Natterer. + + mitch reported on irc that expose events in the gimp were suffering from + artifacts which he tracked down to a bug with clipping and source + surfaces. This is the cairo test case for that regression. + + test/.gitignore | 1 + + test/Makefile.am | 2 + + test/clipped-surface-ref.png | Bin 0 -> 401 bytes + test/clipped-surface.c | 70 ++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 73 insertions(+), 0 deletions(-) + +commit 28a3b546b91290f3377777adedcf7ab71e599188 +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Tue Oct 7 10:25:46 2008 -0700 + + [win32] create_similar should fall back to DIBs if DDB creation fail + + src/cairo-win32-surface.c | 43 +++++++++++++++++-------------------------- + 1 files changed, 17 insertions(+), 26 deletions(-) + +commit 4ae37a97b3e415591caa611533f44db5a29cfb72 +Author: Vladimir Vukicevic <vladimir@pobox.com> +Date: Tue Oct 7 10:18:41 2008 -0700 + + [quartz] initialize do_reflect field correctly for pattern draws + + src/cairo-quartz-surface.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +commit 8cf399b944294645833088ee2ac1313093948b66 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 18:59:15 2008 +0100 + + [test] Add a test to exercise the internal twin font + + Although Behdad promises that the rendering is subject to improvement, + introduce a test to check consistency across platforms and update as + required. + + test/.gitignore | 1 + + test/Makefile.am | 4 +++ + test/twin-ps2-ref.png | Bin 0 -> 1167 bytes + test/twin-ps3-ref.png | Bin 0 -> 1167 bytes + test/twin-ref.png | Bin 0 -> 1836 bytes + test/twin.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ + 6 files changed, 65 insertions(+), 0 deletions(-) + +commit 1f813ff04022a36a91bf9d1b0f7f2ae1c63b399f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 17:55:37 2008 +0100 + + [array] Silence gtk-doc complaints. + + gtk-doc fails make check for array as it insists that even the simplest + functions must have a long description and cannot be entirely described by + their arguments and return value. + + src/cairo-array.c | 26 ++++++++++++++++++++------ + 1 files changed, 20 insertions(+), 6 deletions(-) + +commit 7cb9ccb4cb2106bb59e181ee284f8dcc5504eb7a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 17:44:03 2008 +0100 + + Fixup a couple of trivials doc warnings. + + Correct the 'Returns' statement to match what gtk-doc expects. + + src/cairo-cache.c | 3 +-- + src/cairo-pattern.c | 5 ++--- + 2 files changed, 3 insertions(+), 5 deletions(-) + +commit d6f0351b6cbb0d542a069eb5d0a7377eb85a6e4e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 17:17:04 2008 +0100 + + [skiplist] Avoid repeated calls to compare on the same element when inserting. + + During insertion we must traverse the skiplist in order to find the + insertion point for the new element. As we descend each level, the next + element in the chain for this level is sometimes the same as the one we + just compared against (and know that the new element is greater than). + Hence we can skip the search on that level and descend to the next. During + world_map this reduces the number of calls into _sweep_line_elt_compare() + by ~2.5% (and when performing trapezoidation on strokes gives a similar + speed up of about 2% - not bad for the addition of a single line.) + + src/cairo-skiplist.c | 16 ++++++++++------ + 1 files changed, 10 insertions(+), 6 deletions(-) + +commit 1440399625ae0579d0748475fc924cfe74339a21 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 16:15:29 2008 +0100 + + [hull] Replace open-coding of 64bit arithmetic. + + Use primitives from cairo-wideint-private.h - in this case it helps to + make the code more readable as well as reduce dependence on native 64bit + integers. + + src/cairo-hull.c | 31 +++++++++++++++++++------------ + 1 files changed, 19 insertions(+), 12 deletions(-) + +commit c6a6bf580fa7036e4c28137f8c038beb5c347244 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 16:13:21 2008 +0100 + + [slope] Replace open-coding 64bit integer arithmetic. + + Prefer to use the operations form cairo-wideint-private.h in order to + improve readability and reduce our assumptions on the availability of + 64bit integers. + + src/cairo-slope.c | 14 ++++++-------- + 1 files changed, 6 insertions(+), 8 deletions(-) + +commit 5e3fcb7934f568bb7e304a1c434a9370b693df17 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Oct 6 17:02:54 2008 +0100 + + [wideint] Declare the wideint arithmetic functions as const. + + 'const' is a stricter form of 'pure' in that functions declared with that + attribute do not access any values other than their arguments (in + contrast to 'pure' which is allowed to read from global memory). + + src/cairo-compiler-private.h | 2 ++ + src/cairo-wideint-private.h | 2 +- + 2 files changed, 3 insertions(+), 1 deletions(-) + +commit 9430bf57ebc86c79e28128e54aeb5a194c9cad03 +Author: Carl Worth <cworth@cworth.org> +Date: Mon Oct 6 14:00:37 2008 -0700 + + Fix scrambled version number in generated documentation. + + In the cairo 1.8.0 release the documentation would get generated with + the second and third version components transposed, (so it would say + 1.0.8). Fix the obviously mistaken transposition. + + doc/public/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 5beae8f530fe7056fa965cb5ca7b345a667e8122 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 6 12:43:42 2008 -0400 + + [Makefile.am.releasing] Make 'make snapshot' print a banner when done + + Copied from "make distcheck" implementation. Prints something like: + + ============================================================= + cairo-1.8.1-20081006-38de89 archives ready for distribution: + cairo-1.8.1-20081006-38de89.tar.gz + ============================================================= + + build/Makefile.am.releasing | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +commit 38de895d3863bd2e6fe921ad6cc6eeff15102701 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 6 12:11:18 2008 -0400 + + [RELEASING] Fix sample distcheck output to reflect current versioning + + RELEASING | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit f8018cf193823356270c8e7f21f3108fbe44679c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 6 11:45:08 2008 -0400 + + [boilerplate] Fix "make dist" + + The cairo-boilerplate-ps/pdf/svg.h files where removed in commit + 9841d9d58ea286f798626d325d50a85bf3f02c8f but the Makefile.sources + listing was not updated. + + boilerplate/Makefile.sources | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 6578ac148ecdd236b0860923e5dee87291c9966c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 6 11:39:47 2008 -0400 + + [twin-font] Make the stroke lighter + + I'm still to fine-tune the font and add hinting and bold/oblique support. + In the mean time though, a lighter stroke produces much nicer glyphs. + + src/cairo-font-face-twin.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2fb7753903daf5c207b22034682a250161af22ad +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Oct 6 11:39:00 2008 -0400 + + [Makefile.am.releasing] Exclude uid/gid from tarball + + By setting GNU tar options --owner=0 --group=0 + + build/Makefile.am.releasing | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +commit 589564c3b02d5b0505806924bd051323717791a3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Oct 4 01:36:07 2008 -0400 + + [user-font] Fix comment re backend interface + + src/cairo-user-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit c98c1cb5325bbc05c88ea350ff99d6eaf56fd339 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 5 10:39:10 2008 +0100 + + [wideint] Mark functions as pure + + Take advantage of the gcc function attribute 'pure', which tells gcc that + the function result only depends upon its arguments and it has zero side + effects (e.g. it does not clobber memory). This gives gcc greater + opportunity to rearrange and optimize the wideint arithmetic. + + src/cairo-compiler-private.h | 6 ++++++ + src/cairo-wideint-private.h | 2 +- + 2 files changed, 7 insertions(+), 1 deletions(-) + +commit 76dd4603d01068b1b377312ced6b44fe5419794f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Oct 5 10:15:49 2008 +0100 + + [tessellator] Replace open-coding _cairo_int64_cmp(). + + We often use the construct: + if (_cairo_int64_lt (A, B) + return -1; + if (_cairo_int64_gt (A, B) + return 1; + return 0; + to compare two large integers (int64, or int128) which does twice the + required work on CPUs without large integer support. So replace it with a + single wideint function _cairo_int64_cmp() and therefore allow + opportunities to both shrink the code size and write a more efficient + comparison. (The primarily motivation is to simply replace each block with + a single more expressive line.) + + src/cairo-bentley-ottmann.c | 19 ++-------------- + src/cairo-wideint-private.h | 10 ++++++++- + src/cairo-wideint.c | 48 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 60 insertions(+), 17 deletions(-) + +commit 6eead4a5f746e182eabfcda9959cd9cc53d95a89 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 4 12:39:21 2008 +0100 + + [stroke] Simplify dash-off logic. + + Remove a redundant level of if-else branching (and remove a duplicate + code) block by testing dash_on first. + + src/cairo-path-stroke.c | 65 ++++++++++++++++++++-------------------------- + 1 files changed, 28 insertions(+), 37 deletions(-) + +commit 4aa0991a11f03a47735dcfafe43d9505b939554e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 4 20:22:18 2008 +0100 + + [test] Mark fallback-resolution as XFAIL. + + There appears to be no simple solution here, as it seems to be a + fundamental flaw in the design of the meta-surface wrt to replaying into + a fallback image. (I may be wrong, but if Carl found no easy solution then + I feel no shame for my own failure ;-) + + test/Makefile.am | 13 +++++++++++++ + 1 files changed, 13 insertions(+), 0 deletions(-) + +commit ae87382a84770f8656c369d258f705b8ac20049c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Oct 4 10:54:25 2008 +0100 + + [tessellator] Special case edge comparisons when on either end-point. + + If the sweep-line is currently on an end-point of a line, + then we know its precise x value and can use a cheaper comparator. + Considering that we often need to compare events at end-points (for + instance on a start event), this happens frequently enough to warrant + special casing. + + src/cairo-bentley-ottmann.c | 100 +++++++++++++++++++++++++++++++++++++++++-- + 1 files changed, 96 insertions(+), 4 deletions(-) + +commit ab23c2995356821537b9a0facdff87c339a05d2a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 1 12:18:16 2008 +0100 + + [tessellator] Direct comparison of result in edges_compare_x_for_y. + + We need to compare the x-coordinate of a line at a for a particular y, + without loss of precision. + + The x-coordinate along an edge for a given y is: + X = A_x + (Y - A_y) * A_dx / A_dy + + So the inequality we wish to test is: + A_x + (Y - A_y) * A_dx / A_dy -?- B_x + (Y - B_y) * B_dx / B_dy, + where -?- is our inequality operator. + + By construction we know that A_dy and B_dy (and (Y - A_y), (Y - B_y)) are + all positive, so we can rearrange it thus without causing a sign + change: + A_dy * B_dy * (A_x - B_x) -?- (Y - B_y) * B_dx * A_dy + - (Y - A_y) * A_dx * B_dy + + Given the assumption that all the deltas fit within 32 bits, we can compute + this comparison directly using 128 bit arithmetic. + + src/cairo-bentley-ottmann.c | 97 ++++++++++++++++++++++++------------------ + src/cairo-wideint-private.h | 1 + + 2 files changed, 56 insertions(+), 42 deletions(-) + +commit 7db03ac68cd556c903c07a2e2f8b75ec51263d12 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 1 12:34:36 2008 +0100 + + [tessellator] Use abort() instead of exit(). + + More friendly when debugging, as the debug will (by default) catch the + SIGTRAP and break at the offending test. + + src/cairo-bentley-ottmann.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 59e569576d00e9c1cb66a77cf447c3cc3fb038e7 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 19:04:39 2008 +0100 + + [traps] Discard trivially empty trapezoid. + + The convex_quad tessellator (and possibly even the more general polygon + tessellator) will generate empty trapezoids when given a + rectangle which can be trivially discarded before inserting into traps. + + src/cairo-traps.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +commit 7a2329e9c8afbfecb88c6c50bd63aa03ea7f9f81 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 1 09:49:45 2008 +0100 + + [traps] Reset extents on clearing. + + When clearing the array of current trapezoids, reset the extents to + infinite so that they are properly recomputed. + + src/cairo-traps.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 8ec24a443d45b012df9b1a14b00a0b5b1c43e2ea +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 23:19:01 2008 +0100 + + [xlib] Share the common conditions for starting a new xGlyphElt using a macro. + + Move the predicate for starting a new glyph elt into a macro so that it + can be shared between _cairo_xlib_surface_emit_glyphs() and + _emit_glyph_chunks() without code duplication. + + src/cairo-xlib-surface.c | 39 ++++++++++++++++++++++----------------- + 1 files changed, 22 insertions(+), 17 deletions(-) + +commit a593338b2c2cdaff808947436f8fb9a52d74c695 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 1 16:24:33 2008 +0100 + + [xcb] Return false from _cairo_xcb_surface_is_similar(). + + _cairo_xcb_surface_is_similar() is currently only used by the pattern + cache to determine whether to keep the surface in the solid color cache. + This is fundamentally broken without hooking into Display closure as it + keeps a reference to an expired picture. So in order to prevent spurious + application crashes, disable the caching for xcb. + + src/cairo-xcb-surface.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 65f1575f6b2392d59410f40281a52654053bd2a8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Wed Oct 1 16:16:45 2008 +0100 + + [xcb] Compile fix. + + Must compile xcb more often. Especially after copying code over from xlib. + + src/cairo-xcb-surface.c | 41 ++++++++++++++++++++++++----------------- + 1 files changed, 24 insertions(+), 17 deletions(-) + +commit e76432f7544d5b3b9157f09e18acc167d9ee90a3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Sat Oct 4 00:35:43 2008 -0400 + + [win32] Use -MDd and -LDd instead of -MD and -LD for debug build + + As reported by Damian Frank: + + "I ran into a hitch with the Makefile.win32 infrastructure. It uses -MD and + -LD when linking regardless of the config, but it should be using -MDd and + -LDd for the debug config. I believe both the Makefile.win32.common and + src/Makefile.win32 files include erroneous declarations. This produces + warnings at link time about a mismatch when linking against properly created + debug libs (for instance, I had a zlib built as "LIB ASM Debug" that linked + properly against the debug runtime). + + This problem applies to pixman too; can you pass this along to the + maintainer?" + + Would be delighted to if someone commits a fix to pixman reading this + commit message. + + build/Makefile.win32.common | 8 ++++++-- + src/Makefile.win32 | 2 +- + 2 files changed, 7 insertions(+), 3 deletions(-) + +commit 8ea9cb187a198c64bfb79af8001d95eab29715b4 +Author: Carl Worth <cworth@cworth.org> +Date: Wed Oct 1 14:12:18 2008 -0700 + + Use symbolic constants for Render repeat modes. + + Names like RepeatNone and RepeatNormal are much easier to + read and understand than bare 0 and 1. + + src/cairo-xlib-surface.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 2c58a2c3851afac0386fcf0bf8504a937231185c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 17:55:01 2008 -0400 + + [xlib] Start a new glyph element every 128 glyphs + + Xrender has limits at 252 glyphs. We play safe and fast and limit + elements to 128 glyphs. That's plenty, no measurable performance + hit expected. + + src/cairo-xlib-surface.c | 26 ++++++++++++++++++++++---- + 1 files changed, 22 insertions(+), 4 deletions(-) + +commit fd7e09c7e66876b8492424e1c7d1260c12cc17f3 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 17:46:06 2008 -0400 + + [xlib] Allow room for glyph element padding + + Xrender pads glyph elements to 4byte boundaries. We didn't consider + that in our request size calculations. We do now. + + src/cairo-xlib-surface.c | 9 +++++++-- + 1 files changed, 7 insertions(+), 2 deletions(-) + +commit c01fb77abbaf28c03aa6a21ebb997638dbdf950b +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 17:41:51 2008 -0400 + + [xlib] s/_cairo_xlib_surface_emit_glyphs_chunk/_emit_glyphs_chunk/ + + For readability's sake. + + src/cairo-xlib-surface.c | 34 +++++++++++++++++----------------- + 1 files changed, 17 insertions(+), 17 deletions(-) + +commit c2ba25df1aec1cebfc4ce85e06a4187950675820 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 17:40:56 2008 -0400 + + [xlib] Add comment about glyph chunk invariant + + src/cairo-xlib-surface.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit e983458e1fba15153815430c83619da53929139d +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 17:26:46 2008 -0400 + + Revert "[xlib] Correct calculation of XRenderComposite* request size." + + This reverts commit 0eb0c26474a19477554bfd580aa5f8ae77c29779. + The change was too drastic and overlooked some subleties of the old + code, but the main reason for the revert is that it introduced an + ugly duplicated glyph flush block. I'm working on a more incremental + fix. + + src/cairo-xlib-surface.c | 123 +++++++++++++++++----------------------------- + 1 files changed, 45 insertions(+), 78 deletions(-) + +commit 32a158528884562f4b22a81da3fa352ee1061835 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Tue Sep 30 15:20:36 2008 -0400 + + [configure.ac] Require autoconf >= 2.59 and automake >= 1.9.6 + + These are the versions available on RHEL5 (two years old now), and + we know cairo works with them. There's evidence that our build system + does not work with older automake, and we've been requiring autoconf 2.58 + but no one ever tested 2.58 with the new build system. It's very likely + that 2.58 doesn't work and needs some macro backporting. In any case, + no one reported that they have 2.58 when I asked on the list. + + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit 0eb0c26474a19477554bfd580aa5f8ae77c29779 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 13:33:25 2008 +0100 + + [xlib] Correct calculation of XRenderComposite* request size. + + show-glyphs-many is triggering an assertion failure within xlib. The cause + appears to be that we are submitting an overlong request. + + Reviewing the code and comparing with libXrender/src/Glyph.c I found two + points to address. + + 1. When encountering the first 2-byte, or 4-byte glyph and thus triggering + the recalculation of the current request_size, we did not check that there + was enough room for the expanded request. In case there is not, we need to + emit the current request (before expansion) and reset. + + 2. Subtleties in how XRenderCompositeText* constructs the binary protocol + buffer require that xGlyphElts are aligned to 32-bit boundaries and that + it inserts an additional xGlyphElt every 252 glyphs when width==1 or + every 254 glyphs for width==2 || width==4. Thus we need to explicitly + compute how many bytes would be required to add this glyph in accordance + with the above. + + Considering the complexity (and apparent fragility since we require tight + coupling to XRender) of the code, I'm sure there are more bugs to be + found. + + src/cairo-xlib-surface.c | 123 +++++++++++++++++++++++++++++----------------- + 1 files changed, 78 insertions(+), 45 deletions(-) + +commit 02a56a4c84cd07a2c33134974680bad7f17f733d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 15:08:54 2008 +0100 + + [test/show-glyphs-many] Exercise xlib boundary conditions. + + Within _cairo_xlib_surface_emit_glyphs() there are a number of + complications to do with packing as many glyphs as possible into a + single XRenderCompositeGlyph*() call. Essentially these consist of + choosing the right function and packing for the current glyphs, describing + runs of glyphs and ensuring that we do not exceed the maximum request size + within a single call. So we add to the test case we an attempt to show 64k + 2-byte glyphs and an attempt to mix 64k 1-byte and 2-byte glyphs, with the + change-over point chosen to overflow the maximum request size, should + _cairo_xlib_surface_emit_glyphs() naively resize the current request. + + test/show-glyphs-many.c | 83 ++++++++++++++++++++++++++++++++++++----------- + 1 files changed, 64 insertions(+), 19 deletions(-) + +commit 2a347a92b0a27a42840f9538cb98f792be12b277 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 13:29:35 2008 +0100 + + [test/show-glyphs-many] Re-enable test to trigger crash in xlib. + + Moral of this story is bugs cluster. If we made a mistake, especially in a + complicated bit of code that is interfacing with another library, then we + are likely to make a similar mistake in future. Disabling this test hid a + regression between 1.4 and 1.6. + + test/Makefile.am | 15 +-------------- + test/show-glyphs-many.c | 9 +++++++++ + 2 files changed, 10 insertions(+), 14 deletions(-) + +commit fade54e71a48919cc3e8311e202960c66eab74bf +Author: Torsten Schönfeld <kaffeetisch@gmx.de> +Date: Tue Sep 30 11:47:53 2008 +0100 + + [doc] Add links to solid pattern constructors. + + Add links for the solid pattern constructors to the language bindings + guidelines in line with the other pattern types. + + doc/public/language-bindings.xml | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d9f50d7841fa0216df157ba632483c8b27c50119 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 11:03:29 2008 +0100 + + [test/filter-nearest-offset] Remove XFAIL status + + I swear that when I said that it was a rounding error, I was looking at an + image where the squares were overlapping the lines and had a listing of + all the coordinates used. However, the current output on all the machines + I have to hand is correct so I believe the underlying bug to be fixed. + + Update the reference images for the external renderers because (a) GS + exhibits the same bug cairo had and (b) librvsg/PDF do not use NEAREST + when applying surface patterns, so the squares are blurred as a result. + + test/Makefile.am | 8 +++++--- + test/filter-nearest-offset-pdf-ref.png | Bin 0 -> 4537 bytes + test/filter-nearest-offset-ps2-ref.png | Bin 0 -> 255 bytes + test/filter-nearest-offset-ps3-ref.png | Bin 0 -> 255 bytes + test/filter-nearest-offset-svg11-ref.png | Bin 0 -> 4739 bytes + test/filter-nearest-offset-svg12-ref.png | Bin 0 -> 4739 bytes + test/filter-nearest-offset.c | 3 +-- + 7 files changed, 6 insertions(+), 5 deletions(-) + +commit 7d5e6a18d5e72366e19cb806cbdad5ed180b53da +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 10:04:12 2008 +0100 + + [test/filter-nearest-offset] Paint a grey background + + Avoid requiring (an absent!) rgb24 ref image by using an opaque grey + background. Confirm the reference image is identical to the old one + (modulo the background change) using GIMP. + + test/filter-nearest-offset-ref.png | Bin 254 -> 248 bytes + test/filter-nearest-offset.c | 6 ++++++ + 2 files changed, 6 insertions(+), 0 deletions(-) + +commit 35be08715595aa0bda48ce0b3cb11711eee55c64 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Tue Sep 30 10:54:45 2008 +0100 + + [Makefile.am] Only rerun headers-standalone if a header file has changed + + Use a stamp to mark the time that the headers were last checked and only + rerun the test if any have been modified since. + + src/.gitignore | 1 + + src/Makefile.am.analysis | 4 +++- + 2 files changed, 4 insertions(+), 1 deletions(-) + +commit 6da8d8ea62399d94281a2a262a630ef113062d0c +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 17:56:34 2008 +0100 + + [pattern] Fix up OBO introduced to cloned area + + In the midst of porting 5eec3e378afd6ff9991cea8e42b8478eb3e79773 I failed + to include the pad in the floor() and ceil() which introduces two + potential off-by-one errors into each dimension of the region of interest + of the source surface. + + src/cairo-pattern.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit e3f9e40df74b0334c2b544790fd3485ba527bd55 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Sep 29 11:49:04 2008 -0400 + + Fix residues of the Makefile.*.config Makefile.*.features renaming + + They just don't seem to want to die... + + boilerplate/Makefile.win32 | 2 +- + src/Makefile.sources | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d703f964aa7d1d4c8ec0b8a5dee437c222ce8629 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 16:37:35 2008 +0100 + + Clean up compile warnings. + + A couple of unchecked status returns (which should always be + CAIRO_STATUS_SUCCESS) and an unused variable. + + src/cairo-surface.c | 8 ++++++-- + src/cairo-svg-surface.c | 1 - + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit 1310df44edcf0b9fee648c8f8688d4a1177cde68 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Mon Sep 29 11:34:19 2008 -0400 + + [text_to_glyphs] Further enhance the docs + + The most complex public cairo API deserves more doc love... + + src/cairo-scaled-font.c | 8 +++++--- + src/cairo-user-font.c | 5 +++++ + src/cairo.h | 2 +- + 3 files changed, 11 insertions(+), 4 deletions(-) + +commit 41c66a9dfa9f4e7b9839db9dc362f5fa48797561 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 15:28:28 2008 +0100 + + [test/xlib-surface-source] Fix ill-timed XCloseDisplay + + Sigh - finding a crasher in xlib seemed too good to be true. And it was. + The bug is due to the coupling of the XCloseDisplay with the user_data on + the source surface. + + This was an externally trigger XCloseDisplay whilst the user had live + surfaces, so I consider this a gross application bug and therefore does + not require graceful handling within cairo-xlib. However, I'm willing to + listen to reason... + + test/surface-source.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +commit 63ee963c63a73cf6d9272e15a7d8f7b63f12e77b +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 15:09:23 2008 +0100 + + [user-font] Rewrite text_to_glyphs allocation instructions. + + Resolve the seemingly conflicting two paragraphs that instruct the writer + of a user-font on when to allocate the glyphs array during text_to_glyphs, + so that it is consistent with itself and the code. In particular, I could + find no indication in the code that num_glyphs is preset to -1 (it should + be a user parameter reflecting the number of entries in the supplied glyph + buffer) and the callback must allocate the array using + cairo_glyph_allocate(). + + src/cairo.h | 33 ++++++++++++++------------------- + 1 files changed, 14 insertions(+), 19 deletions(-) + +commit c23dbc4c616aed05dfe71901ce7ac0cadcbfb13d +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 13:54:12 2008 +0100 + + [test/surface-source] Modify to trigger a crash. + + Whilst investigating: + Bug 7360 painting huge surfaces fails + https://bugs.freedesktop.org/show_bug.cgi?id=7360 + I found a particular combination of operations that cause a crash within + xlib, so I'm committing the test for posterity. + + test/surface-source.c | 50 +++++++++++++++++++++++++++++++++++++----------- + 1 files changed, 38 insertions(+), 12 deletions(-) + +commit 3b33d49d37a5751e7848516c468b323e19c34bea +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 08:14:24 2008 +0100 + + [test/filter-bilinear-extents] Remove XFAIL. + + With the reintroduction of Carl Worth's and Owen Taylor's work to expand + pattern extents as necessary to include extra samples due to the filter + radius, we expect filter-bilinear-extents to PASS. This patch series is + important as it factors out our assumptions about filter radius into a + single function and cleans up the code in its wake. + + However, since the external PS/PDF renderers do not necessarily use the same + filter as cairo (and currently they only use NEAREST due to lack of + /Interpolate emission in those backends) we can expect differences in test + output. So add the respective reference images to capture current + expectations and to highlight future changes. + + Fixes bugs: + Bug 15349 - bad clipping with EXTEND_NONE + [https://bugs.freedesktop.org/show_bug.cgi?id=15349], + Bug 15367 -Improve filtering handling in cairo-pattern.c + [https://bugs.freedesktop.org/show_bug.cgi?id=15367] + + test/Makefile.am | 35 +++++++++++++++++++++++++++++- + test/filter-bilinear-extents-pdf-ref.png | Bin 0 -> 798 bytes + test/filter-bilinear-extents-ps2-ref.png | Bin 0 -> 173 bytes + test/filter-bilinear-extents-ps3-ref.png | Bin 0 -> 173 bytes + 4 files changed, 34 insertions(+), 1 deletions(-) + +commit 5eec3e378afd6ff9991cea8e42b8478eb3e79773 +Author: Owen W. Taylor <otaylor@fishsoup.net> +Date: Mon Sep 29 00:53:59 2008 +0100 + + [pattern] Improve handling of filter radius and optimize when possible. + + Factor out common filter analysis code from _cairo_pattern_get_extents() + so that we can share it with _cairo_pattern_acquire_surface_for_surface() + as well. During the analysis of the filter determine whether the pattern + matrix maps source pixels exactly onto destination pixels and if so convert + the filter to NEAREST - generalising the existing conversion to NEAREST. + + (Patch ported to master by Chris Wilson, all bugs are his.) + + src/cairo-matrix.c | 29 +++++++++++++ + src/cairo-pattern.c | 113 +++++++++++++++++++++++++++++++++++---------------- + src/cairoint.h | 3 + + 3 files changed, 110 insertions(+), 35 deletions(-) + +commit 7d7057cf8896a3558fadc35d160d3bc667972800 +Author: Carl Worth <cworth@cworth.org> +Date: Fri Apr 4 19:00:28 2008 -0700 + + _cairo_pattern_get_extents: Fix to allow for expansion based on filter + + This fixes the filter-bilinear-extents test case and the + related bug entry: + + bad clipping with EXTEND_NONE + http://bugs.freedesktop.org/show_bug.cgi?id=15349 + + Though there are still differences in the PDF and PostScript + backends, (primarily because we can't capture cairo's filter + modes in those file formats). + + src/cairo-pattern.c | 22 ++++++++++++++++++++ + test/paint-source-alpha-svg11-ref.png | Bin 505 -> 756 bytes + ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 182 -> 229 bytes + .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 192 -> 243 bytes + ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 182 -> 229 bytes + .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 192 -> 243 bytes + 6 files changed, 22 insertions(+), 0 deletions(-) + +commit 6ef4bd4ecfa30f00ad0fe6e5e5f1d1a0a5dfe8e3 +Author: Owen W. Taylor <otaylor@fishsoup.net> +Date: Sun Sep 28 23:30:22 2008 +0100 + + [pattern] Fix acquiring outside of source bounds + + Restrict the area we acquire from the source image to the bounds of + the source image, even when we have an identity matrix. This handles + circumstances where the pattern extents may be enlarged due to + filtering, for example when applying a bilinear filter. + + This patch replaces the open-coded rectangle intersection which has + already proven itself to be a source of bugs. + + (Patch ported to master by Chris Wilson, all bugs are his.) + + src/cairo-pattern.c | 63 ++++++++++++++++++++++++++------------------------- + 1 files changed, 32 insertions(+), 31 deletions(-) + +commit 6d0f2c4421e34a078469a81646a52dfa47b4dcf1 +Author: Owen W. Taylor <otaylor@fishsoup.net> +Date: Mon Sep 29 00:02:18 2008 +0100 + + [pattern] Remove the hack to support cloning surface patterns. + + Remove instances (abuses) of calling _cairo_pattern_acquire_surface() on + a known-surface-pattern with a hack to say "give me the entire surface". + If you know you just want the entire surface as an image surface, that + can be done more simply. + + (Split from original patch on + https://bugs.freedesktop.org/attachment.cgi?id=15703, by Chris Wilson - + as usual all bugs are his.) + + src/cairo-pattern.c | 5 +--- + src/cairo-svg-surface.c | 16 +------------ + src/cairo-win32-printing-surface.c | 41 ++++++++++++++++------------------- + 3 files changed, 22 insertions(+), 40 deletions(-) + +commit 117f643e49615295eb37af24efffd8327429cbf9 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 22:42:30 2008 +0100 + + [test/filter-bilinear-extents] Extend testing. + + First, explicitly set the filter mode to BILINEAR in case the default should + ever change. And then draw a second pattern with extents that in theory + are larger than the source surface in order to test handling of acquiring + out-of-bounds extents. + + test/filter-bilinear-extents.c | 45 +++++++++++++++++++++++++++------------ + 1 files changed, 31 insertions(+), 14 deletions(-) + +commit 3ff86a4510b718a3154b56b052be786f9495a3b0 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 08:38:31 2008 +0100 + + [test] Disable caching of SVG fail/pass surfaces. + + As we use cairo to convert SVG files back to an image, that process is + dependent upon changes within our library and so we cannot skip the + conversion if the SVG file happens to match a previous run. Fortunately, + librsvg is quick enough that this is not a major issue. + + boilerplate/cairo-boilerplate.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +commit 24b22f0d2161f7a4ce75ceb2a86a77737027ee56 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon Sep 29 07:52:09 2008 +0100 + + [glitz] Compile fix for typo. + + I wonder whether merely fixing a compile error in glitz will do anything + towards its utility... Anyway fix the missing comma as reported by + Shunichi Fuji and correct the asserts. + + src/cairo-glitz-surface.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 4f449107afba8ca96cd16e8dec283db124105dc8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 21:05:36 2008 +0100 + + [test/fallback-resolution] Exercise a couple of outstanding bugs. + + Use dashes to exercise bugs: + https://bugs.freedesktop.org/show_bug.cgi?id=9189 + https://bugs.freedesktop.org/show_bug.cgi?id=17223 + Note bug 17223 indicates that this is still relevant for win32 printing + where fallbacks are used if the dash offset is non-zero. + + And use a pattern to exercise the (fixed) regression: + https://bugs.launchpad.net/inkscape/+bug/234546 + + test/fallback-resolution-ppi150-ref.png | Bin 2397 -> 8043 bytes + test/fallback-resolution-ppi300-ref.png | Bin 1591 -> 5637 bytes + test/fallback-resolution-ppi37.5-ref.png | Bin 4681 -> 14098 bytes + test/fallback-resolution-ppi600-ref.png | Bin 1121 -> 4104 bytes + test/fallback-resolution-ppi72-ref.png | Bin 2497 -> 8409 bytes + test/fallback-resolution-ppi75-ref.png | Bin 3575 -> 12101 bytes + test/fallback-resolution.c | 40 ++++++++++++++++++++++++++++- + 7 files changed, 38 insertions(+), 2 deletions(-) + +commit 0a7d781ab020171e70bd1dc66ff1556106e5be3f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 18:57:15 2008 +0100 + + [perf] Add rounded rectangle perf case. + + Add the performance test case to compare the speed of filling a rounded + rectangle (one with camphered corners) as opposed to an ordinary + rectangle. Since the majority of the pixels are identical, ideally the two + cases would take similar times (modulo the additional overhead in the more + complex path). + + perf/Makefile.am | 1 + + perf/cairo-perf.c | 1 + + perf/cairo-perf.h | 1 + + perf/rectangles.c | 22 +++++++++- + perf/rounded-rectangles.c | 111 +++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 135 insertions(+), 1 deletions(-) + +commit d52b55cb1b2a4e9b5fd8dd12592a227f8f6a93fc +Author: Karl Tomlinson <karlt+@karlt.net> +Date: Sun Sep 28 17:51:23 2008 +0100 + + [xlib] _surfaces_compatible() can return true for different picture formats + + _surfaces_compatible in cairo-xlib-surface returns true for surfaces with + different xrender_format when each has the same depth and no (NULL) + visual. + + Common picture formats will not have the same depth, but + it is possible to create a surface with a non-standard xrender_format + having the same depth as another xrender_format with + cairo_xlib_surface_create_with_xrender_format. + + Both cairo_xlib_surface_create_with_xrender_format and + _cairo_xlib_surface_create_similar_with_format create surfaces with no + visual. + + The same issue exists in the xcb backend. + + Fixes bug https://bugs.freedesktop.org/show_bug.cgi?id=16564. + + AUTHORS | 1 + + src/cairo-xcb-surface.c | 4 +++- + src/cairo-xlib-surface.c | 4 +++- + 3 files changed, 7 insertions(+), 2 deletions(-) + +commit b6b54e2f2736bfa9f76b7b6fc0da5d35a71fe846 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 17:13:11 2008 +0100 + + [svg] Compile fix for last commit. + + Sorry - badly merged patch (missed a chunk). + + src/cairo-svg-surface.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +commit cff3bcba68233101c5518801b64e37d2f0e70ae8 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 17:06:32 2008 +0100 + + [svg] Check that the mask is supported. + + During the analyze phase we also need to check whether we can emit the mask + without requiring fallbacks. + + src/cairo-svg-surface.c | 17 +++++++++++++++-- + 1 files changed, 15 insertions(+), 2 deletions(-) + +commit 8ad3031359d74bdff4b1e3ef8d0af047821f1795 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 17:04:15 2008 +0100 + + [svg] Enable the assertion that paint() is supported. + + The XXX comment before the disabled assert is misleading as the final + fallback image paint operation should never trigger UNSUPPORTED. + + src/cairo-svg-surface.c | 13 ++++--------- + 1 files changed, 4 insertions(+), 9 deletions(-) + +commit 95e637f9ac9e4256f7ba73e8f048f8e559631c82 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 16:54:59 2008 +0100 + + [paginated] Set paginated mode before every replay. + + Previously we were replaying full page fallbacks without updating the + mode - this was upsetting SVG. + + src/cairo-paginated-surface.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +commit 36b98589911ab57762317ec95cbff41681c1e0b6 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 16:24:40 2008 +0100 + + [svg] Kill _cairo_svg_surface_force_fallbacks. + + It is not used, but refuses to die! + + src/cairo-svg-surface.c | 5 ++--- + 1 files changed, 2 insertions(+), 3 deletions(-) + +commit 57851464f920d52444d19d25e78293fa0f40c5f9 +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Sep 28 17:02:23 2008 +0200 + + [SVG] make backend handle new operators gracefully + + Previously, the SVG backend would rash when new operators were added to + cairo.h, now it returns UNSUPPORTED. + Also unsupported operators can now be set as NULL, so image fallbacks can + be used properly. + Should use fallbacks instead of color-dodge for CAIRO_OPERATOR_STURATE? + + src/cairo-svg-surface.c | 45 +++++++++++++++++++++++++++++++-------------- + 1 files changed, 31 insertions(+), 14 deletions(-) + +commit fda80cc852a109fe60e3277a1847bc5c24f35d8e +Author: Benjamin Otte <otte@gnome.org> +Date: Sun Sep 28 14:57:49 2008 +0200 + + [SVG] use _cairo_operator_bounded_by_source() + + previously, the code was duplicating its functionality + + src/cairo-svg-surface.c | 27 ++++++++++++--------------- + 1 files changed, 12 insertions(+), 15 deletions(-) + +commit 3c18d95b293eddaa25232bc06398c78bc8043cb4 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 15:57:37 2008 +0100 + + Compute device_transform_inverse. + + Because we can independently set either the device scale or the device + offset, we need to be careful and recompute the inverse rather than simply + assuming that the original contents of the device transform is identity. + + Fixes regression https://bugs.launchpad.net/inkscape/+bug/234546. + + src/cairo-surface.c | 10 ++++------ + 1 files changed, 4 insertions(+), 6 deletions(-) + +commit 9841d9d58ea286f798626d325d50a85bf3f02c8f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sun Sep 28 13:34:50 2008 +0100 + + Automate error checking for fallback-resolution. + + For this we extend the boilerplate get_image() routines to extract a + single page out of a paginated document and then proceed to manually + check each page of the fallback-resolution test. + + (Well that's the theory, in practice SVG doesn't support multiple pages + and so we just generate a new surface for each resolution. But the + infrastructure is in place so that we can automate other tests, + e.g. test/multi-pages.) + + boilerplate/cairo-boilerplate-pdf-private.h | 5 + + boilerplate/cairo-boilerplate-pdf.c | 29 +- + boilerplate/cairo-boilerplate-pdf.h | 33 -- + boilerplate/cairo-boilerplate-ps-private.h | 9 +- + boilerplate/cairo-boilerplate-ps.c | 33 +- + boilerplate/cairo-boilerplate-ps.h | 33 -- + boilerplate/cairo-boilerplate-svg-private.h | 5 + + boilerplate/cairo-boilerplate-svg.c | 36 +- + boilerplate/cairo-boilerplate-svg.h | 33 -- + .../cairo-boilerplate-test-surfaces-private.h | 1 + + boilerplate/cairo-boilerplate-test-surfaces.c | 7 +- + boilerplate/cairo-boilerplate-win32-printing.c | 5 + + boilerplate/cairo-boilerplate-win32-private.h | 1 + + boilerplate/cairo-boilerplate.c | 74 ++-- + boilerplate/cairo-boilerplate.h | 7 + + src/cairo-svg-surface.c | 6 +- + test/Makefile.am | 6 + + test/cairo-test.c | 36 +- + test/cairo-test.h | 12 + + test/fallback-resolution-ppi150-ref.png | Bin 0 -> 2397 bytes + test/fallback-resolution-ppi300-ref.png | Bin 0 -> 1591 bytes + test/fallback-resolution-ppi37.5-ref.png | Bin 0 -> 4681 bytes + test/fallback-resolution-ppi600-ref.png | Bin 0 -> 1121 bytes + test/fallback-resolution-ppi72-ref.png | Bin 0 -> 2497 bytes + test/fallback-resolution-ppi75-ref.png | Bin 0 -> 3575 bytes + test/fallback-resolution.c | 413 +++++++++++++++----- + 26 files changed, 486 insertions(+), 298 deletions(-) + +commit cca1fc6358e9d0213dd2b41a5bfd1629eec6511e +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 21:53:21 2008 +0100 + + [test] Fix target specific tests for recent SVG/PS version split. + + A few tests explicitly checked whether the "ps" or "svg" target was + enabled and this broke because of the name change. So fixup, to run + the generic test if either PS or SVG target is enabled as appropriate. + + test/create-for-stream.c | 8 ++++++-- + test/fallback-resolution.c | 8 ++++++-- + test/multi-page.c | 4 +++- + test/ps-features.c | 4 +++- + test/svg-clip.c | 4 +++- + test/svg-surface.c | 4 +++- + 6 files changed, 24 insertions(+), 8 deletions(-) + +commit 39e4a0bcd04191eecfc593653a4ba32a28fcac6a +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 19:33:51 2008 +0100 + + [test] Update list of REFERENCE_IMAGES + + A few typos, deletions and additions from the inclusion of versioned + SVG/PS testing. + + test/Makefile.am | 50 +++++++++++++++++++++++++++++++------------------- + 1 files changed, 31 insertions(+), 19 deletions(-) + +commit 260362e5728e2591bb50f565ef04ba951d95de79 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 19:16:34 2008 +0100 + + [cairo-test] Fix cairo_test_file_is_older(). + + It did not even compile, so no longer it wasn't deleting cached results + if you updated the reference images. + + test/cairo-test.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +commit ffbb67303c1a4d986096ba046bb3256314b9f1b1 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 18:54:45 2008 +0100 + + [test/gradient-constant-alpha] Remove ps2 reference images. + + PostScript level 2 has no support for gradients and so should uses image + fallbacks and hence do not require the GS specific reference images. + + test/Makefile.am | 2 -- + test/gradient-constant-alpha-ps2-ref.png | Bin 124 -> 0 bytes + test/gradient-constant-alpha-ps2-rgb24-ref.png | Bin 124 -> 0 bytes + 3 files changed, 0 insertions(+), 2 deletions(-) + +commit 4fa9f8c0608c137d9aa277039cb286c8294e6a2f +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 17:42:06 2008 +0100 + + [test/large-source] Remove stale comment. + + Delete a reference to an old limitation of pixman. + + test/large-source.c | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +commit 35f1e2fa4f15c562e5cc41578b413c6874e131bc +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 17:37:32 2008 +0100 + + [test/operator*] Remove XFAIL descriptions. + + The tests should now pass, so remove the line claiming that they fail + for unknown reasons. + + test/operator-alpha.c | 3 +-- + test/operator.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 871f683367b1a1647b607f9221e1fc2eddc6e5dd +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 17:24:57 2008 +0100 + + clone_similar(): s/device_offset/clone_offset/ + + A little bit of sleep and reflection suggested that the use of + device_offset_[xy] was confusing and clone_offset_[xy] more consistent + with the function naming. + + src/cairo-directfb-surface.c | 12 ++++++------ + src/cairo-glitz-surface.c | 18 +++++++++--------- + src/cairo-image-surface.c | 6 +++--- + src/cairo-pattern.c | 6 +++--- + src/cairo-quartz-surface.c | 16 ++++++++-------- + src/cairo-surface-fallback-private.h | 4 ++-- + src/cairo-surface-fallback.c | 8 ++++---- + src/cairo-surface.c | 16 ++++++++-------- + src/cairo-win32-private.h | 4 ++-- + src/cairo-win32-surface.c | 8 ++++---- + src/cairo-xcb-surface.c | 12 ++++++------ + src/cairo-xlib-surface.c | 12 ++++++------ + src/cairoint.h | 10 +++++----- + src/test-fallback-surface.c | 8 ++++---- + 14 files changed, 70 insertions(+), 70 deletions(-) + +commit 95c3c069326a77a28eb49053c0ace9f1977e0378 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 17:13:32 2008 +0100 + + [surface] Only return early for no traps if the operator is bounded by a mask. + + If the operator is unbounded, then its area of effect extends beyond + the definition of the mask by the trapezoids and so we must always perform + the image composition. + + Fixes test/operator*. + + src/cairo-surface-fallback.c | 4 +--- + test/Makefile.am | 2 -- + 2 files changed, 1 insertions(+), 5 deletions(-) + +commit 922a5801164c2b2340a7b4a950820b07e72adadc +Merge: 0c43170 1e45da4 +Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> +Date: Sat Sep 27 11:55:50 2008 +0200 + + Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo + +commit 0c4317085ecfc112214cdfe2abd66d9df8038282 +Author: Emmanuel Pacaud <emmanuel.pacaud@free.fr> +Date: Sat Sep 27 11:47:32 2008 +0200 + + [svg] Fix comp-op for paint, mask and show_glyphs operations. + + In paint and show_glyphs, the compositing operator was not emitted at all. + In mask, the operator was also emitted for the mask itself, which is + wrong. + + SVG clear and source differ from cairo as it also affects the + destination if the source pixel are completely transparent. We need to emit + an additional clip-to-self property. + + Librsvg does not support clip-to-self, so it renders the SVG + test outputs incorrectly. + + This patch also remove a lot of useless spaces in the style property + strings (I know, this should go in another commit). + + src/cairo-svg-surface.c | 196 +++++++++++++++++++++++++++-------------------- + 1 files changed, 113 insertions(+), 83 deletions(-) + +commit 1e45da48b555b707225c1521068011cabbcc976f +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Sep 27 14:38:22 2008 +0930 + + Update ref images in Makefile.am + + test/Makefile.am | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit c0535e8e3394f0b78867785e65cf89dbb31875d5 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Sat Sep 27 14:31:50 2008 +0930 + + Remove miter-precision from XFAIL + + The miter-precision PS output prints correctly on my LaserJet 4050. So + file a Ghostscript bug, supply PS ref images and remove from XFAIL. + + test/Makefile.am | 1 - + test/README | 5 +++++ + test/miter-precision-ps2-ref.png | Bin 0 -> 865 bytes + test/miter-precision-ps3-ref.png | Bin 0 -> 865 bytes + test/miter-precision.c | 2 +- + 5 files changed, 6 insertions(+), 2 deletions(-) + +commit 5b97ee65259cafb335c1a2c53f1a55dfcb175e20 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat Sep 27 00:18:07 2008 +0100 + + Allow cloning sub-regions of similar surfaces. + + Previously the rule for clone_similar() was that the returned surface + had exactly the same size as the original, but only the contents within + the region of interest needed to be copied. This caused failures for very + large images in the xlib-backend (see test/large-source). + + The obvious solution to allow cloning only the region of interest seemed + to be to simply set the device offset on the cloned surface. However, this + fails as a) nothing respects the device offset on the surface at that + layer in the compositing stack and b) possibly returning references to the + original source surface provides further confusion by mixing in another + source of device offset. + + The second method was to add extra out parameters so that the + device offset could be returned separately and, for example, mixed into + the pattern matrix. Not as elegant, a couple of extra warts to the + interface, but it works - one less XFAIL... + + src/cairo-clip.c | 6 ++++++ + src/cairo-directfb-surface.c | 14 +++++++++----- + src/cairo-glitz-surface.c | 10 ++++++++++ + src/cairo-image-surface.c | 3 +++ + src/cairo-pattern.c | 15 +++++++++++++-- + src/cairo-quartz-surface.c | 10 +++++++++- + src/cairo-surface-fallback-private.h | 2 ++ + src/cairo-surface-fallback.c | 8 ++++++-- + src/cairo-surface.c | 24 ++++++++++++++++++------ + src/cairo-win32-private.h | 2 ++ + src/cairo-win32-surface.c | 8 ++++++-- + src/cairo-xcb-surface.c | 18 ++++++++++++++---- + src/cairo-xlib-surface.c | 21 +++++++++++++++------ + src/cairoint.h | 11 +++++++++-- + src/test-fallback-surface.c | 4 ++++ + test/Makefile.am | 1 - + 16 files changed, 126 insertions(+), 31 deletions(-) + +commit 7f3a48f90b409653a2d4fb802779ecb7508e4d6e +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 13:27:42 2008 -0400 + + [cairo.h] Don't define cairo_public to __declspec(dllimport) for static build + + That define should target win32 DLL builds only. We can't tell though, + so we require user to define CAIRO_WIN32_STATIC_BUILD to signal that. + + src/cairo-system.c | 2 +- + src/cairo.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit b6e910f4b636e947cefb310125979ce742e87730 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 12:36:33 2008 -0400 + + [README.win32] Update wording from Tor Lillqvist + + README.win32 | 19 ++++++++++++------- + 1 files changed, 12 insertions(+), 7 deletions(-) + +commit fc12267405e98497c9f086d49fa6501d8f671a68 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 26 17:10:52 2008 +0100 + + [scaled-font] Spelling fix. + + Arbitrary spelling fix. + + src/cairo-scaled-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit e0f214710760a0e0332207cb3009e3119867bd13 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 26 16:49:57 2008 +0100 + + [boilerplate] Add a PS 2 target. + + Ensure that we can generate PS2 output when required by creating a PS + level 2 target and using GhostScript for conformance testing. + + boilerplate/cairo-boilerplate-ps-private.h | 29 ++- + boilerplate/cairo-boilerplate-ps.c | 55 ++++- + boilerplate/cairo-boilerplate.c | 23 ++- + test/Makefile.am | 286 +++++++++++++------- + test/big-line-ps-ref.png | Bin 1148 -> 0 bytes + test/big-line-ps-rgb24-ref.png | Bin 830 -> 0 bytes + test/big-line-ps2-ref.png | Bin 0 -> 1148 bytes + test/big-line-ps2-rgb24-ref.png | Bin 0 -> 830 bytes + test/big-line-ps3-ref.png | Bin 0 -> 1148 bytes + test/big-line-ps3-rgb24-ref.png | Bin 0 -> 830 bytes + test/caps-joins-ps-ref.png | Bin 1459 -> 0 bytes + test/caps-joins-ps2-ref.png | Bin 0 -> 1459 bytes + test/caps-joins-ps3-ref.png | Bin 0 -> 1459 bytes + test/clip-fill-rule-ps-argb32-ref.png | Bin 310 -> 0 bytes + test/clip-fill-rule-ps-rgb24-ref.png | Bin 302 -> 0 bytes + test/clip-fill-rule-ps2-argb32-ref.png | Bin 0 -> 310 bytes + test/clip-fill-rule-ps2-rgb24-ref.png | Bin 0 -> 302 bytes + test/clip-fill-rule-ps3-argb32-ref.png | Bin 0 -> 310 bytes + test/clip-fill-rule-ps3-rgb24-ref.png | Bin 0 -> 302 bytes + test/clip-nesting-ps-argb32-ref.png | Bin 651 -> 0 bytes + test/clip-nesting-ps-rgb24-ref.png | Bin 636 -> 0 bytes + test/clip-nesting-ps2-argb32-ref.png | Bin 0 -> 651 bytes + test/clip-nesting-ps2-rgb24-ref.png | Bin 0 -> 636 bytes + test/clip-nesting-ps3-argb32-ref.png | Bin 0 -> 651 bytes + test/clip-nesting-ps3-rgb24-ref.png | Bin 0 -> 636 bytes + test/clip-operator-ps-rgb24-ref.png | Bin 3624 -> 0 bytes + test/clip-operator-ps2-rgb24-ref.png | Bin 0 -> 3624 bytes + test/clip-operator-ps3-ref.png | Bin 0 -> 8188 bytes + test/clip-operator-ps3-rgb24-ref.png | Bin 0 -> 3624 bytes + test/clip-push-group-ps-argb32-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-ps-rgb24-ref.png | Bin 179 -> 0 bytes + test/clip-push-group-ps2-argb32-ref.png | Bin 0 -> 179 bytes + test/clip-push-group-ps2-rgb24-ref.png | Bin 0 -> 179 bytes + test/clip-push-group-ps3-argb32-ref.png | Bin 0 -> 179 bytes + test/clip-push-group-ps3-rgb24-ref.png | Bin 0 -> 179 bytes + test/clip-twice-ps-argb32-ref.png | Bin 575 -> 0 bytes + test/clip-twice-ps-rgb24-ref.png | Bin 541 -> 0 bytes + test/clip-twice-ps2-argb32-ref.png | Bin 0 -> 575 bytes + test/clip-twice-ps2-rgb24-ref.png | Bin 0 -> 541 bytes + test/clip-twice-ps3-argb32-ref.png | Bin 0 -> 575 bytes + test/clip-twice-ps3-rgb24-ref.png | Bin 0 -> 541 bytes + test/clipped-group-ps-ref.png | Bin 343 -> 0 bytes + test/clipped-group-ps2-ref.png | Bin 0 -> 343 bytes + test/clipped-group-ps3-ref.png | Bin 0 -> 343 bytes + test/close-path-ps-ref.png | Bin 309 -> 0 bytes + test/close-path-ps2-ref.png | Bin 0 -> 309 bytes + test/close-path-ps3-ref.png | Bin 0 -> 309 bytes + test/copy-path-ps-ref.png | Bin 474 -> 0 bytes + test/copy-path-ps2-ref.png | Bin 0 -> 474 bytes + test/copy-path-ps3-ref.png | Bin 0 -> 474 bytes + test/dash-caps-joins-ps-argb32-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-ps-rgb24-ref.png | Bin 3870 -> 0 bytes + test/dash-caps-joins-ps2-argb32-ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins-ps2-rgb24-ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins-ps3-argb32-ref.png | Bin 0 -> 3870 bytes + test/dash-caps-joins-ps3-rgb24-ref.png | Bin 0 -> 3870 bytes + test/dash-curve-ps-ref.png | Bin 27293 -> 0 bytes + test/dash-curve-ps2-ref.png | Bin 0 -> 27293 bytes + test/dash-curve-ps3-ref.png | Bin 0 -> 27293 bytes + test/dash-scale-ps-argb32-ref.png | Bin 6318 -> 0 bytes + test/dash-scale-ps-rgb24-ref.png | Bin 6316 -> 0 bytes + test/dash-scale-ps2-argb32-ref.png | Bin 0 -> 6318 bytes + test/dash-scale-ps2-rgb24-ref.png | Bin 0 -> 6316 bytes + test/dash-scale-ps3-argb32-ref.png | Bin 0 -> 6318 bytes + test/dash-scale-ps3-rgb24-ref.png | Bin 0 -> 6316 bytes + test/dash-state-ps-ref.png | Bin 10219 -> 0 bytes + test/dash-state-ps2-ref.png | Bin 0 -> 10219 bytes + test/dash-state-ps3-ref.png | Bin 0 -> 10219 bytes + test/dash-zero-length-ps-ref.png | Bin 319 -> 0 bytes + test/dash-zero-length-ps-rgb24-ref.png | Bin 304 -> 0 bytes + test/dash-zero-length-ps2-ref.png | Bin 0 -> 319 bytes + test/dash-zero-length-ps2-rgb24-ref.png | Bin 0 -> 304 bytes + test/dash-zero-length-ps3-ref.png | Bin 0 -> 319 bytes + test/dash-zero-length-ps3-rgb24-ref.png | Bin 0 -> 304 bytes + test/degenerate-arc-ps-ref.png | Bin 585 -> 0 bytes + test/degenerate-arc-ps2-ref.png | Bin 0 -> 585 bytes + test/degenerate-arc-ps3-ref.png | Bin 0 -> 585 bytes + test/degenerate-path-ps-argb32-ref.png | Bin 390 -> 0 bytes + test/degenerate-path-ps-rgb24-ref.png | Bin 358 -> 0 bytes + test/degenerate-path-ps2-argb32-ref.png | Bin 0 -> 390 bytes + test/degenerate-path-ps2-rgb24-ref.png | Bin 0 -> 358 bytes + test/degenerate-path-ps3-argb32-ref.png | Bin 0 -> 390 bytes + test/degenerate-path-ps3-rgb24-ref.png | Bin 0 -> 358 bytes + test/degenerate-pen-ps-ref.png | Bin 865 -> 0 bytes + test/degenerate-pen-ps2-ref.png | Bin 0 -> 865 bytes + test/degenerate-pen-ps3-ref.png | Bin 0 -> 865 bytes + test/device-offset-fractional-ps-ref.png | Bin 201 -> 0 bytes + test/device-offset-fractional-ps2-ref.png | Bin 0 -> 201 bytes + test/device-offset-fractional-ps3-ref.png | Bin 0 -> 201 bytes + test/extend-reflect-ps-ref.png | Bin 153322 -> 0 bytes + test/extend-reflect-ps2-ref.png | Bin 0 -> 153322 bytes + test/extend-reflect-ps3-ref.png | Bin 0 -> 153322 bytes + test/extend-reflect-similar-ps-ref.png | Bin 153322 -> 0 bytes + test/extend-reflect-similar-ps2-ref.png | Bin 0 -> 153322 bytes + test/extend-reflect-similar-ps3-ref.png | Bin 0 -> 153322 bytes + test/fill-alpha-pattern-ps-ref.png | Bin 4380 -> 0 bytes + test/fill-alpha-pattern-ps3-ref.png | Bin 0 -> 4380 bytes + test/fill-and-stroke-ps-argb32-ref.png | Bin 310 -> 0 bytes + test/fill-and-stroke-ps-rgb24-ref.png | Bin 319 -> 0 bytes + test/fill-and-stroke-ps2-argb32-ref.png | Bin 0 -> 310 bytes + test/fill-and-stroke-ps2-rgb24-ref.png | Bin 0 -> 319 bytes + test/fill-and-stroke-ps3-argb32-ref.png | Bin 0 -> 310 bytes + test/fill-and-stroke-ps3-rgb24-ref.png | Bin 0 -> 319 bytes + test/fill-missed-stop-ps-argb32-ref.png | Bin 564 -> 0 bytes + test/fill-missed-stop-ps-rgb24-ref.png | Bin 531 -> 0 bytes + test/fill-missed-stop-ps2-argb32-ref.png | Bin 0 -> 564 bytes + test/fill-missed-stop-ps2-rgb24-ref.png | Bin 0 -> 531 bytes + test/fill-missed-stop-ps3-argb32-ref.png | Bin 0 -> 564 bytes + test/fill-missed-stop-ps3-rgb24-ref.png | Bin 0 -> 531 bytes + test/fill-rule-ps-argb32-ref.png | Bin 2253 -> 0 bytes + test/fill-rule-ps-rgb24-ref.png | Bin 2031 -> 0 bytes + test/fill-rule-ps2-argb32-ref.png | Bin 0 -> 2253 bytes + test/fill-rule-ps2-rgb24-ref.png | Bin 0 -> 2031 bytes + test/fill-rule-ps3-argb32-ref.png | Bin 0 -> 2253 bytes + test/fill-rule-ps3-rgb24-ref.png | Bin 0 -> 2031 bytes + test/finer-grained-fallbacks-ps-argb32-ref.png | Bin 1047 -> 0 bytes + test/finer-grained-fallbacks-ps-rgb24-ref.png | Bin 819 -> 0 bytes + test/finer-grained-fallbacks-ps2-argb32-ref.png | Bin 0 -> 1047 bytes + test/finer-grained-fallbacks-ps2-rgb24-ref.png | Bin 0 -> 819 bytes + test/finer-grained-fallbacks-ps3-argb32-ref.png | Bin 0 -> 1047 bytes + test/finer-grained-fallbacks-ps3-rgb24-ref.png | Bin 0 -> 819 bytes + test/font-matrix-translation-ps-argb32-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-ps-rgb24-ref.png | Bin 748 -> 0 bytes + test/font-matrix-translation-ps2-argb32-ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation-ps2-rgb24-ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation-ps3-argb32-ref.png | Bin 0 -> 748 bytes + test/font-matrix-translation-ps3-rgb24-ref.png | Bin 0 -> 748 bytes + test/ft-show-glyphs-positioning-ps-ref.png | Bin 2269 -> 0 bytes + test/ft-show-glyphs-positioning-ps2-ref.png | Bin 0 -> 2269 bytes + test/ft-show-glyphs-positioning-ps3-ref.png | Bin 0 -> 2269 bytes + test/ft-show-glyphs-table-ps-ref.png | Bin 5687 -> 0 bytes + test/ft-show-glyphs-table-ps2-ref.png | Bin 0 -> 5687 bytes + test/ft-show-glyphs-table-ps3-ref.png | Bin 0 -> 5687 bytes + test/ft-text-antialias-none-ps-argb32-ref.png | Bin 335 -> 0 bytes + test/ft-text-antialias-none-ps2-argb32-ref.png | Bin 0 -> 335 bytes + test/ft-text-antialias-none-ps3-argb32-ref.png | Bin 0 -> 335 bytes + test/ft-text-vertical-layout-type1-ps-ref.png | Bin 1846 -> 0 bytes + test/ft-text-vertical-layout-type1-ps2-ref.png | Bin 0 -> 1846 bytes + test/ft-text-vertical-layout-type1-ps3-ref.png | Bin 0 -> 1846 bytes + test/ft-text-vertical-layout-type3-ps-ref.png | Bin 1804 -> 0 bytes + test/ft-text-vertical-layout-type3-ps2-ref.png | Bin 0 -> 1804 bytes + test/ft-text-vertical-layout-type3-ps3-ref.png | Bin 0 -> 1804 bytes + test/glyph-cache-pressure-ps-ref.png | Bin 1454 -> 0 bytes + test/glyph-cache-pressure-ps2-ref.png | Bin 0 -> 1454 bytes + test/glyph-cache-pressure-ps3-ref.png | Bin 0 -> 1454 bytes + test/gradient-alpha-ps-argb32-ref.png | Bin 134 -> 0 bytes + test/gradient-alpha-ps-rgb24-ref.png | Bin 130 -> 0 bytes + test/gradient-alpha-ps2-argb32-ref.png | Bin 0 -> 134 bytes + test/gradient-alpha-ps2-rgb24-ref.png | Bin 0 -> 130 bytes + test/gradient-alpha-ps3-argb32-ref.png | Bin 0 -> 134 bytes + test/gradient-alpha-ps3-rgb24-ref.png | Bin 0 -> 130 bytes + test/gradient-constant-alpha-ps-ref.png | Bin 124 -> 0 bytes + test/gradient-constant-alpha-ps-rgb24-ref.png | Bin 124 -> 0 bytes + test/gradient-constant-alpha-ps2-ref.png | Bin 0 -> 124 bytes + test/gradient-constant-alpha-ps2-rgb24-ref.png | Bin 0 -> 124 bytes + test/gradient-constant-alpha-ps3-ref.png | Bin 0 -> 124 bytes + test/gradient-constant-alpha-ps3-rgb24-ref.png | Bin 0 -> 124 bytes + test/infinite-join-ps-ref.png | Bin 218 -> 0 bytes + test/infinite-join-ps2-ref.png | Bin 0 -> 218 bytes + test/infinite-join-ps3-ref.png | Bin 0 -> 218 bytes + test/leaky-dash-ps-argb32-ref.png | Bin 286 -> 0 bytes + test/leaky-dash-ps-rgb24-ref.png | Bin 284 -> 0 bytes + test/leaky-dash-ps2-argb32-ref.png | Bin 0 -> 286 bytes + test/leaky-dash-ps2-rgb24-ref.png | Bin 0 -> 284 bytes + test/leaky-dash-ps3-argb32-ref.png | Bin 0 -> 286 bytes + test/leaky-dash-ps3-rgb24-ref.png | Bin 0 -> 284 bytes + test/leaky-dashed-rectangle-ps-ref.png | Bin 444 -> 0 bytes + test/leaky-dashed-rectangle-ps2-ref.png | Bin 0 -> 444 bytes + test/leaky-dashed-rectangle-ps3-ref.png | Bin 0 -> 444 bytes + test/leaky-polygon-ps-ref.png | Bin 354 -> 0 bytes + test/leaky-polygon-ps2-ref.png | Bin 0 -> 354 bytes + test/leaky-polygon-ps3-ref.png | Bin 0 -> 354 bytes + test/line-width-scale-ps-ref.png | Bin 3911 -> 0 bytes + test/line-width-scale-ps2-ref.png | Bin 0 -> 3911 bytes + test/line-width-scale-ps3-ref.png | Bin 0 -> 3911 bytes + test/linear-gradient-ps-ref.png | Bin 779 -> 0 bytes + test/linear-gradient-ps3-ref.png | Bin 0 -> 779 bytes + test/linear-gradient-reflect-ps-ref.png | Bin 314 -> 0 bytes + test/linear-gradient-reflect-ps3-ref.png | Bin 0 -> 314 bytes + test/long-dashed-lines-ps-ref.png | Bin 1516 -> 0 bytes + test/long-dashed-lines-ps2-ref.png | Bin 0 -> 1516 bytes + test/long-dashed-lines-ps3-ref.png | Bin 0 -> 1516 bytes + test/meta-surface-pattern-ps-argb32-ref.png | Bin 3257 -> 0 bytes + test/meta-surface-pattern-ps-rgb24-ref.png | Bin 3873 -> 0 bytes + test/meta-surface-pattern-ps2-argb32-ref.png | Bin 0 -> 3257 bytes + test/meta-surface-pattern-ps2-rgb24-ref.png | Bin 0 -> 3873 bytes + test/meta-surface-pattern-ps3-argb32-ref.png | Bin 0 -> 3257 bytes + test/meta-surface-pattern-ps3-rgb24-ref.png | Bin 0 -> 3873 bytes + test/new-sub-path-ps-argb32-ref.png | Bin 556 -> 0 bytes + test/new-sub-path-ps-rgb24-ref.png | Bin 423 -> 0 bytes + test/new-sub-path-ps2-argb32-ref.png | Bin 0 -> 556 bytes + test/new-sub-path-ps2-rgb24-ref.png | Bin 0 -> 423 bytes + test/new-sub-path-ps3-argb32-ref.png | Bin 0 -> 556 bytes + test/new-sub-path-ps3-rgb24-ref.png | Bin 0 -> 423 bytes + test/over-above-source-ps-argb32-ref.png | Bin 636 -> 0 bytes + test/over-above-source-ps2-argb32-ref.png | Bin 0 -> 636 bytes + test/over-above-source-ps3-argb32-ref.png | Bin 0 -> 636 bytes + test/over-around-source-ps-argb32-ref.png | Bin 632 -> 0 bytes + test/over-around-source-ps-rgb24-ref.png | Bin 538 -> 0 bytes + test/over-around-source-ps2-argb32-ref.png | Bin 0 -> 632 bytes + test/over-around-source-ps2-rgb24-ref.png | Bin 0 -> 538 bytes + test/over-around-source-ps3-argb32-ref.png | Bin 0 -> 632 bytes + test/over-around-source-ps3-rgb24-ref.png | Bin 0 -> 538 bytes + test/over-below-source-ps-argb32-ref.png | Bin 503 -> 0 bytes + test/over-below-source-ps2-argb32-ref.png | Bin 0 -> 503 bytes + test/over-below-source-ps3-argb32-ref.png | Bin 0 -> 503 bytes + test/over-between-source-ps-argb32-ref.png | Bin 678 -> 0 bytes + test/over-between-source-ps2-argb32-ref.png | Bin 0 -> 678 bytes + test/over-between-source-ps3-argb32-ref.png | Bin 0 -> 678 bytes + test/random-intersections-ps-ref.png | Bin 89253 -> 0 bytes + test/random-intersections-ps2-ref.png | Bin 0 -> 89253 bytes + test/random-intersections-ps3-ref.png | Bin 0 -> 89253 bytes + test/rectilinear-miter-limit-ps-ref.png | Bin 221 -> 0 bytes + test/rectilinear-miter-limit-ps2-ref.png | Bin 0 -> 221 bytes + test/rectilinear-miter-limit-ps3-ref.png | Bin 0 -> 221 bytes + test/reflected-stroke-ps-ref.png | Bin 3898 -> 0 bytes + test/reflected-stroke-ps2-ref.png | Bin 0 -> 3898 bytes + test/reflected-stroke-ps3-ref.png | Bin 0 -> 3898 bytes + test/rel-path-ps-rgb24-ref.png | Bin 243 -> 0 bytes + test/rel-path-ps2-rgb24-ref.png | Bin 0 -> 243 bytes + test/rel-path-ps3-rgb24-ref.png | Bin 0 -> 243 bytes + test/rotate-image-surface-paint-ps-ref.png | Bin 212 -> 0 bytes + test/rotate-image-surface-paint-ps2-ref.png | Bin 0 -> 212 bytes + test/rotate-image-surface-paint-ps3-ref.png | Bin 0 -> 212 bytes + test/select-font-face-ps-ref.png | Bin 959 -> 0 bytes + test/select-font-face-ps2-ref.png | Bin 0 -> 959 bytes + test/select-font-face-ps3-ref.png | Bin 0 -> 959 bytes + test/self-copy-ps-ref.png | Bin 335 -> 0 bytes + test/self-copy-ps2-ref.png | Bin 0 -> 335 bytes + test/self-copy-ps3-ref.png | Bin 0 -> 335 bytes + test/show-text-current-point-ps-ref.png | Bin 1356 -> 0 bytes + test/show-text-current-point-ps2-ref.png | Bin 0 -> 1356 bytes + test/show-text-current-point-ps3-ref.png | Bin 0 -> 1356 bytes + test/skew-extreme-ps-ref.png | Bin 1048 -> 0 bytes + test/skew-extreme-ps2-ref.png | Bin 0 -> 1048 bytes + test/skew-extreme-ps3-ref.png | Bin 0 -> 1048 bytes + test/smask-ps-ref.png | Bin 3669 -> 0 bytes + test/smask-ps2-ref.png | Bin 0 -> 3669 bytes + test/smask-ps3-ref.png | Bin 0 -> 3669 bytes + test/smask-text-ps-ref.png | Bin 2023 -> 0 bytes + test/smask-text-ps2-ref.png | Bin 0 -> 2023 bytes + test/smask-text-ps3-ref.png | Bin 0 -> 2023 bytes + test/source-clip-scale-ps-argb32-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-ps-rgb24-ref.png | Bin 183 -> 0 bytes + test/source-clip-scale-ps2-argb32-ref.png | Bin 0 -> 183 bytes + test/source-clip-scale-ps2-rgb24-ref.png | Bin 0 -> 183 bytes + test/source-clip-scale-ps3-argb32-ref.png | Bin 0 -> 183 bytes + test/source-clip-scale-ps3-rgb24-ref.png | Bin 0 -> 183 bytes + test/stroke-ctm-caps-ps-ref.png | Bin 1079 -> 0 bytes + test/stroke-ctm-caps-ps2-ref.png | Bin 0 -> 1079 bytes + test/stroke-ctm-caps-ps3-ref.png | Bin 0 -> 1079 bytes + test/stroke-image-ps-ref.png | Bin 1786 -> 0 bytes + test/stroke-image-ps2-ref.png | Bin 0 -> 1786 bytes + test/stroke-image-ps3-ref.png | Bin 0 -> 1786 bytes + test/surface-pattern-ps-argb32-ref.png | Bin 2520 -> 0 bytes + test/surface-pattern-ps2-argb32-ref.png | Bin 0 -> 2520 bytes + test/surface-pattern-ps3-argb32-ref.png | Bin 0 -> 2520 bytes + test/surface-pattern-scale-down-ps-argb32-ref.png | Bin 1400 -> 0 bytes + test/surface-pattern-scale-down-ps2-argb32-ref.png | Bin 0 -> 1400 bytes + test/surface-pattern-scale-down-ps3-argb32-ref.png | Bin 0 -> 1400 bytes + test/surface-pattern-scale-up-ps-argb32-ref.png | Bin 1011 -> 0 bytes + test/surface-pattern-scale-up-ps2-argb32-ref.png | Bin 0 -> 1011 bytes + test/surface-pattern-scale-up-ps3-argb32-ref.png | Bin 0 -> 1011 bytes + test/text-pattern-ps-argb32-ref.png | Bin 966 -> 0 bytes + test/text-pattern-ps-rgb24-ref.png | Bin 924 -> 0 bytes + test/text-pattern-ps3-argb32-ref.png | Bin 0 -> 966 bytes + test/text-pattern-ps3-rgb24-ref.png | Bin 0 -> 924 bytes + test/text-rotate-ps-ref.png | Bin 6851 -> 0 bytes + test/text-rotate-ps2-ref.png | Bin 0 -> 6851 bytes + test/text-rotate-ps3-ref.png | Bin 0 -> 6851 bytes + test/text-transform-ps-ref.png | Bin 4154 -> 0 bytes + test/text-transform-ps2-ref.png | Bin 0 -> 4154 bytes + test/text-transform-ps3-ref.png | Bin 0 -> 4154 bytes + test/transforms-ps-ref.png | Bin 418 -> 0 bytes + test/transforms-ps2-ref.png | Bin 0 -> 418 bytes + test/transforms-ps3-ref.png | Bin 0 -> 418 bytes + test/trap-clip-ps-argb32-ref.png | Bin 5591 -> 0 bytes + test/trap-clip-ps-rgb24-ref.png | Bin 5512 -> 0 bytes + test/trap-clip-ps3-argb32-ref.png | Bin 0 -> 5591 bytes + test/trap-clip-ps3-rgb24-ref.png | Bin 0 -> 5512 bytes + test/user-font-proxy-ps-ref.png | Bin 8171 -> 0 bytes + test/user-font-proxy-ps2-ref.png | Bin 0 -> 8171 bytes + test/user-font-proxy-ps3-ref.png | Bin 0 -> 8171 bytes + test/user-font-ps-ref.png | Bin 5043 -> 0 bytes + test/user-font-ps2-ref.png | Bin 0 -> 5043 bytes + test/user-font-ps3-ref.png | Bin 0 -> 5043 bytes + test/user-font-rescale-ps-ref.png | Bin 8041 -> 0 bytes + test/user-font-rescale-ps2-ref.png | Bin 0 -> 8041 bytes + test/user-font-rescale-ps3-ref.png | Bin 0 -> 8041 bytes + 289 files changed, 277 insertions(+), 116 deletions(-) + +commit 0c030d3b768718eac5d429d0c819934f32896b25 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri Sep 26 15:26:40 2008 +0100 + + [boilerplate] Add svg-1.2 target. + + SVG 1.2 is sufficiently different from 1.1 that it has separate code + paths within cairo-svg-surface and so justifies its own boilerplate + target. + + boilerplate/cairo-boilerplate-svg-private.h | 30 ++++++--- + boilerplate/cairo-boilerplate-svg.c | 48 +++++++++++++- + boilerplate/cairo-boilerplate.c | 24 ++++++-- + test/Makefile.am | 66 +++++++++++++------- + test/caps-joins-alpha-svg-ref.png | Bin 2454 -> 0 bytes + test/caps-joins-alpha-svg11-ref.png | Bin 0 -> 2454 bytes + test/caps-joins-alpha-svg12-ref.png | Bin 0 -> 2454 bytes + test/font-matrix-translation-svg-ref.png | Bin 970 -> 0 bytes + test/font-matrix-translation-svg11-ref.png | Bin 0 -> 970 bytes + test/font-matrix-translation-svg12-ref.png | Bin 0 -> 970 bytes + test/ft-show-glyphs-positioning-svg-ref.png | Bin 6590 -> 0 bytes + test/ft-show-glyphs-positioning-svg11-ref.png | Bin 0 -> 6590 bytes + test/ft-show-glyphs-positioning-svg12-ref.png | Bin 0 -> 6590 bytes + test/ft-text-vertical-layout-type1-svg-ref.png | Bin 3973 -> 0 bytes + test/ft-text-vertical-layout-type1-svg11-ref.png | Bin 0 -> 3973 bytes + test/ft-text-vertical-layout-type1-svg12-ref.png | Bin 0 -> 3973 bytes + test/ft-text-vertical-layout-type3-svg-ref.png | Bin 3957 -> 0 bytes + test/ft-text-vertical-layout-type3-svg11-ref.png | Bin 0 -> 3957 bytes + test/ft-text-vertical-layout-type3-svg12-ref.png | Bin 0 -> 3957 bytes + test/linear-gradient-svg-ref.png | Bin 1000 -> 0 bytes + test/linear-gradient-svg11-ref.png | Bin 0 -> 1000 bytes + test/linear-gradient-svg12-ref.png | Bin 0 -> 1000 bytes + test/mask-alpha-svg-argb32-ref.png | Bin 615 -> 0 bytes + test/mask-alpha-svg11-argb32-ref.png | Bin 0 -> 615 bytes + test/mask-alpha-svg12-argb32-ref.png | Bin 0 -> 615 bytes + test/mask-ctm-svg-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-ctm-svg11-argb32-ref.png | Bin 0 -> 108 bytes + test/mask-ctm-svg12-argb32-ref.png | Bin 0 -> 108 bytes + test/mask-surface-ctm-svg-argb32-ref.png | Bin 108 -> 0 bytes + test/mask-surface-ctm-svg11-argb32-ref.png | Bin 0 -> 108 bytes + test/mask-surface-ctm-svg12-argb32-ref.png | Bin 0 -> 108 bytes + test/mask-svg-argb32-ref.png | Bin 8527 -> 0 bytes + test/mask-svg-rgb24-ref.png | Bin 7935 -> 0 bytes + test/mask-svg11-argb32-ref.png | Bin 0 -> 8527 bytes + test/mask-svg11-rgb24-ref.png | Bin 0 -> 7935 bytes + test/mask-svg12-argb32-ref.png | Bin 0 -> 8527 bytes + test/mask-svg12-rgb24-ref.png | Bin 0 -> 7935 bytes + test/mask-transformed-similar-svg-ref.png | Bin 4051 -> 0 bytes + test/mask-transformed-similar-svg11-ref.png | Bin 0 -> 4051 bytes + test/mask-transformed-similar-svg12-ref.png | Bin 0 -> 4051 bytes + test/meta-surface-pattern-svg-argb32-ref.png | Bin 3924 -> 0 bytes + test/meta-surface-pattern-svg-rgb24-ref.png | Bin 4593 -> 0 bytes + test/meta-surface-pattern-svg11-argb32-ref.png | Bin 0 -> 3924 bytes + test/meta-surface-pattern-svg11-rgb24-ref.png | Bin 0 -> 4593 bytes + test/meta-surface-pattern-svg12-argb32-ref.png | Bin 0 -> 3924 bytes + test/meta-surface-pattern-svg12-rgb24-ref.png | Bin 0 -> 4593 bytes + test/paint-source-alpha-svg-ref.png | Bin 505 -> 0 bytes + test/paint-source-alpha-svg11-ref.png | Bin 0 -> 505 bytes + test/paint-source-alpha-svg12-ref.png | Bin 0 -> 505 bytes + test/paint-with-alpha-svg-ref.png | Bin 516 -> 0 bytes + test/paint-with-alpha-svg11-ref.png | Bin 0 -> 516 bytes + test/paint-with-alpha-svg12-ref.png | Bin 0 -> 516 bytes + test/push-group-svg-argb32-ref.png | Bin 2935 -> 0 bytes + test/push-group-svg11-argb32-ref.png | Bin 0 -> 2935 bytes + test/push-group-svg12-argb32-ref.png | Bin 0 -> 2935 bytes + test/radial-gradient-svg-ref.png | Bin 91039 -> 0 bytes + test/radial-gradient-svg11-ref.png | Bin 0 -> 91039 bytes + test/radial-gradient-svg12-ref.png | Bin 0 -> 91039 bytes + test/rotate-image-surface-paint-svg-ref.png | Bin 248 -> 0 bytes + test/rotate-image-surface-paint-svg11-ref.png | Bin 0 -> 248 bytes + test/rotate-image-surface-paint-svg12-ref.png | Bin 0 -> 248 bytes + test/scale-source-surface-paint-svg-argb32-ref.png | Bin 182 -> 0 bytes + test/scale-source-surface-paint-svg-rgb24-ref.png | Bin 192 -> 0 bytes + ...scale-source-surface-paint-svg11-argb32-ref.png | Bin 0 -> 182 bytes + .../scale-source-surface-paint-svg11-rgb24-ref.png | Bin 0 -> 192 bytes + ...scale-source-surface-paint-svg12-argb32-ref.png | Bin 0 -> 182 bytes + .../scale-source-surface-paint-svg12-rgb24-ref.png | Bin 0 -> 192 bytes + test/set-source-svg-argb32-ref.png | Bin 104 -> 0 bytes + test/set-source-svg11-argb32-ref.png | Bin 0 -> 104 bytes + test/set-source-svg12-argb32-ref.png | Bin 0 -> 104 bytes + test/smask-fill-svg-ref.png | Bin 1166 -> 0 bytes + test/smask-fill-svg11-ref.png | Bin 0 -> 1166 bytes + test/smask-fill-svg12-ref.png | Bin 0 -> 1166 bytes + test/smask-mask-svg-ref.png | Bin 2529 -> 0 bytes + test/smask-mask-svg11-ref.png | Bin 0 -> 2529 bytes + test/smask-mask-svg12-ref.png | Bin 0 -> 2529 bytes + test/smask-paint-svg-ref.png | Bin 2612 -> 0 bytes + test/smask-paint-svg11-ref.png | Bin 0 -> 2612 bytes + test/smask-paint-svg12-ref.png | Bin 0 -> 2612 bytes + test/smask-svg-ref.png | Bin 3634 -> 0 bytes + test/smask-svg11-ref.png | Bin 0 -> 3634 bytes + test/smask-svg12-ref.png | Bin 0 -> 3634 bytes + test/smask-text-svg-ref.png | Bin 1886 -> 0 bytes + test/smask-text-svg11-ref.png | Bin 0 -> 1886 bytes + test/smask-text-svg12-ref.png | Bin 0 -> 1886 bytes + test/source-clip-scale-svg-ref.png | Bin 119 -> 0 bytes + test/source-clip-scale-svg11-ref.png | Bin 0 -> 119 bytes + test/source-clip-scale-svg12-ref.png | Bin 0 -> 119 bytes + test/surface-pattern-svg-ref.png | Bin 17663 -> 0 bytes + test/surface-pattern-svg11-ref.png | Bin 0 -> 17663 bytes + test/surface-pattern-svg12-ref.png | Bin 0 -> 17663 bytes + test/text-pattern-svg-argb32-ref.png | Bin 1733 -> 0 bytes + test/text-pattern-svg-rgb24-ref.png | Bin 1563 -> 0 bytes + test/text-pattern-svg11-argb32-ref.png | Bin 0 -> 1733 bytes + test/text-pattern-svg11-rgb24-ref.png | Bin 0 -> 1563 bytes + test/text-pattern-svg12-argb32-ref.png | Bin 0 -> 1733 bytes + test/text-pattern-svg12-rgb24-ref.png | Bin 0 -> 1563 bytes + test/text-rotate-svg-ref.png | Bin 18301 -> 0 bytes + test/text-rotate-svg11-ref.png | Bin 0 -> 18301 bytes + test/text-rotate-svg12-ref.png | Bin 0 -> 18301 bytes + test/user-font-proxy-svg-ref.png | Bin 17902 -> 0 bytes + test/user-font-proxy-svg11-ref.png | Bin 0 -> 17902 bytes + test/user-font-proxy-svg12-ref.png | Bin 0 -> 17902 bytes + test/user-font-rescale-svg-ref.png | Bin 15741 -> 0 bytes + test/user-font-rescale-svg11-ref.png | Bin 0 -> 15741 bytes + test/user-font-rescale-svg12-ref.png | Bin 0 -> 15741 bytes + test/user-font-svg-ref.png | Bin 6134 -> 0 bytes + test/user-font-svg11-ref.png | Bin 0 -> 6134 bytes + test/user-font-svg12-ref.png | Bin 0 -> 6134 bytes + 109 files changed, 128 insertions(+), 40 deletions(-) + +commit 86e57671dd21078215505202ef8aa2141d10fb9c +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 11:08:22 2008 -0400 + + [check-*.sh] Redirect error reports to stderr + + doc/public/check-doc-coverage.sh | 6 +++--- + src/check-def.sh | 2 +- + src/check-doc-syntax.sh | 8 ++++---- + src/check-headers.sh | 2 +- + src/check-plt.sh | 2 +- + src/check-preprocessor-syntax.sh | 10 +++++----- + 6 files changed, 15 insertions(+), 15 deletions(-) + +commit 096f9def0f599e527d97bb979f7cafbc87dcddc6 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 10:55:44 2008 -0400 + + Add slim markers to make check-plt.sh happy + + src/cairo-font-face.c | 4 ++++ + src/cairo-user-font.c | 4 ++++ + src/cairo.c | 5 +++++ + src/cairoint.h | 13 +++++++++++++ + 4 files changed, 26 insertions(+), 0 deletions(-) + +commit 1de059b33bd2e6121e35ccf1c4a35ba7755c44d8 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 09:49:50 2008 -0400 + + [RELEASING] Add ftp-release@lists.freedesktop.org + + That list is monitored by various distros to pick up new releases. + We should CC release announcements there. + + RELEASING | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +commit 9662be8ee77e219908b64b82e828d577dcf120f0 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 00:22:00 2008 -0400 + + [twin-font] Adjust ascent/descent + + The font data uses a 64 int high font space with baseline at 50. + + src/cairo-font-face-twin.c | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +commit 3883a371f2ba78b17a1302ba8c5df1a79f3e4075 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Fri Sep 26 00:20:21 2008 -0400 + + [scaled-font] Use full ctm matrix when comparing scaled-font keys + + We use the full matrix in hash computation, but only compare the + non-translation items in equality check. This is no bug though, + as we set the ctm translation components of a scaled font to zero + explicitly. But the change makes the hash and equal functions + consistent, which is good. + + src/cairo-scaled-font.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 48099af9fed7497a230992e41d559a19c5dbdc60 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 25 13:24:58 2008 +0100 + + [boilerplate] Retry conversion in process if first attempt fails. + + One possibility for a read failure whilst converting the image is if the + external utility crashed. This information is important for the test suite + as knowing input that causes the converter to crash is just as vital as + identifying a crash within the library. + + boilerplate/cairo-boilerplate-pdf.c | 11 +---------- + boilerplate/cairo-boilerplate-svg.c | 11 +---------- + boilerplate/cairo-boilerplate.c | 35 +++++++++++++++++++++++++++++++++-- + boilerplate/cairo-boilerplate.h | 11 +++++++++-- + 4 files changed, 44 insertions(+), 24 deletions(-) + +commit f2c484d73ce61012a2d9925f15b55e7c51e34b85 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 25 00:16:45 2008 +0100 + + [test/any2ppm] Handle short reads/writes. + + No excuse other than simple laziness - it manifested itself with random + "error whilst reading" failures. + + boilerplate/cairo-boilerplate.c | 24 ++++++++++++++++-- + test/any2ppm.c | 50 +++++++++++++++++++++++++++++++++----- + 2 files changed, 64 insertions(+), 10 deletions(-) + +commit 681424cbaf94556bf1804547b42ad642c0a066ab +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 25 10:40:32 2008 +0100 + + [analysis] Merge two analysis status codes. + + Since there is an implicit precedence in the ranking of the analysis + return codes, provide a function to centralize the logic within the + analysis surface and isolate the backends from the complexity. + + src/cairo-analysis-surface-private.h | 3 ++ + src/cairo-analysis-surface.c | 50 +++++++++++++++++++++++++-------- + src/cairo-pdf-surface.c | 31 ++++++--------------- + 3 files changed, 50 insertions(+), 34 deletions(-) + +commit 06f0cc81d227a571e011e83cc192050a34d6ea13 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 25 10:29:27 2008 +0100 + + Add a macro to determine whether a status is a fatal error. + + In a few places we need to check whether we have a fatal error or an + internal return code, so provide a utility macro to centralise the check. + + src/cairo.c | 3 +-- + src/cairoint.h | 3 +++ + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit ba18d57339dbedbbdb7f3ca35b06ce6b5dbcd972 +Author: Chris Wilson <chris@chris-wilson.co.uk> +Date: Thu Sep 25 09:39:41 2008 +0100 + + [pdf] Propagate status + + Check and return a few forgotten error codes from static functions. + + src/cairo-pdf-operators.c | 14 +++++++++++--- + src/cairo-pdf-surface.c | 6 +++++- + 2 files changed, 16 insertions(+), 4 deletions(-) + +commit 907f550a1b13b0a388f9ff22663911d4aabbe2d8 +Author: Adrian Johnson <ajohnson@redneon.com> +Date: Fri Sep 26 20:26:55 2008 +0930 + + Fix bitmap-font XFAIL + + Images in PDF are scaled to a unit square. In PS we set the + ImageMatrix to do the same. When the image is painted we scale the + graphics state to paint the image at the right size. In the case of + Type 3 fonts consisting of bitmap images we want to paint the images + at their original size so we scale the graphics state by the image + width and height. + + The bug was that we were scaling by the width/height in the glyph + metrics. For non rotated fonts this worked. However for rotated fonts + the width/height of the glyph images may be larger than the + width/height in the glyph metrics. This resulted in a Type 3 font + where the glyph images were scaled slightly smaller than they should + have been. + + src/cairo-type3-glyph-surface.c | 10 +++------- + test/Makefile.am | 1 - + test/bitmap-font-pdf-argb32-ref.png | Bin 1064 -> 0 bytes + 3 files changed, 3 insertions(+), 8 deletions(-) + +commit f8542dc9dd4dd0685f68381f21fa72dbddd8d682 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Sep 25 19:08:24 2008 -0400 + + [twin-font] Clean up font data by joining lines and closing paths + + Two changes here: + + * Replace move_to;line_to;move_to;line_to sequences with + move_to;line_to;line_to when feasible. + + * Close paths for round glyphs. + + Both improve the stroke rendering of the joint. + + The first change also saves 3 bytes per joint (33 such joints). + Which we have just left unused for now. To reclaim them one need + to update the charset table. Something for a lazy Sunday afternoon + scripting task. + + In the saving department, we can save further by: + + - Getting rid of the left/ascent/descent values as we compute + glyph bounding box automatically. Then we can liberally use + the right value to adjust glyph advance width. Saves three + bytes per glyph (there's 96 glyphs in the font). + + - First operation is always a move_to. So we can remove the 'm' + for that. Ugly though. + + And the charset has zeros for the first 32 entries. Can get rid of + that too at the expense of handling it in the code... + + In total, combining the above we can save some 500 bytes. The font + currently takes about 3.7kb. + + src/cairo-font-face-twin-data.c | 154 +++++++++++++++++++------------------- + src/cairo-font-face-twin.c | 18 ++++- + 2 files changed, 91 insertions(+), 81 deletions(-) + +commit d5a998387bcee6569d33375d592190f480f12712 +Author: Behdad Esfahbod <behdad@behdad.org> +Date: Thu Sep 25 04:27:11 2008 -0400 + + Add an internal font face + + The font data and rendering is adapted from Keith Packard's Twin + window system. The hinting stuff is not ported yet, but hey, it renders! + + The implementation uses user fonts, and the user font backend is modified + to use this font face (which we call "twin" font face internally) when + a toy font is needed. + + The font face layer is then modified to use this font if: + + - The toy font face "cairo" is asked for, or + + - No native font backend is available, or + + - The preferred native font backend fails to return a font with + STATUS_UNSUPPORTED. No font backend does this right now but + the idea is to change FreeType to return it if no fonts found + on the system. + + We also allow building with no font backends now! + + The new doc/tutorial/src/twin.c file tests the twin face at various + sizes. + + build/configure.ac.features | 26 +- + doc/tutorial/src/twin.c | 39 ++ + src/Makefile.sources | 2 + + src/cairo-font-face-twin-data.c | 1030 +++++++++++++++++++++++++++++++++++++++ + src/cairo-font-face-twin.c | 199 ++++++++ + src/cairo-font-face.c | 33 +- + src/cairo-user-font.c | 53 ++- + src/cairoint.h | 18 +- + 8 files changed, 1371 insertions(+), 29 deletions(-) + +commit dd7e2461ce748403e121a5de5e4e4c8890e39236 +Author: Carl Worth <cworth@cworth.org> +Date: Thu Sep 25 16:06:19 2008 -0700 + + Increment cairo version to 1.8.1 after the 1.8.0 release. + + cairo-version.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/NEWS b/NEWS index 73d9197..8ec1577 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,51 @@ +Snapshot 1.11.2 (2011-01-23) +=========================== + +In this first snapshot along the way to cairo-1.12.0, we are very excited +to announce the introduction of Bezier surface gradients, known as type +6/7 gradients in PS/PDF parlance. This is the culmination of much work by +the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys! + +Also, I want to warmly welcome Uli Schlachter who recently joined the +Cairo community on a mission. That mission is to make cairo-xcb a +supported backend for 1.12. And for this snapshot he has made great +strides in fixing all the bugs I had left behind. Thanks Uli! + +And we have also seen a new contributor, Alexandros Frantzis, who has +begun bringing up cairo-gl for GLESv2 devices. Thanks Alex! + +And lastly, I must also thank Adrian and Andrea for the vast numbers of +bugs that they have tackled between them, fixing all those little corner +cases that lie hidden until too late. + +API additions: + +The ability to construct piece-wise Bezier surface gradients: + + cairo_pattern_create_mesh + + constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using + + cairo_pattern_mesh_begin_patch + cairo_pattern_mesh_end_patch + cairo_pattern_mesh_curve_to + cairo_pattern_mesh_line_to + cairo_pattern_mesh_move_to + cairo_pattern_mesh_set_control_point + cairo_pattern_mesh_set_corner_color_rgb + cairo_pattern_mesh_set_corner_color_rgba + cairo_pattern_mesh_get_patch_count + cairo_pattern_mesh_get_path + cairo_pattern_mesh_get_corner_color_rgba + cairo_pattern_mesh_get_control_point + +The introduction of a unique ID accessible via the mime data type: + CAIRO_MIME_TYPE_UNIQUE_ID + + + + + Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>) =================================================================== The cairo community is pleased to announce the 1.10.2 release of the diff --git a/README b/README index d7bdb5c..ee7bd50 100644 --- a/README +++ b/README @@ -89,7 +89,7 @@ Supported, "standard" surface backends ------------------------------------ image backend (required) ------------------------ - pixman >= 0.18.4 http://cairographics.org/releases + pixman >= 0.20.2 http://cairographics.org/releases png support (can be left out if desired, but many ----------- applications expect it to be present) diff --git a/boilerplate/cairo-boilerplate-pdf.c b/boilerplate/cairo-boilerplate-pdf.c index 6f4afe9..ea66c23 100644 --- a/boilerplate/cairo-boilerplate-pdf.c +++ b/boilerplate/cairo-boilerplate-pdf.c @@ -219,7 +219,8 @@ _cairo_boilerplate_pdf_cleanup (void *closure) static void _cairo_boilerplate_pdf_force_fallbacks (cairo_surface_t *abstract_surface, - unsigned int flags) + double x_pixels_per_inch, + double y_pixels_per_inch) { pdf_target_closure_t *ptc = cairo_surface_get_user_data (abstract_surface, &pdf_closure_key); @@ -233,6 +234,9 @@ _cairo_boilerplate_pdf_force_fallbacks (cairo_surface_t *abstract_surface, paginated = (cairo_paginated_surface_t*) abstract_surface; surface = (cairo_pdf_surface_t*) paginated->target; surface->force_fallbacks = TRUE; + cairo_surface_set_fallback_resolution (&paginated->base, + x_pixels_per_inch, + y_pixels_per_inch); } #endif diff --git a/boilerplate/cairo-boilerplate-ps.c b/boilerplate/cairo-boilerplate-ps.c index 09dce6e..e4a3f71 100644 --- a/boilerplate/cairo-boilerplate-ps.c +++ b/boilerplate/cairo-boilerplate-ps.c @@ -281,7 +281,8 @@ _cairo_boilerplate_ps_cleanup (void *closure) static void _cairo_boilerplate_ps_force_fallbacks (cairo_surface_t *abstract_surface, - unsigned int flags) + double x_pixels_per_inch, + double y_pixels_per_inch) { ps_target_closure_t *ptc = cairo_surface_get_user_data (abstract_surface, &ps_closure_key); @@ -295,6 +296,9 @@ _cairo_boilerplate_ps_force_fallbacks (cairo_surface_t *abstract_surface, paginated = (cairo_paginated_surface_t*) abstract_surface; surface = (cairo_ps_surface_t*) paginated->target; surface->force_fallbacks = TRUE; + cairo_surface_set_fallback_resolution (&paginated->base, + x_pixels_per_inch, + y_pixels_per_inch); } static const cairo_boilerplate_target_t targets[] = { diff --git a/boilerplate/cairo-boilerplate-svg.c b/boilerplate/cairo-boilerplate-svg.c index a0bbba6..7e7f1e7 100644 --- a/boilerplate/cairo-boilerplate-svg.c +++ b/boilerplate/cairo-boilerplate-svg.c @@ -253,7 +253,8 @@ _cairo_boilerplate_svg_cleanup (void *closure) static void _cairo_boilerplate_svg_force_fallbacks (cairo_surface_t *abstract_surface, - unsigned int flags) + double x_pixels_per_inch, + double y_pixels_per_inch) { svg_target_closure_t *ptc = cairo_surface_get_user_data (abstract_surface, &svg_closure_key); @@ -267,6 +268,9 @@ _cairo_boilerplate_svg_force_fallbacks (cairo_surface_t *abstract_surface, paginated = (cairo_paginated_surface_t*) abstract_surface; surface = (cairo_svg_surface_t*) paginated->target; surface->force_fallbacks = TRUE; + cairo_surface_set_fallback_resolution (&paginated->base, + x_pixels_per_inch, + y_pixels_per_inch); } static const cairo_boilerplate_target_t targets[] = { diff --git a/boilerplate/cairo-boilerplate-xcb.c b/boilerplate/cairo-boilerplate-xcb.c index 0cac82b..b1bf4de 100644 --- a/boilerplate/cairo-boilerplate-xcb.c +++ b/boilerplate/cairo-boilerplate-xcb.c @@ -30,6 +30,9 @@ #include <assert.h> +/* Errors have response_type == 0 */ +#define CAIRO_XCB_ERROR 0 + static const cairo_user_data_key_t xcb_closure_key; typedef struct _xcb_target_closure { @@ -40,11 +43,55 @@ typedef struct _xcb_target_closure { cairo_surface_t *surface; } xcb_target_closure_t; +static cairo_status_t +_cairo_boilerplate_xcb_handle_errors (xcb_target_closure_t *xtc) +{ + xcb_generic_event_t *ev; + + if ((ev = xcb_poll_for_event (xtc->c)) != NULL) { + if (ev->response_type == CAIRO_XCB_ERROR) { + xcb_generic_error_t *error = (xcb_generic_error_t *) ev; + +#if XCB_GENERIC_ERROR_HAS_MAJOR_MINOR_CODES + fprintf (stderr, + "Detected error during xcb run: %d major=%d, minor=%d\n", + error->error_code, error->major_code, error->minor_code); +#else + fprintf (stderr, + "Detected error during xcb run: %d\n", + error->error_code); +#endif + } else { + fprintf (stderr, + "Detected unexpected event during xcb run: %d\n", + ev->response_type); + } + free (ev); + + /* Silently discard all following errors */ + while ((ev = xcb_poll_for_event (xtc->c)) != NULL) + free (ev); + + return CAIRO_STATUS_WRITE_ERROR; + } + + return CAIRO_STATUS_SUCCESS; +} + +static void +_cairo_boilerplate_xcb_sync_server (xcb_target_closure_t *xtc) +{ + free (xcb_get_input_focus_reply (xtc->c, + xcb_get_input_focus (xtc->c), NULL)); +} + static void _cairo_boilerplate_xcb_cleanup (void *closure) { xcb_target_closure_t *xtc = closure; + cairo_status_t status; + cairo_surface_finish (xtc->surface); if (xtc->is_pixmap) xcb_free_pixmap (xtc->c, xtc->drawable); else @@ -54,6 +101,12 @@ _cairo_boilerplate_xcb_cleanup (void *closure) cairo_device_finish (xtc->device); cairo_device_destroy (xtc->device); + /* First synchronize with the X server to make sure there are no more errors + * in-flight which we would miss otherwise */ + _cairo_boilerplate_xcb_sync_server (xtc); + status = _cairo_boilerplate_xcb_handle_errors (xtc); + assert (status == CAIRO_STATUS_SUCCESS); + xcb_disconnect (xtc->c); free (xtc); @@ -63,10 +116,14 @@ static void _cairo_boilerplate_xcb_synchronize (void *closure) { xcb_target_closure_t *xtc = closure; + cairo_status_t status; free (xcb_get_image_reply (xtc->c, xcb_get_image (xtc->c, XCB_IMAGE_FORMAT_Z_PIXMAP, xtc->drawable, 0, 0, 1, 1, /* AllPlanes */ -1), 0)); + + status = _cairo_boilerplate_xcb_handle_errors (xtc); + assert (status == CAIRO_STATUS_SUCCESS); } static xcb_render_pictforminfo_t * @@ -248,6 +305,12 @@ _cairo_boilerplate_xcb_create_window (const char *name, xtc->surface = NULL; s = xcb_setup_roots_iterator (xcb_get_setup (c)).data; + if (width > s->width_in_pixels || height > s->height_in_pixels) { + xcb_disconnect (c); + free (xtc); + return NULL; + } + xtc->is_pixmap = FALSE; xtc->drawable = xcb_generate_id (c); cookie = xcb_create_window_checked (c, @@ -319,6 +382,12 @@ _cairo_boilerplate_xcb_create_window_db (const char *name, xtc->surface = NULL; s = xcb_setup_roots_iterator (xcb_get_setup (c)).data; + if (width > s->width_in_pixels || height > s->height_in_pixels) { + xcb_disconnect (c); + free (xtc); + return NULL; + } + xtc->is_pixmap = FALSE; xtc->drawable = xcb_generate_id (c); cookie = xcb_create_window_checked (c, @@ -560,7 +629,7 @@ _cairo_boilerplate_xcb_finish_surface (cairo_surface_t *surface) { xcb_target_closure_t *xtc = cairo_surface_get_user_data (surface, &xcb_closure_key); - xcb_generic_event_t *ev; + cairo_status_t status; if (xtc->surface != NULL) { cairo_t *cr; @@ -579,29 +648,12 @@ _cairo_boilerplate_xcb_finish_surface (cairo_surface_t *surface) if (cairo_surface_status (surface)) return cairo_surface_status (surface); - while ((ev = xcb_poll_for_event (xtc->c)) != NULL) { - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - if (ev->response_type == 0 /* trust me! */) { - xcb_generic_error_t *error = (xcb_generic_error_t *) ev; - -#if XCB_GENERIC_ERROR_HAS_MAJOR_MINOR_CODES - fprintf (stderr, - "Detected error during xcb run: %d major=%d, minor=%d\n", - error->error_code, error->major_code, error->minor_code); -#else - fprintf (stderr, - "Detected error during xcb run: %d\n", - error->error_code); -#endif - free (error); - - status = CAIRO_STATUS_WRITE_ERROR; - } - - if (status) - return status; - } + /* First synchronize with the X server to make sure there are no more errors + * in-flight which we would miss otherwise */ + _cairo_boilerplate_xcb_sync_server (xtc); + status = _cairo_boilerplate_xcb_handle_errors (xtc); + if (status) + return status; if (xcb_connection_has_error (xtc->c)) return CAIRO_STATUS_WRITE_ERROR; diff --git a/boilerplate/cairo-boilerplate.h b/boilerplate/cairo-boilerplate.h index dae17ea..c0a0452 100644 --- a/boilerplate/cairo-boilerplate.h +++ b/boilerplate/cairo-boilerplate.h @@ -128,7 +128,8 @@ typedef cairo_surface_t * typedef void (*cairo_boilerplate_force_fallbacks_t) (cairo_surface_t *surface, - unsigned int flags); + double x_pixels_per_inch, + double y_pixels_per_inch); typedef cairo_status_t (*cairo_boilerplate_finish_surface_t) (cairo_surface_t *surface); diff --git a/build/Makefile.am.gtk-doc b/build/Makefile.am.gtk-doc index 7161702..c3d642b 100644 --- a/build/Makefile.am.gtk-doc +++ b/build/Makefile.am.gtk-doc @@ -1,7 +1,16 @@ -# Modified for cairo minimally: +# BEFORE MODIFYING THIS FILE: +# +# This file is a descendant of an old copy of gtk-doc.make, modified for cairo minimally: +# # - Moved to build/ # - Made it append to EXTRA_DIST and CLEANFILES # - Instead of all-local, make "doc" build docs, and err if gtk-doc not enabled +# - Some other changed introduced in 7f114b781f5c530d57530e5f76402e41cdabac6b +# +# Before changing it, check to see if a newer gtk-doc.make has fixed the issue you are facing. +# From time to time, it would be nice to udpate this to the latest copy of gtk-doc.make, but +# please do review all the differences and port our modifications forward. +# # -*- mode: makefile -*- diff --git a/build/configure.ac.features b/build/configure.ac.features index dc3c8b8..343442a 100644 --- a/build/configure.ac.features +++ b/build/configure.ac.features @@ -395,7 +395,6 @@ AC_DEFUN([CAIRO_REPORT], echo "" echo "The following functions:" echo " PNG functions: $use_png" - echo " GLEW functions: $use_glew" echo " GLX functions: $use_glx" echo " WGL functions: $use_wgl" echo " EGL functions: $use_egl" diff --git a/build/configure.ac.warnings b/build/configure.ac.warnings index b225ac8..a43ae89 100644 --- a/build/configure.ac.warnings +++ b/build/configure.ac.warnings @@ -8,6 +8,8 @@ dnl MAYBE_WARN in an ignorable way (like adding whitespace) # -Wcast-align generates lots of false positive reports we need to # cast image data from uint8_t to uin32_t. +# -Wlogical-op causes too much noise from strcmp("literal", str) + MAYBE_WARN="-Wall -Wextra \ -Wold-style-definition -Wdeclaration-after-statement \ -Wmissing-declarations -Werror-implicit-function-declaration \ @@ -17,7 +19,7 @@ MAYBE_WARN="-Wall -Wextra \ -Wbad-function-cast -Wvolatile-register-var \ -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ -Wno-missing-field-initializers -Wno-unused-parameter \ --Wno-attributes -Wno-long-long -Winline -Wlogical-op" +-Wno-attributes -Wno-long-long -Winline" dnl Sun Studio 12 likes to rag at us for abusing enums like dnl having cairo_status_t variables hold cairo_int_status_t diff --git a/cairo-version.h b/cairo-version.h index ebbd622..dee4622 100644 --- a/cairo-version.h +++ b/cairo-version.h @@ -2,7 +2,7 @@ #define CAIRO_VERSION_H #define CAIRO_VERSION_MAJOR 1 -#define CAIRO_VERSION_MINOR 10 +#define CAIRO_VERSION_MINOR 11 #define CAIRO_VERSION_MICRO 2 #endif diff --git a/configure b/configure index 3bf06eb..c728e82 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for cairo 1.10.2. +# Generated by GNU Autoconf 2.67 for cairo 1.11.2. # # Report bugs to <http://bugs.freedesktop.org/enter_bug.cgi?product=cairo>. # @@ -702,8 +702,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cairo' PACKAGE_TARNAME='cairo' -PACKAGE_VERSION='1.10.2' -PACKAGE_STRING='cairo 1.10.2' +PACKAGE_VERSION='1.11.2' +PACKAGE_STRING='cairo 1.11.2' PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=cairo' PACKAGE_URL='' @@ -841,8 +841,6 @@ CAIRO_HAS_DIRECTFB_SURFACE_FALSE CAIRO_HAS_DIRECTFB_SURFACE_TRUE directfb_LIBS directfb_CFLAGS -BUILD_PRIVATE_GLEW_FALSE -BUILD_PRIVATE_GLEW_TRUE CAIRO_HAS_GL_SURFACE_FALSE CAIRO_HAS_GL_SURFACE_TRUE gl_LIBS @@ -1747,7 +1745,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cairo 1.10.2 to adapt to many kinds of systems. +\`configure' configures cairo 1.11.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1821,7 +1819,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cairo 1.10.2:";; + short | recursive ) echo "Configuration of cairo 1.11.2:";; esac cat <<\_ACEOF @@ -2130,7 +2128,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cairo configure 1.10.2 +cairo configure 1.11.2 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2909,7 +2907,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cairo $as_me 1.10.2, which was +It was created by cairo $as_me 1.11.2, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -5041,7 +5039,7 @@ fi # Define the identity of the package. PACKAGE='cairo' - VERSION='1.10.2' + VERSION='1.11.2' # Some tools Automake needs. @@ -6063,13 +6061,13 @@ if test "${lt_cv_nm_interface+set}" = set; then : else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:6066: $ac_compile\"" >&5) + (eval echo "\"\$as_me:6064: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:6069: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:6067: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:6072: output\"" >&5) + (eval echo "\"\$as_me:6070: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -7271,7 +7269,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 7274 "configure"' > conftest.$ac_ext + echo '#line 7272 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8531,11 +8529,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8534: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8532: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8538: \$? = $ac_status" >&5 + echo "$as_me:8536: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8870,11 +8868,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8873: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8871: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8877: \$? = $ac_status" >&5 + echo "$as_me:8875: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8975,11 +8973,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8978: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8976: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8982: \$? = $ac_status" >&5 + echo "$as_me:8980: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -9030,11 +9028,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9033: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9031: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9037: \$? = $ac_status" >&5 + echo "$as_me:9035: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11414,7 +11412,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11417 "configure" +#line 11415 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11510,7 +11508,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11513 "configure" +#line 11511 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12166,11 +12164,11 @@ fi CAIRO_VERSION_MAJOR=1 -CAIRO_VERSION_MINOR=10 +CAIRO_VERSION_MINOR=11 CAIRO_VERSION_MICRO=2 CAIRO_VERSION_SONUM=2 -CAIRO_RELEASE_STATUS=release -CAIRO_LIBTOOL_VERSION_INFO=11002:2:11000 +CAIRO_RELEASE_STATUS=snapshot +CAIRO_LIBTOOL_VERSION_INFO=11104:0:11102 @@ -15595,11 +15593,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15598: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15596: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15602: \$? = $ac_status" >&5 + echo "$as_me:15600: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15694,11 +15692,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15697: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15695: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15701: \$? = $ac_status" >&5 + echo "$as_me:15699: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15746,11 +15744,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15749: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15747: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15753: \$? = $ac_status" >&5 + echo "$as_me:15751: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17222,6 +17220,8 @@ CAIRO_NONPKGCONFIG_LIBS="$LIBS" # -Wcast-align generates lots of false positive reports we need to # cast image data from uint8_t to uin32_t. +# -Wlogical-op causes too much noise from strcmp("literal", str) + MAYBE_WARN="-Wall -Wextra \ -Wold-style-definition -Wdeclaration-after-statement \ -Wmissing-declarations -Werror-implicit-function-declaration \ @@ -17231,7 +17231,7 @@ MAYBE_WARN="-Wall -Wextra \ -Wbad-function-cast -Wvolatile-register-var \ -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ -Wno-missing-field-initializers -Wno-unused-parameter \ --Wno-attributes -Wno-long-long -Winline -Wlogical-op" +-Wno-attributes -Wno-long-long -Winline" MAYBE_WARN="$MAYBE_WARN -erroff=E_ENUM_TYPE_MISMATCH_ARG \ -erroff=E_ENUM_TYPE_MISMATCH_OP" @@ -26752,7 +26752,6 @@ fi -use_glew="no (not required by any backend)" # Check whether --enable-gl was given. if test "${enable_gl+set}" = set; then : enableval=$enable_gl; enable_gl=$enableval @@ -26766,7 +26765,7 @@ fi ;; #( yes|auto) : if test "x$cairo_cv_gl_cache_version" != "x6" -o \ - "x$cairo_cv_gl_cache_commands_len" != "x954" -o \ + "x$cairo_cv_gl_cache_commands_len" != "x370" -o \ "x$cairo_cv_gl_cache_vars" != "x BASE REQUIRES CFLAGS NONPKGCONFIG_CFLAGS LIBS NONPKGCONFIG_LIBS NONPKGCONFIG_EXTRA_LIBS"; then : unset cairo_cv_gl_use fi @@ -26883,118 +26882,13 @@ $as_echo "yes" >&6; } : fi - # Disable system GLEW on UNIX since it assumes X and crashes with EGL - have_glew="no" - case "$host" in - *-linux*|*-*bsd*|*-solaris*) - ;; - *) - ac_fn_c_check_header_mongrel "$LINENO" "GL/glew.h" "ac_cv_header_GL_glew_h" "$ac_includes_default" -if test "x$ac_cv_header_GL_glew_h" = x""yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glewInit in -lGLEW" >&5 -$as_echo_n "checking for glewInit in -lGLEW... " >&6; } -if test "${ac_cv_lib_GLEW_glewInit+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lGLEW $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char glewInit (); -int -main () -{ -return glewInit (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_GLEW_glewInit=yes -else - ac_cv_lib_GLEW_glewInit=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLEW_glewInit" >&5 -$as_echo "$ac_cv_lib_GLEW_glewInit" >&6; } -if test "x$ac_cv_lib_GLEW_glewInit" = x""yes; then : - have_glew="GLEW" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glewInit in -lglew32" >&5 -$as_echo_n "checking for glewInit in -lglew32... " >&6; } -if test "${ac_cv_lib_glew32_glewInit+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lglew32 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char glewInit (); -int -main () -{ -return glewInit (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_glew32_glewInit=yes -else - ac_cv_lib_glew32_glewInit=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_glew32_glewInit" >&5 -$as_echo "$ac_cv_lib_glew32_glewInit" >&6; } -if test "x$ac_cv_lib_glew32_glewInit" = x""yes; then : - have_glew="glew32" -fi - -fi - -fi - - - ;; - esac - if test "x$have_glew" != "xno"; then : - - gl_NONPKGCONFIG_LIBS="-l$have_glew $gl_NONPKGCONFIG_LIBS" - use_glew="yes (system library)" - -else - - use_glew="yes (private copy)" - CAIRO_CFLAGS="$CAIRO_CFLAGS -I\$(top_srcdir)/src/glew" - -fi need_glx_functions=yes need_wgl_functions=yes need_egl_functions=yes cairo_cv_gl_use=$use_gl cairo_cv_gl_cache_vars=" BASE REQUIRES CFLAGS NONPKGCONFIG_CFLAGS LIBS NONPKGCONFIG_LIBS NONPKGCONFIG_EXTRA_LIBS" - cairo_cv_gl_cache_commands_len="954" + cairo_cv_gl_cache_commands_len="370" cairo_cv_gl_cache_version="6" cairo_cv_gl_BASE=$gl_BASE cairo_cv_gl_REQUIRES=$gl_REQUIRES @@ -27223,14 +27117,6 @@ fi - if test "x$use_glew" = "xyes (private copy)"; then - BUILD_PRIVATE_GLEW_TRUE= - BUILD_PRIVATE_GLEW_FALSE='#' -else - BUILD_PRIVATE_GLEW_TRUE='#' - BUILD_PRIVATE_GLEW_FALSE= -fi - # Check whether --enable-directfb was given. @@ -31601,7 +31487,7 @@ image_NONPKGCONFIG_LIBS="$ac_env_image_NONPKGCONFIG_LIBS_value" image_NONPKGCONFIG_EXTRA_LIBS="$ac_env_image_NONPKGCONFIG_EXTRA_LIBS_value" - pixman_REQUIRES="pixman-1 >= 0.18.4" + pixman_REQUIRES="pixman-1 >= 0.20.2" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pixman" >&5 @@ -35092,10 +34978,6 @@ if test -z "${CAIRO_HAS_GL_SURFACE_TRUE}" && test -z "${CAIRO_HAS_GL_SURFACE_FAL as_fn_error $? "conditional \"CAIRO_HAS_GL_SURFACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${BUILD_PRIVATE_GLEW_TRUE}" && test -z "${BUILD_PRIVATE_GLEW_FALSE}"; then - as_fn_error $? "conditional \"BUILD_PRIVATE_GLEW\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${CAIRO_HAS_DIRECTFB_SURFACE_TRUE}" && test -z "${CAIRO_HAS_DIRECTFB_SURFACE_FALSE}"; then as_fn_error $? "conditional \"CAIRO_HAS_DIRECTFB_SURFACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -35628,7 +35510,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cairo $as_me 1.10.2, which was +This file was extended by cairo $as_me 1.11.2, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -35694,7 +35576,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cairo config.status 1.10.2 +cairo config.status 1.11.2 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" @@ -38777,7 +38659,6 @@ fi echo "" echo "The following functions:" echo " PNG functions: $use_png" - echo " GLEW functions: $use_glew" echo " GLX functions: $use_glx" echo " WGL functions: $use_wgl" echo " EGL functions: $use_egl" diff --git a/configure.ac b/configure.ac index 1238f5e..f92e84a 100644 --- a/configure.ac +++ b/configure.ac @@ -298,7 +298,6 @@ CAIRO_ENABLE_FUNCTIONS(png, PNG, yes, [ ]) dnl =========================================================================== -use_glew="no (not required by any backend)" CAIRO_ENABLE_SURFACE_BACKEND(gl, OpenGL, no, [ gl_REQUIRES="gl" PKG_CHECK_MODULES(gl, $gl_REQUIRES,, [ @@ -309,30 +308,10 @@ CAIRO_ENABLE_SURFACE_BACKEND(gl, OpenGL, no, [ gl_NONPKGCONFIG_LIBS="-lGL" fi]) - # Disable system GLEW on UNIX since it assumes X and crashes with EGL - have_glew="no" - case "$host" in - *-linux*|*-*bsd*|*-solaris*) - ;; - *) - AC_CHECK_HEADER(GL/glew.h, - [AC_CHECK_LIB(GLEW, glewInit, [have_glew="GLEW"], - [AC_CHECK_LIB(glew32, glewInit, [have_glew="glew32"], - [])])]) - ;; - esac - AS_IF([test "x$have_glew" != "xno"],[ - gl_NONPKGCONFIG_LIBS="-l$have_glew $gl_NONPKGCONFIG_LIBS" - use_glew="yes (system library)" - ], [ - use_glew="yes (private copy)" - CAIRO_CFLAGS="$CAIRO_CFLAGS -I\$(top_srcdir)/src/glew" - ]) need_glx_functions=yes need_wgl_functions=yes need_egl_functions=yes ]) -AM_CONDITIONAL(BUILD_PRIVATE_GLEW, test "x$use_glew" = "xyes (private copy)") dnl =========================================================================== @@ -614,7 +593,7 @@ CAIRO_ENABLE(test_surfaces, test surfaces, no) dnl =========================================================================== CAIRO_ENABLE_SURFACE_BACKEND(image, image, always, [ - pixman_REQUIRES="pixman-1 >= 0.18.4" + pixman_REQUIRES="pixman-1 >= 0.20.2" PKG_CHECK_MODULES(pixman, $pixman_REQUIRES, , [AC_MSG_RESULT(no) use_image="no (requires $pixman_REQUIRES http://cairographics.org/releases/)"]) image_REQUIRES=$pixman_REQUIRES diff --git a/doc/public/Makefile.am b/doc/public/Makefile.am index a0443b3..11f9e7b 100644 --- a/doc/public/Makefile.am +++ b/doc/public/Makefile.am @@ -21,7 +21,6 @@ EXTRA_HFILES=$(top_builddir)/src/cairo-supported-features.h # Headers to ignore IGNORE_HFILES= \ drm \ - glew \ cairo-features.h \ cairo-features-win32.h \ $(all_cairo_private) \ diff --git a/doc/public/Makefile.in b/doc/public/Makefile.in index b68c747..9d03e98 100644 --- a/doc/public/Makefile.in +++ b/doc/public/Makefile.in @@ -68,10 +68,19 @@ # lists sorted. # -# Modified for cairo minimally: +# BEFORE MODIFYING THIS FILE: +# +# This file is a descendant of an old copy of gtk-doc.make, modified for cairo minimally: +# # - Moved to build/ # - Made it append to EXTRA_DIST and CLEANFILES # - Instead of all-local, make "doc" build docs, and err if gtk-doc not enabled +# - Some other changed introduced in 7f114b781f5c530d57530e5f76402e41cdabac6b +# +# Before changing it, check to see if a newer gtk-doc.make has fixed the issue you are facing. +# From time to time, it would be nice to udpate this to the latest copy of gtk-doc.make, but +# please do review all the differences and port our modifications forward. +# # -*- mode: makefile -*- @@ -109,193 +118,192 @@ check_PROGRAMS = @BUILD_XCB_SHM_TRUE@ cairo-xcb-connection-shm.c \ @BUILD_XCB_SHM_TRUE@ $(NULL) -@BUILD_PRIVATE_GLEW_TRUE@am__append_2 = glew/glew.c -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_3 = $(cairo_xlib_headers) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_4 = $(cairo_xlib_private) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_5 = $(cairo_xlib_cxx_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_6 = $(cairo_xlib_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_7 = cairo-xlib.pc -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_8 = $(cairo_xlib_xrender_headers) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_9 = $(cairo_xlib_xrender_private) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_10 = $(cairo_xlib_xrender_cxx_sources) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_11 = $(cairo_xlib_xrender_sources) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_12 = cairo-xlib-xrender.pc -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_13 = $(cairo_xcb_headers) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_14 = $(cairo_xcb_private) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_15 = $(cairo_xcb_cxx_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_16 = $(cairo_xcb_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_17 = cairo-xcb.pc -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_18 = $(cairo_xlib_xcb_headers) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_19 = $(cairo_xlib_xcb_private) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_20 = $(cairo_xlib_xcb_cxx_sources) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_21 = $(cairo_xlib_xcb_sources) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_22 = cairo-xlib-xcb.pc -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_23 = $(cairo_xcb_shm_headers) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_24 = $(cairo_xcb_shm_private) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_25 = $(cairo_xcb_shm_cxx_sources) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_26 = $(cairo_xcb_shm_sources) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_27 = cairo-xcb-shm.pc -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_28 = $(cairo_qt_headers) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_29 = $(cairo_qt_private) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_30 = $(cairo_qt_cxx_sources) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_31 = $(cairo_qt_sources) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_32 = cairo-qt.pc -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_33 = $(cairo_quartz_headers) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_34 = $(cairo_quartz_private) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_35 = $(cairo_quartz_cxx_sources) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_36 = $(cairo_quartz_sources) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_37 = cairo-quartz.pc -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_38 = $(cairo_quartz_font_headers) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_39 = $(cairo_quartz_font_private) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_40 = $(cairo_quartz_font_cxx_sources) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_41 = $(cairo_quartz_font_sources) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_42 = cairo-quartz-font.pc -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_43 = $(cairo_quartz_image_headers) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_44 = $(cairo_quartz_image_private) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_45 = $(cairo_quartz_image_cxx_sources) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_46 = $(cairo_quartz_image_sources) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_47 = cairo-quartz-image.pc -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_48 = $(cairo_win32_headers) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_49 = $(cairo_win32_private) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_50 = $(cairo_win32_cxx_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_51 = $(cairo_win32_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_52 = cairo-win32.pc -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_53 = $(cairo_win32_font_headers) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_54 = $(cairo_win32_font_private) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_55 = $(cairo_win32_font_cxx_sources) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_56 = $(cairo_win32_font_sources) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_57 = cairo-win32-font.pc -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_58 = $(cairo_skia_headers) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_59 = $(cairo_skia_private) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_60 = $(cairo_skia_cxx_sources) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_61 = $(cairo_skia_sources) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_62 = cairo-skia.pc -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_63 = $(cairo_os2_headers) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_64 = $(cairo_os2_private) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_65 = $(cairo_os2_cxx_sources) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_66 = $(cairo_os2_sources) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_67 = cairo-os2.pc -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_68 = $(cairo_beos_headers) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_69 = $(cairo_beos_private) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_70 = $(cairo_beos_cxx_sources) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_71 = $(cairo_beos_sources) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_72 = cairo-beos.pc -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_73 = $(cairo_drm_headers) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_74 = $(cairo_drm_private) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_75 = $(cairo_drm_cxx_sources) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_76 = $(cairo_drm_sources) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_77 = cairo-drm.pc -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_78 = $(cairo_drm_xr_headers) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_79 = $(cairo_drm_xr_private) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_80 = $(cairo_drm_xr_cxx_sources) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_81 = $(cairo_drm_xr_sources) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_82 = cairo-drm-xr.pc -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_83 = $(cairo_gallium_headers) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_84 = $(cairo_gallium_private) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_85 = $(cairo_gallium_cxx_sources) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_86 = $(cairo_gallium_sources) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_87 = cairo-gallium.pc -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_88 = $(cairo_xcb_drm_headers) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_89 = $(cairo_xcb_drm_private) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_90 = $(cairo_xcb_drm_cxx_sources) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_91 = $(cairo_xcb_drm_sources) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_92 = cairo-xcb-drm.pc -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_93 = $(cairo_png_headers) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_94 = $(cairo_png_private) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_95 = $(cairo_png_cxx_sources) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_96 = $(cairo_png_sources) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_97 = cairo-png.pc -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_98 = $(cairo_gl_headers) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_99 = $(cairo_gl_private) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_100 = $(cairo_gl_cxx_sources) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_101 = $(cairo_gl_sources) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_102 = cairo-gl.pc -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_private) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = $(cairo_directfb_cxx_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = $(cairo_directfb_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_107 = cairo-directfb.pc -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_headers) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_private) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = $(cairo_vg_cxx_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = $(cairo_vg_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_112 = cairo-vg.pc -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_headers) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_private) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = $(cairo_egl_cxx_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = $(cairo_egl_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_117 = cairo-egl.pc -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_headers) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_private) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = $(cairo_glx_cxx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = $(cairo_glx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_122 = cairo-glx.pc -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_headers) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_private) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = $(cairo_wgl_cxx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = $(cairo_wgl_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_127 = cairo-wgl.pc -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_headers) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_private) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = $(cairo_script_cxx_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = $(cairo_script_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_132 = cairo-script.pc -@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_private) -@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = $(cairo_ft_cxx_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = $(cairo_ft_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_137 = cairo-ft.pc -@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_headers) -@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_private) -@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = $(cairo_fc_cxx_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = $(cairo_fc_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_142 = cairo-fc.pc -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_private) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = $(cairo_ps_cxx_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = $(cairo_ps_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_147 = cairo-ps.pc -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_private) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = $(cairo_pdf_cxx_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = $(cairo_pdf_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_152 = cairo-pdf.pc -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_private) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = $(cairo_svg_cxx_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = $(cairo_svg_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_157 = cairo-svg.pc -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_159 = $(cairo_test_surfaces_cxx_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_160 = $(cairo_test_surfaces_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_headers) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_private) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = $(cairo_tee_cxx_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = $(cairo_tee_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_165 = cairo-tee.pc -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_headers) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_private) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = $(cairo_xml_cxx_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = $(cairo_xml_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_170 = cairo-xml.pc -@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_private) $(cairo_pthread_headers) -@CAIRO_HAS_PTHREAD_TRUE@am__append_172 = $(cairo_pthread_cxx_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_173 = $(cairo_pthread_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_headers) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_private) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = $(cairo_gobject_cxx_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = $(cairo_gobject_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_178 = cairo-gobject.pc -@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_private) $(cairo_trace_headers) -@CAIRO_HAS_TRACE_TRUE@am__append_180 = $(cairo_trace_cxx_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_181 = $(cairo_trace_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_private) $(cairo_interpreter_headers) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_183 = $(cairo_interpreter_cxx_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_184 = $(cairo_interpreter_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_186 = $(cairo_symbol_lookup_cxx_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_187 = $(cairo_symbol_lookup_sources) -@ENABLE_GTK_DOC_TRUE@am__append_188 = check-doc-coverage.sh +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_2 = $(cairo_xlib_headers) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_3 = $(cairo_xlib_private) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_4 = $(cairo_xlib_cxx_sources) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_5 = $(cairo_xlib_sources) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_6 = cairo-xlib.pc +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_7 = $(cairo_xlib_xrender_headers) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_8 = $(cairo_xlib_xrender_private) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_9 = $(cairo_xlib_xrender_cxx_sources) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_10 = $(cairo_xlib_xrender_sources) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_11 = cairo-xlib-xrender.pc +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_12 = $(cairo_xcb_headers) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_13 = $(cairo_xcb_private) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_14 = $(cairo_xcb_cxx_sources) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_15 = $(cairo_xcb_sources) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_16 = cairo-xcb.pc +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_17 = $(cairo_xlib_xcb_headers) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_18 = $(cairo_xlib_xcb_private) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_19 = $(cairo_xlib_xcb_cxx_sources) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_20 = $(cairo_xlib_xcb_sources) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_21 = cairo-xlib-xcb.pc +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_22 = $(cairo_xcb_shm_headers) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_23 = $(cairo_xcb_shm_private) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_24 = $(cairo_xcb_shm_cxx_sources) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_25 = $(cairo_xcb_shm_sources) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_26 = cairo-xcb-shm.pc +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_27 = $(cairo_qt_headers) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_28 = $(cairo_qt_private) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_29 = $(cairo_qt_cxx_sources) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_30 = $(cairo_qt_sources) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_31 = cairo-qt.pc +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_32 = $(cairo_quartz_headers) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_33 = $(cairo_quartz_private) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_34 = $(cairo_quartz_cxx_sources) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_35 = $(cairo_quartz_sources) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_36 = cairo-quartz.pc +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_37 = $(cairo_quartz_font_headers) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_38 = $(cairo_quartz_font_private) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_39 = $(cairo_quartz_font_cxx_sources) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_40 = $(cairo_quartz_font_sources) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_41 = cairo-quartz-font.pc +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_42 = $(cairo_quartz_image_headers) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_43 = $(cairo_quartz_image_private) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_44 = $(cairo_quartz_image_cxx_sources) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_45 = $(cairo_quartz_image_sources) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_46 = cairo-quartz-image.pc +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_47 = $(cairo_win32_headers) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_48 = $(cairo_win32_private) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_49 = $(cairo_win32_cxx_sources) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_50 = $(cairo_win32_sources) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_51 = cairo-win32.pc +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_52 = $(cairo_win32_font_headers) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_53 = $(cairo_win32_font_private) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_54 = $(cairo_win32_font_cxx_sources) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_55 = $(cairo_win32_font_sources) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_56 = cairo-win32-font.pc +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_57 = $(cairo_skia_headers) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_58 = $(cairo_skia_private) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_59 = $(cairo_skia_cxx_sources) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_60 = $(cairo_skia_sources) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_61 = cairo-skia.pc +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_62 = $(cairo_os2_headers) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_63 = $(cairo_os2_private) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_64 = $(cairo_os2_cxx_sources) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_65 = $(cairo_os2_sources) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_66 = cairo-os2.pc +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_67 = $(cairo_beos_headers) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_68 = $(cairo_beos_private) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_69 = $(cairo_beos_cxx_sources) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_70 = $(cairo_beos_sources) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_71 = cairo-beos.pc +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_72 = $(cairo_drm_headers) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_73 = $(cairo_drm_private) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_74 = $(cairo_drm_cxx_sources) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_75 = $(cairo_drm_sources) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_76 = cairo-drm.pc +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_77 = $(cairo_drm_xr_headers) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_78 = $(cairo_drm_xr_private) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_79 = $(cairo_drm_xr_cxx_sources) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_80 = $(cairo_drm_xr_sources) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_81 = cairo-drm-xr.pc +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_82 = $(cairo_gallium_headers) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_83 = $(cairo_gallium_private) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_84 = $(cairo_gallium_cxx_sources) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_85 = $(cairo_gallium_sources) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_86 = cairo-gallium.pc +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_87 = $(cairo_xcb_drm_headers) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_88 = $(cairo_xcb_drm_private) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_89 = $(cairo_xcb_drm_cxx_sources) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_90 = $(cairo_xcb_drm_sources) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_91 = cairo-xcb-drm.pc +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_92 = $(cairo_png_headers) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_93 = $(cairo_png_private) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_94 = $(cairo_png_cxx_sources) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_95 = $(cairo_png_sources) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_96 = cairo-png.pc +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_97 = $(cairo_gl_headers) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_98 = $(cairo_gl_private) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_99 = $(cairo_gl_cxx_sources) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_100 = $(cairo_gl_sources) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_101 = cairo-gl.pc +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_102 = $(cairo_directfb_headers) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_private) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_cxx_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = $(cairo_directfb_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = cairo-directfb.pc +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_107 = $(cairo_vg_headers) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_private) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_cxx_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = $(cairo_vg_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = cairo-vg.pc +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_112 = $(cairo_egl_headers) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_private) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_cxx_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = $(cairo_egl_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = cairo-egl.pc +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_117 = $(cairo_glx_headers) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_private) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_cxx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = $(cairo_glx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = cairo-glx.pc +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_122 = $(cairo_wgl_headers) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_private) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_cxx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = $(cairo_wgl_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = cairo-wgl.pc +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_127 = $(cairo_script_headers) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_private) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_cxx_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = $(cairo_script_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = cairo-script.pc +@CAIRO_HAS_FT_FONT_TRUE@am__append_132 = $(cairo_ft_headers) +@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_private) +@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_cxx_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = $(cairo_ft_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = cairo-ft.pc +@CAIRO_HAS_FC_FONT_TRUE@am__append_137 = $(cairo_fc_headers) +@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_private) +@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_cxx_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = $(cairo_fc_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = cairo-fc.pc +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_142 = $(cairo_ps_headers) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_private) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_cxx_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = $(cairo_ps_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = cairo-ps.pc +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_147 = $(cairo_pdf_headers) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_private) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_cxx_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = $(cairo_pdf_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = cairo-pdf.pc +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_152 = $(cairo_svg_headers) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_private) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_cxx_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = $(cairo_svg_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = cairo-svg.pc +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_157 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_cxx_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_159 = $(cairo_test_surfaces_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_160 = $(cairo_tee_headers) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_private) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_cxx_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = $(cairo_tee_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = cairo-tee.pc +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_165 = $(cairo_xml_headers) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_private) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_cxx_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = $(cairo_xml_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = cairo-xml.pc +@CAIRO_HAS_PTHREAD_TRUE@am__append_170 = $(cairo_pthread_private) $(cairo_pthread_headers) +@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_cxx_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_172 = $(cairo_pthread_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_173 = $(cairo_gobject_headers) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_private) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_cxx_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = $(cairo_gobject_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = cairo-gobject.pc +@CAIRO_HAS_TRACE_TRUE@am__append_178 = $(cairo_trace_private) $(cairo_trace_headers) +@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_cxx_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_180 = $(cairo_trace_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_181 = $(cairo_interpreter_private) $(cairo_interpreter_headers) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_cxx_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_183 = $(cairo_interpreter_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_184 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_cxx_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_186 = $(cairo_symbol_lookup_sources) +@ENABLE_GTK_DOC_TRUE@am__append_187 = check-doc-coverage.sh subdir = doc/public ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -557,10 +565,10 @@ EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \ check-doc-coverage.sh check-doc-syntax.sh EXTRA_LTLIBRARIES = MAINTAINERCLEANFILES = Makefile.in -TESTS = $(am__append_188) check-doc-syntax.sh +TESTS = $(am__append_187) check-doc-syntax.sh cairo_headers = cairo.h cairo-deprecated.h cairo_private = cairoint.h cairo-analysis-surface-private.h \ - cairo-arc-private.h cairo-atomic-private.h \ + cairo-arc-private.h cairo-atomic-private.h cairo-box-private.h \ cairo-boxes-private.h cairo-cache-private.h \ cairo-clip-private.h cairo-combsort-private.h \ cairo-compiler-private.h cairo-composite-rectangles-private.h \ @@ -570,12 +578,12 @@ cairo_private = cairoint.h cairo-analysis-surface-private.h \ cairo-freed-pool-private.h cairo-fontconfig-private.h \ cairo-gstate-private.h cairo-hash-private.h \ cairo-image-info-private.h cairo-list-private.h \ - cairo-malloc-private.h cairo-recording-surface-private.h \ - cairo-mutex-impl-private.h cairo-mutex-list-private.h \ - cairo-mutex-private.h cairo-mutex-type-private.h \ - cairo-output-stream-private.h cairo-paginated-private.h \ - cairo-paginated-surface-private.h cairo-path-fixed-private.h \ - cairo-path-private.h cairo-private.h \ + cairo-malloc-private.h cairo-mutex-impl-private.h \ + cairo-mutex-list-private.h cairo-mutex-private.h \ + cairo-mutex-type-private.h cairo-output-stream-private.h \ + cairo-paginated-private.h cairo-paginated-surface-private.h \ + cairo-path-fixed-private.h cairo-path-private.h \ + cairo-private.h cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ cairo-rtree-private.h cairo-scaled-font-private.h \ cairo-slope-private.h cairo-spans-private.h \ @@ -599,12 +607,12 @@ cairo_sources = cairo-analysis-surface.c cairo-arc.c cairo-array.c \ cairo-freelist.c cairo-freed-pool.c cairo-gstate.c \ cairo-hash.c cairo-hull.c cairo-image-info.c \ cairo-image-surface.c cairo-lzw.c cairo-matrix.c \ - cairo-recording-surface.c cairo-misc.c cairo-mutex.c \ + cairo-mesh-pattern-rasterizer.c cairo-misc.c cairo-mutex.c \ cairo-observer.c cairo-output-stream.c \ cairo-paginated-surface.c cairo-path-bounds.c cairo-path.c \ cairo-path-fill.c cairo-path-fixed.c cairo-path-in-fill.c \ cairo-path-stroke.c cairo-pattern.c cairo-pen.c \ - cairo-polygon.c cairo-rectangle.c \ + cairo-polygon.c cairo-recording-surface.c cairo-rectangle.c \ cairo-rectangular-scan-converter.c cairo-region.c \ cairo-rtree.c cairo-scaled-font.c cairo-slope.c cairo-spans.c \ cairo-spline.c cairo-stroke-style.c cairo-surface.c \ @@ -628,6 +636,7 @@ _cairo_font_subset_sources = \ cairo-scaled-font-subsets.c \ cairo-truetype-subset.c \ cairo-type1-fallback.c \ + cairo-type1-glyph-names.c \ cairo-type1-subset.c \ cairo-type3-glyph-surface.c \ $(NULL) @@ -635,8 +644,8 @@ _cairo_font_subset_sources = \ cairo_egl_sources = cairo-egl-context.c cairo_glx_sources = cairo-glx-context.c cairo_wgl_sources = cairo-wgl-context.c -_cairo_pdf_operators_private = cairo-pdf-operators-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c +_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h +_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c cairo_png_sources = cairo-png.c cairo_ps_headers = cairo-ps.h cairo_ps_private = cairo-ps-surface-private.h @@ -719,13 +728,19 @@ cairo_beos_headers = cairo-beos.h cairo_beos_cxx_sources = cairo-beos-surface.cpp cairo_gl_headers = cairo-gl.h cairo_gl_private = cairo-gl-private.h \ - cairo-gl-gradient-private.h \ - glew/GL/glew.h \ - glew/GL/glxew.h + cairo-gl-dispatch-private.h \ + cairo-gl-ext-def-private.h \ + cairo-gl-gradient-private.h + +cairo_gl_sources = cairo-gl-composite.c \ + cairo-gl-device.c \ + cairo-gl-dispatch.c \ + cairo-gl-glyphs.c \ + cairo-gl-gradient.c \ + cairo-gl-info.c \ + cairo-gl-shaders.c \ + cairo-gl-surface.c -cairo_gl_sources = cairo-gl-composite.c cairo-gl-device.c \ - cairo-gl-glyphs.c cairo-gl-gradient.c cairo-gl-shaders.c \ - cairo-gl-surface.c $(am__append_2) cairo_directfb_headers = cairo-directfb.h cairo_directfb_sources = cairo-directfb-surface.c cairo_drm_headers = cairo-drm.h @@ -879,7 +894,21 @@ all_cairo_sources = $(cairo_sources) $(cairo_xlib_sources) \ $(cairo_pthread_sources) $(cairo_gobject_sources) \ $(cairo_trace_sources) $(cairo_interpreter_sources) \ $(cairo_symbol_lookup_sources) -enabled_cairo_headers = $(cairo_headers) $(am__append_3) \ +enabled_cairo_headers = $(cairo_headers) $(am__append_2) \ + $(am__append_7) $(am__append_12) $(am__append_17) \ + $(am__append_22) $(am__append_27) $(am__append_32) \ + $(am__append_37) $(am__append_42) $(am__append_47) \ + $(am__append_52) $(am__append_57) $(am__append_62) \ + $(am__append_67) $(am__append_72) $(am__append_77) \ + $(am__append_82) $(am__append_87) $(am__append_92) \ + $(am__append_97) $(am__append_102) $(am__append_107) \ + $(am__append_112) $(am__append_117) $(am__append_122) \ + $(am__append_127) $(am__append_132) $(am__append_137) \ + $(am__append_142) $(am__append_147) $(am__append_152) \ + $(cairo_image_headers) $(cairo_recording_headers) \ + $(am__append_160) $(am__append_165) $(cairo_user_headers) \ + $(am__append_173) +enabled_cairo_private = $(cairo_private) $(am__append_3) \ $(am__append_8) $(am__append_13) $(am__append_18) \ $(am__append_23) $(am__append_28) $(am__append_33) \ $(am__append_38) $(am__append_43) $(am__append_48) \ @@ -890,10 +919,11 @@ enabled_cairo_headers = $(cairo_headers) $(am__append_3) \ $(am__append_113) $(am__append_118) $(am__append_123) \ $(am__append_128) $(am__append_133) $(am__append_138) \ $(am__append_143) $(am__append_148) $(am__append_153) \ - $(cairo_image_headers) $(cairo_recording_headers) \ - $(am__append_161) $(am__append_166) $(cairo_user_headers) \ - $(am__append_174) -enabled_cairo_private = $(cairo_private) $(am__append_4) \ + $(am__append_157) $(cairo_image_private) \ + $(cairo_recording_private) $(am__append_161) $(am__append_166) \ + $(cairo_user_private) $(am__append_170) $(am__append_174) \ + $(am__append_178) $(am__append_181) $(am__append_184) +enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_4) \ $(am__append_9) $(am__append_14) $(am__append_19) \ $(am__append_24) $(am__append_29) $(am__append_34) \ $(am__append_39) $(am__append_44) $(am__append_49) \ @@ -904,11 +934,12 @@ enabled_cairo_private = $(cairo_private) $(am__append_4) \ $(am__append_114) $(am__append_119) $(am__append_124) \ $(am__append_129) $(am__append_134) $(am__append_139) \ $(am__append_144) $(am__append_149) $(am__append_154) \ - $(am__append_158) $(cairo_image_private) \ - $(cairo_recording_private) $(am__append_162) $(am__append_167) \ - $(cairo_user_private) $(am__append_171) $(am__append_175) \ - $(am__append_179) $(am__append_182) $(am__append_185) -enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_5) \ + $(am__append_158) $(cairo_image_cxx_sources) \ + $(cairo_recording_cxx_sources) $(am__append_162) \ + $(am__append_167) $(cairo_user_cxx_sources) $(am__append_171) \ + $(am__append_175) $(am__append_179) $(am__append_182) \ + $(am__append_185) +enabled_cairo_sources = $(cairo_sources) $(am__append_5) \ $(am__append_10) $(am__append_15) $(am__append_20) \ $(am__append_25) $(am__append_30) $(am__append_35) \ $(am__append_40) $(am__append_45) $(am__append_50) \ @@ -919,26 +950,10 @@ enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_5) \ $(am__append_115) $(am__append_120) $(am__append_125) \ $(am__append_130) $(am__append_135) $(am__append_140) \ $(am__append_145) $(am__append_150) $(am__append_155) \ - $(am__append_159) $(cairo_image_cxx_sources) \ - $(cairo_recording_cxx_sources) $(am__append_163) \ - $(am__append_168) $(cairo_user_cxx_sources) $(am__append_172) \ - $(am__append_176) $(am__append_180) $(am__append_183) \ - $(am__append_186) -enabled_cairo_sources = $(cairo_sources) $(am__append_6) \ - $(am__append_11) $(am__append_16) $(am__append_21) \ - $(am__append_26) $(am__append_31) $(am__append_36) \ - $(am__append_41) $(am__append_46) $(am__append_51) \ - $(am__append_56) $(am__append_61) $(am__append_66) \ - $(am__append_71) $(am__append_76) $(am__append_81) \ - $(am__append_86) $(am__append_91) $(am__append_96) \ - $(am__append_101) $(am__append_106) $(am__append_111) \ - $(am__append_116) $(am__append_121) $(am__append_126) \ - $(am__append_131) $(am__append_136) $(am__append_141) \ - $(am__append_146) $(am__append_151) $(am__append_156) \ - $(am__append_160) $(cairo_image_sources) \ - $(cairo_recording_sources) $(am__append_164) $(am__append_169) \ - $(cairo_user_sources) $(am__append_173) $(am__append_177) \ - $(am__append_181) $(am__append_184) $(am__append_187) + $(am__append_159) $(cairo_image_sources) \ + $(cairo_recording_sources) $(am__append_163) $(am__append_168) \ + $(cairo_user_sources) $(am__append_172) $(am__append_176) \ + $(am__append_180) $(am__append_183) $(am__append_186) all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-xcb.pc cairo-xlib-xcb.pc cairo-xcb-shm.pc cairo-qt.pc \ cairo-quartz.pc cairo-quartz-font.pc cairo-quartz-image.pc \ @@ -949,18 +964,18 @@ all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-script.pc cairo-ft.pc cairo-fc.pc cairo-ps.pc \ cairo-pdf.pc cairo-svg.pc cairo-tee.pc cairo-xml.pc \ cairo-gobject.pc -enabled_cairo_pkgconf = cairo.pc $(am__append_7) $(am__append_12) \ - $(am__append_17) $(am__append_22) $(am__append_27) \ - $(am__append_32) $(am__append_37) $(am__append_42) \ - $(am__append_47) $(am__append_52) $(am__append_57) \ - $(am__append_62) $(am__append_67) $(am__append_72) \ - $(am__append_77) $(am__append_82) $(am__append_87) \ - $(am__append_92) $(am__append_97) $(am__append_102) \ - $(am__append_107) $(am__append_112) $(am__append_117) \ - $(am__append_122) $(am__append_127) $(am__append_132) \ - $(am__append_137) $(am__append_142) $(am__append_147) \ - $(am__append_152) $(am__append_157) $(am__append_165) \ - $(am__append_170) $(am__append_178) +enabled_cairo_pkgconf = cairo.pc $(am__append_6) $(am__append_11) \ + $(am__append_16) $(am__append_21) $(am__append_26) \ + $(am__append_31) $(am__append_36) $(am__append_41) \ + $(am__append_46) $(am__append_51) $(am__append_56) \ + $(am__append_61) $(am__append_66) $(am__append_71) \ + $(am__append_76) $(am__append_81) $(am__append_86) \ + $(am__append_91) $(am__append_96) $(am__append_101) \ + $(am__append_106) $(am__append_111) $(am__append_116) \ + $(am__append_121) $(am__append_126) $(am__append_131) \ + $(am__append_136) $(am__append_141) $(am__append_146) \ + $(am__append_151) $(am__append_156) $(am__append_164) \ + $(am__append_169) $(am__append_177) # The name of the module. DOC_MODULE = cairo @@ -982,7 +997,6 @@ EXTRA_HFILES = $(top_builddir)/src/cairo-supported-features.h # Headers to ignore IGNORE_HFILES = \ drm \ - glew \ cairo-features.h \ cairo-features-win32.h \ $(all_cairo_private) \ diff --git a/doc/public/cairo-sections.txt b/doc/public/cairo-sections.txt index 88debec..ec7c9f1 100644 --- a/doc/public/cairo-sections.txt +++ b/doc/public/cairo-sections.txt @@ -187,6 +187,7 @@ CAIRO_MIME_TYPE_JP2 CAIRO_MIME_TYPE_JPEG CAIRO_MIME_TYPE_PNG CAIRO_MIME_TYPE_URI +CAIRO_MIME_TYPE_UNIQUE_ID cairo_surface_t cairo_content_t cairo_surface_create_similar @@ -277,6 +278,19 @@ cairo_pattern_create_linear cairo_pattern_get_linear_points cairo_pattern_create_radial cairo_pattern_get_radial_circles +cairo_pattern_create_mesh +cairo_pattern_mesh_begin_patch +cairo_pattern_mesh_end_patch +cairo_pattern_mesh_move_to +cairo_pattern_mesh_line_to +cairo_pattern_mesh_curve_to +cairo_pattern_mesh_set_control_point +cairo_pattern_mesh_set_corner_color_rgb +cairo_pattern_mesh_set_corner_color_rgba +cairo_pattern_mesh_get_patch_count +cairo_pattern_mesh_get_path +cairo_pattern_mesh_get_control_point +cairo_pattern_mesh_get_corner_color_rgba cairo_pattern_reference cairo_pattern_destroy cairo_pattern_status diff --git a/doc/public/html/bindings-patterns.html b/doc/public/html/bindings-patterns.html index 80d7948..298167a 100644 --- a/doc/public/html/bindings-patterns.html +++ b/doc/public/html/bindings-patterns.html @@ -51,6 +51,19 @@ cairo_pattern_t <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-add-color-stop-rgba" title="cairo_pattern_add_color_stop_rgba ()"><code class="function">cairo_pattern_add_color_stop_rgba()</code></a> cairo_linear_gradient_t (<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-linear" title="cairo_pattern_create_linear ()"><code class="function">cairo_pattern_create_linear()</code></a>) cairo_radial_gradient_t (<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-radial" title="cairo_pattern_create_radial ()"><code class="function">cairo_pattern_create_radial()</code></a>) + cairo_mesh_t (<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>) + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" title="cairo_pattern_mesh_begin_patch ()"><code class="function">cairo_pattern_mesh_begin_patch()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to" title="cairo_pattern_mesh_move_to ()"><code class="function">cairo_pattern_mesh_move_to()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()"><code class="function">cairo_pattern_mesh_line_to()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" title="cairo_pattern_mesh_curve_to ()"><code class="function">cairo_pattern_mesh_curve_to()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point" title="cairo_pattern_mesh_set_control_point ()"><code class="function">cairo_pattern_mesh_set_control_point()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb" title="cairo_pattern_mesh_set_corner_color_rgb ()"><code class="function">cairo_pattern_mesh_set_corner_color_rgb()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba" title="cairo_pattern_mesh_set_corner_color_rgba ()"><code class="function">cairo_pattern_mesh_set_corner_color_rgba()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" title="cairo_pattern_mesh_get_patch_count ()"><code class="function">cairo_pattern_mesh_get_patch_count()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path" title="cairo_pattern_mesh_get_path ()"><code class="function">cairo_pattern_mesh_get_path()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point" title="cairo_pattern_mesh_get_control_point ()"><code class="function">cairo_pattern_mesh_get_control_point()</code></a> + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba" title="cairo_pattern_mesh_get_corner_color_rgba ()"><code class="function">cairo_pattern_mesh_get_corner_color_rgba()</code></a> </pre> <p> </p> diff --git a/doc/public/html/bindings-streams.html b/doc/public/html/bindings-streams.html index 27b77cf..e6d1540 100644 --- a/doc/public/html/bindings-streams.html +++ b/doc/public/html/bindings-streams.html @@ -78,7 +78,7 @@ public void writeToPNG (OutputStream stream) throws IOException; </p> <p class="remark"><i><span class="remark"> I'm not sure how to handle this for - <code class="function">cairo_pdf_surface_create_for_callback()</code>. + <a class="link" href="cairo-PDF-Surfaces.html#cairo-pdf-surface-create-for-stream" title="cairo_pdf_surface_create_for_stream ()"><code class="function">cairo_pdf_surface_create_for_stream()</code></a>. Other than keep a “exception to rethrow” thread-specific variable that is checked after <span class="emphasis"><em>every</em></span> call to a Cairo diff --git a/doc/public/html/cairo-Error-handling.html b/doc/public/html/cairo-Error-handling.html index 10d1a35..d11d128 100644 --- a/doc/public/html/cairo-Error-handling.html +++ b/doc/public/html/cairo-Error-handling.html @@ -100,6 +100,7 @@ code is required before or after each individual cairo function call. CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, CAIRO_STATUS_DEVICE_TYPE_MISMATCH, CAIRO_STATUS_DEVICE_ERROR, + CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, CAIRO_STATUS_LAST_STATUS } cairo_status_t; @@ -299,6 +300,14 @@ to get a human-readable representation of an error message. </td> </tr> <tr> +<td><p><a name="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"></a><span class="term"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></span></p></td> +<td>a mesh pattern + construction operation was used outside of a + <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" title="cairo_pattern_mesh_begin_patch ()"><code class="function">cairo_pattern_mesh_begin_patch()</code></a>/<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a> + pair (Since 1.12) +</td> +</tr> +<tr> <td><p><a name="CAIRO-STATUS-LAST-STATUS:CAPS"></a><span class="term"><code class="literal">CAIRO_STATUS_LAST_STATUS</code></span></p></td> <td>this is a special value indicating the number of status values defined in this enumeration. When using this value, note diff --git a/doc/public/html/cairo-Image-Surfaces.html b/doc/public/html/cairo-Image-Surfaces.html index 0de66a3..cc70663 100644 --- a/doc/public/html/cairo-Image-Surfaces.html +++ b/doc/public/html/cairo-Image-Surfaces.html @@ -330,6 +330,12 @@ destroy-notification fallback to the surface if necessary. Get a pointer to the data of the image surface, for direct inspection or modification. </p> +<p> +A call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-flush" title="cairo_surface_flush ()"><code class="function">cairo_surface_flush()</code></a> is required before accessing the +pixel data to ensure that all pending drawing operations are +finished. A call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-mark-dirty" title="cairo_surface_mark_dirty ()"><code class="function">cairo_surface_mark_dirty()</code></a> is required after +the data is modified. +</p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> diff --git a/doc/public/html/cairo-PNG-Support.html b/doc/public/html/cairo-PNG-Support.html index 2abe276..19bf097 100644 --- a/doc/public/html/cairo-PNG-Support.html +++ b/doc/public/html/cairo-PNG-Support.html @@ -61,6 +61,15 @@ The PNG functions allow reading PNG images into image surfaces, and writing any surface to a PNG file. </p> +<p> +It is a toy API. It only offers very simple support for reading and +writing PNG files, which is sufficient for testing and +demonstration purposes. Applications which need more control over +the generated PNG file should access the pixel data directly, using +<a class="link" href="cairo-Image-Surfaces.html#cairo-image-surface-get-data" title="cairo_image_surface_get_data ()"><code class="function">cairo_image_surface_get_data()</code></a> or a backend-specific access +function, and process it with another library, e.g. gdk-pixbuf or +libpng. +</p> </div> <div class="refsect1" title="Details"> <a name="cairo-PNG-Support.details"></a><h2>Details</h2> diff --git a/doc/public/html/cairo-Paths.html b/doc/public/html/cairo-Paths.html index 8c8ee8a..cf5feba 100644 --- a/doc/public/html/cairo-Paths.html +++ b/doc/public/html/cairo-Paths.html @@ -614,8 +614,8 @@ point. Adds a circular arc of the given <em class="parameter"><code>radius</code></em> to the current path. The arc is centered at (<em class="parameter"><code>xc</code></em>, <em class="parameter"><code>yc</code></em>), begins at <em class="parameter"><code>angle1</code></em> and proceeds in the direction of increasing angles to end at <em class="parameter"><code>angle2</code></em>. If <em class="parameter"><code>angle2</code></em> is -less than <em class="parameter"><code>angle1</code></em> it will be progressively increased by 2*M_PI -until it is greater than <em class="parameter"><code>angle1</code></em>. +less than <em class="parameter"><code>angle1</code></em> it will be progressively increased by +<code class="literal">2*M_PI</code> until it is greater than <em class="parameter"><code>angle1</code></em>. </p> <p> If there is a current point, an initial line segment will be added @@ -625,11 +625,12 @@ calling <a class="link" href="cairo-Paths.html#cairo-new-sub-path" title="cairo_ </p> <p> Angles are measured in radians. An angle of 0.0 is in the direction -of the positive X axis (in user space). An angle of <code class="literal">M_PI</code>/2.0 radians -(90 degrees) is in the direction of the positive Y axis (in -user space). Angles increase in the direction from the positive X -axis toward the positive Y axis. So with the default transformation -matrix, angles increase in a clockwise direction. +of the positive X axis (in user space). An angle of +<code class="literal">M_PI/2.0</code> radians (90 degrees) is in the +direction of the positive Y axis (in user space). Angles increase +in the direction from the positive X axis toward the positive Y +axis. So with the default transformation matrix, angles increase in +a clockwise direction. </p> <p> (To convert from degrees to radians, use <code class="literal">degrees * (M_PI / @@ -706,8 +707,8 @@ cairo_restore (cr); Adds a circular arc of the given <em class="parameter"><code>radius</code></em> to the current path. The arc is centered at (<em class="parameter"><code>xc</code></em>, <em class="parameter"><code>yc</code></em>), begins at <em class="parameter"><code>angle1</code></em> and proceeds in the direction of decreasing angles to end at <em class="parameter"><code>angle2</code></em>. If <em class="parameter"><code>angle2</code></em> is -greater than <em class="parameter"><code>angle1</code></em> it will be progressively decreased by 2*M_PI -until it is less than <em class="parameter"><code>angle1</code></em>. +greater than <em class="parameter"><code>angle1</code></em> it will be progressively decreased by +<code class="literal">2*M_PI</code> until it is less than <em class="parameter"><code>angle1</code></em>. </p> <p> See <a class="link" href="cairo-Paths.html#cairo-arc" title="cairo_arc ()"><code class="function">cairo_arc()</code></a> for more details. This function differs only in the diff --git a/doc/public/html/cairo-PostScript-Surfaces.html b/doc/public/html/cairo-PostScript-Surfaces.html index 630f66a..ccdf26f 100644 --- a/doc/public/html/cairo-PostScript-Surfaces.html +++ b/doc/public/html/cairo-PostScript-Surfaces.html @@ -475,7 +475,7 @@ Emit a comment into the PostScript output for the given surface. The comment is expected to conform to the PostScript Language Document Structuring Conventions (DSC). Please see that manual for details on the available comments and their meanings. In -particular, the %<code class="literal">IncludeFeature</code> comment allows a +particular, the %%IncludeFeature comment allows a device-independent means of controlling printer device features. So the PostScript Printer Description Files Specification will also be a useful reference. @@ -502,24 +502,26 @@ section apply only to a single page. <p> For comments to appear in the header section, this function should be called after the surface is created, but before a call to -<code class="function">cairo_ps_surface_begin_setup()</code>. +<a class="link" href="cairo-PostScript-Surfaces.html#cairo-ps-surface-dsc-begin-setup" title="cairo_ps_surface_dsc_begin_setup ()"><code class="function">cairo_ps_surface_dsc_begin_setup()</code></a>. </p> <p> For comments to appear in the Setup section, this function should -be called after a call to <code class="function">cairo_ps_surface_begin_setup()</code> but before -a call to <code class="function">cairo_ps_surface_begin_page_setup()</code>. +be called after a call to <a class="link" href="cairo-PostScript-Surfaces.html#cairo-ps-surface-dsc-begin-setup" title="cairo_ps_surface_dsc_begin_setup ()"><code class="function">cairo_ps_surface_dsc_begin_setup()</code></a> but +before a call to <a class="link" href="cairo-PostScript-Surfaces.html#cairo-ps-surface-dsc-begin-page-setup" title="cairo_ps_surface_dsc_begin_page_setup ()"><code class="function">cairo_ps_surface_dsc_begin_page_setup()</code></a>. </p> <p> For comments to appear in the PageSetup section, this function -should be called after a call to <code class="function">cairo_ps_surface_begin_page_setup()</code>. +should be called after a call to +<a class="link" href="cairo-PostScript-Surfaces.html#cairo-ps-surface-dsc-begin-page-setup" title="cairo_ps_surface_dsc_begin_page_setup ()"><code class="function">cairo_ps_surface_dsc_begin_page_setup()</code></a>. </p> <p> -Note that it is only necessary to call <code class="function">cairo_ps_surface_begin_page_setup()</code> -for the first page of any surface. After a call to -<a class="link" href="cairo-cairo-t.html#cairo-show-page" title="cairo_show_page ()"><code class="function">cairo_show_page()</code></a> or <a class="link" href="cairo-cairo-t.html#cairo-copy-page" title="cairo_copy_page ()"><code class="function">cairo_copy_page()</code></a> comments are unambiguously -directed to the PageSetup section of the current page. But it -doesn't hurt to call this function at the beginning of every page -as that consistency may make the calling code simpler. +Note that it is only necessary to call +<a class="link" href="cairo-PostScript-Surfaces.html#cairo-ps-surface-dsc-begin-page-setup" title="cairo_ps_surface_dsc_begin_page_setup ()"><code class="function">cairo_ps_surface_dsc_begin_page_setup()</code></a> for the first page of any +surface. After a call to <a class="link" href="cairo-cairo-t.html#cairo-show-page" title="cairo_show_page ()"><code class="function">cairo_show_page()</code></a> or <a class="link" href="cairo-cairo-t.html#cairo-copy-page" title="cairo_copy_page ()"><code class="function">cairo_copy_page()</code></a> +comments are unambiguously directed to the PageSetup section of the +current page. But it doesn't hurt to call this function at the +beginning of every page as that consistency may make the calling +code simpler. </p> <p> As a final note, cairo automatically generates several comments on @@ -527,18 +529,17 @@ its own. As such, applications must not manually generate any of the following comments: </p> <p> -Header section: %!PS-Adobe-3.0, %<code class="literal">Creator</code>, %<code class="literal">CreationDate</code>, %<code class="literal">Pages</code>, -%<code class="literal">BoundingBox</code>, %<code class="literal">DocumentData</code>, %<code class="literal">LanguageLevel</code>, %<code class="literal">EndComments</code>. +Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, +%%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments. </p> <p> -Setup section: %<code class="literal">BeginSetup</code>, %<code class="literal">EndSetup</code> +Setup section: %%BeginSetup, %%EndSetup </p> <p> -PageSetup section: %<code class="literal">BeginPageSetup</code>, %<code class="literal">PageBoundingBox</code>, -%<code class="literal">EndPageSetup</code>. +PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup. </p> <p> -Other sections: %<code class="literal">BeginProlog</code>, %<code class="literal">EndProlog</code>, %<code class="literal">Page</code>, %<code class="literal">Trailer</code>, %<code class="literal">EOF</code> +Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF </p> <p> Here is an example sequence showing how this function might be used: @@ -546,7 +547,7 @@ Here is an example sequence showing how this function might be used: <p> </p> <div class="informalexample"><pre class="programlisting"> -<a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" title="cairo_surface_t">cairo_surface_t</a> *surface = cairo_ps_surface_create (filename, width, height); +cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); ... cairo_ps_surface_dsc_comment (surface, "%%Title: My excellent document"); cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Cairo Lover") diff --git a/doc/public/html/cairo-Quartz-Surfaces.html b/doc/public/html/cairo-Quartz-Surfaces.html index 7c91850..b5f3b59 100644 --- a/doc/public/html/cairo-Quartz-Surfaces.html +++ b/doc/public/html/cairo-Quartz-Surfaces.html @@ -169,6 +169,14 @@ as long as Quartz-compatible elements are used (such as Quartz fonts). Returns the CGContextRef that the given Quartz surface is backed by. </p> +<p> +A call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-flush" title="cairo_surface_flush ()"><code class="function">cairo_surface_flush()</code></a> is required before using the +CGContextRef to ensure that all pending drawing operations are +finished and to restore any temporary modification cairo has made +to its state. A call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-mark-dirty" title="cairo_surface_mark_dirty ()"><code class="function">cairo_surface_mark_dirty()</code></a> is required +after the state or the content of the CGContextRef has been +modified. +</p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> diff --git a/doc/public/html/cairo-Recording-Surfaces.html b/doc/public/html/cairo-Recording-Surfaces.html index 53d61e1..973b543 100644 --- a/doc/public/html/cairo-Recording-Surfaces.html +++ b/doc/public/html/cairo-Recording-Surfaces.html @@ -63,7 +63,7 @@ operations applied to the recording surface had instead been applied to the target surface, you can use code like this: </p> <div class="informalexample"><pre class="programlisting"> - cairo_t *cr; +cairo_t *cr; cr = cairo_create (target); cairo_set_source_surface (cr, recording_surface, 0.0, 0.0); diff --git a/doc/public/html/cairo-Version-Information.html b/doc/public/html/cairo-Version-Information.html index a39f326..5388d47 100644 --- a/doc/public/html/cairo-Version-Information.html +++ b/doc/public/html/cairo-Version-Information.html @@ -93,7 +93,7 @@ In-progress development (eg. from git) <p> </p> <div class="refsect2" title="Compatibility"> -<a name="id2765635"></a><h3>Compatibility</h3> +<a name="id2756544"></a><h3>Compatibility</h3> <p> The API/ABI compatibility guarantees for various versions are as follows. First, let's assume some cairo-using application code that is @@ -121,7 +121,7 @@ rather the many states between snapshots and releases. </div> <hr> <div class="refsect2" title="Examining the version"> -<a name="id2765673"></a><h3>Examining the version</h3> +<a name="id2756582"></a><h3>Examining the version</h3> <p> Cairo provides the ability to examine the version at either compile-time or run-time and in both a human-readable form as well as diff --git a/doc/public/html/cairo-Win32-Surfaces.html b/doc/public/html/cairo-Win32-Surfaces.html index dc75d19..a23d17a 100644 --- a/doc/public/html/cairo-Win32-Surfaces.html +++ b/doc/public/html/cairo-Win32-Surfaces.html @@ -202,7 +202,7 @@ possible to draw to the surface. </p> <p> The returned surface will be wrapped using the paginated surface to -provide correct complex rendering behaviour; <code class="function">show_page()</code> and +provide correct complex rendering behaviour; <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-show-page" title="cairo_surface_show_page ()"><code class="function">cairo_surface_show_page()</code></a> and associated methods must be used for correct output. </p> <div class="variablelist"><table border="0"> @@ -231,6 +231,13 @@ associated methods must be used for correct output. Returns the HDC associated with this surface, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if none. Also returns <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the surface is not a win32 surface. </p> +<p> +A call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-flush" title="cairo_surface_flush ()"><code class="function">cairo_surface_flush()</code></a> is required before using the HDC to +ensure that all pending drawing operations are finished and to +restore any temporary modification cairo has made to its state. A +call to <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-mark-dirty" title="cairo_surface_mark_dirty ()"><code class="function">cairo_surface_mark_dirty()</code></a> is required after the state or +the content of the HDC has been modified. +</p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> diff --git a/doc/public/html/cairo-cairo-device-t.html b/doc/public/html/cairo-cairo-device-t.html index 9238333..97a84d2 100644 --- a/doc/public/html/cairo-cairo-device-t.html +++ b/doc/public/html/cairo-cairo-device-t.html @@ -132,8 +132,8 @@ surfaces of that type. A <a class="link" href="cairo-cairo-device-t.html#cairo-device-t" title="cairo_device_t"><span class="type">cairo_device_t</span></a> represents the driver interface for drawing operations to a <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" title="cairo_surface_t"><span class="type">cairo_surface_t</span></a>. There are different subtypes of <a class="link" href="cairo-cairo-device-t.html#cairo-device-t" title="cairo_device_t"><span class="type">cairo_device_t</span></a> for different drawing backends; for example, -<code class="function">cairo_xcb_device_create()</code> creates a device that wraps the connection -to an X Windows System using the XCB library. +<code class="function">cairo_egl_device_create()</code> creates a device that wraps an EGL display and +context. </p> <p> The type of a device can be queried with <a class="link" href="cairo-cairo-device-t.html#cairo-device-get-type" title="cairo_device_get_type ()"><code class="function">cairo_device_get_type()</code></a>. @@ -303,7 +303,8 @@ The various <a class="link" href="cairo-cairo-device-t.html#cairo-device-t" titl any type, but some backends also provide type-specific functions that must only be called with a device of the appropriate type. These functions have names that begin with -cairo_<span class="emphasis"><em>type</em></span>_device such as <code class="function">cairo_xcb_device_debug_set_render_version()</code>. +<code class="literal">cairo_<span class="emphasis"><em>type</em></span>_device</code> such as +<code class="function">cairo_xcb_device_debug_cap_xrender_version()</code>. </p> <p> The behavior of calling a type-specific function with a surface of @@ -343,7 +344,6 @@ New entries may be added in future versions. <tr> <td><p><a name="CAIRO-DEVICE-TYPE-XML:CAPS"></a><span class="term"><code class="literal">CAIRO_DEVICE_TYPE_XML</code></span></p></td> <td>The surface is of type XML - <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-create-for-rectangle" title="cairo_surface_create_for_rectangle ()"><code class="function">cairo_surface_create_for_rectangle()</code></a> </td> </tr> </tbody> diff --git a/doc/public/html/cairo-cairo-font-face-t.html b/doc/public/html/cairo-cairo-font-face-t.html index 3a8d19e..75653a6 100644 --- a/doc/public/html/cairo-cairo-font-face-t.html +++ b/doc/public/html/cairo-cairo-font-face-t.html @@ -61,8 +61,8 @@ slant, and other characteristic but no size, transformation, or size. <p> Font faces are created using <em class="firstterm">font-backend</em>-specific constructors, typically of the form -cairo_<span class="emphasis"><em>backend</em></span><code class="function">_font_face_create()</code>, or implicitly -using the <em class="firstterm">toy</em> text API by way of +<code class="function">cairo_<span class="emphasis"><em>backend</em></span>_font_face_create()</code>, +or implicitly using the <em class="firstterm">toy</em> text API by way of <a class="link" href="cairo-text.html#cairo-select-font-face" title="cairo_select_font_face ()"><code class="function">cairo_select_font_face()</code></a>. The resulting face can be accessed using <a class="link" href="cairo-text.html#cairo-get-font-face" title="cairo_get_font_face ()"><code class="function">cairo_get_font_face()</code></a>. </p> @@ -183,8 +183,8 @@ backends" within cairo. <p> The type of a font face is determined by the function used to create it, which will generally be of the form -cairo_<span class="emphasis"><em>type</em></span><code class="function">_font_face_create()</code>. The font face type can be queried -with <a class="link" href="cairo-cairo-font-face-t.html#cairo-font-face-get-type" title="cairo_font_face_get_type ()"><code class="function">cairo_font_face_get_type()</code></a> +<code class="function">cairo_<span class="emphasis"><em>type</em></span>_font_face_create()</code>. +The font face type can be queried with <a class="link" href="cairo-cairo-font-face-t.html#cairo-font-face-get-type" title="cairo_font_face_get_type ()"><code class="function">cairo_font_face_get_type()</code></a> </p> <p> The various <a class="link" href="cairo-cairo-font-face-t.html#cairo-font-face-t" title="cairo_font_face_t"><span class="type">cairo_font_face_t</span></a> functions can be used with a font face @@ -200,7 +200,8 @@ The various <a class="link" href="cairo-cairo-scaled-font-t.html#cairo-scaled-fo fonts of any type, but some font backends also provide type-specific functions that must only be called with a scaled font of the appropriate type. These functions have names that begin with -cairo_<span class="emphasis"><em>type</em></span><code class="function">_scaled_font()</code> such as <a class="link" href="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-lock-face" title="cairo_ft_scaled_font_lock_face ()"><code class="function">cairo_ft_scaled_font_lock_face()</code></a>. +<code class="function">cairo_<span class="emphasis"><em>type</em></span>_scaled_font()</code> +such as <a class="link" href="cairo-FreeType-Fonts.html#cairo-ft-scaled-font-lock-face" title="cairo_ft_scaled_font_lock_face ()"><code class="function">cairo_ft_scaled_font_lock_face()</code></a>. </p> <p> The behavior of calling a type-specific function with a scaled font diff --git a/doc/public/html/cairo-cairo-font-options-t.html b/doc/public/html/cairo-cairo-font-options-t.html index 3565366..fcbda65 100644 --- a/doc/public/html/cairo-cairo-font-options-t.html +++ b/doc/public/html/cairo-cairo-font-options-t.html @@ -89,8 +89,8 @@ rendering fonts. <p> Individual features of a <a class="link" href="cairo-cairo-font-options-t.html#cairo-font-options-t" title="cairo_font_options_t"><span class="type">cairo_font_options_t</span></a> can be set or accessed using functions named -cairo_font_options_set_<span class="emphasis"><em>feature_name</em></span> and -cairo_font_options_get_<span class="emphasis"><em>feature_name</em></span>, like +<code class="function">cairo_font_options_set_<span class="emphasis"><em>feature_name</em></span>()</code> and +<code class="function">cairo_font_options_get_<span class="emphasis"><em>feature_name</em></span>()</code>, like <a class="link" href="cairo-cairo-font-options-t.html#cairo-font-options-set-antialias" title="cairo_font_options_set_antialias ()"><code class="function">cairo_font_options_set_antialias()</code></a> and <a class="link" href="cairo-cairo-font-options-t.html#cairo-font-options-get-antialias" title="cairo_font_options_get_antialias ()"><code class="function">cairo_font_options_get_antialias()</code></a>. </p> @@ -202,7 +202,7 @@ font options object Merges non-default options from <em class="parameter"><code>other</code></em> into <em class="parameter"><code>options</code></em>, replacing existing values. This operation can be thought of as somewhat similar to compositing <em class="parameter"><code>other</code></em> onto <em class="parameter"><code>options</code></em> with the operation -of <code class="literal">CAIRO_OPERATION_OVER</code>. +of <a class="link" href="cairo-cairo-t.html#CAIRO-OPERATOR-OVER:CAPS"><code class="literal">CAIRO_OPERATOR_OVER</code></a>. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> diff --git a/doc/public/html/cairo-cairo-pattern-t.html b/doc/public/html/cairo-cairo-pattern-t.html index d1f1be5..3567cfe 100644 --- a/doc/public/html/cairo-cairo-pattern-t.html +++ b/doc/public/html/cairo-cairo-pattern-t.html @@ -95,6 +95,58 @@ <em class="parameter"><code><span class="type">double</span> *x1</code></em>, <em class="parameter"><code><span class="type">double</span> *y1</code></em>, <em class="parameter"><code><span class="type">double</span> *r1</code></em>); +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="returnvalue">cairo_pattern_t</span></a> * <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()">cairo_pattern_create_mesh</a> (<em class="parameter"><code><span class="type">void</span></code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" title="cairo_pattern_mesh_begin_patch ()">cairo_pattern_mesh_begin_patch</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()">cairo_pattern_mesh_end_patch</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to" title="cairo_pattern_mesh_move_to ()">cairo_pattern_mesh_move_to</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()">cairo_pattern_mesh_line_to</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" title="cairo_pattern_mesh_curve_to ()">cairo_pattern_mesh_curve_to</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x1</code></em>, + <em class="parameter"><code><span class="type">double</span> y1</code></em>, + <em class="parameter"><code><span class="type">double</span> x2</code></em>, + <em class="parameter"><code><span class="type">double</span> y2</code></em>, + <em class="parameter"><code><span class="type">double</span> x3</code></em>, + <em class="parameter"><code><span class="type">double</span> y3</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point" title="cairo_pattern_mesh_set_control_point ()">cairo_pattern_mesh_set_control_point</a> + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> point_num</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb" title="cairo_pattern_mesh_set_corner_color_rgb ()">cairo_pattern_mesh_set_corner_color_rgb</a> + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> red</code></em>, + <em class="parameter"><code><span class="type">double</span> green</code></em>, + <em class="parameter"><code><span class="type">double</span> blue</code></em>); +<span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba" title="cairo_pattern_mesh_set_corner_color_rgba ()">cairo_pattern_mesh_set_corner_color_rgba</a> + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> red</code></em>, + <em class="parameter"><code><span class="type">double</span> green</code></em>, + <em class="parameter"><code><span class="type">double</span> blue</code></em>, + <em class="parameter"><code><span class="type">double</span> alpha</code></em>); +<a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" title="cairo_pattern_mesh_get_patch_count ()">cairo_pattern_mesh_get_patch_count</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *count</code></em>); +<a class="link" href="cairo-Paths.html#cairo-path-t" title="cairo_path_t"><span class="returnvalue">cairo_path_t</span></a> * <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path" title="cairo_pattern_mesh_get_path ()">cairo_pattern_mesh_get_path</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>); +<a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point" title="cairo_pattern_mesh_get_control_point ()">cairo_pattern_mesh_get_control_point</a> + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> point_num</code></em>, + <em class="parameter"><code><span class="type">double</span> *x</code></em>, + <em class="parameter"><code><span class="type">double</span> *y</code></em>); +<a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba" title="cairo_pattern_mesh_get_corner_color_rgba ()">cairo_pattern_mesh_get_corner_color_rgba</a> + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> *red</code></em>, + <em class="parameter"><code><span class="type">double</span> *green</code></em>, + <em class="parameter"><code><span class="type">double</span> *blue</code></em>, + <em class="parameter"><code><span class="type">double</span> *alpha</code></em>); <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="returnvalue">cairo_pattern_t</span></a> * <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-reference" title="cairo_pattern_reference ()">cairo_pattern_reference</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>); <span class="returnvalue">void</span> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-destroy" title="cairo_pattern_destroy ()">cairo_pattern_destroy</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>); <a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-status" title="cairo_pattern_status ()">cairo_pattern_status</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>); @@ -131,9 +183,11 @@ brush too. </p> <p> A cairo pattern is created by using one of the many constructors, -of the form cairo_pattern_create_<span class="emphasis"><em>type</em></span>() +of the form +<code class="function">cairo_pattern_create_<span class="emphasis"><em>type</em></span>()</code> or implicitly through -cairo_set_source_<span class="emphasis"><em>type</em></span>() functions. +<code class="function">cairo_set_source_<span class="emphasis"><em>type</em></span>()</code> +functions. </p> </div> <div class="refsect1" title="Details"> @@ -150,9 +204,10 @@ for different types of sources; for example, opaque color. </p> <p> -Other than various cairo_pattern_create_<span class="emphasis"><em>type</em></span>() -functions, some of the pattern types can be implicitly created -using various cairo_set_source_<span class="emphasis"><em>type</em></span>() functions; +Other than various +<code class="function">cairo_pattern_create_<span class="emphasis"><em>type</em></span>()</code> +functions, some of the pattern types can be implicitly created using various +<code class="function">cairo_set_source_<span class="emphasis"><em>type</em></span>()</code> functions; for example <a class="link" href="cairo-cairo-t.html#cairo-set-source-rgb" title="cairo_set_source_rgb ()"><code class="function">cairo_set_source_rgb()</code></a>. </p> <p> @@ -845,6 +900,802 @@ gradient pattern. <p class="since">Since 1.4</p> </div> <hr> +<div class="refsect2" title="cairo_pattern_create_mesh ()"> +<a name="cairo-pattern-create-mesh"></a><h3>cairo_pattern_create_mesh ()</h3> +<pre class="programlisting"><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="returnvalue">cairo_pattern_t</span></a> * cairo_pattern_create_mesh (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p> +Create a new mesh pattern. +</p> +<p> +Mesh patterns are tensor-product patch meshes (type 7 shadings in +PDF). Mesh patterns may also be used to create other types of +shadings that are special cases of tensor-product patch meshes such +as Coons patch meshes (type 6 shading in PDF) and Gouraud-shaded +triangle meshes (type 4 and 5 shadings in PDF). +</p> +<p> +Mesh patterns consist of one or more tensor-product patches, which +should be defined before using the mesh pattern. Using a mesh +pattern with a partially defined patch as source or mask will put +the context in an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<p> +A tensor-product patch is defined by 4 Bézier curves (side 0, 1, 2, +3) and by 4 additional control points (P0, P1, P2, P3) that provide +further control over the patch and complete the definition of the +tensor-product patch. The corner C0 is the first point of the +patch. +</p> +<p> +Degenerate sides are permitted so straight lines may be used. A +zero length line on one side may be used to create 3 sided patches. +</p> +<p> +</p> +<div class="informalexample"><pre class="programlisting"> + C1 Side 1 C2 + +---------------+ + | | + | P1 P2 | + | | +Side 0 | | Side 2 + | | + | | + | P0 P3 | + | | + +---------------+ + C0 Side 3 C3 +</pre></div> +<p> +</p> +<p> +Each patch is constructed by first calling +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" title="cairo_pattern_mesh_begin_patch ()"><code class="function">cairo_pattern_mesh_begin_patch()</code></a>, then <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to" title="cairo_pattern_mesh_move_to ()"><code class="function">cairo_pattern_mesh_move_to()</code></a> +to specify the first point in the patch (C0). Then the sides are +specified with calls to <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" title="cairo_pattern_mesh_curve_to ()"><code class="function">cairo_pattern_mesh_curve_to()</code></a> and +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()"><code class="function">cairo_pattern_mesh_line_to()</code></a>. +</p> +<p> +The four additional control points (P0, P1, P2, P3) in a patch can +be specified with <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point" title="cairo_pattern_mesh_set_control_point ()"><code class="function">cairo_pattern_mesh_set_control_point()</code></a>. +</p> +<p> +At each corner of the patch (C0, C1, C2, C3) a color may be +specified with <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb" title="cairo_pattern_mesh_set_corner_color_rgb ()"><code class="function">cairo_pattern_mesh_set_corner_color_rgb()</code></a> or +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba" title="cairo_pattern_mesh_set_corner_color_rgba ()"><code class="function">cairo_pattern_mesh_set_corner_color_rgba()</code></a>. Any corner whose color +is not explicitly specified defaults to transparent black. +</p> +<p> +A Coons patch is a special case of the tensor-product patch where +the control points are implicitly defined by the sides of the +patch. The default value for any control point not specified is the +implicit value for a Coons patch, i.e. if no control points are +specified the patch is a Coons patch. +</p> +<p> +A triangle is a special case of the tensor-product patch where the +control points are implicitly defined by the sides of the patch, +all the sides are lines and one of them has length 0, i.e. if the +patch is specified using just 3 lines, it is a triangle. If the +corners connected by the 0-length side have the same color, the +patch is a Gouraud-shaded triangle. +</p> +<p> +Patches may be oriented differently to the above diagram. For +example the first point could be at the top left. The diagram only +shows the relationship between the sides, corners and control +points. Regardless of where the first point is located, when +specifying colors, corner 0 will always be the first point, corner +1 the point between side 0 and side 1 etc. +</p> +<p> +Calling <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a> completes the current +patch. If less than 4 sides have been defined, the first missing +side is defined as a line from the current point to the first point +of the patch (C0) and the other sides are degenerate lines from C0 +to C0. The corners between the added sides will all be coincident +with C0 of the patch and their color will be set to be the same as +the color of C0. +</p> +<p> +Additional patches may be added with additional calls to +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" title="cairo_pattern_mesh_begin_patch ()"><code class="function">cairo_pattern_mesh_begin_patch()</code></a>/<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a>. +</p> +<p> +</p> +<div class="informalexample"><pre class="programlisting"> +cairo_pattern_t *mesh = cairo_pattern_mesh_create_mesh (); + +/* Add a Coons patch */ +cairo_pattern_mesh_begin_patch (mesh); +cairo_pattern_mesh_move_to (pattern, 0, 0); +cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); +cairo_pattern_mesh_curve_to (pattern, 60, 30, 130, 60, 100, 100); +cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); +cairo_pattern_mesh_curve_to (pattern, 30, 70, -30, 30, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); +cairo_pattern_mesh_end_patch (mesh); + +/* Add a Gouraud-shaded triangle */ +cairo_pattern_mesh_begin_patch (mesh) +cairo_pattern_mesh_move_to (pattern, 100, 100); +cairo_pattern_mesh_line_to (pattern, 130, 130); +cairo_pattern_mesh_line_to (pattern, 130, 70); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); +cairo_pattern_mesh_end_patch (mesh) +</pre></div> +<p> +</p> +<p> +When two patches overlap, the last one that has been added is drawn +over the first one. +</p> +<p> +When a patch folds over itself, points are sorted depending on +their parameter coordinates inside the patch. The v coordinate +ranges from 0 to 1 when moving from side 3 to side 1; the u +coordinate ranges from 0 to 1 when going from side 0 to side +2. Points with higher v coordinate hide points with lower v +coordinate. When two points have the same v coordinate, the one +with higher u coordinate is above. This means that points nearer to +side 1 are above points nearer to side 3; when this is not +sufficient to decide which point is above (for example when both +points belong to side 1 or side 3) points nearer to side 2 are +above points nearer to side 0. +</p> +<p> +For a complete definition of tensor-product patches, see the PDF +specification (ISO32000), which describes the parametrization in +detail. +</p> +<p> +Note: The coordinates are always in pattern space. For a new +pattern, pattern space is identical to user space, but the +relationship between the spaces can be changed with +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-set-matrix" title="cairo_pattern_set_matrix ()"><code class="function">cairo_pattern_set_matrix()</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> the newly created <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> if successful, or +an error pattern in case of no memory. The caller owns the returned +object and should call <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-destroy" title="cairo_pattern_destroy ()"><code class="function">cairo_pattern_destroy()</code></a> when finished with +it. + +This function will always return a valid pointer, but if an error +occurred the pattern status will be set to an error. To inspect the +status of a pattern use <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-status" title="cairo_pattern_status ()"><code class="function">cairo_pattern_status()</code></a>. + +</td> +</tr></tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_begin_patch ()"> +<a name="cairo-pattern-mesh-begin-patch"></a><h3>cairo_pattern_mesh_begin_patch ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_begin_patch (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>);</pre> +<p> +Begin a patch in a mesh pattern. +</p> +<p> +After calling this function, the patch shape should be defined with +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to" title="cairo_pattern_mesh_move_to ()"><code class="function">cairo_pattern_mesh_move_to()</code></a>, <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()"><code class="function">cairo_pattern_mesh_line_to()</code></a> and +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" title="cairo_pattern_mesh_curve_to ()"><code class="function">cairo_pattern_mesh_curve_to()</code></a>. +</p> +<p> +After defining the patch, <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a> must be +called before using <em class="parameter"><code>pattern</code></em> as a source or mask. +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>pattern</code></em> already has a +current patch, it will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr></tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_end_patch ()"> +<a name="cairo-pattern-mesh-end-patch"></a><h3>cairo_pattern_mesh_end_patch ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_end_patch (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>);</pre> +<p> +Indicates the end of the current patch in a mesh pattern. +</p> +<p> +If the current patch has less than 4 sides, it is closed with a +straight line from the current point to the first point of the +patch as if <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()"><code class="function">cairo_pattern_mesh_line_to()</code></a> was used. +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>pattern</code></em> has no current +patch or the current patch has no current point, <em class="parameter"><code>pattern</code></em> will be +put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr></tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_move_to ()"> +<a name="cairo-pattern-mesh-move-to"></a><h3>cairo_pattern_mesh_move_to ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_move_to (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>);</pre> +<p> +Define the first point of the current patch in a mesh pattern. +</p> +<p> +After this call the current point will be (<em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>). +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>pattern</code></em> has no current +patch or the current patch already has at leas one side, <em class="parameter"><code>pattern</code></em> +will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x</code></em> :</span></p></td> +<td>the X coordinate of the new position +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y</code></em> :</span></p></td> +<td>the Y coordinate of the new position +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_line_to ()"> +<a name="cairo-pattern-mesh-line-to"></a><h3>cairo_pattern_mesh_line_to ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_line_to (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>);</pre> +<p> +Adds a line to the current patch from the current point to position +(<em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>) in pattern-space coordinates. +</p> +<p> +If there is no current point before the call to +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" title="cairo_pattern_mesh_line_to ()"><code class="function">cairo_pattern_mesh_line_to()</code></a> this function will behave as +cairo_pattern_mesh_move_to(<em class="parameter"><code>pattern</code></em>, <em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>). +</p> +<p> +After this call the current point will be (<em class="parameter"><code>x</code></em>, <em class="parameter"><code>y</code></em>). +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>pattern</code></em> has no current +patch or the current patch already has 4 sides, <em class="parameter"><code>pattern</code></em> will be +put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x</code></em> :</span></p></td> +<td>the X coordinate of the end of the new line +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y</code></em> :</span></p></td> +<td>the Y coordinate of the end of the new line +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_curve_to ()"> +<a name="cairo-pattern-mesh-curve-to"></a><h3>cairo_pattern_mesh_curve_to ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_curve_to (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code><span class="type">double</span> x1</code></em>, + <em class="parameter"><code><span class="type">double</span> y1</code></em>, + <em class="parameter"><code><span class="type">double</span> x2</code></em>, + <em class="parameter"><code><span class="type">double</span> y2</code></em>, + <em class="parameter"><code><span class="type">double</span> x3</code></em>, + <em class="parameter"><code><span class="type">double</span> y3</code></em>);</pre> +<p> +Adds a cubic Bézier spline to the current patch from the current +point to position (<em class="parameter"><code>x3</code></em>, <em class="parameter"><code>y3</code></em>) in pattern-space coordinates, using +(<em class="parameter"><code>x1</code></em>, <em class="parameter"><code>y1</code></em>) and (<em class="parameter"><code>x2</code></em>, <em class="parameter"><code>y2</code></em>) as the control points. +</p> +<p> +If the current patch has no current point before the call to +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" title="cairo_pattern_mesh_curve_to ()"><code class="function">cairo_pattern_mesh_curve_to()</code></a>, this function will behave as if +preceded by a call to cairo_pattern_mesh_move_to(<em class="parameter"><code>pattern</code></em>, <em class="parameter"><code>x1</code></em>, +<em class="parameter"><code>y1</code></em>). +</p> +<p> +After this call the current point will be (<em class="parameter"><code>x3</code></em>, <em class="parameter"><code>y3</code></em>). +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>pattern</code></em> has no current +patch or the current patch already has 4 sides, <em class="parameter"><code>pattern</code></em> will be +put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x1</code></em> :</span></p></td> +<td>the X coordinate of the first control point +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y1</code></em> :</span></p></td> +<td>the Y coordinate of the first control point +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x2</code></em> :</span></p></td> +<td>the X coordinate of the second control point +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y2</code></em> :</span></p></td> +<td>the Y coordinate of the second control point +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x3</code></em> :</span></p></td> +<td>the X coordinate of the end of the curve +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y3</code></em> :</span></p></td> +<td>the Y coordinate of the end of the curve +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_set_control_point ()"> +<a name="cairo-pattern-mesh-set-control-point"></a><h3>cairo_pattern_mesh_set_control_point ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_set_control_point + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> point_num</code></em>, + <em class="parameter"><code><span class="type">double</span> x</code></em>, + <em class="parameter"><code><span class="type">double</span> y</code></em>);</pre> +<p> +Set an internal control point of the current patch. +</p> +<p> +Valid values for <em class="parameter"><code>point_num</code></em> are from 0 to 3 and identify the +control points as explained in <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>. +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>point_num</code></em> is not valid, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a>. If <em class="parameter"><code>pattern</code></em> has no current patch, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>point_num</code></em> :</span></p></td> +<td>the control point to set the position for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x</code></em> :</span></p></td> +<td>the X coordinate of the control point +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y</code></em> :</span></p></td> +<td>the Y coordinate of the control point +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_set_corner_color_rgb ()"> +<a name="cairo-pattern-mesh-set-corner-color-rgb"></a><h3>cairo_pattern_mesh_set_corner_color_rgb ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_set_corner_color_rgb + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> red</code></em>, + <em class="parameter"><code><span class="type">double</span> green</code></em>, + <em class="parameter"><code><span class="type">double</span> blue</code></em>);</pre> +<p> +Sets the color of a corner of the current patch in a mesh pattern. +</p> +<p> +The color is specified in the same way as in <a class="link" href="cairo-cairo-t.html#cairo-set-source-rgb" title="cairo_set_source_rgb ()"><code class="function">cairo_set_source_rgb()</code></a>. +</p> +<p> +Valid values for <em class="parameter"><code>corner_num</code></em> are from 0 to 3 and identify the +corners as explained in <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>. +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>corner_num</code></em> is not valid, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a>. If <em class="parameter"><code>pattern</code></em> has no current patch, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>corner_num</code></em> :</span></p></td> +<td>the corner to set the color for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>red</code></em> :</span></p></td> +<td>red component of color +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>green</code></em> :</span></p></td> +<td>green component of color +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>blue</code></em> :</span></p></td> +<td>blue component of color +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_set_corner_color_rgba ()"> +<a name="cairo-pattern-mesh-set-corner-color-rgba"></a><h3>cairo_pattern_mesh_set_corner_color_rgba ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> cairo_pattern_mesh_set_corner_color_rgba + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> red</code></em>, + <em class="parameter"><code><span class="type">double</span> green</code></em>, + <em class="parameter"><code><span class="type">double</span> blue</code></em>, + <em class="parameter"><code><span class="type">double</span> alpha</code></em>);</pre> +<p> +Sets the color of a corner of the current patch in a mesh pattern. +</p> +<p> +The color is specified in the same way as in <a class="link" href="cairo-cairo-t.html#cairo-set-source-rgba" title="cairo_set_source_rgba ()"><code class="function">cairo_set_source_rgba()</code></a>. +</p> +<p> +Valid values for <em class="parameter"><code>corner_num</code></em> are from 0 to 3 and identify the +corners as explained in <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>. +</p> +<p> +Note: If <em class="parameter"><code>pattern</code></em> is not a mesh pattern then <em class="parameter"><code>pattern</code></em> will be put +into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a>. If <em class="parameter"><code>corner_num</code></em> is not valid, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a>. If <em class="parameter"><code>pattern</code></em> has no current patch, +<em class="parameter"><code>pattern</code></em> will be put into an error status with a status of +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"><code class="literal">CAIRO_STATUS_INVALID_MESH_CONSTRUCTION</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>corner_num</code></em> :</span></p></td> +<td>the corner to set the color for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>red</code></em> :</span></p></td> +<td>red component of color +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>green</code></em> :</span></p></td> +<td>green component of color +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>blue</code></em> :</span></p></td> +<td>blue component of color +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>alpha</code></em> :</span></p></td> +<td>alpha component of color +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_get_patch_count ()"> +<a name="cairo-pattern-mesh-get-patch-count"></a><h3>cairo_pattern_mesh_get_patch_count ()</h3> +<pre class="programlisting"><a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> cairo_pattern_mesh_get_patch_count (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> *count</code></em>);</pre> +<p> +Gets the number of patches specified in the given mesh pattern. +</p> +<p> +The number only includes patches which have been finished by +calling <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" title="cairo_pattern_mesh_end_patch ()"><code class="function">cairo_pattern_mesh_end_patch()</code></a>. For example it will be 0 +during the definition of the first patch. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>count</code></em> :</span></p></td> +<td>return value for the number patches, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-SUCCESS:CAPS"><code class="literal">CAIRO_STATUS_SUCCESS</code></a>, or +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a> if <em class="parameter"><code>pattern</code></em> is not a mesh +pattern. + +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_get_path ()"> +<a name="cairo-pattern-mesh-get-path"></a><h3>cairo_pattern_mesh_get_path ()</h3> +<pre class="programlisting"><a class="link" href="cairo-Paths.html#cairo-path-t" title="cairo_path_t"><span class="returnvalue">cairo_path_t</span></a> * cairo_pattern_mesh_get_path (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>);</pre> +<p> +Gets path defining the patch <em class="parameter"><code>patch_num</code></em> for a mesh +pattern. +</p> +<p> +<em class="parameter"><code>patch_num</code></em> can range 0 to 1 less than the number returned by +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" title="cairo_pattern_mesh_get_patch_count ()"><code class="function">cairo_pattern_mesh_get_patch_count()</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>patch_num</code></em> :</span></p></td> +<td>the patch number to return data for +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> the path defining the patch, or a path with status +<a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a> if <em class="parameter"><code>patch_num</code></em> or <em class="parameter"><code>point_num</code></em> is not +valid for <em class="parameter"><code>pattern</code></em>. If <em class="parameter"><code>pattern</code></em> is not a mesh pattern, a path with +status <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a> is returned. + +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_get_control_point ()"> +<a name="cairo-pattern-mesh-get-control-point"></a><h3>cairo_pattern_mesh_get_control_point ()</h3> +<pre class="programlisting"><a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> cairo_pattern_mesh_get_control_point + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> point_num</code></em>, + <em class="parameter"><code><span class="type">double</span> *x</code></em>, + <em class="parameter"><code><span class="type">double</span> *y</code></em>);</pre> +<p> +Gets the control point <em class="parameter"><code>point_num</code></em> of patch <em class="parameter"><code>patch_num</code></em> for a mesh +pattern. +</p> +<p> +<em class="parameter"><code>patch_num</code></em> can range 0 to 1 less than the number returned by +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" title="cairo_pattern_mesh_get_patch_count ()"><code class="function">cairo_pattern_mesh_get_patch_count()</code></a>. +</p> +<p> +Valid values for <em class="parameter"><code>point_num</code></em> are from 0 to 3 and identify the +control points as explained in <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>patch_num</code></em> :</span></p></td> +<td>the patch number to return data for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>point_num</code></em> :</span></p></td> +<td>the control point number to return data for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>x</code></em> :</span></p></td> +<td>return value for the x coordinate of the control point, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>y</code></em> :</span></p></td> +<td>return value for the y coordinate of the control point, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-SUCCESS:CAPS"><code class="literal">CAIRO_STATUS_SUCCESS</code></a>, or <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a> +if <em class="parameter"><code>patch_num</code></em> or <em class="parameter"><code>point_num</code></em> is not valid for <em class="parameter"><code>pattern</code></em>. If <em class="parameter"><code>pattern</code></em> +is not a mesh pattern, <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a> is +returned. + +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> +<div class="refsect2" title="cairo_pattern_mesh_get_corner_color_rgba ()"> +<a name="cairo-pattern-mesh-get-corner-color-rgba"></a><h3>cairo_pattern_mesh_get_corner_color_rgba ()</h3> +<pre class="programlisting"><a class="link" href="cairo-Error-handling.html#cairo-status-t" title="enum cairo_status_t"><span class="returnvalue">cairo_status_t</span></a> cairo_pattern_mesh_get_corner_color_rgba + (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> patch_num</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> corner_num</code></em>, + <em class="parameter"><code><span class="type">double</span> *red</code></em>, + <em class="parameter"><code><span class="type">double</span> *green</code></em>, + <em class="parameter"><code><span class="type">double</span> *blue</code></em>, + <em class="parameter"><code><span class="type">double</span> *alpha</code></em>);</pre> +<p> +Gets the color information in corner <em class="parameter"><code>corner_num</code></em> of patch +<em class="parameter"><code>patch_num</code></em> for a mesh pattern. +</p> +<p> +<em class="parameter"><code>patch_num</code></em> can range 0 to 1 less than the number returned by +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" title="cairo_pattern_mesh_get_patch_count ()"><code class="function">cairo_pattern_mesh_get_patch_count()</code></a>. +</p> +<p> +Valid values for <em class="parameter"><code>corner_num</code></em> are from 0 to 3 and identify the +corners as explained in <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" title="cairo_pattern_create_mesh ()"><code class="function">cairo_pattern_create_mesh()</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>pattern</code></em> :</span></p></td> +<td>a <a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>patch_num</code></em> :</span></p></td> +<td>the patch number to return data for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>corner_num</code></em> :</span></p></td> +<td>the corner number to return data for +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>red</code></em> :</span></p></td> +<td>return value for red component of color, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>green</code></em> :</span></p></td> +<td>return value for green component of color, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>blue</code></em> :</span></p></td> +<td>return value for blue component of color, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>alpha</code></em> :</span></p></td> +<td>return value for alpha component of color, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-SUCCESS:CAPS"><code class="literal">CAIRO_STATUS_SUCCESS</code></a>, or <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-INVALID-INDEX:CAPS"><code class="literal">CAIRO_STATUS_INVALID_INDEX</code></a> +if <em class="parameter"><code>patch_num</code></em> or <em class="parameter"><code>corner_num</code></em> is not valid for <em class="parameter"><code>pattern</code></em>. If +<em class="parameter"><code>pattern</code></em> is not a mesh pattern, <a class="link" href="cairo-Error-handling.html#CAIRO-STATUS-PATTERN-TYPE-MISMATCH:CAPS"><code class="literal">CAIRO_STATUS_PATTERN_TYPE_MISMATCH</code></a> +is returned. + +</td> +</tr> +</tbody> +</table></div> +<p class="since">Since 1.12</p> +</div> +<hr> <div class="refsect2" title="cairo_pattern_reference ()"> <a name="cairo-pattern-reference"></a><h3>cairo_pattern_reference ()</h3> <pre class="programlisting"><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="returnvalue">cairo_pattern_t</span></a> * cairo_pattern_reference (<em class="parameter"><code><a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t"><span class="type">cairo_pattern_t</span></a> *pattern</code></em>);</pre> @@ -933,6 +1784,9 @@ example, outside the surface bounds or outside the gradient geometry). </p> <p> +Mesh patterns are not affected by the extend mode. +</p> +<p> The default extend mode is <a class="link" href="cairo-cairo-pattern-t.html#CAIRO-EXTEND-NONE:CAPS"><code class="literal">CAIRO_EXTEND_NONE</code></a> for surface patterns and <a class="link" href="cairo-cairo-pattern-t.html#CAIRO-EXTEND-PAD:CAPS"><code class="literal">CAIRO_EXTEND_PAD</code></a> for gradient patterns. </p> @@ -1040,7 +1894,7 @@ pattern. <p> <a class="link" href="cairo-cairo-pattern-t.html#cairo-filter-t" title="enum cairo_filter_t"><span class="type">cairo_filter_t</span></a> is used to indicate what filtering should be applied when reading pixel values from patterns. See -<code class="function">cairo_pattern_set_source()</code> for indicating the desired filter to be +<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-set-filter" title="cairo_pattern_set_filter ()"><code class="function">cairo_pattern_set_filter()</code></a> for indicating the desired filter to be used with a particular pattern. </p> <div class="variablelist"><table border="0"> @@ -1236,7 +2090,8 @@ Stores the pattern's transformation matrix into <em class="parameter"><code>matr CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE, CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL + CAIRO_PATTERN_TYPE_RADIAL, + CAIRO_PATTERN_TYPE_MESH } cairo_pattern_type_t; </pre> <p> @@ -1288,6 +2143,11 @@ color. It may be opaque or translucent. <td>The pattern is a radial gradient. </td> </tr> +<tr> +<td><p><a name="CAIRO-PATTERN-TYPE-MESH:CAPS"></a><span class="term"><code class="literal">CAIRO_PATTERN_TYPE_MESH</code></span></p></td> +<td>The pattern is a mesh. +</td> +</tr> </tbody> </table></div> <p class="since">Since 1.2</p> diff --git a/doc/public/html/cairo-cairo-surface-t.html b/doc/public/html/cairo-cairo-surface-t.html index 9501f75..ca3c611 100644 --- a/doc/public/html/cairo-cairo-surface-t.html +++ b/doc/public/html/cairo-cairo-surface-t.html @@ -41,6 +41,7 @@ #define <a class="link" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-JPEG:CAPS" title="CAIRO_MIME_TYPE_JPEG">CAIRO_MIME_TYPE_JPEG</a> #define <a class="link" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-PNG:CAPS" title="CAIRO_MIME_TYPE_PNG">CAIRO_MIME_TYPE_PNG</a> #define <a class="link" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-URI:CAPS" title="CAIRO_MIME_TYPE_URI">CAIRO_MIME_TYPE_URI</a> +#define <a class="link" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-UNIQUE-ID:CAPS" title="CAIRO_MIME_TYPE_UNIQUE_ID">CAIRO_MIME_TYPE_UNIQUE_ID</a> typedef <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" title="cairo_surface_t">cairo_surface_t</a>; enum <a class="link" href="cairo-cairo-surface-t.html#cairo-content-t" title="enum cairo_content_t">cairo_content_t</a>; <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" title="cairo_surface_t"><span class="returnvalue">cairo_surface_t</span></a> * <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-create-similar" title="cairo_surface_create_similar ()">cairo_surface_create_similar</a> (<em class="parameter"><code><a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" title="cairo_surface_t"><span class="type">cairo_surface_t</span></a> *other</code></em>, @@ -115,7 +116,7 @@ performed using a cairo <em class="firstterm">context</em>. <p> A cairo surface is created by using <em class="firstterm">backend</em>-specific constructors, typically of the form -cairo_<span class="emphasis"><em>backend</em></span><code class="function">_surface_create()</code>. +<code class="function">cairo_<span class="emphasis"><em>backend</em></span>_surface_create()</code>. </p> <p> Most surface types allow accessing the surface without using Cairo @@ -124,7 +125,7 @@ functions. If you do this, keep in mind that it is mandatory that you call you must use <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-mark-dirty" title="cairo_surface_mark_dirty ()"><code class="function">cairo_surface_mark_dirty()</code></a> after modifying it. </p> <div class="example"> -<a name="id2748408"></a><p class="title"><b>Example 1. Directly modifying an image surface</b></p> +<a name="id2738650"></a><p class="title"><b>Example 1. Directly modifying an image surface</b></p> <div class="example-contents"><pre class="programlisting"> void modify_image_surface (cairo_surface_t *surface) @@ -203,6 +204,18 @@ URI for an image file (unofficial MIME type). </p> </div> <hr> +<div class="refsect2" title="CAIRO_MIME_TYPE_UNIQUE_ID"> +<a name="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"></a><h3>CAIRO_MIME_TYPE_UNIQUE_ID</h3> +<pre class="programlisting">#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid" +</pre> +<p> +Unique identifier for a surface (cairo specific MIME type). +</p> +<p> +<em class="parameter"><code>Since</code></em>: 1.12 +</p> +</div> +<hr> <div class="refsect2" title="cairo_surface_t"> <a name="cairo-surface-t"></a><h3>cairo_surface_t</h3> <pre class="programlisting">typedef struct _cairo_surface cairo_surface_t; @@ -881,7 +894,8 @@ backends" within cairo. </p> <p> The type of a surface is determined by the function used to create -it, which will generally be of the form cairo_<span class="emphasis"><em>type</em></span><code class="function">_surface_create()</code>, +it, which will generally be of the form +<code class="function">cairo_<span class="emphasis"><em>type</em></span>_surface_create()</code>, (though see <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-create-similar" title="cairo_surface_create_similar ()"><code class="function">cairo_surface_create_similar()</code></a> as well). </p> <p> @@ -892,7 +906,7 @@ The various <a class="link" href="cairo-cairo-surface-t.html#cairo-surface-t" ti any type, but some backends also provide type-specific functions that must only be called with a surface of the appropriate type. These functions have names that begin with -cairo_<span class="emphasis"><em>type</em></span>_surface such as <a class="link" href="cairo-Image-Surfaces.html#cairo-image-surface-get-width" title="cairo_image_surface_get_width ()"><code class="function">cairo_image_surface_get_width()</code></a>. +<code class="literal">cairo_<span class="emphasis"><em>type</em></span>_surface</code> such as <a class="link" href="cairo-Image-Surfaces.html#cairo-image-surface-get-width" title="cairo_image_surface_get_width ()"><code class="function">cairo_image_surface_get_width()</code></a>. </p> <p> The behavior of calling a type-specific function with a surface of diff --git a/doc/public/html/cairo-cairo-t.html b/doc/public/html/cairo-cairo-t.html index 9df54c7..32eadf3 100644 --- a/doc/public/html/cairo-cairo-t.html +++ b/doc/public/html/cairo-cairo-t.html @@ -203,7 +203,8 @@ Creates a new <a class="link" href="cairo-cairo-t.html#cairo-t" title="cairo_t"> default values and with <em class="parameter"><code>target</code></em> as a target surface. The target surface should be constructed with a backend-specific function such as <a class="link" href="cairo-Image-Surfaces.html#cairo-image-surface-create" title="cairo_image_surface_create ()"><code class="function">cairo_image_surface_create()</code></a> (or any other -cairo_<span class="emphasis"><em>backend</em></span><code class="function">_surface_create()</code> variant). +<code class="function">cairo_<span class="emphasis"><em>backend</em></span>_surface_create()</code> +variant). </p> <p> This function references <em class="parameter"><code>target</code></em>, so you can immediately @@ -530,7 +531,7 @@ operations: <p> </p> <div class="informalexample"><pre class="programlisting"> -<a class="link" href="cairo-cairo-pattern-t.html#cairo-pattern-t" title="cairo_pattern_t">cairo_pattern_t</a> *group = cairo_pop_group (cr); +cairo_pattern_t *group = cairo_pop_group (cr); cairo_set_source (cr, group); cairo_pattern_destroy (group); </pre></div> @@ -886,7 +887,8 @@ Note that this option does not affect text rendering, instead see <a name="cairo-get-antialias"></a><h3>cairo_get_antialias ()</h3> <pre class="programlisting"><a class="link" href="cairo-cairo-t.html#cairo-antialias-t" title="enum cairo_antialias_t"><span class="returnvalue">cairo_antialias_t</span></a> cairo_get_antialias (<em class="parameter"><code><a class="link" href="cairo-cairo-t.html#cairo-t" title="cairo_t"><span class="type">cairo_t</span></a> *cr</code></em>);</pre> <p> -Gets the current shape antialiasing mode, as set by <code class="function">cairo_set_shape_antialias()</code>. +Gets the current shape antialiasing mode, as set by +<a class="link" href="cairo-cairo-t.html#cairo-set-antialias" title="cairo_set_antialias ()"><code class="function">cairo_set_antialias()</code></a>. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> @@ -2084,7 +2086,7 @@ be dereferenced. <col align="left" valign="top"> <tbody><tr> <td><p><span class="term"><em class="parameter"><code>rectangle_list</code></em> :</span></p></td> -<td>a rectangle list, as obtained from <code class="function">cairo_copy_clip_rectangles()</code> +<td>a rectangle list, as obtained from <a class="link" href="cairo-cairo-t.html#cairo-copy-clip-rectangle-list" title="cairo_copy_clip_rectangle_list ()"><code class="function">cairo_copy_clip_rectangle_list()</code></a> </td> </tr></tbody> </table></div> diff --git a/doc/public/html/cairo.devhelp b/doc/public/html/cairo.devhelp index c78a57a..105f05f 100644 --- a/doc/public/html/cairo.devhelp +++ b/doc/public/html/cairo.devhelp @@ -164,6 +164,19 @@ <function name="cairo_pattern_get_linear_points ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-linear-points"/> <function name="cairo_pattern_create_radial ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-radial"/> <function name="cairo_pattern_get_radial_circles ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-radial-circles"/> + <function name="cairo_pattern_create_mesh ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh"/> + <function name="cairo_pattern_mesh_begin_patch ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch"/> + <function name="cairo_pattern_mesh_end_patch ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch"/> + <function name="cairo_pattern_mesh_move_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to"/> + <function name="cairo_pattern_mesh_line_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to"/> + <function name="cairo_pattern_mesh_curve_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to"/> + <function name="cairo_pattern_mesh_set_control_point ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point"/> + <function name="cairo_pattern_mesh_set_corner_color_rgb ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb"/> + <function name="cairo_pattern_mesh_set_corner_color_rgba ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba"/> + <function name="cairo_pattern_mesh_get_patch_count ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count"/> + <function name="cairo_pattern_mesh_get_path ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path"/> + <function name="cairo_pattern_mesh_get_control_point ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point"/> + <function name="cairo_pattern_mesh_get_corner_color_rgba ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba"/> <function name="cairo_pattern_reference ()" link="cairo-cairo-pattern-t.html#cairo-pattern-reference"/> <function name="cairo_pattern_destroy ()" link="cairo-cairo-pattern-t.html#cairo-pattern-destroy"/> <function name="cairo_pattern_status ()" link="cairo-cairo-pattern-t.html#cairo-pattern-status"/> @@ -343,6 +356,7 @@ <function name="CAIRO_MIME_TYPE_JPEG" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-JPEG:CAPS"/> <function name="CAIRO_MIME_TYPE_PNG" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-PNG:CAPS"/> <function name="CAIRO_MIME_TYPE_URI" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-URI:CAPS"/> + <function name="CAIRO_MIME_TYPE_UNIQUE_ID" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"/> <function name="cairo_surface_t" link="cairo-cairo-surface-t.html#cairo-surface-t"/> <function name="enum cairo_content_t" link="cairo-cairo-surface-t.html#cairo-content-t"/> <function name="cairo_surface_create_similar ()" link="cairo-cairo-surface-t.html#cairo-surface-create-similar"/> @@ -458,8 +472,8 @@ <function name="enum cairo_status_t" link="cairo-Error-handling.html#cairo-status-t"/> <function name="cairo_status_to_string ()" link="cairo-Error-handling.html#cairo-status-to-string"/> <function name="cairo_debug_reset_static_data ()" link="cairo-Error-handling.html#cairo-debug-reset-static-data"/> - <function name="Compatibility" link="cairo-Version-Information.html#id2765635"/> - <function name="Examining the version" link="cairo-Version-Information.html#id2765673"/> + <function name="Compatibility" link="cairo-Version-Information.html#id2756544"/> + <function name="Examining the version" link="cairo-Version-Information.html#id2756582"/> <function name="CAIRO_VERSION" link="cairo-Version-Information.html#CAIRO-VERSION:CAPS"/> <function name="CAIRO_VERSION_MAJOR" link="cairo-Version-Information.html#CAIRO-VERSION-MAJOR:CAPS"/> <function name="CAIRO_VERSION_MINOR" link="cairo-Version-Information.html#CAIRO-VERSION-MINOR:CAPS"/> diff --git a/doc/public/html/cairo.devhelp2 b/doc/public/html/cairo.devhelp2 index 44cbd82..61dfb95 100644 --- a/doc/public/html/cairo.devhelp2 +++ b/doc/public/html/cairo.devhelp2 @@ -164,6 +164,19 @@ <keyword type="function" name="cairo_pattern_get_linear_points ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-linear-points" since="1.4"/> <keyword type="function" name="cairo_pattern_create_radial ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-radial"/> <keyword type="function" name="cairo_pattern_get_radial_circles ()" link="cairo-cairo-pattern-t.html#cairo-pattern-get-radial-circles" since="1.4"/> + <keyword type="function" name="cairo_pattern_create_mesh ()" link="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_begin_patch ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_end_patch ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_move_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_line_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_curve_to ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_set_control_point ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_set_corner_color_rgb ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_set_corner_color_rgba ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_get_patch_count ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_get_path ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_get_control_point ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point" since="1.12"/> + <keyword type="function" name="cairo_pattern_mesh_get_corner_color_rgba ()" link="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba" since="1.12"/> <keyword type="function" name="cairo_pattern_reference ()" link="cairo-cairo-pattern-t.html#cairo-pattern-reference"/> <keyword type="function" name="cairo_pattern_destroy ()" link="cairo-cairo-pattern-t.html#cairo-pattern-destroy"/> <keyword type="function" name="cairo_pattern_status ()" link="cairo-cairo-pattern-t.html#cairo-pattern-status"/> @@ -343,6 +356,7 @@ <keyword type="macro" name="CAIRO_MIME_TYPE_JPEG" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-JPEG:CAPS"/> <keyword type="macro" name="CAIRO_MIME_TYPE_PNG" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-PNG:CAPS"/> <keyword type="macro" name="CAIRO_MIME_TYPE_URI" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-URI:CAPS"/> + <keyword type="macro" name="CAIRO_MIME_TYPE_UNIQUE_ID" link="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"/> <keyword type="typedef" name="cairo_surface_t" link="cairo-cairo-surface-t.html#cairo-surface-t"/> <keyword type="enum" name="enum cairo_content_t" link="cairo-cairo-surface-t.html#cairo-content-t"/> <keyword type="function" name="cairo_surface_create_similar ()" link="cairo-cairo-surface-t.html#cairo-surface-create-similar"/> @@ -458,8 +472,8 @@ <keyword type="enum" name="enum cairo_status_t" link="cairo-Error-handling.html#cairo-status-t"/> <keyword type="function" name="cairo_status_to_string ()" link="cairo-Error-handling.html#cairo-status-to-string"/> <keyword type="function" name="cairo_debug_reset_static_data ()" link="cairo-Error-handling.html#cairo-debug-reset-static-data"/> - <keyword type="" name="Compatibility" link="cairo-Version-Information.html#id2765635"/> - <keyword type="" name="Examining the version" link="cairo-Version-Information.html#id2765673"/> + <keyword type="" name="Compatibility" link="cairo-Version-Information.html#id2756544"/> + <keyword type="" name="Examining the version" link="cairo-Version-Information.html#id2756582"/> <keyword type="macro" name="CAIRO_VERSION" link="cairo-Version-Information.html#CAIRO-VERSION:CAPS"/> <keyword type="macro" name="CAIRO_VERSION_MAJOR" link="cairo-Version-Information.html#CAIRO-VERSION-MAJOR:CAPS"/> <keyword type="macro" name="CAIRO_VERSION_MINOR" link="cairo-Version-Information.html#CAIRO-VERSION-MINOR:CAPS"/> @@ -532,6 +546,7 @@ <keyword type="constant" name="CAIRO_PATTERN_TYPE_SURFACE" link="cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-SURFACE:CAPS"/> <keyword type="constant" name="CAIRO_PATTERN_TYPE_LINEAR" link="cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-LINEAR:CAPS"/> <keyword type="constant" name="CAIRO_PATTERN_TYPE_RADIAL" link="cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-RADIAL:CAPS"/> + <keyword type="constant" name="CAIRO_PATTERN_TYPE_MESH" link="cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-MESH:CAPS"/> <keyword type="constant" name="CAIRO_REGION_OVERLAP_IN" link="cairo-Regions.html#CAIRO-REGION-OVERLAP-IN:CAPS"/> <keyword type="constant" name="CAIRO_REGION_OVERLAP_OUT" link="cairo-Regions.html#CAIRO-REGION-OVERLAP-OUT:CAPS"/> <keyword type="constant" name="CAIRO_REGION_OVERLAP_PART" link="cairo-Regions.html#CAIRO-REGION-OVERLAP-PART:CAPS"/> @@ -640,6 +655,7 @@ <keyword type="constant" name="CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED" link="cairo-Error-handling.html#CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"/> <keyword type="constant" name="CAIRO_STATUS_DEVICE_TYPE_MISMATCH" link="cairo-Error-handling.html#CAIRO-STATUS-DEVICE-TYPE-MISMATCH:CAPS"/> <keyword type="constant" name="CAIRO_STATUS_DEVICE_ERROR" link="cairo-Error-handling.html#CAIRO-STATUS-DEVICE-ERROR:CAPS"/> + <keyword type="constant" name="CAIRO_STATUS_INVALID_MESH_CONSTRUCTION" link="cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"/> <keyword type="constant" name="CAIRO_STATUS_LAST_STATUS" link="cairo-Error-handling.html#CAIRO-STATUS-LAST-STATUS:CAPS"/> </functions> </book> diff --git a/doc/public/html/index-all.html b/doc/public/html/index-all.html index 164f87c..d09149b 100644 --- a/doc/public/html/index-all.html +++ b/doc/public/html/index-all.html @@ -378,6 +378,8 @@ </dt> <dt>CAIRO_MIME_TYPE_PNG, <a class="indexterm" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-PNG:CAPS">CAIRO_MIME_TYPE_PNG</a> </dt> +<dt>CAIRO_MIME_TYPE_UNIQUE_ID, <a class="indexterm" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-UNIQUE-ID:CAPS">CAIRO_MIME_TYPE_UNIQUE_ID</a> +</dt> <dt>CAIRO_MIME_TYPE_URI, <a class="indexterm" href="cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-URI:CAPS">CAIRO_MIME_TYPE_URI</a> </dt> <dt>cairo_move_to, <a class="indexterm" href="cairo-Paths.html#cairo-move-to">cairo_move_to ()</a> @@ -423,6 +425,8 @@ </dt> <dt>cairo_pattern_create_linear, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-create-linear">cairo_pattern_create_linear ()</a> </dt> +<dt>cairo_pattern_create_mesh, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-create-mesh">cairo_pattern_create_mesh ()</a> +</dt> <dt>cairo_pattern_create_radial, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-create-radial">cairo_pattern_create_radial ()</a> </dt> <dt>cairo_pattern_create_rgb, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-create-rgb">cairo_pattern_create_rgb ()</a> @@ -455,6 +459,30 @@ </dt> <dt>cairo_pattern_get_user_data, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-get-user-data">cairo_pattern_get_user_data ()</a> </dt> +<dt>cairo_pattern_mesh_begin_patch, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch">cairo_pattern_mesh_begin_patch ()</a> +</dt> +<dt>cairo_pattern_mesh_curve_to, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to">cairo_pattern_mesh_curve_to ()</a> +</dt> +<dt>cairo_pattern_mesh_end_patch, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch">cairo_pattern_mesh_end_patch ()</a> +</dt> +<dt>cairo_pattern_mesh_get_control_point, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point">cairo_pattern_mesh_get_control_point ()</a> +</dt> +<dt>cairo_pattern_mesh_get_corner_color_rgba, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba">cairo_pattern_mesh_get_corner_color_rgba ()</a> +</dt> +<dt>cairo_pattern_mesh_get_patch_count, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count">cairo_pattern_mesh_get_patch_count ()</a> +</dt> +<dt>cairo_pattern_mesh_get_path, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path">cairo_pattern_mesh_get_path ()</a> +</dt> +<dt>cairo_pattern_mesh_line_to, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to">cairo_pattern_mesh_line_to ()</a> +</dt> +<dt>cairo_pattern_mesh_move_to, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to">cairo_pattern_mesh_move_to ()</a> +</dt> +<dt>cairo_pattern_mesh_set_control_point, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point">cairo_pattern_mesh_set_control_point ()</a> +</dt> +<dt>cairo_pattern_mesh_set_corner_color_rgb, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb">cairo_pattern_mesh_set_corner_color_rgb ()</a> +</dt> +<dt>cairo_pattern_mesh_set_corner_color_rgba, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba">cairo_pattern_mesh_set_corner_color_rgba ()</a> +</dt> <dt>cairo_pattern_reference, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-reference">cairo_pattern_reference ()</a> </dt> <dt>cairo_pattern_set_extend, <a class="indexterm" href="cairo-cairo-pattern-t.html#cairo-pattern-set-extend">cairo_pattern_set_extend ()</a> diff --git a/doc/public/html/index.html b/doc/public/html/index.html index 8463e0e..c943166 100644 --- a/doc/public/html/index.html +++ b/doc/public/html/index.html @@ -14,7 +14,7 @@ <div class="titlepage"> <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Cairo: A Vector Graphics Library</p></th></tr></table></div> -<div><p class="releaseinfo">for Cairo 1.10.2 +<div><p class="releaseinfo">for Cairo 1.11.2 </p></div> </div> <hr> diff --git a/doc/public/html/index.sgml b/doc/public/html/index.sgml index c8e02fa..cea8c8f 100644 --- a/doc/public/html/index.sgml +++ b/doc/public/html/index.sgml @@ -162,6 +162,19 @@ <ANCHOR id="cairo-pattern-get-linear-points" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-linear-points"> <ANCHOR id="cairo-pattern-create-radial" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-create-radial"> <ANCHOR id="cairo-pattern-get-radial-circles" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-radial-circles"> +<ANCHOR id="cairo-pattern-create-mesh" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-create-mesh"> +<ANCHOR id="cairo-pattern-mesh-begin-patch" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-begin-patch"> +<ANCHOR id="cairo-pattern-mesh-end-patch" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-end-patch"> +<ANCHOR id="cairo-pattern-mesh-move-to" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-move-to"> +<ANCHOR id="cairo-pattern-mesh-line-to" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-line-to"> +<ANCHOR id="cairo-pattern-mesh-curve-to" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-curve-to"> +<ANCHOR id="cairo-pattern-mesh-set-control-point" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-control-point"> +<ANCHOR id="cairo-pattern-mesh-set-corner-color-rgb" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgb"> +<ANCHOR id="cairo-pattern-mesh-set-corner-color-rgba" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-set-corner-color-rgba"> +<ANCHOR id="cairo-pattern-mesh-get-patch-count" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-patch-count"> +<ANCHOR id="cairo-pattern-mesh-get-path" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-path"> +<ANCHOR id="cairo-pattern-mesh-get-control-point" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-control-point"> +<ANCHOR id="cairo-pattern-mesh-get-corner-color-rgba" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-mesh-get-corner-color-rgba"> <ANCHOR id="cairo-pattern-reference" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-reference"> <ANCHOR id="cairo-pattern-destroy" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-destroy"> <ANCHOR id="cairo-pattern-status" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-status"> @@ -188,6 +201,7 @@ <ANCHOR id="CAIRO-PATTERN-TYPE-SURFACE:CAPS" href="cairo/cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-SURFACE:CAPS"> <ANCHOR id="CAIRO-PATTERN-TYPE-LINEAR:CAPS" href="cairo/cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-LINEAR:CAPS"> <ANCHOR id="CAIRO-PATTERN-TYPE-RADIAL:CAPS" href="cairo/cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-RADIAL:CAPS"> +<ANCHOR id="CAIRO-PATTERN-TYPE-MESH:CAPS" href="cairo/cairo-cairo-pattern-t.html#CAIRO-PATTERN-TYPE-MESH:CAPS"> <ANCHOR id="cairo-pattern-get-type" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-type"> <ANCHOR id="cairo-pattern-get-reference-count" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-get-reference-count"> <ANCHOR id="cairo-pattern-set-user-data" href="cairo/cairo-cairo-pattern-t.html#cairo-pattern-set-user-data"> @@ -446,6 +460,7 @@ <ANCHOR id="CAIRO-MIME-TYPE-JPEG:CAPS" href="cairo/cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-JPEG:CAPS"> <ANCHOR id="CAIRO-MIME-TYPE-PNG:CAPS" href="cairo/cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-PNG:CAPS"> <ANCHOR id="CAIRO-MIME-TYPE-URI:CAPS" href="cairo/cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-URI:CAPS"> +<ANCHOR id="CAIRO-MIME-TYPE-UNIQUE-ID:CAPS" href="cairo/cairo-cairo-surface-t.html#CAIRO-MIME-TYPE-UNIQUE-ID:CAPS"> <ANCHOR id="cairo-surface-t" href="cairo/cairo-cairo-surface-t.html#cairo-surface-t"> <ANCHOR id="cairo-content-t" href="cairo/cairo-cairo-surface-t.html#cairo-content-t"> <ANCHOR id="CAIRO-CONTENT-COLOR:CAPS" href="cairo/cairo-cairo-surface-t.html#CAIRO-CONTENT-COLOR:CAPS"> @@ -689,6 +704,7 @@ <ANCHOR id="CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS" href="cairo/cairo-Error-handling.html#CAIRO-STATUS-USER-FONT-NOT-IMPLEMENTED:CAPS"> <ANCHOR id="CAIRO-STATUS-DEVICE-TYPE-MISMATCH:CAPS" href="cairo/cairo-Error-handling.html#CAIRO-STATUS-DEVICE-TYPE-MISMATCH:CAPS"> <ANCHOR id="CAIRO-STATUS-DEVICE-ERROR:CAPS" href="cairo/cairo-Error-handling.html#CAIRO-STATUS-DEVICE-ERROR:CAPS"> +<ANCHOR id="CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS" href="cairo/cairo-Error-handling.html#CAIRO-STATUS-INVALID-MESH-CONSTRUCTION:CAPS"> <ANCHOR id="CAIRO-STATUS-LAST-STATUS:CAPS" href="cairo/cairo-Error-handling.html#CAIRO-STATUS-LAST-STATUS:CAPS"> <ANCHOR id="cairo-status-to-string" href="cairo/cairo-Error-handling.html#cairo-status-to-string"> <ANCHOR id="cairo-debug-reset-static-data" href="cairo/cairo-Error-handling.html#cairo-debug-reset-static-data"> diff --git a/doc/public/language-bindings.xml b/doc/public/language-bindings.xml index f405fda..3b879ad 100644 --- a/doc/public/language-bindings.xml +++ b/doc/public/language-bindings.xml @@ -395,7 +395,7 @@ public void writeToPNG (OutputStream stream) throws IOException; <remark> I'm not sure how to handle this for <link - linkend="cairo-pdf-surface-create-for-callback"><function>cairo_pdf_surface_create_for_callback()</function></link>. + linkend="cairo-pdf-surface-create-for-stream"><function>cairo_pdf_surface_create_for_stream()</function></link>. Other than keep a “exception to rethrow” thread-specific variable that is checked after <emphasis>every</emphasis> call to a Cairo @@ -529,6 +529,19 @@ cairo_pattern_t <link linkend="cairo-pattern-add-color-stop-rgba"><function>cairo_pattern_add_color_stop_rgba()</function></link> cairo_linear_gradient_t (<link linkend="cairo-pattern-create-linear"><function>cairo_pattern_create_linear()</function></link>) cairo_radial_gradient_t (<link linkend="cairo-pattern-create-radial"><function>cairo_pattern_create_radial()</function></link>) + cairo_mesh_t (<link linkend="cairo-pattern-create-mesh"><function>cairo_pattern_create_mesh()</function></link>) + <link linkend="cairo-pattern-mesh-begin-patch"><function>cairo_pattern_mesh_begin_patch()</function></link> + <link linkend="cairo-pattern-mesh-end-patch"><function>cairo_pattern_mesh_end_patch()</function></link> + <link linkend="cairo-pattern-mesh-move-to"><function>cairo_pattern_mesh_move_to()</function></link> + <link linkend="cairo-pattern-mesh-line-to"><function>cairo_pattern_mesh_line_to()</function></link> + <link linkend="cairo-pattern-mesh-curve-to"><function>cairo_pattern_mesh_curve_to()</function></link> + <link linkend="cairo-pattern-mesh-set-control-point"><function>cairo_pattern_mesh_set_control_point()</function></link> + <link linkend="cairo-pattern-mesh-set-corner-color-rgb"><function>cairo_pattern_mesh_set_corner_color_rgb()</function></link> + <link linkend="cairo-pattern-mesh-set-corner-color-rgba"><function>cairo_pattern_mesh_set_corner_color_rgba()</function></link> + <link linkend="cairo-pattern-mesh-get-patch-count"><function>cairo_pattern_mesh_get_patch_count()</function></link> + <link linkend="cairo-pattern-mesh-get-path"><function>cairo_pattern_mesh_get_path()</function></link> + <link linkend="cairo-pattern-mesh-get-control-point"><function>cairo_pattern_mesh_get_control_point()</function></link> + <link linkend="cairo-pattern-mesh-get-corner-color-rgba"><function>cairo_pattern_mesh_get_corner_color_rgba()</function></link> </programlisting> <para> </para> diff --git a/doc/public/tmpl/cairo-font-face.sgml b/doc/public/tmpl/cairo-font-face.sgml index 6901694..f7fba4d 100644 --- a/doc/public/tmpl/cairo-font-face.sgml +++ b/doc/public/tmpl/cairo-font-face.sgml @@ -9,11 +9,13 @@ cairo-font-face </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-font-options.sgml b/doc/public/tmpl/cairo-font-options.sgml index ebdf795..fa9165f 100644 --- a/doc/public/tmpl/cairo-font-options.sgml +++ b/doc/public/tmpl/cairo-font-options.sgml @@ -9,11 +9,13 @@ cairo-font-options </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-ft.sgml b/doc/public/tmpl/cairo-ft.sgml index a2ab8d0..5be3ba1 100644 --- a/doc/public/tmpl/cairo-ft.sgml +++ b/doc/public/tmpl/cairo-ft.sgml @@ -9,11 +9,13 @@ cairo-ft </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-image.sgml b/doc/public/tmpl/cairo-image.sgml index 70c43c4..c540ae6 100644 --- a/doc/public/tmpl/cairo-image.sgml +++ b/doc/public/tmpl/cairo-image.sgml @@ -9,11 +9,13 @@ cairo-image </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-matrix.sgml b/doc/public/tmpl/cairo-matrix.sgml index 138f5d9..292501e 100644 --- a/doc/public/tmpl/cairo-matrix.sgml +++ b/doc/public/tmpl/cairo-matrix.sgml @@ -9,11 +9,13 @@ cairo-matrix </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-paths.sgml b/doc/public/tmpl/cairo-paths.sgml index 737254b..9342041 100644 --- a/doc/public/tmpl/cairo-paths.sgml +++ b/doc/public/tmpl/cairo-paths.sgml @@ -9,11 +9,13 @@ cairo-paths </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-pattern.sgml b/doc/public/tmpl/cairo-pattern.sgml index 1c16d40..b95823c 100644 --- a/doc/public/tmpl/cairo-pattern.sgml +++ b/doc/public/tmpl/cairo-pattern.sgml @@ -9,11 +9,13 @@ cairo-pattern </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> @@ -185,6 +187,149 @@ cairo-pattern @Returns: +<!-- ##### FUNCTION cairo_pattern_create_mesh ##### --> +<para> + +</para> + +@void: +@Returns: + + +<!-- ##### FUNCTION cairo_pattern_mesh_begin_patch ##### --> +<para> + +</para> + +@pattern: + + +<!-- ##### FUNCTION cairo_pattern_mesh_end_patch ##### --> +<para> + +</para> + +@pattern: + + +<!-- ##### FUNCTION cairo_pattern_mesh_move_to ##### --> +<para> + +</para> + +@pattern: +@x: +@y: + + +<!-- ##### FUNCTION cairo_pattern_mesh_line_to ##### --> +<para> + +</para> + +@pattern: +@x: +@y: + + +<!-- ##### FUNCTION cairo_pattern_mesh_curve_to ##### --> +<para> + +</para> + +@pattern: +@x1: +@y1: +@x2: +@y2: +@x3: +@y3: + + +<!-- ##### FUNCTION cairo_pattern_mesh_set_control_point ##### --> +<para> + +</para> + +@pattern: +@point_num: +@x: +@y: + + +<!-- ##### FUNCTION cairo_pattern_mesh_set_corner_color_rgb ##### --> +<para> + +</para> + +@pattern: +@corner_num: +@red: +@green: +@blue: + + +<!-- ##### FUNCTION cairo_pattern_mesh_set_corner_color_rgba ##### --> +<para> + +</para> + +@pattern: +@corner_num: +@red: +@green: +@blue: +@alpha: + + +<!-- ##### FUNCTION cairo_pattern_mesh_get_patch_count ##### --> +<para> + +</para> + +@pattern: +@count: +@Returns: + + +<!-- ##### FUNCTION cairo_pattern_mesh_get_path ##### --> +<para> + +</para> + +@pattern: +@patch_num: +@Returns: + + +<!-- ##### FUNCTION cairo_pattern_mesh_get_control_point ##### --> +<para> + +</para> + +@pattern: +@patch_num: +@point_num: +@x: +@y: +@Returns: + + +<!-- ##### FUNCTION cairo_pattern_mesh_get_corner_color_rgba ##### --> +<para> + +</para> + +@pattern: +@patch_num: +@corner_num: +@red: +@green: +@blue: +@alpha: +@Returns: + + <!-- ##### FUNCTION cairo_pattern_reference ##### --> <para> @@ -296,6 +441,7 @@ cairo-pattern @CAIRO_PATTERN_TYPE_SURFACE: @CAIRO_PATTERN_TYPE_LINEAR: @CAIRO_PATTERN_TYPE_RADIAL: +@CAIRO_PATTERN_TYPE_MESH: <!-- ##### FUNCTION cairo_pattern_get_type ##### --> <para> diff --git a/doc/public/tmpl/cairo-pdf.sgml b/doc/public/tmpl/cairo-pdf.sgml index b8484f2..f665728 100644 --- a/doc/public/tmpl/cairo-pdf.sgml +++ b/doc/public/tmpl/cairo-pdf.sgml @@ -9,11 +9,13 @@ cairo-pdf </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-png.sgml b/doc/public/tmpl/cairo-png.sgml index 67caf1e..56abbbb 100644 --- a/doc/public/tmpl/cairo-png.sgml +++ b/doc/public/tmpl/cairo-png.sgml @@ -9,11 +9,13 @@ cairo-png </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-ps.sgml b/doc/public/tmpl/cairo-ps.sgml index b40bd91..7f9170d 100644 --- a/doc/public/tmpl/cairo-ps.sgml +++ b/doc/public/tmpl/cairo-ps.sgml @@ -9,11 +9,13 @@ cairo-ps </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-quartz-fonts.sgml b/doc/public/tmpl/cairo-quartz-fonts.sgml index 2ea30fa..09f4117 100644 --- a/doc/public/tmpl/cairo-quartz-fonts.sgml +++ b/doc/public/tmpl/cairo-quartz-fonts.sgml @@ -9,11 +9,13 @@ cairo-quartz-fonts </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-quartz.sgml b/doc/public/tmpl/cairo-quartz.sgml index 64cbdde..41b334a 100644 --- a/doc/public/tmpl/cairo-quartz.sgml +++ b/doc/public/tmpl/cairo-quartz.sgml @@ -9,11 +9,13 @@ cairo-quartz </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-recording.sgml b/doc/public/tmpl/cairo-recording.sgml index 4fcf710..b9ba747 100644 --- a/doc/public/tmpl/cairo-recording.sgml +++ b/doc/public/tmpl/cairo-recording.sgml @@ -9,13 +9,11 @@ cairo-recording </para> - <!-- ##### SECTION See_Also ##### --> <para> </para> - <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-scaled-font.sgml b/doc/public/tmpl/cairo-scaled-font.sgml index b9905a8..308e3c4 100644 --- a/doc/public/tmpl/cairo-scaled-font.sgml +++ b/doc/public/tmpl/cairo-scaled-font.sgml @@ -9,11 +9,13 @@ cairo-scaled-font </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-status.sgml b/doc/public/tmpl/cairo-status.sgml index 76e869b..5f84cf5 100644 --- a/doc/public/tmpl/cairo-status.sgml +++ b/doc/public/tmpl/cairo-status.sgml @@ -9,11 +9,13 @@ cairo-status </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> @@ -61,6 +63,7 @@ cairo-status @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: @CAIRO_STATUS_DEVICE_ERROR: +@CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: @CAIRO_STATUS_LAST_STATUS: <!-- ##### FUNCTION cairo_status_to_string ##### --> diff --git a/doc/public/tmpl/cairo-surface.sgml b/doc/public/tmpl/cairo-surface.sgml index 0444481..0ea7412 100644 --- a/doc/public/tmpl/cairo-surface.sgml +++ b/doc/public/tmpl/cairo-surface.sgml @@ -9,11 +9,13 @@ cairo-surface </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> @@ -48,6 +50,13 @@ cairo-surface +<!-- ##### MACRO CAIRO_MIME_TYPE_UNIQUE_ID ##### --> +<para> + +</para> + + + <!-- ##### TYPEDEF cairo_surface_t ##### --> <para> diff --git a/doc/public/tmpl/cairo-svg.sgml b/doc/public/tmpl/cairo-svg.sgml index 47eeabb..4da487f 100644 --- a/doc/public/tmpl/cairo-svg.sgml +++ b/doc/public/tmpl/cairo-svg.sgml @@ -9,11 +9,13 @@ cairo-svg </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-text.sgml b/doc/public/tmpl/cairo-text.sgml index c7bbac9..25e9d8b 100644 --- a/doc/public/tmpl/cairo-text.sgml +++ b/doc/public/tmpl/cairo-text.sgml @@ -9,11 +9,13 @@ cairo-text </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-transforms.sgml b/doc/public/tmpl/cairo-transforms.sgml index 771f745..8a02988 100644 --- a/doc/public/tmpl/cairo-transforms.sgml +++ b/doc/public/tmpl/cairo-transforms.sgml @@ -9,11 +9,13 @@ cairo-transforms </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-types.sgml b/doc/public/tmpl/cairo-types.sgml index a93305a..c852ce7 100644 --- a/doc/public/tmpl/cairo-types.sgml +++ b/doc/public/tmpl/cairo-types.sgml @@ -9,11 +9,13 @@ cairo-types </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-user-fonts.sgml b/doc/public/tmpl/cairo-user-fonts.sgml index 8e9c7bd..142a181 100644 --- a/doc/public/tmpl/cairo-user-fonts.sgml +++ b/doc/public/tmpl/cairo-user-fonts.sgml @@ -9,11 +9,13 @@ cairo-user-fonts </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-version.sgml b/doc/public/tmpl/cairo-version.sgml index 13770ee..c88c649 100644 --- a/doc/public/tmpl/cairo-version.sgml +++ b/doc/public/tmpl/cairo-version.sgml @@ -9,11 +9,13 @@ cairo-version </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-win32-fonts.sgml b/doc/public/tmpl/cairo-win32-fonts.sgml index ee6ee19..819d077 100644 --- a/doc/public/tmpl/cairo-win32-fonts.sgml +++ b/doc/public/tmpl/cairo-win32-fonts.sgml @@ -9,11 +9,13 @@ cairo-win32-fonts </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-win32.sgml b/doc/public/tmpl/cairo-win32.sgml index 18cd3c1..c188484 100644 --- a/doc/public/tmpl/cairo-win32.sgml +++ b/doc/public/tmpl/cairo-win32.sgml @@ -9,11 +9,13 @@ cairo-win32 </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-xlib-xrender.sgml b/doc/public/tmpl/cairo-xlib-xrender.sgml index 3285957..f1a5a65 100644 --- a/doc/public/tmpl/cairo-xlib-xrender.sgml +++ b/doc/public/tmpl/cairo-xlib-xrender.sgml @@ -9,11 +9,13 @@ cairo-xlib-xrender </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo-xlib.sgml b/doc/public/tmpl/cairo-xlib.sgml index bb368ec..419dfab 100644 --- a/doc/public/tmpl/cairo-xlib.sgml +++ b/doc/public/tmpl/cairo-xlib.sgml @@ -9,11 +9,13 @@ cairo-xlib </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/tmpl/cairo.sgml b/doc/public/tmpl/cairo.sgml index b06653e..3752fe2 100644 --- a/doc/public/tmpl/cairo.sgml +++ b/doc/public/tmpl/cairo.sgml @@ -9,11 +9,13 @@ cairo </para> + <!-- ##### SECTION See_Also ##### --> <para> </para> + <!-- ##### SECTION Stability_Level ##### --> diff --git a/doc/public/version.xml b/doc/public/version.xml index 5ad2491..ca71766 100644 --- a/doc/public/version.xml +++ b/doc/public/version.xml @@ -1 +1 @@ -1.10.2 +1.11.2 diff --git a/doc/public/xml/api-index-1.12.xml b/doc/public/xml/api-index-1.12.xml new file mode 100644 index 0000000..6aa3db0 --- /dev/null +++ b/doc/public/xml/api-index-1.12.xml @@ -0,0 +1,22 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE indexdiv PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ +<!ENTITY version SYSTEM "version.xml"> +]> +<indexdiv> +<indexdiv><title>P +cairo_pattern_create_mesh, function in cairo_pattern_t +cairo_pattern_mesh_begin_patch, function in cairo_pattern_t +cairo_pattern_mesh_curve_to, function in cairo_pattern_t +cairo_pattern_mesh_end_patch, function in cairo_pattern_t +cairo_pattern_mesh_get_control_point, function in cairo_pattern_t +cairo_pattern_mesh_get_corner_color_rgba, function in cairo_pattern_t +cairo_pattern_mesh_get_patch_count, function in cairo_pattern_t +cairo_pattern_mesh_get_path, function in cairo_pattern_t +cairo_pattern_mesh_line_to, function in cairo_pattern_t +cairo_pattern_mesh_move_to, function in cairo_pattern_t +cairo_pattern_mesh_set_control_point, function in cairo_pattern_t +cairo_pattern_mesh_set_corner_color_rgb, function in cairo_pattern_t +cairo_pattern_mesh_set_corner_color_rgba, function in cairo_pattern_t + + diff --git a/doc/public/xml/api-index-full.xml b/doc/public/xml/api-index-full.xml index d48fa3f..f05ae9c 100644 --- a/doc/public/xml/api-index-full.xml +++ b/doc/public/xml/api-index-full.xml @@ -179,6 +179,7 @@ CAIRO_MIME_TYPE_JP2, macro in cairo_surface_t CAIRO_MIME_TYPE_JPEG, macro in cairo_surface_t CAIRO_MIME_TYPE_PNG, macro in cairo_surface_t +CAIRO_MIME_TYPE_UNIQUE_ID, macro in cairo_surface_t CAIRO_MIME_TYPE_URI, macro in cairo_surface_t cairo_move_to, function in Paths @@ -201,6 +202,7 @@ cairo_pattern_add_color_stop_rgba, function in cairo_pattern_t cairo_pattern_create_for_surface, function in cairo_pattern_t cairo_pattern_create_linear, function in cairo_pattern_t +cairo_pattern_create_mesh, function in cairo_pattern_t cairo_pattern_create_radial, function in cairo_pattern_t cairo_pattern_create_rgb, function in cairo_pattern_t cairo_pattern_create_rgba, function in cairo_pattern_t @@ -217,6 +219,18 @@ cairo_pattern_get_surface, function in cairo_pattern_t cairo_pattern_get_type, function in cairo_pattern_t cairo_pattern_get_user_data, function in cairo_pattern_t +cairo_pattern_mesh_begin_patch, function in cairo_pattern_t +cairo_pattern_mesh_curve_to, function in cairo_pattern_t +cairo_pattern_mesh_end_patch, function in cairo_pattern_t +cairo_pattern_mesh_get_control_point, function in cairo_pattern_t +cairo_pattern_mesh_get_corner_color_rgba, function in cairo_pattern_t +cairo_pattern_mesh_get_patch_count, function in cairo_pattern_t +cairo_pattern_mesh_get_path, function in cairo_pattern_t +cairo_pattern_mesh_line_to, function in cairo_pattern_t +cairo_pattern_mesh_move_to, function in cairo_pattern_t +cairo_pattern_mesh_set_control_point, function in cairo_pattern_t +cairo_pattern_mesh_set_corner_color_rgb, function in cairo_pattern_t +cairo_pattern_mesh_set_corner_color_rgba, function in cairo_pattern_t cairo_pattern_reference, function in cairo_pattern_t cairo_pattern_set_extend, function in cairo_pattern_t cairo_pattern_set_filter, function in cairo_pattern_t diff --git a/doc/public/xml/cairo-device.xml b/doc/public/xml/cairo-device.xml index 0238777..db85d6c 100644 --- a/doc/public/xml/cairo-device.xml +++ b/doc/public/xml/cairo-device.xml @@ -109,8 +109,8 @@ surfaces of that type. A cairo_device_t represents the driver interface for drawing operations to a cairo_surface_t. There are different subtypes of cairo_device_t for different drawing backends; for example, -cairo_xcb_device_create() creates a device that wraps the connection -to an X Windows System using the XCB library. +cairo_egl_device_create() creates a device that wraps an EGL display and +context. The type of a device can be queried with cairo_device_get_type(). @@ -238,7 +238,8 @@ The various cairo_device_t fu any type, but some backends also provide type-specific functions that must only be called with a device of the appropriate type. These functions have names that begin with -cairo_type_device such as cairo_xcb_device_debug_set_render_version(). +cairo_type_device such as +cairo_xcb_device_debug_cap_xrender_version(). The behavior of calling a type-specific function with a surface of @@ -275,7 +276,6 @@ New entries may be added in future versions. CAIRO_DEVICE_TYPE_XML The surface is of type XML - cairo_surface_create_for_rectangle() Since 1.10 diff --git a/doc/public/xml/cairo-font-face.xml b/doc/public/xml/cairo-font-face.xml index f68649e..52d92a3 100644 --- a/doc/public/xml/cairo-font-face.xml +++ b/doc/public/xml/cairo-font-face.xml @@ -44,8 +44,8 @@ slant, and other characteristic but no size, transformation, or size. Font faces are created using font-backend-specific constructors, typically of the form -cairo_backend_font_face_create(), or implicitly -using the toy text API by way of +cairo_backend_font_face_create(), +or implicitly using the toy text API by way of cairo_select_font_face(). The resulting face can be accessed using cairo_get_font_face(). @@ -141,8 +141,8 @@ backends" within cairo. The type of a font face is determined by the function used to create it, which will generally be of the form -cairo_type_font_face_create(). The font face type can be queried -with cairo_font_face_get_type() +cairo_type_font_face_create(). +The font face type can be queried with cairo_font_face_get_type() The various cairo_font_face_t functions can be used with a font face @@ -158,7 +158,8 @@ The various cairo_scaled_font_t fonts of any type, but some font backends also provide type-specific functions that must only be called with a scaled font of the appropriate type. These functions have names that begin with -cairo_type_scaled_font() such as cairo_ft_scaled_font_lock_face(). +cairo_type_scaled_font() +such as cairo_ft_scaled_font_lock_face(). The behavior of calling a type-specific function with a scaled font diff --git a/doc/public/xml/cairo-font-options.xml b/doc/public/xml/cairo-font-options.xml index ffbc232..96c7983 100644 --- a/doc/public/xml/cairo-font-options.xml +++ b/doc/public/xml/cairo-font-options.xml @@ -73,8 +73,8 @@ rendering fonts. Individual features of a cairo_font_options_t can be set or accessed using functions named -cairo_font_options_set_feature_name and -cairo_font_options_get_feature_name, like +cairo_font_options_set_feature_name() and +cairo_font_options_get_feature_name(), like cairo_font_options_set_antialias() and cairo_font_options_get_antialias(). @@ -154,7 +154,7 @@ font options object Merges non-default options from other into options, replacing existing values. This operation can be thought of as somewhat similar to compositing other onto options with the operation -of CAIRO_OPERATION_OVER. +of CAIRO_OPERATOR_OVER. options : a cairo_font_options_t diff --git a/doc/public/xml/cairo-image.xml b/doc/public/xml/cairo-image.xml index 9c46882..9299114 100644 --- a/doc/public/xml/cairo-image.xml +++ b/doc/public/xml/cairo-image.xml @@ -260,6 +260,12 @@ destroy-notification fallback to the surface if necessary. Get a pointer to the data of the image surface, for direct inspection or modification. + + +A call to cairo_surface_flush() is required before accessing the +pixel data to ensure that all pending drawing operations are +finished. A call to cairo_surface_mark_dirty() is required after +the data is modified. surface : a cairo_image_surface_t diff --git a/doc/public/xml/cairo-paths.xml b/doc/public/xml/cairo-paths.xml index 64c1751..03ae7cc 100644 --- a/doc/public/xml/cairo-paths.xml +++ b/doc/public/xml/cairo-paths.xml @@ -504,8 +504,8 @@ point. Adds a circular arc of the given radius to the current path. The arc is centered at (xc, yc), begins at angle1 and proceeds in the direction of increasing angles to end at angle2. If angle2 is -less than angle1 it will be progressively increased by 2*M_PI -until it is greater than angle1. +less than angle1 it will be progressively increased by +2*M_PI until it is greater than angle1. If there is a current point, an initial line segment will be added @@ -515,11 +515,12 @@ calling cairo_new_sub_path() Angles are measured in radians. An angle of 0.0 is in the direction -of the positive X axis (in user space). An angle of M_PI/2.0 radians -(90 degrees) is in the direction of the positive Y axis (in -user space). Angles increase in the direction from the positive X -axis toward the positive Y axis. So with the default transformation -matrix, angles increase in a clockwise direction. +of the positive X axis (in user space). An angle of +M_PI/2.0 radians (90 degrees) is in the +direction of the positive Y axis (in user space). Angles increase +in the direction from the positive X axis toward the positive Y +axis. So with the default transformation matrix, angles increase in +a clockwise direction. (To convert from degrees to radians, use degrees * (M_PI / @@ -577,8 +578,8 @@ cairo_restore (cr); Adds a circular arc of the given radius to the current path. The arc is centered at (xc, yc), begins at angle1 and proceeds in the direction of decreasing angles to end at angle2. If angle2 is -greater than angle1 it will be progressively decreased by 2*M_PI -until it is less than angle1. +greater than angle1 it will be progressively decreased by +2*M_PI until it is less than angle1. See cairo_arc() for more details. This function differs only in the diff --git a/doc/public/xml/cairo-pattern.xml b/doc/public/xml/cairo-pattern.xml index a600e8b..e0698a5 100644 --- a/doc/public/xml/cairo-pattern.xml +++ b/doc/public/xml/cairo-pattern.xml @@ -77,6 +77,58 @@ double *x1, double *y1, double *r1); +cairo_pattern_t * cairo_pattern_create_mesh (void); +void cairo_pattern_mesh_begin_patch (cairo_pattern_t *pattern); +void cairo_pattern_mesh_end_patch (cairo_pattern_t *pattern); +void cairo_pattern_mesh_move_to (cairo_pattern_t *pattern, + double x, + double y); +void cairo_pattern_mesh_line_to (cairo_pattern_t *pattern, + double x, + double y); +void cairo_pattern_mesh_curve_to (cairo_pattern_t *pattern, + double x1, + double y1, + double x2, + double y2, + double x3, + double y3); +void cairo_pattern_mesh_set_control_point + (cairo_pattern_t *pattern, + unsigned int point_num, + double x, + double y); +void cairo_pattern_mesh_set_corner_color_rgb + (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, + double green, + double blue); +void cairo_pattern_mesh_set_corner_color_rgba + (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, + double green, + double blue, + double alpha); +cairo_status_t cairo_pattern_mesh_get_patch_count (cairo_pattern_t *pattern, + unsigned int *count); +cairo_path_t * cairo_pattern_mesh_get_path (cairo_pattern_t *pattern, + unsigned int patch_num); +cairo_status_t cairo_pattern_mesh_get_control_point + (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int point_num, + double *x, + double *y); +cairo_status_t cairo_pattern_mesh_get_corner_color_rgba + (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int corner_num, + double *red, + double *green, + double *blue, + double *alpha); cairo_pattern_t * cairo_pattern_reference (cairo_pattern_t *pattern); void cairo_pattern_destroy (cairo_pattern_t *pattern); cairo_status_t cairo_pattern_status (cairo_pattern_t *pattern); @@ -114,9 +166,11 @@ brush too. A cairo pattern is created by using one of the many constructors, -of the form cairo_pattern_create_type() +of the form +cairo_pattern_create_type() or implicitly through -cairo_set_source_type() functions. +cairo_set_source_type() +functions. @@ -134,9 +188,10 @@ for different types of sources; for example, opaque color. -Other than various cairo_pattern_create_type() -functions, some of the pattern types can be implicitly created -using various cairo_set_source_type() functions; +Other than various +cairo_pattern_create_type() +functions, some of the pattern types can be implicitly created using various +cairo_set_source_type() functions; for example cairo_set_source_rgb(). @@ -609,6 +664,619 @@ gradient pattern. Since 1.4 + +cairo_pattern_create_mesh () +cairo_pattern_create_mesh +cairo_pattern_t * cairo_pattern_create_mesh (void); + +Create a new mesh pattern. + + +Mesh patterns are tensor-product patch meshes (type 7 shadings in +PDF). Mesh patterns may also be used to create other types of +shadings that are special cases of tensor-product patch meshes such +as Coons patch meshes (type 6 shading in PDF) and Gouraud-shaded +triangle meshes (type 4 and 5 shadings in PDF). + + +Mesh patterns consist of one or more tensor-product patches, which +should be defined before using the mesh pattern. Using a mesh +pattern with a partially defined patch as source or mask will put +the context in an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + + +A tensor-product patch is defined by 4 Bézier curves (side 0, 1, 2, +3) and by 4 additional control points (P0, P1, P2, P3) that provide +further control over the patch and complete the definition of the +tensor-product patch. The corner C0 is the first point of the +patch. + + +Degenerate sides are permitted so straight lines may be used. A +zero length line on one side may be used to create 3 sided patches. + + + + C1 Side 1 C2 + +---------------+ + | | + | P1 P2 | + | | +Side 0 | | Side 2 + | | + | | + | P0 P3 | + | | + +---------------+ + C0 Side 3 C3 + + + +Each patch is constructed by first calling +cairo_pattern_mesh_begin_patch(), then cairo_pattern_mesh_move_to() +to specify the first point in the patch (C0). Then the sides are +specified with calls to cairo_pattern_mesh_curve_to() and +cairo_pattern_mesh_line_to(). + + +The four additional control points (P0, P1, P2, P3) in a patch can +be specified with cairo_pattern_mesh_set_control_point(). + + +At each corner of the patch (C0, C1, C2, C3) a color may be +specified with cairo_pattern_mesh_set_corner_color_rgb() or +cairo_pattern_mesh_set_corner_color_rgba(). Any corner whose color +is not explicitly specified defaults to transparent black. + + +A Coons patch is a special case of the tensor-product patch where +the control points are implicitly defined by the sides of the +patch. The default value for any control point not specified is the +implicit value for a Coons patch, i.e. if no control points are +specified the patch is a Coons patch. + + +A triangle is a special case of the tensor-product patch where the +control points are implicitly defined by the sides of the patch, +all the sides are lines and one of them has length 0, i.e. if the +patch is specified using just 3 lines, it is a triangle. If the +corners connected by the 0-length side have the same color, the +patch is a Gouraud-shaded triangle. + + +Patches may be oriented differently to the above diagram. For +example the first point could be at the top left. The diagram only +shows the relationship between the sides, corners and control +points. Regardless of where the first point is located, when +specifying colors, corner 0 will always be the first point, corner +1 the point between side 0 and side 1 etc. + + +Calling cairo_pattern_mesh_end_patch() completes the current +patch. If less than 4 sides have been defined, the first missing +side is defined as a line from the current point to the first point +of the patch (C0) and the other sides are degenerate lines from C0 +to C0. The corners between the added sides will all be coincident +with C0 of the patch and their color will be set to be the same as +the color of C0. + + +Additional patches may be added with additional calls to +cairo_pattern_mesh_begin_patch()/cairo_pattern_mesh_end_patch(). + + + +cairo_pattern_t *mesh = cairo_pattern_mesh_create_mesh (); + +/* Add a Coons patch */ +cairo_pattern_mesh_begin_patch (mesh); +cairo_pattern_mesh_move_to (pattern, 0, 0); +cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); +cairo_pattern_mesh_curve_to (pattern, 60, 30, 130, 60, 100, 100); +cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); +cairo_pattern_mesh_curve_to (pattern, 30, 70, -30, 30, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); +cairo_pattern_mesh_end_patch (mesh); + +/* Add a Gouraud-shaded triangle */ +cairo_pattern_mesh_begin_patch (mesh) +cairo_pattern_mesh_move_to (pattern, 100, 100); +cairo_pattern_mesh_line_to (pattern, 130, 130); +cairo_pattern_mesh_line_to (pattern, 130, 70); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); +cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); +cairo_pattern_mesh_end_patch (mesh) + + + +When two patches overlap, the last one that has been added is drawn +over the first one. + + +When a patch folds over itself, points are sorted depending on +their parameter coordinates inside the patch. The v coordinate +ranges from 0 to 1 when moving from side 3 to side 1; the u +coordinate ranges from 0 to 1 when going from side 0 to side +2. Points with higher v coordinate hide points with lower v +coordinate. When two points have the same v coordinate, the one +with higher u coordinate is above. This means that points nearer to +side 1 are above points nearer to side 3; when this is not +sufficient to decide which point is above (for example when both +points belong to side 1 or side 3) points nearer to side 2 are +above points nearer to side 0. + + +For a complete definition of tensor-product patches, see the PDF +specification (ISO32000), which describes the parametrization in +detail. + + +Note: The coordinates are always in pattern space. For a new +pattern, pattern space is identical to user space, but the +relationship between the spaces can be changed with +cairo_pattern_set_matrix(). + +Returns : the newly created cairo_pattern_t if successful, or +an error pattern in case of no memory. The caller owns the returned +object and should call cairo_pattern_destroy() when finished with +it. + +This function will always return a valid pointer, but if an error +occurred the pattern status will be set to an error. To inspect the +status of a pattern use cairo_pattern_status(). + + +Since 1.12 + +cairo_pattern_mesh_begin_patch () +cairo_pattern_mesh_begin_patch +void cairo_pattern_mesh_begin_patch (cairo_pattern_t *pattern); + +Begin a patch in a mesh pattern. + + +After calling this function, the patch shape should be defined with +cairo_pattern_mesh_move_to(), cairo_pattern_mesh_line_to() and +cairo_pattern_mesh_curve_to(). + + +After defining the patch, cairo_pattern_mesh_end_patch() must be +called before using pattern as a source or mask. + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern already has a +current patch, it will be put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +Since 1.12 + +cairo_pattern_mesh_end_patch () +cairo_pattern_mesh_end_patch +void cairo_pattern_mesh_end_patch (cairo_pattern_t *pattern); + +Indicates the end of the current patch in a mesh pattern. + + +If the current patch has less than 4 sides, it is closed with a +straight line from the current point to the first point of the +patch as if cairo_pattern_mesh_line_to() was used. + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern has no current +patch or the current patch has no current point, pattern will be +put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +Since 1.12 + +cairo_pattern_mesh_move_to () +cairo_pattern_mesh_move_to +void cairo_pattern_mesh_move_to (cairo_pattern_t *pattern, + double x, + double y); + +Define the first point of the current patch in a mesh pattern. + + +After this call the current point will be (x, y). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern has no current +patch or the current patch already has at leas one side, pattern +will be put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +x : +the X coordinate of the new position + +y : +the Y coordinate of the new position + +Since 1.12 + +cairo_pattern_mesh_line_to () +cairo_pattern_mesh_line_to +void cairo_pattern_mesh_line_to (cairo_pattern_t *pattern, + double x, + double y); + +Adds a line to the current patch from the current point to position +(x, y) in pattern-space coordinates. + + +If there is no current point before the call to +cairo_pattern_mesh_line_to() this function will behave as +cairo_pattern_mesh_move_to(pattern, x, y). + + +After this call the current point will be (x, y). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern has no current +patch or the current patch already has 4 sides, pattern will be +put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +x : +the X coordinate of the end of the new line + +y : +the Y coordinate of the end of the new line + +Since 1.12 + +cairo_pattern_mesh_curve_to () +cairo_pattern_mesh_curve_to +void cairo_pattern_mesh_curve_to (cairo_pattern_t *pattern, + double x1, + double y1, + double x2, + double y2, + double x3, + double y3); + +Adds a cubic Bézier spline to the current patch from the current +point to position (x3, y3) in pattern-space coordinates, using +(x1, y1) and (x2, y2) as the control points. + + +If the current patch has no current point before the call to +cairo_pattern_mesh_curve_to(), this function will behave as if +preceded by a call to cairo_pattern_mesh_move_to(pattern, x1, +y1). + + +After this call the current point will be (x3, y3). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern has no current +patch or the current patch already has 4 sides, pattern will be +put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +x1 : +the X coordinate of the first control point + +y1 : +the Y coordinate of the first control point + +x2 : +the X coordinate of the second control point + +y2 : +the Y coordinate of the second control point + +x3 : +the X coordinate of the end of the curve + +y3 : +the Y coordinate of the end of the curve + +Since 1.12 + +cairo_pattern_mesh_set_control_point () +cairo_pattern_mesh_set_control_point +void cairo_pattern_mesh_set_control_point + (cairo_pattern_t *pattern, + unsigned int point_num, + double x, + double y); + +Set an internal control point of the current patch. + + +Valid values for point_num are from 0 to 3 and identify the +control points as explained in cairo_pattern_create_mesh(). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If point_num is not valid, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_INDEX. If pattern has no current patch, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +point_num : +the control point to set the position for + +x : +the X coordinate of the control point + +y : +the Y coordinate of the control point + +Since 1.12 + +cairo_pattern_mesh_set_corner_color_rgb () +cairo_pattern_mesh_set_corner_color_rgb +void cairo_pattern_mesh_set_corner_color_rgb + (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, + double green, + double blue); + +Sets the color of a corner of the current patch in a mesh pattern. + + +The color is specified in the same way as in cairo_set_source_rgb(). + + +Valid values for corner_num are from 0 to 3 and identify the +corners as explained in cairo_pattern_create_mesh(). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If corner_num is not valid, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_INDEX. If pattern has no current patch, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +corner_num : +the corner to set the color for + +red : +red component of color + +green : +green component of color + +blue : +blue component of color + +Since 1.12 + +cairo_pattern_mesh_set_corner_color_rgba () +cairo_pattern_mesh_set_corner_color_rgba +void cairo_pattern_mesh_set_corner_color_rgba + (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, + double green, + double blue, + double alpha); + +Sets the color of a corner of the current patch in a mesh pattern. + + +The color is specified in the same way as in cairo_set_source_rgba(). + + +Valid values for corner_num are from 0 to 3 and identify the +corners as explained in cairo_pattern_create_mesh(). + + +Note: If pattern is not a mesh pattern then pattern will be put +into an error status with a status of +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If corner_num is not valid, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_INDEX. If pattern has no current patch, +pattern will be put into an error status with a status of +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +pattern : +a cairo_pattern_t + +corner_num : +the corner to set the color for + +red : +red component of color + +green : +green component of color + +blue : +blue component of color + +alpha : +alpha component of color + +Since 1.12 + +cairo_pattern_mesh_get_patch_count () +cairo_pattern_mesh_get_patch_count +cairo_status_t cairo_pattern_mesh_get_patch_count (cairo_pattern_t *pattern, + unsigned int *count); + +Gets the number of patches specified in the given mesh pattern. + + +The number only includes patches which have been finished by +calling cairo_pattern_mesh_end_patch(). For example it will be 0 +during the definition of the first patch. + +pattern : +a cairo_pattern_t + +count : +return value for the number patches, or NULL + +Returns : CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a mesh +pattern. + + +Since 1.12 + +cairo_pattern_mesh_get_path () +cairo_pattern_mesh_get_path +cairo_path_t * cairo_pattern_mesh_get_path (cairo_pattern_t *pattern, + unsigned int patch_num); + +Gets path defining the patch patch_num for a mesh +pattern. + + +patch_num can range 0 to 1 less than the number returned by +cairo_pattern_mesh_get_patch_count(). + +pattern : +a cairo_pattern_t + +patch_num : +the patch number to return data for + +Returns : the path defining the patch, or a path with status +CAIRO_STATUS_INVALID_INDEX if patch_num or point_num is not +valid for pattern. If pattern is not a mesh pattern, a path with +status CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned. + + +Since 1.12 + +cairo_pattern_mesh_get_control_point () +cairo_pattern_mesh_get_control_point +cairo_status_t cairo_pattern_mesh_get_control_point + (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int point_num, + double *x, + double *y); + +Gets the control point point_num of patch patch_num for a mesh +pattern. + + +patch_num can range 0 to 1 less than the number returned by +cairo_pattern_mesh_get_patch_count(). + + +Valid values for point_num are from 0 to 3 and identify the +control points as explained in cairo_pattern_create_mesh(). + +pattern : +a cairo_pattern_t + +patch_num : +the patch number to return data for + +point_num : +the control point number to return data for + +x : +return value for the x coordinate of the control point, or NULL + +y : +return value for the y coordinate of the control point, or NULL + +Returns : CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX +if patch_num or point_num is not valid for pattern. If pattern +is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is +returned. + + +Since 1.12 + +cairo_pattern_mesh_get_corner_color_rgba () +cairo_pattern_mesh_get_corner_color_rgba +cairo_status_t cairo_pattern_mesh_get_corner_color_rgba + (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int corner_num, + double *red, + double *green, + double *blue, + double *alpha); + +Gets the color information in corner corner_num of patch +patch_num for a mesh pattern. + + +patch_num can range 0 to 1 less than the number returned by +cairo_pattern_mesh_get_patch_count(). + + +Valid values for corner_num are from 0 to 3 and identify the +corners as explained in cairo_pattern_create_mesh(). + +pattern : +a cairo_pattern_t + +patch_num : +the patch number to return data for + +corner_num : +the corner number to return data for + +red : +return value for red component of color, or NULL + +green : +return value for green component of color, or NULL + +blue : +return value for blue component of color, or NULL + +alpha : +return value for alpha component of color, or NULL + +Returns : CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX +if patch_num or corner_num is not valid for pattern. If +pattern is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH +is returned. + + +Since 1.12 cairo_pattern_reference () cairo_pattern_reference @@ -673,6 +1341,9 @@ example, outside the surface bounds or outside the gradient geometry). +Mesh patterns are not affected by the extend mode. + + The default extend mode is CAIRO_EXTEND_NONE for surface patterns and CAIRO_EXTEND_PAD for gradient patterns. @@ -756,7 +1427,7 @@ pattern. cairo_filter_t is used to indicate what filtering should be applied when reading pixel values from patterns. See -cairo_pattern_set_source() for indicating the desired filter to be +cairo_pattern_set_filter() for indicating the desired filter to be used with a particular pattern. @@ -906,7 +1577,8 @@ Stores the pattern's transformation matrix into matrix. CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE, CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL + CAIRO_PATTERN_TYPE_RADIAL, + CAIRO_PATTERN_TYPE_MESH } cairo_pattern_type_t; @@ -955,6 +1627,11 @@ color. It may be opaque or translucent. The pattern is a radial gradient. + +CAIRO_PATTERN_TYPE_MESH +The pattern is a mesh. + + Since 1.2 cairo_pattern_get_type () diff --git a/doc/public/xml/cairo-png.xml b/doc/public/xml/cairo-png.xml index 21ccc03..9b76a39 100644 --- a/doc/public/xml/cairo-png.xml +++ b/doc/public/xml/cairo-png.xml @@ -44,6 +44,15 @@ The PNG functions allow reading PNG images into image surfaces, and writing any surface to a PNG file. + +It is a toy API. It only offers very simple support for reading and +writing PNG files, which is sufficient for testing and +demonstration purposes. Applications which need more control over +the generated PNG file should access the pixel data directly, using +cairo_image_surface_get_data() or a backend-specific access +function, and process it with another library, e.g. gdk-pixbuf or +libpng. + Details diff --git a/doc/public/xml/cairo-ps.xml b/doc/public/xml/cairo-ps.xml index 71caec4..a61d040 100644 --- a/doc/public/xml/cairo-ps.xml +++ b/doc/public/xml/cairo-ps.xml @@ -344,7 +344,7 @@ Emit a comment into the PostScript output for the given surface. The comment is expected to conform to the PostScript Language Document Structuring Conventions (DSC). Please see that manual for details on the available comments and their meanings. In -particular, the %IncludeFeature comment allows a +particular, the %%IncludeFeature comment allows a device-independent means of controlling printer device features. So the PostScript Printer Description Files Specification will also be a useful reference. @@ -371,24 +371,26 @@ section apply only to a single page. For comments to appear in the header section, this function should be called after the surface is created, but before a call to -cairo_ps_surface_begin_setup(). +cairo_ps_surface_dsc_begin_setup(). For comments to appear in the Setup section, this function should -be called after a call to cairo_ps_surface_begin_setup() but before -a call to cairo_ps_surface_begin_page_setup(). +be called after a call to cairo_ps_surface_dsc_begin_setup() but +before a call to cairo_ps_surface_dsc_begin_page_setup(). For comments to appear in the PageSetup section, this function -should be called after a call to cairo_ps_surface_begin_page_setup(). +should be called after a call to +cairo_ps_surface_dsc_begin_page_setup(). -Note that it is only necessary to call cairo_ps_surface_begin_page_setup() -for the first page of any surface. After a call to -cairo_show_page() or cairo_copy_page() comments are unambiguously -directed to the PageSetup section of the current page. But it -doesn't hurt to call this function at the beginning of every page -as that consistency may make the calling code simpler. +Note that it is only necessary to call +cairo_ps_surface_dsc_begin_page_setup() for the first page of any +surface. After a call to cairo_show_page() or cairo_copy_page() +comments are unambiguously directed to the PageSetup section of the +current page. But it doesn't hurt to call this function at the +beginning of every page as that consistency may make the calling +code simpler. As a final note, cairo automatically generates several comments on @@ -396,25 +398,24 @@ its own. As such, applications must not manually generate any of the following comments: -Header section: %!PS-Adobe-3.0, %Creator, %CreationDate, %Pages, -%BoundingBox, %DocumentData, %LanguageLevel, %EndComments. +Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, +%%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments. -Setup section: %BeginSetup, %EndSetup +Setup section: %%BeginSetup, %%EndSetup -PageSetup section: %BeginPageSetup, %PageBoundingBox, -%EndPageSetup. +PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup. -Other sections: %BeginProlog, %EndProlog, %Page, %Trailer, %EOF +Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF Here is an example sequence showing how this function might be used: -cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); +cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); ... cairo_ps_surface_dsc_comment (surface, "%%Title: My excellent document"); cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Cairo Lover") diff --git a/doc/public/xml/cairo-quartz.xml b/doc/public/xml/cairo-quartz.xml index ab1fc6b..eb681d1 100644 --- a/doc/public/xml/cairo-quartz.xml +++ b/doc/public/xml/cairo-quartz.xml @@ -119,6 +119,14 @@ as long as Quartz-compatible elements are used (such as Quartz fonts). Returns the CGContextRef that the given Quartz surface is backed by. + + +A call to cairo_surface_flush() is required before using the +CGContextRef to ensure that all pending drawing operations are +finished and to restore any temporary modification cairo has made +to its state. A call to cairo_surface_mark_dirty() is required +after the state or the content of the CGContextRef has been +modified. surface : the Cairo Quartz surface diff --git a/doc/public/xml/cairo-recording.xml b/doc/public/xml/cairo-recording.xml index 64aa97d..1176c23 100644 --- a/doc/public/xml/cairo-recording.xml +++ b/doc/public/xml/cairo-recording.xml @@ -45,7 +45,7 @@ identical to the results that would have been obtained if the original operations applied to the recording surface had instead been applied to the target surface, you can use code like this: - cairo_t *cr; +cairo_t *cr; cr = cairo_create (target); cairo_set_source_surface (cr, recording_surface, 0.0, 0.0); diff --git a/doc/public/xml/cairo-status.xml b/doc/public/xml/cairo-status.xml index be4fcb5..30dacf9 100644 --- a/doc/public/xml/cairo-status.xml +++ b/doc/public/xml/cairo-status.xml @@ -84,6 +84,7 @@ code is required before or after each individual cairo function call. CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, CAIRO_STATUS_DEVICE_TYPE_MISMATCH, CAIRO_STATUS_DEVICE_ERROR, + CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, CAIRO_STATUS_LAST_STATUS } cairo_status_t; @@ -278,6 +279,14 @@ to get a human-readable representation of an error message. an operation to the device caused an unspecified error (Since 1.10) + +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION +a mesh pattern + construction operation was used outside of a + cairo_pattern_mesh_begin_patch()/cairo_pattern_mesh_end_patch() + pair (Since 1.12) + + CAIRO_STATUS_LAST_STATUS this is a special value indicating the number of diff --git a/doc/public/xml/cairo-surface.xml b/doc/public/xml/cairo-surface.xml index d4c8be4..3618c3c 100644 --- a/doc/public/xml/cairo-surface.xml +++ b/doc/public/xml/cairo-surface.xml @@ -23,6 +23,7 @@ #define CAIRO_MIME_TYPE_JPEG #define CAIRO_MIME_TYPE_PNG #define CAIRO_MIME_TYPE_URI +#define CAIRO_MIME_TYPE_UNIQUE_ID typedef cairo_surface_t; enum cairo_content_t; cairo_surface_t * cairo_surface_create_similar (cairo_surface_t *other, @@ -98,7 +99,7 @@ performed using a cairo context. A cairo surface is created by using backend-specific constructors, typically of the form -cairo_backend_surface_create(). +cairo_backend_surface_create(). Most surface types allow accessing the surface without using Cairo @@ -180,6 +181,17 @@ URI for an image file (unofficial MIME type). Since: 1.10 + +CAIRO_MIME_TYPE_UNIQUE_ID +CAIRO_MIME_TYPE_UNIQUE_ID +#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid" + + +Unique identifier for a surface (cairo specific MIME type). + + +Since: 1.12 + cairo_surface_t cairo_surface_t @@ -680,7 +692,8 @@ backends" within cairo. The type of a surface is determined by the function used to create -it, which will generally be of the form cairo_type_surface_create(), +it, which will generally be of the form +cairo_type_surface_create(), (though see cairo_surface_create_similar() as well). @@ -691,7 +704,7 @@ The various cairo_surface_t any type, but some backends also provide type-specific functions that must only be called with a surface of the appropriate type. These functions have names that begin with -cairo_type_surface such as cairo_image_surface_get_width(). +cairo_type_surface such as cairo_image_surface_get_width(). The behavior of calling a type-specific function with a surface of diff --git a/doc/public/xml/cairo-win32.xml b/doc/public/xml/cairo-win32.xml index 2933eec..edbb10b 100644 --- a/doc/public/xml/cairo-win32.xml +++ b/doc/public/xml/cairo-win32.xml @@ -143,7 +143,7 @@ possible to draw to the surface. The returned surface will be wrapped using the paginated surface to -provide correct complex rendering behaviour; show_page() and +provide correct complex rendering behaviour; cairo_surface_show_page() and associated methods must be used for correct output. hdc : @@ -160,6 +160,13 @@ associated methods must be used for correct output. Returns the HDC associated with this surface, or NULL if none. Also returns NULL if the surface is not a win32 surface. + + +A call to cairo_surface_flush() is required before using the HDC to +ensure that all pending drawing operations are finished and to +restore any temporary modification cairo has made to its state. A +call to cairo_surface_mark_dirty() is required after the state or +the content of the HDC has been modified. surface : a cairo_surface_t diff --git a/doc/public/xml/cairo.xml b/doc/public/xml/cairo.xml index 3860239..0536d14 100644 --- a/doc/public/xml/cairo.xml +++ b/doc/public/xml/cairo.xml @@ -186,7 +186,8 @@ Creates a new cairo_t with all graph default values and with target as a target surface. The target surface should be constructed with a backend-specific function such as cairo_image_surface_create() (or any other -cairo_backend_surface_create() variant). +cairo_backend_surface_create() +variant). This function references target, so you can immediately @@ -428,7 +429,7 @@ operations: -cairo_pattern_t *group = cairo_pop_group (cr); +cairo_pattern_t *group = cairo_pop_group (cr); cairo_set_source (cr, group); cairo_pattern_destroy (group); @@ -692,7 +693,8 @@ Note that this option does not affect text rendering, instead see cairo_get_antialias cairo_antialias_t cairo_get_antialias (cairo_t *cr); -Gets the current shape antialiasing mode, as set by cairo_set_shape_antialias(). +Gets the current shape antialiasing mode, as set by +cairo_set_antialias(). cr : a cairo context @@ -1623,7 +1625,7 @@ references. After this call, the rectangle_list pointer m be dereferenced. rectangle_list : -a rectangle list, as obtained from cairo_copy_clip_rectangles() +a rectangle list, as obtained from cairo_copy_clip_rectangle_list() Since 1.4 diff --git a/perf/cairo-perf-trace.c b/perf/cairo-perf-trace.c index d347908..78c5402 100644 --- a/perf/cairo-perf-trace.c +++ b/perf/cairo-perf-trace.c @@ -278,6 +278,10 @@ describe (cairo_perf_t *perf, { char *description = NULL; + if (perf->has_described_backend) + return; + perf->has_described_backend = TRUE; + if (perf->target->describe) description = perf->target->describe (closure); @@ -827,6 +831,7 @@ main (int argc, perf.target = target; perf.test_number = 0; + perf.has_described_backend = FALSE; if (perf.exact_names) { for (n = 0; n < perf.num_names; n++) { diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h index ff177c4..0b90dda 100644 --- a/perf/cairo-perf.h +++ b/perf/cairo-perf.h @@ -91,6 +91,7 @@ typedef struct _cairo_perf { const cairo_boilerplate_target_t **targets; int num_targets; const cairo_boilerplate_target_t *target; + cairo_bool_t has_described_backend; unsigned int test_number; unsigned int size; cairo_t *cr; diff --git a/src/Makefile.am b/src/Makefile.am index 5edf706..7d2f91f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,8 +6,6 @@ include $(srcdir)/Makefile.am.features EXTRA_DIST += Makefile.win32 Makefile.win32.features #MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features -EXTRA_DIST += glew/LICENSE.txt - AM_CPPFLAGS = -I$(srcdir) $(CAIRO_CFLAGS) AM_LDFLAGS = $(CAIRO_LDFLAGS) diff --git a/src/Makefile.in b/src/Makefile.in index 152bba0..20cec7c 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -98,200 +98,199 @@ DIST_COMMON = README $(am__cairoinclude_HEADERS_DIST) \ $(top_srcdir)/build/Makefile.am.common \ $(top_srcdir)/src/Makefile.sources EXTRA_PROGRAMS = -TESTS = $(am__EXEEXT_1) $(am__append_188) +TESTS = $(am__EXEEXT_1) $(am__append_187) check_PROGRAMS = check-link$(EXEEXT) @BUILD_XCB_SHM_TRUE@am__append_1 = \ @BUILD_XCB_SHM_TRUE@ cairo-xcb-shm.c \ @BUILD_XCB_SHM_TRUE@ cairo-xcb-connection-shm.c \ @BUILD_XCB_SHM_TRUE@ $(NULL) -@BUILD_PRIVATE_GLEW_TRUE@am__append_2 = glew/glew.c -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_3 = $(cairo_xlib_headers) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_4 = $(cairo_xlib_private) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_5 = $(cairo_xlib_cxx_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_6 = $(cairo_xlib_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_7 = cairo-xlib.pc -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_8 = $(cairo_xlib_xrender_headers) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_9 = $(cairo_xlib_xrender_private) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_10 = $(cairo_xlib_xrender_cxx_sources) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_11 = $(cairo_xlib_xrender_sources) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_12 = cairo-xlib-xrender.pc -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_13 = $(cairo_xcb_headers) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_14 = $(cairo_xcb_private) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_15 = $(cairo_xcb_cxx_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_16 = $(cairo_xcb_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_17 = cairo-xcb.pc -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_18 = $(cairo_xlib_xcb_headers) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_19 = $(cairo_xlib_xcb_private) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_20 = $(cairo_xlib_xcb_cxx_sources) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_21 = $(cairo_xlib_xcb_sources) -@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_22 = cairo-xlib-xcb.pc -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_23 = $(cairo_xcb_shm_headers) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_24 = $(cairo_xcb_shm_private) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_25 = $(cairo_xcb_shm_cxx_sources) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_26 = $(cairo_xcb_shm_sources) -@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_27 = cairo-xcb-shm.pc -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_28 = $(cairo_qt_headers) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_29 = $(cairo_qt_private) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_30 = $(cairo_qt_cxx_sources) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_31 = $(cairo_qt_sources) -@CAIRO_HAS_QT_SURFACE_TRUE@am__append_32 = cairo-qt.pc -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_33 = $(cairo_quartz_headers) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_34 = $(cairo_quartz_private) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_35 = $(cairo_quartz_cxx_sources) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_36 = $(cairo_quartz_sources) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_37 = cairo-quartz.pc -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_38 = $(cairo_quartz_font_headers) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_39 = $(cairo_quartz_font_private) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_40 = $(cairo_quartz_font_cxx_sources) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_41 = $(cairo_quartz_font_sources) -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_42 = cairo-quartz-font.pc -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_43 = $(cairo_quartz_image_headers) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_44 = $(cairo_quartz_image_private) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_45 = $(cairo_quartz_image_cxx_sources) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_46 = $(cairo_quartz_image_sources) -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_47 = cairo-quartz-image.pc -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_48 = $(cairo_win32_headers) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_49 = $(cairo_win32_private) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_50 = $(cairo_win32_cxx_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_51 = $(cairo_win32_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_52 = cairo-win32.pc -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_53 = $(cairo_win32_font_headers) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_54 = $(cairo_win32_font_private) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_55 = $(cairo_win32_font_cxx_sources) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_56 = $(cairo_win32_font_sources) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_57 = cairo-win32-font.pc -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_58 = $(cairo_skia_headers) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_59 = $(cairo_skia_private) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_60 = $(cairo_skia_cxx_sources) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_61 = $(cairo_skia_sources) -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_62 = cairo-skia.pc -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_63 = $(cairo_os2_headers) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_64 = $(cairo_os2_private) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_65 = $(cairo_os2_cxx_sources) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_66 = $(cairo_os2_sources) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_67 = cairo-os2.pc -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_68 = $(cairo_beos_headers) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_69 = $(cairo_beos_private) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_70 = $(cairo_beos_cxx_sources) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_71 = $(cairo_beos_sources) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_72 = cairo-beos.pc -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_73 = $(cairo_drm_headers) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_74 = $(cairo_drm_private) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_75 = $(cairo_drm_cxx_sources) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_76 = $(cairo_drm_sources) -@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_77 = cairo-drm.pc -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_78 = $(cairo_drm_xr_headers) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_79 = $(cairo_drm_xr_private) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_80 = $(cairo_drm_xr_cxx_sources) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_81 = $(cairo_drm_xr_sources) -@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_82 = cairo-drm-xr.pc -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_83 = $(cairo_gallium_headers) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_84 = $(cairo_gallium_private) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_85 = $(cairo_gallium_cxx_sources) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_86 = $(cairo_gallium_sources) -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_87 = cairo-gallium.pc -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_88 = $(cairo_xcb_drm_headers) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_89 = $(cairo_xcb_drm_private) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_90 = $(cairo_xcb_drm_cxx_sources) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_91 = $(cairo_xcb_drm_sources) -@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_92 = cairo-xcb-drm.pc -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_93 = $(cairo_png_headers) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_94 = $(cairo_png_private) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_95 = $(cairo_png_cxx_sources) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_96 = $(cairo_png_sources) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_97 = cairo-png.pc -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_98 = $(cairo_gl_headers) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_99 = $(cairo_gl_private) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_100 = $(cairo_gl_cxx_sources) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_101 = $(cairo_gl_sources) -@CAIRO_HAS_GL_SURFACE_TRUE@am__append_102 = cairo-gl.pc -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_private) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = $(cairo_directfb_cxx_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = $(cairo_directfb_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_107 = cairo-directfb.pc -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_headers) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_private) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = $(cairo_vg_cxx_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = $(cairo_vg_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_112 = cairo-vg.pc -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_headers) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_private) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = $(cairo_egl_cxx_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = $(cairo_egl_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_117 = cairo-egl.pc -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_headers) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_private) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = $(cairo_glx_cxx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = $(cairo_glx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_122 = cairo-glx.pc -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_headers) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_private) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = $(cairo_wgl_cxx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = $(cairo_wgl_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_127 = cairo-wgl.pc -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_headers) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_private) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = $(cairo_script_cxx_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = $(cairo_script_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_132 = cairo-script.pc -@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_private) -@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = $(cairo_ft_cxx_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = $(cairo_ft_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_137 = cairo-ft.pc -@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_headers) -@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_private) -@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = $(cairo_fc_cxx_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = $(cairo_fc_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_142 = cairo-fc.pc -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_private) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = $(cairo_ps_cxx_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = $(cairo_ps_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_147 = cairo-ps.pc -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_private) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = $(cairo_pdf_cxx_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = $(cairo_pdf_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_152 = cairo-pdf.pc -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_private) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = $(cairo_svg_cxx_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = $(cairo_svg_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_157 = cairo-svg.pc -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_159 = $(cairo_test_surfaces_cxx_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_160 = $(cairo_test_surfaces_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_headers) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_private) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = $(cairo_tee_cxx_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = $(cairo_tee_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_165 = cairo-tee.pc -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_headers) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_private) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = $(cairo_xml_cxx_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = $(cairo_xml_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_170 = cairo-xml.pc -@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_private) $(cairo_pthread_headers) -@CAIRO_HAS_PTHREAD_TRUE@am__append_172 = $(cairo_pthread_cxx_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_173 = $(cairo_pthread_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_headers) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_private) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = $(cairo_gobject_cxx_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = $(cairo_gobject_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_178 = cairo-gobject.pc -@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_private) $(cairo_trace_headers) -@CAIRO_HAS_TRACE_TRUE@am__append_180 = $(cairo_trace_cxx_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_181 = $(cairo_trace_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_private) $(cairo_interpreter_headers) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_183 = $(cairo_interpreter_cxx_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_184 = $(cairo_interpreter_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_186 = $(cairo_symbol_lookup_cxx_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_187 = $(cairo_symbol_lookup_sources) -@CROSS_COMPILING_FALSE@am__append_188 = check-link$(EXEEXT) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_2 = $(cairo_xlib_headers) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_3 = $(cairo_xlib_private) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_4 = $(cairo_xlib_cxx_sources) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_5 = $(cairo_xlib_sources) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_6 = cairo-xlib.pc +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_7 = $(cairo_xlib_xrender_headers) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_8 = $(cairo_xlib_xrender_private) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_9 = $(cairo_xlib_xrender_cxx_sources) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_10 = $(cairo_xlib_xrender_sources) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_11 = cairo-xlib-xrender.pc +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_12 = $(cairo_xcb_headers) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_13 = $(cairo_xcb_private) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_14 = $(cairo_xcb_cxx_sources) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_15 = $(cairo_xcb_sources) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_16 = cairo-xcb.pc +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_17 = $(cairo_xlib_xcb_headers) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_18 = $(cairo_xlib_xcb_private) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_19 = $(cairo_xlib_xcb_cxx_sources) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_20 = $(cairo_xlib_xcb_sources) +@CAIRO_HAS_XLIB_XCB_FUNCTIONS_TRUE@am__append_21 = cairo-xlib-xcb.pc +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_22 = $(cairo_xcb_shm_headers) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_23 = $(cairo_xcb_shm_private) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_24 = $(cairo_xcb_shm_cxx_sources) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_25 = $(cairo_xcb_shm_sources) +@CAIRO_HAS_XCB_SHM_FUNCTIONS_TRUE@am__append_26 = cairo-xcb-shm.pc +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_27 = $(cairo_qt_headers) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_28 = $(cairo_qt_private) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_29 = $(cairo_qt_cxx_sources) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_30 = $(cairo_qt_sources) +@CAIRO_HAS_QT_SURFACE_TRUE@am__append_31 = cairo-qt.pc +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_32 = $(cairo_quartz_headers) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_33 = $(cairo_quartz_private) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_34 = $(cairo_quartz_cxx_sources) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_35 = $(cairo_quartz_sources) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_36 = cairo-quartz.pc +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_37 = $(cairo_quartz_font_headers) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_38 = $(cairo_quartz_font_private) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_39 = $(cairo_quartz_font_cxx_sources) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_40 = $(cairo_quartz_font_sources) +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_41 = cairo-quartz-font.pc +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_42 = $(cairo_quartz_image_headers) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_43 = $(cairo_quartz_image_private) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_44 = $(cairo_quartz_image_cxx_sources) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_45 = $(cairo_quartz_image_sources) +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_46 = cairo-quartz-image.pc +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_47 = $(cairo_win32_headers) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_48 = $(cairo_win32_private) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_49 = $(cairo_win32_cxx_sources) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_50 = $(cairo_win32_sources) +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_51 = cairo-win32.pc +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_52 = $(cairo_win32_font_headers) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_53 = $(cairo_win32_font_private) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_54 = $(cairo_win32_font_cxx_sources) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_55 = $(cairo_win32_font_sources) +@CAIRO_HAS_WIN32_FONT_TRUE@am__append_56 = cairo-win32-font.pc +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_57 = $(cairo_skia_headers) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_58 = $(cairo_skia_private) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_59 = $(cairo_skia_cxx_sources) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_60 = $(cairo_skia_sources) +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__append_61 = cairo-skia.pc +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_62 = $(cairo_os2_headers) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_63 = $(cairo_os2_private) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_64 = $(cairo_os2_cxx_sources) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_65 = $(cairo_os2_sources) +@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_66 = cairo-os2.pc +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_67 = $(cairo_beos_headers) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_68 = $(cairo_beos_private) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_69 = $(cairo_beos_cxx_sources) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_70 = $(cairo_beos_sources) +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_71 = cairo-beos.pc +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_72 = $(cairo_drm_headers) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_73 = $(cairo_drm_private) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_74 = $(cairo_drm_cxx_sources) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_75 = $(cairo_drm_sources) +@CAIRO_HAS_DRM_SURFACE_TRUE@am__append_76 = cairo-drm.pc +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_77 = $(cairo_drm_xr_headers) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_78 = $(cairo_drm_xr_private) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_79 = $(cairo_drm_xr_cxx_sources) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_80 = $(cairo_drm_xr_sources) +@CAIRO_HAS_DRM_XR_FUNCTIONS_TRUE@am__append_81 = cairo-drm-xr.pc +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_82 = $(cairo_gallium_headers) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_83 = $(cairo_gallium_private) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_84 = $(cairo_gallium_cxx_sources) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_85 = $(cairo_gallium_sources) +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__append_86 = cairo-gallium.pc +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_87 = $(cairo_xcb_drm_headers) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_88 = $(cairo_xcb_drm_private) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_89 = $(cairo_xcb_drm_cxx_sources) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_90 = $(cairo_xcb_drm_sources) +@CAIRO_HAS_XCB_DRM_FUNCTIONS_TRUE@am__append_91 = cairo-xcb-drm.pc +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_92 = $(cairo_png_headers) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_93 = $(cairo_png_private) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_94 = $(cairo_png_cxx_sources) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_95 = $(cairo_png_sources) +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_96 = cairo-png.pc +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_97 = $(cairo_gl_headers) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_98 = $(cairo_gl_private) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_99 = $(cairo_gl_cxx_sources) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_100 = $(cairo_gl_sources) +@CAIRO_HAS_GL_SURFACE_TRUE@am__append_101 = cairo-gl.pc +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_102 = $(cairo_directfb_headers) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_private) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_cxx_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = $(cairo_directfb_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = cairo-directfb.pc +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_107 = $(cairo_vg_headers) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_private) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_cxx_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = $(cairo_vg_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = cairo-vg.pc +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_112 = $(cairo_egl_headers) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_private) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_cxx_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = $(cairo_egl_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = cairo-egl.pc +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_117 = $(cairo_glx_headers) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_private) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_cxx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = $(cairo_glx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = cairo-glx.pc +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_122 = $(cairo_wgl_headers) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_private) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_cxx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = $(cairo_wgl_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = cairo-wgl.pc +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_127 = $(cairo_script_headers) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_private) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_cxx_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = $(cairo_script_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = cairo-script.pc +@CAIRO_HAS_FT_FONT_TRUE@am__append_132 = $(cairo_ft_headers) +@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_private) +@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_cxx_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = $(cairo_ft_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = cairo-ft.pc +@CAIRO_HAS_FC_FONT_TRUE@am__append_137 = $(cairo_fc_headers) +@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_private) +@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_cxx_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = $(cairo_fc_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = cairo-fc.pc +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_142 = $(cairo_ps_headers) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_private) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_cxx_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = $(cairo_ps_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = cairo-ps.pc +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_147 = $(cairo_pdf_headers) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_private) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_cxx_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = $(cairo_pdf_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = cairo-pdf.pc +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_152 = $(cairo_svg_headers) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_private) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_cxx_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = $(cairo_svg_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = cairo-svg.pc +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_157 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_cxx_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_159 = $(cairo_test_surfaces_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_160 = $(cairo_tee_headers) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_private) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_cxx_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = $(cairo_tee_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = cairo-tee.pc +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_165 = $(cairo_xml_headers) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_private) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_cxx_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = $(cairo_xml_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = cairo-xml.pc +@CAIRO_HAS_PTHREAD_TRUE@am__append_170 = $(cairo_pthread_private) $(cairo_pthread_headers) +@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_cxx_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_172 = $(cairo_pthread_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_173 = $(cairo_gobject_headers) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_private) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_cxx_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = $(cairo_gobject_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = cairo-gobject.pc +@CAIRO_HAS_TRACE_TRUE@am__append_178 = $(cairo_trace_private) $(cairo_trace_headers) +@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_cxx_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_180 = $(cairo_trace_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_181 = $(cairo_interpreter_private) $(cairo_interpreter_headers) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_cxx_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_183 = $(cairo_interpreter_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_184 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_cxx_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_186 = $(cairo_symbol_lookup_sources) +@CROSS_COMPILING_FALSE@am__append_187 = check-link$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -364,7 +363,7 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ cairo-directfb.h cairo-vg.h cairo-script.h cairo-ft.h \ cairo-ps.h cairo-pdf.h cairo-svg.h cairo-tee.h cairo-xml.h \ cairoint.h cairo-analysis-surface-private.h \ - cairo-arc-private.h cairo-atomic-private.h \ + cairo-arc-private.h cairo-atomic-private.h cairo-box-private.h \ cairo-boxes-private.h cairo-cache-private.h \ cairo-clip-private.h cairo-combsort-private.h \ cairo-compiler-private.h cairo-composite-rectangles-private.h \ @@ -374,12 +373,12 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ cairo-freed-pool-private.h cairo-fontconfig-private.h \ cairo-gstate-private.h cairo-hash-private.h \ cairo-image-info-private.h cairo-list-private.h \ - cairo-malloc-private.h cairo-recording-surface-private.h \ - cairo-mutex-impl-private.h cairo-mutex-list-private.h \ - cairo-mutex-private.h cairo-mutex-type-private.h \ - cairo-output-stream-private.h cairo-paginated-private.h \ - cairo-paginated-surface-private.h cairo-path-fixed-private.h \ - cairo-path-private.h cairo-private.h \ + cairo-malloc-private.h cairo-mutex-impl-private.h \ + cairo-mutex-list-private.h cairo-mutex-private.h \ + cairo-mutex-type-private.h cairo-output-stream-private.h \ + cairo-paginated-private.h cairo-paginated-surface-private.h \ + cairo-path-fixed-private.h cairo-path-private.h \ + cairo-private.h cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ cairo-rtree-private.h cairo-scaled-font-private.h \ cairo-slope-private.h cairo-spans-private.h \ @@ -393,27 +392,28 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ cairo-scaled-font-subsets-private.h \ cairo-truetype-subset-private.h cairo-type1-private.h \ cairo-type3-glyph-surface-private.h \ - cairo-pdf-operators-private.h cairo-xlib-private.h \ - cairo-xlib-surface-private.h cairo-xlib-xrender-private.h \ - cairo-xcb-private.h cairo-quartz-private.h \ - cairo-win32-private.h cairo-os2-private.h \ - drm/cairo-drm-private.h drm/cairo-drm-ioctl-private.h \ - drm/cairo-drm-intel-private.h \ + cairo-pdf-operators-private.h cairo-pdf-shading-private.h \ + cairo-xlib-private.h cairo-xlib-surface-private.h \ + cairo-xlib-xrender-private.h cairo-xcb-private.h \ + cairo-quartz-private.h cairo-win32-private.h \ + cairo-os2-private.h drm/cairo-drm-private.h \ + drm/cairo-drm-ioctl-private.h drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h drm/cairo-drm-intel-brw-eu.h \ drm/cairo-drm-intel-command-private.h \ drm/cairo-drm-intel-ioctl-private.h \ drm/cairo-drm-i915-private.h drm/cairo-drm-i965-private.h \ drm/cairo-drm-radeon-private.h cairo-gl-private.h \ - cairo-gl-gradient-private.h glew/GL/glew.h glew/GL/glxew.h \ - cairo-ft-private.h cairo-ps-surface-private.h \ - cairo-pdf-surface-private.h cairo-svg-surface-private.h \ - test-fallback-surface.h test-fallback16-surface.h \ - test-null-surface.h test-paginated-surface.h \ - test-wrapping-surface.h cairo-tee-surface-private.h \ - cairo-analysis-surface.c cairo-arc.c cairo-array.c \ - cairo-atomic.c cairo-base64-stream.c cairo-base85-stream.c \ - cairo-bentley-ottmann.c cairo-bentley-ottmann-rectangular.c \ + cairo-gl-dispatch-private.h cairo-gl-ext-def-private.h \ + cairo-gl-gradient-private.h cairo-ft-private.h \ + cairo-ps-surface-private.h cairo-pdf-surface-private.h \ + cairo-svg-surface-private.h test-fallback-surface.h \ + test-fallback16-surface.h test-null-surface.h \ + test-paginated-surface.h test-wrapping-surface.h \ + cairo-tee-surface-private.h cairo-analysis-surface.c \ + cairo-arc.c cairo-array.c cairo-atomic.c cairo-base64-stream.c \ + cairo-base85-stream.c cairo-bentley-ottmann.c \ + cairo-bentley-ottmann-rectangular.c \ cairo-bentley-ottmann-rectilinear.c \ cairo-botor-scan-converter.c cairo-boxes.c cairo.c \ cairo-cache.c cairo-clip.c cairo-color.c \ @@ -423,12 +423,12 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ cairo-freelist.c cairo-freed-pool.c cairo-gstate.c \ cairo-hash.c cairo-hull.c cairo-image-info.c \ cairo-image-surface.c cairo-lzw.c cairo-matrix.c \ - cairo-recording-surface.c cairo-misc.c cairo-mutex.c \ + cairo-mesh-pattern-rasterizer.c cairo-misc.c cairo-mutex.c \ cairo-observer.c cairo-output-stream.c \ cairo-paginated-surface.c cairo-path-bounds.c cairo-path.c \ cairo-path-fill.c cairo-path-fixed.c cairo-path-in-fill.c \ cairo-path-stroke.c cairo-pattern.c cairo-pen.c \ - cairo-polygon.c cairo-rectangle.c \ + cairo-polygon.c cairo-recording-surface.c cairo-rectangle.c \ cairo-rectangular-scan-converter.c cairo-region.c \ cairo-rtree.c cairo-scaled-font.c cairo-slope.c cairo-spans.c \ cairo-spline.c cairo-stroke-style.c cairo-surface.c \ @@ -440,8 +440,9 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ cairo-user-font.c cairo-version.c cairo-wideint.c \ cairo-cff-subset.c cairo-scaled-font-subsets.c \ cairo-truetype-subset.c cairo-type1-fallback.c \ - cairo-type1-subset.c cairo-type3-glyph-surface.c \ - cairo-pdf-operators.c cairo-deflate-stream.c \ + cairo-type1-glyph-names.c cairo-type1-subset.c \ + cairo-type3-glyph-surface.c cairo-pdf-operators.c \ + cairo-pdf-shading.c cairo-deflate-stream.c \ cairo-xlib-display.c cairo-xlib-screen.c cairo-xlib-surface.c \ cairo-xlib-visual.c cairo-xlib-xcb-surface.c \ cairo-xcb-connection.c cairo-xcb-connection-core.c \ @@ -463,12 +464,12 @@ am__libcairo_la_SOURCES_DIST = cairo.h cairo-deprecated.h cairo-xlib.h \ drm/cairo-drm-intel-brw-eu-util.c drm/cairo-drm-radeon.c \ drm/cairo-drm-radeon-surface.c drm/cairo-drm-xr.c \ drm/cairo-drm-gallium-surface.c cairo-png.c \ - cairo-gl-composite.c cairo-gl-device.c cairo-gl-glyphs.c \ - cairo-gl-gradient.c cairo-gl-shaders.c cairo-gl-surface.c \ - glew/glew.c cairo-directfb-surface.c cairo-vg-surface.c \ - cairo-egl-context.c cairo-glx-context.c cairo-wgl-context.c \ - cairo-script-surface.c cairo-ft-font.c cairo-ps-surface.c \ - cairo-pdf-surface.c cairo-svg-surface.c \ + cairo-gl-composite.c cairo-gl-device.c cairo-gl-dispatch.c \ + cairo-gl-glyphs.c cairo-gl-gradient.c cairo-gl-info.c \ + cairo-gl-shaders.c cairo-gl-surface.c cairo-directfb-surface.c \ + cairo-vg-surface.c cairo-egl-context.c cairo-glx-context.c \ + cairo-wgl-context.c cairo-script-surface.c cairo-ft-font.c \ + cairo-ps-surface.c cairo-pdf-surface.c cairo-svg-surface.c \ test-fallback-surface.c test-fallback16-surface.c \ test-null-surface.c test-paginated-surface.c \ test-wrapping-surface.c cairo-tee-surface.c \ @@ -526,8 +527,9 @@ am__objects_27 = $(am__objects_25) $(am__objects_2) $(am__objects_1) \ $(am__objects_1) am__objects_28 = cairo-cff-subset.lo cairo-scaled-font-subsets.lo \ cairo-truetype-subset.lo cairo-type1-fallback.lo \ - cairo-type1-subset.lo cairo-type3-glyph-surface.lo -am__objects_29 = cairo-pdf-operators.lo + cairo-type1-glyph-names.lo cairo-type1-subset.lo \ + cairo-type3-glyph-surface.lo +am__objects_29 = cairo-pdf-operators.lo cairo-pdf-shading.lo am__objects_30 = cairo-deflate-stream.lo @CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_SCRIPT_SURFACE_FALSE@@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_31 = $(am__objects_30) @CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_31 = $(am__objects_30) @@ -544,12 +546,12 @@ am__objects_32 = cairo-analysis-surface.lo cairo-arc.lo cairo-array.lo \ cairo-freelist.lo cairo-freed-pool.lo cairo-gstate.lo \ cairo-hash.lo cairo-hull.lo cairo-image-info.lo \ cairo-image-surface.lo cairo-lzw.lo cairo-matrix.lo \ - cairo-recording-surface.lo cairo-misc.lo cairo-mutex.lo \ + cairo-mesh-pattern-rasterizer.lo cairo-misc.lo cairo-mutex.lo \ cairo-observer.lo cairo-output-stream.lo \ cairo-paginated-surface.lo cairo-path-bounds.lo cairo-path.lo \ cairo-path-fill.lo cairo-path-fixed.lo cairo-path-in-fill.lo \ cairo-path-stroke.lo cairo-pattern.lo cairo-pen.lo \ - cairo-polygon.lo cairo-rectangle.lo \ + cairo-polygon.lo cairo-recording-surface.lo cairo-rectangle.lo \ cairo-rectangular-scan-converter.lo cairo-region.lo \ cairo-rtree.lo cairo-scaled-font.lo cairo-slope.lo \ cairo-spans.lo cairo-spline.lo cairo-stroke-style.lo \ @@ -605,55 +607,54 @@ am__objects_54 = cairo-drm-gallium-surface.lo @CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__objects_55 = $(am__objects_54) am__objects_56 = cairo-png.lo @CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__objects_57 = $(am__objects_56) -@BUILD_PRIVATE_GLEW_TRUE@am__objects_58 = glew.lo -am__objects_59 = cairo-gl-composite.lo cairo-gl-device.lo \ - cairo-gl-glyphs.lo cairo-gl-gradient.lo cairo-gl-shaders.lo \ - cairo-gl-surface.lo $(am__objects_58) -@CAIRO_HAS_GL_SURFACE_TRUE@am__objects_60 = $(am__objects_59) -am__objects_61 = cairo-directfb-surface.lo -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_62 = $(am__objects_61) -am__objects_63 = cairo-vg-surface.lo -@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_64 = $(am__objects_63) -am__objects_65 = cairo-egl-context.lo -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__objects_66 = $(am__objects_65) -am__objects_67 = cairo-glx-context.lo -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__objects_68 = $(am__objects_67) -am__objects_69 = cairo-wgl-context.lo -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__objects_70 = $(am__objects_69) -am__objects_71 = cairo-script-surface.lo -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_72 = $(am__objects_71) -am__objects_73 = cairo-ft-font.lo -@CAIRO_HAS_FT_FONT_TRUE@am__objects_74 = $(am__objects_73) -am__objects_75 = cairo-ps-surface.lo -@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_76 = $(am__objects_75) -am__objects_77 = cairo-pdf-surface.lo -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_78 = $(am__objects_77) -am__objects_79 = cairo-svg-surface.lo -@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_80 = $(am__objects_79) -am__objects_81 = test-fallback-surface.lo test-fallback16-surface.lo \ +am__objects_58 = cairo-gl-composite.lo cairo-gl-device.lo \ + cairo-gl-dispatch.lo cairo-gl-glyphs.lo cairo-gl-gradient.lo \ + cairo-gl-info.lo cairo-gl-shaders.lo cairo-gl-surface.lo +@CAIRO_HAS_GL_SURFACE_TRUE@am__objects_59 = $(am__objects_58) +am__objects_60 = cairo-directfb-surface.lo +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_61 = $(am__objects_60) +am__objects_62 = cairo-vg-surface.lo +@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_63 = $(am__objects_62) +am__objects_64 = cairo-egl-context.lo +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__objects_65 = $(am__objects_64) +am__objects_66 = cairo-glx-context.lo +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__objects_67 = $(am__objects_66) +am__objects_68 = cairo-wgl-context.lo +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__objects_69 = $(am__objects_68) +am__objects_70 = cairo-script-surface.lo +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_71 = $(am__objects_70) +am__objects_72 = cairo-ft-font.lo +@CAIRO_HAS_FT_FONT_TRUE@am__objects_73 = $(am__objects_72) +am__objects_74 = cairo-ps-surface.lo +@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_75 = $(am__objects_74) +am__objects_76 = cairo-pdf-surface.lo +@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_77 = $(am__objects_76) +am__objects_78 = cairo-svg-surface.lo +@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_79 = $(am__objects_78) +am__objects_80 = test-fallback-surface.lo test-fallback16-surface.lo \ test-null-surface.lo test-paginated-surface.lo \ test-wrapping-surface.lo -@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_82 = $(am__objects_81) -am__objects_83 = cairo-tee-surface.lo -@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_84 = $(am__objects_83) -am__objects_85 = cairo-xml-surface.lo -@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_86 = $(am__objects_85) -am__objects_87 = $(am__objects_32) $(am__objects_34) $(am__objects_1) \ +@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_81 = $(am__objects_80) +am__objects_82 = cairo-tee-surface.lo +@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_83 = $(am__objects_82) +am__objects_84 = cairo-xml-surface.lo +@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_85 = $(am__objects_84) +am__objects_86 = $(am__objects_32) $(am__objects_34) $(am__objects_1) \ $(am__objects_37) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_39) $(am__objects_41) \ $(am__objects_43) $(am__objects_45) $(am__objects_47) \ $(am__objects_1) $(am__objects_49) $(am__objects_1) \ $(am__objects_51) $(am__objects_53) $(am__objects_55) \ - $(am__objects_1) $(am__objects_57) $(am__objects_60) \ - $(am__objects_62) $(am__objects_64) $(am__objects_66) \ - $(am__objects_68) $(am__objects_70) $(am__objects_72) \ - $(am__objects_74) $(am__objects_1) $(am__objects_76) \ - $(am__objects_78) $(am__objects_80) $(am__objects_82) \ - $(am__objects_84) $(am__objects_86) $(am__objects_1) \ + $(am__objects_1) $(am__objects_57) $(am__objects_59) \ + $(am__objects_61) $(am__objects_63) $(am__objects_65) \ + $(am__objects_67) $(am__objects_69) $(am__objects_71) \ + $(am__objects_73) $(am__objects_1) $(am__objects_75) \ + $(am__objects_77) $(am__objects_79) $(am__objects_81) \ + $(am__objects_83) $(am__objects_85) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) am_libcairo_la_OBJECTS = $(am__objects_24) $(am__objects_27) \ - $(am__objects_87) + $(am__objects_86) nodist_libcairo_la_OBJECTS = libcairo_la_OBJECTS = $(am_libcairo_la_OBJECTS) \ $(nodist_libcairo_la_OBJECTS) @@ -670,7 +671,7 @@ am__libcairo_cxx_la_SOURCES_DIST = cairo.h cairo-deprecated.h \ cairo-directfb.h cairo-vg.h cairo-script.h cairo-ft.h \ cairo-ps.h cairo-pdf.h cairo-svg.h cairo-tee.h cairo-xml.h \ cairoint.h cairo-analysis-surface-private.h \ - cairo-arc-private.h cairo-atomic-private.h \ + cairo-arc-private.h cairo-atomic-private.h cairo-box-private.h \ cairo-boxes-private.h cairo-cache-private.h \ cairo-clip-private.h cairo-combsort-private.h \ cairo-compiler-private.h cairo-composite-rectangles-private.h \ @@ -680,12 +681,12 @@ am__libcairo_cxx_la_SOURCES_DIST = cairo.h cairo-deprecated.h \ cairo-freed-pool-private.h cairo-fontconfig-private.h \ cairo-gstate-private.h cairo-hash-private.h \ cairo-image-info-private.h cairo-list-private.h \ - cairo-malloc-private.h cairo-recording-surface-private.h \ - cairo-mutex-impl-private.h cairo-mutex-list-private.h \ - cairo-mutex-private.h cairo-mutex-type-private.h \ - cairo-output-stream-private.h cairo-paginated-private.h \ - cairo-paginated-surface-private.h cairo-path-fixed-private.h \ - cairo-path-private.h cairo-private.h \ + cairo-malloc-private.h cairo-mutex-impl-private.h \ + cairo-mutex-list-private.h cairo-mutex-private.h \ + cairo-mutex-type-private.h cairo-output-stream-private.h \ + cairo-paginated-private.h cairo-paginated-surface-private.h \ + cairo-path-fixed-private.h cairo-path-private.h \ + cairo-private.h cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ cairo-rtree-private.h cairo-scaled-font-private.h \ cairo-slope-private.h cairo-spans-private.h \ @@ -699,37 +700,37 @@ am__libcairo_cxx_la_SOURCES_DIST = cairo.h cairo-deprecated.h \ cairo-scaled-font-subsets-private.h \ cairo-truetype-subset-private.h cairo-type1-private.h \ cairo-type3-glyph-surface-private.h \ - cairo-pdf-operators-private.h cairo-xlib-private.h \ - cairo-xlib-surface-private.h cairo-xlib-xrender-private.h \ - cairo-xcb-private.h cairo-quartz-private.h \ - cairo-win32-private.h cairo-os2-private.h \ - drm/cairo-drm-private.h drm/cairo-drm-ioctl-private.h \ - drm/cairo-drm-intel-private.h \ + cairo-pdf-operators-private.h cairo-pdf-shading-private.h \ + cairo-xlib-private.h cairo-xlib-surface-private.h \ + cairo-xlib-xrender-private.h cairo-xcb-private.h \ + cairo-quartz-private.h cairo-win32-private.h \ + cairo-os2-private.h drm/cairo-drm-private.h \ + drm/cairo-drm-ioctl-private.h drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h drm/cairo-drm-intel-brw-eu.h \ drm/cairo-drm-intel-command-private.h \ drm/cairo-drm-intel-ioctl-private.h \ drm/cairo-drm-i915-private.h drm/cairo-drm-i965-private.h \ drm/cairo-drm-radeon-private.h cairo-gl-private.h \ - cairo-gl-gradient-private.h glew/GL/glew.h glew/GL/glxew.h \ - cairo-ft-private.h cairo-ps-surface-private.h \ - cairo-pdf-surface-private.h cairo-svg-surface-private.h \ - test-fallback-surface.h test-fallback16-surface.h \ - test-null-surface.h test-paginated-surface.h \ - test-wrapping-surface.h cairo-tee-surface-private.h \ - cairo-qt-surface.cpp cairo-skia-surface.cpp \ - cairo-beos-surface.cpp -am__objects_88 = cairo-qt-surface.lo -@CAIRO_HAS_QT_SURFACE_TRUE@am__objects_89 = $(am__objects_88) -am__objects_90 = cairo-skia-surface.lo -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__objects_91 = $(am__objects_90) -am__objects_92 = cairo-beos-surface.lo -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__objects_93 = $(am__objects_92) -am__objects_94 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_89) \ + cairo-gl-dispatch-private.h cairo-gl-ext-def-private.h \ + cairo-gl-gradient-private.h cairo-ft-private.h \ + cairo-ps-surface-private.h cairo-pdf-surface-private.h \ + cairo-svg-surface-private.h test-fallback-surface.h \ + test-fallback16-surface.h test-null-surface.h \ + test-paginated-surface.h test-wrapping-surface.h \ + cairo-tee-surface-private.h cairo-qt-surface.cpp \ + cairo-skia-surface.cpp cairo-beos-surface.cpp +am__objects_87 = cairo-qt-surface.lo +@CAIRO_HAS_QT_SURFACE_TRUE@am__objects_88 = $(am__objects_87) +am__objects_89 = cairo-skia-surface.lo +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__objects_90 = $(am__objects_89) +am__objects_91 = cairo-beos-surface.lo +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__objects_92 = $(am__objects_91) +am__objects_93 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ + $(am__objects_1) $(am__objects_1) $(am__objects_88) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_91) \ - $(am__objects_1) $(am__objects_93) $(am__objects_1) \ + $(am__objects_1) $(am__objects_1) $(am__objects_90) \ + $(am__objects_1) $(am__objects_92) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ @@ -739,7 +740,7 @@ am__objects_94 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) am_libcairo_cxx_la_OBJECTS = $(am__objects_24) $(am__objects_27) \ - $(am__objects_94) + $(am__objects_93) libcairo_cxx_la_OBJECTS = $(am_libcairo_cxx_la_OBJECTS) libcairo_cxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ @@ -1026,14 +1027,13 @@ CLEANFILES = *.i *.s *.gch $(EXTRA_LTLIBRARIES) $(EXTRA_PROGRAMS) \ $(check_PROGRAMS) cairo.def headers-standalone DISTCLEANFILES = $(BUILT_SOURCES) cairo-features.h \ cairo-supported-features.h -#MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features -EXTRA_DIST = Makefile.win32 Makefile.win32.features glew/LICENSE.txt \ - $(TESTS_SH) check-has-hidden-symbols.c +EXTRA_DIST = Makefile.win32 Makefile.win32.features $(TESTS_SH) \ + check-has-hidden-symbols.c EXTRA_LTLIBRARIES = MAINTAINERCLEANFILES = Makefile.in cairo_headers = cairo.h cairo-deprecated.h cairo_private = cairoint.h cairo-analysis-surface-private.h \ - cairo-arc-private.h cairo-atomic-private.h \ + cairo-arc-private.h cairo-atomic-private.h cairo-box-private.h \ cairo-boxes-private.h cairo-cache-private.h \ cairo-clip-private.h cairo-combsort-private.h \ cairo-compiler-private.h cairo-composite-rectangles-private.h \ @@ -1043,12 +1043,12 @@ cairo_private = cairoint.h cairo-analysis-surface-private.h \ cairo-freed-pool-private.h cairo-fontconfig-private.h \ cairo-gstate-private.h cairo-hash-private.h \ cairo-image-info-private.h cairo-list-private.h \ - cairo-malloc-private.h cairo-recording-surface-private.h \ - cairo-mutex-impl-private.h cairo-mutex-list-private.h \ - cairo-mutex-private.h cairo-mutex-type-private.h \ - cairo-output-stream-private.h cairo-paginated-private.h \ - cairo-paginated-surface-private.h cairo-path-fixed-private.h \ - cairo-path-private.h cairo-private.h \ + cairo-malloc-private.h cairo-mutex-impl-private.h \ + cairo-mutex-list-private.h cairo-mutex-private.h \ + cairo-mutex-type-private.h cairo-output-stream-private.h \ + cairo-paginated-private.h cairo-paginated-surface-private.h \ + cairo-path-fixed-private.h cairo-path-private.h \ + cairo-private.h cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ cairo-rtree-private.h cairo-scaled-font-private.h \ cairo-slope-private.h cairo-spans-private.h \ @@ -1072,12 +1072,12 @@ cairo_sources = cairo-analysis-surface.c cairo-arc.c cairo-array.c \ cairo-freelist.c cairo-freed-pool.c cairo-gstate.c \ cairo-hash.c cairo-hull.c cairo-image-info.c \ cairo-image-surface.c cairo-lzw.c cairo-matrix.c \ - cairo-recording-surface.c cairo-misc.c cairo-mutex.c \ + cairo-mesh-pattern-rasterizer.c cairo-misc.c cairo-mutex.c \ cairo-observer.c cairo-output-stream.c \ cairo-paginated-surface.c cairo-path-bounds.c cairo-path.c \ cairo-path-fill.c cairo-path-fixed.c cairo-path-in-fill.c \ cairo-path-stroke.c cairo-pattern.c cairo-pen.c \ - cairo-polygon.c cairo-rectangle.c \ + cairo-polygon.c cairo-recording-surface.c cairo-rectangle.c \ cairo-rectangular-scan-converter.c cairo-region.c \ cairo-rtree.c cairo-scaled-font.c cairo-slope.c cairo-spans.c \ cairo-spline.c cairo-stroke-style.c cairo-surface.c \ @@ -1101,6 +1101,7 @@ _cairo_font_subset_sources = \ cairo-scaled-font-subsets.c \ cairo-truetype-subset.c \ cairo-type1-fallback.c \ + cairo-type1-glyph-names.c \ cairo-type1-subset.c \ cairo-type3-glyph-surface.c \ $(NULL) @@ -1108,8 +1109,8 @@ _cairo_font_subset_sources = \ cairo_egl_sources = cairo-egl-context.c cairo_glx_sources = cairo-glx-context.c cairo_wgl_sources = cairo-wgl-context.c -_cairo_pdf_operators_private = cairo-pdf-operators-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c +_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h +_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c cairo_png_sources = cairo-png.c cairo_ps_headers = cairo-ps.h cairo_ps_private = cairo-ps-surface-private.h @@ -1192,13 +1193,19 @@ cairo_beos_headers = cairo-beos.h cairo_beos_cxx_sources = cairo-beos-surface.cpp cairo_gl_headers = cairo-gl.h cairo_gl_private = cairo-gl-private.h \ - cairo-gl-gradient-private.h \ - glew/GL/glew.h \ - glew/GL/glxew.h + cairo-gl-dispatch-private.h \ + cairo-gl-ext-def-private.h \ + cairo-gl-gradient-private.h + +cairo_gl_sources = cairo-gl-composite.c \ + cairo-gl-device.c \ + cairo-gl-dispatch.c \ + cairo-gl-glyphs.c \ + cairo-gl-gradient.c \ + cairo-gl-info.c \ + cairo-gl-shaders.c \ + cairo-gl-surface.c -cairo_gl_sources = cairo-gl-composite.c cairo-gl-device.c \ - cairo-gl-glyphs.c cairo-gl-gradient.c cairo-gl-shaders.c \ - cairo-gl-surface.c $(am__append_2) cairo_directfb_headers = cairo-directfb.h cairo_directfb_sources = cairo-directfb-surface.c cairo_drm_headers = cairo-drm.h @@ -1352,7 +1359,21 @@ all_cairo_sources = $(cairo_sources) $(cairo_xlib_sources) \ $(cairo_pthread_sources) $(cairo_gobject_sources) \ $(cairo_trace_sources) $(cairo_interpreter_sources) \ $(cairo_symbol_lookup_sources) -enabled_cairo_headers = $(cairo_headers) $(am__append_3) \ +enabled_cairo_headers = $(cairo_headers) $(am__append_2) \ + $(am__append_7) $(am__append_12) $(am__append_17) \ + $(am__append_22) $(am__append_27) $(am__append_32) \ + $(am__append_37) $(am__append_42) $(am__append_47) \ + $(am__append_52) $(am__append_57) $(am__append_62) \ + $(am__append_67) $(am__append_72) $(am__append_77) \ + $(am__append_82) $(am__append_87) $(am__append_92) \ + $(am__append_97) $(am__append_102) $(am__append_107) \ + $(am__append_112) $(am__append_117) $(am__append_122) \ + $(am__append_127) $(am__append_132) $(am__append_137) \ + $(am__append_142) $(am__append_147) $(am__append_152) \ + $(cairo_image_headers) $(cairo_recording_headers) \ + $(am__append_160) $(am__append_165) $(cairo_user_headers) \ + $(am__append_173) +enabled_cairo_private = $(cairo_private) $(am__append_3) \ $(am__append_8) $(am__append_13) $(am__append_18) \ $(am__append_23) $(am__append_28) $(am__append_33) \ $(am__append_38) $(am__append_43) $(am__append_48) \ @@ -1363,10 +1384,11 @@ enabled_cairo_headers = $(cairo_headers) $(am__append_3) \ $(am__append_113) $(am__append_118) $(am__append_123) \ $(am__append_128) $(am__append_133) $(am__append_138) \ $(am__append_143) $(am__append_148) $(am__append_153) \ - $(cairo_image_headers) $(cairo_recording_headers) \ - $(am__append_161) $(am__append_166) $(cairo_user_headers) \ - $(am__append_174) -enabled_cairo_private = $(cairo_private) $(am__append_4) \ + $(am__append_157) $(cairo_image_private) \ + $(cairo_recording_private) $(am__append_161) $(am__append_166) \ + $(cairo_user_private) $(am__append_170) $(am__append_174) \ + $(am__append_178) $(am__append_181) $(am__append_184) +enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_4) \ $(am__append_9) $(am__append_14) $(am__append_19) \ $(am__append_24) $(am__append_29) $(am__append_34) \ $(am__append_39) $(am__append_44) $(am__append_49) \ @@ -1377,11 +1399,12 @@ enabled_cairo_private = $(cairo_private) $(am__append_4) \ $(am__append_114) $(am__append_119) $(am__append_124) \ $(am__append_129) $(am__append_134) $(am__append_139) \ $(am__append_144) $(am__append_149) $(am__append_154) \ - $(am__append_158) $(cairo_image_private) \ - $(cairo_recording_private) $(am__append_162) $(am__append_167) \ - $(cairo_user_private) $(am__append_171) $(am__append_175) \ - $(am__append_179) $(am__append_182) $(am__append_185) -enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_5) \ + $(am__append_158) $(cairo_image_cxx_sources) \ + $(cairo_recording_cxx_sources) $(am__append_162) \ + $(am__append_167) $(cairo_user_cxx_sources) $(am__append_171) \ + $(am__append_175) $(am__append_179) $(am__append_182) \ + $(am__append_185) +enabled_cairo_sources = $(cairo_sources) $(am__append_5) \ $(am__append_10) $(am__append_15) $(am__append_20) \ $(am__append_25) $(am__append_30) $(am__append_35) \ $(am__append_40) $(am__append_45) $(am__append_50) \ @@ -1392,26 +1415,10 @@ enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_5) \ $(am__append_115) $(am__append_120) $(am__append_125) \ $(am__append_130) $(am__append_135) $(am__append_140) \ $(am__append_145) $(am__append_150) $(am__append_155) \ - $(am__append_159) $(cairo_image_cxx_sources) \ - $(cairo_recording_cxx_sources) $(am__append_163) \ - $(am__append_168) $(cairo_user_cxx_sources) $(am__append_172) \ - $(am__append_176) $(am__append_180) $(am__append_183) \ - $(am__append_186) -enabled_cairo_sources = $(cairo_sources) $(am__append_6) \ - $(am__append_11) $(am__append_16) $(am__append_21) \ - $(am__append_26) $(am__append_31) $(am__append_36) \ - $(am__append_41) $(am__append_46) $(am__append_51) \ - $(am__append_56) $(am__append_61) $(am__append_66) \ - $(am__append_71) $(am__append_76) $(am__append_81) \ - $(am__append_86) $(am__append_91) $(am__append_96) \ - $(am__append_101) $(am__append_106) $(am__append_111) \ - $(am__append_116) $(am__append_121) $(am__append_126) \ - $(am__append_131) $(am__append_136) $(am__append_141) \ - $(am__append_146) $(am__append_151) $(am__append_156) \ - $(am__append_160) $(cairo_image_sources) \ - $(cairo_recording_sources) $(am__append_164) $(am__append_169) \ - $(cairo_user_sources) $(am__append_173) $(am__append_177) \ - $(am__append_181) $(am__append_184) $(am__append_187) + $(am__append_159) $(cairo_image_sources) \ + $(cairo_recording_sources) $(am__append_163) $(am__append_168) \ + $(cairo_user_sources) $(am__append_172) $(am__append_176) \ + $(am__append_180) $(am__append_183) $(am__append_186) all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-xcb.pc cairo-xlib-xcb.pc cairo-xcb-shm.pc cairo-qt.pc \ cairo-quartz.pc cairo-quartz-font.pc cairo-quartz-image.pc \ @@ -1422,18 +1429,19 @@ all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-script.pc cairo-ft.pc cairo-fc.pc cairo-ps.pc \ cairo-pdf.pc cairo-svg.pc cairo-tee.pc cairo-xml.pc \ cairo-gobject.pc -enabled_cairo_pkgconf = cairo.pc $(am__append_7) $(am__append_12) \ - $(am__append_17) $(am__append_22) $(am__append_27) \ - $(am__append_32) $(am__append_37) $(am__append_42) \ - $(am__append_47) $(am__append_52) $(am__append_57) \ - $(am__append_62) $(am__append_67) $(am__append_72) \ - $(am__append_77) $(am__append_82) $(am__append_87) \ - $(am__append_92) $(am__append_97) $(am__append_102) \ - $(am__append_107) $(am__append_112) $(am__append_117) \ - $(am__append_122) $(am__append_127) $(am__append_132) \ - $(am__append_137) $(am__append_142) $(am__append_147) \ - $(am__append_152) $(am__append_157) $(am__append_165) \ - $(am__append_170) $(am__append_178) +enabled_cairo_pkgconf = cairo.pc $(am__append_6) $(am__append_11) \ + $(am__append_16) $(am__append_21) $(am__append_26) \ + $(am__append_31) $(am__append_36) $(am__append_41) \ + $(am__append_46) $(am__append_51) $(am__append_56) \ + $(am__append_61) $(am__append_66) $(am__append_71) \ + $(am__append_76) $(am__append_81) $(am__append_86) \ + $(am__append_91) $(am__append_96) $(am__append_101) \ + $(am__append_106) $(am__append_111) $(am__append_116) \ + $(am__append_121) $(am__append_126) $(am__append_131) \ + $(am__append_136) $(am__append_141) $(am__append_146) \ + $(am__append_151) $(am__append_156) $(am__append_164) \ + $(am__append_169) $(am__append_177) +#MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features AM_CPPFLAGS = -I$(srcdir) $(CAIRO_CFLAGS) AM_LDFLAGS = $(CAIRO_LDFLAGS) @OS_WIN32_TRUE@export_symbols = -export-symbols cairo.def @@ -1715,8 +1723,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-ft-font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-composite.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-device.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-glyphs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-gradient.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-shaders.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-gl-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-glx-context.Plo@am__quote@ @@ -1727,6 +1737,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-image-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-lzw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-matrix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-mesh-pattern-rasterizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-misc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-mutex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-observer.Plo@am__quote@ @@ -1741,6 +1752,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-path.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pattern.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-operators.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-shading.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-png.Plo@am__quote@ @@ -1778,6 +1790,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-traps.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-truetype-subset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-type1-fallback.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-type1-glyph-names.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-type1-subset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-type3-glyph-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-unicode.Plo@am__quote@ @@ -1807,7 +1820,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xml-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-link.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glew.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fallback-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fallback16-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-null-surface.Plo@am__quote@ @@ -2006,14 +2018,6 @@ cairo-drm-gallium-surface.lo: drm/cairo-drm-gallium-surface.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cairo-drm-gallium-surface.lo `test -f 'drm/cairo-drm-gallium-surface.c' || echo '$(srcdir)/'`drm/cairo-drm-gallium-surface.c -glew.lo: glew/glew.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT glew.lo -MD -MP -MF $(DEPDIR)/glew.Tpo -c -o glew.lo `test -f 'glew/glew.c' || echo '$(srcdir)/'`glew/glew.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/glew.Tpo $(DEPDIR)/glew.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='glew/glew.c' object='glew.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o glew.lo `test -f 'glew/glew.c' || echo '$(srcdir)/'`glew/glew.c - .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po diff --git a/src/Makefile.sources b/src/Makefile.sources index b04d80f..c4ca001 100644 --- a/src/Makefile.sources +++ b/src/Makefile.sources @@ -55,6 +55,7 @@ cairo_private = \ cairo-analysis-surface-private.h \ cairo-arc-private.h \ cairo-atomic-private.h \ + cairo-box-private.h \ cairo-boxes-private.h \ cairo-cache-private.h \ cairo-clip-private.h \ @@ -74,7 +75,6 @@ cairo_private = \ cairo-image-info-private.h \ cairo-list-private.h \ cairo-malloc-private.h \ - cairo-recording-surface-private.h \ cairo-mutex-impl-private.h \ cairo-mutex-list-private.h \ cairo-mutex-private.h \ @@ -85,6 +85,7 @@ cairo_private = \ cairo-path-fixed-private.h \ cairo-path-private.h \ cairo-private.h \ + cairo-recording-surface-private.h \ cairo-reference-count-private.h \ cairo-region-private.h \ cairo-rtree-private.h \ @@ -136,7 +137,7 @@ cairo_sources = \ cairo-image-surface.c \ cairo-lzw.c \ cairo-matrix.c \ - cairo-recording-surface.c \ + cairo-mesh-pattern-rasterizer.c \ cairo-misc.c \ cairo-mutex.c \ cairo-observer.c \ @@ -151,6 +152,7 @@ cairo_sources = \ cairo-pattern.c \ cairo-pen.c \ cairo-polygon.c \ + cairo-recording-surface.c \ cairo-rectangle.c \ cairo-rectangular-scan-converter.c \ cairo-region.c \ @@ -188,6 +190,7 @@ _cairo_font_subset_sources = \ cairo-scaled-font-subsets.c \ cairo-truetype-subset.c \ cairo-type1-fallback.c \ + cairo-type1-glyph-names.c \ cairo-type1-subset.c \ cairo-type3-glyph-surface.c \ $(NULL) @@ -198,8 +201,8 @@ cairo_egl_sources = cairo_glx_sources = cairo_wgl_sources = -_cairo_pdf_operators_private = cairo-pdf-operators-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c +_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h +_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c cairo_private += $(_cairo_pdf_operators_private) cairo_sources += $(_cairo_pdf_operators_sources) @@ -312,19 +315,18 @@ cairo_beos_cxx_sources = cairo-beos-surface.cpp cairo_gl_headers = cairo-gl.h cairo_gl_private = cairo-gl-private.h \ - cairo-gl-gradient-private.h \ - glew/GL/glew.h \ - glew/GL/glxew.h + cairo-gl-dispatch-private.h \ + cairo-gl-ext-def-private.h \ + cairo-gl-gradient-private.h cairo_gl_sources = cairo-gl-composite.c \ cairo-gl-device.c \ + cairo-gl-dispatch.c \ cairo-gl-glyphs.c \ cairo-gl-gradient.c \ + cairo-gl-info.c \ cairo-gl-shaders.c \ cairo-gl-surface.c -if BUILD_PRIVATE_GLEW -cairo_gl_sources += glew/glew.c -endif cairo_egl_sources += cairo-egl-context.c cairo_glx_sources += cairo-glx-context.c diff --git a/src/cairo-arc.c b/src/cairo-arc.c index 1b2713f..c997e5c 100644 --- a/src/cairo-arc.c +++ b/src/cairo-arc.c @@ -38,6 +38,8 @@ #include "cairo-arc-private.h" +#define MAX_FULL_CIRCLES 65536 + /* Spline deviation from the circle in radius would be given by: error = sqrt (x**2 + y**2) - 1 @@ -184,8 +186,13 @@ _cairo_arc_in_direction (cairo_t *cr, if (cairo_status (cr)) return; - while (angle_max - angle_min > 4 * M_PI) - angle_max -= 2 * M_PI; + assert (angle_max >= angle_min); + + if (angle_max - angle_min > 2 * M_PI * MAX_FULL_CIRCLES) { + angle_max = fmod (angle_max - angle_min, 2 * M_PI); + angle_min = fmod (angle_min, 2 * M_PI); + angle_max += angle_min + 2 * M_PI * MAX_FULL_CIRCLES; + } /* Recurse if drawing arc larger than pi */ if (angle_max - angle_min > M_PI) { diff --git a/src/cairo-array.c b/src/cairo-array.c index 942c9b9..52b283f 100644 --- a/src/cairo-array.c +++ b/src/cairo-array.c @@ -1,3 +1,4 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ /* cairo - a vector graphics library with display and print output * * Copyright © 2004 Red Hat, Inc @@ -53,35 +54,12 @@ * called to free resources allocated during use of the array. **/ void -_cairo_array_init (cairo_array_t *array, int element_size) +_cairo_array_init (cairo_array_t *array, unsigned int element_size) { array->size = 0; array->num_elements = 0; array->element_size = element_size; array->elements = NULL; - - array->is_snapshot = FALSE; -} - -/** - * _cairo_array_init_snapshot: - * @array: A #cairo_array_t to be initialized as a snapshot - * @other: The #cairo_array_t from which to create the snapshot - * - * Initialize @array as an immutable copy of @other. It is an error to - * call an array-modifying function (other than _cairo_array_fini) on - * @array after calling this function. - **/ -void -_cairo_array_init_snapshot (cairo_array_t *array, - const cairo_array_t *other) -{ - array->size = other->size; - array->num_elements = other->num_elements; - array->element_size = other->element_size; - array->elements = other->elements; - - array->is_snapshot = TRUE; } /** @@ -95,13 +73,7 @@ _cairo_array_init_snapshot (cairo_array_t *array, void _cairo_array_fini (cairo_array_t *array) { - if (array->is_snapshot) - return; - - if (array->elements) { - free (* array->elements); - free (array->elements); - } + free (array->elements); } /** @@ -120,8 +92,6 @@ _cairo_array_grow_by (cairo_array_t *array, unsigned int additional) unsigned int required_size = array->num_elements + additional; unsigned int new_size; - assert (! array->is_snapshot); - /* check for integer overflow */ if (required_size > INT_MAX || required_size < array->num_elements) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -140,16 +110,8 @@ _cairo_array_grow_by (cairo_array_t *array, unsigned int additional) while (new_size < required_size) new_size = new_size * 2; - if (array->elements == NULL) { - array->elements = malloc (sizeof (char *)); - if (unlikely (array->elements == NULL)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - *array->elements = NULL; - } - array->size = new_size; - new_elements = _cairo_realloc_ab (*array->elements, + new_elements = _cairo_realloc_ab (array->elements, array->size, array->element_size); if (unlikely (new_elements == NULL)) { @@ -157,7 +119,7 @@ _cairo_array_grow_by (cairo_array_t *array, unsigned int additional) return _cairo_error (CAIRO_STATUS_NO_MEMORY); } - *array->elements = new_elements; + array->elements = new_elements; return CAIRO_STATUS_SUCCESS; } @@ -173,8 +135,6 @@ _cairo_array_grow_by (cairo_array_t *array, unsigned int additional) void _cairo_array_truncate (cairo_array_t *array, unsigned int num_elements) { - assert (! array->is_snapshot); - if (num_elements < array->num_elements) array->num_elements = num_elements; } @@ -207,7 +167,7 @@ _cairo_array_index (cairo_array_t *array, unsigned int index) /* We allow an index of 0 for the no-elements case. * This makes for cleaner calling code which will often look like: * - * elements = _cairo_array_index (array, num_elements); + * elements = _cairo_array_index (array, 0); * for (i=0; i < num_elements; i++) { * ... use elements[i] here ... * } @@ -220,7 +180,51 @@ _cairo_array_index (cairo_array_t *array, unsigned int index) assert (index < array->num_elements); - return (void *) &(*array->elements)[index * array->element_size]; + return array->elements + index * array->element_size; +} + +/** + * _cairo_array_index_const: + * @array: a #cairo_array_t + * Returns: A pointer to the object stored at @index. + * + * If the resulting value is assigned to a pointer to an object of the same + * element_size as initially passed to _cairo_array_init() then that + * pointer may be used for further direct indexing with []. For + * example: + * + * + * cairo_array_t array; + * const double *values; + * + * _cairo_array_init (&array, sizeof(double)); + * ... calls to _cairo_array_append() here ... + * + * values = _cairo_array_index_const (&array, 0); + * for (i = 0; i < _cairo_array_num_elements (&array); i++) + * ... read values[i] here ... + * + **/ +const void * +_cairo_array_index_const (const cairo_array_t *array, unsigned int index) +{ + /* We allow an index of 0 for the no-elements case. + * This makes for cleaner calling code which will often look like: + * + * elements = _cairo_array_index_const (array, 0); + * for (i=0; i < num_elements; i++) { + * ... read elements[i] here ... + * } + * + * which in the num_elements==0 case gets the NULL pointer here, + * but never dereferences it. + */ + if (index == 0 && array->num_elements == 0) + return NULL; + + assert (index < array->num_elements); + + return array->elements + index * array->element_size; } /** @@ -231,9 +235,11 @@ _cairo_array_index (cairo_array_t *array, unsigned int index) * location pointed to by @dst. **/ void -_cairo_array_copy_element (cairo_array_t *array, int index, void *dst) +_cairo_array_copy_element (const cairo_array_t *array, + unsigned int index, + void *dst) { - memcpy (dst, _cairo_array_index (array, index), array->element_size); + memcpy (dst, _cairo_array_index_const (array, index), array->element_size); } /** @@ -255,8 +261,6 @@ cairo_status_t _cairo_array_append (cairo_array_t *array, const void *element) { - assert (! array->is_snapshot); - return _cairo_array_append_multiple (array, element, 1); } @@ -275,13 +279,11 @@ _cairo_array_append (cairo_array_t *array, cairo_status_t _cairo_array_append_multiple (cairo_array_t *array, const void *elements, - int num_elements) + unsigned int num_elements) { cairo_status_t status; void *dest; - assert (! array->is_snapshot); - status = _cairo_array_allocate (array, num_elements, &dest); if (unlikely (status)) return status; @@ -311,15 +313,13 @@ _cairo_array_allocate (cairo_array_t *array, { cairo_status_t status; - assert (! array->is_snapshot); - status = _cairo_array_grow_by (array, num_elements); if (unlikely (status)) return status; assert (array->num_elements + num_elements <= array->size); - *elements = &(*array->elements)[array->num_elements * array->element_size]; + *elements = array->elements + array->num_elements * array->element_size; array->num_elements += num_elements; @@ -333,8 +333,8 @@ _cairo_array_allocate (cairo_array_t *array, * * This space was left intentionally blank, but gtk-doc filled it. **/ -int -_cairo_array_num_elements (cairo_array_t *array) +unsigned int +_cairo_array_num_elements (const cairo_array_t *array) { return array->num_elements; } @@ -347,8 +347,8 @@ _cairo_array_num_elements (cairo_array_t *array) * * This space was left intentionally blank, but gtk-doc filled it. **/ -int -_cairo_array_size (cairo_array_t *array) +unsigned int +_cairo_array_size (const cairo_array_t *array) { return array->size; } @@ -493,7 +493,7 @@ _cairo_user_data_array_set_data (cairo_user_data_array_t *array, cairo_status_t _cairo_user_data_array_copy (cairo_user_data_array_t *dst, - cairo_user_data_array_t *src) + const cairo_user_data_array_t *src) { /* discard any existing user-data */ if (dst->num_elements != 0) { @@ -501,11 +501,8 @@ _cairo_user_data_array_copy (cairo_user_data_array_t *dst, _cairo_user_data_array_init (dst); } - if (src->num_elements == 0) - return CAIRO_STATUS_SUCCESS; - return _cairo_array_append_multiple (dst, - _cairo_array_index (src, 0), + _cairo_array_index_const (src, 0), src->num_elements); } diff --git a/src/cairo-bentley-ottmann.c b/src/cairo-bentley-ottmann.c index b3819f2..d7b017a 100644 --- a/src/cairo-bentley-ottmann.c +++ b/src/cairo-bentley-ottmann.c @@ -1799,8 +1799,7 @@ _cairo_bentley_ottmann_tessellate_traps (cairo_traps_t *traps, dump_traps (traps, "bo-traps-in.txt"); #endif - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits); + _cairo_polygon_init (&polygon, traps->limits, traps->num_limits); for (i = 0; i < traps->num_traps; i++) { status = _cairo_polygon_add_line (&polygon, diff --git a/src/cairo-box-private.h b/src/cairo-box-private.h new file mode 100644 index 0000000..3bced99 --- /dev/null +++ b/src/cairo-box-private.h @@ -0,0 +1,75 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2010 Andrea Canciani + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * The Original Code is the cairo graphics library. + * + * Contributor(s): + * Andrea Canciani + */ + +#ifndef CAIRO_BOX_H +#define CAIRO_BOX_H + +#include "cairo-types-private.h" +#include "cairo-compiler-private.h" + +static inline void +_cairo_box_set (cairo_box_t *box, + const cairo_point_t *p1, + const cairo_point_t *p2) +{ + box->p1 = *p1; + box->p2 = *p2; +} + +/* assumes box->p1 is top-left, p2 bottom-right */ +static inline void +_cairo_box_add_point (cairo_box_t *box, + const cairo_point_t *point) +{ + if (point->x < box->p1.x) + box->p1.x = point->x; + else if (point->x > box->p2.x) + box->p2.x = point->x; + + if (point->y < box->p1.y) + box->p1.y = point->y; + else if (point->y > box->p2.y) + box->p2.y = point->y; +} + +/* assumes box->p1 is top-left, p2 bottom-right */ +static inline cairo_bool_t +_cairo_box_contains_point (cairo_box_t *box, + const cairo_point_t *point) +{ + return box->p1.x <= point->x && point->x <= box->p2.x && + box->p1.y <= point->y && point->y <= box->p2.y; +} + +#endif /* CAIRO_BOX_H */ diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c index a4a434f..f404412 100644 --- a/src/cairo-cff-subset.c +++ b/src/cairo-cff-subset.c @@ -36,7 +36,8 @@ /* * Useful links: - * http://www.adobe.com/devnet/font/pdfs/5176.CFF.pdf + * http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5176.CFF.pdf + * http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5177.Type2.pdf */ #define _BSD_SOURCE /* for snprintf(), strdup() */ @@ -75,6 +76,23 @@ #define NUM_STD_STRINGS 391 +/* Type 2 Charstring operators */ +#define TYPE2_hstem 0x0001 +#define TYPE2_vstem 0x0003 +#define TYPE2_callsubr 0x000a + +#define TYPE2_return 0x000b +#define TYPE2_endchar 0x000e + +#define TYPE2_hstemhm 0x0012 +#define TYPE2_hintmask 0x0013 +#define TYPE2_cntrmask 0x0014 +#define TYPE2_vstemhm 0x0017 +#define TYPE2_callgsubr 0x001d + +#define MAX_SUBROUTINE_NESTING 10 /* From Type2 Charstring spec */ + + typedef struct _cff_header { uint8_t major; uint8_t minor; @@ -119,6 +137,8 @@ typedef struct _cairo_cff_font { int num_glyphs; cairo_bool_t is_cid; int units_per_em; + int global_sub_bias; + int local_sub_bias; /* CID Font Data */ int *fdselect; @@ -126,15 +146,21 @@ typedef struct _cairo_cff_font { cairo_hash_table_t **fd_dict; cairo_hash_table_t **fd_private_dict; cairo_array_t *fd_local_sub_index; + int *fd_local_sub_bias; /* Subsetted Font Data */ char *subset_font_name; cairo_array_t charstrings_subset_index; cairo_array_t strings_subset_index; + int euro_sid; int *fdselect_subset; unsigned int num_subset_fontdicts; int *fd_subset_map; int *private_dict_offset; + cairo_bool_t subset_subroutines; + cairo_bool_t *global_subs_used; + cairo_bool_t *local_subs_used; + cairo_bool_t **fd_local_subs_used; cairo_array_t output; /* Subset Metrics */ @@ -142,6 +168,14 @@ typedef struct _cairo_cff_font { int x_min, y_min, x_max, y_max; int ascent, descent; + /* Type 2 charstring data */ + int type2_stack_size; + int type2_stack_top_value; + cairo_bool_t type2_stack_top_is_int; + int type2_num_hints; + int type2_hintmask_bytes; + int type2_nesting_level; + } cairo_cff_font_t; /* Encoded integer using maximum sized encoding. This is required for @@ -370,15 +404,32 @@ cff_index_write (cairo_array_t *index, cairo_array_t *output) for (i = 0; i < num_elem; i++) { element = _cairo_array_index (index, i); - status = _cairo_array_append_multiple (output, - element->data, - element->length); + if (element->length > 0) { + status = _cairo_array_append_multiple (output, + element->data, + element->length); + } if (unlikely (status)) return status; } return CAIRO_STATUS_SUCCESS; } +static void +cff_index_set_object (cairo_array_t *index, int obj_index, + unsigned char *object , int length) +{ + cff_index_element_t *element; + + element = _cairo_array_index (index, obj_index); + if (element->is_copy) + free (element->data); + + element->data = object; + element->length = length; + element->is_copy = FALSE; +} + static cairo_status_t cff_index_append (cairo_array_t *index, unsigned char *object , int length) { @@ -420,11 +471,11 @@ static void cff_index_fini (cairo_array_t *index) { cff_index_element_t *element; - int i; + unsigned int i; for (i = 0; i < _cairo_array_num_elements (index); i++) { element = _cairo_array_index (index, i); - if (element->is_copy) + if (element->is_copy && element->data) free (element->data); } _cairo_array_fini (index); @@ -716,6 +767,8 @@ static cairo_int_status_t cairo_cff_font_read_private_dict (cairo_cff_font_t *font, cairo_hash_table_t *private_dict, cairo_array_t *local_sub_index, + int *local_sub_bias, + cairo_bool_t **local_subs_used, unsigned char *ptr, int size) { @@ -726,6 +779,7 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t *font, int i; unsigned char *operand; unsigned char *p; + int num_subs; status = cff_dict_read (private_dict, ptr, size); if (unlikely (status)) @@ -739,13 +793,26 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t *font, if (unlikely (status)) return status; - /* Use maximum sized encoding to reserve space for later modification. */ - end_buf = encode_integer_max (buf, 0); - status = cff_dict_set_operands (private_dict, LOCAL_SUB_OP, buf, end_buf - buf); + /* Use maximum sized encoding to reserve space for later modification. */ + end_buf = encode_integer_max (buf, 0); + status = cff_dict_set_operands (private_dict, LOCAL_SUB_OP, buf, end_buf - buf); if (unlikely (status)) return status; + } + num_subs = _cairo_array_num_elements (local_sub_index); + *local_subs_used = calloc (num_subs, sizeof (cairo_bool_t)); + if (unlikely (*local_subs_used == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + if (num_subs < 1240) + *local_sub_bias = 107; + else if (num_subs < 33900) + *local_sub_bias = 1131; + else + *local_sub_bias = 32768; + return CAIRO_STATUS_SUCCESS; } @@ -820,6 +887,18 @@ cairo_cff_font_read_cid_fontdict (cairo_cff_font_t *font, unsigned char *ptr) goto fail; } + font->fd_local_sub_bias = calloc (sizeof (int), font->num_fontdicts); + if (unlikely (font->fd_local_sub_bias == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail; + } + + font->fd_local_subs_used = calloc (sizeof (cairo_bool_t *), font->num_fontdicts); + if (unlikely (font->fd_local_subs_used == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail; + } + for (i = 0; i < font->num_fontdicts; i++) { status = cff_dict_init (&font->fd_dict[i]); if (unlikely (status)) @@ -845,12 +924,14 @@ cairo_cff_font_read_cid_fontdict (cairo_cff_font_t *font, unsigned char *ptr) status = cairo_cff_font_read_private_dict (font, font->fd_private_dict[i], &font->fd_local_sub_index[i], + &font->fd_local_sub_bias[i], + &font->fd_local_subs_used[i], font->data + offset, size); if (unlikely (status)) goto fail; - /* Set integer operand to max value to use max size encoding to reserve + /* Set integer operand to max value to use max size encoding to reserve * space for any value later */ end_buf = encode_integer_max (buf, 0); end_buf = encode_integer_max (end_buf, 0); @@ -919,9 +1000,11 @@ cairo_cff_font_read_top_dict (cairo_cff_font_t *font) operand = cff_dict_get_operands (font->top_dict, PRIVATE_OP, &size); operand = decode_integer (operand, &size); decode_integer (operand, &offset); - status = cairo_cff_font_read_private_dict (font, + status = cairo_cff_font_read_private_dict (font, font->private_dict, &font->local_sub_index, + &font->local_sub_bias, + &font->local_subs_used, font->data + offset, size); if (unlikely (status)) @@ -936,22 +1019,36 @@ cairo_cff_font_read_top_dict (cairo_cff_font_t *font) goto fail; status = cff_dict_set_operands (font->top_dict, - FDSELECT_OP, buf, end_buf - buf); + CHARSET_OP, buf, end_buf - buf); if (unlikely (status)) goto fail; - status = cff_dict_set_operands (font->top_dict, - FDARRAY_OP, buf, end_buf - buf); - if (unlikely (status)) - goto fail; + if (font->scaled_font_subset->is_latin) { + status = cff_dict_set_operands (font->top_dict, + ENCODING_OP, buf, end_buf - buf); + if (unlikely (status)) + goto fail; - status = cff_dict_set_operands (font->top_dict, - CHARSET_OP, buf, end_buf - buf); - if (unlikely (status)) - goto fail; + /* Private has two operands - size and offset */ + end_buf = encode_integer_max (end_buf, 0); + cff_dict_set_operands (font->top_dict, PRIVATE_OP, buf, end_buf - buf); + if (unlikely (status)) + goto fail; + + } else { + status = cff_dict_set_operands (font->top_dict, + FDSELECT_OP, buf, end_buf - buf); + if (unlikely (status)) + goto fail; + + status = cff_dict_set_operands (font->top_dict, + FDARRAY_OP, buf, end_buf - buf); + if (unlikely (status)) + goto fail; - cff_dict_remove (font->top_dict, ENCODING_OP); - cff_dict_remove (font->top_dict, PRIVATE_OP); + cff_dict_remove (font->top_dict, ENCODING_OP); + cff_dict_remove (font->top_dict, PRIVATE_OP); + } /* Remove the unique identifier operators as the subsetted font is * not the same is the original font. */ @@ -973,7 +1070,26 @@ cairo_cff_font_read_strings (cairo_cff_font_t *font) static cairo_int_status_t cairo_cff_font_read_global_subroutines (cairo_cff_font_t *font) { - return cff_index_read (&font->global_sub_index, &font->current_ptr, font->data_end); + cairo_int_status_t status; + int num_subs; + + status = cff_index_read (&font->global_sub_index, &font->current_ptr, font->data_end); + if (unlikely (status)) + return status; + + num_subs = _cairo_array_num_elements (&font->global_sub_index); + font->global_subs_used = calloc (num_subs, sizeof(cairo_bool_t)); + if (unlikely (font->global_subs_used == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + if (num_subs < 1240) + font->global_sub_bias = 107; + else if (num_subs < 33900) + font->global_sub_bias = 1131; + else + font->global_sub_bias = 32768; + + return CAIRO_STATUS_SUCCESS; } typedef cairo_int_status_t @@ -1103,21 +1219,185 @@ cairo_cff_font_subset_dict_strings (cairo_cff_font_t *font, return CAIRO_STATUS_SUCCESS; } +static unsigned char * +type2_decode_integer (unsigned char *p, int *integer) +{ + if (*p == 28) { + *integer = p[1] << 8 | p[2]; + p += 3; + } else if (*p <= 246) { + *integer = *p++ - 139; + } else if (*p <= 250) { + *integer = (p[0] - 247) * 256 + p[1] + 108; + p += 2; + } else if (*p <= 254) { + *integer = -(p[0] - 251) * 256 - p[1] - 108; + p += 2; + } else { /* *p == 255 */ + /* This actually a 16.16 fixed-point number however we are not interested in + * the value of fixed-point numbers. */ + *integer = (p[1] << 24) | (p[2] << 16) | (p[3] << 8) | p[4]; + p += 5; + } + return p; +} + +/* Type 2 charstring parser for finding calls to local or global + * subroutines. When we find a subroutine operator, the subroutine is + * marked as in use and recursively followed. The subroutine number is + * the value on the top of the stack when the subroutine operator is + * executed. In most fonts the subroutine number is encoded in an + * integer immediately preceding the subroutine operator. However it + * is possible for the subroutine number on the stack to be the result + * of a computation (in which case there will be an operator preceding + * the subroutine operator). If this occurs, subroutine subsetting is + * disabled since we can't easily determine which subroutines are + * used. + */ +static cairo_status_t +cairo_cff_parse_charstring (cairo_cff_font_t *font, + unsigned char *charstring, int length, + int glyph_id) +{ + unsigned char *p = charstring; + unsigned char *end = charstring + length; + int integer; + int hint_bytes; + int sub_num; + cff_index_element_t *element; + int fd; + + while (p < end) { + if (*p == 28 || *p >= 32) { + /* Integer value */ + p = type2_decode_integer (p, &integer); + font->type2_stack_size++; + font->type2_stack_top_value = integer; + font->type2_stack_top_is_int = TRUE; + } else if (*p == TYPE2_hstem || *p == TYPE2_vstem || + *p == TYPE2_hstemhm || *p == TYPE2_vstemhm) { + /* Hint operator. The number of hints declared by the + * operator depends on the size of the stack. */ + font->type2_stack_top_is_int = FALSE; + font->type2_num_hints += font->type2_stack_size/2; + font->type2_stack_size = 0; + p++; + } else if (*p == TYPE2_hintmask || *p == TYPE2_cntrmask) { + /* Hintmask operator. These operators are followed by a + * variable length mask where the length depends on the + * number of hints declared. The first time this is called + * it is also an implicit vstem if there are arguments on + * the stack. */ + if (font->type2_hintmask_bytes == 0) { + font->type2_stack_top_is_int = FALSE; + font->type2_num_hints += font->type2_stack_size/2; + font->type2_stack_size = 0; + font->type2_hintmask_bytes = (font->type2_num_hints+7)/8; + } + + hint_bytes = font->type2_hintmask_bytes; + p++; + p += hint_bytes; + } else if (*p == TYPE2_callsubr) { + /* call to local subroutine */ + if (! font->type2_stack_top_is_int) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (++font->type2_nesting_level > MAX_SUBROUTINE_NESTING) + return CAIRO_INT_STATUS_UNSUPPORTED; + + p++; + font->type2_stack_top_is_int = FALSE; + font->type2_stack_size--; + if (font->is_cid) { + fd = font->fdselect[glyph_id]; + sub_num = font->type2_stack_top_value + font->fd_local_sub_bias[fd]; + element = _cairo_array_index (&font->fd_local_sub_index[fd], sub_num); + if (! font->fd_local_subs_used[fd][sub_num]) { + font->fd_local_subs_used[fd][sub_num] = TRUE; + cairo_cff_parse_charstring (font, element->data, element->length, glyph_id); + } + } else { + sub_num = font->type2_stack_top_value + font->local_sub_bias; + element = _cairo_array_index (&font->local_sub_index, sub_num); + if (! font->local_subs_used[sub_num]) { + font->local_subs_used[sub_num] = TRUE; + cairo_cff_parse_charstring (font, element->data, element->length, glyph_id); + } + } + font->type2_nesting_level--; + } else if (*p == TYPE2_callgsubr) { + /* call to global subroutine */ + if (! font->type2_stack_top_is_int) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (++font->type2_nesting_level > MAX_SUBROUTINE_NESTING) + return CAIRO_INT_STATUS_UNSUPPORTED; + + p++; + font->type2_stack_size--; + font->type2_stack_top_is_int = FALSE; + sub_num = font->type2_stack_top_value + font->global_sub_bias; + element = _cairo_array_index (&font->global_sub_index, sub_num); + if (! font->global_subs_used[sub_num]) { + font->global_subs_used[sub_num] = TRUE; + cairo_cff_parse_charstring (font, element->data, element->length, glyph_id); + } + font->type2_nesting_level--; + } else if (*p == 12) { + /* 2 byte instruction */ + p += 2; + font->type2_stack_top_is_int = FALSE; + } else { + /* 1 byte instruction */ + p++; + font->type2_stack_top_is_int = FALSE; + } + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +cairo_cff_find_subroutines_used (cairo_cff_font_t *font, + unsigned char *charstring, int length, + int glyph_id) +{ + font->type2_stack_size = 0; + font->type2_stack_top_value = 0;; + font->type2_stack_top_is_int = FALSE; + font->type2_num_hints = 0; + font->type2_hintmask_bytes = 0; + font->type2_nesting_level = 0; + + return cairo_cff_parse_charstring (font, charstring, length, glyph_id); +} + static cairo_status_t -cairo_cff_font_subset_charstrings (cairo_cff_font_t *font) +cairo_cff_font_subset_charstrings_and_subroutines (cairo_cff_font_t *font) { cff_index_element_t *element; unsigned int i; cairo_status_t status; + unsigned long glyph; + font->subset_subroutines = TRUE; for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - element = _cairo_array_index (&font->charstrings_index, - font->scaled_font_subset->glyphs[i]); + glyph = font->scaled_font_subset->glyphs[i]; + element = _cairo_array_index (&font->charstrings_index, glyph); status = cff_index_append (&font->charstrings_subset_index, element->data, element->length); if (unlikely (status)) return status; + + if (font->subset_subroutines) { + status = cairo_cff_find_subroutines_used (font, element->data, element->length, glyph); + if (status == CAIRO_INT_STATUS_UNSUPPORTED) { + font->subset_subroutines = FALSE; + } else if (unlikely (status)) + return status; + } } return CAIRO_STATUS_SUCCESS; @@ -1233,30 +1513,68 @@ cairo_cff_font_subset_strings (cairo_cff_font_t *font) return status; } +/* The Euro is the only the only character in the winansi encoding + * with a glyph name that is not a CFF standard string. As the strings + * are written before the charset, we need to check during the + * subsetting phase if the Euro glyph is required and add the + * glyphname to the list of strings to write out. + */ +static cairo_status_t +cairo_cff_font_add_euro_charset_string (cairo_cff_font_t *font) +{ + cairo_status_t status; + unsigned int i; + int ch; + const char *euro = "Euro"; + + for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { + ch = font->scaled_font_subset->to_latin_char[i]; + if (ch == 128) { + font->euro_sid = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); + status = cff_index_append_copy (&font->strings_subset_index, + (unsigned char *)euro, strlen(euro)); + return status; + } + } + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t cairo_cff_font_subset_font (cairo_cff_font_t *font) { cairo_status_t status; - status = cairo_cff_font_set_ros_strings (font); - if (unlikely (status)) - return status; + if (!font->scaled_font_subset->is_latin) { + status = cairo_cff_font_set_ros_strings (font); + if (unlikely (status)) + return status; + } - status = cairo_cff_font_subset_charstrings (font); + status = cairo_cff_font_subset_charstrings_and_subroutines (font); if (unlikely (status)) return status; - if (font->is_cid) - status = cairo_cff_font_subset_fontdict (font); - else - status = cairo_cff_font_create_cid_fontdict (font); - if (unlikely (status)) - return status; + if (!font->scaled_font_subset->is_latin) { + if (font->is_cid) + status = cairo_cff_font_subset_fontdict (font); + else + status = cairo_cff_font_create_cid_fontdict (font); + if (unlikely (status)) + return status; + } else { + font->private_dict_offset = malloc (sizeof (int)); + if (unlikely (font->private_dict_offset == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } status = cairo_cff_font_subset_strings (font); if (unlikely (status)) return status; + if (font->scaled_font_subset->is_latin) + status = cairo_cff_font_add_euro_charset_string (font); + return status; } @@ -1370,9 +1688,45 @@ cairo_cff_font_write_strings (cairo_cff_font_t *font) static cairo_status_t cairo_cff_font_write_global_subrs (cairo_cff_font_t *font) { + unsigned int i; + unsigned char return_op = TYPE2_return; + + /* poppler and fontforge don't like zero length subroutines so we + * replace unused subroutines with a 'return' instruction. */ + if (font->subset_subroutines) { + for (i = 0; i < _cairo_array_num_elements (&font->global_sub_index); i++) { + if (! font->global_subs_used[i]) + cff_index_set_object (&font->global_sub_index, i, &return_op, 1); + } + } + return cff_index_write (&font->global_sub_index, &font->output); } +static cairo_status_t +cairo_cff_font_write_encoding (cairo_cff_font_t *font) +{ + unsigned char buf[2]; + cairo_status_t status; + unsigned int i; + + cairo_cff_font_set_topdict_operator_to_cur_pos (font, ENCODING_OP); + buf[0] = 0; /* Format 0 */ + buf[1] = font->scaled_font_subset->num_glyphs - 1; + status = _cairo_array_append_multiple (&font->output, buf, 2); + if (unlikely (status)) + return status; + + for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { + unsigned char ch = font->scaled_font_subset->to_latin_char[i]; + status = _cairo_array_append (&font->output, &ch); + if (unlikely (status)) + return status; + } + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t cairo_cff_font_write_fdselect (cairo_cff_font_t *font) { @@ -1426,8 +1780,93 @@ cairo_cff_font_write_fdselect (cairo_cff_font_t *font) return CAIRO_STATUS_SUCCESS; } +/* Winansi to CFF standard strings mapping for characters 128 to 255 */ +static const int winansi_to_cff_std_string[] = { + /* 128 */ + 0, 0, 117, 101, 118, 121, 112, 113, + 126, 122, 192, 107, 142, 0, 199, 0, + /* 144 */ + 0, 65, 8, 105, 119, 116, 111, 137, + 127, 153, 221, 108, 148, 0, 228, 198, + /* 160 */ + 0, 96, 97, 98, 103, 100, 160, 102, + 131, 170, 139, 106, 151, 0, 165, 128, + /* 176 */ + 161, 156, 164, 169, 125, 152, 115, 114, + 133, 150, 143, 187, 158, 155, 163, 123, + /* 192 */ + 174, 171, 172, 176, 173, 175, 138, 177, + 181, 178, 179, 180, 185, 182, 183, 184, + /* 208 */ + 154, 186, 190, 187, 188, 191, 189, 168, + 141, 196, 193, 194, 195, 197, 157, 149, + /* 224 */ + 203, 200, 201, 205, 202, 204, 144, 206, + 210, 207, 208, 209, 214, 211, 212, 213, + /* 240 */ + 167, 215, 219, 216, 217, 220, 218, 159, + 147, 225, 222, 223, 224, 226, 162, 227, +}; + +static int +cairo_cff_font_get_sid_for_winansi_char (cairo_cff_font_t *font, int ch) +{ + int sid; + + if (ch == 39) { + sid = 104; + + } else if (ch == 96) { + sid = 124; + + } else if (ch >= 32 && ch <= 126) { + sid = ch - 31; + + } else if (ch == 128) { + assert (font->euro_sid >= NUM_STD_STRINGS); + sid = font->euro_sid; + + } else if (ch >= 128 && ch <= 255) { + sid = winansi_to_cff_std_string[ch - 128]; + + } else { + sid = 0; + } + + return sid; +} + +static cairo_status_t +cairo_cff_font_write_type1_charset (cairo_cff_font_t *font) +{ + unsigned char format = 0; + unsigned int i; + int ch, sid; + cairo_status_t status; + uint16_t sid_be16; + + cairo_cff_font_set_topdict_operator_to_cur_pos (font, CHARSET_OP); + status = _cairo_array_append (&font->output, &format); + if (unlikely (status)) + return status; + + for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { + ch = font->scaled_font_subset->to_latin_char[i]; + sid = cairo_cff_font_get_sid_for_winansi_char (font, ch); + if (unlikely (status)) + return status; + + sid_be16 = cpu_to_be16(sid); + status = _cairo_array_append_multiple (&font->output, &sid_be16, sizeof(sid_be16)); + if (unlikely (status)) + return status; + } + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t -cairo_cff_font_write_charset (cairo_cff_font_t *font) +cairo_cff_font_write_cid_charset (cairo_cff_font_t *font) { unsigned char byte; uint16_t word; @@ -1499,9 +1938,9 @@ cairo_cff_font_write_cid_fontdict (cairo_cff_font_t *font) static cairo_status_t cairo_cff_font_write_private_dict (cairo_cff_font_t *font, - int dict_num, - cairo_hash_table_t *parent_dict, - cairo_hash_table_t *private_dict) + int dict_num, + cairo_hash_table_t *parent_dict, + cairo_hash_table_t *private_dict) { int offset; int size; @@ -1532,7 +1971,8 @@ static cairo_status_t cairo_cff_font_write_local_sub (cairo_cff_font_t *font, int dict_num, cairo_hash_table_t *private_dict, - cairo_array_t *local_sub_index) + cairo_array_t *local_sub_index, + cairo_bool_t *local_subs_used) { int offset; int size; @@ -1540,6 +1980,8 @@ cairo_cff_font_write_local_sub (cairo_cff_font_t *font, unsigned char *buf_end; unsigned char *p; cairo_status_t status; + unsigned int i; + unsigned char return_op = TYPE2_return; if (_cairo_array_num_elements (local_sub_index) > 0) { /* Write local subroutines and update offset in private @@ -1551,6 +1993,16 @@ cairo_cff_font_write_local_sub (cairo_cff_font_t *font, assert (offset > 0); p = _cairo_array_index (&font->output, offset); memcpy (p, buf, buf_end - buf); + + /* poppler and fontforge don't like zero length subroutines so + * we replace unused subroutines with a 'return' instruction. + */ + if (font->subset_subroutines) { + for (i = 0; i < _cairo_array_num_elements (local_sub_index); i++) { + if (! local_subs_used[i]) + cff_index_set_object (local_sub_index, i, &return_op, 1); + } + } status = cff_index_write (local_sub_index, &font->output); if (unlikely (status)) return status; @@ -1582,7 +2034,8 @@ cairo_cff_font_write_cid_private_dict_and_local_sub (cairo_cff_font_t *font) font, i, font->fd_private_dict[font->fd_subset_map[i]], - &font->fd_local_sub_index[font->fd_subset_map[i]]); + &font->fd_local_sub_index[font->fd_subset_map[i]], + font->fd_local_subs_used[font->fd_subset_map[i]]); if (unlikely (status)) return status; } @@ -1597,7 +2050,8 @@ cairo_cff_font_write_cid_private_dict_and_local_sub (cairo_cff_font_t *font) status = cairo_cff_font_write_local_sub (font, 0, font->private_dict, - &font->local_sub_index); + &font->local_sub_index, + font->local_subs_used); if (unlikely (status)) return status; } @@ -1605,32 +2059,76 @@ cairo_cff_font_write_cid_private_dict_and_local_sub (cairo_cff_font_t *font) return CAIRO_STATUS_SUCCESS; } +static cairo_status_t +cairo_cff_font_write_type1_private_dict_and_local_sub (cairo_cff_font_t *font) +{ + cairo_int_status_t status; + + status = cairo_cff_font_write_private_dict (font, + 0, + font->top_dict, + font->private_dict); + if (unlikely (status)) + return status; + + status = cairo_cff_font_write_local_sub (font, + 0, + font->private_dict, + &font->local_sub_index, + font->local_subs_used); + if (unlikely (status)) + return status; + + return CAIRO_STATUS_SUCCESS; +} + + typedef cairo_status_t (*font_write_t) (cairo_cff_font_t *font); -static const font_write_t font_write_funcs[] = { +static const font_write_t font_write_cid_funcs[] = { cairo_cff_font_write_header, cairo_cff_font_write_name, cairo_cff_font_write_top_dict, cairo_cff_font_write_strings, cairo_cff_font_write_global_subrs, - cairo_cff_font_write_charset, + cairo_cff_font_write_cid_charset, cairo_cff_font_write_fdselect, cairo_cff_font_write_charstrings, cairo_cff_font_write_cid_fontdict, cairo_cff_font_write_cid_private_dict_and_local_sub, }; +static const font_write_t font_write_type1_funcs[] = { + cairo_cff_font_write_header, + cairo_cff_font_write_name, + cairo_cff_font_write_top_dict, + cairo_cff_font_write_strings, + cairo_cff_font_write_global_subrs, + cairo_cff_font_write_encoding, + cairo_cff_font_write_type1_charset, + cairo_cff_font_write_charstrings, + cairo_cff_font_write_type1_private_dict_and_local_sub, +}; + static cairo_status_t cairo_cff_font_write_subset (cairo_cff_font_t *font) { cairo_int_status_t status; unsigned int i; - for (i = 0; i < ARRAY_LENGTH (font_write_funcs); i++) { - status = font_write_funcs[i] (font); - if (unlikely (status)) - return status; + if (font->scaled_font_subset->is_latin) { + for (i = 0; i < ARRAY_LENGTH (font_write_type1_funcs); i++) { + status = font_write_type1_funcs[i] (font); + if (unlikely (status)) + return status; + } + } else { + for (i = 0; i < ARRAY_LENGTH (font_write_cid_funcs); i++) { + status = font_write_cid_funcs[i] (font); + if (unlikely (status)) + return status; + } } return CAIRO_STATUS_SUCCESS; @@ -1725,6 +2223,10 @@ _cairo_cff_font_create (cairo_scaled_font_subset_t *scaled_font_subset, if (!backend->load_truetype_table) return CAIRO_INT_STATUS_UNSUPPORTED; + /* We need to use a fallback font generated from the synthesized outlines. */ + if (backend->is_synthetic && backend->is_synthetic (scaled_font_subset->scaled_font)) + return CAIRO_INT_STATUS_UNSUPPORTED; + data_length = 0; status = backend->load_truetype_table( scaled_font_subset->scaled_font, TT_TAG_CFF, 0, NULL, &data_length); @@ -1836,13 +2338,18 @@ _cairo_cff_font_create (cairo_scaled_font_subset_t *scaled_font_subset, cff_index_init (&font->local_sub_index); cff_index_init (&font->charstrings_subset_index); cff_index_init (&font->strings_subset_index); + font->euro_sid = 0; font->fdselect = NULL; font->fd_dict = NULL; font->fd_private_dict = NULL; font->fd_local_sub_index = NULL; + font->fd_local_sub_bias = NULL; font->fdselect_subset = NULL; font->fd_subset_map = NULL; font->private_dict_offset = NULL; + font->global_subs_used = NULL; + font->local_subs_used = NULL; + font->fd_local_subs_used = NULL; *font_return = font; @@ -1895,6 +2402,10 @@ cairo_cff_font_destroy (cairo_cff_font_t *font) } free (font->fd_dict); } + if (font->global_subs_used) + free (font->global_subs_used); + if (font->local_subs_used) + free (font->local_subs_used); if (font->fd_subset_map) free (font->fd_subset_map); if (font->private_dict_offset) @@ -1917,6 +2428,16 @@ cairo_cff_font_destroy (cairo_cff_font_t *font) cff_index_fini (&font->fd_local_sub_index[i]); free (font->fd_local_sub_index); } + if (font->fd_local_sub_bias) + free (font->fd_local_sub_bias); + if (font->fd_local_subs_used) { + for (i = 0; i < font->num_fontdicts; i++) { + if (font->fd_local_subs_used[i]) + free (font->fd_local_subs_used[i]); + } + free (font->fd_local_subs_used); + } + } if (font->data) @@ -2011,6 +2532,93 @@ _cairo_cff_subset_fini (cairo_cff_subset_t *subset) free (subset->data); } +cairo_bool_t +_cairo_cff_scaled_font_is_cid_cff (cairo_scaled_font_t *scaled_font) +{ + const cairo_scaled_font_backend_t *backend; + cairo_status_t status; + unsigned char *data; + unsigned long data_length; + unsigned char *current_ptr; + unsigned char *data_end; + cff_header_t *header; + cff_index_element_t *element; + cairo_hash_table_t *top_dict; + cairo_array_t index; + int size; + cairo_bool_t is_cid = FALSE; + + backend = scaled_font->backend; + if (!backend->load_truetype_table) + return FALSE; + + /* check for CFF font */ + data_length = 0; + status = backend->load_truetype_table(scaled_font, + TT_TAG_CFF, 0, NULL, &data_length); + if (status) + return FALSE; + + /* load CFF data */ + data = malloc (data_length); + if (unlikely (data == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + return FALSE; + } + + status = backend->load_truetype_table (scaled_font, TT_TAG_CFF, + 0, data, &data_length); + if (unlikely (status)) + goto fail1; + + data_end = data + data_length; + + /* skip header */ + if (data_length < sizeof (cff_header_t)) + goto fail1; + + header = (cff_header_t *) data; + current_ptr = data + header->header_size; + + /* skip name */ + cff_index_init (&index); + status = cff_index_read (&index, ¤t_ptr, data_end); + cff_index_fini (&index); + + if (status) + goto fail1; + + /* read top dict */ + cff_index_init (&index); + status = cff_index_read (&index, ¤t_ptr, data_end); + if (unlikely (status)) + goto fail2; + + status = cff_dict_init (&top_dict); + if (unlikely (status)) + goto fail2; + + element = _cairo_array_index (&index, 0); + status = cff_dict_read (top_dict, element->data, element->length); + if (unlikely (status)) + goto fail3; + + /* check for ROS operator indicating a CID font */ + if (cff_dict_get_operands (top_dict, ROS_OP, &size) != NULL) + is_cid = TRUE; + +fail3: + cff_dict_fini (top_dict); + +fail2: + cff_index_fini (&index); + +fail1: + free (data); + + return is_cid; +} + static cairo_int_status_t _cairo_cff_font_fallback_create (cairo_scaled_font_subset_t *scaled_font_subset, cairo_cff_font_t **font_return, @@ -2075,6 +2683,8 @@ _cairo_cff_font_fallback_create (cairo_scaled_font_subset_t *scaled_font_subset cff_index_init (&font->local_sub_index); cff_index_init (&font->charstrings_subset_index); cff_index_init (&font->strings_subset_index); + font->global_subs_used = NULL; + font->local_subs_used = NULL; font->fdselect = NULL; font->fd_dict = NULL; font->fd_private_dict = NULL; @@ -2113,8 +2723,9 @@ cairo_cff_font_fallback_generate (cairo_cff_font_t *font, cff_header_t header; cairo_array_t *charstring; unsigned char buf[40]; - unsigned char *end_buf; + unsigned char *end_buf, *end_buf2; unsigned int i; + int sid; /* Create header */ header.major = 1; @@ -2125,6 +2736,28 @@ cairo_cff_font_fallback_generate (cairo_cff_font_t *font, /* Create Top Dict */ font->is_cid = FALSE; + + snprintf((char*)buf, sizeof(buf), "CairoFont-%u-%u", + font->scaled_font_subset->font_id, + font->scaled_font_subset->subset_id); + sid = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); + status = cff_index_append_copy (&font->strings_subset_index, + (unsigned char *)buf, + strlen((char*)buf)); + if (unlikely (status)) + return status; + + end_buf = encode_integer (buf, sid); + status = cff_dict_set_operands (font->top_dict, FULLNAME_OP, + buf, end_buf - buf); + if (unlikely (status)) + return status; + + status = cff_dict_set_operands (font->top_dict, FAMILYNAME_OP, + buf, end_buf - buf); + if (unlikely (status)) + return status; + end_buf = encode_integer (buf, type2_subset->x_min); end_buf = encode_integer (end_buf, type2_subset->y_min); end_buf = encode_integer (end_buf, type2_subset->x_max); @@ -2140,29 +2773,50 @@ cairo_cff_font_fallback_generate (cairo_cff_font_t *font, if (unlikely (status)) return status; - status = cff_dict_set_operands (font->top_dict, - FDSELECT_OP, buf, end_buf - buf); - if (unlikely (status)) - return status; - status = cff_dict_set_operands (font->top_dict, - FDARRAY_OP, buf, end_buf - buf); - if (unlikely (status)) - return status; + if (font->scaled_font_subset->is_latin) { + status = cff_dict_set_operands (font->top_dict, + ENCODING_OP, buf, end_buf - buf); + if (unlikely (status)) + return status; + + /* Private has two operands - size and offset */ + end_buf2 = encode_integer_max (end_buf, 0); + cff_dict_set_operands (font->top_dict, PRIVATE_OP, buf, end_buf2 - buf); + if (unlikely (status)) + return status; + + } else { + status = cff_dict_set_operands (font->top_dict, + FDSELECT_OP, buf, end_buf - buf); + if (unlikely (status)) + return status; + + status = cff_dict_set_operands (font->top_dict, + FDARRAY_OP, buf, end_buf - buf); + if (unlikely (status)) + return status; + } status = cff_dict_set_operands (font->top_dict, CHARSET_OP, buf, end_buf - buf); if (unlikely (status)) return status; - status = cairo_cff_font_set_ros_strings (font); - if (unlikely (status)) - return status; + if (!font->scaled_font_subset->is_latin) { + status = cairo_cff_font_set_ros_strings (font); + if (unlikely (status)) + return status; - /* Create CID FD dictionary */ - status = cairo_cff_font_create_cid_fontdict (font); - if (unlikely (status)) - return status; + /* Create CID FD dictionary */ + status = cairo_cff_font_create_cid_fontdict (font); + if (unlikely (status)) + return status; + } else { + font->private_dict_offset = malloc (sizeof (int)); + if (unlikely (font->private_dict_offset == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } /* Create charstrings */ for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { @@ -2176,6 +2830,9 @@ cairo_cff_font_fallback_generate (cairo_cff_font_t *font, return status; } + if (font->scaled_font_subset->is_latin) + status = cairo_cff_font_add_euro_charset_string (font); + status = cairo_cff_font_write_subset (font); if (unlikely (status)) return status; @@ -2241,7 +2898,6 @@ _cairo_cff_fallback_init (cairo_cff_subset_t *cff_subset, memcpy (cff_subset->data, data, length); cff_subset->data_length = length; - cff_subset->data_length = length; _cairo_type2_charstrings_fini (&type2_subset); cairo_cff_font_destroy (font); diff --git a/src/cairo-clip.c b/src/cairo-clip.c index d5a2fab..696c5b1 100644 --- a/src/cairo-clip.c +++ b/src/cairo-clip.c @@ -229,7 +229,7 @@ _cairo_clip_intersect_path (cairo_clip_t *clip, if (clip->path != NULL) { if (clip->path->fill_rule == fill_rule && - (path->is_rectilinear || tolerance == clip->path->tolerance) && + (_cairo_path_fixed_fill_is_rectilinear (path) || tolerance == clip->path->tolerance) && antialias == clip->path->antialias && _cairo_path_fixed_equal (&clip->path->path, path)) { @@ -553,7 +553,7 @@ static inline cairo_bool_t _clip_paths_are_rectilinear (cairo_clip_path_t *clip_path) { while (clip_path != NULL) { - if (! clip_path->path.is_rectilinear) + if (! _cairo_path_fixed_fill_is_rectilinear (&clip_path->path)) return FALSE; clip_path = clip_path->prev; @@ -578,7 +578,7 @@ _cairo_clip_path_to_region_geometric (cairo_clip_path_t *clip_path) goto UNSUPPORTED; /* Start simple... Intersect some boxes with an arbitrary path. */ - if (! clip_path->path.is_rectilinear) + if (! _cairo_path_fixed_fill_is_rectilinear (&clip_path->path)) goto UNSUPPORTED; if (clip_path->prev->prev != NULL) goto UNSUPPORTED; @@ -651,7 +651,7 @@ _cairo_clip_path_to_region (cairo_clip_path_t *clip_path) CAIRO_STATUS_SUCCESS; } - if (! clip_path->path.maybe_fill_region) + if (! _cairo_path_fixed_fill_maybe_region (&clip_path->path)) return _cairo_clip_path_to_region_geometric (clip_path); /* first retrieve the region for our antecedents */ @@ -786,8 +786,7 @@ _rectilinear_clip_to_boxes (const cairo_path_fixed_t *path, _cairo_traps_init (&traps); _cairo_traps_limit (&traps, *boxes, *num_boxes); - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, *boxes, *num_boxes); + _cairo_polygon_init (&polygon, *boxes, *num_boxes); status = _cairo_path_fixed_fill_rectilinear_to_traps (path, fill_rule, @@ -961,7 +960,7 @@ _cairo_clip_path_get_surface (cairo_clip_path_t *clip_path, while (clip_path->prev != NULL && clip_path->flags & CAIRO_CLIP_PATH_IS_BOX && - clip_path->path.maybe_fill_region) + _cairo_path_fixed_fill_maybe_region (&clip_path->path)) { clip_path = clip_path->prev; } @@ -989,7 +988,7 @@ _cairo_clip_path_get_surface (cairo_clip_path_t *clip_path, need_translate = clip_extents->x | clip_extents->y; if (clip_path->flags & CAIRO_CLIP_PATH_IS_BOX && - clip_path->path.maybe_fill_region) + _cairo_path_fixed_fill_maybe_region (&clip_path->path)) { status = _cairo_surface_paint (surface, CAIRO_OPERATOR_SOURCE, @@ -1033,11 +1032,11 @@ _cairo_clip_path_get_surface (cairo_clip_path_t *clip_path, prev = clip_path->prev; while (prev != NULL) { if (prev->flags & CAIRO_CLIP_PATH_IS_BOX && - prev->path.maybe_fill_region) + _cairo_path_fixed_fill_maybe_region (&prev->path)) { /* a simple box only affects the extents */ } - else if (prev->path.is_rectilinear || + else if (_cairo_path_fixed_fill_is_rectilinear (&prev->path) || prev->surface == NULL || prev->surface->backend != target->backend) { @@ -1110,8 +1109,9 @@ _cairo_clip_contains_rectangle (cairo_clip_t *clip, { cairo_clip_path_t *clip_path; + /* clip == NULL means no clip, so the clip contains everything */ if (clip == NULL) - return FALSE; + return TRUE; clip_path = clip->path; if (clip_path->extents.x > rect->x || @@ -1149,9 +1149,6 @@ _cairo_clip_contains_extents (cairo_clip_t *clip, { const cairo_rectangle_int_t *rect; - if (clip == NULL) - return FALSE; - rect = extents->is_bounded ? &extents->bounded : &extents->unbounded; return _cairo_clip_contains_rectangle (clip, rect); } @@ -1233,7 +1230,7 @@ _cairo_clip_combine_with_surface (cairo_clip_t *clip, } if (clip_path->flags & CAIRO_CLIP_PATH_IS_BOX && - clip_path->path.maybe_fill_region) + _cairo_path_fixed_fill_maybe_region (&clip_path->path)) { continue; } @@ -1558,7 +1555,7 @@ _cairo_clip_copy_rectangle_list (cairo_clip_t *clip, cairo_gstate_t *gstate) /** * cairo_rectangle_list_destroy: - * @rectangle_list: a rectangle list, as obtained from cairo_copy_clip_rectangles() + * @rectangle_list: a rectangle list, as obtained from cairo_copy_clip_rectangle_list() * * Unconditionally frees @rectangle_list and all associated * references. After this call, the @rectangle_list pointer must not diff --git a/src/cairo-debug.c b/src/cairo-debug.c index c956753..b8bdfd1 100644 --- a/src/cairo-debug.c +++ b/src/cairo-debug.c @@ -69,6 +69,10 @@ cairo_debug_reset_static_data (void) _cairo_ft_font_reset_static_data (); #endif +#if CAIRO_HAS_WIN32_FONT + _cairo_win32_font_reset_static_data (); +#endif + _cairo_intern_string_reset_static_data (); _cairo_scaled_font_reset_static_data (); @@ -236,7 +240,6 @@ _cairo_debug_print_path (FILE *stream, cairo_path_fixed_t *path) _cairo_fixed_to_double (path->extents.p2.y)); status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _print_move_to, _print_line_to, _print_curve_to, diff --git a/src/cairo-device.c b/src/cairo-device.c index 15b0484..a32b971 100644 --- a/src/cairo-device.c +++ b/src/cairo-device.c @@ -156,6 +156,7 @@ _cairo_device_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_WEIGHT: case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: case CAIRO_STATUS_INVALID_CONTENT: + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_device_t *) &_nil_device; diff --git a/src/cairo-egl-context.c b/src/cairo-egl-context.c index a4ec281..b4c18fc 100644 --- a/src/cairo-egl-context.c +++ b/src/cairo-egl-context.c @@ -179,6 +179,12 @@ cairo_egl_device_create (EGLDisplay dpy, EGLContext egl) } } + status = _cairo_gl_dispatch_init (&ctx->base.dispatch, eglGetProcAddress); + if (unlikely (status)) { + free (ctx); + return _cairo_gl_context_create_in_error (status); + } + status = _cairo_gl_context_init (&ctx->base); if (unlikely (status)) { if (ctx->dummy_surface != EGL_NO_SURFACE) diff --git a/src/cairo-font-face.c b/src/cairo-font-face.c index a66054e..e379b25 100644 --- a/src/cairo-font-face.c +++ b/src/cairo-font-face.c @@ -49,11 +49,11 @@ * * #cairo_font_face_t represents a particular font at a particular weight, * slant, and other characteristic but no size, transformation, or size. - * + * * Font faces are created using font-backend-specific * constructors, typically of the form - * cairo_backend_font_face_create(), or implicitly - * using the toy text API by way of + * cairo_backend_font_face_create(), + * or implicitly using the toy text API by way of * cairo_select_font_face(). The resulting face can be accessed using * cairo_get_font_face(). */ diff --git a/src/cairo-font-options.c b/src/cairo-font-options.c index b472a30..521d371 100644 --- a/src/cairo-font-options.c +++ b/src/cairo-font-options.c @@ -54,7 +54,8 @@ static const cairo_font_options_t _cairo_font_options_nil = { CAIRO_SUBPIXEL_ORDER_DEFAULT, CAIRO_LCD_FILTER_DEFAULT, CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_METRICS_DEFAULT + CAIRO_HINT_METRICS_DEFAULT, + CAIRO_ROUND_GLYPH_POS_DEFAULT }; /** @@ -71,6 +72,7 @@ _cairo_font_options_init_default (cairo_font_options_t *options) options->lcd_filter = CAIRO_LCD_FILTER_DEFAULT; options->hint_style = CAIRO_HINT_STYLE_DEFAULT; options->hint_metrics = CAIRO_HINT_METRICS_DEFAULT; + options->round_glyph_positions = CAIRO_ROUND_GLYPH_POS_DEFAULT; } void @@ -82,6 +84,7 @@ _cairo_font_options_init_copy (cairo_font_options_t *options, options->lcd_filter = other->lcd_filter; options->hint_style = other->hint_style; options->hint_metrics = other->hint_metrics; + options->round_glyph_positions = other->round_glyph_positions; } /** @@ -189,7 +192,7 @@ slim_hidden_def (cairo_font_options_status); * Merges non-default options from @other into @options, replacing * existing values. This operation can be thought of as somewhat * similar to compositing @other onto @options with the operation - * of %CAIRO_OPERATION_OVER. + * of %CAIRO_OPERATOR_OVER. **/ void cairo_font_options_merge (cairo_font_options_t *options, @@ -211,6 +214,8 @@ cairo_font_options_merge (cairo_font_options_t *options, options->hint_style = other->hint_style; if (other->hint_metrics != CAIRO_HINT_METRICS_DEFAULT) options->hint_metrics = other->hint_metrics; + if (other->round_glyph_positions != CAIRO_ROUND_GLYPH_POS_DEFAULT) + options->round_glyph_positions = other->round_glyph_positions; } slim_hidden_def (cairo_font_options_merge); @@ -241,7 +246,8 @@ cairo_font_options_equal (const cairo_font_options_t *options, options->subpixel_order == other->subpixel_order && options->lcd_filter == other->lcd_filter && options->hint_style == other->hint_style && - options->hint_metrics == other->hint_metrics); + options->hint_metrics == other->hint_metrics && + options->round_glyph_positions == other->round_glyph_positions); } slim_hidden_def (cairo_font_options_equal); @@ -389,6 +395,45 @@ _cairo_font_options_get_lcd_filter (const cairo_font_options_t *options) return options->lcd_filter; } +/** + * _cairo_font_options_set_round_glyph_positions: + * @options: a #cairo_font_options_t + * @round: the new rounding value + * + * Sets the rounding options for the font options object. If rounding is set, a + * glyph's position will be rounded to integer values. + * + * Since: 1.12 + **/ +void +_cairo_font_options_set_round_glyph_positions (cairo_font_options_t *options, + cairo_round_glyph_positions_t round) +{ + if (cairo_font_options_status (options)) + return; + + options->round_glyph_positions = round; +} + +/** + * _cairo_font_options_get_round_glyph_positions: + * @options: a #cairo_font_options_t + * + * Gets the glyph position rounding option for the font options object. + * + * Return value: The round glyph posistions flag for the font options object. + * + * Since: 1.12 + **/ +cairo_round_glyph_positions_t +_cairo_font_options_get_round_glyph_positions (const cairo_font_options_t *options) +{ + if (cairo_font_options_status ((cairo_font_options_t *) options)) + return CAIRO_ROUND_GLYPH_POS_DEFAULT; + + return options->round_glyph_positions; +} + /** * cairo_font_options_set_hint_style: * @options: a #cairo_font_options_t diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index 67eb275..acb7121 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -2370,6 +2370,11 @@ _cairo_ft_load_truetype_table (void *abstract_font, FT_Face face; cairo_status_t status = CAIRO_INT_STATUS_UNSUPPORTED; + /* We don't support the FreeType feature of loading a table + * without specifying the size since this may overflow our + * buffer. */ + assert (length != NULL); + if (_cairo_ft_scaled_font_is_vertical (&scaled_font->base)) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -2378,9 +2383,13 @@ _cairo_ft_load_truetype_table (void *abstract_font, if (!face) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - if (FT_IS_SFNT (face) && - FT_Load_Sfnt_Table (face, tag, offset, buffer, length) == 0) - status = CAIRO_STATUS_SUCCESS; + if (FT_IS_SFNT (face)) { + if (buffer == NULL) + *length = 0; + + if (FT_Load_Sfnt_Table (face, tag, offset, buffer, length) == 0) + status = CAIRO_STATUS_SUCCESS; + } _cairo_ft_unscaled_font_unlock_face (unscaled); #endif @@ -2418,6 +2427,17 @@ _cairo_ft_index_to_ucs4(void *abstract_font, return CAIRO_STATUS_SUCCESS; } +static cairo_bool_t +_cairo_ft_is_synthetic (void *abstract_font) +{ + cairo_ft_scaled_font_t *scaled_font = abstract_font; + + if (scaled_font->ft_options.extra_flags & CAIRO_FT_OPTIONS_EMBOLDEN) + return TRUE; + else + return FALSE; +} + static const cairo_scaled_font_backend_t _cairo_ft_scaled_font_backend = { CAIRO_FONT_TYPE_FT, _cairo_ft_scaled_font_fini, @@ -2426,7 +2446,8 @@ static const cairo_scaled_font_backend_t _cairo_ft_scaled_font_backend = { _cairo_ft_ucs4_to_index, NULL, /* show_glyphs */ _cairo_ft_load_truetype_table, - _cairo_ft_index_to_ucs4 + _cairo_ft_index_to_ucs4, + _cairo_ft_is_synthetic }; /* #cairo_ft_font_face_t */ diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c index 5e3eb8f..5017f55 100644 --- a/src/cairo-gl-composite.c +++ b/src/cairo-gl-composite.c @@ -150,86 +150,96 @@ _cairo_gl_solid_operand_init (cairo_gl_operand_t *operand, static cairo_status_t _cairo_gl_gradient_operand_init (cairo_gl_operand_t *operand, + const cairo_pattern_t *pattern, cairo_gl_surface_t *dst, - const cairo_pattern_t *pattern) + int src_x, int src_y, + int dst_x, int dst_y) { const cairo_gradient_pattern_t *gradient = (const cairo_gradient_pattern_t *)pattern; cairo_status_t status; + assert (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR || + gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL); + if (! _cairo_gl_device_has_glsl (dst->base.device)) return CAIRO_INT_STATUS_UNSUPPORTED; + status = _cairo_gl_create_gradient_texture (dst, + gradient, + &operand->gradient.gradient); + if (unlikely (status)) + return status; + if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) gradient; - double x0, y0, x1, y1; + double x0, y0, dx, dy, sf, offset; - x0 = _cairo_fixed_to_double (linear->p1.x); - x1 = _cairo_fixed_to_double (linear->p2.x); - y0 = _cairo_fixed_to_double (linear->p1.y); - y1 = _cairo_fixed_to_double (linear->p2.y); + dx = linear->pd2.x - linear->pd1.x; + dy = linear->pd2.y - linear->pd1.y; + sf = 1.0 / (dx * dx + dy * dy); + dx *= sf; + dy *= sf; - status = _cairo_gl_create_gradient_texture (dst, - gradient, - &operand->linear.gradient); - if (unlikely (status)) - return status; - - /* Translation matrix from the destination fragment coordinates - * (pixels from lower left = 0,0) to the coordinates in the - */ - cairo_matrix_init_translate (&operand->linear.m, -x0, -y0); - cairo_matrix_multiply (&operand->linear.m, - &pattern->matrix, - &operand->linear.m); - cairo_matrix_translate (&operand->linear.m, 0, dst->height); - cairo_matrix_scale (&operand->linear.m, 1.0, -1.0); - - operand->linear.segment_x = x1 - x0; - operand->linear.segment_y = y1 - y0; - - operand->linear.extend = pattern->extend; + x0 = linear->pd1.x; + y0 = linear->pd1.y; + offset = dx * x0 + dy * y0; operand->type = CAIRO_GL_OPERAND_LINEAR_GRADIENT; - return CAIRO_STATUS_SUCCESS; - } else { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) gradient; - double x0, y0, r0, x1, y1, r1; - - x0 = _cairo_fixed_to_double (radial->c1.x); - x1 = _cairo_fixed_to_double (radial->c2.x); - y0 = _cairo_fixed_to_double (radial->c1.y); - y1 = _cairo_fixed_to_double (radial->c2.y); - r0 = _cairo_fixed_to_double (radial->r1); - r1 = _cairo_fixed_to_double (radial->r2); - - status = _cairo_gl_create_gradient_texture (dst, - gradient, - &operand->radial.gradient); - if (unlikely (status)) - return status; - /* Translation matrix from the destination fragment coordinates - * (pixels from lower left = 0,0) to the coordinates in the + cairo_matrix_init (&operand->gradient.m, dx, 0, dy, 1, -offset, 0); + if (! _cairo_matrix_is_identity (&pattern->matrix)) { + cairo_matrix_multiply (&operand->gradient.m, + &pattern->matrix, + &operand->gradient.m); + } + } else { + cairo_matrix_t m; + cairo_circle_double_t circles[2]; + double x0, y0, r0, dx, dy, dr; + + /* + * Some fragment shader implementations use half-floats to + * represent numbers, so the maximum number they can represent + * is about 2^14. Some intermediate computations used in the + * radial gradient shaders can produce results of up to 2*k^4. + * Setting k=8 makes the maximum result about 8192 (assuming + * that the extreme circles are not much smaller than the + * destination image). */ - cairo_matrix_init_translate (&operand->radial.m, -x0, -y0); - cairo_matrix_multiply (&operand->radial.m, - &pattern->matrix, - &operand->radial.m); - cairo_matrix_translate (&operand->radial.m, 0, dst->height); - cairo_matrix_scale (&operand->radial.m, 1.0, -1.0); + _cairo_gradient_pattern_fit_to_range (gradient, 8., + &operand->gradient.m, circles); + + x0 = circles[0].center.x; + y0 = circles[0].center.y; + r0 = circles[0].radius; + dx = circles[1].center.x - x0; + dy = circles[1].center.y - y0; + dr = circles[1].radius - r0; + + operand->gradient.a = dx * dx + dy * dy - dr * dr; + operand->gradient.radius_0 = r0; + operand->gradient.circle_d.center.x = dx; + operand->gradient.circle_d.center.y = dy; + operand->gradient.circle_d.radius = dr; + + if (operand->gradient.a == 0) + operand->type = CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0; + else if (pattern->extend == CAIRO_EXTEND_NONE) + operand->type = CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE; + else + operand->type = CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT; + + cairo_matrix_init_translate (&m, -x0, -y0); + cairo_matrix_multiply (&operand->gradient.m, + &operand->gradient.m, + &m); + } - operand->radial.circle_1_x = x1 - x0; - operand->radial.circle_1_y = y1 - y0; - operand->radial.radius_0 = r0; - operand->radial.radius_1 = r1; + cairo_matrix_translate (&operand->gradient.m, src_x - dst_x, src_y - dst_y); - operand->radial.extend = pattern->extend; + operand->gradient.extend = pattern->extend; - operand->type = CAIRO_GL_OPERAND_RADIAL_GRADIENT; - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; + return CAIRO_STATUS_SUCCESS; } static void @@ -239,10 +249,10 @@ _cairo_gl_operand_destroy (cairo_gl_operand_t *operand) case CAIRO_GL_OPERAND_CONSTANT: break; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - _cairo_gl_gradient_destroy (operand->linear.gradient); - break; - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: - _cairo_gl_gradient_destroy (operand->radial.gradient); + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + _cairo_gl_gradient_destroy (operand->gradient.gradient); break; case CAIRO_GL_OPERAND_TEXTURE: _cairo_pattern_release_surface (NULL, /* XXX */ @@ -276,13 +286,17 @@ _cairo_gl_operand_init (cairo_gl_operand_t *operand, &((cairo_solid_pattern_t *) pattern)->color); case CAIRO_PATTERN_TYPE_LINEAR: case CAIRO_PATTERN_TYPE_RADIAL: - status = _cairo_gl_gradient_operand_init (operand, dst, pattern); + status = _cairo_gl_gradient_operand_init (operand, + pattern, dst, + src_x, src_y, + dst_x, dst_y); if (status != CAIRO_INT_STATUS_UNSUPPORTED) return status; /* fall through */ default: + case CAIRO_PATTERN_TYPE_MESH: case CAIRO_PATTERN_TYPE_SURFACE: return _cairo_gl_pattern_texture_setup (operand, pattern, dst, @@ -367,44 +381,26 @@ _cairo_gl_operand_bind_to_shader (cairo_gl_context_t *ctx, operand->constant.color[2], operand->constant.color[3]); break; + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + strcpy (custom_part, "_a"); + _cairo_gl_shader_bind_float (ctx, + uniform_name, + operand->gradient.a); + /* fall through */ + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + strcpy (custom_part, "_circle_d"); + _cairo_gl_shader_bind_vec3 (ctx, + uniform_name, + operand->gradient.circle_d.center.x, + operand->gradient.circle_d.center.y, + operand->gradient.circle_d.radius); + strcpy (custom_part, "_radius_0"); + _cairo_gl_shader_bind_float (ctx, + uniform_name, + operand->gradient.radius_0); + /* fall through */ case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - strcpy (custom_part, "_matrix"); - _cairo_gl_shader_bind_matrix (ctx, - uniform_name, - &operand->linear.m); - strcpy (custom_part, "_segment"); - _cairo_gl_shader_bind_vec2 (ctx, - uniform_name, - operand->linear.segment_x, - operand->linear.segment_y); - strcpy (custom_part, "_sampler"); - _cairo_gl_shader_bind_texture(ctx, - uniform_name, - tex_unit); - break; - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: - strcpy (custom_part, "_matrix"); - _cairo_gl_shader_bind_matrix (ctx, - uniform_name, - &operand->radial.m); - strcpy (custom_part, "_circle_1"); - _cairo_gl_shader_bind_vec2 (ctx, - uniform_name, - operand->radial.circle_1_x, - operand->radial.circle_1_y); - strcpy (custom_part, "_radius_0"); - _cairo_gl_shader_bind_float (ctx, - uniform_name, - operand->radial.radius_0); - strcpy (custom_part, "_radius_1"); - _cairo_gl_shader_bind_float (ctx, - uniform_name, - operand->radial.radius_1); - strcpy (custom_part, "_sampler"); - _cairo_gl_shader_bind_texture(ctx, - uniform_name, - tex_unit); - break; case CAIRO_GL_OPERAND_TEXTURE: strcpy (custom_part, "_sampler"); _cairo_gl_shader_bind_texture(ctx, @@ -498,7 +494,9 @@ _cairo_gl_operand_setup_fixed (cairo_gl_operand_t *operand, default: ASSERT_NOT_REACHED; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: case CAIRO_GL_OPERAND_NONE: return; } @@ -561,7 +559,9 @@ _cairo_gl_operand_needs_setup (cairo_gl_operand_t *dest, dest->texture.attributes.filter != source->texture.attributes.filter || dest->texture.attributes.has_component_alpha != source->texture.attributes.has_component_alpha; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: /* XXX: improve this */ return TRUE; default: @@ -634,21 +634,21 @@ _cairo_gl_context_setup_operand (cairo_gl_context_t *ctx, glEnableClientState (GL_TEXTURE_COORD_ARRAY); break; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - _cairo_gl_gradient_reference (operand->linear.gradient); + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + _cairo_gl_gradient_reference (operand->gradient.gradient); glActiveTexture (GL_TEXTURE0 + tex_unit); - glBindTexture (GL_TEXTURE_1D, operand->linear.gradient->tex); - _cairo_gl_texture_set_extend (ctx, GL_TEXTURE_1D, operand->linear.extend); + glBindTexture (GL_TEXTURE_1D, operand->gradient.gradient->tex); + _cairo_gl_texture_set_extend (ctx, GL_TEXTURE_1D, operand->gradient.extend); _cairo_gl_texture_set_filter (ctx, GL_TEXTURE_1D, CAIRO_FILTER_BILINEAR); glEnable (GL_TEXTURE_1D); - break; - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: - _cairo_gl_gradient_reference (operand->radial.gradient); - glActiveTexture (GL_TEXTURE0 + tex_unit); - glBindTexture (GL_TEXTURE_1D, operand->radial.gradient->tex); - _cairo_gl_texture_set_extend (ctx, GL_TEXTURE_1D, operand->radial.extend); - _cairo_gl_texture_set_filter (ctx, GL_TEXTURE_1D, CAIRO_FILTER_BILINEAR); - glEnable (GL_TEXTURE_1D); - break; + + glClientActiveTexture (GL_TEXTURE0 + tex_unit); + glTexCoordPointer (2, GL_FLOAT, vertex_size, + (void *) (uintptr_t) vertex_offset); + glEnableClientState (GL_TEXTURE_COORD_ARRAY); + break; } if (! use_shaders) @@ -683,14 +683,14 @@ _cairo_gl_context_destroy_operand (cairo_gl_context_t *ctx, glDisableClientState (GL_TEXTURE_COORD_ARRAY); break; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - _cairo_gl_gradient_destroy (ctx->operands[tex_unit].linear.gradient); - glActiveTexture (GL_TEXTURE0 + tex_unit); - glDisable (GL_TEXTURE_1D); - break; - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: - _cairo_gl_gradient_destroy (ctx->operands[tex_unit].radial.gradient); + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + _cairo_gl_gradient_destroy (ctx->operands[tex_unit].gradient.gradient); glActiveTexture (GL_TEXTURE0 + tex_unit); glDisable (GL_TEXTURE_1D); + glClientActiveTexture (GL_TEXTURE0 + tex_unit); + glDisableClientState (GL_TEXTURE_COORD_ARRAY); break; } @@ -784,12 +784,14 @@ _cairo_gl_operand_get_vertex_size (cairo_gl_operand_type_t type) ASSERT_NOT_REACHED; case CAIRO_GL_OPERAND_NONE: case CAIRO_GL_OPERAND_CONSTANT: - case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: return 0; case CAIRO_GL_OPERAND_SPANS: return 4 * sizeof (GLbyte); case CAIRO_GL_OPERAND_TEXTURE: + case CAIRO_GL_OPERAND_LINEAR_GRADIENT: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: return 2 * sizeof (GLfloat); } } @@ -954,7 +956,7 @@ _cairo_gl_composite_begin (cairo_gl_composite_t *setup, _cairo_gl_context_set_destination (ctx, setup->dst); if (_cairo_gl_context_is_flushed (ctx)) { - glBindBufferARB (GL_ARRAY_BUFFER_ARB, ctx->vbo); + ctx->dispatch.BindBuffer (GL_ARRAY_BUFFER, ctx->vbo); glVertexPointer (2, GL_FLOAT, vertex_size, NULL); glEnableClientState (GL_VERTEX_ARRAY); @@ -1028,7 +1030,7 @@ _cairo_gl_composite_flush (cairo_gl_context_t *ctx) count = ctx->vb_offset / ctx->vertex_size; - glUnmapBufferARB (GL_ARRAY_BUFFER_ARB); + ctx->dispatch.UnmapBuffer (GL_ARRAY_BUFFER); ctx->vb = NULL; ctx->vb_offset = 0; @@ -1052,13 +1054,15 @@ static void _cairo_gl_composite_prepare_buffer (cairo_gl_context_t *ctx, unsigned int n_vertices) { + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + if (ctx->vb_offset + n_vertices * ctx->vertex_size > CAIRO_GL_VBO_SIZE) _cairo_gl_composite_flush (ctx); if (ctx->vb == NULL) { - glBufferDataARB (GL_ARRAY_BUFFER_ARB, CAIRO_GL_VBO_SIZE, - NULL, GL_STREAM_DRAW_ARB); - ctx->vb = glMapBufferARB (GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + dispatch->BufferData (GL_ARRAY_BUFFER, CAIRO_GL_VBO_SIZE, + NULL, GL_STREAM_DRAW); + ctx->vb = dispatch->MapBuffer (GL_ARRAY_BUFFER, GL_WRITE_ONLY); } } @@ -1075,8 +1079,6 @@ _cairo_gl_operand_emit (cairo_gl_operand_t *operand, ASSERT_NOT_REACHED; case CAIRO_GL_OPERAND_NONE: case CAIRO_GL_OPERAND_CONSTANT: - case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: break; case CAIRO_GL_OPERAND_SPANS: { @@ -1092,6 +1094,20 @@ _cairo_gl_operand_emit (cairo_gl_operand_t *operand, *(*vb)++ = fi.f; } break; + case CAIRO_GL_OPERAND_LINEAR_GRADIENT: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + { + double s = x; + double t = y; + + cairo_matrix_transform_point (&operand->gradient.m, &s, &t); + + *(*vb)++ = s; + *(*vb)++ = t; + } + break; case CAIRO_GL_OPERAND_TEXTURE: { cairo_surface_attributes_t *src_attributes = &operand->texture.attributes; diff --git a/src/cairo-gl-device.c b/src/cairo-gl-device.c index c39489c..048d48b 100644 --- a/src/cairo-gl-device.c +++ b/src/cairo-gl-device.c @@ -3,6 +3,7 @@ * Copyright © 2009 Eric Anholt * Copyright © 2009 Chris Wilson * Copyright © 2005,2010 Red Hat, Inc + * Copyright © 2010 Linaro Limited * * This library is free software; you can redistribute it and/or * modify it either under the terms of the GNU Lesser General Public @@ -36,6 +37,7 @@ * Carl Worth * Chris Wilson * Eric Anholt + * Alexandros Frantzis */ #include "cairoint.h" @@ -85,7 +87,7 @@ _gl_flush (void *device) ctx->pre_shader = NULL; _cairo_gl_set_shader (ctx, NULL); - glBindBufferARB (GL_ARRAY_BUFFER_ARB, 0); + ctx->dispatch.BindBuffer (GL_ARRAY_BUFFER, 0); glDisableClientState (GL_VERTEX_ARRAY); @@ -152,6 +154,8 @@ cairo_status_t _cairo_gl_context_init (cairo_gl_context_t *ctx) { cairo_status_t status; + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + int gl_version = _cairo_gl_get_version (); int n; _cairo_device_init (&ctx->base, &_cairo_gl_device_backend); @@ -159,43 +163,24 @@ _cairo_gl_context_init (cairo_gl_context_t *ctx) memset (ctx->glyph_cache, 0, sizeof (ctx->glyph_cache)); cairo_list_init (&ctx->fonts); - if (glewInit () != GLEW_OK) - return _cairo_error (CAIRO_STATUS_INVALID_FORMAT); /* XXX */ + /* Support only GL version >= 1.3 */ + if (gl_version < CAIRO_GL_VERSION_ENCODE (1, 3)) + return _cairo_error (CAIRO_STATUS_DEVICE_ERROR); - if (! GLEW_EXT_framebuffer_object || - ! GLEW_ARB_texture_env_combine || - ! GLEW_EXT_bgra) - { - fprintf (stderr, - "Required GL extensions not available:\n"); - if (! GLEW_EXT_framebuffer_object) - fprintf (stderr, " GL_EXT_framebuffer_object\n"); - if (! GLEW_ARB_texture_env_combine) - fprintf (stderr, " GL_ARB_texture_env_combine\n"); - if (! GLEW_ARB_vertex_buffer_object) - fprintf (stderr, " GL_ARB_vertex_buffer_object\n"); - - /* EXT_bgra is used in two places: - * - draw_image to upload common pixman formats without hand-swizzling. - * - get_image to download common pixman formats without hand-swizzling. - */ - if (! GLEW_EXT_bgra) - fprintf (stderr, " GL_EXT_bgra\n"); - - return _cairo_error (CAIRO_STATUS_INVALID_FORMAT); /* XXX */ - } + /* Check for required extensions */ + if (_cairo_gl_has_extension ("GL_ARB_texture_non_power_of_two")) + ctx->tex_target = GL_TEXTURE_2D; + else if (_cairo_gl_has_extension ("GL_ARB_texture_rectangle")) + ctx->tex_target = GL_TEXTURE_RECTANGLE; + else + return _cairo_error (CAIRO_STATUS_DEVICE_ERROR); - if (! GLEW_ARB_texture_non_power_of_two && - ! GLEW_ARB_texture_rectangle ) { - fprintf (stderr, - "Required GL extensions not available:\n"); - fprintf (stderr, " GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle\n"); - } + if (gl_version < CAIRO_GL_VERSION_ENCODE (2, 1) && + ! _cairo_gl_has_extension ("GL_ARB_pixel_buffer_object")) + return _cairo_error (CAIRO_STATUS_DEVICE_ERROR); - if (! GLEW_ARB_texture_non_power_of_two) - ctx->tex_target = GL_TEXTURE_RECTANGLE_EXT; - else - ctx->tex_target = GL_TEXTURE_2D; + ctx->has_mesa_pack_invert = + _cairo_gl_has_extension ("GL_MESA_pack_invert"); ctx->current_operator = -1; @@ -218,8 +203,8 @@ _cairo_gl_context_init (cairo_gl_context_t *ctx) GL_RGBA, GL_UNSIGNED_BYTE, NULL); /* PBO for any sort of texture upload */ - glGenBuffersARB (1, &ctx->texture_load_pbo); - glGenBuffersARB (1, &ctx->vbo); + dispatch->GenBuffers (1, &ctx->texture_load_pbo); + dispatch->GenBuffers (1, &ctx->vbo); ctx->max_framebuffer_size = 0; glGetIntegerv (GL_MAX_RENDERBUFFER_SIZE, &ctx->max_framebuffer_size); @@ -254,6 +239,7 @@ _cairo_gl_ensure_framebuffer (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) { GLenum status; + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; if (likely (surface->fb)) return; @@ -261,25 +247,25 @@ _cairo_gl_ensure_framebuffer (cairo_gl_context_t *ctx, /* Create a framebuffer object wrapping the texture so that we can render * to it. */ - glGenFramebuffersEXT (1, &surface->fb); - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, surface->fb); - glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, - GL_COLOR_ATTACHMENT0_EXT, - ctx->tex_target, - surface->tex, - 0); - - status = glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT); - if (status != GL_FRAMEBUFFER_COMPLETE_EXT) { + dispatch->GenFramebuffers (1, &surface->fb); + dispatch->BindFramebuffer (GL_FRAMEBUFFER, surface->fb); + dispatch->FramebufferTexture2D (GL_FRAMEBUFFER, + GL_COLOR_ATTACHMENT0, + ctx->tex_target, + surface->tex, + 0); + + status = dispatch->CheckFramebufferStatus (GL_FRAMEBUFFER); + if (status != GL_FRAMEBUFFER_COMPLETE) { const char *str; switch (status) { - //case GL_FRAMEBUFFER_UNDEFINED_EXT: str= "undefined"; break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: str= "incomplete attachment"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: str= "incomplete/missing attachment"; break; - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: str= "incomplete draw buffer"; break; - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: str= "incomplete read buffer"; break; - case GL_FRAMEBUFFER_UNSUPPORTED_EXT: str= "unsupported"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT: str= "incomplete multiple"; break; + //case GL_FRAMEBUFFER_UNDEFINED: str= "undefined"; break; + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: str= "incomplete attachment"; break; + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: str= "incomplete/missing attachment"; break; + case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: str= "incomplete draw buffer"; break; + case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: str= "incomplete read buffer"; break; + case GL_FRAMEBUFFER_UNSUPPORTED: str= "unsupported"; break; + case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: str= "incomplete multiple"; break; default: str = "unknown error"; break; } @@ -293,21 +279,22 @@ void _cairo_gl_context_set_destination (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) { - if (ctx->current_target == surface) + if (ctx->current_target == surface && ! surface->needs_update) return; _cairo_gl_composite_flush (ctx); ctx->current_target = surface; + surface->needs_update = FALSE; if (_cairo_gl_surface_is_texture (surface)) { _cairo_gl_ensure_framebuffer (ctx, surface); - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, surface->fb); - glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT); - glReadBuffer (GL_COLOR_ATTACHMENT0_EXT); + ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->fb); + glDrawBuffer (GL_COLOR_ATTACHMENT0); + glReadBuffer (GL_COLOR_ATTACHMENT0); } else { ctx->make_current (ctx, surface); - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); + ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, 0); glDrawBuffer (GL_BACK_LEFT); glReadBuffer (GL_BACK_LEFT); } diff --git a/src/cairo-gl-dispatch-private.h b/src/cairo-gl-dispatch-private.h new file mode 100644 index 0000000..f3245ed --- /dev/null +++ b/src/cairo-gl-dispatch-private.h @@ -0,0 +1,99 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2010 Linaro Limited + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * Contributor(s): + * Alexandros Frantzis + */ + +#ifndef CAIRO_GL_DISPATCH_PRIVATE_H +#define CAIRO_GL_DISPATCH_PRIVATE_H + +#include "cairo-gl-private.h" +#include + +typedef struct _cairo_gl_dispatch_entry { + const char *name_core; + const char *name_ext; + size_t offset; +} cairo_gl_dispatch_entry_t; + +#define DISPATCH_ENTRY_ARB(name) { "gl"#name, "gl"#name"ARB", \ + offsetof(cairo_gl_dispatch_t, name) } +#define DISPATCH_ENTRY_EXT(name) { "gl"#name, "gl"#name"EXT", \ + offsetof(cairo_gl_dispatch_t, name) } +#define DISPATCH_ENTRY_CUSTOM(name, name2) { "gl"#name, "gl"#name2, \ + offsetof(cairo_gl_dispatch_t, name)} +#define DISPATCH_ENTRY_LAST { NULL, NULL, 0 } + +cairo_private cairo_gl_dispatch_entry_t dispatch_buffers_entries[] = { + DISPATCH_ENTRY_ARB (GenBuffers), + DISPATCH_ENTRY_ARB (BindBuffer), + DISPATCH_ENTRY_ARB (BufferData), + DISPATCH_ENTRY_ARB (MapBuffer), + DISPATCH_ENTRY_ARB (UnmapBuffer), + DISPATCH_ENTRY_LAST +}; + +cairo_private cairo_gl_dispatch_entry_t dispatch_shaders_entries[] = { + /* Shaders */ + DISPATCH_ENTRY_CUSTOM (CreateShader, CreateShaderObjectARB), + DISPATCH_ENTRY_ARB (ShaderSource), + DISPATCH_ENTRY_ARB (CompileShader), + DISPATCH_ENTRY_CUSTOM (GetShaderiv, GetObjectParameterivARB), + DISPATCH_ENTRY_CUSTOM (GetShaderInfoLog, GetInfoLogARB), + DISPATCH_ENTRY_CUSTOM (DeleteShader, DeleteObjectARB), + + /* Programs */ + DISPATCH_ENTRY_CUSTOM (CreateProgram, CreateProgramObjectARB), + DISPATCH_ENTRY_CUSTOM (AttachShader, AttachObjectARB), + DISPATCH_ENTRY_CUSTOM (DeleteProgram, DeleteObjectARB), + DISPATCH_ENTRY_ARB (LinkProgram), + DISPATCH_ENTRY_CUSTOM (UseProgram, UseProgramObjectARB), + DISPATCH_ENTRY_CUSTOM (GetProgramiv, GetObjectParameterivARB), + DISPATCH_ENTRY_CUSTOM (GetProgramInfoLog, GetInfoLogARB), + + /* Uniforms */ + DISPATCH_ENTRY_ARB (GetUniformLocation), + DISPATCH_ENTRY_ARB (Uniform1f), + DISPATCH_ENTRY_ARB (Uniform2f), + DISPATCH_ENTRY_ARB (Uniform3f), + DISPATCH_ENTRY_ARB (Uniform4f), + DISPATCH_ENTRY_ARB (UniformMatrix3fv), + DISPATCH_ENTRY_ARB (Uniform1i), + DISPATCH_ENTRY_LAST +}; + +cairo_private cairo_gl_dispatch_entry_t dispatch_fbo_entries[] = { + DISPATCH_ENTRY_EXT (GenFramebuffers), + DISPATCH_ENTRY_EXT (BindFramebuffer), + DISPATCH_ENTRY_EXT (FramebufferTexture2D), + DISPATCH_ENTRY_EXT (CheckFramebufferStatus), + DISPATCH_ENTRY_EXT (DeleteFramebuffers), + DISPATCH_ENTRY_LAST +}; + +#endif /* CAIRO_GL_DISPATCH_PRIVATE_H */ diff --git a/src/cairo-gl-dispatch.c b/src/cairo-gl-dispatch.c new file mode 100644 index 0000000..0f64731 --- /dev/null +++ b/src/cairo-gl-dispatch.c @@ -0,0 +1,145 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2010 Linaro Limited + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * Contributor(s): + * Alexandros Frantzis + */ + +#include "cairoint.h" +#include "cairo-gl-private.h" +#include "cairo-gl-dispatch-private.h" + +static void +_cairo_gl_dispatch_init_entries (cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr, + cairo_gl_dispatch_entry_t *entries, + cairo_bool_t use_ext) +{ + cairo_gl_dispatch_entry_t *entry = entries; + + while (entry->name_core != NULL) { + void *dispatch_ptr = &((char *) dispatch)[entry->offset]; + const char *name = use_ext ? entry->name_ext : + entry->name_core; + + cairo_gl_generic_func_t func = get_proc_addr (name); + + *((cairo_gl_generic_func_t *) dispatch_ptr) = func; + + ++entry; + } + +} + +static cairo_status_t +_cairo_gl_dispatch_init_buffers (cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr, + int gl_version) +{ + cairo_bool_t use_ext; + + if (gl_version >= CAIRO_GL_VERSION_ENCODE (1, 5)) + use_ext = 0; + else if (_cairo_gl_has_extension ("GL_ARB_vertex_buffer_object")) + use_ext = 1; + else + return CAIRO_STATUS_DEVICE_ERROR; + + _cairo_gl_dispatch_init_entries (dispatch, get_proc_addr, + dispatch_buffers_entries, use_ext); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +_cairo_gl_dispatch_init_shaders (cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr, + int gl_version) +{ + cairo_bool_t use_ext; + + /* Note: shader support is not necessary at the moment */ + if (gl_version >= CAIRO_GL_VERSION_ENCODE (2, 0)) + use_ext = 0; + else if (_cairo_gl_has_extension ("GL_ARB_shader_objects")) + use_ext = 1; + else + return CAIRO_STATUS_SUCCESS; + + _cairo_gl_dispatch_init_entries (dispatch, get_proc_addr, + dispatch_shaders_entries, use_ext); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +_cairo_gl_dispatch_init_fbo (cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr, + int gl_version) +{ + cairo_bool_t use_ext; + + if (gl_version >= CAIRO_GL_VERSION_ENCODE (3, 0) || + _cairo_gl_has_extension ("GL_ARB_framebuffer_object")) + use_ext = 0; + else if (_cairo_gl_has_extension ("GL_EXT_framebuffer_object")) + use_ext = 1; + else + return CAIRO_STATUS_DEVICE_ERROR; + + _cairo_gl_dispatch_init_entries (dispatch, get_proc_addr, + dispatch_fbo_entries, use_ext); + + return CAIRO_STATUS_SUCCESS; +} + +cairo_status_t +_cairo_gl_dispatch_init (cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr) +{ + cairo_status_t status; + int gl_version; + + gl_version = _cairo_gl_get_version (); + + status = _cairo_gl_dispatch_init_buffers (dispatch, get_proc_addr, + gl_version); + if (status != CAIRO_STATUS_SUCCESS) + return status; + + status = _cairo_gl_dispatch_init_shaders (dispatch, get_proc_addr, + gl_version); + if (status != CAIRO_STATUS_SUCCESS) + return status; + + status = _cairo_gl_dispatch_init_fbo (dispatch, get_proc_addr, + gl_version); + if (status != CAIRO_STATUS_SUCCESS) + return status; + + return CAIRO_STATUS_SUCCESS; +} diff --git a/src/cairo-gl-ext-def-private.h b/src/cairo-gl-ext-def-private.h new file mode 100644 index 0000000..1653791 --- /dev/null +++ b/src/cairo-gl-ext-def-private.h @@ -0,0 +1,99 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2010 Linaro Limited + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * Contributor(s): + * Alexandros Frantzis + */ + +#ifndef CAIRO_GL_EXT_DEF_PRIVATE_H +#define CAIRO_GL_EXT_DEF_PRIVATE_H + +#ifndef GL_TEXTURE_RECTANGLE +#define GL_TEXTURE_RECTANGLE 0x84F5 +#endif + +#ifndef GL_ARRAY_BUFFER +#define GL_ARRAY_BUFFER 0x8892 +#endif + +#ifndef GL_STREAM_DRAW +#define GL_STREAM_DRAW 0x88E0 +#endif + +#ifndef GL_WRITE_ONLY +#define GL_WRITE_ONLY 0x88B9 +#endif + +#ifndef GL_PIXEL_UNPACK_BUFFER +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#endif + +#ifndef GL_FRAMEBUFFER +#define GL_FRAMEBUFFER 0x8D40 +#endif + +#ifndef GL_COLOR_ATTACHMENT0 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#endif + +#ifndef GL_FRAMEBUFFER_COMPLETE +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_FORMATS +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS 0x8CDA +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#endif + +#ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#endif + +#ifndef GL_FRAMEBUFFER_UNSUPPORTED +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#endif + +#ifndef GL_PACK_INVERT_MESA +#define GL_PACK_INVERT_MESA 0x8758 +#endif + +#endif /* CAIRO_GL_EXT_DEF_PRIVATE_H */ diff --git a/src/cairo-gl-gradient-private.h b/src/cairo-gl-gradient-private.h index 383a118..9e34847 100644 --- a/src/cairo-gl-gradient-private.h +++ b/src/cairo-gl-gradient-private.h @@ -41,17 +41,16 @@ #ifndef CAIRO_GL_GRADIENT_PRIVATE_H #define CAIRO_GL_GRADIENT_PRIVATE_H +#define GL_GLEXT_PROTOTYPES + #include "cairo-cache-private.h" #include "cairo-device-private.h" #include "cairo-reference-count-private.h" #include "cairo-types-private.h" -#include - #include "cairo-gl.h" #include -#define GL_GLEXT_PROTOTYPES #include #define CAIRO_GL_GRADIENT_CACHE_SIZE 4096 diff --git a/src/cairo-gl-gradient.c b/src/cairo-gl-gradient.c index 94c220b..a48e156 100644 --- a/src/cairo-gl-gradient.c +++ b/src/cairo-gl-gradient.c @@ -195,6 +195,7 @@ _cairo_gl_gradient_create (cairo_gl_context_t *ctx, cairo_status_t status; int tex_width; void *data; + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; if ((unsigned int) ctx->max_texture_size / 2 <= n_stops) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -221,16 +222,17 @@ _cairo_gl_gradient_create (cairo_gl_context_t *ctx, gradient->stops = gradient->stops_embedded; memcpy (gradient->stops_embedded, stops, n_stops * sizeof (cairo_gradient_stop_t)); - glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, ctx->texture_load_pbo); - glBufferDataARB (GL_PIXEL_UNPACK_BUFFER_ARB, tex_width * sizeof (uint32_t), 0, GL_STREAM_DRAW); - data = glMapBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY); + dispatch->BindBuffer (GL_PIXEL_UNPACK_BUFFER, ctx->texture_load_pbo); + dispatch->BufferData (GL_PIXEL_UNPACK_BUFFER, + tex_width * sizeof (uint32_t), 0, GL_STREAM_DRAW); + data = dispatch->MapBuffer (GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY); status = _cairo_gl_gradient_render (ctx, n_stops, stops, data, tex_width); - glUnmapBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB); + dispatch->UnmapBuffer (GL_PIXEL_UNPACK_BUFFER); if (unlikely (status)) { - glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, 0); + dispatch->BindBuffer (GL_PIXEL_UNPACK_BUFFER, 0); free (gradient); return status; } @@ -241,7 +243,7 @@ _cairo_gl_gradient_create (cairo_gl_context_t *ctx, glTexImage1D (GL_TEXTURE_1D, 0, GL_RGBA8, tex_width, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 0); - glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, 0); + dispatch->BindBuffer (GL_PIXEL_UNPACK_BUFFER, 0); /* we ignore errors here and just return an uncached gradient */ if (likely (! _cairo_cache_insert (&ctx->gradients, &gradient->cache_entry))) diff --git a/src/cairo-gl-info.c b/src/cairo-gl-info.c new file mode 100644 index 0000000..5b4190e --- /dev/null +++ b/src/cairo-gl-info.c @@ -0,0 +1,71 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2010 Linaro Limited + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * Contributor(s): + * Alexandros Frantzis + */ + +#include "cairoint.h" +#include "cairo-gl-private.h" + +int +_cairo_gl_get_version (void) +{ + int major, minor; + const char *version = (const char *) glGetString (GL_VERSION); + const char *dot = version == NULL ? NULL : strchr (version, '.'); + + /* Sanity check */ + if (dot == NULL || dot == version || *(dot + 1) == '\0') { + major = 0; + minor = 0; + } else { + major = strtol (version, NULL, 10); + minor = strtol (dot + 1, NULL, 10); + } + + return CAIRO_GL_VERSION_ENCODE (major, minor); +} + +cairo_bool_t +_cairo_gl_has_extension (const char *ext) +{ + const char *extensions = (const char *) glGetString (GL_EXTENSIONS); + size_t len = strlen (ext); + const char *ext_ptr = extensions; + + if (unlikely (ext_ptr == NULL)) + return 0; + + while ((ext_ptr = strstr (ext_ptr, ext)) != NULL) { + if (ext_ptr[len] == ' ' || ext_ptr[len] == '\0') + break; + ext_ptr += len; + } + + return (ext_ptr != NULL); +} diff --git a/src/cairo-gl-private.h b/src/cairo-gl-private.h index 54f226f..ace4032 100644 --- a/src/cairo-gl-private.h +++ b/src/cairo-gl-private.h @@ -42,6 +42,8 @@ #ifndef CAIRO_GL_PRIVATE_H #define CAIRO_GL_PRIVATE_H +#define GL_GLEXT_PROTOTYPES + #include "cairoint.h" #include "cairo-gl-gradient-private.h" @@ -52,13 +54,11 @@ #include -#include - #include "cairo-gl.h" #include -#define GL_GLEXT_PROTOTYPES #include +#include "cairo-gl-ext-def-private.h" #define DEBUG_GL 0 @@ -73,6 +73,10 @@ #define UNSUPPORTED(reason) CAIRO_INT_STATUS_UNSUPPORTED #endif +#define CAIRO_GL_VERSION_ENCODE(major, minor) ( \ + ((major) * 256) \ + + ((minor) * 1)) + /* maximal number of shaders we keep in the cache. * Random number that is hopefully big enough to not cause many cache evictions. */ #define CAIRO_GL_MAX_SHADERS_PER_CONTEXT 64 @@ -89,6 +93,7 @@ typedef struct _cairo_gl_surface { GLuint fb; /* GL framebuffer object wrapping our data. */ GLuint depth; /* GL framebuffer object holding depth */ int owns_tex; + cairo_bool_t needs_update; } cairo_gl_surface_t; typedef struct cairo_gl_glyph_cache { @@ -107,7 +112,9 @@ typedef enum cairo_gl_operand_type { CAIRO_GL_OPERAND_CONSTANT, CAIRO_GL_OPERAND_TEXTURE, CAIRO_GL_OPERAND_LINEAR_GRADIENT, - CAIRO_GL_OPERAND_RADIAL_GRADIENT, + CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0, + CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE, + CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT, CAIRO_GL_OPERAND_SPANS, CAIRO_GL_OPERAND_COUNT @@ -154,23 +161,67 @@ typedef struct cairo_gl_operand { struct { cairo_gl_gradient_t *gradient; cairo_matrix_t m; - float segment_x; - float segment_y; - cairo_extend_t extend; - } linear; - struct { - cairo_gl_gradient_t *gradient; - cairo_matrix_t m; - float circle_1_x; - float circle_1_y; - float radius_0; - float radius_1; - cairo_extend_t extend; - } radial; + cairo_circle_double_t circle_d; + double radius_0, a; + cairo_extend_t extend; + } gradient; }; unsigned int vertex_offset; } cairo_gl_operand_t; +typedef void (*cairo_gl_generic_func_t)(void); +typedef cairo_gl_generic_func_t (*cairo_gl_get_proc_addr_func_t)(const char *procname); + +typedef struct _cairo_gl_dispatch { + /* Buffers */ + void (*GenBuffers) (GLsizei n, GLuint *buffers); + void (*BindBuffer) (GLenum target, GLuint buffer); + void (*BufferData) (GLenum target, GLsizeiptr size, + const GLvoid* data, GLenum usage); + GLvoid *(*MapBuffer) (GLenum target, GLenum access); + GLboolean (*UnmapBuffer) (GLenum target); + + /* Shaders */ + GLuint (*CreateShader) (GLenum type); + void (*ShaderSource) (GLuint shader, GLsizei count, + const GLchar** string, const GLint* length); + void (*CompileShader) (GLuint shader); + void (*GetShaderiv) (GLuint shader, GLenum pname, GLint *params); + void (*GetShaderInfoLog) (GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); + void (*DeleteShader) (GLuint shader); + + /* Programs */ + GLuint (*CreateProgram) (void); + void (*AttachShader) (GLuint program, GLuint shader); + void (*DeleteProgram) (GLuint program); + void (*LinkProgram) (GLuint program); + void (*UseProgram) (GLuint program); + void (*GetProgramiv) (GLuint program, GLenum pname, GLint *params); + void (*GetProgramInfoLog) (GLuint program, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); + + /* Uniforms */ + GLint (*GetUniformLocation) (GLuint program, const GLchar* name); + void (*Uniform1f) (GLint location, GLfloat x); + void (*Uniform2f) (GLint location, GLfloat x, GLfloat y); + void (*Uniform3f) (GLint location, GLfloat x, GLfloat y, GLfloat z); + void (*Uniform4f) (GLint location, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); + void (*UniformMatrix3fv) (GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); + void (*Uniform1i) (GLint location, GLint x); + + /* Framebuffer objects */ + void (*GenFramebuffers) (GLsizei n, GLuint* framebuffers); + void (*BindFramebuffer) (GLenum target, GLuint framebuffer); + void (*FramebufferTexture2D) (GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); + GLenum (*CheckFramebufferStatus) (GLenum target); + void (*DeleteFramebuffers) (GLsizei n, const GLuint* framebuffers); +} cairo_gl_dispatch_t; + struct _cairo_gl_context { cairo_device_t base; @@ -205,6 +256,9 @@ struct _cairo_gl_context { unsigned int vertex_size; cairo_region_t *clip_region; + cairo_bool_t has_mesa_pack_invert; + cairo_gl_dispatch_t dispatch; + void (*acquire) (void *ctx); void (*release) (void *ctx); @@ -272,7 +326,7 @@ _cairo_gl_device_has_glsl (cairo_device_t *device) static cairo_always_inline cairo_bool_t _cairo_gl_device_requires_power_of_two_textures (cairo_device_t *device) { - return ((cairo_gl_context_t *) device)->tex_target == GL_TEXTURE_RECTANGLE_EXT; + return ((cairo_gl_context_t *) device)->tex_target == GL_TEXTURE_RECTANGLE; } static cairo_always_inline cairo_status_t cairo_warn @@ -479,6 +533,17 @@ _cairo_gl_set_shader (cairo_gl_context_t *ctx, cairo_private void _cairo_gl_shader_fini (cairo_gl_context_t *ctx, cairo_gl_shader_t *shader); +cairo_private int +_cairo_gl_get_version (void); + +cairo_private cairo_bool_t +_cairo_gl_has_extension (const char *ext); + +cairo_private cairo_status_t +_cairo_gl_dispatch_init(cairo_gl_dispatch_t *dispatch, + cairo_gl_get_proc_addr_func_t get_proc_addr); + + slim_hidden_proto (cairo_gl_surface_create); slim_hidden_proto (cairo_gl_surface_create_for_texture); diff --git a/src/cairo-gl-shaders.c b/src/cairo-gl-shaders.c index ea329dd..2b31bfc 100644 --- a/src/cairo-gl-shaders.c +++ b/src/cairo-gl-shaders.c @@ -3,6 +3,7 @@ * Copyright © 2009 T. Zachary Laine * Copyright © 2010 Eric Anholt * Copyright © 2010 Red Hat, Inc + * Copyright © 2010 Linaro Limited * * This library is free software; you can redistribute it and/or * modify it either under the terms of the GNU Lesser General Public @@ -35,6 +36,7 @@ * Benjamin Otte * Eric Anholt * T. Zachary Laine + * Alexandros Frantzis */ #include "cairoint.h" @@ -44,53 +46,61 @@ typedef struct cairo_gl_shader_impl { void - (*compile_shader) (GLuint *shader, GLenum type, const char *text); + (*compile_shader) (cairo_gl_context_t *ctx, GLuint *shader, GLenum type, + const char *text); void - (*link_shader) (GLuint *program, GLuint vert, GLuint frag); + (*link_shader) (cairo_gl_context_t *ctx, GLuint *program, GLuint vert, GLuint frag); void - (*destroy_shader) (GLuint shader); + (*destroy_shader) (cairo_gl_context_t *ctx, GLuint shader); void - (*destroy_program) (GLuint program); + (*destroy_program) (cairo_gl_context_t *ctx, GLuint program); void - (*bind_float) (cairo_gl_shader_t *shader, + (*bind_float) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value); void - (*bind_vec2) (cairo_gl_shader_t *shader, + (*bind_vec2) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1); void - (*bind_vec3) (cairo_gl_shader_t *shader, + (*bind_vec3) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1, float value2); void - (*bind_vec4) (cairo_gl_shader_t *shader, + (*bind_vec4) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1, float value2, float value3); void - (*bind_matrix) (cairo_gl_shader_t *shader, + (*bind_matrix) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, cairo_matrix_t* m); void - (*bind_texture) (cairo_gl_shader_t *shader, + (*bind_texture) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, cairo_gl_tex_t tex_unit); void - (*use) (cairo_gl_shader_t *shader); + (*use) (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader); } shader_impl_t; static cairo_status_t @@ -100,184 +110,28 @@ _cairo_gl_shader_compile (cairo_gl_context_t *ctx, cairo_gl_var_type_t mask, const char *fragment_text); -/* ARB_shader_objects / ARB_vertex_shader / ARB_fragment_shader extensions - API. */ -static void -compile_shader_arb (GLuint *shader, GLenum type, const char *text) -{ - const char* strings[1] = { text }; - GLint gl_status; - - *shader = glCreateShaderObjectARB (type); - glShaderSourceARB (*shader, 1, strings, 0); - glCompileShaderARB (*shader); - glGetObjectParameterivARB (*shader, GL_OBJECT_COMPILE_STATUS_ARB, &gl_status); - if (gl_status == GL_FALSE) { - GLint log_size; - glGetObjectParameterivARB (*shader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_size); - if (0 < log_size) { - char *log = _cairo_malloc (log_size); - GLint chars; - - log[log_size - 1] = '\0'; - glGetInfoLogARB (*shader, log_size, &chars, log); - printf ("OpenGL shader compilation failed. Shader:\n" - "%s\n" - "OpenGL compilation log:\n" - "%s\n", - text, log); - - free (log); - } else { - printf ("OpenGL shader compilation failed.\n"); - } - - ASSERT_NOT_REACHED; - } -} - -static void -link_shader_arb (GLuint *program, GLuint vert, GLuint frag) -{ - GLint gl_status; - - *program = glCreateProgramObjectARB (); - glAttachObjectARB (*program, vert); - glAttachObjectARB (*program, frag); - glLinkProgramARB (*program); - glGetObjectParameterivARB (*program, GL_OBJECT_LINK_STATUS_ARB, &gl_status); - if (gl_status == GL_FALSE) { - GLint log_size; - glGetObjectParameterivARB (*program, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_size); - if (0 < log_size) { - char *log = _cairo_malloc (log_size); - GLint chars; - - log[log_size - 1] = '\0'; - glGetInfoLogARB (*program, log_size, &chars, log); - printf ("OpenGL shader link failed:\n%s\n", log); - - free (log); - } else { - printf ("OpenGL shader link failed.\n"); - } - - ASSERT_NOT_REACHED; - } -} - -static void -destroy_shader_arb (GLuint shader) -{ - glDeleteObjectARB (shader); -} - -static void -destroy_program_arb (GLuint shader) -{ - glDeleteObjectARB (shader); -} - -static void -bind_float_arb (cairo_gl_shader_t *shader, - const char *name, - float value) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - assert (location != -1); - glUniform1fARB (location, value); -} - -static void -bind_vec2_arb (cairo_gl_shader_t *shader, - const char *name, - float value0, - float value1) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - assert (location != -1); - glUniform2fARB (location, value0, value1); -} - -static void -bind_vec3_arb (cairo_gl_shader_t *shader, - const char *name, - float value0, - float value1, - float value2) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - assert (location != -1); - glUniform3fARB (location, value0, value1, value2); -} - -static void -bind_vec4_arb (cairo_gl_shader_t *shader, - const char *name, - float value0, - float value1, - float value2, - float value3) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - assert (location != -1); - glUniform4fARB (location, value0, value1, value2, value3); -} - -static void -bind_matrix_arb (cairo_gl_shader_t *shader, - const char *name, - cairo_matrix_t* m) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - float gl_m[9] = { - m->xx, m->xy, m->x0, - m->yx, m->yy, m->y0, - 0, 0, 1 - }; - assert (location != -1); - glUniformMatrix3fvARB (location, 1, GL_TRUE, gl_m); -} - -static void -bind_texture_arb (cairo_gl_shader_t *shader, - const char *name, - cairo_gl_tex_t tex_unit) -{ - GLint location = glGetUniformLocationARB (shader->program, name); - assert (location != -1); - glUniform1iARB (location, tex_unit); -} - -static void -use_program_arb (cairo_gl_shader_t *shader) -{ - if (shader) - glUseProgramObjectARB (shader->program); - else - glUseProgramObjectARB (0); -} - /* OpenGL Core 2.0 API. */ static void -compile_shader_core_2_0 (GLuint *shader, GLenum type, const char *text) +compile_shader_core_2_0 (cairo_gl_context_t *ctx, GLuint *shader, + GLenum type, const char *text) { const char* strings[1] = { text }; GLint gl_status; + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; - *shader = glCreateShader (type); - glShaderSource (*shader, 1, strings, 0); - glCompileShader (*shader); - glGetShaderiv (*shader, GL_COMPILE_STATUS, &gl_status); + *shader = dispatch->CreateShader (type); + dispatch->ShaderSource (*shader, 1, strings, 0); + dispatch->CompileShader (*shader); + dispatch->GetShaderiv (*shader, GL_COMPILE_STATUS, &gl_status); if (gl_status == GL_FALSE) { GLint log_size; - glGetShaderiv (*shader, GL_INFO_LOG_LENGTH, &log_size); + dispatch->GetShaderiv (*shader, GL_INFO_LOG_LENGTH, &log_size); if (0 < log_size) { char *log = _cairo_malloc (log_size); GLint chars; log[log_size - 1] = '\0'; - glGetShaderInfoLog (*shader, log_size, &chars, log); + dispatch->GetShaderInfoLog (*shader, log_size, &chars, log); printf ("OpenGL shader compilation failed. Shader:\n" "%s\n" "OpenGL compilation log:\n" @@ -294,24 +148,26 @@ compile_shader_core_2_0 (GLuint *shader, GLenum type, const char *text) } static void -link_shader_core_2_0 (GLuint *program, GLuint vert, GLuint frag) +link_shader_core_2_0 (cairo_gl_context_t *ctx, GLuint *program, + GLuint vert, GLuint frag) { GLint gl_status; + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; - *program = glCreateProgram (); - glAttachShader (*program, vert); - glAttachShader (*program, frag); - glLinkProgram (*program); - glGetProgramiv (*program, GL_LINK_STATUS, &gl_status); + *program = dispatch->CreateProgram (); + dispatch->AttachShader (*program, vert); + dispatch->AttachShader (*program, frag); + dispatch->LinkProgram (*program); + dispatch->GetProgramiv (*program, GL_LINK_STATUS, &gl_status); if (gl_status == GL_FALSE) { GLint log_size; - glGetProgramiv (*program, GL_INFO_LOG_LENGTH, &log_size); + dispatch->GetProgramiv (*program, GL_INFO_LOG_LENGTH, &log_size); if (0 < log_size) { char *log = _cairo_malloc (log_size); GLint chars; log[log_size - 1] = '\0'; - glGetProgramInfoLog (*program, log_size, &chars, log); + dispatch->GetProgramInfoLog (*program, log_size, &chars, log); printf ("OpenGL shader link failed:\n%s\n", log); free (log); @@ -324,91 +180,106 @@ link_shader_core_2_0 (GLuint *program, GLuint vert, GLuint frag) } static void -destroy_shader_core_2_0 (GLuint shader) +destroy_shader_core_2_0 (cairo_gl_context_t *ctx, GLuint shader) { - glDeleteShader (shader); + ctx->dispatch.DeleteShader (shader); } static void -destroy_program_core_2_0 (GLuint shader) +destroy_program_core_2_0 (cairo_gl_context_t *ctx, GLuint shader) { - glDeleteProgram (shader); + ctx->dispatch.DeleteProgram (shader); } static void -bind_float_core_2_0 (cairo_gl_shader_t *shader, +bind_float_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); assert (location != -1); - glUniform1f (location, value); + dispatch->Uniform1f (location, value); } static void -bind_vec2_core_2_0 (cairo_gl_shader_t *shader, +bind_vec2_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); assert (location != -1); - glUniform2f (location, value0, value1); + dispatch->Uniform2f (location, value0, value1); } static void -bind_vec3_core_2_0 (cairo_gl_shader_t *shader, +bind_vec3_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1, float value2) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); assert (location != -1); - glUniform3f (location, value0, value1, value2); + dispatch->Uniform3f (location, value0, value1, value2); } static void -bind_vec4_core_2_0 (cairo_gl_shader_t *shader, +bind_vec4_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, const char *name, float value0, float value1, float value2, float value3) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); assert (location != -1); - glUniform4f (location, value0, value1, value2, value3); + dispatch->Uniform4f (location, value0, value1, value2, value3); } static void -bind_matrix_core_2_0 (cairo_gl_shader_t *shader, const char *name, cairo_matrix_t* m) +bind_matrix_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader, + const char *name, + cairo_matrix_t* m) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); float gl_m[16] = { m->xx, m->xy, m->x0, m->yx, m->yy, m->y0, 0, 0, 1 }; assert (location != -1); - glUniformMatrix3fv (location, 1, GL_TRUE, gl_m); + dispatch->UniformMatrix3fv (location, 1, GL_TRUE, gl_m); } static void -bind_texture_core_2_0 (cairo_gl_shader_t *shader, const char *name, cairo_gl_tex_t tex_unit) +bind_texture_core_2_0 (cairo_gl_context_t *ctx, cairo_gl_shader_t *shader, + const char *name, cairo_gl_tex_t tex_unit) { - GLint location = glGetUniformLocation (shader->program, name); + cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + GLint location = dispatch->GetUniformLocation (shader->program, name); assert (location != -1); - glUniform1i (location, tex_unit); + dispatch->Uniform1i (location, tex_unit); } static void -use_program_core_2_0 (cairo_gl_shader_t *shader) +use_program_core_2_0 (cairo_gl_context_t *ctx, + cairo_gl_shader_t *shader) { if (shader) - glUseProgram (shader->program); + ctx->dispatch.UseProgram (shader->program); else - glUseProgram (0); + ctx->dispatch.UseProgram (0); } static const cairo_gl_shader_impl_t shader_impl_core_2_0 = { @@ -425,20 +296,6 @@ static const cairo_gl_shader_impl_t shader_impl_core_2_0 = { use_program_core_2_0, }; -static const cairo_gl_shader_impl_t shader_impl_arb = { - compile_shader_arb, - link_shader_arb, - destroy_shader_arb, - destroy_program_arb, - bind_float_arb, - bind_vec2_arb, - bind_vec3_arb, - bind_vec4_arb, - bind_matrix_arb, - bind_texture_arb, - use_program_arb, -}; - typedef struct _cairo_shader_cache_entry { cairo_cache_entry_t base; @@ -498,16 +355,13 @@ _cairo_gl_context_init_shaders (cairo_gl_context_t *ctx) "}\n"; cairo_status_t status; - /* XXX multiple device support? */ - if (GLEW_VERSION_2_0) { - ctx->shader_impl = &shader_impl_core_2_0; - } else if (GLEW_ARB_shader_objects && - GLEW_ARB_fragment_shader && - GLEW_ARB_vertex_program) { - ctx->shader_impl = &shader_impl_arb; - } else { - ctx->shader_impl = NULL; - } + if (_cairo_gl_get_version () >= CAIRO_GL_VERSION_ENCODE (2, 0) || + (_cairo_gl_has_extension ("GL_ARB_shader_objects") && + _cairo_gl_has_extension ("GL_ARB_fragment_shader") && + _cairo_gl_has_extension ("GL_ARB_vertex_shader"))) + ctx->shader_impl = &shader_impl_core_2_0; + else + ctx->shader_impl = NULL; memset (ctx->vertex_shaders, 0, sizeof (ctx->vertex_shaders)); @@ -540,7 +394,7 @@ _cairo_gl_context_fini_shaders (cairo_gl_context_t *ctx) for (i = 0; i <= CAIRO_GL_VAR_TYPE_MAX; i++) { if (ctx->vertex_shaders[i]) - ctx->shader_impl->destroy_shader (ctx->vertex_shaders[i]); + ctx->shader_impl->destroy_shader (ctx, ctx->vertex_shaders[i]); } _cairo_cache_fini (&ctx->shaders); @@ -551,10 +405,10 @@ _cairo_gl_shader_fini (cairo_gl_context_t *ctx, cairo_gl_shader_t *shader) { if (shader->fragment_shader) - ctx->shader_impl->destroy_shader (shader->fragment_shader); + ctx->shader_impl->destroy_shader (ctx, shader->fragment_shader); if (shader->program) - ctx->shader_impl->destroy_program (shader->program); + ctx->shader_impl->destroy_program (ctx, shader->program); } static const char *operand_names[] = { "source", "mask", "dest" }; @@ -568,9 +422,11 @@ cairo_gl_operand_get_var_type (cairo_gl_operand_type_t type) ASSERT_NOT_REACHED; case CAIRO_GL_OPERAND_NONE: case CAIRO_GL_OPERAND_CONSTANT: - case CAIRO_GL_OPERAND_LINEAR_GRADIENT: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: return CAIRO_GL_VAR_NONE; + case CAIRO_GL_OPERAND_LINEAR_GRADIENT: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: case CAIRO_GL_OPERAND_TEXTURE: return CAIRO_GL_VAR_TEXCOORDS; case CAIRO_GL_OPERAND_SPANS: @@ -664,7 +520,7 @@ cairo_gl_shader_emit_color (cairo_output_stream_t *stream, cairo_gl_tex_t name) { const char *namestr = operand_names[name]; - const char *rectstr = (tex_target == GL_TEXTURE_RECTANGLE_EXT ? "Rect" : ""); + const char *rectstr = (tex_target == GL_TEXTURE_RECTANGLE ? "Rect" : ""); switch (type) { case CAIRO_GL_OPERAND_COUNT: @@ -700,52 +556,93 @@ cairo_gl_shader_emit_color (cairo_output_stream_t *stream, break; case CAIRO_GL_OPERAND_LINEAR_GRADIENT: _cairo_output_stream_printf (stream, + "varying vec2 %s_texcoords;\n" "uniform sampler1D %s_sampler;\n" - "uniform mat3 %s_matrix;\n" - "uniform vec2 %s_segment;\n" - "\n" - "vec4 get_%s()\n" - "{\n" - " vec2 pos = (%s_matrix * vec3 (gl_FragCoord.xy, 1.0)).xy;\n" - " float t = dot (pos, %s_segment) / dot (%s_segment, %s_segment);\n" - " return texture1D (%s_sampler, t);\n" - "}\n", - namestr, namestr, namestr, namestr, namestr, - namestr, namestr, namestr, namestr); - break; - case CAIRO_GL_OPERAND_RADIAL_GRADIENT: - _cairo_output_stream_printf (stream, - "uniform sampler1D %s_sampler;\n" - "uniform mat3 %s_matrix;\n" - "uniform vec2 %s_circle_1;\n" - "uniform float %s_radius_0;\n" - "uniform float %s_radius_1;\n" "\n" "vec4 get_%s()\n" "{\n" - " vec2 pos = (%s_matrix * vec3 (gl_FragCoord.xy, 1.0)).xy;\n" - " \n" - " float dr = %s_radius_1 - %s_radius_0;\n" - " float dot_circle_1 = dot (%s_circle_1, %s_circle_1);\n" - " float dot_pos_circle_1 = dot (pos, %s_circle_1);\n" - " \n" - " float A = dot_circle_1 - dr * dr;\n" - " float B = -2.0 * (dot_pos_circle_1 + %s_radius_0 * dr);\n" - " float C = dot (pos, pos) - %s_radius_0 * %s_radius_0;\n" - " float det = B * B - 4.0 * A * C;\n" - " det = max (det, 0.0);\n" - " \n" - " float sqrt_det = sqrt (det);\n" - " sqrt_det *= sign(A);\n" - " \n" - " float t = (-B + sqrt_det) / (2.0 * A);\n" - " return texture1D (%s_sampler, t);\n" + " return texture1D (%s_sampler, %s_texcoords.x);\n" "}\n", - namestr, namestr, namestr, namestr, namestr, - namestr, namestr, namestr, namestr, namestr, - namestr, namestr, namestr, namestr, namestr, - namestr); + namestr, namestr, namestr, namestr, namestr); break; + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: + _cairo_output_stream_printf (stream, + "varying vec2 %s_texcoords;\n" + "uniform sampler1D %s_sampler;\n" + "uniform vec3 %s_circle_d;\n" + "uniform float %s_radius_0;\n" + "\n" + "vec4 get_%s()\n" + "{\n" + " vec3 pos = vec3 (%s_texcoords, %s_radius_0);\n" + " \n" + " float B = dot (pos, %s_circle_d);\n" + " float C = dot (pos, vec3 (pos.xy, -pos.z));\n" + " \n" + " float t = 0.5 * C / B;\n" + " float is_valid = step (-%s_radius_0, t * %s_circle_d.z);\n" + " return mix (vec4 (0.0), texture1D (%s_sampler, t), is_valid);\n" + "}\n", + namestr, namestr, namestr, namestr, namestr, namestr, + namestr, namestr, namestr, namestr, namestr); + break; + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: + _cairo_output_stream_printf (stream, + "varying vec2 %s_texcoords;\n" + "uniform sampler1D %s_sampler;\n" + "uniform vec3 %s_circle_d;\n" + "uniform float %s_a;\n" + "uniform float %s_radius_0;\n" + "\n" + "vec4 get_%s()\n" + "{\n" + " vec3 pos = vec3 (%s_texcoords, %s_radius_0);\n" + " \n" + " float B = dot (pos, %s_circle_d);\n" + " float C = dot (pos, vec3 (pos.xy, -pos.z));\n" + " \n" + " float det = dot (vec2 (B, %s_a), vec2 (B, -C));\n" + " float sqrtdet = sqrt (abs (det));\n" + " vec2 t = (B + vec2 (sqrtdet, -sqrtdet)) / %s_a;\n" + " \n" + " vec2 is_valid = step (vec2 (0.0), t) * step (t, vec2(1.0));\n" + " float has_color = step (0., det) * max (is_valid.x, is_valid.y);\n" + " \n" + " float upper_t = mix (t.y, t.x, is_valid.x);\n" + " return mix (vec4 (0.0), texture1D (%s_sampler, upper_t), has_color);\n" + "}\n", + namestr, namestr, namestr, namestr, namestr, namestr, + namestr, namestr, namestr, namestr, namestr, namestr); + break; + case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: + _cairo_output_stream_printf (stream, + "varying vec2 %s_texcoords;\n" + "uniform sampler1D %s_sampler;\n" + "uniform vec3 %s_circle_d;\n" + "uniform float %s_a;\n" + "uniform float %s_radius_0;\n" + "\n" + "vec4 get_%s()\n" + "{\n" + " vec3 pos = vec3 (%s_texcoords, %s_radius_0);\n" + " \n" + " float B = dot (pos, %s_circle_d);\n" + " float C = dot (pos, vec3 (pos.xy, -pos.z));\n" + " \n" + " float det = dot (vec2 (B, %s_a), vec2 (B, -C));\n" + " float sqrtdet = sqrt (abs (det));\n" + " vec2 t = (B + vec2 (sqrtdet, -sqrtdet)) / %s_a;\n" + " \n" + " vec2 is_valid = step (vec2 (-%s_radius_0), t * %s_circle_d.z);\n" + " float has_color = step (0., det) * max (is_valid.x, is_valid.y);\n" + " \n" + " float upper_t = mix (t.y, t.x, is_valid.x);\n" + " return mix (vec4 (0.0), texture1D (%s_sampler, upper_t), has_color);\n" + "}\n", + namestr, namestr, namestr, namestr, namestr, + namestr, namestr, namestr, namestr, namestr, + namestr, namestr, namestr, namestr); + break; case CAIRO_GL_OPERAND_SPANS: _cairo_output_stream_printf (stream, "varying float %s_coverage;\n" @@ -832,17 +729,17 @@ _cairo_gl_shader_compile (cairo_gl_context_t *ctx, if (unlikely (status)) goto FAILURE; - ctx->shader_impl->compile_shader (&ctx->vertex_shaders[vertex_shader], + ctx->shader_impl->compile_shader (ctx, &ctx->vertex_shaders[vertex_shader], GL_VERTEX_SHADER, source); free (source); } - ctx->shader_impl->compile_shader (&shader->fragment_shader, + ctx->shader_impl->compile_shader (ctx, &shader->fragment_shader, GL_FRAGMENT_SHADER, fragment_text); - ctx->shader_impl->link_shader (&shader->program, + ctx->shader_impl->link_shader (ctx, &shader->program, ctx->vertex_shaders[vertex_shader], shader->fragment_shader); @@ -861,7 +758,7 @@ _cairo_gl_shader_bind_float (cairo_gl_context_t *ctx, const char *name, float value) { - ctx->shader_impl->bind_float (ctx->current_shader, name, value); + ctx->shader_impl->bind_float (ctx, ctx->current_shader, name, value); } void @@ -870,7 +767,7 @@ _cairo_gl_shader_bind_vec2 (cairo_gl_context_t *ctx, float value0, float value1) { - ctx->shader_impl->bind_vec2 (ctx->current_shader, name, value0, value1); + ctx->shader_impl->bind_vec2 (ctx, ctx->current_shader, name, value0, value1); } void @@ -880,7 +777,7 @@ _cairo_gl_shader_bind_vec3 (cairo_gl_context_t *ctx, float value1, float value2) { - ctx->shader_impl->bind_vec3 (ctx->current_shader, name, value0, value1, value2); + ctx->shader_impl->bind_vec3 (ctx, ctx->current_shader, name, value0, value1, value2); } void @@ -889,21 +786,21 @@ _cairo_gl_shader_bind_vec4 (cairo_gl_context_t *ctx, float value0, float value1, float value2, float value3) { - ctx->shader_impl->bind_vec4 (ctx->current_shader, name, value0, value1, value2, value3); + ctx->shader_impl->bind_vec4 (ctx, ctx->current_shader, name, value0, value1, value2, value3); } void _cairo_gl_shader_bind_matrix (cairo_gl_context_t *ctx, const char *name, cairo_matrix_t* m) { - ctx->shader_impl->bind_matrix (ctx->current_shader, name, m); + ctx->shader_impl->bind_matrix (ctx, ctx->current_shader, name, m); } void _cairo_gl_shader_bind_texture (cairo_gl_context_t *ctx, const char *name, GLuint tex_unit) { - ctx->shader_impl->bind_texture (ctx->current_shader, name, tex_unit); + ctx->shader_impl->bind_texture (ctx, ctx->current_shader, name, tex_unit); } void @@ -916,7 +813,7 @@ _cairo_gl_set_shader (cairo_gl_context_t *ctx, if (ctx->current_shader == shader) return; - ctx->shader_impl->use (shader); + ctx->shader_impl->use (ctx, shader); ctx->current_shader = shader; } diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c index e53506c..211fe02 100644 --- a/src/cairo-gl-surface.c +++ b/src/cairo-gl-surface.c @@ -214,6 +214,7 @@ _cairo_gl_surface_init (cairo_device_t *device, surface->width = width; surface->height = height; + surface->needs_update = FALSE; } static cairo_surface_t * @@ -459,14 +460,17 @@ cairo_gl_surface_set_size (cairo_surface_t *abstract_surface, } if (! _cairo_surface_is_gl (abstract_surface) || - ! _cairo_gl_surface_is_texture (surface)) { + _cairo_gl_surface_is_texture (surface)) { status = _cairo_surface_set_error (abstract_surface, _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); return; } - surface->width = width; - surface->height = height; + if (surface->width != width || surface->height != height) { + surface->needs_update = TRUE; + surface->width = width; + surface->height = height; + } } int @@ -743,12 +747,14 @@ _cairo_gl_surface_get_image (cairo_gl_surface_t *surface, glPixelStorei (GL_PACK_ALIGNMENT, 1); glPixelStorei (GL_PACK_ROW_LENGTH, image->stride / cpp); - if (! _cairo_gl_surface_is_texture (surface) && GLEW_MESA_pack_invert) + if (! _cairo_gl_surface_is_texture (surface) && + ctx->has_mesa_pack_invert) glPixelStorei (GL_PACK_INVERT_MESA, 1); glReadPixels (interest->x, interest->y, interest->width, interest->height, format, type, image->data); - if (! _cairo_gl_surface_is_texture (surface) && GLEW_MESA_pack_invert) + if (! _cairo_gl_surface_is_texture (surface) && + ctx->has_mesa_pack_invert) glPixelStorei (GL_PACK_INVERT_MESA, 0); status = _cairo_gl_context_release (ctx, status); @@ -785,9 +791,9 @@ _cairo_gl_surface_finish (void *abstract_surface) ctx->current_target = NULL; if (surface->depth) - glDeleteFramebuffersEXT (1, &surface->depth); + ctx->dispatch.DeleteFramebuffers (1, &surface->depth); if (surface->fb) - glDeleteFramebuffersEXT (1, &surface->fb); + ctx->dispatch.DeleteFramebuffers (1, &surface->fb); if (surface->owns_tex) glDeleteTextures (1, &surface->tex); @@ -1368,6 +1374,7 @@ _cairo_gl_surface_get_font_options (void *abstract_surface, _cairo_font_options_init_default (options); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON); } static cairo_status_t @@ -1503,8 +1510,7 @@ _cairo_gl_surface_stroke (void *abstract_surface, return status; } - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_stroke_to_polygon (path, style, @@ -1580,8 +1586,7 @@ _cairo_gl_surface_fill (void *abstract_surface, return status; } - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon); if (likely (status == CAIRO_STATUS_SUCCESS)) { diff --git a/src/cairo-glx-context.c b/src/cairo-glx-context.c index fa9d8be..83963fb 100644 --- a/src/cairo-glx-context.c +++ b/src/cairo-glx-context.c @@ -193,6 +193,13 @@ cairo_glx_device_create (Display *dpy, GLXContext gl_ctx) ctx->base.swap_buffers = _glx_swap_buffers; ctx->base.destroy = _glx_destroy; + status = _cairo_gl_dispatch_init (&ctx->base.dispatch, + (cairo_gl_get_proc_addr_func_t) glXGetProcAddress); + if (unlikely (status)) { + free (ctx); + return _cairo_gl_context_create_in_error (status); + } + status = _cairo_gl_context_init (&ctx->base); if (unlikely (status)) { free (ctx); diff --git a/src/cairo-gstate-private.h b/src/cairo-gstate-private.h index b41c7a2..cd417ec 100644 --- a/src/cairo-gstate-private.h +++ b/src/cairo-gstate-private.h @@ -88,7 +88,7 @@ cairo_private cairo_status_t _cairo_gstate_restore (cairo_gstate_t **gstate, cairo_gstate_t **freelist); cairo_private cairo_bool_t -_cairo_gstate_is_redirected (cairo_gstate_t *gstate); +_cairo_gstate_is_group (cairo_gstate_t *gstate); cairo_private cairo_status_t _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child); @@ -96,9 +96,6 @@ _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child); cairo_private cairo_surface_t * _cairo_gstate_get_target (cairo_gstate_t *gstate); -cairo_private cairo_surface_t * -_cairo_gstate_get_parent_target (cairo_gstate_t *gstate); - cairo_private cairo_surface_t * _cairo_gstate_get_original_target (cairo_gstate_t *gstate); diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index b1d09d2..7298a7f 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -303,10 +303,6 @@ _cairo_gstate_restore (cairo_gstate_t **gstate, cairo_gstate_t **freelist) * Redirect @gstate rendering to a "child" target. The original * "parent" target with which the gstate was created will not be * affected. See _cairo_gstate_get_target(). - * - * Unless the redirected target has the same device offsets as the - * original #cairo_t target, the clip will be INVALID after this call, - * and the caller should either recreate or reset the clip. **/ cairo_status_t _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child) @@ -320,7 +316,6 @@ _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child) /* Set up our new parent_target based on our current target; * gstate->parent_target will take the ref that is held by gstate->target */ - cairo_surface_destroy (gstate->parent_target); gstate->parent_target = gstate->target; /* Now set up our new target; we overwrite gstate->target directly, @@ -342,18 +337,19 @@ _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child) } /** - * _cairo_gstate_is_redirected + * _cairo_gstate_is_group * @gstate: a #cairo_gstate_t * - * This space left intentionally blank. + * Check if _cairo_gstate_redirect_target has been called on the head + * of the stack. * - * Return value: %TRUE if the gstate is redirected to a target - * different than the original, %FALSE otherwise. + * Return value: %TRUE if @gstate is redirected to a target different + * than the previous state in the stack, %FALSE otherwise. **/ cairo_bool_t -_cairo_gstate_is_redirected (cairo_gstate_t *gstate) +_cairo_gstate_is_group (cairo_gstate_t *gstate) { - return (gstate->target != gstate->original_target); + return gstate->parent_target != NULL; } /** @@ -371,19 +367,6 @@ _cairo_gstate_get_target (cairo_gstate_t *gstate) return gstate->target; } -/** - * _cairo_gstate_get_parent_target: - * @gstate: a #cairo_gstate_t - * - * Return the parent surface of the current drawing target surface; - * if this particular gstate isn't a redirect gstate, this will return %NULL. - **/ -cairo_surface_t * -_cairo_gstate_get_parent_target (cairo_gstate_t *gstate) -{ - return gstate->parent_target; -} - /** * _cairo_gstate_get_original_target: * @gstate: a #cairo_gstate_t @@ -1020,6 +1003,20 @@ _reduce_op (cairo_gstate_t *gstate) return op; } +static cairo_status_t +_cairo_gstate_get_pattern_status (const cairo_pattern_t *pattern) +{ + if (unlikely (pattern->type == CAIRO_PATTERN_TYPE_MESH && + ((const cairo_mesh_pattern_t *) pattern)->current_patch)) + { + /* If current patch != NULL, the pattern is under construction + * and cannot be used as a source */ + return CAIRO_STATUS_INVALID_MESH_CONSTRUCTION; + } + + return pattern->status; +} + cairo_status_t _cairo_gstate_paint (cairo_gstate_t *gstate) { @@ -1029,8 +1026,9 @@ _cairo_gstate_paint (cairo_gstate_t *gstate) cairo_status_t status; cairo_operator_t op; - if (unlikely (gstate->source->status)) - return gstate->source->status; + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; if (gstate->op == CAIRO_OPERATOR_DEST) return CAIRO_STATUS_SUCCESS; @@ -1064,11 +1062,13 @@ _cairo_gstate_mask (cairo_gstate_t *gstate, cairo_clip_t clip; cairo_status_t status; - if (unlikely (mask->status)) - return mask->status; + status = _cairo_gstate_get_pattern_status (mask); + if (unlikely (status)) + return status; - if (unlikely (gstate->source->status)) - return gstate->source->status; + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; if (gstate->op == CAIRO_OPERATOR_DEST) return CAIRO_STATUS_SUCCESS; @@ -1140,8 +1140,9 @@ _cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path) cairo_clip_t clip; cairo_status_t status; - if (unlikely (gstate->source->status)) - return gstate->source->status; + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; if (gstate->op == CAIRO_OPERATOR_DEST) return CAIRO_STATUS_SUCCESS; @@ -1242,8 +1243,9 @@ _cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path) cairo_clip_t clip; cairo_status_t status; - if (unlikely (gstate->source->status)) - return gstate->source->status; + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; if (gstate->op == CAIRO_OPERATOR_DEST) return CAIRO_STATUS_SUCCESS; @@ -1454,7 +1456,7 @@ _cairo_gstate_fill_extents (cairo_gstate_t *gstate, cairo_status_t status; cairo_traps_t traps; - if (path->is_empty_fill) { + if (_cairo_path_fixed_fill_is_empty (path)) { if (x1) *x1 = 0.0; if (y1) @@ -1909,8 +1911,9 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate, cairo_status_t status; cairo_clip_t clip; - if (unlikely (gstate->source->status)) - return gstate->source->status; + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; if (gstate->op == CAIRO_OPERATOR_DEST) return CAIRO_STATUS_SUCCESS; diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c index fcc832e..6082215 100644 --- a/src/cairo-image-surface.c +++ b/src/cairo-image-surface.c @@ -524,6 +524,11 @@ slim_hidden_def (cairo_image_surface_create_for_data); * Get a pointer to the data of the image surface, for direct * inspection or modification. * + * A call to cairo_surface_flush() is required before accessing the + * pixel data to ensure that all pending drawing operations are + * finished. A call to cairo_surface_mark_dirty() is required after + * the data is modified. + * * Return value: a pointer to the image data of this surface or %NULL * if @surface is not an image surface, or if cairo_surface_finish() * has been called. @@ -856,25 +861,6 @@ _cairo_image_surface_unset_clip_region (cairo_image_surface_t *surface) pixman_image_set_clip_region32 (surface->pixman_image, NULL); } -static double -_pixman_nearest_sample (double d) -{ - return ceil (d - .5); -} - -static cairo_bool_t -_nearest_sample (cairo_filter_t filter, double *tx, double *ty) -{ - if (filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST) { - *tx = _pixman_nearest_sample (*tx); - *ty = _pixman_nearest_sample (*ty); - } else { - if (*tx != floor (*tx) || *ty != floor (*ty)) - return FALSE; - } - return fabs (*tx) < PIXMAN_MAX_INT && fabs (*ty) < PIXMAN_MAX_INT; -} - #if HAS_ATOMIC_OPS static pixman_image_t *__pixman_transparent_image; static pixman_image_t *__pixman_black_image; @@ -1093,9 +1079,12 @@ _pixman_image_for_gradient (const cairo_gradient_pattern_t *pattern, pixman_image_t *pixman_image; pixman_gradient_stop_t pixman_stops_static[2]; pixman_gradient_stop_t *pixman_stops = pixman_stops_static; - cairo_matrix_t matrix = pattern->base.matrix; - double tx, ty; + pixman_transform_t pixman_transform; + cairo_matrix_t matrix; + cairo_circle_double_t extremes[2]; + pixman_point_fixed_t p1, p2; unsigned int i; + cairo_status_t status; if (pattern->n_stops > ARRAY_LENGTH(pixman_stops_static)) { pixman_stops = _cairo_malloc_ab (pattern->n_stops, @@ -1112,66 +1101,24 @@ _pixman_image_for_gradient (const cairo_gradient_pattern_t *pattern, pixman_stops[i].color.alpha = pattern->stops[i].color.alpha_short; } - if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) { - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) pattern; - pixman_point_fixed_t p1, p2; - cairo_fixed_t xdim, ydim; - - xdim = fabs (linear->p2.x - linear->p1.x); - ydim = fabs (linear->p2.y - linear->p1.y); - - /* - * Transform the matrix to avoid overflow when converting between - * cairo_fixed_t and pixman_fixed_t (without incurring performance - * loss when the transformation is unnecessary). - * - * XXX: Consider converting out-of-range co-ordinates and transforms. - * Having a function to compute the required transformation to - * "normalize" a given bounding box would be generally useful - - * cf linear patterns, gradient patterns, surface patterns... - */ - if (_cairo_fixed_integer_ceil (xdim) > PIXMAN_MAX_INT || - _cairo_fixed_integer_ceil (ydim) > PIXMAN_MAX_INT) - { - double sf; + _cairo_gradient_pattern_fit_to_range (pattern, PIXMAN_MAX_INT >> 1, &matrix, extremes); - if (xdim > ydim) - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (xdim); - else - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (ydim); - - p1.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.x) * sf); - p1.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.y) * sf); - p2.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.x) * sf); - p2.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.y) * sf); - - cairo_matrix_scale (&matrix, sf, sf); - } - else - { - p1.x = _cairo_fixed_to_16_16 (linear->p1.x); - p1.y = _cairo_fixed_to_16_16 (linear->p1.y); - p2.x = _cairo_fixed_to_16_16 (linear->p2.x); - p2.y = _cairo_fixed_to_16_16 (linear->p2.y); - } + p1.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + p1.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + p2.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + p2.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); + if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) { pixman_image = pixman_image_create_linear_gradient (&p1, &p2, pixman_stops, pattern->n_stops); } else { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - pixman_point_fixed_t c1, c2; pixman_fixed_t r1, r2; - c1.x = _cairo_fixed_to_16_16 (radial->c1.x); - c1.y = _cairo_fixed_to_16_16 (radial->c1.y); - r1 = _cairo_fixed_to_16_16 (radial->r1); - - c2.x = _cairo_fixed_to_16_16 (radial->c2.x); - c2.y = _cairo_fixed_to_16_16 (radial->c2.y); - r2 = _cairo_fixed_to_16_16 (radial->r2); + r1 = _cairo_fixed_16_16_from_double (extremes[0].radius); + r2 = _cairo_fixed_16_16_from_double (extremes[1].radius); - pixman_image = pixman_image_create_radial_gradient (&c1, &c2, r1, r2, + pixman_image = pixman_image_create_radial_gradient (&p1, &p2, r1, r2, pixman_stops, pattern->n_stops); } @@ -1182,49 +1129,19 @@ _pixman_image_for_gradient (const cairo_gradient_pattern_t *pattern, if (unlikely (pixman_image == NULL)) return NULL; - tx = pattern->base.matrix.x0; - ty = pattern->base.matrix.y0; - if (! _cairo_matrix_is_translation (&pattern->base.matrix) || - ! _nearest_sample (pattern->base.filter, &tx, &ty)) - { - pixman_transform_t pixman_transform; - - if (tx != 0. || ty != 0.) { - cairo_matrix_t m, inv; - cairo_status_t status; - double x, y; - - /* pixman also limits the [xy]_offset to 16 bits so evenly - * spread the bits between the two. - */ - inv = pattern->base.matrix; - status = cairo_matrix_invert (&inv); - assert (status == CAIRO_STATUS_SUCCESS); - - x = floor (inv.x0 / 2); - y = floor (inv.y0 / 2); - tx = -x; - ty = -y; - cairo_matrix_init_translate (&inv, x, y); - cairo_matrix_multiply (&m, &inv, &pattern->base.matrix); - _cairo_matrix_to_pixman_matrix (&m, &pixman_transform, - extents->x + extents->width/2., - extents->y + extents->height/2.); - } else { - tx = ty = 0; - _cairo_matrix_to_pixman_matrix (&pattern->base.matrix, - &pixman_transform, - extents->x + extents->width/2., - extents->y + extents->height/2.); - } - - if (! pixman_image_set_transform (pixman_image, &pixman_transform)) { + *ix = *iy = 0; + status = _cairo_matrix_to_pixman_matrix_offset (&matrix, pattern->base.filter, + extents->x + extents->width/2., + extents->y + extents->height/2., + &pixman_transform, ix, iy); + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) { + if (unlikely (status != CAIRO_STATUS_SUCCESS) || + ! pixman_image_set_transform (pixman_image, &pixman_transform)) + { pixman_image_unref (pixman_image); return NULL; } } - *ix = tx; - *iy = ty; { pixman_repeat_t pixman_repeat; @@ -1322,13 +1239,15 @@ _pixel_to_solid (cairo_image_surface_t *image, int x, int y) case CAIRO_FORMAT_A1: pixel = *(uint8_t *) (image->data + y * image->stride + x/8); - return pixel & (1 << (x&7)) ? _pixman_white_image () : _pixman_transparent_image (); + return pixel & (1 << (x&7)) ? _pixman_black_image () : _pixman_transparent_image (); case CAIRO_FORMAT_A8: color.alpha = *(uint8_t *) (image->data + y * image->stride + x); color.alpha |= color.alpha << 8; if (color.alpha == 0) return _pixman_transparent_image (); + if (color.alpha == 0xffff) + return _pixman_black_image (); color.red = color.green = color.blue = 0; return pixman_image_create_solid_fill (&color); @@ -1368,16 +1287,17 @@ static pixman_image_t * _pixman_image_for_surface (const cairo_surface_pattern_t *pattern, cairo_bool_t is_mask, const cairo_rectangle_int_t *extents, + cairo_matrix_t *dst_device_transform, int *ix, int *iy) { + pixman_transform_t pixman_transform; pixman_image_t *pixman_image; + cairo_matrix_t m; cairo_rectangle_int_t sample; cairo_extend_t extend; cairo_filter_t filter; - double tx, ty; - - tx = pattern->base.matrix.x0; - ty = pattern->base.matrix.y0; + cairo_status_t status; + cairo_bool_t undo_src_transform = FALSE; extend = pattern->base.extend; filter = sampled_area (pattern, extents, &sample); @@ -1420,12 +1340,11 @@ _pixman_image_for_surface (const cairo_surface_pattern_t *pattern, } /* avoid allocating a 'pattern' image if we can reuse the original */ + *ix = *iy = 0; if (extend == CAIRO_EXTEND_NONE && - _cairo_matrix_is_translation (&pattern->base.matrix) && - _nearest_sample (filter, &tx, &ty)) + _cairo_matrix_is_pixman_translation (&pattern->base.matrix, + filter, ix, iy)) { - *ix = tx; - *iy = ty; return pixman_image_ref (source->pixman_image); } @@ -1462,12 +1381,12 @@ _pixman_image_for_surface (const cairo_surface_pattern_t *pattern, } } + *ix = sub->extents.x; + *iy = sub->extents.y; if (is_contained && - _cairo_matrix_is_translation (&pattern->base.matrix) && - _nearest_sample (filter, &tx, &ty)) + _cairo_matrix_is_pixman_translation (&pattern->base.matrix, + filter, ix, iy)) { - *ix = tx + sub->extents.x; - *iy = ty + sub->extents.y; return pixman_image_ref (source->pixman_image); } @@ -1484,13 +1403,15 @@ _pixman_image_for_surface (const cairo_surface_pattern_t *pattern, } } + *ix = *iy = 0; + if (pixman_image == NULL) { struct acquire_source_cleanup *cleanup; cairo_image_surface_t *image; void *extra; cairo_status_t status; - status = _cairo_surface_acquire_source_image (pattern->surface, &image, &extra); + status = _cairo_surface_acquire_source_image_transformed (pattern->surface, dst_device_transform, &image, &extra); if (unlikely (status)) return NULL; @@ -1536,54 +1457,36 @@ _pixman_image_for_surface (const cairo_surface_pattern_t *pattern, cleanup->image_extra = extra; pixman_image_set_destroy_function (pixman_image, _acquire_source_cleanup, cleanup); + undo_src_transform = TRUE; } - if (! _cairo_matrix_is_translation (&pattern->base.matrix) || - ! _nearest_sample (filter, &tx, &ty)) - { - pixman_transform_t pixman_transform; - cairo_matrix_t m; - - m = pattern->base.matrix; - if (m.x0 != 0. || m.y0 != 0.) { - cairo_matrix_t inv; - cairo_status_t status; - double x, y; - - /* pixman also limits the [xy]_offset to 16 bits so evenly - * spread the bits between the two. - */ - inv = m; - status = cairo_matrix_invert (&inv); - assert (status == CAIRO_STATUS_SUCCESS); - - x = floor (inv.x0 / 2); - y = floor (inv.y0 / 2); - tx = -x; - ty = -y; - cairo_matrix_init_translate (&inv, x, y); - cairo_matrix_multiply (&m, &inv, &m); - } else { - tx = ty = 0; - } + m = pattern->base.matrix; + if (undo_src_transform) { + cairo_matrix_t sm; - _cairo_matrix_to_pixman_matrix (&m, &pixman_transform, - extents->x + extents->width/2., - extents->y + extents->height/2.); - if (! pixman_image_set_transform (pixman_image, &pixman_transform)) { - pixman_image_unref (pixman_image); - return NULL; - } + cairo_matrix_init_scale (&sm, + dst_device_transform->xx, + dst_device_transform->yy); + cairo_matrix_multiply (&m, &m, &sm); } - *ix = tx; - *iy = ty; - if (_cairo_matrix_has_unity_scale (&pattern->base.matrix) && - tx == pattern->base.matrix.x0 && - ty == pattern->base.matrix.y0) + status = _cairo_matrix_to_pixman_matrix_offset (&m, filter, + extents->x + extents->width/2., + extents->y + extents->height/2., + &pixman_transform, ix, iy); + if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) { + /* If the transform is an identity, we don't need to set it + * and we can use any filtering, so choose the fastest one. */ pixman_image_set_filter (pixman_image, PIXMAN_FILTER_NEAREST, NULL, 0); } + else if (unlikely (status != CAIRO_STATUS_SUCCESS || + ! pixman_image_set_transform (pixman_image, + &pixman_transform))) + { + pixman_image_unref (pixman_image); + return NULL; + } else { pixman_filter_t pixman_filter; @@ -1649,6 +1552,7 @@ static pixman_image_t * _pixman_image_for_pattern (const cairo_pattern_t *pattern, cairo_bool_t is_mask, const cairo_rectangle_int_t *extents, + cairo_matrix_t *dst_device_transform, int *tx, int *ty) { *tx = *ty = 0; @@ -1669,7 +1573,32 @@ _pixman_image_for_pattern (const cairo_pattern_t *pattern, case CAIRO_PATTERN_TYPE_SURFACE: return _pixman_image_for_surface ((const cairo_surface_pattern_t *) pattern, - is_mask, extents, tx, ty); + is_mask, extents, dst_device_transform, tx, ty); + + case CAIRO_PATTERN_TYPE_MESH: { + cairo_surface_t *image; + pixman_image_t *r; + void * data; + int width, height, stride; + + *tx = -extents->x; + *ty = -extents->y; + width = extents->width; + height = extents->height; + + image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); + if (unlikely (image->status)) + return NULL; + + stride = cairo_image_surface_get_stride (image); + data = cairo_image_surface_get_data (image); + + _cairo_mesh_pattern_rasterize ((cairo_mesh_pattern_t *) pattern, + data, width, height, stride, *tx, *ty); + r = pixman_image_ref (((cairo_image_surface_t *)image)->pixman_image); + cairo_surface_destroy (image); + return r; + } } } @@ -1907,6 +1836,7 @@ typedef cairo_status_t const cairo_pattern_t *src, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region); @@ -1958,6 +1888,7 @@ _create_composite_mask_pattern (cairo_clip_t *clip, mask, PIXMAN_a8, CAIRO_OPERATOR_ADD, NULL, extents->x, extents->y, + &dst->base.device_transform, extents, NULL); if (unlikely (status)) { pixman_image_unref (mask); @@ -2034,7 +1965,7 @@ _clip_and_composite_with_mask (cairo_clip_t *clip, pixman_image_t *src; int src_x, src_y; - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, &dst->base.device_transform, &src_x, &src_y); if (unlikely (src == NULL)) { pixman_image_unref (mask); return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -2082,6 +2013,7 @@ _clip_and_composite_combine (cairo_clip_t *clip, tmp, dst->pixman_format, CAIRO_OPERATOR_ADD, NULL, extents->x, extents->y, + &dst->base.device_transform, extents, NULL); } else { /* Initialize the temporary surface from the destination surface */ @@ -2098,6 +2030,7 @@ _clip_and_composite_combine (cairo_clip_t *clip, tmp, dst->pixman_format, op, src, extents->x, extents->y, + &dst->base.device_transform, extents, NULL); } if (unlikely (status)) @@ -2181,6 +2114,7 @@ _clip_and_composite_source (cairo_clip_t *clip, dst->pixman_image, dst->pixman_format, CAIRO_OPERATOR_SOURCE, NULL, extents->x, extents->y, + &dst->base.device_transform, extents, NULL); if (unlikely (status)) return status; @@ -2196,7 +2130,7 @@ _clip_and_composite_source (cairo_clip_t *clip, if (unlikely (mask == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, &dst->base.device_transform, &src_x, &src_y); if (unlikely (src == NULL)) { pixman_image_unref (mask); return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -2317,6 +2251,7 @@ _clip_and_composite (cairo_image_surface_t *dst, dst->pixman_image, dst->pixman_format, op, src, 0, 0, + &dst->base.device_transform, &extents->bounded, clip_region); } @@ -2434,6 +2369,7 @@ _composite_traps (void *closure, const cairo_pattern_t *pattern, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region) { @@ -2459,7 +2395,7 @@ _composite_traps (void *closure, return CAIRO_STATUS_SUCCESS; } - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -2866,7 +2802,7 @@ _composite_unaligned_boxes (cairo_image_surface_t *dst, if (unlikely (status)) goto CLEANUP; - src = _pixman_image_for_pattern (pattern, FALSE, &extents->bounded, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, &extents->bounded, &dst->base.device_transform, &src_x, &src_y); if (unlikely (src == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto CLEANUP; @@ -2983,7 +2919,7 @@ _composite_boxes (cairo_image_surface_t *dst, } if (pattern != NULL) { - src = _pixman_image_for_pattern (pattern, FALSE, &extents->bounded, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, &extents->bounded, &dst->base.device_transform, &src_x, &src_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); } else { @@ -3320,6 +3256,7 @@ _composite_mask (void *closure, const cairo_pattern_t *src_pattern, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region) { @@ -3329,11 +3266,11 @@ _composite_mask (void *closure, int mask_x = 0, mask_y = 0; if (src_pattern != NULL) { - src = _pixman_image_for_pattern (src_pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (src_pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - mask = _pixman_image_for_pattern (mask_pattern, TRUE, extents, &mask_x, &mask_y); + mask = _pixman_image_for_pattern (mask_pattern, TRUE, extents, dst_device_transform, &mask_x, &mask_y); if (unlikely (mask == NULL)) { pixman_image_unref (src); return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -3342,7 +3279,7 @@ _composite_mask (void *closure, if (mask_pattern->has_component_alpha) pixman_image_set_component_alpha (mask, TRUE); } else { - src = _pixman_image_for_pattern (mask_pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (mask_pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); } @@ -3418,6 +3355,7 @@ _composite_spans (void *closure, const cairo_pattern_t *pattern, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region) { @@ -3501,7 +3439,7 @@ _composite_spans (void *closure, pixman_image_t *src; int src_x, src_y; - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); if (unlikely (src == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto CLEANUP_RENDERER; @@ -3635,7 +3573,7 @@ _cairo_image_surface_stroke (void *abstract_surface, } status = CAIRO_INT_STATUS_UNSUPPORTED; - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -3657,8 +3595,7 @@ _cairo_image_surface_stroke (void *abstract_surface, if (status == CAIRO_INT_STATUS_UNSUPPORTED) { cairo_polygon_t polygon; - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_stroke_to_polygon (path, style, @@ -3735,7 +3672,7 @@ _cairo_image_surface_fill (void *abstract_surface, return status; } - if (_cairo_path_fixed_is_rectilinear_fill (path)) { + if (_cairo_path_fixed_fill_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -3754,10 +3691,9 @@ _cairo_image_surface_fill (void *abstract_surface, } else { cairo_polygon_t polygon; - assert (! path->is_empty_fill); + assert (! _cairo_path_fixed_fill_is_empty (path)); - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon); if (likely (status == CAIRO_STATUS_SUCCESS)) { @@ -3792,6 +3728,7 @@ _composite_glyphs_via_mask (void *closure, const cairo_pattern_t *pattern, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region) { @@ -3807,7 +3744,7 @@ _composite_glyphs_via_mask (void *closure, int src_x, src_y; int i; - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -3928,6 +3865,7 @@ _composite_glyphs (void *closure, const cairo_pattern_t *pattern, int dst_x, int dst_y, + cairo_matrix_t *dst_device_transform, const cairo_rectangle_int_t *extents, cairo_region_t *clip_region) { @@ -3940,7 +3878,7 @@ _composite_glyphs (void *closure, int i; if (pattern != NULL) { - src = _pixman_image_for_pattern (pattern, FALSE, extents, &src_x, &src_y); + src = _pixman_image_for_pattern (pattern, FALSE, extents, dst_device_transform, &src_x, &src_y); src_x -= dst_x; src_y -= dst_y; } else { @@ -4049,8 +3987,10 @@ _cairo_image_surface_glyphs (void *abstract_surface, if (clip != NULL && extents.is_bounded) { clip = _cairo_clip_init_copy (&local_clip, clip); status = _cairo_clip_rectangle (clip, &extents.bounded); - if (unlikely (status)) + if (unlikely (status)) { + _cairo_clip_fini (&local_clip); return status; + } have_clip = TRUE; } @@ -4092,6 +4032,7 @@ _cairo_image_surface_get_font_options (void *abstract_surface, _cairo_font_options_init_default (options); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON); } /* legacy interface kept for compatibility until surface-fallback is removed */ @@ -4204,7 +4145,7 @@ _cairo_image_surface_composite (cairo_operator_t op, extents.is_bounded = _cairo_operator_bounded_by_either (op); - src = _pixman_image_for_pattern (src_pattern, FALSE, &extents.source, &src_offset_x, &src_offset_y); + src = _pixman_image_for_pattern (src_pattern, FALSE, &extents.source, &dst->base.device_transform, &src_offset_x, &src_offset_y); if (unlikely (src == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -4213,7 +4154,7 @@ _cairo_image_surface_composite (cairo_operator_t op, pixman_image_t *mask; int mask_offset_x, mask_offset_y; - mask = _pixman_image_for_pattern (mask_pattern, TRUE, &extents.mask, &mask_offset_x, &mask_offset_y); + mask = _pixman_image_for_pattern (mask_pattern, TRUE, &extents.mask, &dst->base.device_transform, &mask_offset_x, &mask_offset_y); if (unlikely (mask == NULL)) { pixman_image_unref (src); return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -4378,6 +4319,7 @@ _cairo_image_surface_composite_trapezoids (cairo_operator_t op, op, &source_pattern.base, 0, 0, + &dst->base.device_transform, &extents.bounded, clip_region); @@ -4482,7 +4424,7 @@ _cairo_image_surface_span_renderer_finish (void *abstract_renderer) return status; } - src = _pixman_image_for_pattern (renderer->pattern, FALSE, &rects->bounded, &src_x, &src_y); + src = _pixman_image_for_pattern (renderer->pattern, FALSE, &rects->bounded, &renderer->dst->base.device_transform, &src_x, &src_y); if (src == NULL) return _cairo_error (CAIRO_STATUS_NO_MEMORY); diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c index 2536ebf..1a4fe81 100644 --- a/src/cairo-matrix.c +++ b/src/cairo-matrix.c @@ -36,6 +36,9 @@ #include "cairoint.h" #include "cairo-error-private.h" +#include + +#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ #if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) #define ISFINITE(x) isfinite (x) @@ -906,87 +909,265 @@ _cairo_matrix_transformed_circle_major_axis (const cairo_matrix_t *matrix, */ } -void +static const pixman_transform_t pixman_identity_transform = {{ + {1 << 16, 0, 0}, + { 0, 1 << 16, 0}, + { 0, 0, 1 << 16} + }}; + +static cairo_status_t _cairo_matrix_to_pixman_matrix (const cairo_matrix_t *matrix, pixman_transform_t *pixman_transform, double xc, double yc) { - static const pixman_transform_t pixman_identity_transform = {{ - {1 << 16, 0, 0}, - { 0, 1 << 16, 0}, - { 0, 0, 1 << 16} - }}; + cairo_matrix_t inv; + unsigned max_iterations; + + pixman_transform->matrix[0][0] = _cairo_fixed_16_16_from_double (matrix->xx); + pixman_transform->matrix[0][1] = _cairo_fixed_16_16_from_double (matrix->xy); + pixman_transform->matrix[0][2] = _cairo_fixed_16_16_from_double (matrix->x0); + + pixman_transform->matrix[1][0] = _cairo_fixed_16_16_from_double (matrix->yx); + pixman_transform->matrix[1][1] = _cairo_fixed_16_16_from_double (matrix->yy); + pixman_transform->matrix[1][2] = _cairo_fixed_16_16_from_double (matrix->y0); + + pixman_transform->matrix[2][0] = 0; + pixman_transform->matrix[2][1] = 0; + pixman_transform->matrix[2][2] = 1 << 16; + + /* The conversion above breaks cairo's translation invariance: + * a translation of (a, b) in device space translates to + * a translation of (xx * a + xy * b, yx * a + yy * b) + * for cairo, while pixman uses rounded versions of xx ... yy. + * This error increases as a and b get larger. + * + * To compensate for this, we fix the point (xc, yc) in pattern + * space and adjust pixman's transform to agree with cairo's at + * that point. + */ - if (_cairo_matrix_is_identity (matrix)) { - *pixman_transform = pixman_identity_transform; - } else { - cairo_matrix_t inv; - unsigned max_iterations; - - pixman_transform->matrix[0][0] = _cairo_fixed_16_16_from_double (matrix->xx); - pixman_transform->matrix[0][1] = _cairo_fixed_16_16_from_double (matrix->xy); - pixman_transform->matrix[0][2] = _cairo_fixed_16_16_from_double (matrix->x0); - - pixman_transform->matrix[1][0] = _cairo_fixed_16_16_from_double (matrix->yx); - pixman_transform->matrix[1][1] = _cairo_fixed_16_16_from_double (matrix->yy); - pixman_transform->matrix[1][2] = _cairo_fixed_16_16_from_double (matrix->y0); - - pixman_transform->matrix[2][0] = 0; - pixman_transform->matrix[2][1] = 0; - pixman_transform->matrix[2][2] = 1 << 16; - - /* The conversion above breaks cairo's translation invariance: - * a translation of (a, b) in device space translates to - * a translation of (xx * a + xy * b, yx * a + yy * b) - * for cairo, while pixman uses rounded versions of xx ... yy. - * This error increases as a and b get larger. - * - * To compensate for this, we fix the point (xc, yc) in pattern - * space and adjust pixman's transform to agree with cairo's at - * that point. + if (_cairo_matrix_has_unity_scale (matrix)) + return CAIRO_STATUS_SUCCESS; + + if (unlikely (fabs (matrix->xx) > PIXMAN_MAX_INT || + fabs (matrix->xy) > PIXMAN_MAX_INT || + fabs (matrix->x0) > PIXMAN_MAX_INT || + fabs (matrix->yx) > PIXMAN_MAX_INT || + fabs (matrix->yy) > PIXMAN_MAX_INT || + fabs (matrix->y0) > PIXMAN_MAX_INT)) + { + return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); + } + + /* Note: If we can't invert the transformation, skip the adjustment. */ + inv = *matrix; + if (cairo_matrix_invert (&inv) != CAIRO_STATUS_SUCCESS) + return CAIRO_STATUS_SUCCESS; + + /* find the pattern space coordinate that maps to (xc, yc) */ + max_iterations = 5; + do { + double x,y; + pixman_vector_t vector; + cairo_fixed_16_16_t dx, dy; + + vector.vector[0] = _cairo_fixed_16_16_from_double (xc); + vector.vector[1] = _cairo_fixed_16_16_from_double (yc); + vector.vector[2] = 1 << 16; + + /* If we can't transform the reference point, skip the adjustment. */ + if (! pixman_transform_point_3d (pixman_transform, &vector)) + return CAIRO_STATUS_SUCCESS; + + x = pixman_fixed_to_double (vector.vector[0]); + y = pixman_fixed_to_double (vector.vector[1]); + cairo_matrix_transform_point (&inv, &x, &y); + + /* Ideally, the vector should now be (xc, yc). + * We can now compensate for the resulting error. */ + x -= xc; + y -= yc; + cairo_matrix_transform_distance (matrix, &x, &y); + dx = _cairo_fixed_16_16_from_double (x); + dy = _cairo_fixed_16_16_from_double (y); + pixman_transform->matrix[0][2] -= dx; + pixman_transform->matrix[1][2] -= dy; - if (_cairo_matrix_has_unity_scale (matrix)) - return; + if (dx == 0 && dy == 0) + return CAIRO_STATUS_SUCCESS; + } while (--max_iterations); - /* Note: If we can't invert the transformation, skip the adjustment. */ - inv = *matrix; - if (cairo_matrix_invert (&inv) != CAIRO_STATUS_SUCCESS) - return; + /* We didn't find an exact match between cairo and pixman, but + * the matrix should be mostly correct */ + return CAIRO_STATUS_SUCCESS; +} - /* find the pattern space coordinate that maps to (xc, yc) */ - xc += .5; yc += .5; /* offset for the pixel centre */ - max_iterations = 5; - do { - double x,y; - pixman_vector_t vector; - cairo_fixed_16_16_t dx, dy; +static inline double +_pixman_nearest_sample (double d) +{ + return ceil (d - .5); +} - vector.vector[0] = _cairo_fixed_16_16_from_double (xc); - vector.vector[1] = _cairo_fixed_16_16_from_double (yc); - vector.vector[2] = 1 << 16; +/** + * _cairo_matrix_is_pixman_translation: + * @matrix: a matrix + * @filter: the filter to be used on the pattern transformed by @matrix + * @x_offset: the translation in the X direction + * @y_offset: the translation in the Y direction + * + * Checks if @matrix translated by (x_offset, y_offset) can be + * represented using just an offset (within the range pixman can + * accept) and an identity matrix. + * + * Passing a non-zero value in x_offset/y_offset has the same effect + * as applying cairo_matrix_translate(matrix, x_offset, y_offset) and + * setting x_offset and y_offset to 0. + * + * Upon return x_offset and y_offset contain the translation vector if + * the return value is %TRUE. If the return value is %FALSE, they will + * not be modified. + * + * Return value: %TRUE if @matrix can be represented as a pixman + * translation, %FALSE otherwise. + **/ +cairo_bool_t +_cairo_matrix_is_pixman_translation (const cairo_matrix_t *matrix, + cairo_filter_t filter, + int *x_offset, + int *y_offset) +{ + double tx, ty; + + if (!_cairo_matrix_is_translation (matrix)) + return FALSE; + + tx = matrix->x0 + *x_offset; + ty = matrix->y0 + *y_offset; + + if (filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST) { + tx = _pixman_nearest_sample (tx); + ty = _pixman_nearest_sample (ty); + } else if (tx != floor (tx) || ty != floor (ty)) { + return FALSE; + } + + if (fabs (tx) > PIXMAN_MAX_INT || fabs (ty) > PIXMAN_MAX_INT) + return FALSE; + + *x_offset = _cairo_lround (tx); + *y_offset = _cairo_lround (ty); + return TRUE; +} - if (! pixman_transform_point_3d (pixman_transform, &vector)) - return; +/** + * _cairo_matrix_to_pixman_matrix_offset: + * @matrix: a matrix + * @filter: the filter to be used on the pattern transformed by @matrix + * @xc: the X coordinate of the point to fix in pattern space + * @yc: the Y coordinate of the point to fix in pattern space + * @out_transform: the transformation which best approximates @matrix + * @x_offset: the translation in the X direction + * @y_offset: the translation in the Y direction + * + * This function tries to represent @matrix translated by (x_offset, + * y_offset) as a %pixman_transform_t and an translation. + * + * Passing a non-zero value in x_offset/y_offset has the same effect + * as applying cairo_matrix_translate(matrix, x_offset, y_offset) and + * setting x_offset and y_offset to 0. + * + * If it is possible to represent the matrix with an identity + * %pixman_transform_t and a translation within the valid range for + * pixman, this function will set @out_transform to be the identity, + * @x_offset and @y_offset to be the translation vector and will + * return %CAIRO_INT_STATUS_NOTHING_TO_DO. Otherwise it will try to + * evenly divide the translational component of @matrix between + * @out_transform and (@x_offset, @y_offset). + * + * Upon return x_offset and y_offset contain the translation vector. + * + * Return value: %CAIRO_INT_STATUS_NOTHING_TO_DO if the out_transform + * is the identity, %CAIRO_STATUS_INVALID_MATRIX if it was not + * possible to represent @matrix as a pixman_transform_t without + * overflows, %CAIRO_STATUS_SUCCESS otherwise. + **/ +cairo_status_t +_cairo_matrix_to_pixman_matrix_offset (const cairo_matrix_t *matrix, + cairo_filter_t filter, + double xc, + double yc, + pixman_transform_t *out_transform, + int *x_offset, + int *y_offset) +{ + cairo_bool_t is_pixman_translation; - x = pixman_fixed_to_double (vector.vector[0]); - y = pixman_fixed_to_double (vector.vector[1]); - cairo_matrix_transform_point (&inv, &x, &y); + is_pixman_translation = _cairo_matrix_is_pixman_translation (matrix, + filter, + x_offset, + y_offset); - /* Ideally, the vector should now be (xc, yc). - * We can now compensate for the resulting error. + if (is_pixman_translation) { + *out_transform = pixman_identity_transform; + return CAIRO_INT_STATUS_NOTHING_TO_DO; + } else { + cairo_matrix_t m; + + m = *matrix; + cairo_matrix_translate (&m, *x_offset, *y_offset); + if (m.x0 != 0.0 || m.y0 != 0.0) { + double tx, ty, norm; + int i, j; + + /* pixman also limits the [xy]_offset to 16 bits so evenly + * spread the bits between the two. + * + * To do this, find the solutions of: + * |x| = |x*m.xx + y*m.xy + m.x0| + * |y| = |x*m.yx + y*m.yy + m.y0| + * + * and select the one whose maximum norm is smallest. */ - x -= xc; - y -= yc; - cairo_matrix_transform_distance (matrix, &x, &y); - dx = _cairo_fixed_16_16_from_double (x); - dy = _cairo_fixed_16_16_from_double (y); - pixman_transform->matrix[0][2] -= dx; - pixman_transform->matrix[1][2] -= dy; - - if (dx == 0 && dy == 0) - break; - } while (--max_iterations); + tx = m.x0; + ty = m.y0; + norm = fmax (fabs (tx), fabs (ty)); + + for (i = -1; i < 2; i+=2) { + for (j = -1; j < 2; j+=2) { + double x, y, den, new_norm; + + den = (m.xx + i) * (m.yy + j) - m.xy * m.yx; + if (fabs (den) < DBL_EPSILON) + continue; + + x = m.y0 * m.xy - m.x0 * (m.yy + j); + y = m.x0 * m.yx - m.y0 * (m.xx + i); + + den = 1 / den; + x *= den; + y *= den; + + new_norm = fmax (fabs (x), fabs (y)); + if (norm > new_norm) { + norm = new_norm; + tx = x; + ty = y; + } + } + } + + tx = floor (tx); + ty = floor (ty); + *x_offset = -tx; + *y_offset = -ty; + cairo_matrix_translate (&m, tx, ty); + } else { + *x_offset = 0; + *y_offset = 0; + } + + return _cairo_matrix_to_pixman_matrix (&m, out_transform, xc, yc); } } diff --git a/src/cairo-mesh-pattern-rasterizer.c b/src/cairo-mesh-pattern-rasterizer.c new file mode 100644 index 0000000..ed964bb --- /dev/null +++ b/src/cairo-mesh-pattern-rasterizer.c @@ -0,0 +1,937 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright 2009 Andrea Canciani + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * The Original Code is the cairo graphics library. + * + * The Initial Developer of the Original Code is Andrea Canciani. + * + * Contributor(s): + * Andrea Canciani + */ + +#include "cairoint.h" + +/* + * Rasterizer for mesh patterns. + * + * This implementation is based on techniques derived from several + * papers (available from ACM): + * + * - Lien, Shantz and Pratt "Adaptive Forward Differencing for + * Rendering Curves and Surfaces" (discussion of the AFD technique, + * bound of 1/sqrt(2) on step length without proof) + * + * - Popescu and Rosen, "Forward rasterization" (description of + * forward rasterization, proof of the previous bound) + * + * - Klassen, "Integer Forward Differencing of Cubic Polynomials: + * Analysis and Algorithms" + * + * - Klassen, "Exact Integer Hybrid Subdivision and Forward + * Differencing of Cubics" (improving the bound on the minimum + * number of steps) + * + * - Chang, Shantz and Rocchetti, "Rendering Cubic Curves and Surfaces + * with Integer Adaptive Forward Differencing" (analysis of forward + * differencing applied to Bezier patches) + * + * Notes: + * - Poor performance expected in degenerate cases + * + * - Patches mostly outside the drawing area are drawn completely (and + * clipped), wasting time + * + * - Both previous problems are greatly reduced by splitting until a + * reasonably small size and clipping the new tiles: execution time + * is quadratic in the convex-hull diameter instead than linear to + * the painted area. Splitting the tiles doesn't change the painted + * area but (usually) reduces the bounding box area (bbox area can + * remain the same after splitting, but cannot grow) + * + * - The initial implementation used adaptive forward differencing, + * but simple forward differencing scored better in benchmarks + * + * Idea: + * + * We do a sampling over the cubic patch with step du and dv (in the + * two parameters) that guarantees that any point of our sampling will + * be at most at 1/sqrt(2) from its adjacent points. In formulae + * (assuming B is the patch): + * + * |B(u,v) - B(u+du,v)| < 1/sqrt(2) + * |B(u,v) - B(u,v+dv)| < 1/sqrt(2) + * + * This means that every pixel covered by the patch will contain at + * least one of the samples, thus forward rasterization can be + * performed. Sketch of proof (from Popescu and Rosen): + * + * Let's take the P pixel we're interested into. If we assume it to be + * square, its boundaries define 9 regions on the plane: + * + * 1|2|3 + * -+-+- + * 8|P|4 + * -+-+- + * 7|6|5 + * + * Let's check that the pixel P will contain at least one point + * assuming that it is covered by the patch. + * + * Since the pixel is covered by the patch, its center will belong to + * (at least) one of the quads: + * + * {(B(u,v), B(u+du,v), B(u,v+dv), B(u+du,v+dv)) for u,v in [0,1]} + * + * If P doesn't contain any of the corners of the quad: + * + * - if one of the corners is in 1,3,5 or 7, other two of them have to + * be in 2,4,6 or 8, thus if the last corner is not in P, the length + * of one of the edges will be > 1/sqrt(2) + * + * - if none of the corners is in 1,3,5 or 7, all of them are in 2,4,6 + * and/or 8. If they are all in different regions, they can't + * satisfy the distance constraint. If two of them are in the same + * region (let's say 2), no point is in 6 and again it is impossible + * to have the center of P in the quad respecting the distance + * constraint (both these assertions can be checked by continuity + * considering the length of the edges of a quad with the vertices + * on the edges of P) + * + * Each of the cases led to a contradiction, so P contains at least + * one of the corners of the quad. + */ + +/* + * Make sure that errors are less than 1 in fixed point math if you + * change these values. + * + * The error is amplified by about steps^3/4 times. + * The rasterizer always uses a number of steps that is a power of 2. + * + * 256 is the maximum allowed number of steps (to have error < 1) + * using 8.24 for the differences. + */ +#define STEPS_MAX_V 256.0 +#define STEPS_MAX_U 256.0 + +/* + * If the patch/curve is only partially visible, split it to a finer + * resolution to get higher chances to clip (part of) it. + * + * These values have not been computed, but simply obtained + * empirically (by benchmarking some patches). They should never be + * greater than STEPS_MAX_V (or STEPS_MAX_U), but they can be as small + * as 1 (depending on how much you want to spend time in splitting the + * patch/curve when trying to save some rasterization time). + */ +#define STEPS_CLIP_V 64.0 +#define STEPS_CLIP_U 64.0 + + +/* Utils */ +static inline double +sqlen (cairo_point_double_t p0, cairo_point_double_t p1) +{ + cairo_point_double_t delta; + + delta.x = p0.x - p1.x; + delta.y = p0.y - p1.y; + + return delta.x * delta.x + delta.y * delta.y; +} + +static inline int16_t +_color_delta_to_shifted_short (int32_t from, int32_t to, int shift) +{ + int32_t delta = to - from; + + /* We need to round toward zero, because otherwise adding the + * delta 2^shift times can overflow */ + if (delta >= 0) + return delta >> shift; + else + return -((-delta) >> shift); +} + +/* + * Convert a number of steps to the equivalent shift. + * + * Input: the square of the minimum number of steps + * + * Output: the smallest integer x such that 2^x > steps + */ +static inline int +sqsteps2shift (double steps_sq) +{ + int r; + frexp (MAX (1.0, steps_sq), &r); + return (r + 1) >> 1; +} + +/* + * FD functions + * + * A Bezier curve is defined (with respect to a parameter t in + * [0,1]) from its nodes (x,y,z,w) like this: + * + * B(t) = x(1-t)^3 + 3yt(1-t)^2 + 3zt^2(1-t) + wt^3 + * + * To efficiently evaluate a Bezier curve, the rasterizer uses forward + * differences. Given x, y, z, w (the 4 nodes of the Bezier curve), it + * is possible to convert them to forward differences form and walk + * over the curve using fd_init (), fd_down () and fd_fwd (). + * + * f[0] is always the value of the Bezier curve for "current" t. + */ + +/* + * Initialize the coefficient for forward differences. + * + * Input: x,y,z,w are the 4 nodes of the Bezier curve + * + * Output: f[i] is the i-th difference of the curve + * + * f[0] is the value of the curve for t==0, i.e. f[0]==x. + * + * The initial step is 1; this means that each step increases t by 1 + * (so fd_init () immediately followed by fd_fwd (f) n times makes + * f[0] be the value of the curve for t==n). + */ +static inline void +fd_init (double x, double y, double z, double w, double f[4]) +{ + f[0] = x; + f[1] = w - x; + f[2] = 6. * (w - 2. * z + y); + f[3] = 6. * (w - 3. * z + 3. * y - x); +} + +/* + * Halve the step of the coefficients for forward differences. + * + * Input: f[i] is the i-th difference of the curve + * + * Output: f[i] is the i-th difference of the curve with half the + * original step + * + * f[0] is not affected, so the current t is not changed. + * + * The other coefficients are changed so that the step is half the + * original step. This means that doing fd_fwd (f) n times with the + * input f results in the same f[0] as doing fd_fwd (f) 2n times with + * the output f. + */ +static inline void +fd_down (double f[4]) +{ + f[3] *= 0.125; + f[2] = f[2] * 0.25 - f[3]; + f[1] = (f[1] - f[2]) * 0.5; +} + +/* + * Perform one step of forward differences along the curve. + * + * Input: f[i] is the i-th difference of the curve + * + * Output: f[i] is the i-th difference of the curve after one step + */ +static inline void +fd_fwd (double f[4]) +{ + f[0] += f[1]; + f[1] += f[2]; + f[2] += f[3]; +} + +/* + * Transform to integer forward differences. + * + * Input: d[n] is the n-th difference (in double precision) + * + * Output: i[n] is the n-th difference (in fixed point precision) + * + * i[0] is 9.23 fixed point, other differences are 4.28 fixed point. + */ +static inline void +fd_fixed (double d[4], int32_t i[4]) +{ + i[0] = _cairo_fixed_16_16_from_double (256 * 2 * d[0]); + i[1] = _cairo_fixed_16_16_from_double (256 * 16 * d[1]); + i[2] = _cairo_fixed_16_16_from_double (256 * 16 * d[2]); + i[3] = _cairo_fixed_16_16_from_double (256 * 16 * d[3]); +} + +/* + * Perform one step of integer forward differences along the curve. + * + * Input: f[n] is the n-th difference + * + * Output: f[n] is the n-th difference + * + * f[0] is 9.23 fixed point, other differences are 4.28 fixed point. + */ +static inline void +fd_fixed_fwd (int32_t f[4]) +{ + f[0] += (f[1] >> 5) + ((f[1] >> 4) & 1); + f[1] += f[2]; + f[2] += f[3]; +} + +/* + * Compute the minimum number of steps that guarantee that walking + * over a curve will leave no holes. + * + * Input: p[0..3] the nodes of the Bezier curve + * + * Returns: the square of the number of steps + * + * Idea: + * + * We want to make sure that at every step we move by less than + * 1/sqrt(2). + * + * The derivative of the cubic Bezier with nodes (p0, p1, p2, p3) is + * the quadratic Bezier with nodes (p1-p0, p2-p1, p3-p2) scaled by 3, + * so (since a Bezier curve is always bounded by its convex hull), we + * can say that: + * + * max(|B'(t)|) <= 3 max (|p1-p0|, |p2-p1|, |p3-p2|) + * + * We can improve this by noticing that a quadratic Bezier (a,b,c) is + * bounded by the quad (a,lerp(a,b,t),lerp(b,c,t),c) for any t, so + * (substituting the previous values, using t=0.5 and simplifying): + * + * max(|B'(t)|) <= 3 max (|p1-p0|, |p2-p0|/2, |p3-p1|/2, |p3-p2|) + * + * So, to guarantee a maximum step lenght of 1/sqrt(2) we must do: + * + * 3 max (|p1-p0|, |p2-p0|/2, |p3-p1|/2, |p3-p2|) sqrt(2) steps + */ +static inline double +bezier_steps_sq (cairo_point_double_t p[4]) +{ + double tmp = sqlen (p[0], p[1]); + tmp = MAX (tmp, sqlen (p[2], p[3])); + tmp = MAX (tmp, sqlen (p[0], p[2]) * .25); + tmp = MAX (tmp, sqlen (p[1], p[3]) * .25); + return 18.0 * tmp; +} + +/* + * Split a 1D Bezier cubic using de Casteljau's algorithm. + * + * Input: x,y,z,w the nodes of the Bezier curve + * + * Output: x0,y0,z0,w0 and x1,y1,z1,w1 are respectively the nodes of + * the first half and of the second half of the curve + * + * The output control nodes have to be distinct. + */ +static inline void +split_bezier_1D (double x, double y, double z, double w, + double *x0, double *y0, double *z0, double *w0, + double *x1, double *y1, double *z1, double *w1) +{ + double tmp; + + *x0 = x; + *w1 = w; + + tmp = 0.5 * (y + z); + *y0 = 0.5 * (x + y); + *z1 = 0.5 * (z + w); + + *z0 = 0.5 * (*y0 + tmp); + *y1 = 0.5 * (tmp + *z1); + + *w0 = *x1 = 0.5 * (*z0 + *y1); +} + +/* + * Split a Bezier curve using de Casteljau's algorithm. + * + * Input: p[0..3] the nodes of the Bezier curve + * + * Output: fst_half[0..3] and snd_half[0..3] are respectively the + * nodes of the first and of the second half of the curve + * + * fst_half and snd_half must be different, but they can be the same as + * nodes. + */ +static void +split_bezier (cairo_point_double_t p[4], + cairo_point_double_t fst_half[4], + cairo_point_double_t snd_half[4]) +{ + split_bezier_1D (p[0].x, p[1].x, p[2].x, p[3].x, + &fst_half[0].x, &fst_half[1].x, &fst_half[2].x, &fst_half[3].x, + &snd_half[0].x, &snd_half[1].x, &snd_half[2].x, &snd_half[3].x); + + split_bezier_1D (p[0].y, p[1].y, p[2].y, p[3].y, + &fst_half[0].y, &fst_half[1].y, &fst_half[2].y, &fst_half[3].y, + &snd_half[0].y, &snd_half[1].y, &snd_half[2].y, &snd_half[3].y); +} + + +typedef enum _intersection { + INSIDE = -1, /* the interval is entirely contained in the reference interval */ + OUTSIDE = 0, /* the interval has no intersection with the reference interval */ + PARTIAL = 1 /* the interval intersects the reference interval (but is not fully inside it) */ +} intersection_t; + +/* + * Check if an interval if inside another. + * + * Input: a,b are the extrema of the first interval + * c,d are the extrema of the second interval + * + * Returns: INSIDE iff [a,b) intersection [c,d) = [a,b) + * OUTSIDE iff [a,b) intersection [c,d) = {} + * PARTIAL otherwise + * + * The function assumes a < b and c < d + * + * Note: Bitwise-anding the results along each component gives the + * expected result for [a,b) x [A,B) intersection [c,d) x [C,D). + */ +static inline int +intersect_interval (double a, double b, double c, double d) +{ + if (c <= a && b <= d) + return INSIDE; + else if (a >= d || b <= c) + return OUTSIDE; + else + return PARTIAL; +} + +/* + * Set the color of a pixel. + * + * Input: data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * x, y are the coordinates of the pixel to be colored + * r,g,b,a are the color components of the color to be set + * + * Output: the (x,y) pixel in data has the (r,g,b,a) color + * + * The input color components are not premultiplied, but the data + * stored in the image is assumed to be in CAIRO_FORMAT_ARGB32 (8 bpc, + * premultiplied). + * + * If the pixel to be set is outside the image, this function does + * nothing. + */ +static inline void +draw_pixel (unsigned char *data, int width, int height, int stride, + int x, int y, uint16_t r, uint16_t g, uint16_t b, uint16_t a) +{ + if (likely (0 <= x && 0 <= y && x < width && y < height)) { + uint32_t tr, tg, tb, ta; + + /* Premultiply and round */ + ta = a; + tr = r * ta + 0x8000; + tg = g * ta + 0x8000; + tb = b * ta + 0x8000; + + tr += tr >> 16; + tg += tg >> 16; + tb += tb >> 16; + + *((uint32_t*) (data + y*stride + 4*x)) = ((ta << 16) & 0xff000000) | + ((tr >> 8) & 0xff0000) | ((tg >> 16) & 0xff00) | (tb >> 24); + } +} + +/* + * Forward-rasterize a cubic curve using forward differences. + * + * Input: data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * ushift is log2(n) if n is the number of desired steps + * dxu[i], dyu[i] are the x,y forward differences of the curve + * r0,g0,b0,a0 are the color components of the start point + * r3,g3,b3,a3 are the color components of the end point + * + * Output: data will be changed to have the requested curve drawn in + * the specified colors + * + * The input color components are not premultiplied, but the data + * stored in the image is assumed to be in CAIRO_FORMAT_ARGB32 (8 bpc, + * premultiplied). + * + * The function draws n+1 pixels, that is from the point at step 0 to + * the point at step n, both included. This is the discrete equivalent + * to drawing the curve for values of the interpolation parameter in + * [0,1] (including both extremes). + */ +static inline void +rasterize_bezier_curve (unsigned char *data, int width, int height, int stride, + int ushift, double dxu[4], double dyu[4], + uint16_t r0, uint16_t g0, uint16_t b0, uint16_t a0, + uint16_t r3, uint16_t g3, uint16_t b3, uint16_t a3) +{ + int32_t xu[4], yu[4]; + int x0, y0, u, usteps = 1 << ushift; + + uint16_t r = r0, g = g0, b = b0, a = a0; + int16_t dr = _color_delta_to_shifted_short (r0, r3, ushift); + int16_t dg = _color_delta_to_shifted_short (g0, g3, ushift); + int16_t db = _color_delta_to_shifted_short (b0, b3, ushift); + int16_t da = _color_delta_to_shifted_short (a0, a3, ushift); + + fd_fixed (dxu, xu); + fd_fixed (dyu, yu); + + /* + * Use (dxu[0],dyu[0]) as origin for the forward differences. + * + * This makes it possible to handle much larger coordinates (the + * ones that can be represented as cairo_fixed_t) + */ + x0 = _cairo_fixed_from_double (dxu[0]); + y0 = _cairo_fixed_from_double (dyu[0]); + xu[0] = 0; + yu[0] = 0; + + for (u = 0; u <= usteps; ++u) { + /* + * This rasterizer assumes that pixels are integer aligned + * squares, so a generic (x,y) point belongs to the pixel with + * top-left coordinates (floor(x), floor(y)) + */ + + int x = _cairo_fixed_integer_floor (x0 + (xu[0] >> 15) + ((xu[0] >> 14) & 1)); + int y = _cairo_fixed_integer_floor (y0 + (yu[0] >> 15) + ((yu[0] >> 14) & 1)); + + draw_pixel (data, width, height, stride, x, y, r, g, b, a); + + fd_fixed_fwd (xu); + fd_fixed_fwd (yu); + r += dr; + g += dg; + b += db; + a += da; + } +} + +/* + * Clip, split and rasterize a Bezier curve. + * + * Input: data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * p[i] is the i-th node of the Bezier curve + * c0[i] is the i-th color component at the start point + * c3[i] is the i-th color component at the end point + * + * Output: data will be changed to have the requested curve drawn in + * the specified colors + * + * The input color components are not premultiplied, but the data + * stored in the image is assumed to be in CAIRO_FORMAT_ARGB32 (8 bpc, + * premultiplied). + * + * The color components are red, green, blue and alpha, in this order. + * + * The function guarantees that it will draw the curve with a step + * small enough to never have a distance above 1/sqrt(2) between two + * consecutive points (which is needed to ensure that no hole can + * appear when using this function to rasterize a patch). + */ +static void +draw_bezier_curve (unsigned char *data, int width, int height, int stride, + cairo_point_double_t p[4], double c0[4], double c3[4]) +{ + double top, bottom, left, right, steps_sq; + int i, v; + + top = bottom = p[0].y; + for (i = 1; i < 4; ++i) { + top = MIN (top, p[i].y); + bottom = MAX (bottom, p[i].y); + } + + /* Check visibility */ + v = intersect_interval (top, bottom, 0, height); + if (v == OUTSIDE) + return; + + left = right = p[0].x; + for (i = 1; i < 4; ++i) { + left = MIN (left, p[i].x); + right = MAX (right, p[i].x); + } + + v &= intersect_interval (left, right, 0, width); + if (v == OUTSIDE) + return; + + steps_sq = bezier_steps_sq (p); + if (steps_sq >= (v == INSIDE ? STEPS_MAX_U * STEPS_MAX_U : STEPS_CLIP_U * STEPS_CLIP_U)) { + /* + * The number of steps is greater than the threshold. This + * means that either the error would become too big if we + * directly rasterized it or that we can probably save some + * time by splitting the curve and clipping part of it + */ + cairo_point_double_t first[4], second[4]; + double midc[4]; + split_bezier (p, first, second); + midc[0] = (c0[0] + c3[0]) * 0.5; + midc[1] = (c0[1] + c3[1]) * 0.5; + midc[2] = (c0[2] + c3[2]) * 0.5; + midc[3] = (c0[3] + c3[3]) * 0.5; + draw_bezier_curve (data, width, height, stride, first, c0, midc); + draw_bezier_curve (data, width, height, stride, second, midc, c3); + } else { + double xu[4], yu[4]; + int ushift = sqsteps2shift (steps_sq), k; + + fd_init (p[0].x, p[1].x, p[2].x, p[3].x, xu); + fd_init (p[0].y, p[1].y, p[2].y, p[3].y, yu); + + for (k = 0; k < ushift; ++k) { + fd_down (xu); + fd_down (yu); + } + + rasterize_bezier_curve (data, width, height, stride, ushift, + xu, yu, + _cairo_color_double_to_short (c0[0]), + _cairo_color_double_to_short (c0[1]), + _cairo_color_double_to_short (c0[2]), + _cairo_color_double_to_short (c0[3]), + _cairo_color_double_to_short (c3[0]), + _cairo_color_double_to_short (c3[1]), + _cairo_color_double_to_short (c3[2]), + _cairo_color_double_to_short (c3[3])); + + /* Draw the end point, to make sure that we didn't leave it + * out because of rounding */ + draw_pixel (data, width, height, stride, + _cairo_fixed_integer_floor (_cairo_fixed_from_double (p[3].x)), + _cairo_fixed_integer_floor (_cairo_fixed_from_double (p[3].y)), + _cairo_color_double_to_short (c3[0]), + _cairo_color_double_to_short (c3[1]), + _cairo_color_double_to_short (c3[2]), + _cairo_color_double_to_short (c3[3])); + } +} + +/* + * Forward-rasterize a cubic Bezier patch using forward differences. + * + * Input: data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * vshift is log2(n) if n is the number of desired steps + * p[i][j], p[i][j] are the the nodes of the Bezier patch + * col[i][j] is the j-th color component of the i-th corner + * + * Output: data will be changed to have the requested patch drawn in + * the specified colors + * + * The nodes of the patch are as follows: + * + * u\v 0 - > 1 + * 0 p00 p01 p02 p03 + * | p10 p11 p12 p13 + * v p20 p21 p22 p23 + * 1 p30 p31 p32 p33 + * + * i.e. u varies along the first component (rows), v varies along the + * second one (columns). + * + * The color components are red, green, blue and alpha, in this order. + * c[0..3] are the colors in p00, p30, p03, p33 respectively + * + * The input color components are not premultiplied, but the data + * stored in the image is assumed to be in CAIRO_FORMAT_ARGB32 (8 bpc, + * premultiplied). + * + * If the patch folds over itself, the part with the highest v + * parameter is considered above. If both have the same v, the one + * with the highest u parameter is above. + * + * The function draws n+1 curves, that is from the curve at step 0 to + * the curve at step n, both included. This is the discrete equivalent + * to drawing the patch for values of the interpolation parameter in + * [0,1] (including both extremes). + */ +static inline void +rasterize_bezier_patch (unsigned char *data, int width, int height, int stride, int vshift, + cairo_point_double_t p[4][4], double col[4][4]) +{ + double pv[4][2][4], cstart[4], cend[4], dcstart[4], dcend[4]; + int vsteps, v, i, k; + + vsteps = 1 << vshift; + + /* + * pv[i][0] is the function (represented using forward + * differences) mapping v to the x coordinate of the i-th node of + * the Bezier curve with parameter u. + * (Likewise p[i][0] gives the y coordinate). + * + * This means that (pv[0][0][0],pv[0][1][0]), + * (pv[1][0][0],pv[1][1][0]), (pv[2][0][0],pv[2][1][0]) and + * (pv[3][0][0],pv[3][1][0]) are the nodes of the Bezier curve for + * the "current" v value (see the FD comments for more details). + */ + for (i = 0; i < 4; ++i) { + fd_init (p[i][0].x, p[i][1].x, p[i][2].x, p[i][3].x, pv[i][0]); + fd_init (p[i][0].y, p[i][1].y, p[i][2].y, p[i][3].y, pv[i][1]); + for (k = 0; k < vshift; ++k) { + fd_down (pv[i][0]); + fd_down (pv[i][1]); + } + } + + for (i = 0; i < 4; ++i) { + cstart[i] = col[0][i]; + cend[i] = col[1][i]; + dcstart[i] = (col[2][i] - col[0][i]) / vsteps; + dcend[i] = (col[3][i] - col[1][i]) / vsteps; + } + + for (v = 0; v <= vsteps; ++v) { + cairo_point_double_t nodes[4]; + for (i = 0; i < 4; ++i) { + nodes[i].x = pv[i][0][0]; + nodes[i].y = pv[i][1][0]; + } + + draw_bezier_curve (data, width, height, stride, nodes, cstart, cend); + + for (i = 0; i < 4; ++i) { + fd_fwd (pv[i][0]); + fd_fwd (pv[i][1]); + cstart[i] += dcstart[i]; + cend[i] += dcend[i]; + } + } +} + +/* + * Clip, split and rasterize a Bezier cubic patch. + * + * Input: data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * p[i][j], p[i][j] are the nodes of the patch + * col[i][j] is the j-th color component of the i-th corner + * + * Output: data will be changed to have the requested patch drawn in + * the specified colors + * + * The nodes of the patch are as follows: + * + * u\v 0 - > 1 + * 0 p00 p01 p02 p03 + * | p10 p11 p12 p13 + * v p20 p21 p22 p23 + * 1 p30 p31 p32 p33 + * + * i.e. u varies along the first component (rows), v varies along the + * second one (columns). + * + * The color components are red, green, blue and alpha, in this order. + * c[0..3] are the colors in p00, p30, p03, p33 respectively + * + * The input color components are not premultiplied, but the data + * stored in the image is assumed to be in CAIRO_FORMAT_ARGB32 (8 bpc, + * premultiplied). + * + * If the patch folds over itself, the part with the highest v + * parameter is considered above. If both have the same v, the one + * with the highest u parameter is above. + * + * The function guarantees that it will draw the patch with a step + * small enough to never have a distance above 1/sqrt(2) between two + * adjacent points (which guarantees that no hole can appear). + * + * This function can be used to rasterize a tile of PDF type 7 + * shadings (see http://www.adobe.com/devnet/pdf/pdf_reference.html). + */ +static void +draw_bezier_patch (unsigned char *data, int width, int height, int stride, + cairo_point_double_t p[4][4], double c[4][4]) +{ + double top, bottom, left, right, steps_sq; + int i, j, v; + + top = bottom = p[0][0].y; + for (i = 0; i < 4; ++i) { + for (j= 0; j < 4; ++j) { + top = MIN (top, p[i][j].y); + bottom = MAX (bottom, p[i][j].y); + } + } + + v = intersect_interval (top, bottom, 0, height); + if (v == OUTSIDE) + return; + + left = right = p[0][0].x; + for (i = 0; i < 4; ++i) { + for (j= 0; j < 4; ++j) { + left = MIN (left, p[i][j].x); + right = MAX (right, p[i][j].x); + } + } + + v &= intersect_interval (left, right, 0, width); + if (v == OUTSIDE) + return; + + steps_sq = 0; + for (i = 0; i < 4; ++i) + steps_sq = MAX (steps_sq, bezier_steps_sq (p[i])); + + if (steps_sq >= (v == INSIDE ? STEPS_MAX_V * STEPS_MAX_V : STEPS_CLIP_V * STEPS_CLIP_V)) { + /* The number of steps is greater than the threshold. This + * means that either the error would become too big if we + * directly rasterized it or that we can probably save some + * time by splitting the curve and clipping part of it. The + * patch is only split in the v direction to guarantee that + * rasterizing each part will overwrite parts with low v with + * overlapping parts with higher v. */ + + cairo_point_double_t first[4][4], second[4][4]; + double subc[4][4]; + + for (i = 0; i < 4; ++i) + split_bezier (p[i], first[i], second[i]); + + for (i = 0; i < 4; ++i) { + subc[0][i] = c[0][i]; + subc[1][i] = c[1][i]; + subc[2][i] = 0.5 * (c[0][i] + c[2][i]); + subc[3][i] = 0.5 * (c[1][i] + c[3][i]); + } + + draw_bezier_patch (data, width, height, stride, first, subc); + + for (i = 0; i < 4; ++i) { + subc[0][i] = subc[2][i]; + subc[1][i] = subc[3][i]; + subc[2][i] = c[2][i]; + subc[3][i] = c[3][i]; + } + draw_bezier_patch (data, width, height, stride, second, subc); + } else { + rasterize_bezier_patch (data, width, height, stride, sqsteps2shift (steps_sq), p, c); + } +} + +/* + * Draw a tensor product shading pattern. + * + * Input: mesh is the mesh pattern + * data is the base pointer of the image + * width, height are the dimensions of the image + * stride is the stride in bytes between adjacent rows + * + * Output: data will be changed to have the pattern drawn on it + * + * data is assumed to be clear and its content is assumed to be in + * CAIRO_FORMAT_ARGB32 (8 bpc, premultiplied). + * + * This function can be used to rasterize a PDF type 7 shading (see + * http://www.adobe.com/devnet/pdf/pdf_reference.html). + */ +void +_cairo_mesh_pattern_rasterize (const cairo_mesh_pattern_t *mesh, + void *data, + int width, + int height, + int stride, + double x_offset, + double y_offset) +{ + cairo_point_double_t nodes[4][4]; + double colors[4][4]; + cairo_matrix_t p2u; + unsigned int i, j, k, n; + cairo_status_t status; + const cairo_mesh_patch_t *patch; + const cairo_color_t *c; + + assert (mesh->base.status == CAIRO_STATUS_SUCCESS); + assert (mesh->current_patch == NULL); + + p2u = mesh->base.matrix; + status = cairo_matrix_invert (&p2u); + assert (status == CAIRO_STATUS_SUCCESS); + + n = _cairo_array_num_elements (&mesh->patches); + patch = _cairo_array_index_const (&mesh->patches, 0); + for (i = 0; i < n; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) { + nodes[j][k] = patch->points[j][k]; + cairo_matrix_transform_point (&p2u, &nodes[j][k].x, &nodes[j][k].y); + nodes[j][k].x += x_offset; + nodes[j][k].y += y_offset; + } + } + + c = &patch->colors[0]; + colors[0][0] = c->red; + colors[0][1] = c->green; + colors[0][2] = c->blue; + colors[0][3] = c->alpha; + + c = &patch->colors[3]; + colors[1][0] = c->red; + colors[1][1] = c->green; + colors[1][2] = c->blue; + colors[1][3] = c->alpha; + + c = &patch->colors[1]; + colors[2][0] = c->red; + colors[2][1] = c->green; + colors[2][2] = c->blue; + colors[2][3] = c->alpha; + + c = &patch->colors[2]; + colors[3][0] = c->red; + colors[3][1] = c->green; + colors[3][2] = c->blue; + colors[3][3] = c->alpha; + + draw_bezier_patch (data, width, height, stride, nodes, colors); + patch++; + } +} diff --git a/src/cairo-misc.c b/src/cairo-misc.c index 6037259..87cabcb 100644 --- a/src/cairo-misc.c +++ b/src/cairo-misc.c @@ -150,6 +150,8 @@ cairo_status_to_string (cairo_status_t status) return "the device type is not appropriate for the operation"; case CAIRO_STATUS_DEVICE_ERROR: return "an operation to the device caused an unspecified error"; + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: + return "invalid operation during mesh pattern construction"; default: case CAIRO_STATUS_LAST_STATUS: return ""; diff --git a/src/cairo-mutex-list-private.h b/src/cairo-mutex-list-private.h index 5827667..7d5ba02 100644 --- a/src/cairo-mutex-list-private.h +++ b/src/cairo-mutex-list-private.h @@ -51,6 +51,10 @@ CAIRO_MUTEX_DECLARE (_cairo_scaled_font_error_mutex) CAIRO_MUTEX_DECLARE (_cairo_ft_unscaled_font_map_mutex) #endif +#if CAIRO_HAS_WIN32_FONT +CAIRO_MUTEX_DECLARE (_cairo_win32_font_face_mutex) +#endif + #if CAIRO_HAS_XLIB_SURFACE CAIRO_MUTEX_DECLARE (_cairo_xlib_display_mutex) #endif diff --git a/src/cairo-path-bounds.c b/src/cairo-path-bounds.c index 2e7b6bd..204b982 100644 --- a/src/cairo-path-bounds.c +++ b/src/cairo-path-bounds.c @@ -1,3 +1,4 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ /* cairo - a vector graphics library with display and print output * * Copyright © 2003 University of Southern California @@ -35,48 +36,16 @@ */ #include "cairoint.h" +#include "cairo-box-private.h" #include "cairo-path-fixed-private.h" -typedef struct cairo_path_bounder { - cairo_point_t current_point; - cairo_bool_t has_initial_point; - cairo_bool_t has_point; +typedef struct _cairo_path_bounder { + cairo_point_t current_point; + cairo_bool_t has_extents; cairo_box_t extents; } cairo_path_bounder_t; -static void -_cairo_path_bounder_init (cairo_path_bounder_t *bounder) -{ - bounder->has_initial_point = FALSE; - bounder->has_point = FALSE; -} - -static void -_cairo_path_bounder_add_point (cairo_path_bounder_t *bounder, - const cairo_point_t *point) -{ - if (bounder->has_point) { - if (point->x < bounder->extents.p1.x) - bounder->extents.p1.x = point->x; - - if (point->y < bounder->extents.p1.y) - bounder->extents.p1.y = point->y; - - if (point->x > bounder->extents.p2.x) - bounder->extents.p2.x = point->x; - - if (point->y > bounder->extents.p2.y) - bounder->extents.p2.y = point->y; - } else { - bounder->extents.p1.x = point->x; - bounder->extents.p1.y = point->y; - bounder->extents.p2.x = point->x; - bounder->extents.p2.y = point->y; - bounder->has_point = TRUE; - } -} - static cairo_status_t _cairo_path_bounder_move_to (void *closure, const cairo_point_t *point) @@ -84,7 +53,13 @@ _cairo_path_bounder_move_to (void *closure, cairo_path_bounder_t *bounder = closure; bounder->current_point = *point; - bounder->has_initial_point = TRUE; + + if (likely (bounder->has_extents)) { + _cairo_box_add_point (&bounder->extents, point); + } else { + bounder->has_extents = TRUE; + _cairo_box_set (&bounder->extents, point, point); + } return CAIRO_STATUS_SUCCESS; } @@ -95,13 +70,8 @@ _cairo_path_bounder_line_to (void *closure, { cairo_path_bounder_t *bounder = closure; - if (bounder->has_initial_point) { - _cairo_path_bounder_add_point (bounder, &bounder->current_point); - bounder->has_initial_point = FALSE; - } - - _cairo_path_bounder_add_point (bounder, point); bounder->current_point = *point; + _cairo_box_add_point (&bounder->extents, point); return CAIRO_STATUS_SUCCESS; } @@ -114,27 +84,12 @@ _cairo_path_bounder_curve_to (void *closure, { cairo_path_bounder_t *bounder = closure; - /* If the bbox of the control points is entirely inside, then we - * do not need to further evaluate the spline. - */ - if (! bounder->has_point || - b->x < bounder->extents.p1.x || b->x > bounder->extents.p2.x || - b->y < bounder->extents.p1.y || b->y > bounder->extents.p2.y || - c->x < bounder->extents.p1.x || c->x > bounder->extents.p2.x || - c->y < bounder->extents.p1.y || c->y > bounder->extents.p2.y || - d->x < bounder->extents.p1.x || d->x > bounder->extents.p2.x || - d->y < bounder->extents.p1.y || d->y > bounder->extents.p2.y) - { - return _cairo_spline_bound (_cairo_path_bounder_line_to, bounder, - &bounder->current_point, b, c, d); - } - else - { - /* All control points are within the current extents. */ - bounder->current_point = *d; + _cairo_box_add_curve_to (&bounder->extents, + &bounder->current_point, + b, c, d); + bounder->current_point = *d; - return CAIRO_STATUS_SUCCESS; - } + return CAIRO_STATUS_SUCCESS; } static cairo_status_t @@ -143,53 +98,40 @@ _cairo_path_bounder_close_path (void *closure) return CAIRO_STATUS_SUCCESS; } -/* This computes the extents of all the points in the path, not those of - * the damage area (i.e it does not consider winding and it only inspects - * the control points of the curves, not the flattened path). - */ +cairo_bool_t +_cairo_path_bounder_extents (const cairo_path_fixed_t *path, + cairo_box_t *extents) +{ + cairo_path_bounder_t bounder; + cairo_status_t status; + + bounder.has_extents = FALSE; + status = _cairo_path_fixed_interpret (path, + _cairo_path_bounder_move_to, + _cairo_path_bounder_line_to, + _cairo_path_bounder_curve_to, + _cairo_path_bounder_close_path, + &bounder); + assert (!status); + + if (bounder.has_extents) + *extents = bounder.extents; + + return bounder.has_extents; +} + void _cairo_path_fixed_approximate_clip_extents (const cairo_path_fixed_t *path, cairo_rectangle_int_t *extents) { - if (path->extents.p1.x < path->extents.p2.x) { - _cairo_box_round_to_rectangle (&path->extents, extents); - } else { - extents->x = extents->y = 0; - extents->width = extents->height = 0; - } + _cairo_path_fixed_approximate_fill_extents (path, extents); } -/* A slightly better approximation than above - we actually decompose the - * Bezier, but we continue to ignore winding. - */ void _cairo_path_fixed_approximate_fill_extents (const cairo_path_fixed_t *path, cairo_rectangle_int_t *extents) { - cairo_path_bounder_t bounder; - cairo_status_t status; - - if (! path->has_curve_to) { - bounder.extents = path->extents; - bounder.has_point = path->extents.p1.x < path->extents.p2.x; - } else { - _cairo_path_bounder_init (&bounder); - - status = _cairo_path_fixed_interpret (path, CAIRO_DIRECTION_FORWARD, - _cairo_path_bounder_move_to, - _cairo_path_bounder_line_to, - _cairo_path_bounder_curve_to, - _cairo_path_bounder_close_path, - &bounder); - assert (status == CAIRO_STATUS_SUCCESS); - } - - if (bounder.has_point) { - _cairo_box_round_to_rectangle (&bounder.extents, extents); - } else { - extents->x = extents->y = 0; - extents->width = extents->height = 0; - } + _cairo_path_fixed_fill_extents (path, CAIRO_FILL_RULE_WINDING, 0, extents); } void @@ -198,25 +140,9 @@ _cairo_path_fixed_fill_extents (const cairo_path_fixed_t *path, double tolerance, cairo_rectangle_int_t *extents) { - cairo_path_bounder_t bounder; - cairo_status_t status; - - if (! path->has_curve_to) { - bounder.extents = path->extents; - bounder.has_point = path->extents.p1.x < path->extents.p2.x; - } else { - _cairo_path_bounder_init (&bounder); - - status = _cairo_path_fixed_interpret_flat (path, CAIRO_DIRECTION_FORWARD, - _cairo_path_bounder_move_to, - _cairo_path_bounder_line_to, - _cairo_path_bounder_close_path, - &bounder, tolerance); - assert (status == CAIRO_STATUS_SUCCESS); - } - - if (bounder.has_point) { - _cairo_box_round_to_rectangle (&bounder.extents, extents); + if (path->extents.p1.x < path->extents.p2.x && + path->extents.p1.y < path->extents.p2.y) { + _cairo_box_round_to_rectangle (&path->extents, extents); } else { extents->x = extents->y = 0; extents->width = extents->height = 0; @@ -230,65 +156,18 @@ _cairo_path_fixed_approximate_stroke_extents (const cairo_path_fixed_t *path, const cairo_matrix_t *ctm, cairo_rectangle_int_t *extents) { - cairo_path_bounder_t bounder; - cairo_status_t status; - - if (! path->has_curve_to) { - bounder.extents = path->extents; - - /* include trailing move-to for degenerate segments */ - if (path->has_last_move_point) { - const cairo_point_t *point = &path->last_move_point; - - if (point->x < bounder.extents.p1.x) - bounder.extents.p1.x = point->x; - if (point->y < bounder.extents.p1.y) - bounder.extents.p1.y = point->y; - - if (point->x > bounder.extents.p2.x) - bounder.extents.p2.x = point->x; - if (point->y > bounder.extents.p2.y) - bounder.extents.p2.y = point->y; - } - - bounder.has_point = bounder.extents.p1.x <= bounder.extents.p2.x; - bounder.has_initial_point = FALSE; - } else { - _cairo_path_bounder_init (&bounder); - - status = _cairo_path_fixed_interpret (path, CAIRO_DIRECTION_FORWARD, - _cairo_path_bounder_move_to, - _cairo_path_bounder_line_to, - _cairo_path_bounder_curve_to, - _cairo_path_bounder_close_path, - &bounder); - assert (status == CAIRO_STATUS_SUCCESS); - } - - if (bounder.has_point) { + if (path->has_extents) { + cairo_box_t box_extents; double dx, dy; + box_extents = path->extents; _cairo_stroke_style_max_distance_from_path (style, ctm, &dx, &dy); + box_extents.p1.x -= _cairo_fixed_from_double (dx); + box_extents.p1.y -= _cairo_fixed_from_double (dy); + box_extents.p2.x += _cairo_fixed_from_double (dx); + box_extents.p2.y += _cairo_fixed_from_double (dy); - bounder.extents.p1.x -= _cairo_fixed_from_double (dx); - bounder.extents.p2.x += _cairo_fixed_from_double (dx); - bounder.extents.p1.y -= _cairo_fixed_from_double (dy); - bounder.extents.p2.y += _cairo_fixed_from_double (dy); - - _cairo_box_round_to_rectangle (&bounder.extents, extents); - } else if (bounder.has_initial_point) { - double dx, dy; - - /* accommodate capping of degenerate paths */ - - _cairo_stroke_style_max_distance_from_path (style, ctm, &dx, &dy); - - bounder.extents.p1.x = bounder.current_point.x - _cairo_fixed_from_double (dx); - bounder.extents.p2.x = bounder.current_point.x + _cairo_fixed_from_double (dx); - bounder.extents.p1.y = bounder.current_point.y - _cairo_fixed_from_double (dy); - bounder.extents.p2.y = bounder.current_point.y + _cairo_fixed_from_double (dy); - - _cairo_box_round_to_rectangle (&bounder.extents, extents); + _cairo_box_round_to_rectangle (&box_extents, extents); } else { extents->x = extents->y = 0; extents->width = extents->height = 0; @@ -328,26 +207,6 @@ cairo_bool_t _cairo_path_fixed_extents (const cairo_path_fixed_t *path, cairo_box_t *box) { - cairo_path_bounder_t bounder; - cairo_status_t status; - - if (! path->has_curve_to) { - *box = path->extents; - /* empty extents should still have an origin and should not - * be {0, 0, 0, 0} */ - return path->extents.p1.x <= path->extents.p2.x; - } - - _cairo_path_bounder_init (&bounder); - - status = _cairo_path_fixed_interpret (path, CAIRO_DIRECTION_FORWARD, - _cairo_path_bounder_move_to, - _cairo_path_bounder_line_to, - _cairo_path_bounder_curve_to, - _cairo_path_bounder_close_path, - &bounder); - assert (status == CAIRO_STATUS_SUCCESS); - - *box = bounder.extents; - return bounder.has_point; + *box = path->extents; + return path->has_extents; } diff --git a/src/cairo-path-fill.c b/src/cairo-path-fill.c index 24aaa39..6074a52 100644 --- a/src/cairo-path-fill.c +++ b/src/cairo-path-fill.c @@ -1,3 +1,4 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ /* cairo - a vector graphics library with display and print output * * Copyright © 2002 University of Southern California @@ -41,67 +42,55 @@ #include "cairo-region-private.h" typedef struct cairo_filler { - double tolerance; cairo_polygon_t *polygon; -} cairo_filler_t; -static void -_cairo_filler_init (cairo_filler_t *filler, - double tolerance, - cairo_polygon_t *polygon) -{ - filler->tolerance = tolerance; - filler->polygon = polygon; -} + cairo_point_t current_point; + cairo_point_t last_move_to; +} cairo_filler_t; -static void -_cairo_filler_fini (cairo_filler_t *filler) -{ -} static cairo_status_t -_cairo_filler_move_to (void *closure, +_cairo_filler_line_to (void *closure, const cairo_point_t *point) { cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = filler->polygon; + cairo_status_t status; + + status = _cairo_polygon_add_external_edge (filler->polygon, + &filler->current_point, + point); - return _cairo_polygon_close (polygon) || - _cairo_polygon_move_to (polygon, point); + filler->current_point = *point; + + return status; } static cairo_status_t -_cairo_filler_line_to (void *closure, - const cairo_point_t *point) +_cairo_filler_close (void *closure) { cairo_filler_t *filler = closure; - return _cairo_polygon_line_to (filler->polygon, point); + + /* close the subpath */ + return _cairo_filler_line_to (closure, &filler->last_move_to); } static cairo_status_t -_cairo_filler_curve_to (void *closure, - const cairo_point_t *b, - const cairo_point_t *c, - const cairo_point_t *d) +_cairo_filler_move_to (void *closure, + const cairo_point_t *point) { cairo_filler_t *filler = closure; - cairo_spline_t spline; + cairo_status_t status; - if (! _cairo_spline_init (&spline, - _cairo_filler_line_to, filler, - &filler->polygon->current_point, b, c, d)) - { - return _cairo_filler_line_to (closure, d); - } + /* close current subpath */ + status = _cairo_filler_close (closure); + if (unlikely (status)) + return status; - return _cairo_spline_decompose (&spline, filler->tolerance); -} + /* make sure that the closure represents a degenerate path */ + filler->current_point = *point; + filler->last_move_to = *point; -static cairo_status_t -_cairo_filler_close_path (void *closure) -{ - cairo_filler_t *filler = closure; - return _cairo_polygon_close (filler->polygon); + return CAIRO_STATUS_SUCCESS; } cairo_status_t @@ -112,22 +101,23 @@ _cairo_path_fixed_fill_to_polygon (const cairo_path_fixed_t *path, cairo_filler_t filler; cairo_status_t status; - _cairo_filler_init (&filler, tolerance, polygon); + filler.polygon = polygon; - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_filler_move_to, - _cairo_filler_line_to, - _cairo_filler_curve_to, - _cairo_filler_close_path, - &filler); + /* make sure that the closure represents a degenerate path */ + filler.current_point.x = 0; + filler.current_point.y = 0; + filler.last_move_to = filler.current_point; + + status = _cairo_path_fixed_interpret_flat (path, + _cairo_filler_move_to, + _cairo_filler_line_to, + _cairo_filler_close, + &filler, + tolerance); if (unlikely (status)) return status; - status = _cairo_polygon_close (polygon); - _cairo_filler_fini (&filler); - - return status; + return _cairo_filler_close (&filler); } cairo_status_t @@ -139,12 +129,10 @@ _cairo_path_fixed_fill_to_traps (const cairo_path_fixed_t *path, cairo_polygon_t polygon; cairo_status_t status; - if (path->is_empty_fill) + if (_cairo_path_fixed_fill_is_empty (path)) return CAIRO_STATUS_SUCCESS; - _cairo_polygon_init (&polygon); - if (traps->num_limits) - _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits); + _cairo_polygon_init (&polygon, traps->limits, traps->num_limits); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, @@ -152,7 +140,7 @@ _cairo_path_fixed_fill_to_traps (const cairo_path_fixed_t *path, if (unlikely (status || polygon.num_edges == 0)) goto CLEANUP; - if (path->is_rectilinear) { + if (_cairo_path_fixed_fill_is_rectilinear (path)) { status = _cairo_bentley_ottmann_tessellate_rectilinear_polygon (traps, &polygon, fill_rule); @@ -192,10 +180,11 @@ _cairo_path_fixed_fill_rectilinear_tessellate_to_region (const cairo_path_fixed_ } /* path is not rectangular, try extracting clipped rectilinear edges */ - _cairo_polygon_init (&polygon); if (extents != NULL) { _cairo_box_from_rectangle (&box, extents); - _cairo_polygon_limit (&polygon, &box, 1); + _cairo_polygon_init (&polygon, &box, 1); + } else { + _cairo_polygon_init (&polygon, NULL, 0); } /* tolerance will be ignored as the path is rectilinear */ @@ -242,8 +231,8 @@ _cairo_path_fixed_fill_rectilinear_to_region (const cairo_path_fixed_t *path, cairo_box_t box; cairo_region_t *region = NULL; - assert (path->maybe_fill_region); - assert (! path->is_empty_fill); + assert (_cairo_path_fixed_fill_maybe_region (path)); + assert (! _cairo_path_fixed_fill_is_empty (path)); if (_cairo_path_fixed_is_box (path, &box)) { rectangle_stack[0].x = _cairo_fixed_integer_part (box.p1.x); @@ -400,11 +389,8 @@ _cairo_path_fixed_fill_rectilinear_tessellate_to_boxes (const cairo_path_fixed_t cairo_polygon_t polygon; cairo_status_t status; - _cairo_polygon_init (&polygon); - if (boxes->num_limits) { - _cairo_polygon_limit (&polygon, boxes->limits, boxes->num_limits); - boxes->num_limits = 0; - } + _cairo_polygon_init (&polygon, boxes->limits, boxes->num_limits); + boxes->num_limits = 0; /* tolerance will be ignored as the path is rectilinear */ status = _cairo_path_fixed_fill_to_polygon (path, 0., &polygon); diff --git a/src/cairo-path-fixed-private.h b/src/cairo-path-fixed-private.h index 42e64ed..e24b1c7 100644 --- a/src/cairo-path-fixed-private.h +++ b/src/cairo-path-fixed-private.h @@ -77,15 +77,24 @@ typedef struct _cairo_path_buf_fixed { cairo_point_t points[2 * CAIRO_PATH_BUF_SIZE]; } cairo_path_buf_fixed_t; +/* + NOTES: + has_curve_to => !stroke_is_rectilinear + fill_is_rectilinear => stroke_is_rectilinear + fill_is_empty => fill_is_rectilinear + fill_maybe_region => fill_is_rectilinear +*/ struct _cairo_path_fixed { cairo_point_t last_move_point; cairo_point_t current_point; unsigned int has_current_point : 1; - unsigned int has_last_move_point : 1; + unsigned int needs_move_to : 1; + unsigned int has_extents : 1; unsigned int has_curve_to : 1; - unsigned int is_rectilinear : 1; - unsigned int maybe_fill_region : 1; - unsigned int is_empty_fill : 1; + unsigned int stroke_is_rectilinear : 1; + unsigned int fill_is_rectilinear : 1; + unsigned int fill_maybe_region : 1; + unsigned int fill_is_empty : 1; cairo_box_t extents; @@ -100,7 +109,6 @@ _cairo_path_fixed_translate (cairo_path_fixed_t *path, cairo_private cairo_status_t _cairo_path_fixed_append (cairo_path_fixed_t *path, const cairo_path_fixed_t *other, - cairo_direction_t dir, cairo_fixed_t tx, cairo_fixed_t ty); @@ -135,16 +143,16 @@ _cairo_path_fixed_iter_at_end (const cairo_path_fixed_iter_t *iter); static inline cairo_bool_t _cairo_path_fixed_fill_is_empty (const cairo_path_fixed_t *path) { - return path->is_empty_fill; + return path->fill_is_empty; } static inline cairo_bool_t -_cairo_path_fixed_is_rectilinear_fill (const cairo_path_fixed_t *path) +_cairo_path_fixed_fill_is_rectilinear (const cairo_path_fixed_t *path) { - if (! path->is_rectilinear) + if (! path->fill_is_rectilinear) return 0; - if (! path->has_current_point) + if (! path->has_current_point || path->needs_move_to) return 1; /* check whether the implicit close preserves the rectilinear property */ @@ -153,13 +161,25 @@ _cairo_path_fixed_is_rectilinear_fill (const cairo_path_fixed_t *path) } static inline cairo_bool_t -_cairo_path_fixed_maybe_fill_region (const cairo_path_fixed_t *path) +_cairo_path_fixed_stroke_is_rectilinear (const cairo_path_fixed_t *path) { -#if WATCH_PATH - fprintf (stderr, "_cairo_path_fixed_maybe_fill_region () = %s\n", - path->maybe_fill_region ? "true" : "false"); -#endif - return path->maybe_fill_region; + return path->stroke_is_rectilinear; +} + +static inline cairo_bool_t +_cairo_path_fixed_fill_maybe_region (const cairo_path_fixed_t *path) +{ + if (! path->fill_maybe_region) + return 0; + + if (! path->has_current_point || path->needs_move_to) + return 1; + + /* check whether the implicit close preserves the rectilinear property + * (the integer point property is automatically preserved) + */ + return path->current_point.x == path->last_move_point.x || + path->current_point.y == path->last_move_point.y; } #endif /* CAIRO_PATH_FIXED_PRIVATE_H */ diff --git a/src/cairo-path-fixed.c b/src/cairo-path-fixed.c index eea8630..e3e273b 100644 --- a/src/cairo-path-fixed.c +++ b/src/cairo-path-fixed.c @@ -38,6 +38,7 @@ #include "cairoint.h" +#include "cairo-box-private.h" #include "cairo-error-private.h" #include "cairo-path-fixed-private.h" #include "cairo-slope-private.h" @@ -97,15 +98,18 @@ _cairo_path_fixed_init (cairo_path_fixed_t *path) path->current_point.x = 0; path->current_point.y = 0; path->last_move_point = path->current_point; - path->has_last_move_point = FALSE; + path->has_current_point = FALSE; + path->needs_move_to = TRUE; + path->has_extents = FALSE; path->has_curve_to = FALSE; - path->is_rectilinear = TRUE; - path->maybe_fill_region = TRUE; - path->is_empty_fill = TRUE; + path->stroke_is_rectilinear = TRUE; + path->fill_is_rectilinear = TRUE; + path->fill_maybe_region = TRUE; + path->fill_is_empty = TRUE; - path->extents.p1.x = path->extents.p1.y = INT_MAX; - path->extents.p2.x = path->extents.p2.y = INT_MIN; + path->extents.p1.x = path->extents.p1.y = 0; + path->extents.p2.x = path->extents.p2.y = 0; } cairo_status_t @@ -126,12 +130,15 @@ _cairo_path_fixed_init_copy (cairo_path_fixed_t *path, path->current_point = other->current_point; path->last_move_point = other->last_move_point; - path->has_last_move_point = other->has_last_move_point; + path->has_current_point = other->has_current_point; + path->needs_move_to = other->needs_move_to; + path->has_extents = other->has_extents; path->has_curve_to = other->has_curve_to; - path->is_rectilinear = other->is_rectilinear; - path->maybe_fill_region = other->maybe_fill_region; - path->is_empty_fill = other->is_empty_fill; + path->stroke_is_rectilinear = other->stroke_is_rectilinear; + path->fill_is_rectilinear = other->fill_is_rectilinear; + path->fill_maybe_region = other->fill_maybe_region; + path->fill_is_empty = other->fill_is_empty; path->extents = other->extents; @@ -182,23 +189,23 @@ _cairo_path_fixed_hash (const cairo_path_fixed_t *path) { unsigned long hash = _CAIRO_HASH_INIT_VALUE; const cairo_path_buf_t *buf; - int num_points, num_ops; + unsigned int count; - hash = _cairo_hash_bytes (hash, &path->extents, sizeof (path->extents)); - - num_ops = num_points = 0; + count = 0; cairo_path_foreach_buf_start (buf, path) { hash = _cairo_hash_bytes (hash, buf->op, buf->num_ops * sizeof (buf->op[0])); + count += buf->num_ops; + } cairo_path_foreach_buf_end (buf, path); + hash = _cairo_hash_bytes (hash, &count, sizeof (count)); + + count = 0; + cairo_path_foreach_buf_start (buf, path) { hash = _cairo_hash_bytes (hash, buf->points, buf->num_points * sizeof (buf->points[0])); - - num_ops += buf->num_ops; - num_points += buf->num_points; + count += buf->num_points; } cairo_path_foreach_buf_end (buf, path); - - hash = _cairo_hash_bytes (hash, &num_ops, sizeof (num_ops)); - hash = _cairo_hash_bytes (hash, &num_points, sizeof (num_points)); + hash = _cairo_hash_bytes (hash, &count, sizeof (count)); return hash; } @@ -233,10 +240,7 @@ _cairo_path_fixed_equal (const cairo_path_fixed_t *a, return TRUE; /* use the flags to quickly differentiate based on contents */ - if (a->is_empty_fill != b->is_empty_fill || - a->has_curve_to != b->has_curve_to || - a->maybe_fill_region != b->maybe_fill_region || - a->is_rectilinear != b->is_rectilinear) + if (a->has_curve_to != b->has_curve_to) { return FALSE; } @@ -365,31 +369,43 @@ _cairo_path_fixed_destroy (cairo_path_fixed_t *path) free (path); } -static cairo_path_op_t -_cairo_path_last_op (cairo_path_fixed_t *path) +static inline cairo_path_op_t +_cairo_path_fixed_last_op (cairo_path_fixed_t *path) { cairo_path_buf_t *buf; buf = cairo_path_tail (path); - if (buf->num_ops == 0) - return -1; + assert (buf->num_ops != 0); return buf->op[buf->num_ops - 1]; } -static inline void -_cairo_path_fixed_extents_add (cairo_path_fixed_t *path, - const cairo_point_t *point) +static inline const cairo_point_t * +_cairo_path_fixed_penultimate_point (cairo_path_fixed_t *path) { - if (point->x < path->extents.p1.x) - path->extents.p1.x = point->x; - if (point->y < path->extents.p1.y) - path->extents.p1.y = point->y; - - if (point->x > path->extents.p2.x) - path->extents.p2.x = point->x; - if (point->y > path->extents.p2.y) - path->extents.p2.y = point->y; + cairo_path_buf_t *buf; + + buf = cairo_path_tail (path); + if (likely (buf->num_points >= 2)) { + return &buf->points[buf->num_points - 2]; + } else { + cairo_path_buf_t *prev_buf = cairo_path_buf_prev (buf); + + assert (prev_buf->num_points >= 2 - buf->num_points); + return &prev_buf->points[prev_buf->num_points - (2 - buf->num_points)]; + } +} + +static void +_cairo_path_fixed_drop_line_to (cairo_path_fixed_t *path) +{ + cairo_path_buf_t *buf; + + assert (_cairo_path_fixed_last_op (path) == CAIRO_PATH_OP_LINE_TO); + + buf = cairo_path_tail (path); + buf->num_points--; + buf->num_ops--; } cairo_status_t @@ -397,48 +413,54 @@ _cairo_path_fixed_move_to (cairo_path_fixed_t *path, cairo_fixed_t x, cairo_fixed_t y) { - cairo_status_t status; - cairo_point_t point; + _cairo_path_fixed_new_sub_path (path); - point.x = x; - point.y = y; + path->has_current_point = TRUE; + path->current_point.x = x; + path->current_point.y = y; + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +_cairo_path_fixed_move_to_apply (cairo_path_fixed_t *path) +{ + if (likely (! path->needs_move_to)) + return CAIRO_STATUS_SUCCESS; - /* If the previous op was also a MOVE_TO, then just change its - * point rather than adding a new op. */ - if (_cairo_path_last_op (path) == CAIRO_PATH_OP_MOVE_TO) { - cairo_path_buf_t *buf; + path->needs_move_to = FALSE; - buf = cairo_path_tail (path); - buf->points[buf->num_points - 1] = point; + if (path->has_extents) { + _cairo_box_add_point (&path->extents, &path->current_point); } else { - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_MOVE_TO, &point, 1); - if (unlikely (status)) - return status; - - if (path->has_current_point && path->is_rectilinear) { - /* a move-to is first an implicit close */ - path->is_rectilinear = path->current_point.x == path->last_move_point.x || - path->current_point.y == path->last_move_point.y; - path->maybe_fill_region &= path->is_rectilinear; - } - if (path->maybe_fill_region) { - path->maybe_fill_region = - _cairo_fixed_is_integer (path->last_move_point.x) && - _cairo_fixed_is_integer (path->last_move_point.y); - } + _cairo_box_set (&path->extents, &path->current_point, &path->current_point); + path->has_extents = TRUE; } - path->current_point = point; - path->last_move_point = point; - path->has_last_move_point = TRUE; - path->has_current_point = TRUE; + if (path->fill_maybe_region) { + path->fill_maybe_region = _cairo_fixed_is_integer (path->current_point.x) && + _cairo_fixed_is_integer (path->current_point.y); + } - return CAIRO_STATUS_SUCCESS; + path->last_move_point = path->current_point; + + return _cairo_path_fixed_add (path, CAIRO_PATH_OP_MOVE_TO, &path->current_point, 1); } void _cairo_path_fixed_new_sub_path (cairo_path_fixed_t *path) { + if (! path->needs_move_to) { + /* If the current subpath doesn't need_move_to, it contains at least one command */ + if (path->fill_is_rectilinear) { + /* Implicitly close for fill */ + path->fill_is_rectilinear = path->current_point.x == path->last_move_point.x || + path->current_point.y == path->last_move_point.y; + path->fill_maybe_region &= path->fill_is_rectilinear; + } + path->needs_move_to = TRUE; + } + path->has_current_point = FALSE; } @@ -475,12 +497,16 @@ _cairo_path_fixed_line_to (cairo_path_fixed_t *path, if (! path->has_current_point) return _cairo_path_fixed_move_to (path, point.x, point.y); + status = _cairo_path_fixed_move_to_apply (path); + if (unlikely (status)) + return status; + /* If the previous op was but the initial MOVE_TO and this segment * is degenerate, then we can simply skip this point. Note that * a move-to followed by a degenerate line-to is a valid path for * stroking, but at all other times is simply a degenerate segment. */ - if (_cairo_path_last_op (path) != CAIRO_PATH_OP_MOVE_TO) { + if (_cairo_path_fixed_last_op (path) != CAIRO_PATH_OP_MOVE_TO) { if (x == path->current_point.x && y == path->current_point.y) return CAIRO_STATUS_SUCCESS; } @@ -488,22 +514,13 @@ _cairo_path_fixed_line_to (cairo_path_fixed_t *path, /* If the previous op was also a LINE_TO with the same gradient, * then just change its end-point rather than adding a new op. */ - if (_cairo_path_last_op (path) == CAIRO_PATH_OP_LINE_TO) { - cairo_path_buf_t *buf; + if (_cairo_path_fixed_last_op (path) == CAIRO_PATH_OP_LINE_TO) { const cairo_point_t *p; - buf = cairo_path_tail (path); - if (likely (buf->num_points >= 2)) { - p = &buf->points[buf->num_points-2]; - } else { - cairo_path_buf_t *prev_buf = cairo_path_buf_prev (buf); - p = &prev_buf->points[prev_buf->num_points - (2 - buf->num_points)]; - } - + p = _cairo_path_fixed_penultimate_point (path); if (p->x == path->current_point.x && p->y == path->current_point.y) { /* previous line element was degenerate, replace */ - buf->points[buf->num_points - 1] = point; - goto FLAGS; + _cairo_path_fixed_drop_line_to (path); } else { cairo_slope_t prev, self; @@ -513,38 +530,36 @@ _cairo_path_fixed_line_to (cairo_path_fixed_t *path, /* cannot trim anti-parallel segments whilst stroking */ ! _cairo_slope_backwards (&prev, &self)) { - buf->points[buf->num_points - 1] = point; - goto FLAGS; + _cairo_path_fixed_drop_line_to (path); + /* In this case the flags might be more restrictive than + * what we actually need. + * When changing the flags definition we should check if + * changing the line_to point can affect them. + */ } } } - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_LINE_TO, &point, 1); - if (unlikely (status)) - return status; - - FLAGS: - if (path->is_rectilinear) { - path->is_rectilinear = path->current_point.x == x || - path->current_point.y == y; - path->maybe_fill_region &= path->is_rectilinear; - } - if (path->maybe_fill_region) { - path->maybe_fill_region = _cairo_fixed_is_integer (x) && - _cairo_fixed_is_integer (y); - } - if (path->is_empty_fill) { - path->is_empty_fill = path->current_point.x == x && - path->current_point.y == y; + if (path->stroke_is_rectilinear) { + path->stroke_is_rectilinear = path->current_point.x == x || + path->current_point.y == y; + path->fill_is_rectilinear &= path->stroke_is_rectilinear; + path->fill_maybe_region &= path->fill_is_rectilinear; + if (path->fill_maybe_region) { + path->fill_maybe_region = _cairo_fixed_is_integer (x) && + _cairo_fixed_is_integer (y); + } + if (path->fill_is_empty) { + path->fill_is_empty = path->current_point.x == x && + path->current_point.y == y; + } } path->current_point = point; - if (path->has_last_move_point) { - _cairo_path_fixed_extents_add (path, &path->last_move_point); - path->has_last_move_point = FALSE; - } - _cairo_path_fixed_extents_add (path, &point); - return CAIRO_STATUS_SUCCESS; + + _cairo_box_add_point (&path->extents, &point); + + return _cairo_path_fixed_add (path, CAIRO_PATH_OP_LINE_TO, &point, 1); } cairo_status_t @@ -572,34 +587,39 @@ _cairo_path_fixed_curve_to (cairo_path_fixed_t *path, /* make sure subpaths are started properly */ if (! path->has_current_point) { status = _cairo_path_fixed_move_to (path, x0, y0); - if (unlikely (status)) - return status; + assert (status == CAIRO_STATUS_SUCCESS); + } + + status = _cairo_path_fixed_move_to_apply (path); + if (unlikely (status)) + return status; + + /* If the previous op was a degenerate LINE_TO, drop it. */ + if (_cairo_path_fixed_last_op (path) == CAIRO_PATH_OP_LINE_TO) { + const cairo_point_t *p; + + p = _cairo_path_fixed_penultimate_point (path); + if (p->x == path->current_point.x && p->y == path->current_point.y) { + /* previous line element was degenerate, replace */ + _cairo_path_fixed_drop_line_to (path); + } } point[0].x = x0; point[0].y = y0; point[1].x = x1; point[1].y = y1; point[2].x = x2; point[2].y = y2; - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_CURVE_TO, point, 3); - if (unlikely (status)) - return status; + + _cairo_box_add_curve_to (&path->extents, &path->current_point, + &point[0], &point[1], &point[2]); path->current_point = point[2]; - path->has_current_point = TRUE; - path->is_empty_fill = FALSE; path->has_curve_to = TRUE; - path->is_rectilinear = FALSE; - path->maybe_fill_region = FALSE; - - /* coarse bounds */ - if (path->has_last_move_point) { - _cairo_path_fixed_extents_add (path, &path->last_move_point); - path->has_last_move_point = FALSE; - } - _cairo_path_fixed_extents_add (path, &point[0]); - _cairo_path_fixed_extents_add (path, &point[1]); - _cairo_path_fixed_extents_add (path, &point[2]); + path->stroke_is_rectilinear = FALSE; + path->fill_is_rectilinear = FALSE; + path->fill_maybe_region = FALSE; + path->fill_is_empty = FALSE; - return CAIRO_STATUS_SUCCESS; + return _cairo_path_fixed_add (path, CAIRO_PATH_OP_CURVE_TO, point, 3); } cairo_status_t @@ -630,35 +650,28 @@ _cairo_path_fixed_close_path (cairo_path_fixed_t *path) if (! path->has_current_point) return CAIRO_STATUS_SUCCESS; - /* If the previous op was also a LINE_TO back to the start, discard it */ - if (_cairo_path_last_op (path) == CAIRO_PATH_OP_LINE_TO) { - if (path->current_point.x == path->last_move_point.x && - path->current_point.y == path->last_move_point.y) - { - cairo_path_buf_t *buf; - cairo_point_t *p; - - buf = cairo_path_tail (path); - if (likely (buf->num_points >= 2)) { - p = &buf->points[buf->num_points-2]; - } else { - cairo_path_buf_t *prev_buf = cairo_path_buf_prev (buf); - p = &prev_buf->points[prev_buf->num_points - (2 - buf->num_points)]; - } - - path->current_point = *p; - buf->num_ops--; - buf->num_points--; - } - } - - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_CLOSE_PATH, NULL, 0); + /* + * Add a line_to, to compute flags and solve any degeneracy. + * It will be removed later (if it was actually added). + */ + status = _cairo_path_fixed_line_to (path, + path->last_move_point.x, + path->last_move_point.y); if (unlikely (status)) return status; - return _cairo_path_fixed_move_to (path, - path->last_move_point.x, - path->last_move_point.y); + /* + * If the command used to close the path is a line_to, drop it. + * We must check that last command is actually a line_to, + * because the path could have been closed with a curve_to (and + * the previous line_to not added as it would be degenerate). + */ + if (_cairo_path_fixed_last_op (path) == CAIRO_PATH_OP_LINE_TO) + _cairo_path_fixed_drop_line_to (path); + + path->needs_move_to = TRUE; /* After close_path, add an implicit move_to */ + + return _cairo_path_fixed_add (path, CAIRO_PATH_OP_CLOSE_PATH, NULL, 0); } cairo_bool_t @@ -714,9 +727,20 @@ _cairo_path_fixed_add (cairo_path_fixed_t *path, } len += snprintf (buf + len, sizeof (buf), "]"); +#define STRINGIFYFLAG(x) (path->x ? #x " " : "") fprintf (stderr, - "_cairo_path_fixed_add (%s, %s)\n", - op_str[(int) op], buf); + "_cairo_path_fixed_add (%s, %s) [%s%s%s%s%s%s%s%s]\n", + op_str[(int) op], buf, + STRINGIFYFLAG(has_current_point), + STRINGIFYFLAG(needs_move_to), + STRINGIFYFLAG(has_extents), + STRINGIFYFLAG(has_curve_to), + STRINGIFYFLAG(stroke_is_rectilinear), + STRINGIFYFLAG(fill_is_rectilinear), + STRINGIFYFLAG(fill_is_empty), + STRINGIFYFLAG(fill_maybe_region) + ); +#undef STRINGIFYFLAG } _cairo_path_buf_add_op (buf, op); @@ -780,54 +804,32 @@ _cairo_path_buf_add_points (cairo_path_buf_t *buf, cairo_status_t _cairo_path_fixed_interpret (const cairo_path_fixed_t *path, - cairo_direction_t dir, cairo_path_fixed_move_to_func_t *move_to, cairo_path_fixed_line_to_func_t *line_to, cairo_path_fixed_curve_to_func_t *curve_to, cairo_path_fixed_close_path_func_t *close_path, void *closure) { - const uint8_t num_args[] = { - 1, /* cairo_path_move_to */ - 1, /* cairo_path_op_line_to */ - 3, /* cairo_path_op_curve_to */ - 0, /* cairo_path_op_close_path */ - }; + const cairo_path_buf_t *buf; cairo_status_t status; - const cairo_path_buf_t *buf, *first; - cairo_bool_t forward = (dir == CAIRO_DIRECTION_FORWARD); - int step = forward ? 1 : -1; - - buf = first = forward ? cairo_path_head (path) : cairo_path_tail (path); - do { - cairo_point_t *points; - int start, stop, i; - - if (forward) { - start = 0; - stop = buf->num_ops; - points = buf->points; - } else { - start = buf->num_ops - 1; - stop = -1; - points = buf->points + buf->num_points; - } - for (i = start; i != stop; i += step) { - cairo_path_op_t op = buf->op[i]; - - if (! forward) - points -= num_args[(int) op]; + cairo_path_foreach_buf_start (buf, path) { + const cairo_point_t *points = buf->points; + unsigned int i; - switch (op) { + for (i = 0; i < buf->num_ops; i++) { + switch (buf->op[i]) { case CAIRO_PATH_OP_MOVE_TO: status = (*move_to) (closure, &points[0]); + points += 1; break; case CAIRO_PATH_OP_LINE_TO: status = (*line_to) (closure, &points[0]); + points += 1; break; case CAIRO_PATH_OP_CURVE_TO: status = (*curve_to) (closure, &points[0], &points[1], &points[2]); + points += 3; break; default: ASSERT_NOT_REACHED; @@ -835,13 +837,11 @@ _cairo_path_fixed_interpret (const cairo_path_fixed_t *path, status = (*close_path) (closure); break; } + if (unlikely (status)) return status; - - if (forward) - points += num_args[(int) op]; } - } while ((buf = forward ? cairo_path_buf_next (buf) : cairo_path_buf_prev (buf)) != first); + } cairo_path_foreach_buf_end (buf, path); return CAIRO_STATUS_SUCCESS; } @@ -901,7 +901,6 @@ _append_close_path (void *abstract_closure) cairo_status_t _cairo_path_fixed_append (cairo_path_fixed_t *path, const cairo_path_fixed_t *other, - cairo_direction_t dir, cairo_fixed_t tx, cairo_fixed_t ty) { @@ -911,7 +910,7 @@ _cairo_path_fixed_append (cairo_path_fixed_t *path, closure.offset.x = tx; closure.offset.y = ty; - return _cairo_path_fixed_interpret (other, dir, + return _cairo_path_fixed_interpret (other, _append_move_to, _append_line_to, _append_curve_to, @@ -929,13 +928,18 @@ _cairo_path_fixed_offset_and_scale (cairo_path_fixed_t *path, cairo_path_buf_t *buf; unsigned int i; - if (path->maybe_fill_region) { - path->maybe_fill_region = _cairo_fixed_is_integer (offx) && - _cairo_fixed_is_integer (offy) && - _cairo_fixed_is_integer (scalex) && - _cairo_fixed_is_integer (scaley); + if (scalex == CAIRO_FIXED_ONE && scaley == CAIRO_FIXED_ONE) { + _cairo_path_fixed_translate (path, offx, offy); + return; } + path->last_move_point.x = _cairo_fixed_mul (scalex, path->last_move_point.x) + offx; + path->last_move_point.y = _cairo_fixed_mul (scaley, path->last_move_point.y) + offy; + path->current_point.x = _cairo_fixed_mul (scalex, path->current_point.x) + offx; + path->current_point.y = _cairo_fixed_mul (scaley, path->current_point.y) + offy; + + path->fill_maybe_region = TRUE; + cairo_path_foreach_buf_start (buf, path) { for (i = 0; i < buf->num_points; i++) { if (scalex != CAIRO_FIXED_ONE) @@ -945,12 +949,18 @@ _cairo_path_fixed_offset_and_scale (cairo_path_fixed_t *path, if (scaley != CAIRO_FIXED_ONE) buf->points[i].y = _cairo_fixed_mul (buf->points[i].y, scaley); buf->points[i].y += offy; + + if (path->fill_maybe_region) { + path->fill_maybe_region = _cairo_fixed_is_integer (buf->points[i].x) && + _cairo_fixed_is_integer (buf->points[i].y); + } } } cairo_path_foreach_buf_end (buf, path); + path->fill_maybe_region &= path->fill_is_rectilinear; + path->extents.p1.x = _cairo_fixed_mul (scalex, path->extents.p1.x) + offx; path->extents.p2.x = _cairo_fixed_mul (scalex, path->extents.p2.x) + offx; - path->extents.p1.y = _cairo_fixed_mul (scaley, path->extents.p1.y) + offy; path->extents.p2.y = _cairo_fixed_mul (scaley, path->extents.p2.y) + offy; } @@ -966,30 +976,47 @@ _cairo_path_fixed_translate (cairo_path_fixed_t *path, if (offx == 0 && offy == 0) return; - if (path->maybe_fill_region && - ! (_cairo_fixed_is_integer (offx) && _cairo_fixed_is_integer (offy))) - { - path->maybe_fill_region = FALSE; - } - path->last_move_point.x += offx; path->last_move_point.y += offy; path->current_point.x += offx; path->current_point.y += offy; + path->fill_maybe_region = TRUE; + cairo_path_foreach_buf_start (buf, path) { - for (i = 0; i < buf->num_points; i++) { - buf->points[i].x += offx; - buf->points[i].y += offy; + for (i = 0; i < buf->num_points; i++) { + buf->points[i].x += offx; + buf->points[i].y += offy; + + if (path->fill_maybe_region) { + path->fill_maybe_region = _cairo_fixed_is_integer (buf->points[i].x) && + _cairo_fixed_is_integer (buf->points[i].y); + } } } cairo_path_foreach_buf_end (buf, path); + path->fill_maybe_region &= path->fill_is_rectilinear; + path->extents.p1.x += offx; path->extents.p1.y += offy; path->extents.p2.x += offx; path->extents.p2.y += offy; } + +static inline void +_cairo_path_fixed_transform_point (cairo_point_t *p, + const cairo_matrix_t *matrix) +{ + double dx, dy; + + dx = _cairo_fixed_to_double (p->x); + dy = _cairo_fixed_to_double (p->y); + cairo_matrix_transform_point (matrix, &dx, &dy); + p->x = _cairo_fixed_from_double (dx); + p->y = _cairo_fixed_from_double (dy); +} + /** * _cairo_path_fixed_transform: * @path: a #cairo_path_fixed_t to be transformed @@ -1003,80 +1030,58 @@ void _cairo_path_fixed_transform (cairo_path_fixed_t *path, const cairo_matrix_t *matrix) { + cairo_box_t extents; + cairo_point_t point; cairo_path_buf_t *buf; unsigned int i; - double dx, dy; - - /* XXX current_point, last_move_to */ if (matrix->yx == 0.0 && matrix->xy == 0.0) { /* Fast path for the common case of scale+transform */ - if (matrix->xx == 1. && matrix->yy == 1.) { - _cairo_path_fixed_translate (path, - _cairo_fixed_from_double (matrix->x0), - _cairo_fixed_from_double (matrix->y0)); - } else { - _cairo_path_fixed_offset_and_scale (path, - _cairo_fixed_from_double (matrix->x0), - _cairo_fixed_from_double (matrix->y0), - _cairo_fixed_from_double (matrix->xx), - _cairo_fixed_from_double (matrix->yy)); - } + _cairo_path_fixed_offset_and_scale (path, + _cairo_fixed_from_double (matrix->x0), + _cairo_fixed_from_double (matrix->y0), + _cairo_fixed_from_double (matrix->xx), + _cairo_fixed_from_double (matrix->yy)); return; } - path->extents.p1.x = path->extents.p1.y = INT_MAX; - path->extents.p2.x = path->extents.p2.y = INT_MIN; - path->maybe_fill_region = FALSE; - cairo_path_foreach_buf_start (buf, path) { - for (i = 0; i < buf->num_points; i++) { - dx = _cairo_fixed_to_double (buf->points[i].x); - dy = _cairo_fixed_to_double (buf->points[i].y); + _cairo_path_fixed_transform_point (&path->last_move_point, matrix); + _cairo_path_fixed_transform_point (&path->current_point, matrix); - cairo_matrix_transform_point (matrix, &dx, &dy); + buf = cairo_path_head (path); + if (buf->num_points == 0) + return; - buf->points[i].x = _cairo_fixed_from_double (dx); - buf->points[i].y = _cairo_fixed_from_double (dy); + extents = path->extents; + point = buf->points[0]; + _cairo_path_fixed_transform_point (&point, matrix); + _cairo_box_set (&path->extents, &point, &point); - /* XXX need to eliminate surplus move-to's? */ - _cairo_path_fixed_extents_add (path, &buf->points[i]); - } + cairo_path_foreach_buf_start (buf, path) { + for (i = 0; i < buf->num_points; i++) { + _cairo_path_fixed_transform_point (&buf->points[i], matrix); + _cairo_box_add_point (&path->extents, &buf->points[i]); + } } cairo_path_foreach_buf_end (buf, path); -} -cairo_bool_t -_cairo_path_fixed_is_equal (const cairo_path_fixed_t *path, - const cairo_path_fixed_t *other) -{ - const cairo_path_buf_t *path_buf, *other_buf; - - if (path->current_point.x != other->current_point.x || - path->current_point.y != other->current_point.y || - path->has_current_point != other->has_current_point || - path->has_curve_to != other->has_curve_to || - path->is_rectilinear != other->is_rectilinear || - path->maybe_fill_region != other->maybe_fill_region || - path->last_move_point.x != other->last_move_point.x || - path->last_move_point.y != other->last_move_point.y) - { - return FALSE; - } + if (path->has_curve_to) { + cairo_bool_t is_tight; - other_buf = cairo_path_head (other); - cairo_path_foreach_buf_start (path_buf, path) { - if (path_buf->num_ops != other_buf->num_ops || - path_buf->num_points != other_buf->num_points || - memcmp (path_buf->op, other_buf->op, - sizeof (cairo_path_op_t) * path_buf->num_ops) != 0 || - memcmp (path_buf->points, other_buf->points, - sizeof (cairo_point_t) * path_buf->num_points) != 0) - { - return FALSE; + _cairo_matrix_transform_bounding_box_fixed (matrix, &extents, &is_tight); + if (!is_tight) { + cairo_bool_t has_extents; + + has_extents = _cairo_path_bounder_extents (path, &extents); + assert (has_extents); } - other_buf = cairo_path_buf_next (other_buf); - } cairo_path_foreach_buf_end (path_buf, path); + path->extents = extents; + } - return TRUE; + /* flags might become more strict than needed */ + path->stroke_is_rectilinear = FALSE; + path->fill_is_rectilinear = FALSE; + path->fill_is_empty = FALSE; + path->fill_maybe_region = FALSE; } /* Closure for path flattening */ @@ -1145,7 +1150,6 @@ _cpf_close_path (void *closure) cairo_status_t _cairo_path_fixed_interpret_flat (const cairo_path_fixed_t *path, - cairo_direction_t dir, cairo_path_fixed_move_to_func_t *move_to, cairo_path_fixed_line_to_func_t *line_to, cairo_path_fixed_close_path_func_t *close_path, @@ -1155,7 +1159,7 @@ _cairo_path_fixed_interpret_flat (const cairo_path_fixed_t *path, cpf_t flattener; if (! path->has_curve_to) { - return _cairo_path_fixed_interpret (path, dir, + return _cairo_path_fixed_interpret (path, move_to, line_to, NULL, @@ -1168,7 +1172,7 @@ _cairo_path_fixed_interpret_flat (const cairo_path_fixed_t *path, flattener.line_to = line_to; flattener.close_path = close_path; flattener.closure = closure; - return _cairo_path_fixed_interpret (path, dir, + return _cairo_path_fixed_interpret (path, _cpf_move_to, _cpf_line_to, _cpf_curve_to, @@ -1207,7 +1211,7 @@ _cairo_path_fixed_is_box (const cairo_path_fixed_t *path, { const cairo_path_buf_t *buf = cairo_path_head (path); - if (! path->is_rectilinear) + if (! path->fill_is_rectilinear) return FALSE; /* Do we have the right number of ops? */ @@ -1411,14 +1415,5 @@ _cairo_path_fixed_iter_at_end (const cairo_path_fixed_iter_t *iter) if (iter->buf == NULL) return TRUE; - if (iter->n_op == iter->buf->num_ops) - return TRUE; - - if (iter->buf->op[iter->n_op] == CAIRO_PATH_OP_MOVE_TO && - iter->buf->num_ops == iter->n_op + 1) - { - return TRUE; - } - - return FALSE; + return iter->n_op == iter->buf->num_ops; } diff --git a/src/cairo-path-in-fill.c b/src/cairo-path-in-fill.c index b344f52..3738874 100644 --- a/src/cairo-path-in-fill.c +++ b/src/cairo-path-in-fill.c @@ -254,13 +254,12 @@ _cairo_path_fixed_in_fill (const cairo_path_fixed_t *path, cairo_status_t status; cairo_bool_t is_inside; - if (path->is_empty_fill) + if (_cairo_path_fixed_fill_is_empty (path)) return FALSE; _cairo_in_fill_init (&in_fill, tolerance, x, y); status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_in_fill_move_to, _cairo_in_fill_line_to, _cairo_in_fill_curve_to, diff --git a/src/cairo-path-stroke.c b/src/cairo-path-stroke.c index 505b6ab..d5ced0e 100644 --- a/src/cairo-path-stroke.c +++ b/src/cairo-path-stroke.c @@ -39,6 +39,7 @@ #define _BSD_SOURCE /* for hypot() */ #include "cairoint.h" +#include "cairo-box-private.h" #include "cairo-boxes-private.h" #include "cairo-error-private.h" #include "cairo-path-fixed-private.h" @@ -1318,7 +1319,6 @@ _cairo_path_fixed_stroke_to_shaper (cairo_path_fixed_t *path, stroker.closure = closure; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_stroker_move_to, stroker.dash.dashed ? _cairo_stroker_line_to_dashed : @@ -1362,7 +1362,6 @@ _cairo_path_fixed_stroke_to_polygon (const cairo_path_fixed_t *path, _cairo_stroker_limit (&stroker, polygon->limits, polygon->num_limits); status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_stroker_move_to, stroker.dash.dashed ? _cairo_stroker_line_to_dashed : @@ -1399,7 +1398,7 @@ _cairo_path_fixed_stroke_to_traps (const cairo_path_fixed_t *path, * device-pixel boundaries when possible. Many backends can render * those much faster than non-aligned trapezoids, (by using clip * regions, etc.) */ - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { status = _cairo_path_fixed_stroke_rectilinear_to_traps (path, stroke_style, ctm, @@ -1408,9 +1407,7 @@ _cairo_path_fixed_stroke_to_traps (const cairo_path_fixed_t *path, return status; } - _cairo_polygon_init (&polygon); - if (traps->num_limits) - _cairo_polygon_limit (&polygon, traps->limits, traps->num_limits); + _cairo_polygon_init (&polygon, traps->limits, traps->num_limits); status = _cairo_path_fixed_stroke_to_polygon (path, stroke_style, @@ -2037,7 +2034,7 @@ _cairo_path_fixed_stroke_rectilinear_to_traps (const cairo_path_fixed_t *path, cairo_rectilinear_stroker_t rectilinear_stroker; cairo_int_status_t status; - assert (path->is_rectilinear); + assert (_cairo_path_fixed_stroke_is_rectilinear (path)); if (! _cairo_rectilinear_stroker_init (&rectilinear_stroker, stroke_style, ctm, @@ -2053,7 +2050,6 @@ _cairo_path_fixed_stroke_rectilinear_to_traps (const cairo_path_fixed_t *path, } status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_rectilinear_stroker_move_to, rectilinear_stroker.dash.dashed ? _cairo_rectilinear_stroker_line_to_dashed : @@ -2091,7 +2087,7 @@ _cairo_path_fixed_stroke_rectilinear_to_boxes (const cairo_path_fixed_t *path, cairo_rectilinear_stroker_t rectilinear_stroker; cairo_int_status_t status; - assert (path->is_rectilinear); + assert (_cairo_path_fixed_stroke_is_rectilinear (path)); if (! _cairo_rectilinear_stroker_init (&rectilinear_stroker, stroke_style, ctm, @@ -2107,7 +2103,6 @@ _cairo_path_fixed_stroke_rectilinear_to_boxes (const cairo_path_fixed_t *path, } status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_rectilinear_stroker_move_to, rectilinear_stroker.dash.dashed ? _cairo_rectilinear_stroker_line_to_dashed : diff --git a/src/cairo-path.c b/src/cairo-path.c index 28182c0..d9f08ac 100644 --- a/src/cairo-path.c +++ b/src/cairo-path.c @@ -55,7 +55,6 @@ static const cairo_path_t _cairo_path_nil = { CAIRO_STATUS_NO_MEMORY, NULL, 0 }; /* Closure for path interpretation. */ typedef struct cairo_path_count { int count; - cairo_point_t current_point; } cpc_t; static cairo_status_t @@ -66,8 +65,6 @@ _cpc_move_to (void *closure, cpc->count += 2; - cpc->current_point = *point; - return CAIRO_STATUS_SUCCESS; } @@ -79,8 +76,6 @@ _cpc_line_to (void *closure, cpc->count += 2; - cpc->current_point = *point; - return CAIRO_STATUS_SUCCESS; } @@ -94,8 +89,6 @@ _cpc_curve_to (void *closure, cpc->count += 4; - cpc->current_point = *p3; - return CAIRO_STATUS_SUCCESS; } @@ -119,12 +112,9 @@ _cairo_path_count (cairo_path_t *path, cpc_t cpc; cpc.count = 0; - cpc.current_point.x = 0; - cpc.current_point.y = 0; if (flatten) { status = _cairo_path_fixed_interpret_flat (path_fixed, - CAIRO_DIRECTION_FORWARD, _cpc_move_to, _cpc_line_to, _cpc_close_path, @@ -132,7 +122,6 @@ _cairo_path_count (cairo_path_t *path, tolerance); } else { status = _cairo_path_fixed_interpret (path_fixed, - CAIRO_DIRECTION_FORWARD, _cpc_move_to, _cpc_line_to, _cpc_curve_to, @@ -150,7 +139,6 @@ _cairo_path_count (cairo_path_t *path, typedef struct cairo_path_populate { cairo_path_data_t *data; cairo_gstate_t *gstate; - cairo_point_t current_point; } cpp_t; static cairo_status_t @@ -175,8 +163,6 @@ _cpp_move_to (void *closure, cpp->data += data->header.length; - cpp->current_point = *point; - return CAIRO_STATUS_SUCCESS; } @@ -202,8 +188,6 @@ _cpp_line_to (void *closure, cpp->data += data->header.length; - cpp->current_point = *point; - return CAIRO_STATUS_SUCCESS; } @@ -246,8 +230,6 @@ _cpp_curve_to (void *closure, cpp->data += data->header.length; - cpp->current_point = *p3; - return CAIRO_STATUS_SUCCESS; } @@ -276,13 +258,10 @@ _cairo_path_populate (cairo_path_t *path, cpp.data = path->data; cpp.gstate = gstate; - cpp.current_point.x = 0; - cpp.current_point.y = 0; if (flatten) { double tolerance = _cairo_gstate_get_tolerance (gstate); status = _cairo_path_fixed_interpret_flat (path_fixed, - CAIRO_DIRECTION_FORWARD, _cpp_move_to, _cpp_line_to, _cpp_close_path, @@ -290,7 +269,6 @@ _cairo_path_populate (cairo_path_t *path, tolerance); } else { status = _cairo_path_fixed_interpret (path_fixed, - CAIRO_DIRECTION_FORWARD, _cpp_move_to, _cpp_line_to, _cpp_curve_to, diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index 1b79011..82c2279 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -31,6 +31,11 @@ #include "cairoint.h" #include "cairo-error-private.h" #include "cairo-freed-pool-private.h" +#include "cairo-path-private.h" + +#include + +#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ /** * SECTION:cairo-pattern @@ -44,13 +49,15 @@ * brush too. * * A cairo pattern is created by using one of the many constructors, - * of the form cairo_pattern_create_type() + * of the form + * cairo_pattern_create_type() * or implicitly through - * cairo_set_source_type() functions. + * cairo_set_source_type() + * functions. */ #if HAS_FREED_POOL -static freed_pool_t freed_pattern_pool[4]; +static freed_pool_t freed_pattern_pool[5]; #endif static const cairo_solid_pattern_t _cairo_pattern_nil = { @@ -154,6 +161,9 @@ _cairo_pattern_init (cairo_pattern_t *pattern, cairo_pattern_type_t type) case CAIRO_PATTERN_TYPE_RADIAL: VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_radial_pattern_t)); break; + case CAIRO_PATTERN_TYPE_MESH: + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_mesh_pattern_t)); + break; } #endif @@ -219,6 +229,19 @@ _cairo_gradient_pattern_init_copy (cairo_gradient_pattern_t *pattern, return CAIRO_STATUS_SUCCESS; } +static cairo_status_t +_cairo_mesh_pattern_init_copy (cairo_mesh_pattern_t *pattern, + const cairo_mesh_pattern_t *other) +{ + *pattern = *other; + + _cairo_array_init (&pattern->patches, sizeof (cairo_mesh_patch_t)); + + return _cairo_array_append_multiple (&pattern->patches, + _cairo_array_index_const (&other->patches, 0), + _cairo_array_num_elements (&other->patches)); +} + cairo_status_t _cairo_pattern_init_copy (cairo_pattern_t *pattern, const cairo_pattern_t *other) @@ -260,6 +283,18 @@ _cairo_pattern_init_copy (cairo_pattern_t *pattern, if (unlikely (status)) return status; + } break; + case CAIRO_PATTERN_TYPE_MESH: { + cairo_mesh_pattern_t *dst = (cairo_mesh_pattern_t *) pattern; + cairo_mesh_pattern_t *src = (cairo_mesh_pattern_t *) other; + cairo_status_t status; + + VG (VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_mesh_pattern_t))); + + status = _cairo_mesh_pattern_init_copy (dst, src); + if (unlikely (status)) + return status; + } break; } @@ -293,6 +328,9 @@ _cairo_pattern_init_static_copy (cairo_pattern_t *pattern, case CAIRO_PATTERN_TYPE_RADIAL: size = sizeof (cairo_radial_pattern_t); break; + case CAIRO_PATTERN_TYPE_MESH: + size = sizeof (cairo_mesh_pattern_t); + break; } memcpy (pattern, other, size); @@ -353,6 +391,12 @@ _cairo_pattern_fini (cairo_pattern_t *pattern) if (gradient->stops && gradient->stops != gradient->stops_embedded) free (gradient->stops); } break; + case CAIRO_PATTERN_TYPE_MESH: { + cairo_mesh_pattern_t *mesh = + (cairo_mesh_pattern_t *) pattern; + + _cairo_array_fini (&mesh->patches); + } break; } #if HAVE_VALGRIND @@ -369,6 +413,9 @@ _cairo_pattern_fini (cairo_pattern_t *pattern) case CAIRO_PATTERN_TYPE_RADIAL: VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_radial_pattern_t)); break; + case CAIRO_PATTERN_TYPE_MESH: + VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_mesh_pattern_t)); + break; } #endif } @@ -396,6 +443,9 @@ _cairo_pattern_create_copy (cairo_pattern_t **pattern_out, case CAIRO_PATTERN_TYPE_RADIAL: pattern = malloc (sizeof (cairo_radial_pattern_t)); break; + case CAIRO_PATTERN_TYPE_MESH: + pattern = malloc (sizeof (cairo_mesh_pattern_t)); + break; default: ASSERT_NOT_REACHED; return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -450,31 +500,31 @@ _cairo_pattern_init_gradient (cairo_gradient_pattern_t *pattern, pattern->stops = NULL; } -void +static void _cairo_pattern_init_linear (cairo_linear_pattern_t *pattern, double x0, double y0, double x1, double y1) { _cairo_pattern_init_gradient (&pattern->base, CAIRO_PATTERN_TYPE_LINEAR); - pattern->p1.x = _cairo_fixed_from_double (x0); - pattern->p1.y = _cairo_fixed_from_double (y0); - pattern->p2.x = _cairo_fixed_from_double (x1); - pattern->p2.y = _cairo_fixed_from_double (y1); + pattern->pd1.x = x0; + pattern->pd1.y = y0; + pattern->pd2.x = x1; + pattern->pd2.y = y1; } -void +static void _cairo_pattern_init_radial (cairo_radial_pattern_t *pattern, double cx0, double cy0, double radius0, double cx1, double cy1, double radius1) { _cairo_pattern_init_gradient (&pattern->base, CAIRO_PATTERN_TYPE_RADIAL); - pattern->c1.x = _cairo_fixed_from_double (cx0); - pattern->c1.y = _cairo_fixed_from_double (cy0); - pattern->r1 = _cairo_fixed_from_double (fabs (radius0)); - pattern->c2.x = _cairo_fixed_from_double (cx1); - pattern->c2.y = _cairo_fixed_from_double (cy1); - pattern->r2 = _cairo_fixed_from_double (fabs (radius1)); + pattern->cd1.center.x = cx0; + pattern->cd1.center.y = cy0; + pattern->cd1.radius = fabs (radius0); + pattern->cd2.center.x = cx1; + pattern->cd2.center.y = cy1; + pattern->cd2.radius = fabs (radius1); } cairo_pattern_t * @@ -741,6 +791,186 @@ cairo_pattern_create_radial (double cx0, double cy0, double radius0, return &pattern->base.base; } +/* This order is specified in the diagram in the documentation for + * cairo_pattern_create_mesh() */ +static const int mesh_path_point_i[12] = { 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 1 }; +static const int mesh_path_point_j[12] = { 0, 1, 2, 3, 3, 3, 3, 2, 1, 0, 0, 0 }; +static const int mesh_control_point_i[4] = { 1, 1, 2, 2 }; +static const int mesh_control_point_j[4] = { 1, 2, 2, 1 }; + +/** + * cairo_pattern_create_mesh: + * + * Create a new mesh pattern. + * + * Mesh patterns are tensor-product patch meshes (type 7 shadings in + * PDF). Mesh patterns may also be used to create other types of + * shadings that are special cases of tensor-product patch meshes such + * as Coons patch meshes (type 6 shading in PDF) and Gouraud-shaded + * triangle meshes (type 4 and 5 shadings in PDF). + * + * Mesh patterns consist of one or more tensor-product patches, which + * should be defined before using the mesh pattern. Using a mesh + * pattern with a partially defined patch as source or mask will put + * the context in an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * A tensor-product patch is defined by 4 Bézier curves (side 0, 1, 2, + * 3) and by 4 additional control points (P0, P1, P2, P3) that provide + * further control over the patch and complete the definition of the + * tensor-product patch. The corner C0 is the first point of the + * patch. + * + * Degenerate sides are permitted so straight lines may be used. A + * zero length line on one side may be used to create 3 sided patches. + * + * + * C1 Side 1 C2 + * +---------------+ + * | | + * | P1 P2 | + * | | + * Side 0 | | Side 2 + * | | + * | | + * | P0 P3 | + * | | + * +---------------+ + * C0 Side 3 C3 + * + * + * Each patch is constructed by first calling + * cairo_pattern_mesh_begin_patch(), then cairo_pattern_mesh_move_to() + * to specify the first point in the patch (C0). Then the sides are + * specified with calls to cairo_pattern_mesh_curve_to() and + * cairo_pattern_mesh_line_to(). + * + * The four additional control points (P0, P1, P2, P3) in a patch can + * be specified with cairo_pattern_mesh_set_control_point(). + * + * At each corner of the patch (C0, C1, C2, C3) a color may be + * specified with cairo_pattern_mesh_set_corner_color_rgb() or + * cairo_pattern_mesh_set_corner_color_rgba(). Any corner whose color + * is not explicitly specified defaults to transparent black. + * + * A Coons patch is a special case of the tensor-product patch where + * the control points are implicitly defined by the sides of the + * patch. The default value for any control point not specified is the + * implicit value for a Coons patch, i.e. if no control points are + * specified the patch is a Coons patch. + * + * A triangle is a special case of the tensor-product patch where the + * control points are implicitly defined by the sides of the patch, + * all the sides are lines and one of them has length 0, i.e. if the + * patch is specified using just 3 lines, it is a triangle. If the + * corners connected by the 0-length side have the same color, the + * patch is a Gouraud-shaded triangle. + * + * Patches may be oriented differently to the above diagram. For + * example the first point could be at the top left. The diagram only + * shows the relationship between the sides, corners and control + * points. Regardless of where the first point is located, when + * specifying colors, corner 0 will always be the first point, corner + * 1 the point between side 0 and side 1 etc. + * + * Calling cairo_pattern_mesh_end_patch() completes the current + * patch. If less than 4 sides have been defined, the first missing + * side is defined as a line from the current point to the first point + * of the patch (C0) and the other sides are degenerate lines from C0 + * to C0. The corners between the added sides will all be coincident + * with C0 of the patch and their color will be set to be the same as + * the color of C0. + * + * Additional patches may be added with additional calls to + * cairo_pattern_mesh_begin_patch()/cairo_pattern_mesh_end_patch(). + * + * + * cairo_pattern_t *mesh = cairo_pattern_mesh_create_mesh (); + * + * /* Add a Coons patch */ + * cairo_pattern_mesh_begin_patch (mesh); + * cairo_pattern_mesh_move_to (pattern, 0, 0); + * cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); + * cairo_pattern_mesh_curve_to (pattern, 60, 30, 130, 60, 100, 100); + * cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); + * cairo_pattern_mesh_curve_to (pattern, 30, 70, -30, 30, 0, 0); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + * cairo_pattern_mesh_end_patch (mesh); + * + * /* Add a Gouraud-shaded triangle */ + * cairo_pattern_mesh_begin_patch (mesh) + * cairo_pattern_mesh_move_to (pattern, 100, 100); + * cairo_pattern_mesh_line_to (pattern, 130, 130); + * cairo_pattern_mesh_line_to (pattern, 130, 70); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + * cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + * cairo_pattern_mesh_end_patch (mesh) + * + * + * When two patches overlap, the last one that has been added is drawn + * over the first one. + * + * When a patch folds over itself, points are sorted depending on + * their parameter coordinates inside the patch. The v coordinate + * ranges from 0 to 1 when moving from side 3 to side 1; the u + * coordinate ranges from 0 to 1 when going from side 0 to side + * 2. Points with higher v coordinate hide points with lower v + * coordinate. When two points have the same v coordinate, the one + * with higher u coordinate is above. This means that points nearer to + * side 1 are above points nearer to side 3; when this is not + * sufficient to decide which point is above (for example when both + * points belong to side 1 or side 3) points nearer to side 2 are + * above points nearer to side 0. + * + * For a complete definition of tensor-product patches, see the PDF + * specification (ISO32000), which describes the parametrization in + * detail. + * + * Note: The coordinates are always in pattern space. For a new + * pattern, pattern space is identical to user space, but the + * relationship between the spaces can be changed with + * cairo_pattern_set_matrix(). + * + * Return value: the newly created #cairo_pattern_t if successful, or + * an error pattern in case of no memory. The caller owns the returned + * object and should call cairo_pattern_destroy() when finished with + * it. + * + * This function will always return a valid pointer, but if an error + * occurred the pattern status will be set to an error. To inspect the + * status of a pattern use cairo_pattern_status(). + * + * Since: 1.12 + **/ +cairo_pattern_t * +cairo_pattern_create_mesh (void) +{ + cairo_mesh_pattern_t *pattern; + + pattern = + _freed_pool_get (&freed_pattern_pool[CAIRO_PATTERN_TYPE_MESH]); + if (unlikely (pattern == NULL)) { + pattern = malloc (sizeof (cairo_mesh_pattern_t)); + if (unlikely (pattern == NULL)) { + _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); + return (cairo_pattern_t *) &_cairo_pattern_nil.base; + } + } + + CAIRO_MUTEX_INITIALIZE (); + + _cairo_pattern_init (&pattern->base, CAIRO_PATTERN_TYPE_MESH); + _cairo_array_init (&pattern->patches, sizeof (cairo_mesh_patch_t)); + pattern->current_patch = NULL; + CAIRO_REFERENCE_COUNT_INIT (&pattern->base.ref_count, 1); + + return &pattern->base; +} + /** * cairo_pattern_reference: * @pattern: a #cairo_pattern_t @@ -906,174 +1136,739 @@ cairo_pattern_set_user_data (cairo_pattern_t *pattern, key, user_data, destroy); } -/* make room for at least one more color stop */ -static cairo_status_t -_cairo_pattern_gradient_grow (cairo_gradient_pattern_t *pattern) +/** + * cairo_pattern_mesh_begin_patch: + * @pattern: a #cairo_pattern_t + * + * Begin a patch in a mesh pattern. + * + * After calling this function, the patch shape should be defined with + * cairo_pattern_mesh_move_to(), cairo_pattern_mesh_line_to() and + * cairo_pattern_mesh_curve_to(). + * + * After defining the patch, cairo_pattern_mesh_end_patch() must be + * called before using @pattern as a source or mask. + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @pattern already has a + * current patch, it will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_begin_patch (cairo_pattern_t *pattern) { - cairo_gradient_stop_t *new_stops; - int old_size = pattern->stops_size; - int embedded_size = ARRAY_LENGTH (pattern->stops_embedded); - int new_size = 2 * MAX (old_size, 4); + cairo_mesh_pattern_t *mesh; + cairo_status_t status; + cairo_mesh_patch_t *current_patch; + int i; - /* we have a local buffer at pattern->stops_embedded. try to fulfill the request - * from there. */ - if (old_size < embedded_size) { - pattern->stops = pattern->stops_embedded; - pattern->stops_size = embedded_size; - return CAIRO_STATUS_SUCCESS; - } + if (unlikely (pattern->status)) + return; - if (CAIRO_INJECT_FAULT ()) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } - assert (pattern->n_stops <= pattern->stops_size); + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } - if (pattern->stops == pattern->stops_embedded) { - new_stops = _cairo_malloc_ab (new_size, sizeof (cairo_gradient_stop_t)); - if (new_stops) - memcpy (new_stops, pattern->stops, old_size * sizeof (cairo_gradient_stop_t)); - } else { - new_stops = _cairo_realloc_ab (pattern->stops, - new_size, - sizeof (cairo_gradient_stop_t)); + status = _cairo_array_allocate (&mesh->patches, 1, (void **) ¤t_patch); + if (unlikely (status)) { + _cairo_pattern_set_error (pattern, status); + return; } - if (unlikely (new_stops == NULL)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + mesh->current_patch = current_patch; + mesh->current_side = -2; /* no current point */ - pattern->stops = new_stops; - pattern->stops_size = new_size; + for (i = 0; i < 4; i++) + mesh->has_control_point[i] = FALSE; - return CAIRO_STATUS_SUCCESS; + for (i = 0; i < 4; i++) + mesh->has_color[i] = FALSE; } + static void -_cairo_pattern_add_color_stop (cairo_gradient_pattern_t *pattern, - double offset, - double red, - double green, - double blue, - double alpha) +_calc_control_point (cairo_mesh_patch_t *patch, int control_point) { - cairo_gradient_stop_t *stops; - unsigned int i; + /* The Coons patch is a special case of the Tensor Product patch + * where the four control points are: + * + * P11 = S(1/3, 1/3) + * P12 = S(1/3, 2/3) + * P21 = S(2/3, 1/3) + * P22 = S(2/3, 2/3) + * + * where S is the gradient surface. + * + * When one or more control points has not been specified + * calculated the Coons patch control points are substituted. If + * no control points are specified the gradient will be a Coons + * patch. + * + * The equations below are defined in the ISO32000 standard. + */ + cairo_point_double_t *p[3][3]; + int cp_i, cp_j, i, j; + + cp_i = mesh_control_point_i[control_point]; + cp_j = mesh_control_point_j[control_point]; + + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + p[i][j] = &patch->points[cp_i ^ i][cp_j ^ j]; + + p[0][0]->x = (- 4 * p[1][1]->x + + 6 * (p[1][0]->x + p[0][1]->x) + - 2 * (p[1][2]->x + p[2][1]->x) + + 3 * (p[2][0]->x + p[0][2]->x) + - 1 * p[2][2]->x) * (1. / 9); + + p[0][0]->y = (- 4 * p[1][1]->y + + 6 * (p[1][0]->y + p[0][1]->y) + - 2 * (p[1][2]->y + p[2][1]->y) + + 3 * (p[2][0]->y + p[0][2]->y) + - 1 * p[2][2]->y) * (1. / 9); +} - if (pattern->n_stops >= pattern->stops_size) { - cairo_status_t status = _cairo_pattern_gradient_grow (pattern); - if (unlikely (status)) { - status = _cairo_pattern_set_error (&pattern->base, status); - return; - } +/** + * cairo_pattern_mesh_end_patch: + * @pattern: a #cairo_pattern_t + * + * Indicates the end of the current patch in a mesh pattern. + * + * If the current patch has less than 4 sides, it is closed with a + * straight line from the current point to the first point of the + * patch as if cairo_pattern_mesh_line_to() was used. + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @pattern has no current + * patch or the current patch has no current point, @pattern will be + * put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_end_patch (cairo_pattern_t *pattern) +{ + cairo_mesh_pattern_t *mesh; + cairo_mesh_patch_t *current_patch; + int i; + + if (unlikely (pattern->status)) + return; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; } - stops = pattern->stops; + mesh = (cairo_mesh_pattern_t *) pattern; + current_patch = mesh->current_patch; + if (unlikely (!current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } - for (i = 0; i < pattern->n_stops; i++) - { - if (offset < stops[i].offset) - { - memmove (&stops[i + 1], &stops[i], - sizeof (cairo_gradient_stop_t) * (pattern->n_stops - i)); + if (unlikely (mesh->current_side == -2)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } - break; + while (mesh->current_side < 3) { + int corner_num; + + cairo_pattern_mesh_line_to (pattern, + current_patch->points[0][0].x, + current_patch->points[0][0].y); + + corner_num = mesh->current_side + 1; + if (corner_num < 4 && ! mesh->has_color[corner_num]) { + current_patch->colors[corner_num] = current_patch->colors[0]; + mesh->has_color[corner_num] = TRUE; } } - stops[i].offset = offset; - - stops[i].color.red = red; - stops[i].color.green = green; - stops[i].color.blue = blue; - stops[i].color.alpha = alpha; + for (i = 0; i < 4; i++) { + if (! mesh->has_control_point[i]) + _calc_control_point (current_patch, i); + } - stops[i].color.red_short = _cairo_color_double_to_short (red); - stops[i].color.green_short = _cairo_color_double_to_short (green); - stops[i].color.blue_short = _cairo_color_double_to_short (blue); - stops[i].color.alpha_short = _cairo_color_double_to_short (alpha); + for (i = 0; i < 4; i++) { + if (! mesh->has_color[i]) + current_patch->colors[i] = *CAIRO_COLOR_TRANSPARENT; + } - pattern->n_stops++; + mesh->current_patch = NULL; } /** - * cairo_pattern_add_color_stop_rgb: + * cairo_pattern_mesh_curve_to: * @pattern: a #cairo_pattern_t - * @offset: an offset in the range [0.0 .. 1.0] - * @red: red component of color - * @green: green component of color - * @blue: blue component of color + * @x1: the X coordinate of the first control point + * @y1: the Y coordinate of the first control point + * @x2: the X coordinate of the second control point + * @y2: the Y coordinate of the second control point + * @x3: the X coordinate of the end of the curve + * @y3: the Y coordinate of the end of the curve * - * Adds an opaque color stop to a gradient pattern. The offset - * specifies the location along the gradient's control vector. For - * example, a linear gradient's control vector is from (x0,y0) to - * (x1,y1) while a radial gradient's control vector is from any point - * on the start circle to the corresponding point on the end circle. + * Adds a cubic Bézier spline to the current patch from the current + * point to position (@x3, @y3) in pattern-space coordinates, using + * (@x1, @y1) and (@x2, @y2) as the control points. * - * The color is specified in the same way as in cairo_set_source_rgb(). + * If the current patch has no current point before the call to + * cairo_pattern_mesh_curve_to(), this function will behave as if + * preceded by a call to cairo_pattern_mesh_move_to(@pattern, @x1, + * @y1). * - * If two (or more) stops are specified with identical offset values, - * they will be sorted according to the order in which the stops are - * added, (stops added earlier will compare less than stops added - * later). This can be useful for reliably making sharp color - * transitions instead of the typical blend. + * After this call the current point will be (@x3, @y3). * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @pattern has no current + * patch or the current patch already has 4 sides, @pattern will be + * put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. * - * Note: If the pattern is not a gradient pattern, (eg. a linear or - * radial pattern), then the pattern will be put into an error status - * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. + * Since: 1.12 **/ void -cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue) +cairo_pattern_mesh_curve_to (cairo_pattern_t *pattern, + double x1, double y1, + double x2, double y2, + double x3, double y3) { - if (pattern->status) + cairo_mesh_pattern_t *mesh; + int current_point, i, j; + + if (unlikely (pattern->status)) return; - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && - pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - { + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); return; } - offset = _cairo_restrict_value (offset, 0.0, 1.0); - red = _cairo_restrict_value (red, 0.0, 1.0); - green = _cairo_restrict_value (green, 0.0, 1.0); - blue = _cairo_restrict_value (blue, 0.0, 1.0); + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (!mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } - _cairo_pattern_add_color_stop ((cairo_gradient_pattern_t *) pattern, - offset, red, green, blue, 1.0); + if (unlikely (mesh->current_side == 3)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + if (mesh->current_side == -2) + cairo_pattern_mesh_move_to (pattern, x1, y1); + + assert (mesh->current_side >= -1); + assert (pattern->status == CAIRO_STATUS_SUCCESS); + + mesh->current_side++; + + current_point = 3 * mesh->current_side; + + current_point++; + i = mesh_path_point_i[current_point]; + j = mesh_path_point_j[current_point]; + mesh->current_patch->points[i][j].x = x1; + mesh->current_patch->points[i][j].y = y1; + + current_point++; + i = mesh_path_point_i[current_point]; + j = mesh_path_point_j[current_point]; + mesh->current_patch->points[i][j].x = x2; + mesh->current_patch->points[i][j].y = y2; + + current_point++; + if (current_point < 12) { + i = mesh_path_point_i[current_point]; + j = mesh_path_point_j[current_point]; + mesh->current_patch->points[i][j].x = x3; + mesh->current_patch->points[i][j].y = y3; + } } +slim_hidden_def (cairo_pattern_mesh_curve_to); /** - * cairo_pattern_add_color_stop_rgba: + * cairo_pattern_mesh_line_to: * @pattern: a #cairo_pattern_t - * @offset: an offset in the range [0.0 .. 1.0] - * @red: red component of color - * @green: green component of color - * @blue: blue component of color - * @alpha: alpha component of color + * @x: the X coordinate of the end of the new line + * @y: the Y coordinate of the end of the new line * - * Adds a translucent color stop to a gradient pattern. The offset - * specifies the location along the gradient's control vector. For - * example, a linear gradient's control vector is from (x0,y0) to - * (x1,y1) while a radial gradient's control vector is from any point - * on the start circle to the corresponding point on the end circle. + * Adds a line to the current patch from the current point to position + * (@x, @y) in pattern-space coordinates. * - * The color is specified in the same way as in cairo_set_source_rgba(). + * If there is no current point before the call to + * cairo_pattern_mesh_line_to() this function will behave as + * cairo_pattern_mesh_move_to(@pattern, @x, @y). * - * If two (or more) stops are specified with identical offset values, - * they will be sorted according to the order in which the stops are - * added, (stops added earlier will compare less than stops added - * later). This can be useful for reliably making sharp color - * transitions instead of the typical blend. + * After this call the current point will be (@x, @y). * - * Note: If the pattern is not a gradient pattern, (eg. a linear or - * radial pattern), then the pattern will be put into an error status - * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. - */ + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @pattern has no current + * patch or the current patch already has 4 sides, @pattern will be + * put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_line_to (cairo_pattern_t *pattern, + double x, double y) +{ + cairo_mesh_pattern_t *mesh; + cairo_point_double_t last_point; + int last_point_idx, i, j; + + if (unlikely (pattern->status)) + return; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } + + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (!mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + if (unlikely (mesh->current_side == 3)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + if (mesh->current_side == -2) { + cairo_pattern_mesh_move_to (pattern, x, y); + return; + } + + last_point_idx = 3 * (mesh->current_side + 1); + i = mesh_path_point_i[last_point_idx]; + j = mesh_path_point_j[last_point_idx]; + + last_point = mesh->current_patch->points[i][j]; + + cairo_pattern_mesh_curve_to (pattern, + (2 * last_point.x + x) * (1. / 3), + (2 * last_point.y + y) * (1. / 3), + (last_point.x + 2 * x) * (1. / 3), + (last_point.y + 2 * y) * (1. / 3), + x, y); +} +slim_hidden_def (cairo_pattern_mesh_line_to); + +/** + * cairo_pattern_mesh_move_to: + * @pattern: a #cairo_pattern_t + * @x: the X coordinate of the new position + * @y: the Y coordinate of the new position + * + * Define the first point of the current patch in a mesh pattern. + * + * After this call the current point will be (@x, @y). + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @pattern has no current + * patch or the current patch already has at leas one side, @pattern + * will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_move_to (cairo_pattern_t *pattern, + double x, double y) +{ + cairo_mesh_pattern_t *mesh; + + if (unlikely (pattern->status)) + return; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } + + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (!mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + if (unlikely (mesh->current_side >= 0)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + mesh->current_side = -1; + mesh->current_patch->points[0][0].x = x; + mesh->current_patch->points[0][0].y = y; +} +slim_hidden_def (cairo_pattern_mesh_move_to); + +/** + * cairo_pattern_mesh_set_control_point: + * @pattern: a #cairo_pattern_t + * @point_num: the control point to set the position for + * @x: the X coordinate of the control point + * @y: the Y coordinate of the control point + * + * Set an internal control point of the current patch. + * + * Valid values for @point_num are from 0 to 3 and identify the + * control points as explained in cairo_pattern_create_mesh(). + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @point_num is not valid, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_INDEX. If @pattern has no current patch, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_set_control_point (cairo_pattern_t *pattern, + unsigned int point_num, + double x, + double y) +{ + cairo_mesh_pattern_t *mesh; + int i, j; + + if (unlikely (pattern->status)) + return; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } + + if (unlikely (point_num > 3)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_INDEX); + return; + } + + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (!mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + i = mesh_control_point_i[point_num]; + j = mesh_control_point_j[point_num]; + + mesh->current_patch->points[i][j].x = x; + mesh->current_patch->points[i][j].y = y; + mesh->has_control_point[point_num] = TRUE; +} + +/* make room for at least one more color stop */ +static cairo_status_t +_cairo_pattern_gradient_grow (cairo_gradient_pattern_t *pattern) +{ + cairo_gradient_stop_t *new_stops; + int old_size = pattern->stops_size; + int embedded_size = ARRAY_LENGTH (pattern->stops_embedded); + int new_size = 2 * MAX (old_size, 4); + + /* we have a local buffer at pattern->stops_embedded. try to fulfill the request + * from there. */ + if (old_size < embedded_size) { + pattern->stops = pattern->stops_embedded; + pattern->stops_size = embedded_size; + return CAIRO_STATUS_SUCCESS; + } + + if (CAIRO_INJECT_FAULT ()) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + assert (pattern->n_stops <= pattern->stops_size); + + if (pattern->stops == pattern->stops_embedded) { + new_stops = _cairo_malloc_ab (new_size, sizeof (cairo_gradient_stop_t)); + if (new_stops) + memcpy (new_stops, pattern->stops, old_size * sizeof (cairo_gradient_stop_t)); + } else { + new_stops = _cairo_realloc_ab (pattern->stops, + new_size, + sizeof (cairo_gradient_stop_t)); + } + + if (unlikely (new_stops == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + pattern->stops = new_stops; + pattern->stops_size = new_size; + + return CAIRO_STATUS_SUCCESS; +} + +static void +_cairo_pattern_mesh_set_corner_color (cairo_mesh_pattern_t *mesh, + unsigned int corner_num, + double red, double green, double blue, + double alpha) +{ + cairo_color_t *color; + + assert (mesh->current_patch); + assert (corner_num <= 3); + + color = &mesh->current_patch->colors[corner_num]; + color->red = red; + color->green = green; + color->blue = blue; + color->alpha = alpha; + + color->red_short = _cairo_color_double_to_short (red); + color->green_short = _cairo_color_double_to_short (green); + color->blue_short = _cairo_color_double_to_short (blue); + color->alpha_short = _cairo_color_double_to_short (alpha); + + mesh->has_color[corner_num] = TRUE; +} + +/** + * cairo_pattern_mesh_set_corner_color_rgb: + * @pattern: a #cairo_pattern_t + * @corner_num: the corner to set the color for + * @red: red component of color + * @green: green component of color + * @blue: blue component of color + * + * Sets the color of a corner of the current patch in a mesh pattern. + * + * The color is specified in the same way as in cairo_set_source_rgb(). + * + * Valid values for @corner_num are from 0 to 3 and identify the + * corners as explained in cairo_pattern_create_mesh(). + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @corner_num is not valid, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_INDEX. If @pattern has no current patch, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_set_corner_color_rgb (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, double green, double blue) +{ + cairo_pattern_mesh_set_corner_color_rgba (pattern, corner_num, red, green, blue, 1.0); +} + +/** + * cairo_pattern_mesh_set_corner_color_rgba: + * @pattern: a #cairo_pattern_t + * @corner_num: the corner to set the color for + * @red: red component of color + * @green: green component of color + * @blue: blue component of color + * @alpha: alpha component of color + * + * Sets the color of a corner of the current patch in a mesh pattern. + * + * The color is specified in the same way as in cairo_set_source_rgba(). + * + * Valid values for @corner_num are from 0 to 3 and identify the + * corners as explained in cairo_pattern_create_mesh(). + * + * Note: If @pattern is not a mesh pattern then @pattern will be put + * into an error status with a status of + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If @corner_num is not valid, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_INDEX. If @pattern has no current patch, + * @pattern will be put into an error status with a status of + * %CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + * + * Since: 1.12 + **/ +void +cairo_pattern_mesh_set_corner_color_rgba (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, double green, double blue, + double alpha) +{ + cairo_mesh_pattern_t *mesh; + + if (unlikely (pattern->status)) + return; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } + + if (unlikely (corner_num > 3)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_INDEX); + return; + } + + mesh = (cairo_mesh_pattern_t *) pattern; + if (unlikely (!mesh->current_patch)) { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_INVALID_MESH_CONSTRUCTION); + return; + } + + red = _cairo_restrict_value (red, 0.0, 1.0); + green = _cairo_restrict_value (green, 0.0, 1.0); + blue = _cairo_restrict_value (blue, 0.0, 1.0); + alpha = _cairo_restrict_value (alpha, 0.0, 1.0); + + _cairo_pattern_mesh_set_corner_color (mesh, corner_num, red, green, blue, alpha); +} +slim_hidden_def (cairo_pattern_mesh_set_corner_color_rgba); + +static void +_cairo_pattern_add_color_stop (cairo_gradient_pattern_t *pattern, + double offset, + double red, + double green, + double blue, + double alpha) +{ + cairo_gradient_stop_t *stops; + unsigned int i; + + if (pattern->n_stops >= pattern->stops_size) { + cairo_status_t status = _cairo_pattern_gradient_grow (pattern); + if (unlikely (status)) { + status = _cairo_pattern_set_error (&pattern->base, status); + return; + } + } + + stops = pattern->stops; + + for (i = 0; i < pattern->n_stops; i++) + { + if (offset < stops[i].offset) + { + memmove (&stops[i + 1], &stops[i], + sizeof (cairo_gradient_stop_t) * (pattern->n_stops - i)); + + break; + } + } + + stops[i].offset = offset; + + stops[i].color.red = red; + stops[i].color.green = green; + stops[i].color.blue = blue; + stops[i].color.alpha = alpha; + + stops[i].color.red_short = _cairo_color_double_to_short (red); + stops[i].color.green_short = _cairo_color_double_to_short (green); + stops[i].color.blue_short = _cairo_color_double_to_short (blue); + stops[i].color.alpha_short = _cairo_color_double_to_short (alpha); + + pattern->n_stops++; +} + +/** + * cairo_pattern_add_color_stop_rgb: + * @pattern: a #cairo_pattern_t + * @offset: an offset in the range [0.0 .. 1.0] + * @red: red component of color + * @green: green component of color + * @blue: blue component of color + * + * Adds an opaque color stop to a gradient pattern. The offset + * specifies the location along the gradient's control vector. For + * example, a linear gradient's control vector is from (x0,y0) to + * (x1,y1) while a radial gradient's control vector is from any point + * on the start circle to the corresponding point on the end circle. + * + * The color is specified in the same way as in cairo_set_source_rgb(). + * + * If two (or more) stops are specified with identical offset values, + * they will be sorted according to the order in which the stops are + * added, (stops added earlier will compare less than stops added + * later). This can be useful for reliably making sharp color + * transitions instead of the typical blend. + * + * + * Note: If the pattern is not a gradient pattern, (eg. a linear or + * radial pattern), then the pattern will be put into an error status + * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. + **/ +void +cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, + double offset, + double red, + double green, + double blue) +{ + if (pattern->status) + return; + + if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && + pattern->type != CAIRO_PATTERN_TYPE_RADIAL) + { + _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + return; + } + + offset = _cairo_restrict_value (offset, 0.0, 1.0); + red = _cairo_restrict_value (red, 0.0, 1.0); + green = _cairo_restrict_value (green, 0.0, 1.0); + blue = _cairo_restrict_value (blue, 0.0, 1.0); + + _cairo_pattern_add_color_stop ((cairo_gradient_pattern_t *) pattern, + offset, red, green, blue, 1.0); +} + +/** + * cairo_pattern_add_color_stop_rgba: + * @pattern: a #cairo_pattern_t + * @offset: an offset in the range [0.0 .. 1.0] + * @red: red component of color + * @green: green component of color + * @blue: blue component of color + * @alpha: alpha component of color + * + * Adds a translucent color stop to a gradient pattern. The offset + * specifies the location along the gradient's control vector. For + * example, a linear gradient's control vector is from (x0,y0) to + * (x1,y1) while a radial gradient's control vector is from any point + * on the start circle to the corresponding point on the end circle. + * + * The color is specified in the same way as in cairo_set_source_rgba(). + * + * If two (or more) stops are specified with identical offset values, + * they will be sorted according to the order in which the stops are + * added, (stops added earlier will compare less than stops added + * later). This can be useful for reliably making sharp color + * transitions instead of the typical blend. + * + * Note: If the pattern is not a gradient pattern, (eg. a linear or + * radial pattern), then the pattern will be put into an error status + * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. + */ void cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, double offset, @@ -1282,10 +2077,8 @@ _cairo_linear_pattern_classify (cairo_linear_pattern_t *pattern, * pattern. We actually only need 3/4 corners, so we skip the * fourth. */ - point0.x = _cairo_fixed_to_double (pattern->p1.x); - point0.y = _cairo_fixed_to_double (pattern->p1.y); - point1.x = _cairo_fixed_to_double (pattern->p2.x); - point1.y = _cairo_fixed_to_double (pattern->p2.y); + point0 = pattern->pd1; + point1 = pattern->pd2; _cairo_matrix_get_affine (&pattern->base.base.matrix, &a, &b, &c, &d, &tx, &ty); @@ -1333,10 +2126,11 @@ _cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pat cairo_image_surface_t *image; pixman_image_t *pixman_image; pixman_transform_t pixman_transform; + cairo_circle_double_t extremes[2]; + pixman_point_fixed_t p1, p2; cairo_status_t status; cairo_bool_t repeat = FALSE; - cairo_bool_t opaque = TRUE; - + int ix, iy; pixman_gradient_stop_t pixman_stops_static[2]; pixman_gradient_stop_t *pixman_stops = pixman_stops_static; unsigned int i; @@ -1359,75 +2153,26 @@ _cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pat pixman_stops[i].color.green = pattern->stops[i].color.green_short; pixman_stops[i].color.blue = pattern->stops[i].color.blue_short; pixman_stops[i].color.alpha = pattern->stops[i].color.alpha_short; - if (! CAIRO_ALPHA_SHORT_IS_OPAQUE (pixman_stops[i].color.alpha)) - opaque = FALSE; } - if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) - { - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) pattern; - pixman_point_fixed_t p1, p2; - cairo_fixed_t xdim, ydim; - - xdim = linear->p2.x - linear->p1.x; - ydim = linear->p2.y - linear->p1.y; - - /* - * Transform the matrix to avoid overflow when converting between - * cairo_fixed_t and pixman_fixed_t (without incurring performance - * loss when the transformation is unnecessary). - * - * XXX: Consider converting out-of-range co-ordinates and transforms. - * Having a function to compute the required transformation to - * "normalize" a given bounding box would be generally useful - - * cf linear patterns, gradient patterns, surface patterns... - */ -#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ - if (_cairo_fixed_integer_ceil (xdim) > PIXMAN_MAX_INT || - _cairo_fixed_integer_ceil (ydim) > PIXMAN_MAX_INT) - { - double sf; - - if (xdim > ydim) - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (xdim); - else - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (ydim); - - p1.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.x) * sf); - p1.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.y) * sf); - p2.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.x) * sf); - p2.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.y) * sf); + _cairo_gradient_pattern_fit_to_range (pattern, PIXMAN_MAX_INT >> 1, &matrix, extremes); - cairo_matrix_scale (&matrix, sf, sf); - } - else - { - p1.x = _cairo_fixed_to_16_16 (linear->p1.x); - p1.y = _cairo_fixed_to_16_16 (linear->p1.y); - p2.x = _cairo_fixed_to_16_16 (linear->p2.x); - p2.y = _cairo_fixed_to_16_16 (linear->p2.y); - } + p1.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + p1.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + p2.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + p2.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); + if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) { pixman_image = pixman_image_create_linear_gradient (&p1, &p2, pixman_stops, pattern->n_stops); - } - else - { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - pixman_point_fixed_t c1, c2; + } else { pixman_fixed_t r1, r2; - c1.x = _cairo_fixed_to_16_16 (radial->c1.x); - c1.y = _cairo_fixed_to_16_16 (radial->c1.y); - r1 = _cairo_fixed_to_16_16 (radial->r1); - - c2.x = _cairo_fixed_to_16_16 (radial->c2.x); - c2.y = _cairo_fixed_to_16_16 (radial->c2.y); - r2 = _cairo_fixed_to_16_16 (radial->r2); + r1 = _cairo_fixed_16_16_from_double (extremes[0].radius); + r2 = _cairo_fixed_16_16_from_double (extremes[1].radius); - pixman_image = pixman_image_create_radial_gradient (&c1, &c2, - r1, r2, + pixman_image = pixman_image_create_radial_gradient (&p1, &p2, r1, r2, pixman_stops, pattern->n_stops); } @@ -1498,12 +2243,21 @@ _cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pat return image->base.status; } - _cairo_matrix_to_pixman_matrix (&matrix, &pixman_transform, - width/2., height/2.); - if (!pixman_image_set_transform (pixman_image, &pixman_transform)) { - cairo_surface_destroy (&image->base); - pixman_image_unref (pixman_image); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + ix = x; + iy = y; + status = _cairo_matrix_to_pixman_matrix_offset (&matrix, + pattern->base.filter, + width/2., height/2., + &pixman_transform, + &ix, &iy); + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) { + if (unlikely (status != CAIRO_STATUS_SUCCESS) || + ! pixman_image_set_transform (pixman_image, &pixman_transform)) + { + cairo_surface_destroy (&image->base); + pixman_image_unref (pixman_image); + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } } switch (pattern->base.extend) { @@ -1525,7 +2279,7 @@ _cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pat pixman_image, NULL, image->pixman_image, - x, y, + ix, iy, 0, 0, 0, 0, width, height); @@ -1552,6 +2306,54 @@ _cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pat return status; } +static cairo_int_status_t +_cairo_pattern_acquire_surface_for_mesh (const cairo_mesh_pattern_t *pattern, + cairo_surface_t *dst, + int x, + int y, + unsigned int width, + unsigned int height, + cairo_surface_t **out, + cairo_surface_attributes_t *attr) +{ + cairo_surface_t *image; + void *data; + cairo_status_t status; + int clone_offset_x, clone_offset_y; + int stride; + + image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); + if (unlikely (image->status)) + return image->status; + + stride = cairo_image_surface_get_stride (image); + data = cairo_image_surface_get_data (image); + + _cairo_mesh_pattern_rasterize (pattern, data, width, height, stride, -x, -y); + + attr->x_offset = -x; + attr->y_offset = -y; + attr->filter = CAIRO_FILTER_NEAREST; + attr->extend = pattern->base.extend; + cairo_matrix_init_identity (&attr->matrix); + attr->has_component_alpha = pattern->base.has_component_alpha; + + if (_cairo_surface_is_image (dst)) { + *out = image; + + return CAIRO_STATUS_SUCCESS; + } + + status = _cairo_surface_clone_similar (dst, image, + 0, 0, width, height, + &clone_offset_x, + &clone_offset_y, out); + + cairo_surface_destroy (image); + + return status; +} + /* We maintain a small cache here, because we don't want to constantly * recreate surfaces for simple solid colors. */ #define MAX_SURFACE_CACHE_SIZE 16 @@ -1726,50 +2528,590 @@ _cairo_pattern_reset_solid_surface_cache (void) CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_surface_cache_lock); } +static cairo_bool_t +_linear_pattern_is_degenerate (const cairo_linear_pattern_t *linear) +{ + return fabs (linear->pd1.x - linear->pd2.x) < DBL_EPSILON && + fabs (linear->pd1.y - linear->pd2.y) < DBL_EPSILON; +} + +static cairo_bool_t +_radial_pattern_is_degenerate (const cairo_radial_pattern_t *radial) +{ + /* A radial pattern is considered degenerate if it can be + * represented as a solid or clear pattern. This corresponds to + * one of the two cases: + * + * 1) The radii are both very small: + * |dr| < DBL_EPSILON && min (r0, r1) < DBL_EPSILON + * + * 2) The two circles have about the same radius and are very + * close to each other (approximately a cylinder gradient that + * doesn't move with the parameter): + * |dr| < DBL_EPSILON && max (|dx|, |dy|) < 2 * DBL_EPSILON + * + * These checks are consistent with the assumptions used in + * _cairo_radial_pattern_box_to_parameter (). + */ + + return fabs (radial->cd1.radius - radial->cd2.radius) < DBL_EPSILON && + (MIN (radial->cd1.radius, radial->cd2.radius) < DBL_EPSILON || + MAX (fabs (radial->cd1.center.x - radial->cd2.center.x), + fabs (radial->cd1.center.y - radial->cd2.center.y)) < 2 * DBL_EPSILON); +} + static void -_extents_to_linear_parameter (const cairo_linear_pattern_t *linear, - const cairo_rectangle_int_t *extents, - double t[2]) +_cairo_linear_pattern_box_to_parameter (const cairo_linear_pattern_t *linear, + double x0, double y0, + double x1, double y1, + double range[2]) { double t0, tdx, tdy; double p1x, p1y, pdx, pdy, invsqnorm; - p1x = _cairo_fixed_to_double (linear->p1.x); - p1y = _cairo_fixed_to_double (linear->p1.y); - pdx = _cairo_fixed_to_double (linear->p2.x) - p1x; - pdy = _cairo_fixed_to_double (linear->p2.y) - p1y; + assert (! _linear_pattern_is_degenerate (linear)); + + /* + * Linear gradients are othrogonal to the line passing through + * their extremes. Because of convexity, the parameter range can + * be computed as the convex hull (one the real line) of the + * parameter values of the 4 corners of the box. + * + * The parameter value t for a point (x,y) can be computed as: + * + * t = (p2 - p1) . (x,y) / |p2 - p1|^2 + * + * t0 is the t value for the top left corner + * tdx is the difference between left and right corners + * tdy is the difference between top and bottom corners + */ + + p1x = linear->pd1.x; + p1y = linear->pd1.y; + pdx = linear->pd2.x - p1x; + pdy = linear->pd2.y - p1y; invsqnorm = 1.0 / (pdx * pdx + pdy * pdy); pdx *= invsqnorm; pdy *= invsqnorm; - t0 = (extents->x - p1x) * pdx + (extents->y - p1y) * pdy; - tdx = extents->width * pdx; - tdy = extents->height * pdy; + t0 = (x0 - p1x) * pdx + (y0 - p1y) * pdy; + tdx = (x1 - x0) * pdx; + tdy = (y1 - y0) * pdy; + + /* + * Because of the linearity of the t value, tdx can simply be + * added the t0 to move along the top edge. After this, range[0] + * and range[1] represent the parameter range for the top edge, so + * extending it to include the whole box simply requires adding + * tdy to the correct extreme. + */ - t[0] = t[1] = t0; + range[0] = range[1] = t0; if (tdx < 0) - t[0] += tdx; + range[0] += tdx; else - t[1] += tdx; + range[1] += tdx; if (tdy < 0) - t[0] += tdy; + range[0] += tdy; else - t[1] += tdy; + range[1] += tdy; } static cairo_bool_t -_linear_pattern_is_degenerate (const cairo_linear_pattern_t *linear) +_extend_range (double range[2], double value, cairo_bool_t valid) { - return linear->p1.x == linear->p2.x && linear->p1.y == linear->p2.y; + if (!valid) + range[0] = range[1] = value; + else if (value < range[0]) + range[0] = value; + else if (value > range[1]) + range[1] = value; + + return TRUE; } -static cairo_bool_t -_radial_pattern_is_degenerate (const cairo_radial_pattern_t *radial) +static void +_cairo_radial_pattern_box_to_parameter (const cairo_radial_pattern_t *radial, + double x0, double y0, + double x1, double y1, + double tolerance, + double range[2]) +{ + double cx, cy, cr, dx, dy, dr; + double a, x_focus, y_focus; + double mindr, minx, miny, maxx, maxy; + cairo_bool_t valid; + + assert (! _radial_pattern_is_degenerate (radial)); + assert (x0 < x1); + assert (y0 < y1); + + tolerance = MAX (tolerance, DBL_EPSILON); + + range[0] = range[1] = 0; + valid = FALSE; + + x_focus = y_focus = 0; /* silence gcc */ + + cx = radial->cd1.center.x; + cy = radial->cd1.center.y; + cr = radial->cd1.radius; + dx = radial->cd2.center.x - cx; + dy = radial->cd2.center.y - cy; + dr = radial->cd2.radius - cr; + + /* translate by -(cx, cy) to simplify computations */ + x0 -= cx; + y0 -= cy; + x1 -= cx; + y1 -= cy; + + /* enlarge boundaries slightly to avoid rounding problems in the + * parameter range computation */ + x0 -= DBL_EPSILON; + y0 -= DBL_EPSILON; + x1 += DBL_EPSILON; + y1 += DBL_EPSILON; + + /* enlarge boundaries even more to avoid rounding problems when + * testing if a point belongs to the box */ + minx = x0 - DBL_EPSILON; + miny = y0 - DBL_EPSILON; + maxx = x1 + DBL_EPSILON; + maxy = y1 + DBL_EPSILON; + + /* we dont' allow negative radiuses, so we will be checking that + * t*dr >= mindr to consider t valid */ + mindr = -(cr + DBL_EPSILON); + + /* + * After the previous transformations, the start circle is + * centered in the origin and has radius cr. A 1-unit change in + * the t parameter corresponds to dx,dy,dr changes in the x,y,r of + * the circle (center coordinates, radius). + * + * To compute the minimum range needed to correctly draw the + * pattern, we start with an empty range and extend it to include + * the circles touching the bounding box or within it. + */ + + /* + * Focus, the point where the circle has radius == 0. + * + * r = cr + t * dr = 0 + * t = -cr / dr + * + * If the radius is constant (dr == 0) there is no focus (the + * gradient represents a cylinder instead of a cone). + */ + if (fabs (dr) >= DBL_EPSILON) { + double t_focus; + + t_focus = -cr / dr; + x_focus = t_focus * dx; + y_focus = t_focus * dy; + if (minx <= x_focus && x_focus <= maxx && + miny <= y_focus && y_focus <= maxy) + { + valid = _extend_range (range, t_focus, valid); + } + } + + /* + * Circles externally tangent to box edges. + * + * All circles have center in (dx, dy) * t + * + * If the circle is tangent to the line defined by the edge of the + * box, then at least one of the following holds true: + * + * (dx*t) + (cr + dr*t) == x0 (left edge) + * (dx*t) - (cr + dr*t) == x1 (right edge) + * (dy*t) + (cr + dr*t) == y0 (top edge) + * (dy*t) - (cr + dr*t) == y1 (bottom edge) + * + * The solution is only valid if the tangent point is actually on + * the edge, i.e. if its y coordinate is in [y0,y1] for left/right + * edges and if its x coordinate is in [x0,x1] for top/bottom + * edges. + * + * For the first equation: + * + * (dx + dr) * t = x0 - cr + * t = (x0 - cr) / (dx + dr) + * y = dy * t + * + * in the code this becomes: + * + * t_edge = (num) / (den) + * v = (delta) * t_edge + * + * If the denominator in t is 0, the pattern is tangent to a line + * parallel to the edge under examination. The corner-case where + * the boundary line is the same as the edge is handled by the + * focus point case and/or by the a==0 case. + */ +#define T_EDGE(num,den,delta,lower,upper) \ + if (fabs (den) >= DBL_EPSILON) { \ + double t_edge, v; \ + \ + t_edge = (num) / (den); \ + v = t_edge * (delta); \ + if (t_edge * dr >= mindr && (lower) <= v && v <= (upper)) \ + valid = _extend_range (range, t_edge, valid); \ + } + + /* circles tangent (externally) to left/right/top/bottom edge */ + T_EDGE (x0 - cr, dx + dr, dy, miny, maxy); + T_EDGE (x1 + cr, dx - dr, dy, miny, maxy); + T_EDGE (y0 - cr, dy + dr, dx, minx, maxx); + T_EDGE (y1 + cr, dy - dr, dx, minx, maxx); + +#undef T_EDGE + + /* + * Circles passing through a corner. + * + * A circle passing through the point (x,y) satisfies: + * + * (x-t*dx)^2 + (y-t*dy)^2 == (cr + t*dr)^2 + * + * If we set: + * a = dx^2 + dy^2 - dr^2 + * b = x*dx + y*dy + cr*dr + * c = x^2 + y^2 - cr^2 + * we have: + * a*t^2 - 2*b*t + c == 0 + */ + a = dx * dx + dy * dy - dr * dr; + if (fabs (a) < DBL_EPSILON * DBL_EPSILON) { + double b, maxd2; + + /* Ensure that gradients with both a and dr small are + * considered degenerate. + * The floating point version of the degeneracy test implemented + * in _radial_pattern_is_degenerate() is: + * + * 1) The circles are practically the same size: + * |dr| < DBL_EPSILON + * AND + * 2a) The circles are both very small: + * min (r0, r1) < DBL_EPSILON + * OR + * 2b) The circles are very close to each other: + * max (|dx|, |dy|) < 2 * DBL_EPSILON + * + * Assuming that the gradient is not degenerate, we want to + * show that |a| < DBL_EPSILON^2 implies |dr| >= DBL_EPSILON. + * + * If the gradient is not degenerate yet it has |dr| < + * DBL_EPSILON, (2b) is false, thus: + * + * max (|dx|, |dy|) >= 2*DBL_EPSILON + * which implies: + * 4*DBL_EPSILON^2 <= max (|dx|, |dy|)^2 <= dx^2 + dy^2 + * + * From the definition of a, we get: + * a = dx^2 + dy^2 - dr^2 < DBL_EPSILON^2 + * dx^2 + dy^2 - DBL_EPSILON^2 < dr^2 + * 3*DBL_EPSILON^2 < dr^2 + * + * which is inconsistent with the hypotheses, thus |dr| < + * DBL_EPSILON is false or the gradient is degenerate. + */ + assert (fabs (dr) >= DBL_EPSILON); + + /* + * If a == 0, all the circles are tangent to a line in the + * focus point. If this line is within the box extents, we + * should add the circle with infinite radius, but this would + * make the range unbounded, so we add the smallest circle whose + * distance to the desired (degenerate) circle within the + * bounding box does not exceed tolerance. + * + * The equation of the line is b==0, i.e.: + * x*dx + y*dy + cr*dr == 0 + * + * We compute the intersection of the line with the box and + * keep the intersection with maximum square distance (maxd2) + * from the focus point. + * + * In the code the intersection is represented in another + * coordinate system, whose origin is the focus point and + * which has a u,v axes, which are respectively orthogonal and + * parallel to the edge being intersected. + * + * The intersection is valid only if it belongs to the box, + * otherwise it is ignored. + * + * For example: + * + * y = y0 + * x*dx + y0*dy + cr*dr == 0 + * x = -(y0*dy + cr*dr) / dx + * + * which in (u,v) is: + * u = y0 - y_focus + * v = -(y0*dy + cr*dr) / dx - x_focus + * + * In the code: + * u = (edge) - (u_origin) + * v = -((edge) * (delta) + cr*dr) / (den) - v_focus + */ +#define T_EDGE(edge,delta,den,lower,upper,u_origin,v_origin) \ + if (fabs (den) >= DBL_EPSILON) { \ + double v; \ + \ + v = -((edge) * (delta) + cr * dr) / (den); \ + if ((lower) <= v && v <= (upper)) { \ + double u, d2; \ + \ + u = (edge) - (u_origin); \ + v -= (v_origin); \ + d2 = u*u + v*v; \ + if (maxd2 < d2) \ + maxd2 = d2; \ + } \ + } + + maxd2 = 0; + + /* degenerate circles (lines) passing through each edge */ + T_EDGE (y0, dy, dx, minx, maxx, y_focus, x_focus); + T_EDGE (y1, dy, dx, minx, maxx, y_focus, x_focus); + T_EDGE (x0, dx, dy, miny, maxy, x_focus, y_focus); + T_EDGE (x1, dx, dy, miny, maxy, x_focus, y_focus); + +#undef T_EDGE + + /* + * The limit circle can be transformed rigidly to the y=0 line + * and the circles tangent to it in (0,0) are: + * + * x^2 + (y-r)^2 = r^2 <=> x^2 + y^2 - 2*y*r = 0 + * + * y is the distance from the line, in our case tolerance; + * x is the distance along the line, i.e. sqrt(maxd2), + * so: + * + * r = cr + dr * t = (maxd2 + tolerance^2) / (2*tolerance) + * t = (r - cr) / dr = + * (maxd2 + tolerance^2 - 2*tolerance*cr) / (2*tolerance*dr) + */ + if (maxd2 > 0) { + double t_limit = maxd2 + tolerance*tolerance - 2*tolerance*cr; + t_limit /= 2 * tolerance * dr; + valid = _extend_range (range, t_limit, valid); + } + + /* + * Nondegenerate, nonlimit circles passing through the corners. + * + * a == 0 && a*t^2 - 2*b*t + c == 0 + * + * t = c / (2*b) + * + * The b == 0 case has just been handled, so we only have to + * compute this if b != 0. + */ +#define T_CORNER(x,y) \ + b = (x) * dx + (y) * dy + cr * dr; \ + if (fabs (b) >= DBL_EPSILON) { \ + double t_corner; \ + double x2 = (x) * (x); \ + double y2 = (y) * (y); \ + double cr2 = (cr) * (cr); \ + double c = x2 + y2 - cr2; \ + \ + t_corner = 0.5 * c / b; \ + if (t_corner * dr >= mindr) \ + valid = _extend_range (range, t_corner, valid); \ + } + + /* circles touching each corner */ + T_CORNER (x0, y0); + T_CORNER (x0, y1); + T_CORNER (x1, y0); + T_CORNER (x1, y1); + +#undef T_CORNER + } else { + double inva, b, c, d; + + inva = 1 / a; + + /* + * Nondegenerate, nonlimit circles passing through the corners. + * + * a != 0 && a*t^2 - 2*b*t + c == 0 + * + * t = (b +- sqrt (b*b - a*c)) / a + * + * If the argument of sqrt() is negative, then no circle + * passes through the corner. + */ +#define T_CORNER(x,y) \ + b = (x) * dx + (y) * dy + cr * dr; \ + c = (x) * (x) + (y) * (y) - cr * cr; \ + d = b * b - a * c; \ + if (d >= 0) { \ + double t_corner; \ + \ + d = sqrt (d); \ + t_corner = (b + d) * inva; \ + if (t_corner * dr >= mindr) \ + valid = _extend_range (range, t_corner, valid); \ + t_corner = (b - d) * inva; \ + if (t_corner * dr >= mindr) \ + valid = _extend_range (range, t_corner, valid); \ + } + + /* circles touching each corner */ + T_CORNER (x0, y0); + T_CORNER (x0, y1); + T_CORNER (x1, y0); + T_CORNER (x1, y1); + +#undef T_CORNER + } +} + +/** + * _cairo_gradient_pattern_box_to_parameter + * + * Compute a interpolation range sufficient to draw (within the given + * tolerance) the gradient in the given box getting the same result as + * using the (-inf, +inf) range. + * + * Assumes that the pattern is not degenerate. This can be guaranteed + * by simplifying it to a solid clear if _cairo_pattern_is_clear or to + * a solid color if _cairo_gradient_pattern_is_solid. + * + * The range isn't guaranteed to be minimal, but it tries to. + **/ +void +_cairo_gradient_pattern_box_to_parameter (const cairo_gradient_pattern_t *gradient, + double x0, double y0, + double x1, double y1, + double tolerance, + double out_range[2]) +{ + assert (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR || + gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL); + + if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { + _cairo_linear_pattern_box_to_parameter ((cairo_linear_pattern_t *) gradient, + x0, y0, x1, y1, out_range); + } else { + _cairo_radial_pattern_box_to_parameter ((cairo_radial_pattern_t *) gradient, + x0, y0, x1, y1, tolerance, out_range); + } +} + +/** + * _cairo_gradient_pattern_interpolate + * + * Interpolate between the start and end objects of linear or radial + * gradients. The interpolated object is stored in out_circle, with + * the radius being zero in the linear gradient case. + **/ +void +_cairo_gradient_pattern_interpolate (const cairo_gradient_pattern_t *gradient, + double t, + cairo_circle_double_t *out_circle) +{ + assert (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR || + gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL); + +#define lerp(a,b) (a)*(1-t) + (b)*t + + if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { + cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) gradient; + out_circle->center.x = lerp (linear->pd1.x, linear->pd2.x); + out_circle->center.y = lerp (linear->pd1.y, linear->pd2.y); + out_circle->radius = 0; + } else { + cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) gradient; + out_circle->center.x = lerp (radial->cd1.center.x, radial->cd2.center.x); + out_circle->center.y = lerp (radial->cd1.center.y, radial->cd2.center.y); + out_circle->radius = lerp (radial->cd1.radius , radial->cd2.radius); + } + +#undef lerp +} + + +/** + * _cairo_gradient_pattern_fit_to_range + * + * Scale the extremes of a gradient to guarantee that the coordinates + * and their deltas are within the range (-max_value, max_value). The + * new extremes are stored in out_circle. + * + * The pattern matrix is scaled to guarantee that the aspect of the + * gradient is the same and the result is stored in out_matrix. + * + **/ +void +_cairo_gradient_pattern_fit_to_range (const cairo_gradient_pattern_t *gradient, + double max_value, + cairo_matrix_t *out_matrix, + cairo_circle_double_t out_circle[2]) { - return radial->r1 == radial->r2 && - (radial->r1 == 0 /* && radial->r2 == 0 */ || - (radial->c1.x == radial->c2.x && radial->c1.y == radial->c2.y)); + double dim; + + assert (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR || + gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL); + + if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { + cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) gradient; + + out_circle[0].center = linear->pd1; + out_circle[0].radius = 0; + out_circle[1].center = linear->pd2; + out_circle[1].radius = 0; + + dim = fabs (linear->pd1.x); + dim = MAX (dim, fabs (linear->pd1.y)); + dim = MAX (dim, fabs (linear->pd2.x)); + dim = MAX (dim, fabs (linear->pd2.y)); + dim = MAX (dim, fabs (linear->pd1.x - linear->pd2.x)); + dim = MAX (dim, fabs (linear->pd1.y - linear->pd2.y)); + } else { + cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) gradient; + + out_circle[0] = radial->cd1; + out_circle[1] = radial->cd2; + + dim = fabs (radial->cd1.center.x); + dim = MAX (dim, fabs (radial->cd1.center.y)); + dim = MAX (dim, fabs (radial->cd1.radius)); + dim = MAX (dim, fabs (radial->cd2.center.x)); + dim = MAX (dim, fabs (radial->cd2.center.y)); + dim = MAX (dim, fabs (radial->cd2.radius)); + dim = MAX (dim, fabs (radial->cd1.center.x - radial->cd2.center.x)); + dim = MAX (dim, fabs (radial->cd1.center.y - radial->cd2.center.y)); + dim = MAX (dim, fabs (radial->cd1.radius - radial->cd2.radius)); + } + + if (unlikely (dim > max_value)) { + cairo_matrix_t scale; + + dim = max_value / dim; + + out_circle[0].center.x *= dim; + out_circle[0].center.y *= dim; + out_circle[0].radius *= dim; + out_circle[1].center.x *= dim; + out_circle[1].center.y *= dim; + out_circle[1].radius *= dim; + + cairo_matrix_init_scale (&scale, dim, dim); + cairo_matrix_multiply (out_matrix, &gradient->base.matrix, &scale); + } else { + *out_matrix = gradient->base.matrix; + } } static cairo_bool_t @@ -1786,27 +3128,40 @@ _gradient_is_clear (const cairo_gradient_pattern_t *gradient, gradient->stops[0].offset == gradient->stops[gradient->n_stops - 1].offset)) return TRUE; + if (gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL) { + /* degenerate radial gradients are clear */ + if (_radial_pattern_is_degenerate ((cairo_radial_pattern_t *) gradient)) + return TRUE; + } else if (gradient->base.extend == CAIRO_EXTEND_NONE) { + /* EXTEND_NONE degenerate linear gradients are clear */ + if (_linear_pattern_is_degenerate ((cairo_linear_pattern_t *) gradient)) + return TRUE; + } + /* Check if the extents intersect the drawn part of the pattern. */ - if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { - if (gradient->base.extend == CAIRO_EXTEND_NONE) { - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) gradient; - /* EXTEND_NONE degenerate linear gradients are clear */ - if (_linear_pattern_is_degenerate (linear)) + if (extents != NULL && + (gradient->base.extend == CAIRO_EXTEND_NONE || + gradient->base.type == CAIRO_PATTERN_TYPE_RADIAL)) + { + double t[2]; + + _cairo_gradient_pattern_box_to_parameter (gradient, + extents->x, + extents->y, + extents->x + extents->width, + extents->y + extents->height, + DBL_EPSILON, + t); + + if (gradient->base.extend == CAIRO_EXTEND_NONE && + (t[0] >= gradient->stops[gradient->n_stops - 1].offset || + t[1] <= gradient->stops[0].offset)) + { return TRUE; - - if (extents != NULL) { - double t[2]; - _extents_to_linear_parameter (linear, extents, t); - if ((t[0] <= 0.0 && t[1] <= 0.0) || (t[0] >= 1.0 && t[1] >= 1.0)) - return TRUE; - } } - } else { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) gradient; - /* degenerate radial gradients are clear */ - if (_radial_pattern_is_degenerate (radial)) + + if (t[0] == t[1]) return TRUE; - /* TODO: check actual intersection */ } for (i = 0; i < gradient->n_stops; i++) @@ -1926,6 +3281,141 @@ _gradient_color_average (const cairo_gradient_pattern_t *gradient, _cairo_color_init_rgba (color, r * .5, g * .5, b * .5, a * .5); } +/** + * _cairo_pattern_alpha_range + * + * Convenience function to determine the minimum and maximum alpha in + * the drawn part of a pattern (i.e. ignoring clear parts caused by + * extend modes and/or pattern shape). + * + * If not NULL, out_min and out_max will be set respectively to the + * minimum and maximum alpha value of the pattern. + **/ +void +_cairo_pattern_alpha_range (const cairo_pattern_t *pattern, + double *out_min, + double *out_max) +{ + double alpha_min, alpha_max; + + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SOLID: { + const cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) pattern; + alpha_min = alpha_max = solid->color.alpha; + break; + } + + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: { + const cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t *) pattern; + unsigned int i; + + assert (gradient->n_stops >= 1); + + alpha_min = alpha_max = gradient->stops[0].color.alpha; + for (i = 1; i < gradient->n_stops; i++) { + if (alpha_min > gradient->stops[i].color.alpha) + alpha_min = gradient->stops[i].color.alpha; + else if (alpha_max < gradient->stops[i].color.alpha) + alpha_max = gradient->stops[i].color.alpha; + } + + break; + } + + case CAIRO_PATTERN_TYPE_MESH: { + const cairo_mesh_pattern_t *mesh = (const cairo_mesh_pattern_t *) pattern; + const cairo_mesh_patch_t *patch = _cairo_array_index_const (&mesh->patches, 0); + unsigned int i, j, n = _cairo_array_num_elements (&mesh->patches); + + assert (n >= 1); + + alpha_min = alpha_max = patch[0].colors[0].alpha; + for (i = 0; i < n; i++) { + for (j = 0; j < 4; j++) { + if (patch[i].colors[j].alpha < alpha_min) + alpha_min = patch[i].colors[j].alpha; + else if (patch[i].colors[j].alpha > alpha_max) + alpha_max = patch[i].colors[j].alpha; + } + } + + break; + } + + default: + ASSERT_NOT_REACHED; + /* fall through */ + + case CAIRO_PATTERN_TYPE_SURFACE: + alpha_min = 0; + alpha_max = 1; + break; + } + + if (out_min) + *out_min = alpha_min; + if (out_max) + *out_max = alpha_max; +} + +/** + * _cairo_mesh_pattern_coord_box + * + * Convenience function to determine the range of the coordinates of + * the points used to define the patches of the mesh. + * + * This is guaranteed to contain the pattern extents, but might not be + * tight, just like a Bezier curve is always inside the convex hull of + * the control points. + * + * This function cannot be used while the mesh is being constructed. + * + * The function returns TRUE and sets the output parametes to define + * the coodrinate range if the mesh pattern contains at least one + * patch, otherwise it returns FALSE. + **/ +cairo_bool_t +_cairo_mesh_pattern_coord_box (const cairo_mesh_pattern_t *mesh, + double *out_xmin, + double *out_ymin, + double *out_xmax, + double *out_ymax) +{ + const cairo_mesh_patch_t *patch; + unsigned int num_patches, i, j, k; + double x0, y0, x1, y1; + + assert (mesh->current_patch == NULL); + + num_patches = _cairo_array_num_elements (&mesh->patches); + + if (num_patches == 0) + return FALSE; + + patch = _cairo_array_index_const (&mesh->patches, 0); + x0 = x1 = patch->points[0][0].x; + y0 = y1 = patch->points[0][0].y; + + for (i = 0; i < num_patches; i++) { + for (j = 0; j < 4; j++) { + for (k = 0; k < 4; k++) { + x0 = MIN (x0, patch[i].points[j][k].x); + y0 = MIN (y0, patch[i].points[j][k].y); + x1 = MAX (x1, patch[i].points[j][k].x); + y1 = MAX (y1, patch[i].points[j][k].y); + } + } + } + + *out_xmin = x0; + *out_ymin = y0; + *out_xmax = x1; + *out_ymax = y1; + + return TRUE; +} + /** * _cairo_gradient_pattern_is_solid * @@ -1966,7 +3456,13 @@ _cairo_gradient_pattern_is_solid (const cairo_gradient_pattern_t *gradient, if (extents == NULL) return FALSE; - _extents_to_linear_parameter (linear, extents, t); + _cairo_linear_pattern_box_to_parameter (linear, + extents->x, + extents->y, + extents->x + extents->width, + extents->y + extents->height, + t); + if (t[0] < 0.0 || t[1] > 1.0) return FALSE; } @@ -1987,6 +3483,22 @@ _cairo_gradient_pattern_is_solid (const cairo_gradient_pattern_t *gradient, return TRUE; } +static cairo_bool_t +_mesh_is_clear (const cairo_mesh_pattern_t *mesh) +{ + double x1, y1, x2, y2; + cairo_bool_t is_valid; + + is_valid = _cairo_mesh_pattern_coord_box (mesh, &x1, &y1, &x2, &y2); + if (!is_valid) + return TRUE; + + if (x2 - x1 < DBL_EPSILON || y2 - y1 < DBL_EPSILON) + return TRUE; + + return FALSE; +} + /** * _cairo_pattern_is_opaque_solid * @@ -2078,7 +3590,13 @@ _gradient_is_opaque (const cairo_gradient_pattern_t *gradient, if (extents == NULL) return FALSE; - _extents_to_linear_parameter (linear, extents, t); + _cairo_linear_pattern_box_to_parameter (linear, + extents->x, + extents->y, + extents->x + extents->width, + extents->y + extents->height, + t); + if (t[0] < 0.0 || t[1] > 1.0) return FALSE; } @@ -2119,6 +3637,8 @@ _cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern, case CAIRO_PATTERN_TYPE_LINEAR: case CAIRO_PATTERN_TYPE_RADIAL: return _gradient_is_opaque (&pattern->gradient.base, extents); + case CAIRO_PATTERN_TYPE_MESH: + return FALSE; } ASSERT_NOT_REACHED; @@ -2142,6 +3662,8 @@ _cairo_pattern_is_clear (const cairo_pattern_t *abstract_pattern) case CAIRO_PATTERN_TYPE_LINEAR: case CAIRO_PATTERN_TYPE_RADIAL: return _gradient_is_clear (&pattern->gradient.base, NULL); + case CAIRO_PATTERN_TYPE_MESH: + return _mesh_is_clear (&pattern->mesh); } ASSERT_NOT_REACHED; @@ -2543,6 +4065,12 @@ _cairo_pattern_acquire_surface (const cairo_pattern_t *pattern, surface_out, attributes); + case CAIRO_PATTERN_TYPE_MESH: + return _cairo_pattern_acquire_surface_for_mesh ((cairo_mesh_pattern_t *) pattern, + dst, x, y, width, height, + surface_out, + attributes); + default: ASSERT_NOT_REACHED; return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2695,40 +4223,32 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, (const cairo_radial_pattern_t *) pattern; double cx1, cy1; double cx2, cy2; - double r, D; + double r1, r2; - if (radial->r1 == 0 && radial->r2 == 0) + if (_radial_pattern_is_degenerate (radial)) { + /* cairo-gstate should have optimised degenerate + * patterns to solid clear patterns, so we can ignore + * them here. */ goto EMPTY; + } - cx1 = _cairo_fixed_to_double (radial->c1.x); - cy1 = _cairo_fixed_to_double (radial->c1.y); - r = _cairo_fixed_to_double (radial->r1); - x1 = cx1 - r; x2 = cx1 + r; - y1 = cy1 - r; y2 = cy1 + r; - - cx2 = _cairo_fixed_to_double (radial->c2.x); - cy2 = _cairo_fixed_to_double (radial->c2.y); - r = fabs (_cairo_fixed_to_double (radial->r2)); - + /* TODO: in some cases (focus outside/on the circle) it is + * half-bounded. */ if (pattern->extend != CAIRO_EXTEND_NONE) goto UNBOUNDED; - /* We need to be careful, as if the circles are not - * self-contained, then the solution is actually unbounded. - */ - D = (cx1-cx2)*(cx1-cx2) + (cy1-cy2)*(cy1-cy2); - if (D > r*r - 1e-5) - goto UNBOUNDED; + cx1 = radial->cd1.center.x; + cy1 = radial->cd1.center.y; + r1 = radial->cd1.radius; - if (cx2 - r < x1) - x1 = cx2 - r; - if (cx2 + r > x2) - x2 = cx2 + r; + cx2 = radial->cd2.center.x; + cy2 = radial->cd2.center.y; + r2 = radial->cd2.radius; - if (cy2 - r < y1) - y1 = cy2 - r; - if (cy2 + r > y2) - y2 = cy2 + r; + x1 = MIN (cx1 - r1, cx2 - r2); + y1 = MIN (cy1 - r1, cy2 - r2); + x2 = MAX (cx1 + r1, cx2 + r2); + y2 = MAX (cy1 + r1, cy2 + r2); } break; @@ -2740,20 +4260,26 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, if (pattern->extend != CAIRO_EXTEND_NONE) goto UNBOUNDED; - if (linear->p1.x == linear->p2.x && linear->p1.y == linear->p2.y) + if (_linear_pattern_is_degenerate (linear)) { + /* cairo-gstate should have optimised degenerate + * patterns to solid ones, so we can again ignore + * them here. */ goto EMPTY; + } + /* TODO: to get tight extents, use the matrix to transform + * the pattern instead of transforming the extents later. */ if (pattern->matrix.xy != 0. || pattern->matrix.yx != 0.) goto UNBOUNDED; - if (linear->p1.x == linear->p2.x) { + if (linear->pd1.x == linear->pd2.x) { x1 = -HUGE_VAL; x2 = HUGE_VAL; - y1 = _cairo_fixed_to_double (MIN (linear->p1.y, linear->p2.y)); - y2 = _cairo_fixed_to_double (MAX (linear->p1.y, linear->p2.y)); - } else if (linear->p1.y == linear->p2.y) { - x1 = _cairo_fixed_to_double (MIN (linear->p1.x, linear->p2.x)); - x2 = _cairo_fixed_to_double (MAX (linear->p1.x, linear->p2.x)); + y1 = MIN (linear->pd1.y, linear->pd2.y); + y2 = MAX (linear->pd1.y, linear->pd2.y); + } else if (linear->pd1.y == linear->pd2.y) { + x1 = MIN (linear->pd1.x, linear->pd2.x); + x2 = MAX (linear->pd1.x, linear->pd2.x); y1 = -HUGE_VAL; y2 = HUGE_VAL; } else { @@ -2762,6 +4288,29 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, } break; + case CAIRO_PATTERN_TYPE_MESH: + { + const cairo_mesh_pattern_t *mesh = + (const cairo_mesh_pattern_t *) pattern; + double padx, pady; + cairo_bool_t is_valid; + + is_valid = _cairo_mesh_pattern_coord_box (mesh, &x1, &y1, &x2, &y2); + if (!is_valid) + goto EMPTY; + + padx = pady = 1.; + cairo_matrix_transform_distance (&pattern->matrix, &padx, &pady); + padx = fabs (padx); + pady = fabs (pady); + + x1 -= padx; + y1 -= pady; + x2 += padx; + y2 += pady; + } + break; + default: ASSERT_NOT_REACHED; } @@ -2814,10 +4363,8 @@ _cairo_pattern_get_extents (const cairo_pattern_t *pattern, static unsigned long _cairo_solid_pattern_hash (unsigned long hash, - const cairo_pattern_t *pattern) + const cairo_solid_pattern_t *solid) { - const cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) pattern; - hash = _cairo_hash_bytes (hash, &solid->color, sizeof (solid->color)); return hash; @@ -2839,7 +4386,7 @@ _cairo_gradient_color_stops_hash (unsigned long hash, sizeof (double)); hash = _cairo_hash_bytes (hash, &gradient->stops[n].color, - sizeof (cairo_color_t)); + sizeof (cairo_color_stop_t)); } return hash; @@ -2849,8 +4396,8 @@ unsigned long _cairo_linear_pattern_hash (unsigned long hash, const cairo_linear_pattern_t *linear) { - hash = _cairo_hash_bytes (hash, &linear->p1, sizeof (linear->p1)); - hash = _cairo_hash_bytes (hash, &linear->p2, sizeof (linear->p2)); + hash = _cairo_hash_bytes (hash, &linear->pd1, sizeof (linear->pd1)); + hash = _cairo_hash_bytes (hash, &linear->pd2, sizeof (linear->pd2)); return _cairo_gradient_color_stops_hash (hash, &linear->base); } @@ -2859,20 +4406,30 @@ unsigned long _cairo_radial_pattern_hash (unsigned long hash, const cairo_radial_pattern_t *radial) { - hash = _cairo_hash_bytes (hash, &radial->c1, sizeof (radial->c1)); - hash = _cairo_hash_bytes (hash, &radial->r1, sizeof (radial->r1)); - hash = _cairo_hash_bytes (hash, &radial->c2, sizeof (radial->c2)); - hash = _cairo_hash_bytes (hash, &radial->r2, sizeof (radial->r2)); + hash = _cairo_hash_bytes (hash, &radial->cd1.center, sizeof (radial->cd1.center)); + hash = _cairo_hash_bytes (hash, &radial->cd1.radius, sizeof (radial->cd1.radius)); + hash = _cairo_hash_bytes (hash, &radial->cd2.center, sizeof (radial->cd2.center)); + hash = _cairo_hash_bytes (hash, &radial->cd2.radius, sizeof (radial->cd2.radius)); return _cairo_gradient_color_stops_hash (hash, &radial->base); } static unsigned long -_cairo_surface_pattern_hash (unsigned long hash, - const cairo_pattern_t *pattern) +_cairo_mesh_pattern_hash (unsigned long hash, const cairo_mesh_pattern_t *mesh) { - const cairo_surface_pattern_t *surface = (cairo_surface_pattern_t *) pattern; + const cairo_mesh_patch_t *patch = _cairo_array_index_const (&mesh->patches, 0); + unsigned int i, n = _cairo_array_num_elements (&mesh->patches); + + for (i = 0; i < n; i++) + hash = _cairo_hash_bytes (hash, patch + i, sizeof (cairo_mesh_patch_t)); + + return hash; +} +static unsigned long +_cairo_surface_pattern_hash (unsigned long hash, + const cairo_surface_pattern_t *surface) +{ hash ^= surface->surface->unique_id; return hash; @@ -2901,62 +4458,25 @@ _cairo_pattern_hash (const cairo_pattern_t *pattern) switch (pattern->type) { case CAIRO_PATTERN_TYPE_SOLID: - return _cairo_solid_pattern_hash (hash, pattern); + return _cairo_solid_pattern_hash (hash, (cairo_solid_pattern_t *) pattern); case CAIRO_PATTERN_TYPE_LINEAR: return _cairo_linear_pattern_hash (hash, (cairo_linear_pattern_t *) pattern); case CAIRO_PATTERN_TYPE_RADIAL: return _cairo_radial_pattern_hash (hash, (cairo_radial_pattern_t *) pattern); + case CAIRO_PATTERN_TYPE_MESH: + return _cairo_mesh_pattern_hash (hash, (cairo_mesh_pattern_t *) pattern); case CAIRO_PATTERN_TYPE_SURFACE: - return _cairo_surface_pattern_hash (hash, pattern); + return _cairo_surface_pattern_hash (hash, (cairo_surface_pattern_t *) pattern); default: ASSERT_NOT_REACHED; return FALSE; } } -static unsigned long -_cairo_gradient_pattern_color_stops_size (const cairo_pattern_t *pattern) -{ - cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t *) pattern; - - return gradient->n_stops * (sizeof (double) + sizeof (cairo_color_t)); -} - -unsigned long -_cairo_pattern_size (const cairo_pattern_t *pattern) -{ - if (pattern->status) - return 0; - - /* XXX */ - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - return sizeof (cairo_solid_pattern_t); - break; - case CAIRO_PATTERN_TYPE_SURFACE: - return sizeof (cairo_surface_pattern_t); - break; - case CAIRO_PATTERN_TYPE_LINEAR: - return sizeof (cairo_linear_pattern_t) + - _cairo_gradient_pattern_color_stops_size (pattern); - break; - case CAIRO_PATTERN_TYPE_RADIAL: - return sizeof (cairo_radial_pattern_t) + - _cairo_gradient_pattern_color_stops_size (pattern); - default: - ASSERT_NOT_REACHED; - return 0; - } -} - - static cairo_bool_t -_cairo_solid_pattern_equal (const cairo_pattern_t *A, - const cairo_pattern_t *B) +_cairo_solid_pattern_equal (const cairo_solid_pattern_t *a, + const cairo_solid_pattern_t *b) { - const cairo_solid_pattern_t *a = (cairo_solid_pattern_t *) A; - const cairo_solid_pattern_t *b = (cairo_solid_pattern_t *) B; - return _cairo_color_equal (&a->color, &b->color); } @@ -2983,16 +4503,16 @@ cairo_bool_t _cairo_linear_pattern_equal (const cairo_linear_pattern_t *a, const cairo_linear_pattern_t *b) { - if (a->p1.x != b->p1.x) + if (a->pd1.x != b->pd1.x) return FALSE; - if (a->p1.y != b->p1.y) + if (a->pd1.y != b->pd1.y) return FALSE; - if (a->p2.x != b->p2.x) + if (a->pd2.x != b->pd2.x) return FALSE; - if (a->p2.y != b->p2.y) + if (a->pd2.y != b->pd2.y) return FALSE; return _cairo_gradient_color_stops_equal (&a->base, &b->base); @@ -3002,34 +4522,54 @@ cairo_bool_t _cairo_radial_pattern_equal (const cairo_radial_pattern_t *a, const cairo_radial_pattern_t *b) { - if (a->c1.x != b->c1.x) + if (a->cd1.center.x != b->cd1.center.x) return FALSE; - if (a->c1.y != b->c1.y) + if (a->cd1.center.y != b->cd1.center.y) return FALSE; - if (a->r1 != b->r1) + if (a->cd1.radius != b->cd1.radius) return FALSE; - if (a->c2.x != b->c2.x) + if (a->cd2.center.x != b->cd2.center.x) return FALSE; - if (a->c2.y != b->c2.y) + if (a->cd2.center.y != b->cd2.center.y) return FALSE; - if (a->r2 != b->r2) + if (a->cd2.radius != b->cd2.radius) return FALSE; return _cairo_gradient_color_stops_equal (&a->base, &b->base); } static cairo_bool_t -_cairo_surface_pattern_equal (const cairo_pattern_t *A, - const cairo_pattern_t *B) +_cairo_mesh_pattern_equal (const cairo_mesh_pattern_t *a, + const cairo_mesh_pattern_t *b) { - const cairo_surface_pattern_t *a = (cairo_surface_pattern_t *) A; - const cairo_surface_pattern_t *b = (cairo_surface_pattern_t *) B; + const cairo_mesh_patch_t *patch_a, *patch_b; + unsigned int i, num_patches_a, num_patches_b; + + num_patches_a = _cairo_array_num_elements (&a->patches); + num_patches_b = _cairo_array_num_elements (&b->patches); + + if (num_patches_a != num_patches_b) + return FALSE; + + for (i = 0; i < num_patches_a; i++) { + patch_a = _cairo_array_index_const (&a->patches, i); + patch_b = _cairo_array_index_const (&a->patches, i); + if (memcmp (patch_a, patch_b, sizeof(cairo_mesh_patch_t)) != 0) + return FALSE; + } + return TRUE; +} + +static cairo_bool_t +_cairo_surface_pattern_equal (const cairo_surface_pattern_t *a, + const cairo_surface_pattern_t *b) +{ return a->surface->unique_id == b->surface->unique_id; } @@ -3061,15 +4601,20 @@ _cairo_pattern_equal (const cairo_pattern_t *a, const cairo_pattern_t *b) switch (a->type) { case CAIRO_PATTERN_TYPE_SOLID: - return _cairo_solid_pattern_equal (a, b); + return _cairo_solid_pattern_equal ((cairo_solid_pattern_t *) a, + (cairo_solid_pattern_t *) b); case CAIRO_PATTERN_TYPE_LINEAR: return _cairo_linear_pattern_equal ((cairo_linear_pattern_t *) a, (cairo_linear_pattern_t *) b); case CAIRO_PATTERN_TYPE_RADIAL: return _cairo_radial_pattern_equal ((cairo_radial_pattern_t *) a, (cairo_radial_pattern_t *) b); + case CAIRO_PATTERN_TYPE_MESH: + return _cairo_mesh_pattern_equal ((cairo_mesh_pattern_t *) a, + (cairo_mesh_pattern_t *) b); case CAIRO_PATTERN_TYPE_SURFACE: - return _cairo_surface_pattern_equal (a, b); + return _cairo_surface_pattern_equal ((cairo_surface_pattern_t *) a, + (cairo_surface_pattern_t *) b); default: ASSERT_NOT_REACHED; return FALSE; @@ -3269,13 +4814,13 @@ cairo_pattern_get_linear_points (cairo_pattern_t *pattern, return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); if (x0) - *x0 = _cairo_fixed_to_double (linear->p1.x); + *x0 = linear->pd1.x; if (y0) - *y0 = _cairo_fixed_to_double (linear->p1.y); + *y0 = linear->pd1.y; if (x1) - *x1 = _cairo_fixed_to_double (linear->p2.x); + *x1 = linear->pd2.x; if (y1) - *y1 = _cairo_fixed_to_double (linear->p2.y); + *y1 = linear->pd2.y; return CAIRO_STATUS_SUCCESS; } @@ -3313,17 +4858,273 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); if (x0) - *x0 = _cairo_fixed_to_double (radial->c1.x); + *x0 = radial->cd1.center.x; if (y0) - *y0 = _cairo_fixed_to_double (radial->c1.y); + *y0 = radial->cd1.center.y; if (r0) - *r0 = _cairo_fixed_to_double (radial->r1); + *r0 = radial->cd1.radius; if (x1) - *x1 = _cairo_fixed_to_double (radial->c2.x); + *x1 = radial->cd2.center.x; if (y1) - *y1 = _cairo_fixed_to_double (radial->c2.y); + *y1 = radial->cd2.center.y; if (r1) - *r1 = _cairo_fixed_to_double (radial->r2); + *r1 = radial->cd2.radius; + + return CAIRO_STATUS_SUCCESS; +} + +/** + * cairo_pattern_mesh_get_patch_count + * @pattern: a #cairo_pattern_t + * @count: return value for the number patches, or %NULL + * + * Gets the number of patches specified in the given mesh pattern. + * + * The number only includes patches which have been finished by + * calling cairo_pattern_mesh_end_patch(). For example it will be 0 + * during the definition of the first patch. + * + * Return value: %CAIRO_STATUS_SUCCESS, or + * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if @pattern is not a mesh + * pattern. + * + * Since: 1.12 + */ +cairo_status_t +cairo_pattern_mesh_get_patch_count (cairo_pattern_t *pattern, + unsigned int *count) +{ + cairo_mesh_pattern_t *mesh = (cairo_mesh_pattern_t *) pattern; + + if (unlikely (pattern->status)) + return pattern->status; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) + return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + + if (count) { + *count = _cairo_array_num_elements (&mesh->patches); + if (mesh->current_patch) + *count -= 1; + } + + return CAIRO_STATUS_SUCCESS; +} + +/** + * cairo_pattern_mesh_get_path + * @pattern: a #cairo_pattern_t + * @patch_num: the patch number to return data for + * + * Gets path defining the patch @patch_num for a mesh + * pattern. + * + * @patch_num can range 0 to 1 less than the number returned by + * cairo_pattern_mesh_get_patch_count(). + * + * Return value: the path defining the patch, or a path with status + * %CAIRO_STATUS_INVALID_INDEX if @patch_num or @point_num is not + * valid for @pattern. If @pattern is not a mesh pattern, a path with + * status %CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned. + * + * Since: 1.12 + */ +cairo_path_t * +cairo_pattern_mesh_get_path (cairo_pattern_t *pattern, + unsigned int patch_num) +{ + cairo_mesh_pattern_t *mesh = (cairo_mesh_pattern_t *) pattern; + const cairo_mesh_patch_t *patch; + cairo_path_t *path; + cairo_path_data_t *data; + unsigned int patch_count; + int l, current_point; + + if (unlikely (pattern->status)) + return _cairo_path_create_in_error (pattern->status); + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH)); + + patch_count = _cairo_array_num_elements (&mesh->patches); + if (mesh->current_patch) + patch_count--; + + if (unlikely (patch_num >= patch_count)) + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_INDEX)); + + patch = _cairo_array_index_const (&mesh->patches, patch_num); + + path = malloc (sizeof (cairo_path_t)); + if (path == NULL) + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); + + path->num_data = 18; + path->data = _cairo_malloc_ab (path->num_data, + sizeof (cairo_path_data_t)); + if (path->data == NULL) { + free (path); + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); + } + + data = path->data; + data[0].header.type = CAIRO_PATH_MOVE_TO; + data[0].header.length = 2; + data[1].point.x = patch->points[0][0].x; + data[1].point.y = patch->points[0][0].y; + data += data[0].header.length; + + current_point = 0; + + for (l = 0; l < 4; l++) { + int i, j, k; + + data[0].header.type = CAIRO_PATH_CURVE_TO; + data[0].header.length = 4; + + for (k = 1; k < 4; k++) { + current_point = (current_point + 1) % 12; + i = mesh_path_point_i[current_point]; + j = mesh_path_point_j[current_point]; + data[k].point.x = patch->points[i][j].x; + data[k].point.y = patch->points[i][j].y; + } + + data += data[0].header.length; + } + + path->status = CAIRO_STATUS_SUCCESS; + + return path; +} + +/** + * cairo_pattern_mesh_get_corner_color_rgba + * @pattern: a #cairo_pattern_t + * @patch_num: the patch number to return data for + * @corner_num: the corner number to return data for + * @red: return value for red component of color, or %NULL + * @green: return value for green component of color, or %NULL + * @blue: return value for blue component of color, or %NULL + * @alpha: return value for alpha component of color, or %NULL + * + * Gets the color information in corner @corner_num of patch + * @patch_num for a mesh pattern. + * + * @patch_num can range 0 to 1 less than the number returned by + * cairo_pattern_mesh_get_patch_count(). + * + * Valid values for @corner_num are from 0 to 3 and identify the + * corners as explained in cairo_pattern_create_mesh(). + * + * Return value: %CAIRO_STATUS_SUCCESS, or %CAIRO_STATUS_INVALID_INDEX + * if @patch_num or @corner_num is not valid for @pattern. If + * @pattern is not a mesh pattern, %CAIRO_STATUS_PATTERN_TYPE_MISMATCH + * is returned. + * + * Since: 1.12 + **/ +cairo_status_t +cairo_pattern_mesh_get_corner_color_rgba (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int corner_num, + double *red, double *green, + double *blue, double *alpha) +{ + cairo_mesh_pattern_t *mesh = (cairo_mesh_pattern_t *) pattern; + unsigned int patch_count; + const cairo_mesh_patch_t *patch; + + if (unlikely (pattern->status)) + return pattern->status; + + if (unlikely (pattern->type != CAIRO_PATTERN_TYPE_MESH)) + return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + + if (unlikely (corner_num > 3)) + return _cairo_error (CAIRO_STATUS_INVALID_INDEX); + + patch_count = _cairo_array_num_elements (&mesh->patches); + if (mesh->current_patch) + patch_count--; + + if (unlikely (patch_num >= patch_count)) + return _cairo_error (CAIRO_STATUS_INVALID_INDEX); + + patch = _cairo_array_index_const (&mesh->patches, patch_num); + + if (red) + *red = patch->colors[corner_num].red; + if (green) + *green = patch->colors[corner_num].green; + if (blue) + *blue = patch->colors[corner_num].blue; + if (alpha) + *alpha = patch->colors[corner_num].alpha; + + return CAIRO_STATUS_SUCCESS; +} + +/** + * cairo_pattern_mesh_get_control_point + * @pattern: a #cairo_pattern_t + * @patch_num: the patch number to return data for + * @point_num: the control point number to return data for + * @x: return value for the x coordinate of the control point, or %NULL + * @y: return value for the y coordinate of the control point, or %NULL + * + * Gets the control point @point_num of patch @patch_num for a mesh + * pattern. + * + * @patch_num can range 0 to 1 less than the number returned by + * cairo_pattern_mesh_get_patch_count(). + * + * Valid values for @point_num are from 0 to 3 and identify the + * control points as explained in cairo_pattern_create_mesh(). + * + * Return value: %CAIRO_STATUS_SUCCESS, or %CAIRO_STATUS_INVALID_INDEX + * if @patch_num or @point_num is not valid for @pattern. If @pattern + * is not a mesh pattern, %CAIRO_STATUS_PATTERN_TYPE_MISMATCH is + * returned. + * + * Since: 1.12 + **/ +cairo_status_t +cairo_pattern_mesh_get_control_point (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int point_num, + double *x, double *y) +{ + cairo_mesh_pattern_t *mesh = (cairo_mesh_pattern_t *) pattern; + const cairo_mesh_patch_t *patch; + unsigned int patch_count; + int i, j; + + if (pattern->status) + return pattern->status; + + if (pattern->type != CAIRO_PATTERN_TYPE_MESH) + return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); + + if (point_num > 3) + return _cairo_error (CAIRO_STATUS_INVALID_INDEX); + + patch_count = _cairo_array_num_elements (&mesh->patches); + if (mesh->current_patch) + patch_count--; + + if (unlikely (patch_num >= patch_count)) + return _cairo_error (CAIRO_STATUS_INVALID_INDEX); + + patch = _cairo_array_index_const (&mesh->patches, patch_num); + + i = mesh_control_point_i[point_num]; + j = mesh_control_point_j[point_num]; + + if (x) + *x = patch->points[i][j].x; + if (y) + *y = patch->points[i][j].y; return CAIRO_STATUS_SUCCESS; } diff --git a/src/cairo-pdf-operators-private.h b/src/cairo-pdf-operators-private.h index 67d1cc2..14d60b6 100644 --- a/src/cairo-pdf-operators-private.h +++ b/src/cairo-pdf-operators-private.h @@ -81,6 +81,7 @@ typedef struct _cairo_pdf_operators { double cur_x; /* Current position in PDF text space (Tm in the PDF reference) */ double cur_y; int hex_width; + cairo_bool_t is_latin; int num_glyphs; double glyph_buf_x_pos; cairo_pdf_glyph_t glyphs[PDF_GLYPH_BUFFER_SIZE]; diff --git a/src/cairo-pdf-operators.c b/src/cairo-pdf-operators.c index 8d7a97d..0f2500e 100644 --- a/src/cairo-pdf-operators.c +++ b/src/cairo-pdf-operators.c @@ -163,54 +163,132 @@ _cairo_pdf_operators_reset (cairo_pdf_operators_t *pdf_operators) * exceed max_column. In particular, if a single word is larger than * max_column it will not be broken up. */ + +typedef enum _cairo_word_wrap_state { + WRAP_STATE_DELIMITER, + WRAP_STATE_WORD, + WRAP_STATE_STRING, + WRAP_STATE_HEXSTRING +} cairo_word_wrap_state_t; + + typedef struct _word_wrap_stream { cairo_output_stream_t base; cairo_output_stream_t *output; int max_column; int column; - cairo_bool_t last_write_was_space; - cairo_bool_t in_hexstring; - cairo_bool_t empty_hexstring; + cairo_word_wrap_state_t state; + cairo_bool_t in_escape; + int escape_digits; } word_wrap_stream_t; + + +/* Emit word bytes up to the next delimiter character */ static int -_count_word_up_to (const unsigned char *s, int length) +_word_wrap_stream_count_word_up_to (word_wrap_stream_t *stream, + const unsigned char *data, int length) { - int word = 0; + const unsigned char *s = data; + int count = 0; while (length--) { - if (! (_cairo_isspace (*s) || *s == '<')) { - s++; - word++; - } else { - return word; + if (_cairo_isspace (*s) || *s == '<' || *s == '(') { + stream->state = WRAP_STATE_DELIMITER; + break; } + + count++; + stream->column++; + s++; } - return word; + if (count) + _cairo_output_stream_write (stream->output, data, count); + + return count; } -/* Count up to either the end of the ASCII hexstring or the number +/* Emit hexstring bytes up to either the end of the ASCII hexstring or the number * of columns remaining. */ static int -_count_hexstring_up_to (const unsigned char *s, int length, int columns) +_word_wrap_stream_count_hexstring_up_to (word_wrap_stream_t *stream, + const unsigned char *data, int length) { - int word = 0; + const unsigned char *s = data; + int count = 0; + cairo_bool_t newline = FALSE; while (length--) { - if (*s++ != '>') - word++; - else - return word; + count++; + stream->column++; + if (*s == '>') { + stream->state = WRAP_STATE_DELIMITER; + break; + } + + if (stream->column > stream->max_column) { + newline = TRUE; + break; + } + s++; + } - columns--; - if (columns < 0 && word > 1) - return word; + if (count) + _cairo_output_stream_write (stream->output, data, count); + + if (newline) { + _cairo_output_stream_printf (stream->output, "\n"); + stream->column = 0; } - return word; + return count; +} + +/* Count up to either the end of the string or the number of columns + * remaining. + */ +static int +_word_wrap_stream_count_string_up_to (word_wrap_stream_t *stream, + const unsigned char *data, int length) +{ + const unsigned char *s = data; + int count = 0; + cairo_bool_t newline = FALSE; + + while (length--) { + count++; + stream->column++; + if (!stream->in_escape) { + if (*s == ')') { + stream->state = WRAP_STATE_DELIMITER; + break; + } + if (*s == '\\') { + stream->in_escape = TRUE; + stream->escape_digits = 0; + } else if (stream->column > stream->max_column) { + newline = TRUE; + break; + } + } else { + if (!_cairo_isdigit(*s) || ++stream->escape_digits == 3) + stream->in_escape = FALSE; + } + s++; + } + + if (count) + _cairo_output_stream_write (stream->output, data, count); + + if (newline) { + _cairo_output_stream_printf (stream->output, "\\\n"); + stream->column = 0; + } + + return count; } static cairo_status_t @@ -219,65 +297,43 @@ _word_wrap_stream_write (cairo_output_stream_t *base, unsigned int length) { word_wrap_stream_t *stream = (word_wrap_stream_t *) base; - cairo_bool_t newline; - int word; + int count; while (length) { - if (*data == '<') { - stream->in_hexstring = TRUE; - stream->empty_hexstring = TRUE; - stream->last_write_was_space = FALSE; - data++; - length--; - _cairo_output_stream_printf (stream->output, "<"); - stream->column++; - } else if (*data == '>') { - stream->in_hexstring = FALSE; - stream->last_write_was_space = FALSE; - data++; - length--; - _cairo_output_stream_printf (stream->output, ">"); + switch (stream->state) { + case WRAP_STATE_WORD: + count = _word_wrap_stream_count_word_up_to (stream, data, length); + break; + case WRAP_STATE_HEXSTRING: + count = _word_wrap_stream_count_hexstring_up_to (stream, data, length); + break; + case WRAP_STATE_STRING: + count = _word_wrap_stream_count_string_up_to (stream, data, length); + break; + case WRAP_STATE_DELIMITER: + count = 1; stream->column++; - } else if (_cairo_isspace (*data)) { - newline = (*data == '\n' || *data == '\r'); - if (! newline && stream->column >= stream->max_column) { + if (*data == '\n' || stream->column >= stream->max_column) { _cairo_output_stream_printf (stream->output, "\n"); stream->column = 0; + } else if (*data == '<') { + stream->state = WRAP_STATE_HEXSTRING; + } else if (*data == '(') { + stream->state = WRAP_STATE_STRING; + } else if (!_cairo_isspace (*data)) { + stream->state = WRAP_STATE_WORD; } - _cairo_output_stream_write (stream->output, data, 1); - data++; - length--; - if (newline) { - stream->column = 0; - } - else - stream->column++; - stream->last_write_was_space = TRUE; - } else { - if (stream->in_hexstring) { - word = _count_hexstring_up_to (data, length, - MAX (stream->max_column - stream->column, 0)); - } else { - word = _count_word_up_to (data, length); - } - /* Don't wrap if this word is a continuation of a non hex - * string word from a previous call to write. */ - if (stream->column + word >= stream->max_column) { - if (stream->last_write_was_space || - (stream->in_hexstring && !stream->empty_hexstring)) - { - _cairo_output_stream_printf (stream->output, "\n"); - stream->column = 0; - } - } - _cairo_output_stream_write (stream->output, data, word); - data += word; - length -= word; - stream->column += word; - stream->last_write_was_space = FALSE; - if (stream->in_hexstring) - stream->empty_hexstring = FALSE; + if (*data != '\n') + _cairo_output_stream_write (stream->output, data, 1); + break; + + default: + ASSERT_NOT_REACHED; + count = length; + break; } + data += count; + length -= count; } return _cairo_output_stream_get_status (stream->output); @@ -312,9 +368,9 @@ _word_wrap_stream_create (cairo_output_stream_t *output, int max_column) stream->output = output; stream->max_column = max_column; stream->column = 0; - stream->last_write_was_space = FALSE; - stream->in_hexstring = FALSE; - stream->empty_hexstring = TRUE; + stream->state = WRAP_STATE_DELIMITER; + stream->in_escape = FALSE; + stream->escape_digits = 0; return &stream->base; } @@ -458,7 +514,6 @@ _cairo_pdf_operators_emit_path (cairo_pdf_operators_t *pdf_operators, status = _cairo_pdf_path_rectangle (&info, &box); } else { status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_pdf_path_move_to, _cairo_pdf_path_line_to, _cairo_pdf_path_curve_to, @@ -880,6 +935,26 @@ _cairo_pdf_operators_fill_stroke (cairo_pdf_operators_t *pdf_operators, operator); } +static void +_cairo_pdf_operators_emit_glyph_index (cairo_pdf_operators_t *pdf_operators, + cairo_output_stream_t *stream, + unsigned int glyph) +{ + if (pdf_operators->is_latin) { + if (glyph == '(' || glyph == ')' || glyph == '\\') + _cairo_output_stream_printf (stream, "\\%c", glyph); + else if (glyph >= 0x20 && glyph <= 0x7e) + _cairo_output_stream_printf (stream, "%c", glyph); + else + _cairo_output_stream_printf (stream, "\\%03o", glyph); + } else { + _cairo_output_stream_printf (stream, + "%0*x", + pdf_operators->hex_width, + glyph); + } +} + #define GLYPH_POSITION_TOLERANCE 0.001 /* Emit the string of glyphs using the 'Tj' operator. This requires @@ -890,15 +965,14 @@ _cairo_pdf_operators_emit_glyph_string (cairo_pdf_operators_t *pdf_operators, { int i; - _cairo_output_stream_printf (stream, "<"); + _cairo_output_stream_printf (stream, "%s", pdf_operators->is_latin ? "(" : "<"); for (i = 0; i < pdf_operators->num_glyphs; i++) { - _cairo_output_stream_printf (stream, - "%0*x", - pdf_operators->hex_width, - pdf_operators->glyphs[i].glyph_index); + _cairo_pdf_operators_emit_glyph_index (pdf_operators, + stream, + pdf_operators->glyphs[i].glyph_index); pdf_operators->cur_x += pdf_operators->glyphs[i].x_advance; } - _cairo_output_stream_printf (stream, ">Tj\n"); + _cairo_output_stream_printf (stream, "%sTj\n", pdf_operators->is_latin ? ")" : ">"); return _cairo_output_stream_get_status (stream); } @@ -918,7 +992,7 @@ _cairo_pdf_operators_emit_glyph_string_with_positioning ( { int i; - _cairo_output_stream_printf (stream, "[<"); + _cairo_output_stream_printf (stream, "[%s", pdf_operators->is_latin ? "(" : "<"); for (i = 0; i < pdf_operators->num_glyphs; i++) { if (pdf_operators->glyphs[i].x_position != pdf_operators->cur_x) { @@ -934,10 +1008,18 @@ _cairo_pdf_operators_emit_glyph_string_with_positioning ( * calculating subsequent deltas. */ rounded_delta = _cairo_lround (delta); + if (abs(rounded_delta) < 3) + rounded_delta = 0; if (rounded_delta != 0) { - _cairo_output_stream_printf (stream, - ">%d<", - rounded_delta); + if (pdf_operators->is_latin) { + _cairo_output_stream_printf (stream, + ")%d(", + rounded_delta); + } else { + _cairo_output_stream_printf (stream, + ">%d<", + rounded_delta); + } } /* Convert the rounded delta back to text @@ -947,13 +1029,12 @@ _cairo_pdf_operators_emit_glyph_string_with_positioning ( pdf_operators->cur_x += delta; } - _cairo_output_stream_printf (stream, - "%0*x", - pdf_operators->hex_width, - pdf_operators->glyphs[i].glyph_index); + _cairo_pdf_operators_emit_glyph_index (pdf_operators, + stream, + pdf_operators->glyphs[i].glyph_index); pdf_operators->cur_x += pdf_operators->glyphs[i].x_advance; } - _cairo_output_stream_printf (stream, ">]TJ\n"); + _cairo_output_stream_printf (stream, "%s]TJ\n", pdf_operators->is_latin ? ")" : ">"); return _cairo_output_stream_get_status (stream); } @@ -1128,6 +1209,7 @@ _cairo_pdf_operators_set_font_subset (cairo_pdf_operators_t *pdf_ope } pdf_operators->font_id = subset_glyph->font_id; pdf_operators->subset_id = subset_glyph->subset_id; + pdf_operators->is_latin = subset_glyph->is_latin; if (subset_glyph->is_composite) pdf_operators->hex_width = 4; diff --git a/src/cairo-pdf-shading-private.h b/src/cairo-pdf-shading-private.h new file mode 100644 index 0000000..dcf244e --- /dev/null +++ b/src/cairo-pdf-shading-private.h @@ -0,0 +1,99 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2009 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * The Original Code is the cairo graphics library. + * + * The Initial Developer of the Original Code is Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#ifndef CAIRO_PDF_SHADING_H +#define CAIRO_PDF_SHADING_H + +#include "cairo-compiler-private.h" +#include "cairo-types-private.h" + + +typedef struct _cairo_pdf_shading { + int shading_type; + int bits_per_coordinate; + int bits_per_component; + int bits_per_flag; + double *decode_array; + int decode_array_length; + unsigned char *data; + unsigned long data_length; +} cairo_pdf_shading_t; + + +/** + * _cairo_pdf_shading_init_color: + * @shading: a #cairo_pdf_shading_t to initialize + * @pattern: the #cairo_mesh_pattern_t to initialize from + * + * Generate the PDF shading dictionary data for the a PDF type 7 + * shading from RGB part of the specified mesh pattern. + * + * Return value: %CAIRO_STATUS_SUCCESS if successful, possible errors + * include %CAIRO_STATUS_NO_MEMORY. + **/ +cairo_private cairo_status_t +_cairo_pdf_shading_init_color (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *pattern); + + +/** + * _cairo_pdf_shading_init_alpha: + * @shading: a #cairo_pdf_shading_t to initialize + * @pattern: the #cairo_mesh_pattern_t to initialize from + * + * Generate the PDF shading dictionary data for a PDF type 7 + * shading from alpha part of the specified mesh pattern. + * + * Return value: %CAIRO_STATUS_SUCCESS if successful, possible errors + * include %CAIRO_STATUS_NO_MEMORY. + **/ +cairo_private cairo_status_t +_cairo_pdf_shading_init_alpha (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *pattern); + +/** + * _cairo_pdf_shading_fini: + * @shading: a #cairo_pdf_shading_t + * + * Free all resources associated with @shading. After this call, + * @shading should not be used again without a subsequent call to + * _cairo_pdf_shading_init() again first. + **/ +cairo_private void +_cairo_pdf_shading_fini (cairo_pdf_shading_t *shading); + + +#endif /* CAIRO_PDF_SHADING_H */ diff --git a/src/cairo-pdf-shading.c b/src/cairo-pdf-shading.c new file mode 100644 index 0000000..8a277ac --- /dev/null +++ b/src/cairo-pdf-shading.c @@ -0,0 +1,277 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2009 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * The Original Code is the cairo graphics library. + * + * The Initial Developer of the Original Code is Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#include "cairoint.h" + +#if CAIRO_HAS_PDF_OPERATORS + +#include "cairo-pdf-shading-private.h" +#include "cairo-error-private.h" +#include + +static unsigned char * +encode_coordinate (unsigned char *p, double c) +{ + uint32_t f; + + f = c; + *p++ = f >> 24; + *p++ = (f >> 16) & 0xff; + *p++ = (f >> 8) & 0xff; + *p++ = f & 0xff; + + return p; +} + +static unsigned char * +encode_point (unsigned char *p, const cairo_point_double_t *point) +{ + p = encode_coordinate (p, point->x); + p = encode_coordinate (p, point->y); + + return p; +} + +static unsigned char * +encode_color_component (unsigned char *p, double color) +{ + uint16_t c; + + c = _cairo_color_double_to_short (color); + *p++ = c >> 8; + *p++ = c & 0xff; + + return p; +} + +static unsigned char * +encode_color (unsigned char *p, const cairo_color_t *color) +{ + p = encode_color_component (p, color->red); + p = encode_color_component (p, color->green); + p = encode_color_component (p, color->blue); + + return p; +} + +static unsigned char * +encode_alpha (unsigned char *p, const cairo_color_t *color) +{ + p = encode_color_component (p, color->alpha); + + return p; +} + +static cairo_status_t +_cairo_pdf_shading_generate_decode_array (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *mesh, + cairo_bool_t is_alpha) +{ + unsigned int num_color_components, i; + cairo_bool_t is_valid; + + if (is_alpha) + num_color_components = 1; + else + num_color_components = 3; + + shading->decode_array_length = 4 + num_color_components * 2; + shading->decode_array = _cairo_malloc_ab (shading->decode_array_length, + sizeof (double)); + if (unlikely (shading->decode_array == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + is_valid = _cairo_mesh_pattern_coord_box (mesh, + &shading->decode_array[0], + &shading->decode_array[2], + &shading->decode_array[1], + &shading->decode_array[3]); + + assert (is_valid); + assert (shading->decode_array[1] - shading->decode_array[0] >= DBL_EPSILON); + assert (shading->decode_array[3] - shading->decode_array[2] >= DBL_EPSILON); + + for (i = 0; i < num_color_components; i++) { + shading->decode_array[4 + 2*i] = 0; + shading->decode_array[5 + 2*i] = 1; + } + + return CAIRO_STATUS_SUCCESS; +} + +/* The ISO32000 specification mandates this order for the points which + * define the patch. */ +static const int pdf_points_order_i[16] = { + 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 1, 1, 1, 2, 2 }; +static const int pdf_points_order_j[16] = { + 0, 1, 2, 3, 3, 3, 3, 2, 1, 0, 0, 0, 1, 2, 2, 1 }; + +static cairo_status_t +_cairo_pdf_shading_generate_data (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *mesh, + cairo_bool_t is_alpha) +{ + const cairo_mesh_patch_t *patch; + double x_off, y_off, x_scale, y_scale; + unsigned int num_patches; + unsigned int num_color_components; + unsigned char *p; + unsigned int i, j; + + if (is_alpha) + num_color_components = 1; + else + num_color_components = 3; + + num_patches = _cairo_array_num_elements (&mesh->patches); + patch = _cairo_array_index_const (&mesh->patches, 0); + + /* Each patch requires: + * + * 1 flag - 1 byte + * 16 points. Each point is 2 coordinates. Each coordinate is + * stored in 4 bytes. + * + * 4 colors. Each color is stored in 2 bytes * num_color_components. + */ + shading->data_length = num_patches * (1 + 16 * 2 * 4 + 4 * 2 * num_color_components); + shading->data = malloc (shading->data_length); + if (unlikely (shading->data == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + x_off = shading->decode_array[0]; + y_off = shading->decode_array[2]; + x_scale = UINT32_MAX / (shading->decode_array[1] - x_off); + y_scale = UINT32_MAX / (shading->decode_array[3] - y_off); + + p = shading->data; + for (i = 0; i < num_patches; i++) { + /* edge flag */ + *p++ = 0; + + /* 16 points */ + for (j = 0; j < 16; j++) { + cairo_point_double_t point; + int pi, pj; + + pi = pdf_points_order_i[j]; + pj = pdf_points_order_j[j]; + point = patch[i].points[pi][pj]; + + /* Transform the point as specified in the decode array */ + point.x -= x_off; + point.y -= y_off; + point.x *= x_scale; + point.y *= y_scale; + + /* Make sure that rounding errors don't cause + * wraparounds */ + point.x = _cairo_restrict_value (point.x, 0, UINT32_MAX); + point.y = _cairo_restrict_value (point.y, 0, UINT32_MAX); + + p = encode_point (p, &point); + } + + /* 4 colors */ + for (j = 0; j < 4; j++) { + if (is_alpha) + p = encode_alpha (p, &patch[i].colors[j]); + else + p = encode_color (p, &patch[i].colors[j]); + } + } + + assert (p == shading->data + shading->data_length); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +_cairo_pdf_shading_init (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *mesh, + cairo_bool_t is_alpha) +{ + cairo_status_t status; + + assert (mesh->base.status == CAIRO_STATUS_SUCCESS); + assert (mesh->current_patch == NULL); + + shading->shading_type = 7; + + /* + * Coordinates from the minimum to the maximum value of the mesh + * map to the [0..UINT32_MAX] range and are represented as + * uint32_t values. + * + * Color components are represented as uint16_t (in a 0.16 fixed + * point format, as in the rest of cairo). + */ + shading->bits_per_coordinate = 32; + shading->bits_per_component = 16; + shading->bits_per_flag = 8; + + shading->decode_array = NULL; + shading->data = NULL; + + status = _cairo_pdf_shading_generate_decode_array (shading, mesh, is_alpha); + if (unlikely (status)) + return status; + + return _cairo_pdf_shading_generate_data (shading, mesh, is_alpha); +} + +cairo_status_t +_cairo_pdf_shading_init_color (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *pattern) +{ + return _cairo_pdf_shading_init (shading, pattern, FALSE); +} + +cairo_status_t +_cairo_pdf_shading_init_alpha (cairo_pdf_shading_t *shading, + const cairo_mesh_pattern_t *pattern) +{ + return _cairo_pdf_shading_init (shading, pattern, TRUE); +} + +void +_cairo_pdf_shading_fini (cairo_pdf_shading_t *shading) +{ + free (shading->data); + free (shading->decode_array); +} + +#endif /* CAIRO_HAS_PDF_OPERATORS */ diff --git a/src/cairo-pdf-surface-private.h b/src/cairo-pdf-surface-private.h index 221418e..dd1c77c 100644 --- a/src/cairo-pdf-surface-private.h +++ b/src/cairo-pdf-surface-private.h @@ -67,7 +67,10 @@ typedef struct _cairo_pdf_group_resources { typedef struct _cairo_pdf_source_surface_entry { cairo_hash_entry_t base; unsigned int id; + unsigned char *unique_id; + unsigned long unique_id_length; cairo_bool_t interpolate; + cairo_bool_t mask; cairo_pdf_resource_t surface_res; int width; int height; diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c index 49e5e84..00cc4fb 100644 --- a/src/cairo-pdf-surface.c +++ b/src/cairo-pdf-surface.c @@ -44,6 +44,7 @@ #include "cairo-pdf.h" #include "cairo-pdf-surface-private.h" #include "cairo-pdf-operators-private.h" +#include "cairo-pdf-shading-private.h" #include "cairo-analysis-surface-private.h" #include "cairo-composite-rectangles-private.h" #include "cairo-error-private.h" @@ -357,6 +358,8 @@ _cairo_pdf_surface_create_for_stream_internal (cairo_output_stream_t *output, goto BAIL1; } + _cairo_scaled_font_subsets_enable_latin_subset (surface->font_subsets, TRUE); + surface->next_available_resource.id = 1; surface->pages_resource = _cairo_pdf_surface_new_object (surface); if (surface->pages_resource.id == 0) { @@ -1037,13 +1040,24 @@ _cairo_pdf_source_surface_equal (const void *key_a, const void *key_b) const cairo_pdf_source_surface_entry_t *a = key_a; const cairo_pdf_source_surface_entry_t *b = key_b; - return (a->id == b->id) && (a->interpolate == b->interpolate); + if (a->interpolate != b->interpolate) + return FALSE; + + if (a->unique_id && b->unique_id && a->unique_id_length == b->unique_id_length) + return (memcmp (a->unique_id, b->unique_id, a->unique_id_length) == 0); + + return (a->id == b->id); } static void _cairo_pdf_source_surface_init_key (cairo_pdf_source_surface_entry_t *key) { - key->base.hash = key->id; + if (key->unique_id && key->unique_id_length > 0) { + key->base.hash = _cairo_hash_bytes (_CAIRO_HASH_INIT_VALUE, + key->unique_id, key->unique_id_length); + } else { + key->base.hash = key->id; + } } static cairo_int_status_t @@ -1135,6 +1149,7 @@ static cairo_status_t _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t *surface, cairo_surface_t *source, cairo_filter_t filter, + cairo_bool_t mask, cairo_pdf_resource_t *surface_res, int *width, int *height) @@ -1144,6 +1159,8 @@ _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t *surface, cairo_pdf_source_surface_entry_t *surface_entry; cairo_status_t status; cairo_bool_t interpolate; + const unsigned char *unique_id; + unsigned long unique_id_length; switch (filter) { default: @@ -1161,6 +1178,9 @@ _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t *surface, surface_key.id = source->unique_id; surface_key.interpolate = interpolate; + cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_UNIQUE_ID, + (const unsigned char **) &surface_key.unique_id, + &surface_key.unique_id_length); _cairo_pdf_source_surface_init_key (&surface_key); surface_entry = _cairo_hash_table_lookup (surface->all_surfaces, &surface_key.base); if (surface_entry) { @@ -1177,6 +1197,23 @@ _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t *surface, surface_entry->id = surface_key.id; surface_entry->interpolate = interpolate; + surface_entry->mask = mask; + cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_UNIQUE_ID, + &unique_id, &unique_id_length); + if (unique_id && unique_id_length > 0) { + surface_entry->unique_id = malloc (unique_id_length); + if (surface_entry->unique_id == NULL) { + cairo_surface_destroy (source); + free (surface_entry); + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } + + surface_entry->unique_id_length = unique_id_length; + memcpy (surface_entry->unique_id, unique_id, unique_id_length); + } else { + surface_entry->unique_id = NULL; + surface_entry->unique_id_length = 0; + } _cairo_pdf_source_surface_init_key (surface_entry); src_surface.hash_entry = surface_entry; @@ -1251,10 +1288,13 @@ _cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface, /* gradient patterns require an smask object to implement transparency */ if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) + pattern->type == CAIRO_PATTERN_TYPE_RADIAL || + pattern->type == CAIRO_PATTERN_TYPE_MESH) { - cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t *) pattern; - if (! _gradient_stops_are_opaque (gradient)) { + double min_alpha; + + _cairo_pattern_alpha_range (pattern, &min_alpha, NULL); + if (! CAIRO_ALPHA_IS_OPAQUE (min_alpha)) { pdf_pattern.gstate_res = _cairo_pdf_surface_new_object (surface); if (pdf_pattern.gstate_res.id == 0) { cairo_pattern_destroy (pdf_pattern.pattern); @@ -1629,6 +1669,9 @@ _cairo_pdf_source_surface_entry_pluck (void *entry, void *closure) cairo_hash_table_t *patterns = closure; _cairo_hash_table_remove (patterns, &surface_entry->base); + if (surface_entry->unique_id) + free (surface_entry->unique_id); + free (surface_entry); } @@ -1783,6 +1826,46 @@ _cairo_pdf_surface_supports_fine_grained_fallbacks (void *abstract_surface) return TRUE; } +static cairo_status_t +_cairo_pdf_surface_emit_imagemask (cairo_pdf_surface_t *surface, + cairo_image_surface_t *image, + cairo_pdf_resource_t *image_res) +{ + cairo_status_t status; + uint8_t *byte, output_byte; + int row, col, num_cols; + + + /* This is the only image format supported for stencil masking */ + assert (image->format == CAIRO_FORMAT_A1); + + status = _cairo_pdf_surface_open_stream (surface, + image_res, + TRUE, + " /Type /XObject\n" + " /Subtype /Image\n" + " /ImageMask true\n" + " /Width %d\n" + " /Height %d\n" + " /BitsPerComponent 1\n", + image->width, image->height); + if (unlikely (status)) + return status; + + num_cols = (image->width + 7) / 8; + for (row = 0; row < image->height; row++) { + byte = image->data + row * image->stride; + for (col = 0; col < num_cols; col++) { + output_byte = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (*byte); + output_byte = ~output_byte; + _cairo_output_stream_write (surface->output, &output_byte, 1); + byte++; + } + } + + return _cairo_pdf_surface_close_stream (surface); +} + /* Emit alpha channel from the image into the given data, providing * an id that can be used to reference the resulting SMask object. * @@ -1891,7 +1974,8 @@ static cairo_status_t _cairo_pdf_surface_emit_image (cairo_pdf_surface_t *surface, cairo_image_surface_t *image, cairo_pdf_resource_t *image_res, - cairo_filter_t filter) + cairo_filter_t filter, + cairo_bool_t mask) { cairo_status_t status = CAIRO_STATUS_SUCCESS; char *rgb; @@ -1912,6 +1996,9 @@ _cairo_pdf_surface_emit_image (cairo_pdf_surface_t *surface, image->format == CAIRO_FORMAT_A8 || image->format == CAIRO_FORMAT_A1); + if (mask) + return _cairo_pdf_surface_emit_imagemask (surface, image, image_res); + rgb_size = image->height * image->width * 3; rgb = _cairo_malloc_abc (image->width, image->height, 3); if (unlikely (rgb == NULL)) { @@ -2108,7 +2195,8 @@ static cairo_status_t _cairo_pdf_surface_emit_image_surface (cairo_pdf_surface_t *surface, cairo_surface_t *source, cairo_pdf_resource_t resource, - cairo_bool_t interpolate) + cairo_bool_t interpolate, + cairo_bool_t mask) { cairo_image_surface_t *image; void *image_extra; @@ -2127,7 +2215,7 @@ _cairo_pdf_surface_emit_image_surface (cairo_pdf_surface_t *surface, return status; status = _cairo_pdf_surface_emit_image (surface, image, - &resource, interpolate); + &resource, interpolate, mask); if (unlikely (status)) goto BAIL; @@ -2218,7 +2306,7 @@ _cairo_pdf_surface_emit_padded_image_surface (cairo_pdf_surface_t *surface, } status = _cairo_pdf_surface_emit_image (surface, (cairo_image_surface_t *)pad_image, - resource, interpolate); + resource, interpolate, FALSE); if (unlikely (status)) goto BAIL; @@ -2377,7 +2465,8 @@ _cairo_pdf_surface_emit_surface (cairo_pdf_surface_t *surface, return _cairo_pdf_surface_emit_image_surface (surface, src_surface->surface, src_surface->hash_entry->surface_res, - src_surface->hash_entry->interpolate); + src_surface->hash_entry->interpolate, + src_surface->hash_entry->mask); } } @@ -2414,6 +2503,7 @@ _cairo_pdf_surface_emit_surface_pattern (cairo_pdf_surface_t *surface, status = _cairo_pdf_surface_add_source_surface (surface, pattern->surface, pdf_pattern->pattern->filter, + FALSE, &pattern_resource, &pattern_width, &pattern_height); @@ -2827,7 +2917,50 @@ _cairo_pdf_surface_emit_pattern_stops (cairo_pdf_surface_t *surface, stops[n_stops-1].offset = 1.0; } - if (n_stops <= 2) { + if (stops[0].offset == stops[n_stops - 1].offset) { + /* + * The first and the last stops have the same offset, but we + * don't want a function with an empty domain, because that + * would provoke underdefined behaviour from rasterisers. + * This can only happen with EXTEND_PAD, because EXTEND_NONE + * is optimised into a clear pattern in cairo-gstate, and + * REFLECT/REPEAT are always transformed to have the first + * stop at t=0 and the last stop at t=1. Thus we want a step + * function going from the first color to the last one. + * + * This can be accomplished by stitching three functions: + * - a constant first color function, + * - a step from the first color to the last color (with empty domain) + * - a constant last color function + */ + cairo_pdf_color_stop_t pad_stops[4]; + + assert (pattern->base.extend == CAIRO_EXTEND_PAD); + + pad_stops[0] = pad_stops[1] = stops[0]; + pad_stops[2] = pad_stops[3] = stops[n_stops - 1]; + + pad_stops[0].offset = 0; + pad_stops[3].offset = 1; + + status = _cairo_pdf_surface_emit_stitched_colorgradient (surface, + 4, + pad_stops, + FALSE, + color_function); + if (unlikely (status)) + goto BAIL; + + if (emit_alpha) { + status = _cairo_pdf_surface_emit_stitched_colorgradient (surface, + 4, + pad_stops, + TRUE, + alpha_function); + if (unlikely (status)) + goto BAIL; + } + } else if (n_stops == 2) { /* no need for stitched function */ status = cairo_pdf_surface_emit_rgb_linear_function (surface, &stops[0], @@ -3013,101 +3146,159 @@ cairo_pdf_surface_emit_transparency_group (cairo_pdf_surface_t *surface, return _cairo_output_stream_get_status (surface->output); } +static void +_cairo_pdf_surface_output_gradient (cairo_pdf_surface_t *surface, + const cairo_pdf_pattern_t *pdf_pattern, + cairo_pdf_resource_t pattern_resource, + const cairo_matrix_t *pat_to_pdf, + const cairo_circle_double_t*start, + const cairo_circle_double_t*end, + const double *domain, + const char *colorspace, + cairo_pdf_resource_t color_function) +{ + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Pattern\n" + " /PatternType 2\n" + " /Matrix [ %f %f %f %f %f %f ]\n" + " /Shading\n", + pattern_resource.id, + pat_to_pdf->xx, pat_to_pdf->yx, + pat_to_pdf->xy, pat_to_pdf->yy, + pat_to_pdf->x0, pat_to_pdf->y0); + + if (pdf_pattern->pattern->type == CAIRO_PATTERN_TYPE_LINEAR) { + _cairo_output_stream_printf (surface->output, + " << /ShadingType 2\n" + " /ColorSpace %s\n" + " /Coords [ %f %f %f %f ]\n", + colorspace, + start->center.x, start->center.y, + end->center.x, end->center.y); + } else { + _cairo_output_stream_printf (surface->output, + " << /ShadingType 3\n" + " /ColorSpace %s\n" + " /Coords [ %f %f %f %f %f %f ]\n", + colorspace, + start->center.x, start->center.y, + MAX (start->radius, 0), + end->center.x, end->center.y, + MAX (end->radius, 0)); + } + + _cairo_output_stream_printf (surface->output, + " /Domain [ %f %f ]\n", + domain[0], domain[1]); + + if (pdf_pattern->pattern->extend != CAIRO_EXTEND_NONE) { + _cairo_output_stream_printf (surface->output, + " /Extend [ true true ]\n"); + } else { + _cairo_output_stream_printf (surface->output, + " /Extend [ false false ]\n"); + } + + _cairo_output_stream_printf (surface->output, + " /Function %d 0 R\n" + " >>\n" + ">>\n" + "endobj\n", + color_function.id); +} + static cairo_status_t -_cairo_pdf_surface_emit_linear_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_pattern_t *pdf_pattern) +_cairo_pdf_surface_emit_gradient (cairo_pdf_surface_t *surface, + cairo_pdf_pattern_t *pdf_pattern) { - cairo_linear_pattern_t *pattern = (cairo_linear_pattern_t *) pdf_pattern->pattern; + cairo_gradient_pattern_t *pattern = (cairo_gradient_pattern_t *) pdf_pattern->pattern; cairo_pdf_resource_t color_function, alpha_function; - double x1, y1, x2, y2; - double _x1, _y1, _x2, _y2; cairo_matrix_t pat_to_pdf; - cairo_extend_t extend; + cairo_circle_double_t start, end; + double domain[2]; cairo_status_t status; - cairo_gradient_pattern_t *gradient = &pattern->base; - double first_stop, last_stop; - int repeat_begin = 0, repeat_end = 1; - assert (pattern->base.n_stops != 0); + assert (pattern->n_stops != 0); - extend = cairo_pattern_get_extend (pdf_pattern->pattern); + status = _cairo_pdf_surface_emit_pattern_stops (surface, + pattern, + &color_function, + &alpha_function); + if (unlikely (status)) + return status; - pat_to_pdf = pattern->base.base.matrix; + pat_to_pdf = pattern->base.matrix; status = cairo_matrix_invert (&pat_to_pdf); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); - first_stop = gradient->stops[0].offset; - last_stop = gradient->stops[gradient->n_stops - 1].offset; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - double dx, dy; - int x_rep = 0, y_rep = 0; - - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - cairo_matrix_transform_point (&pat_to_pdf, &x1, &y1); - - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - cairo_matrix_transform_point (&pat_to_pdf, &x2, &y2); - - dx = fabs (x2 - x1); - dy = fabs (y2 - y1); - if (dx > 1e-6) - x_rep = ceil (surface->width/dx); - if (dy > 1e-6) - y_rep = ceil (surface->height/dy); - - repeat_end = MAX (x_rep, y_rep); - repeat_begin = -repeat_end; - first_stop = repeat_begin; - last_stop = repeat_end; - } - - /* PDF requires the first and last stop to be the same as the line - * coordinates. For repeating patterns this moves the line - * coordinates out to the begin/end of the repeating function. For - * non repeating patterns this may move the line coordinates in if - * there are not stops at offset 0 and 1. */ - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - - _x1 = x1 + (x2 - x1)*first_stop; - _y1 = y1 + (y2 - y1)*first_stop; - _x2 = x1 + (x2 - x1)*last_stop; - _y2 = y1 + (y2 - y1)*last_stop; - - x1 = _x1; - x2 = _x2; - y1 = _y1; - y2 = _y2; - - /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a - * Type 2 function is used by itself without a stitching - * function. Type 2 functions always have the domain [0 1] */ - if ((pattern->base.base.extend == CAIRO_EXTEND_NONE || - pattern->base.base.extend == CAIRO_EXTEND_PAD) && - gradient->n_stops == 2) { - first_stop = 0.0; - last_stop = 1.0; + + if (pattern->base.extend == CAIRO_EXTEND_REPEAT || + pattern->base.extend == CAIRO_EXTEND_REFLECT) + { + double bounds_x1, bounds_x2, bounds_y1, bounds_y2; + double x_scale, y_scale, tolerance; + + /* TODO: use tighter extents */ + bounds_x1 = 0; + bounds_y1 = 0; + bounds_x2 = surface->width; + bounds_y2 = surface->height; + _cairo_matrix_transform_bounding_box (&pattern->base.matrix, + &bounds_x1, &bounds_y1, + &bounds_x2, &bounds_y2, + NULL); + + x_scale = surface->base.x_resolution / surface->base.x_fallback_resolution; + y_scale = surface->base.y_resolution / surface->base.y_fallback_resolution; + + tolerance = fabs (_cairo_matrix_compute_determinant (&pattern->base.matrix)); + tolerance /= _cairo_matrix_transformed_circle_major_axis (&pattern->base.matrix, 1); + tolerance *= MIN (x_scale, y_scale); + + _cairo_gradient_pattern_box_to_parameter (pattern, + bounds_x1, bounds_y1, + bounds_x2, bounds_y2, + tolerance, domain); + } else if (pattern->stops[0].offset == pattern->stops[pattern->n_stops - 1].offset) { + /* + * If the first and the last stop offset are the same, then + * the color function is a step function. + * _cairo_ps_surface_emit_pattern_stops emits it as a stitched + * function no matter how many stops the pattern has. The + * domain of the stitched function will be [0 1] in this case. + * + * This is done to avoid emitting degenerate gradients for + * EXTEND_PAD patterns having a step color function. + */ + domain[0] = 0.0; + domain[1] = 1.0; + + assert (pattern->base.extend == CAIRO_EXTEND_PAD); + } else { + domain[0] = pattern->stops[0].offset; + domain[1] = pattern->stops[pattern->n_stops - 1].offset; } - status = _cairo_pdf_surface_emit_pattern_stops (surface, - &pattern->base, - &color_function, - &alpha_function); - if (unlikely (status)) - return status; + /* PDF requires the first and last stop to be the same as the + * extreme coordinates. For repeating patterns this moves the + * extreme coordinates out to the begin/end of the repeating + * function. For non repeating patterns this may move the extreme + * coordinates in if there are not stops at offset 0 and 1. */ + _cairo_gradient_pattern_interpolate (pattern, domain[0], &start); + _cairo_gradient_pattern_interpolate (pattern, domain[1], &end); + + if (pattern->base.extend == CAIRO_EXTEND_REPEAT || + pattern->base.extend == CAIRO_EXTEND_REFLECT) + { + int repeat_begin, repeat_end; + + repeat_begin = floor (domain[0]); + repeat_end = ceil (domain[1]); - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { status = _cairo_pdf_surface_emit_repeating_function (surface, - &pattern->base, + pattern, &color_function, repeat_begin, repeat_end); @@ -3116,47 +3307,26 @@ _cairo_pdf_surface_emit_linear_pattern (cairo_pdf_surface_t *surface, if (alpha_function.id != 0) { status = _cairo_pdf_surface_emit_repeating_function (surface, - &pattern->base, + pattern, &alpha_function, repeat_begin, repeat_end); if (unlikely (status)) return status; } + } else if (pattern->n_stops <= 2) { + /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a + * Type 2 function is used by itself without a stitching + * function. Type 2 functions always have the domain [0 1] */ + domain[0] = 0.0; + domain[1] = 1.0; } _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\n" - " /Function %d 0 R\n", - pdf_pattern->pattern_res.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, x2, y2, - first_stop, last_stop, - color_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); + _cairo_pdf_surface_output_gradient (surface, pdf_pattern, + pdf_pattern->pattern_res, + &pat_to_pdf, &start, &end, domain, + "/DeviceRGB", color_function); if (alpha_function.id != 0) { cairo_pdf_resource_t mask_resource; @@ -3168,37 +3338,11 @@ _cairo_pdf_surface_emit_linear_pattern (cairo_pdf_surface_t *surface, if (mask_resource.id == 0) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceGray\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\n" - " /Function %d 0 R\n", - mask_resource.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, x2, y2, - first_stop, last_stop, - alpha_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } + _cairo_pdf_surface_output_gradient (surface, pdf_pattern, + mask_resource, + &pat_to_pdf, &start, &end, domain, + "/DeviceGray", alpha_function); - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); status = _cairo_pdf_surface_add_pattern (surface, mask_resource); if (unlikely (status)) return status; @@ -3214,111 +3358,138 @@ _cairo_pdf_surface_emit_linear_pattern (cairo_pdf_surface_t *surface, } static cairo_status_t -_cairo_pdf_surface_emit_radial_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_pattern_t *pdf_pattern) +_cairo_pdf_surface_emit_mesh_pattern (cairo_pdf_surface_t *surface, + cairo_pdf_pattern_t *pdf_pattern) { - cairo_pdf_resource_t color_function, alpha_function; - double x1, y1, x2, y2, r1, r2; cairo_matrix_t pat_to_pdf; - cairo_extend_t extend; cairo_status_t status; - cairo_radial_pattern_t *pattern = (cairo_radial_pattern_t *) pdf_pattern->pattern; + cairo_pattern_t *pattern = pdf_pattern->pattern; + cairo_pdf_shading_t shading; + int i; + cairo_pdf_resource_t res; - assert (pattern->base.n_stops != 0); + pat_to_pdf = pattern->matrix; + status = cairo_matrix_invert (&pat_to_pdf); + /* cairo_pattern_set_matrix ensures the matrix is invertible */ + assert (status == CAIRO_STATUS_SUCCESS); - extend = cairo_pattern_get_extend (pdf_pattern->pattern); + cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); - status = _cairo_pdf_surface_emit_pattern_stops (surface, - &pattern->base, - &color_function, - &alpha_function); + status = _cairo_pdf_shading_init_color (&shading, (cairo_mesh_pattern_t *) pattern); if (unlikely (status)) return status; - pat_to_pdf = pattern->base.base.matrix; - status = cairo_matrix_invert (&pat_to_pdf); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); + res = _cairo_pdf_surface_new_object (surface); + if (unlikely (res.id == 0)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); - x1 = _cairo_fixed_to_double (pattern->c1.x); - y1 = _cairo_fixed_to_double (pattern->c1.y); - r1 = _cairo_fixed_to_double (pattern->r1); - x2 = _cairo_fixed_to_double (pattern->c2.x); - y2 = _cairo_fixed_to_double (pattern->c2.y); - r2 = _cairo_fixed_to_double (pattern->r2); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /ShadingType %d\n" + " /ColorSpace /DeviceRGB\n" + " /BitsPerCoordinate %d\n" + " /BitsPerComponent %d\n" + " /BitsPerFlag %d\n" + " /Decode [", + res.id, + shading.shading_type, + shading.bits_per_coordinate, + shading.bits_per_component, + shading.bits_per_flag); - _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); + for (i = 0; i < shading.decode_array_length; i++) + _cairo_output_stream_printf (surface->output, "%f ", shading.decode_array[i]); + + _cairo_output_stream_printf (surface->output, + "]\n" + " /Length %ld\n" + ">>\n" + "stream\n", + shading.data_length); + + _cairo_output_stream_write (surface->output, shading.data, shading.data_length); + _cairo_output_stream_printf (surface->output, + "\nendstream\n" + "endobj\n"); + + _cairo_pdf_shading_fini (&shading); + + _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); _cairo_output_stream_printf (surface->output, "%d 0 obj\n" "<< /Type /Pattern\n" " /PatternType 2\n" " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 3\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function %d 0 R\n", + " /Shading %d 0 R\n" + ">>\n" + "endobj\n", pdf_pattern->pattern_res.id, pat_to_pdf.xx, pat_to_pdf.yx, pat_to_pdf.xy, pat_to_pdf.yy, pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, r1, x2, y2, r2, - color_function.id); + res.id); - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } + if (pdf_pattern->gstate_res.id != 0) { + cairo_pdf_resource_t mask_resource; - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); + /* Create pattern for SMask. */ + res = _cairo_pdf_surface_new_object (surface); + if (unlikely (res.id == 0)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); - if (alpha_function.id != 0) { - cairo_pdf_resource_t mask_resource; + status = _cairo_pdf_shading_init_alpha (&shading, (cairo_mesh_pattern_t *) pattern); + if (unlikely (status)) + return status; - assert (pdf_pattern->gstate_res.id != 0); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /ShadingType %d\n" + " /ColorSpace /DeviceGray\n" + " /BitsPerCoordinate %d\n" + " /BitsPerComponent %d\n" + " /BitsPerFlag %d\n" + " /Decode [", + res.id, + shading.shading_type, + shading.bits_per_coordinate, + shading.bits_per_component, + shading.bits_per_flag); + + for (i = 0; i < shading.decode_array_length; i++) + _cairo_output_stream_printf (surface->output, "%f ", shading.decode_array[i]); + + _cairo_output_stream_printf (surface->output, + "]\n" + " /Length %ld\n" + ">>\n" + "stream\n", + shading.data_length); + + _cairo_output_stream_write (surface->output, shading.data, shading.data_length); + + _cairo_output_stream_printf (surface->output, + "\nendstream\n" + "endobj\n"); + _cairo_pdf_shading_fini (&shading); - /* Create pattern for SMask. */ mask_resource = _cairo_pdf_surface_new_object (surface); - if (mask_resource.id == 0) + if (unlikely (mask_resource.id == 0)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 3\n" - " /ColorSpace /DeviceGray\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function %d 0 R\n", - mask_resource.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, r1, x2, y2, r2, - alpha_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Pattern\n" + " /PatternType 2\n" + " /Matrix [ %f %f %f %f %f %f ]\n" + " /Shading %d 0 R\n" + ">>\n" + "endobj\n", + mask_resource.id, + pat_to_pdf.xx, pat_to_pdf.yx, + pat_to_pdf.xy, pat_to_pdf.yy, + pat_to_pdf.x0, pat_to_pdf.y0, + res.id); status = cairo_pdf_surface_emit_transparency_group (surface, pdf_pattern->gstate_res, @@ -3353,11 +3524,12 @@ _cairo_pdf_surface_emit_pattern (cairo_pdf_surface_t *surface, cairo_pdf_pattern break; case CAIRO_PATTERN_TYPE_LINEAR: - status = _cairo_pdf_surface_emit_linear_pattern (surface, pdf_pattern); + case CAIRO_PATTERN_TYPE_RADIAL: + status = _cairo_pdf_surface_emit_gradient (surface, pdf_pattern); break; - case CAIRO_PATTERN_TYPE_RADIAL: - status = _cairo_pdf_surface_emit_radial_pattern (surface, pdf_pattern); + case CAIRO_PATTERN_TYPE_MESH: + status = _cairo_pdf_surface_emit_mesh_pattern (surface, pdf_pattern); break; default: @@ -3375,7 +3547,8 @@ _cairo_pdf_surface_emit_pattern (cairo_pdf_surface_t *surface, cairo_pdf_pattern static cairo_status_t _cairo_pdf_surface_paint_surface_pattern (cairo_pdf_surface_t *surface, - cairo_surface_pattern_t *source) + cairo_surface_pattern_t *source, + cairo_bool_t mask) { cairo_pdf_resource_t surface_res; int width, height; @@ -3386,6 +3559,7 @@ _cairo_pdf_surface_paint_surface_pattern (cairo_pdf_surface_t *surface, status = _cairo_pdf_surface_add_source_surface (surface, source->surface, source->base.filter, + mask, &surface_res, &width, &height); @@ -3420,10 +3594,16 @@ _cairo_pdf_surface_paint_surface_pattern (cairo_pdf_surface_t *surface, if (unlikely (status)) return status; - _cairo_output_stream_printf (surface->output, - "/a%d gs /x%d Do\n", - alpha, - surface_res.id); + if (mask) { + _cairo_output_stream_printf (surface->output, + "/x%d Do\n", + surface_res.id); + } else { + _cairo_output_stream_printf (surface->output, + "/a%d gs /x%d Do\n", + alpha, + surface_res.id); + } return _cairo_pdf_surface_add_xobject (surface, surface_res); } @@ -3616,6 +3796,7 @@ _cairo_pdf_surface_get_font_options (void *abstract_surface, cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_OFF); } static cairo_pdf_resource_t @@ -3790,7 +3971,6 @@ _create_font_subset_tag (cairo_scaled_font_subset_t *font_subset, static cairo_int_status_t _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, cairo_scaled_font_subset_t *font_subset, - cairo_bool_t is_composite, cairo_pdf_resource_t *stream) { unsigned int i, num_bfchar; @@ -3818,7 +3998,7 @@ _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, "/CMapType 2 def\n" "1 begincodespacerange\n"); - if (is_composite) { + if (font_subset->is_composite && !font_subset->is_latin) { _cairo_output_stream_printf (surface->output, "<0000> \n"); } else { @@ -3870,7 +4050,7 @@ _cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, "%d beginbfchar\n", num_bfchar - i > 100 ? 100 : num_bfchar - i); } - if (is_composite) + if (font_subset->is_composite && !font_subset->is_latin) _cairo_output_stream_printf (surface->output, "<%04x> ", i + 1); else _cairo_output_stream_printf (surface->output, "<%02x> ", i + 1); @@ -3908,7 +4088,7 @@ _cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, cairo_pdf_resource_t stream, descriptor, cidfont_dict; cairo_pdf_resource_t subset_resource, to_unicode_stream; cairo_pdf_font_t font; - unsigned int i; + unsigned int i, last_glyph; cairo_status_t status; char tag[10]; @@ -3923,6 +4103,8 @@ _cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, status = _cairo_pdf_surface_open_stream (surface, NULL, TRUE, + font_subset->is_latin ? + " /Subtype /Type1C\n" : " /Subtype /CIDFontType0C\n"); if (unlikely (status)) return status; @@ -3935,7 +4117,7 @@ _cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, return status; status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) return status; @@ -3979,58 +4161,106 @@ _cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, (long)(subset->y_max*PDF_UNITS_PER_EM), stream.id); - cidfont_dict = _cairo_pdf_surface_new_object (surface); - if (cidfont_dict.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + if (font_subset->is_latin) { + /* find last glyph used */ + for (i = 255; i >= 32; i--) + if (font_subset->latin_to_subset_glyph_index[i] > 0) + break; - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /CIDFontType0\n" - " /BaseFont /%s+%s\n" - " /CIDSystemInfo\n" - " << /Registry (Adobe)\n" - " /Ordering (Identity)\n" - " /Supplement 0\n" - " >>\n" - " /FontDescriptor %d 0 R\n" - " /W [0 [", - cidfont_dict.id, - tag, - subset->ps_name, - descriptor.id); + last_glyph = i; + _cairo_pdf_surface_update_object (surface, subset_resource); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\r\n" + "<< /Type /Font\n" + " /Subtype /Type1\n" + " /BaseFont /%s+%s\n" + " /FirstChar 32\n" + " /LastChar %d\n" + " /FontDescriptor %d 0 R\n" + " /Encoding /WinAnsiEncoding\n" + " /Widths [", + subset_resource.id, + tag, + subset->ps_name, + last_glyph, + descriptor.id); + + for (i = 32; i < last_glyph + 1; i++) { + int glyph = font_subset->latin_to_subset_glyph_index[i]; + if (glyph > 0) { + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset->widths[glyph]*PDF_UNITS_PER_EM)); + } else { + _cairo_output_stream_printf (surface->output, " 0"); + } + } - for (i = 0; i < font_subset->num_glyphs; i++) _cairo_output_stream_printf (surface->output, - " %ld", - (long)(subset->widths[i]*PDF_UNITS_PER_EM)); + " ]\n"); - _cairo_output_stream_printf (surface->output, - " ]]\n" - ">>\n" - "endobj\n"); + if (to_unicode_stream.id != 0) + _cairo_output_stream_printf (surface->output, + " /ToUnicode %d 0 R\n", + to_unicode_stream.id); - _cairo_pdf_surface_update_object (surface, subset_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type0\n" - " /BaseFont /%s+%s\n" - " /Encoding /Identity-H\n" - " /DescendantFonts [ %d 0 R]\n", - subset_resource.id, - tag, - subset->ps_name, - cidfont_dict.id); + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + } else { + cidfont_dict = _cairo_pdf_surface_new_object (surface); + if (cidfont_dict.id == 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Font\n" + " /Subtype /CIDFontType0\n" + " /BaseFont /%s+%s\n" + " /CIDSystemInfo\n" + " << /Registry (Adobe)\n" + " /Ordering (Identity)\n" + " /Supplement 0\n" + " >>\n" + " /FontDescriptor %d 0 R\n" + " /W [0 [", + cidfont_dict.id, + tag, + subset->ps_name, + descriptor.id); + + for (i = 0; i < font_subset->num_glyphs; i++) + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset->widths[i]*PDF_UNITS_PER_EM)); - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); + _cairo_output_stream_printf (surface->output, + " ]]\n" + ">>\n" + "endobj\n"); + + _cairo_pdf_surface_update_object (surface, subset_resource); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Font\n" + " /Subtype /Type0\n" + " /BaseFont /%s+%s\n" + " /Encoding /Identity-H\n" + " /DescendantFonts [ %d 0 R]\n", + subset_resource.id, + tag, + subset->ps_name, + cidfont_dict.id); + + if (to_unicode_stream.id != 0) + _cairo_output_stream_printf (surface->output, + " /ToUnicode %d 0 R\n", + to_unicode_stream.id); + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + } font.font_id = font_subset->font_id; font.subset_id = font_subset->subset_id; @@ -4069,6 +4299,11 @@ _cairo_pdf_surface_emit_cff_fallback_font (cairo_pdf_surface_t *surface, cairo_cff_subset_t subset; char name[64]; + /* CFF fallback subsetting does not work with 8-bit glyphs unless + * they are a latin subset */ + if (!font_subset->is_composite && !font_subset->is_latin) + return CAIRO_INT_STATUS_UNSUPPORTED; + snprintf (name, sizeof name, "CairoFont-%d-%d", font_subset->font_id, font_subset->subset_id); status = _cairo_cff_fallback_init (&subset, name, font_subset); @@ -4091,7 +4326,7 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, cairo_pdf_font_t font; cairo_status_t status; unsigned long length; - unsigned int i; + unsigned int i, last_glyph; char tag[10]; _create_font_subset_tag (font_subset, subset->base_font, tag); @@ -4122,11 +4357,20 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, return status; status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) return status; + if (font_subset->is_latin) { + /* find last glyph used */ + for (i = 255; i >= 32; i--) + if (font_subset->latin_to_subset_glyph_index[i] > 0) + break; + + last_glyph = i; + } + descriptor = _cairo_pdf_surface_new_object (surface); if (descriptor.id == 0) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -4135,7 +4379,7 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, "%d 0 obj\n" "<< /Type /FontDescriptor\n" " /FontName /%s+%s\n" - " /Flags 4\n" + " /Flags %d\n" " /FontBBox [ %ld %ld %ld %ld ]\n" " /ItalicAngle 0\n" " /Ascent %ld\n" @@ -4149,6 +4393,7 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, descriptor.id, tag, subset->base_font, + font_subset->is_latin ? 32 : 4, (long)(subset->x_min*PDF_UNITS_PER_EM), (long)(subset->y_min*PDF_UNITS_PER_EM), (long)(subset->x_max*PDF_UNITS_PER_EM), @@ -4164,20 +4409,34 @@ _cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, "<< /Type /Font\n" " /Subtype /Type1\n" " /BaseFont /%s+%s\n" - " /FirstChar 0\n" + " /FirstChar %d\n" " /LastChar %d\n" " /FontDescriptor %d 0 R\n" " /Widths [", subset_resource.id, tag, subset->base_font, - font_subset->num_glyphs - 1, + font_subset->is_latin ? 32 : 0, + font_subset->is_latin ? last_glyph : font_subset->num_glyphs - 1, descriptor.id); - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " %ld", - (long)(subset->widths[i]*PDF_UNITS_PER_EM)); + if (font_subset->is_latin) { + for (i = 32; i < last_glyph + 1; i++) { + int glyph = font_subset->latin_to_subset_glyph_index[i]; + if (glyph > 0) { + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset->widths[glyph]*PDF_UNITS_PER_EM)); + } else { + _cairo_output_stream_printf (surface->output, " 0"); + } + } + } else { + for (i = 0; i < font_subset->num_glyphs; i++) + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset->widths[i]*PDF_UNITS_PER_EM)); + } _cairo_output_stream_printf (surface->output, " ]\n"); @@ -4206,6 +4465,10 @@ _cairo_pdf_surface_emit_type1_font_subset (cairo_pdf_surface_t *surface, cairo_type1_subset_t subset; char name[64]; + /* 16-bit glyphs not compatible with Type 1 fonts */ + if (font_subset->is_composite && !font_subset->is_latin) + return CAIRO_INT_STATUS_UNSUPPORTED; + snprintf (name, sizeof name, "CairoFont-%d-%d", font_subset->font_id, font_subset->subset_id); status = _cairo_type1_subset_init (&subset, name, font_subset, FALSE); @@ -4227,6 +4490,10 @@ _cairo_pdf_surface_emit_type1_fallback_font (cairo_pdf_surface_t *surface, cairo_type1_subset_t subset; char name[64]; + /* 16-bit glyphs not compatible with Type 1 fonts */ + if (font_subset->is_composite && !font_subset->is_latin) + return CAIRO_INT_STATUS_UNSUPPORTED; + snprintf (name, sizeof name, "CairoFont-%d-%d", font_subset->font_id, font_subset->subset_id); status = _cairo_type1_fallback_init_binary (&subset, name, font_subset); @@ -4248,7 +4515,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, cairo_status_t status; cairo_pdf_font_t font; cairo_truetype_subset_t subset; - unsigned int i; + unsigned int i, last_glyph; char tag[10]; subset_resource = _cairo_pdf_surface_get_font_resource (surface, @@ -4257,7 +4524,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, if (subset_resource.id == 0) return CAIRO_STATUS_SUCCESS; - status = _cairo_truetype_subset_init (&subset, font_subset); + status = _cairo_truetype_subset_init_pdf (&subset, font_subset); if (unlikely (status)) return status; @@ -4283,7 +4550,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, } status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) { _cairo_truetype_subset_fini (&subset); @@ -4311,7 +4578,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, } _cairo_output_stream_printf (surface->output, - " /Flags 4\n" + " /Flags %d\n" " /FontBBox [ %ld %ld %ld %ld ]\n" " /ItalicAngle 0\n" " /Ascent %ld\n" @@ -4322,6 +4589,7 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, " /FontFile2 %u 0 R\n" ">>\n" "endobj\n", + font_subset->is_latin ? 32 : 4, (long)(subset.x_min*PDF_UNITS_PER_EM), (long)(subset.y_min*PDF_UNITS_PER_EM), (long)(subset.x_max*PDF_UNITS_PER_EM), @@ -4331,60 +4599,108 @@ _cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, (long)(subset.y_max*PDF_UNITS_PER_EM), stream.id); - cidfont_dict = _cairo_pdf_surface_new_object (surface); - if (cidfont_dict.id == 0) { - _cairo_truetype_subset_fini (&subset); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } + if (font_subset->is_latin) { + /* find last glyph used */ + for (i = 255; i >= 32; i--) + if (font_subset->latin_to_subset_glyph_index[i] > 0) + break; - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /CIDFontType2\n" - " /BaseFont /%s+%s\n" - " /CIDSystemInfo\n" - " << /Registry (Adobe)\n" - " /Ordering (Identity)\n" - " /Supplement 0\n" - " >>\n" - " /FontDescriptor %d 0 R\n" - " /W [0 [", - cidfont_dict.id, - tag, - subset.ps_name, - descriptor.id); + last_glyph = i; + _cairo_pdf_surface_update_object (surface, subset_resource); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\r\n" + "<< /Type /Font\n" + " /Subtype /TrueType\n" + " /BaseFont /%s+%s\n" + " /FirstChar 32\n" + " /LastChar %d\n" + " /FontDescriptor %d 0 R\n" + " /Encoding /WinAnsiEncoding\n" + " /Widths [", + subset_resource.id, + tag, + subset.ps_name, + last_glyph, + descriptor.id); + + for (i = 32; i < last_glyph + 1; i++) { + int glyph = font_subset->latin_to_subset_glyph_index[i]; + if (glyph > 0) { + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset.widths[glyph]*PDF_UNITS_PER_EM)); + } else { + _cairo_output_stream_printf (surface->output, " 0"); + } + } - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " %ld", - (long)(subset.widths[i]*PDF_UNITS_PER_EM)); + _cairo_output_stream_printf (surface->output, + " ]\n"); - _cairo_output_stream_printf (surface->output, - " ]]\n" - ">>\n" - "endobj\n"); + if (to_unicode_stream.id != 0) + _cairo_output_stream_printf (surface->output, + " /ToUnicode %d 0 R\n", + to_unicode_stream.id); - _cairo_pdf_surface_update_object (surface, subset_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type0\n" - " /BaseFont /%s+%s\n" - " /Encoding /Identity-H\n" - " /DescendantFonts [ %d 0 R]\n", - subset_resource.id, - tag, - subset.ps_name, - cidfont_dict.id); + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + } else { + cidfont_dict = _cairo_pdf_surface_new_object (surface); + if (cidfont_dict.id == 0) { + _cairo_truetype_subset_fini (&subset); + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Font\n" + " /Subtype /CIDFontType2\n" + " /BaseFont /%s+%s\n" + " /CIDSystemInfo\n" + " << /Registry (Adobe)\n" + " /Ordering (Identity)\n" + " /Supplement 0\n" + " >>\n" + " /FontDescriptor %d 0 R\n" + " /W [0 [", + cidfont_dict.id, + tag, + subset.ps_name, + descriptor.id); + + for (i = 0; i < font_subset->num_glyphs; i++) + _cairo_output_stream_printf (surface->output, + " %ld", + (long)(subset.widths[i]*PDF_UNITS_PER_EM)); - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); + _cairo_output_stream_printf (surface->output, + " ]]\n" + ">>\n" + "endobj\n"); + + _cairo_pdf_surface_update_object (surface, subset_resource); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Font\n" + " /Subtype /Type0\n" + " /BaseFont /%s+%s\n" + " /Encoding /Identity-H\n" + " /DescendantFonts [ %d 0 R]\n", + subset_resource.id, + tag, + subset.ps_name, + cidfont_dict.id); + + if (to_unicode_stream.id != 0) + _cairo_output_stream_printf (surface->output, + " /ToUnicode %d 0 R\n", + to_unicode_stream.id); + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + } font.font_id = font_subset->font_id; font.subset_id = font_subset->subset_id; @@ -4607,7 +4923,7 @@ _cairo_pdf_surface_emit_type3_font_subset (cairo_pdf_surface_t *surface, free (glyphs); status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, + font_subset, &to_unicode_stream); if (_cairo_status_is_error (status)) { free (widths); @@ -4668,30 +4984,27 @@ _cairo_pdf_surface_emit_unscaled_font_subset (cairo_scaled_font_subset_t *font_s cairo_pdf_surface_t *surface = closure; cairo_status_t status; - if (font_subset->is_composite) { - status = _cairo_pdf_surface_emit_cff_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_cff_font_subset (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; - status = _cairo_pdf_surface_emit_truetype_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_truetype_font_subset (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; - status = _cairo_pdf_surface_emit_cff_fallback_font (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - } else { #if CAIRO_HAS_FT_FONT - status = _cairo_pdf_surface_emit_type1_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_type1_font_subset (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; #endif - status = _cairo_pdf_surface_emit_type1_fallback_font (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + status = _cairo_pdf_surface_emit_cff_fallback_font (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; - } + status = _cairo_pdf_surface_emit_type1_fallback_font (surface, font_subset); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; ASSERT_NOT_REACHED; return CAIRO_STATUS_SUCCESS; @@ -5032,7 +5345,7 @@ _cairo_pdf_surface_write_patterns_and_smask_groups (cairo_pdf_surface_t *surface cairo_pdf_pattern_t pattern; cairo_pdf_smask_group_t *group; cairo_pdf_source_surface_t src_surface; - int pattern_index, group_index, surface_index; + unsigned int pattern_index, group_index, surface_index; cairo_status_t status; /* Writing out PDF_MASK groups will cause additional smask groups @@ -5079,7 +5392,7 @@ _cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface) { cairo_pdf_resource_t page, knockout, res; cairo_status_t status; - int i, len; + unsigned int i, len; _cairo_pdf_group_resources_clear (&surface->resources); if (surface->has_fallback_images) { @@ -5225,55 +5538,23 @@ _surface_pattern_supported (cairo_surface_pattern_t *pattern) return FALSE; } -static cairo_bool_t -_gradient_pattern_supported (const cairo_pattern_t *pattern) -{ - cairo_extend_t extend; - - extend = cairo_pattern_get_extend ((cairo_pattern_t *) pattern); - - - /* Radial gradients are currently only supported with EXTEND_NONE - * and EXTEND_PAD and when one circle is inside the other. */ - if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { - double x1, y1, x2, y2, r1, r2, d; - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - - if (extend == CAIRO_EXTEND_REPEAT || - extend == CAIRO_EXTEND_REFLECT) { - return FALSE; - } - - x1 = _cairo_fixed_to_double (radial->c1.x); - y1 = _cairo_fixed_to_double (radial->c1.y); - r1 = _cairo_fixed_to_double (radial->r1); - x2 = _cairo_fixed_to_double (radial->c2.x); - y2 = _cairo_fixed_to_double (radial->c2.y); - r2 = _cairo_fixed_to_double (radial->r2); - - d = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - if (d > fabs(r2 - r1)) { - return FALSE; - } - } - - return TRUE; -} - static cairo_bool_t _pattern_supported (const cairo_pattern_t *pattern) { - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SOLID: + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: return TRUE; - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) - return _gradient_pattern_supported (pattern); - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) + case CAIRO_PATTERN_TYPE_SURFACE: return _surface_pattern_supported ((cairo_surface_pattern_t *) pattern); - return FALSE; + default: + ASSERT_NOT_REACHED; + return FALSE; + } } static cairo_bool_t @@ -5408,6 +5689,68 @@ _cairo_pdf_surface_start_fallback (cairo_pdf_surface_t *surface) return _cairo_pdf_surface_open_content_stream (surface, NULL, TRUE); } +/* A PDF stencil mask is an A1 mask used with the current color */ +static cairo_int_status_t +_cairo_pdf_surface_emit_stencil_mask (cairo_pdf_surface_t *surface, + const cairo_pattern_t *source, + const cairo_pattern_t *mask) +{ + cairo_status_t status; + cairo_surface_pattern_t *surface_pattern; + cairo_image_surface_t *image; + void *image_extra; + cairo_pdf_resource_t pattern_res = {0}; + + if (! (source->type == CAIRO_PATTERN_TYPE_SOLID && + mask->type == CAIRO_PATTERN_TYPE_SURFACE)) + return CAIRO_INT_STATUS_UNSUPPORTED; + + surface_pattern = (cairo_surface_pattern_t *) mask; + if (surface_pattern->surface->type == CAIRO_SURFACE_TYPE_RECORDING) + return CAIRO_INT_STATUS_UNSUPPORTED; + + status = _cairo_surface_acquire_source_image (surface_pattern->surface, + &image, + &image_extra); + if (unlikely (status)) + return status; + + if (image->base.status) + return image->base.status; + + if (image->format != CAIRO_FORMAT_A1) { + status = CAIRO_INT_STATUS_UNSUPPORTED; + goto cleanup; + } + + status = _cairo_pdf_surface_select_pattern (surface, source, + pattern_res, FALSE); + if (unlikely (status)) + return status; + + status = _cairo_pdf_operators_flush (&surface->pdf_operators); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, "q\n"); + status = _cairo_pdf_surface_paint_surface_pattern (surface, + (cairo_surface_pattern_t *) surface_pattern, + TRUE); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, "Q\n"); + + _cairo_surface_release_source_image (surface_pattern->surface, image, image_extra); + status = _cairo_output_stream_get_status (surface->output); + +cleanup: + _cairo_surface_release_source_image (surface_pattern->surface, image, image_extra); + + return status; +} + + static cairo_int_status_t _cairo_pdf_surface_paint (void *abstract_surface, cairo_operator_t op, @@ -5457,7 +5800,8 @@ _cairo_pdf_surface_paint (void *abstract_surface, { _cairo_output_stream_printf (surface->output, "q\n"); status = _cairo_pdf_surface_paint_surface_pattern (surface, - (cairo_surface_pattern_t *) source); + (cairo_surface_pattern_t *) source, + FALSE); if (unlikely (status)) return status; @@ -5524,7 +5868,7 @@ _cairo_pdf_surface_paint (void *abstract_surface, } static cairo_int_status_t -_cairo_pdf_surface_mask (void *abstract_surface, +_cairo_pdf_surface_mask (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, @@ -5575,6 +5919,15 @@ _cairo_pdf_surface_mask (void *abstract_surface, if (unlikely (status)) return status; + status = _cairo_pdf_surface_select_operator (surface, op); + if (unlikely (status)) + return status; + + /* Check if we can use a stencil mask */ + status = _cairo_pdf_surface_emit_stencil_mask (surface, source, mask); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; + group = _cairo_pdf_surface_create_smask_group (surface); if (unlikely (group == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -5614,10 +5967,6 @@ _cairo_pdf_surface_mask (void *abstract_surface, if (unlikely (status)) return status; - status = _cairo_pdf_surface_select_operator (surface, op); - if (unlikely (status)) - return status; - _cairo_output_stream_printf (surface->output, "q /s%d gs /x%d Do Q\n", group->group_res.id, @@ -5829,7 +6178,8 @@ _cairo_pdf_surface_fill (void *abstract_surface, return status; status = _cairo_pdf_surface_paint_surface_pattern (surface, - (cairo_surface_pattern_t *) source); + (cairo_surface_pattern_t *) source, + FALSE); if (unlikely (status)) return status; @@ -5927,7 +6277,7 @@ _cairo_pdf_surface_fill_stroke (void *abstract_surface, cairo_pdf_surface_t *surface = abstract_surface; cairo_status_t status; cairo_pdf_resource_t fill_pattern_res, stroke_pattern_res, gstate_res; - cairo_rectangle_int_t extents; + cairo_composite_rectangles_t extents; /* During analysis we return unsupported and let the _fill and * _stroke functions that are on the fallback path do the analysis @@ -5959,18 +6309,32 @@ _cairo_pdf_surface_fill_stroke (void *abstract_surface, if (unlikely (status)) return status; - status = _cairo_surface_fill_extents (&surface->base, - fill_op, fill_source, path, fill_rule, - fill_tolerance, fill_antialias, - clip, &extents); - if (unlikely (status)) - return status; + status = _cairo_composite_rectangles_init_for_fill (&extents, + surface->width, + surface->height, + fill_op, fill_source, path, + clip); + if (unlikely (status)) { + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + return status; + } + /* use the more accurate extents */ + if (extents.is_bounded) { + cairo_bool_t is_empty; + + _cairo_path_fixed_fill_extents (path, + fill_rule, + fill_tolerance, + &extents.mask); + + is_empty = ! _cairo_rectangle_intersect (&extents.bounded, &extents.mask); + } fill_pattern_res.id = 0; gstate_res.id = 0; status = _cairo_pdf_surface_add_pdf_pattern (surface, fill_source, - &extents, + &extents.bounded, &fill_pattern_res, &gstate_res); if (unlikely (status)) @@ -5978,19 +6342,36 @@ _cairo_pdf_surface_fill_stroke (void *abstract_surface, assert (gstate_res.id == 0); - status = _cairo_surface_stroke_extents (&surface->base, - stroke_op, stroke_source, path, - stroke_style, stroke_ctm, stroke_ctm_inverse, - stroke_tolerance, stroke_antialias, - clip, &extents); - if (unlikely (status)) - return status; + status = _cairo_composite_rectangles_init_for_stroke (&extents, + surface->width, + surface->height, + stroke_op, stroke_source, + path, stroke_style, stroke_ctm, + clip); + if (unlikely (status)) { + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + return status; + } + + /* use the more accurate extents */ + if (extents.is_bounded) { + cairo_bool_t is_empty; + + status = _cairo_path_fixed_stroke_extents (path, stroke_style, + stroke_ctm, stroke_ctm_inverse, + stroke_tolerance, + &extents.mask); + if (unlikely (status)) + return status; + + is_empty = ! _cairo_rectangle_intersect (&extents.bounded, &extents.mask); + } stroke_pattern_res.id = 0; gstate_res.id = 0; status = _cairo_pdf_surface_add_pdf_pattern (surface, stroke_source, - &extents, + &extents.bounded, &stroke_pattern_res, &gstate_res); if (unlikely (status)) diff --git a/src/cairo-png.c b/src/cairo-png.c index 41a33d7..f5c7cb5 100644 --- a/src/cairo-png.c +++ b/src/cairo-png.c @@ -53,6 +53,14 @@ * * The PNG functions allow reading PNG images into image surfaces, and writing * any surface to a PNG file. + * + * It is a toy API. It only offers very simple support for reading and + * writing PNG files, which is sufficient for testing and + * demonstration purposes. Applications which need more control over + * the generated PNG file should access the pixel data directly, using + * cairo_image_surface_get_data() or a backend-specific access + * function, and process it with another library, e.g. gdk-pixbuf or + * libpng. */ /** diff --git a/src/cairo-polygon.c b/src/cairo-polygon.c index 64fef47..c3f3631 100644 --- a/src/cairo-polygon.c +++ b/src/cairo-polygon.c @@ -1,3 +1,4 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ /* cairo - a vector graphics library with display and print output * * Copyright © 2002 University of Southern California @@ -37,11 +38,14 @@ #include "cairoint.h" #include "cairo-error-private.h" -#include "cairo-slope-private.h" void -_cairo_polygon_init (cairo_polygon_t *polygon) +_cairo_polygon_init (cairo_polygon_t *polygon, + const cairo_box_t *limits, + int num_limits) { + int n; + VG (VALGRIND_MAKE_MEM_UNDEFINED (polygon, sizeof (cairo_polygon_t))); polygon->status = CAIRO_STATUS_SUCCESS; @@ -51,20 +55,8 @@ _cairo_polygon_init (cairo_polygon_t *polygon) polygon->edges = polygon->edges_embedded; polygon->edges_size = ARRAY_LENGTH (polygon->edges_embedded); - polygon->has_current_point = FALSE; - polygon->has_current_edge = FALSE; - polygon->num_limits = 0; - polygon->extents.p1.x = polygon->extents.p1.y = INT32_MAX; polygon->extents.p2.x = polygon->extents.p2.y = INT32_MIN; -} - -void -_cairo_polygon_limit (cairo_polygon_t *polygon, - const cairo_box_t *limits, - int num_limits) -{ - int n; polygon->limits = limits; polygon->num_limits = num_limits; @@ -408,88 +400,3 @@ _cairo_polygon_add_line (cairo_polygon_t *polygon, return polygon->status; } - -/* flattened path operations */ - -cairo_status_t -_cairo_polygon_move_to (cairo_polygon_t *polygon, - const cairo_point_t *point) -{ - if (polygon->has_current_edge) { - _cairo_polygon_add_edge (polygon, - &polygon->last_point, - &polygon->current_point); - polygon->has_current_edge = FALSE; - } - - if (! polygon->has_current_point) { - polygon->first_point = *point; - polygon->has_current_point = TRUE; - } - - polygon->current_point = *point; - return polygon->status; -} - -cairo_status_t -_cairo_polygon_line_to (cairo_polygon_t *polygon, - const cairo_point_t *point) -{ - /* squash collinear edges */ - if (polygon->has_current_edge) { - if (polygon->current_point.x != point->x || - polygon->current_point.y != point->y) - { - cairo_slope_t this; - - _cairo_slope_init (&this, &polygon->current_point, point); - if (_cairo_slope_equal (&polygon->current_edge, &this)) { - polygon->current_point = *point; - return CAIRO_STATUS_SUCCESS; - } - - _cairo_polygon_add_edge (polygon, - &polygon->last_point, - &polygon->current_point); - - polygon->last_point = polygon->current_point; - polygon->current_edge = this; - } - } else if (polygon->has_current_point) { - if (polygon->current_point.x != point->x || - polygon->current_point.y != point->y) - { - polygon->last_point = polygon->current_point; - _cairo_slope_init (&polygon->current_edge, - &polygon->last_point, - point); - polygon->has_current_edge = TRUE; - } - } else { - polygon->first_point = *point; - polygon->has_current_point = TRUE; - } - - polygon->current_point = *point; - return polygon->status; -} - -cairo_status_t -_cairo_polygon_close (cairo_polygon_t *polygon) -{ - cairo_status_t status; - - if (polygon->has_current_point) { - status = _cairo_polygon_line_to (polygon, &polygon->first_point); - polygon->has_current_point = FALSE; - } - - if (polygon->has_current_edge) { - _cairo_polygon_add_edge (polygon, - &polygon->last_point, - &polygon->current_point); - polygon->has_current_edge = FALSE; - } - - return polygon->status; -} diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c index 4ae1aee..ef53dd1 100644 --- a/src/cairo-ps-surface.c +++ b/src/cairo-ps-surface.c @@ -58,6 +58,7 @@ #include "cairo-ps.h" #include "cairo-ps-surface-private.h" #include "cairo-pdf-operators-private.h" +#include "cairo-pdf-shading-private.h" #include "cairo-composite-rectangles-private.h" #include "cairo-error-private.h" #include "cairo-scaled-font-subsets-private.h" @@ -169,6 +170,7 @@ _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface) int i, num_comments; int level; const char *eps_header = ""; + cairo_bool_t has_bbox; if (surface->has_creation_date) now = surface->creation_date; @@ -187,16 +189,11 @@ _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface) "%%!PS-Adobe-3.0%s\n" "%%%%Creator: cairo %s (http://cairographics.org)\n" "%%%%CreationDate: %s" - "%%%%Pages: %d\n" - "%%%%BoundingBox: %d %d %d %d\n", + "%%%%Pages: %d\n", eps_header, cairo_version_string (), ctime_r (&now, ctime_buf), - surface->num_pages, - surface->bbox_x1, - surface->bbox_y1, - surface->bbox_x2, - surface->bbox_y2); + surface->num_pages); _cairo_output_stream_printf (surface->final_stream, "%%%%DocumentData: Clean7Bit\n" @@ -224,15 +221,28 @@ _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface) } } + has_bbox = FALSE; num_comments = _cairo_array_num_elements (&surface->dsc_header_comments); comments = _cairo_array_index (&surface->dsc_header_comments, 0); for (i = 0; i < num_comments; i++) { _cairo_output_stream_printf (surface->final_stream, "%s\n", comments[i]); + if (strncmp (comments[i], "%%BoundingBox:", 14) == 0) + has_bbox = TRUE; + free (comments[i]); comments[i] = NULL; } + if (!has_bbox) { + _cairo_output_stream_printf (surface->final_stream, + "%%%%BoundingBox: %d %d %d %d\n", + surface->bbox_x1, + surface->bbox_y1, + surface->bbox_x2, + surface->bbox_y2); + } + _cairo_output_stream_printf (surface->final_stream, "%%%%EndComments\n"); @@ -402,7 +412,7 @@ _cairo_ps_surface_emit_truetype_font_subset (cairo_ps_surface_t *surface, cairo_status_t status; unsigned int i, begin, end; - status = _cairo_truetype_subset_init (&subset, font_subset); + status = _cairo_truetype_subset_init_ps (&subset, font_subset); if (unlikely (status)) return status; @@ -426,14 +436,29 @@ _cairo_ps_surface_emit_truetype_font_subset (cairo_ps_surface_t *surface, /* FIXME: Figure out how subset->x_max etc maps to the /FontBBox */ - for (i = 1; i < font_subset->num_glyphs; i++) { - if (font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /%s put\n", - i, font_subset->glyph_names[i]); - } else { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /g%d put\n", i, i); + if (font_subset->is_latin) { + for (i = 1; i < 256; i++) { + if (font_subset->latin_to_subset_glyph_index[i] > 0) { + if (font_subset->glyph_names != NULL) { + _cairo_output_stream_printf (surface->final_stream, + "Encoding %d /%s put\n", + i, font_subset->glyph_names[font_subset->latin_to_subset_glyph_index[i]]); + } else { + _cairo_output_stream_printf (surface->final_stream, + "Encoding %d /g%ld put\n", i, font_subset->latin_to_subset_glyph_index[i]); + } + } + } + } else { + for (i = 1; i < font_subset->num_glyphs; i++) { + if (font_subset->glyph_names != NULL) { + _cairo_output_stream_printf (surface->final_stream, + "Encoding %d /%s put\n", + i, font_subset->glyph_names[i]); + } else { + _cairo_output_stream_printf (surface->final_stream, + "Encoding %d /g%d put\n", i, i); + } } } @@ -956,6 +981,7 @@ _cairo_ps_surface_create_for_stream_internal (cairo_output_stream_t *stream, goto CLEANUP_OUTPUT_STREAM; } + _cairo_scaled_font_subsets_enable_latin_subset (surface->font_subsets, TRUE); surface->has_creation_date = FALSE; surface->eps = FALSE; surface->ps_level = CAIRO_PS_LEVEL_3; @@ -1330,12 +1356,12 @@ cairo_ps_surface_set_size (cairo_surface_t *surface, * The comment is expected to conform to the PostScript Language * Document Structuring Conventions (DSC). Please see that manual for * details on the available comments and their meanings. In - * particular, the %%IncludeFeature comment allows a + * particular, the \%\%IncludeFeature comment allows a * device-independent means of controlling printer device features. So * the PostScript Printer Description Files Specification will also be * a useful reference. * - * The comment string must begin with a percent character (%) and the + * The comment string must begin with a percent character (\%) and the * total length of the string (including any initial percent * characters) must not exceed 255 characters. Violating either of * these conditions will place @surface into an error state. But @@ -1353,40 +1379,41 @@ cairo_ps_surface_set_size (cairo_surface_t *surface, * * For comments to appear in the header section, this function should * be called after the surface is created, but before a call to - * cairo_ps_surface_begin_setup(). + * cairo_ps_surface_dsc_begin_setup(). * * For comments to appear in the Setup section, this function should - * be called after a call to cairo_ps_surface_begin_setup() but before - * a call to cairo_ps_surface_begin_page_setup(). + * be called after a call to cairo_ps_surface_dsc_begin_setup() but + * before a call to cairo_ps_surface_dsc_begin_page_setup(). * * For comments to appear in the PageSetup section, this function - * should be called after a call to cairo_ps_surface_begin_page_setup(). + * should be called after a call to + * cairo_ps_surface_dsc_begin_page_setup(). * - * Note that it is only necessary to call cairo_ps_surface_begin_page_setup() - * for the first page of any surface. After a call to - * cairo_show_page() or cairo_copy_page() comments are unambiguously - * directed to the PageSetup section of the current page. But it - * doesn't hurt to call this function at the beginning of every page - * as that consistency may make the calling code simpler. + * Note that it is only necessary to call + * cairo_ps_surface_dsc_begin_page_setup() for the first page of any + * surface. After a call to cairo_show_page() or cairo_copy_page() + * comments are unambiguously directed to the PageSetup section of the + * current page. But it doesn't hurt to call this function at the + * beginning of every page as that consistency may make the calling + * code simpler. * * As a final note, cairo automatically generates several comments on * its own. As such, applications must not manually generate any of * the following comments: * - * Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, - * %%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments. + * Header section: \%!PS-Adobe-3.0, \%\%Creator, \%\%CreationDate, \%\%Pages, + * \%\%BoundingBox, \%\%DocumentData, \%\%LanguageLevel, \%\%EndComments. * - * Setup section: %%BeginSetup, %%EndSetup + * Setup section: \%\%BeginSetup, \%\%EndSetup * - * PageSetup section: %%BeginPageSetup, %%PageBoundingBox, - * %%EndPageSetup. + * PageSetup section: \%\%BeginPageSetup, \%\%PageBoundingBox, \%\%EndPageSetup. * - * Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF + * Other sections: \%\%BeginProlog, \%\%EndProlog, \%\%Page, \%\%Trailer, \%\%EOF * * Here is an example sequence showing how this function might be used: * * - * #cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); + * cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); * ... * cairo_ps_surface_dsc_comment (surface, "%%Title: My excellent document"); * cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Cairo Lover") @@ -1700,50 +1727,16 @@ static cairo_bool_t _gradient_pattern_supported (cairo_ps_surface_t *surface, const cairo_pattern_t *pattern) { - const cairo_gradient_pattern_t *gradient = (const cairo_gradient_pattern_t *) pattern; - uint16_t alpha; - cairo_extend_t extend; - unsigned int i; + double min_alpha, max_alpha; if (surface->ps_level == CAIRO_PS_LEVEL_2) return FALSE; - if (gradient->n_stops == 0) - return TRUE; - /* Alpha gradients are only supported (by flattening the alpha) * if there is no variation in the alpha across the gradient. */ - alpha = gradient->stops[0].color.alpha_short; - for (i = 0; i < gradient->n_stops; i++) { - if (gradient->stops[i].color.alpha_short != alpha) - return FALSE; - } - - extend = cairo_pattern_get_extend ((cairo_pattern_t *) pattern); - - /* Radial gradients are currently only supported when one circle - * is inside the other. */ - if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { - double x1, y1, x2, y2, r1, r2, d; - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - - if (extend == CAIRO_EXTEND_REPEAT || - extend == CAIRO_EXTEND_REFLECT) { - return FALSE; - } - - x1 = _cairo_fixed_to_double (radial->c1.x); - y1 = _cairo_fixed_to_double (radial->c1.y); - r1 = _cairo_fixed_to_double (radial->r1); - x2 = _cairo_fixed_to_double (radial->c2.x); - y2 = _cairo_fixed_to_double (radial->c2.y); - r2 = _cairo_fixed_to_double (radial->r2); - - d = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - if (d > fabs(r2 - r1)) { - return FALSE; - } - } + _cairo_pattern_alpha_range (pattern, &min_alpha, &max_alpha); + if (min_alpha != max_alpha) + return FALSE; surface->ps_level_used = CAIRO_PS_LEVEL_3; @@ -1753,17 +1746,22 @@ _gradient_pattern_supported (cairo_ps_surface_t *surface, static cairo_bool_t pattern_supported (cairo_ps_surface_t *surface, const cairo_pattern_t *pattern) { - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SOLID: return TRUE; - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: return _gradient_pattern_supported (surface, pattern); - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) + case CAIRO_PATTERN_TYPE_SURFACE: return surface_pattern_supported ((cairo_surface_pattern_t *) pattern); - return FALSE; + default: + ASSERT_NOT_REACHED; + return FALSE; + } } static cairo_int_status_t @@ -1772,6 +1770,8 @@ _cairo_ps_surface_analyze_operation (cairo_ps_surface_t *surface, const cairo_pattern_t *pattern, const cairo_rectangle_int_t *extents) { + double min_alpha; + if (surface->force_fallbacks && surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { @@ -1816,7 +1816,11 @@ _cairo_ps_surface_analyze_operation (cairo_ps_surface_t *surface, surface_pattern); } - if (_cairo_pattern_is_opaque (pattern, extents)) + /* Patterns whose drawn part is opaque are directly supported; + those whose drawn part is partially transparent can be + supported by flattening the alpha. */ + _cairo_pattern_alpha_range (pattern, &min_alpha, NULL); + if (CAIRO_ALPHA_IS_OPAQUE (min_alpha)) return CAIRO_STATUS_SUCCESS; return CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; @@ -3111,7 +3115,8 @@ _cairo_ps_surface_emit_pattern_stops (cairo_ps_surface_t *surface, } if (pattern->base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.extend == CAIRO_EXTEND_REFLECT) { + pattern->base.extend == CAIRO_EXTEND_REFLECT) + { if (stops[0].offset > COLOR_STOP_EPSILON) { if (pattern->base.extend == CAIRO_EXTEND_REFLECT) memcpy (allstops, stops, sizeof (cairo_ps_color_stop_t)); @@ -3153,16 +3158,40 @@ _cairo_ps_surface_emit_pattern_stops (cairo_ps_surface_t *surface, _cairo_output_stream_printf (surface->stream, "/CairoFunction\n"); - if (n_stops == 1) { - /* work around single stop gradients */ - _cairo_ps_surface_emit_linear_colorgradient (surface, &stops[0], &stops[0]); + if (stops[0].offset == stops[n_stops - 1].offset) { + /* + * The first and the last stops have the same offset, but we + * don't want a function with an empty domain, because that + * would provoke underdefined behaviour from rasterisers. + * This can only happen with EXTEND_PAD, because EXTEND_NONE + * is optimised into a clear pattern in cairo-gstate, and + * REFLECT/REPEAT are always transformed to have the first + * stop at t=0 and the last stop at t=1. Thus we want a step + * function going from the first color to the last one. + * + * This can be accomplished by stitching three functions: + * - a constant first color function, + * - a step from the first color to the last color (with empty domain) + * - a constant last color function + */ + cairo_ps_color_stop_t pad_stops[4]; + + assert (pattern->base.extend == CAIRO_EXTEND_PAD); + + pad_stops[0] = pad_stops[1] = stops[0]; + pad_stops[2] = pad_stops[3] = stops[n_stops - 1]; + + pad_stops[0].offset = 0; + pad_stops[3].offset = 1; + + _cairo_ps_surface_emit_stitched_colorgradient (surface, 4, pad_stops); } else if (n_stops == 2) { /* no need for stitched function */ _cairo_ps_surface_emit_linear_colorgradient (surface, &stops[0], &stops[1]); } else { /* multiple stops: stitch. XXX possible optimization: regulary spaced * stops do not require stitching. XXX */ - _cairo_ps_surface_emit_stitched_colorgradient (surface, n_stops,stops); + _cairo_ps_surface_emit_stitched_colorgradient (surface, n_stops, stops); } _cairo_output_stream_printf (surface->stream, "def\n"); @@ -3206,112 +3235,130 @@ _cairo_ps_surface_emit_repeating_function (cairo_ps_surface_t *surface, } static cairo_status_t -_cairo_ps_surface_emit_linear_pattern (cairo_ps_surface_t *surface, - cairo_linear_pattern_t *pattern) +_cairo_ps_surface_emit_gradient (cairo_ps_surface_t *surface, + cairo_gradient_pattern_t *pattern) { - double x1, y1, x2, y2; - double _x1, _y1, _x2, _y2; cairo_matrix_t pat_to_ps; - cairo_extend_t extend; + cairo_circle_double_t start, end; + double domain[2]; cairo_status_t status; - cairo_gradient_pattern_t *gradient = &pattern->base; - double first_stop, last_stop; - int repeat_begin = 0, repeat_end = 1; - extend = cairo_pattern_get_extend (&pattern->base.base); + assert (pattern->n_stops != 0); - pat_to_ps = pattern->base.base.matrix; + status = _cairo_ps_surface_emit_pattern_stops (surface, pattern); + if (unlikely (status)) + return status; + + pat_to_ps = pattern->base.matrix; status = cairo_matrix_invert (&pat_to_ps); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&pat_to_ps, &pat_to_ps, &surface->cairo_to_ps); - first_stop = gradient->stops[0].offset; - last_stop = gradient->stops[gradient->n_stops - 1].offset; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - double dx, dy; - int x_rep = 0, y_rep = 0; - - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - cairo_matrix_transform_point (&pat_to_ps, &x1, &y1); - - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - cairo_matrix_transform_point (&pat_to_ps, &x2, &y2); - - dx = fabs (x2 - x1); - dy = fabs (y2 - y1); - if (dx > 1e-6) - x_rep = ceil (surface->width/dx); - if (dy > 1e-6) - y_rep = ceil (surface->height/dy); - - repeat_end = MAX (x_rep, y_rep); - repeat_begin = -repeat_end; - first_stop = repeat_begin; - last_stop = repeat_end; - } - - /* PS requires the first and last stop to be the same as the line - * coordinates. For repeating patterns this moves the line - * coordinates out to the begin/end of the repeating function. For - * non repeating patterns this may move the line coordinates in if - * there are not stops at offset 0 and 1. */ - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - - _x1 = x1 + (x2 - x1)*first_stop; - _y1 = y1 + (y2 - y1)*first_stop; - _x2 = x1 + (x2 - x1)*last_stop; - _y2 = y1 + (y2 - y1)*last_stop; - - x1 = _x1; - x2 = _x2; - y1 = _y1; - y2 = _y2; - - /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a - * Type 2 function is used by itself without a stitching - * function. Type 2 functions always have the domain [0 1] */ - if ((pattern->base.base.extend == CAIRO_EXTEND_NONE || - pattern->base.base.extend == CAIRO_EXTEND_PAD) && - gradient->n_stops == 2) { - first_stop = 0.0; - last_stop = 1.0; - } - - status = _cairo_ps_surface_emit_pattern_stops (surface, - &pattern->base); - if (unlikely (status)) - return status; - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { + if (pattern->base.extend == CAIRO_EXTEND_REPEAT || + pattern->base.extend == CAIRO_EXTEND_REFLECT) + { + double bounds_x1, bounds_x2, bounds_y1, bounds_y2; + double x_scale, y_scale, tolerance; + + /* TODO: use tighter extents */ + bounds_x1 = 0; + bounds_y1 = 0; + bounds_x2 = surface->width; + bounds_y2 = surface->height; + _cairo_matrix_transform_bounding_box (&pattern->base.matrix, + &bounds_x1, &bounds_y1, + &bounds_x2, &bounds_y2, + NULL); + + x_scale = surface->base.x_resolution / surface->base.x_fallback_resolution; + y_scale = surface->base.y_resolution / surface->base.y_fallback_resolution; + + tolerance = fabs (_cairo_matrix_compute_determinant (&pattern->base.matrix)); + tolerance /= _cairo_matrix_transformed_circle_major_axis (&pattern->base.matrix, 1); + tolerance *= MIN (x_scale, y_scale); + + _cairo_gradient_pattern_box_to_parameter (pattern, + bounds_x1, bounds_y1, + bounds_x2, bounds_y2, + tolerance, domain); + } else if (pattern->stops[0].offset == pattern->stops[pattern->n_stops - 1].offset) { + /* + * If the first and the last stop offset are the same, then + * the color function is a step function. + * _cairo_ps_surface_emit_pattern_stops emits it as a stitched + * function no matter how many stops the pattern has. The + * domain of the stitched function will be [0 1] in this case. + * + * This is done to avoid emitting degenerate gradients for + * EXTEND_PAD patterns having a step color function. + */ + domain[0] = 0.0; + domain[1] = 1.0; + + assert (pattern->base.extend == CAIRO_EXTEND_PAD); + } else { + domain[0] = pattern->stops[0].offset; + domain[1] = pattern->stops[pattern->n_stops - 1].offset; + } + + /* PS requires the first and last stop to be the same as the + * extreme coordinates. For repeating patterns this moves the + * extreme coordinates out to the begin/end of the repeating + * function. For non repeating patterns this may move the extreme + * coordinates in if there are not stops at offset 0 and 1. */ + _cairo_gradient_pattern_interpolate (pattern, domain[0], &start); + _cairo_gradient_pattern_interpolate (pattern, domain[1], &end); + + if (pattern->base.extend == CAIRO_EXTEND_REPEAT || + pattern->base.extend == CAIRO_EXTEND_REFLECT) + { + int repeat_begin, repeat_end; + + repeat_begin = floor (domain[0]); + repeat_end = ceil (domain[1]); + status = _cairo_ps_surface_emit_repeating_function (surface, - &pattern->base, + pattern, repeat_begin, repeat_end); if (unlikely (status)) return status; + } else if (pattern->n_stops <= 2) { + /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a + * Type 2 function is used by itself without a stitching + * function. Type 2 functions always have the domain [0 1] */ + domain[0] = 0.0; + domain[1] = 1.0; + } + + if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) { + _cairo_output_stream_printf (surface->stream, + "<< /PatternType 2\n" + " /Shading\n" + " << /ShadingType 2\n" + " /ColorSpace /DeviceRGB\n" + " /Coords [ %f %f %f %f ]\n", + start.center.x, start.center.y, + end.center.x, end.center.y); + } else { + _cairo_output_stream_printf (surface->stream, + "<< /PatternType 2\n" + " /Shading\n" + " << /ShadingType 3\n" + " /ColorSpace /DeviceRGB\n" + " /Coords [ %f %f %f %f %f %f ]\n", + start.center.x, start.center.y, + MAX (start.radius, 0), + end.center.x, end.center.y, + MAX (end.radius, 0)); } _cairo_output_stream_printf (surface->stream, - "<< /PatternType 2\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\n" - " /Function CairoFunction\n", - x1, y1, x2, y2, - first_stop, last_stop); + " /Domain [ %f %f ]\n", + domain[0], domain[1]); - if (extend == CAIRO_EXTEND_PAD) { + if (pattern->base.extend != CAIRO_EXTEND_NONE) { _cairo_output_stream_printf (surface->stream, " /Extend [ true true ]\n"); } else { @@ -3320,65 +3367,63 @@ _cairo_ps_surface_emit_linear_pattern (cairo_ps_surface_t *surface, } _cairo_output_stream_printf (surface->stream, + " /Function CairoFunction\n" " >>\n" - ">>\n"); - _cairo_output_stream_printf (surface->stream, - "[ %f %f %f %f %f %f ]\n", + ">>\n" + "[ %f %f %f %f %f %f ]\n" + "makepattern setpattern\n", pat_to_ps.xx, pat_to_ps.yx, pat_to_ps.xy, pat_to_ps.yy, pat_to_ps.x0, pat_to_ps.y0); - _cairo_output_stream_printf (surface->stream, - "makepattern setpattern\n"); return status; } static cairo_status_t -_cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface, - cairo_radial_pattern_t *pattern) +_cairo_ps_surface_emit_mesh_pattern (cairo_ps_surface_t *surface, + cairo_mesh_pattern_t *pattern) { - double x1, y1, x2, y2, r1, r2; cairo_matrix_t pat_to_ps; - cairo_extend_t extend; cairo_status_t status; + cairo_pdf_shading_t shading; + unsigned char *data_compressed; + unsigned long data_compressed_size; + int i; - extend = cairo_pattern_get_extend (&pattern->base.base); + if (_cairo_array_num_elements (&pattern->patches) == 0) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - pat_to_ps = pattern->base.base.matrix; + pat_to_ps = pattern->base.matrix; status = cairo_matrix_invert (&pat_to_ps); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); cairo_matrix_multiply (&pat_to_ps, &pat_to_ps, &surface->cairo_to_ps); - x1 = _cairo_fixed_to_double (pattern->c1.x); - y1 = _cairo_fixed_to_double (pattern->c1.y); - r1 = _cairo_fixed_to_double (pattern->r1); - x2 = _cairo_fixed_to_double (pattern->c2.x); - y2 = _cairo_fixed_to_double (pattern->c2.y); - r2 = _cairo_fixed_to_double (pattern->r2); - - status = _cairo_ps_surface_emit_pattern_stops (surface, &pattern->base); - if (unlikely (status)) - return status; - - _cairo_output_stream_printf (surface->stream, + + status = _cairo_pdf_shading_init_color (&shading, pattern); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->stream, "<< /PatternType 2\n" " /Shading\n" - " << /ShadingType 3\n" + " << /ShadingType %d\n" " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function CairoFunction\n", - x1, y1, r1, x2, y2, r2); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->stream, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->stream, - " /Extend [ false false ]\n"); - } + " /DataSource currentfile /ASCII85Decode filter /LZWDecode filter\n" + " /BitsPerCoordinate %d\n" + " /BitsPerComponent %d\n" + " /BitsPerFlag %d\n" + " /Decode [", + shading.shading_type, + shading.bits_per_coordinate, + shading.bits_per_component, + shading.bits_per_flag); + + for (i = 0; i < shading.decode_array_length; i++) + _cairo_output_stream_printf (surface->stream, "%f ", shading.decode_array[i]); _cairo_output_stream_printf (surface->stream, + "]\n" " >>\n" ">>\n"); @@ -3388,7 +3433,23 @@ _cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface, pat_to_ps.xy, pat_to_ps.yy, pat_to_ps.x0, pat_to_ps.y0); _cairo_output_stream_printf (surface->stream, - "makepattern setpattern\n"); + "makepattern\n"); + + data_compressed_size = shading.data_length; + data_compressed = _cairo_lzw_compress (shading.data, &data_compressed_size); + if (unlikely (data_compressed == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_ps_surface_emit_base85_string (surface, + data_compressed, + data_compressed_size, + FALSE); + _cairo_output_stream_printf (surface->stream, + "\n" + "setpattern\n"); + + free (data_compressed); + _cairo_pdf_shading_fini (&shading); return status; } @@ -3445,15 +3506,16 @@ _cairo_ps_surface_emit_pattern (cairo_ps_surface_t *surface, break; case CAIRO_PATTERN_TYPE_LINEAR: - status = _cairo_ps_surface_emit_linear_pattern (surface, - (cairo_linear_pattern_t *) pattern); + case CAIRO_PATTERN_TYPE_RADIAL: + status = _cairo_ps_surface_emit_gradient (surface, + (cairo_gradient_pattern_t *) pattern); if (unlikely (status)) return status; break; - case CAIRO_PATTERN_TYPE_RADIAL: - status = _cairo_ps_surface_emit_radial_pattern (surface, - (cairo_radial_pattern_t *) pattern); + case CAIRO_PATTERN_TYPE_MESH: + status = _cairo_ps_surface_emit_mesh_pattern (surface, + (cairo_mesh_pattern_t *) pattern); if (unlikely (status)) return status; break; @@ -3490,6 +3552,7 @@ _cairo_ps_surface_get_font_options (void *abstract_surface, cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_OFF); } static cairo_int_status_t @@ -3776,7 +3839,7 @@ _cairo_ps_surface_set_bounding_box (void *abstract_surface, int i, num_comments; char **comments; int x1, y1, x2, y2; - cairo_bool_t has_page_media; + cairo_bool_t has_page_media, has_page_bbox; const char *page_media; if (surface->eps) { @@ -3805,6 +3868,7 @@ _cairo_ps_surface_set_bounding_box (void *abstract_surface, "%%%%BeginPageSetup\n"); has_page_media = FALSE; + has_page_bbox = FALSE; num_comments = _cairo_array_num_elements (&surface->dsc_page_setup_comments); comments = _cairo_array_index (&surface->dsc_page_setup_comments, 0); for (i = 0; i < num_comments; i++) { @@ -3812,6 +3876,10 @@ _cairo_ps_surface_set_bounding_box (void *abstract_surface, "%s\n", comments[i]); if (strncmp (comments[i], "%%PageMedia:", 11) == 0) has_page_media = TRUE; + + if (strncmp (comments[i], "%%PageBoundingBox:", 18) == 0) + has_page_bbox = TRUE; + free (comments[i]); comments[i] = NULL; } @@ -3827,9 +3895,11 @@ _cairo_ps_surface_set_bounding_box (void *abstract_surface, page_media); } - _cairo_output_stream_printf (surface->stream, - "%%%%PageBoundingBox: %d %d %d %d\n", - x1, y1, x2, y2); + if (!has_page_bbox) { + _cairo_output_stream_printf (surface->stream, + "%%%%PageBoundingBox: %d %d %d %d\n", + x1, y1, x2, y2); + } _cairo_output_stream_printf (surface->stream, "%%%%EndPageSetup\n" diff --git a/src/cairo-qt-surface.cpp b/src/cairo-qt-surface.cpp index 5b61b42..25ee9e9 100644 --- a/src/cairo-qt-surface.cpp +++ b/src/cairo-qt-surface.cpp @@ -391,7 +391,6 @@ path_to_qt (cairo_path_fixed_t *path, data.ctm_inverse = ctm_inverse; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_path_to_qpainterpath_move_to, _cairo_path_to_qpainterpath_line_to, _cairo_path_to_qpainterpath_curve_to, @@ -871,40 +870,34 @@ struct PatternToBrushConverter { if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR) { cairo_linear_pattern_t *lpat = (cairo_linear_pattern_t *) pattern; - grad = new QLinearGradient (_cairo_fixed_to_double (lpat->p1.x), - _cairo_fixed_to_double (lpat->p1.y), - _cairo_fixed_to_double (lpat->p2.x), - _cairo_fixed_to_double (lpat->p2.y)); + grad = new QLinearGradient (lpat->pd1.x, lpat->pd1.y, + lpat->pd2.x, lpat->pd2.y); } else if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { cairo_radial_pattern_t *rpat = (cairo_radial_pattern_t *) pattern; /* Based on the SVG surface code */ - cairo_point_t *c0, *c1; - cairo_fixed_t radius0, radius1; + cairo_circle_double_t *c0, *c1; + double x0, y0, r0, x1, y1, r1; - if (rpat->r1 < rpat->r2) { - c0 = &rpat->c1; - c1 = &rpat->c2; - radius0 = rpat->r1; - radius1 = rpat->r2; + if (rpat->cd1.radius < rpat->cd2.radius) { + c0 = &rpat->cd1; + c1 = &rpat->cd2; reverse_stops = FALSE; } else { - c0 = &rpat->c2; - c1 = &rpat->c1; - radius0 = rpat->r2; - radius1 = rpat->r1; + c0 = &rpat->cd2; + c1 = &rpat->cd1; reverse_stops = TRUE; } - double x0 = _cairo_fixed_to_double (c0->x); - double y0 = _cairo_fixed_to_double (c0->y); - double r0 = _cairo_fixed_to_double (radius0); - double x1 = _cairo_fixed_to_double (c1->x); - double y1 = _cairo_fixed_to_double (c1->y); - double r1 = _cairo_fixed_to_double (radius1); + x0 = c0->center.x; + y0 = c0->center.y; + r0 = c0->radius; + x1 = c1->center.x; + y1 = c1->center.y; + r1 = c1->radius; - if (rpat->r1 == rpat->r2) { + if (r0 == r1) { grad = new QRadialGradient (x1, y1, r1, x1, y1); } else { double fx = (r1 * x0 - r0 * x1) / (r1 - r0); diff --git a/src/cairo-quartz-font.c b/src/cairo-quartz-font.c index 2c7e017..75dda02 100644 --- a/src/cairo-quartz-font.c +++ b/src/cairo-quartz-font.c @@ -61,6 +61,8 @@ * This macro can be used to conditionally compile backend-specific code. */ +static CFDataRef (*CGFontCopyTableForTagPtr) (CGFontRef font, uint32_t tag) = NULL; + /* CreateWithFontName exists in 10.5, but not in 10.4; CreateWithName isn't public in 10.4 */ static CGFontRef (*CGFontCreateWithFontNamePtr) (CFStringRef) = NULL; static CGFontRef (*CGFontCreateWithNamePtr) (const char *) = NULL; @@ -99,6 +101,8 @@ quartz_font_ensure_symbols(void) if (_cairo_quartz_font_symbol_lookup_done) return; + CGFontCopyTableForTagPtr = dlsym(RTLD_DEFAULT, "CGFontCopyTableForTag"); + /* Look for the 10.5 versions first */ CGFontGetGlyphBBoxesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphBBoxes"); if (!CGFontGetGlyphBBoxesPtr) @@ -754,6 +758,39 @@ _cairo_quartz_ucs4_to_index (void *abstract_font, return glyph; } +static cairo_int_status_t +_cairo_quartz_load_truetype_table (void *abstract_font, + unsigned long tag, + long offset, + unsigned char *buffer, + unsigned long *length) +{ + cairo_quartz_font_face_t *font_face = _cairo_quartz_scaled_to_face (abstract_font); + CFDataRef data = NULL; + + if (likely (CGFontCopyTableForTagPtr)) + data = CGFontCopyTableForTagPtr (font_face->cgFont, tag); + + if (!data) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (buffer == NULL) { + *length = CFDataGetLength (data); + CFRelease (data); + return CAIRO_STATUS_SUCCESS; + } + + if (CFDataGetLength (data) < offset + (long) *length) { + CFRelease (data); + return CAIRO_INT_STATUS_UNSUPPORTED; + } + + CFDataGetBytes (data, CFRangeMake (offset, *length), buffer); + CFRelease (data); + + return CAIRO_STATUS_SUCCESS; +} + static const cairo_scaled_font_backend_t _cairo_quartz_scaled_font_backend = { CAIRO_FONT_TYPE_QUARTZ, _cairo_quartz_scaled_font_fini, @@ -761,7 +798,7 @@ static const cairo_scaled_font_backend_t _cairo_quartz_scaled_font_backend = { NULL, /* text_to_glyphs */ _cairo_quartz_ucs4_to_index, NULL, /* show_glyphs */ - NULL, /* load_truetype_table */ + _cairo_quartz_load_truetype_table, NULL, /* map_glyphs_to_unicode */ }; diff --git a/src/cairo-quartz-private.h b/src/cairo-quartz-private.h index 38f0d8f..beac884 100644 --- a/src/cairo-quartz-private.h +++ b/src/cairo-quartz-private.h @@ -50,6 +50,13 @@ typedef CGFloat cairo_quartz_float_t; typedef float cairo_quartz_float_t; #endif +typedef enum { + DO_DIRECT, + DO_SHADING, + DO_IMAGE, + DO_TILED_IMAGE +} cairo_quartz_action_t; + typedef struct cairo_quartz_surface { cairo_surface_t base; @@ -61,20 +68,7 @@ typedef struct cairo_quartz_surface { cairo_surface_clipper_t clipper; cairo_rectangle_int_t extents; - - /* These are stored while drawing operations are in place, set up - * by quartz_setup_source() and quartz_finish_source() - */ - CGAffineTransform sourceTransform; - - CGImageRef sourceImage; - cairo_surface_t *sourceImageSurface; - CGRect sourceImageRect; - - CGShadingRef sourceShading; - CGPatternRef sourcePattern; - - CGInterpolationQuality oldInterpolationQuality; + cairo_rectangle_int_t virtual_extents; } cairo_quartz_surface_t; typedef struct cairo_quartz_image_surface { diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c index 113674f..bb7be48 100644 --- a/src/cairo-quartz-surface.c +++ b/src/cairo-quartz-surface.c @@ -77,6 +77,7 @@ * This macro can be used to conditionally compile backend-specific code. */ +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050 /* This method is private, but it exists. Its params are are exposed * as args to the NS* method, but not as CG. */ @@ -97,35 +98,21 @@ enum PrivateCGCompositeMode { }; typedef enum PrivateCGCompositeMode PrivateCGCompositeMode; CG_EXTERN void CGContextSetCompositeOperation (CGContextRef, PrivateCGCompositeMode); -CG_EXTERN void CGContextSetCTM (CGContextRef, CGAffineTransform); - -/* We need to work with the 10.3 SDK as well (and 10.3 machines; luckily, 10.3.9 - * has all the stuff we care about, just some of it isn't exported in the SDK. - */ -#ifndef kCGBitmapByteOrder32Host -#define USE_10_3_WORKAROUNDS -#define kCGBitmapAlphaInfoMask 0x1F -#define kCGBitmapByteOrderMask 0x7000 -#define kCGBitmapByteOrder32Host 0 - -typedef uint32_t CGBitmapInfo; - -/* public in 10.4, present in 10.3.9 */ -CG_EXTERN void CGContextReplacePathWithStrokedPath (CGContextRef); -CG_EXTERN CGImageRef CGBitmapContextCreateImage (CGContextRef); #endif /* Some of these are present in earlier versions of the OS than where - * they are public; others are not public at all (CGContextCopyPath, - * CGContextReplacePathWithClipPath, many of the getters, etc.) + * they are public; other are not public at all */ -static void (*CGContextClipToMaskPtr) (CGContextRef, CGRect, CGImageRef) = NULL; +/* public since 10.5 */ static void (*CGContextDrawTiledImagePtr) (CGContextRef, CGRect, CGImageRef) = NULL; -static unsigned int (*CGContextGetTypePtr) (CGContextRef) = NULL; -static void (*CGContextSetShouldAntialiasFontsPtr) (CGContextRef, bool) = NULL; + +/* public since 10.6 */ +static CGPathRef (*CGContextCopyPathPtr) (CGContextRef) = NULL; static void (*CGContextSetAllowsFontSmoothingPtr) (CGContextRef, bool) = NULL; + +/* not yet public */ +static unsigned int (*CGContextGetTypePtr) (CGContextRef) = NULL; static bool (*CGContextGetAllowsFontSmoothingPtr) (CGContextRef) = NULL; -static CGPathRef (*CGContextCopyPathPtr) (CGContextRef) = NULL; static cairo_bool_t _cairo_quartz_symbol_lookup_done = FALSE; @@ -148,18 +135,16 @@ static cairo_bool_t _cairo_surface_is_quartz (const cairo_surface_t *surface); /* Load all extra symbols */ -static void quartz_ensure_symbols(void) +static void quartz_ensure_symbols (void) { - if (_cairo_quartz_symbol_lookup_done) + if (likely (_cairo_quartz_symbol_lookup_done)) return; - CGContextClipToMaskPtr = dlsym(RTLD_DEFAULT, "CGContextClipToMask"); - CGContextDrawTiledImagePtr = dlsym(RTLD_DEFAULT, "CGContextDrawTiledImage"); - CGContextGetTypePtr = dlsym(RTLD_DEFAULT, "CGContextGetType"); - CGContextSetShouldAntialiasFontsPtr = dlsym(RTLD_DEFAULT, "CGContextSetShouldAntialiasFonts"); - CGContextCopyPathPtr = dlsym(RTLD_DEFAULT, "CGContextCopyPath"); - CGContextGetAllowsFontSmoothingPtr = dlsym(RTLD_DEFAULT, "CGContextGetAllowsFontSmoothing"); - CGContextSetAllowsFontSmoothingPtr = dlsym(RTLD_DEFAULT, "CGContextSetAllowsFontSmoothing"); + CGContextDrawTiledImagePtr = dlsym (RTLD_DEFAULT, "CGContextDrawTiledImage"); + CGContextGetTypePtr = dlsym (RTLD_DEFAULT, "CGContextGetType"); + CGContextCopyPathPtr = dlsym (RTLD_DEFAULT, "CGContextCopyPath"); + CGContextGetAllowsFontSmoothingPtr = dlsym (RTLD_DEFAULT, "CGContextGetAllowsFontSmoothing"); + CGContextSetAllowsFontSmoothingPtr = dlsym (RTLD_DEFAULT, "CGContextSetAllowsFontSmoothing"); _cairo_quartz_symbol_lookup_done = TRUE; } @@ -184,7 +169,7 @@ _cairo_quartz_create_cgimage (cairo_format_t format, switch (format) { case CAIRO_FORMAT_ARGB32: if (colorSpace == NULL) - colorSpace = CGColorSpaceCreateDeviceRGB(); + colorSpace = CGColorSpaceCreateDeviceRGB (); bitinfo |= kCGImageAlphaPremultipliedFirst; bitsPerComponent = 8; bitsPerPixel = 32; @@ -192,7 +177,7 @@ _cairo_quartz_create_cgimage (cairo_format_t format, case CAIRO_FORMAT_RGB24: if (colorSpace == NULL) - colorSpace = CGColorSpaceCreateDeviceRGB(); + colorSpace = CGColorSpaceCreateDeviceRGB (); bitinfo |= kCGImageAlphaNoneSkipFirst; bitsPerComponent = 8; bitsPerPixel = 32; @@ -221,7 +206,7 @@ _cairo_quartz_create_cgimage (cairo_format_t format, height * stride, releaseCallback); - if (!dataProvider) { + if (unlikely (!dataProvider)) { // manually release if (releaseCallback) releaseCallback (releaseInfo, data, height * stride); @@ -260,19 +245,18 @@ FINISH: } static inline cairo_bool_t -_cairo_quartz_is_cgcontext_bitmap_context (CGContextRef cgc) { - if (cgc == NULL) +_cairo_quartz_is_cgcontext_bitmap_context (CGContextRef cgc) +{ + if (unlikely (cgc == NULL)) return FALSE; - if (CGContextGetTypePtr) { + if (likely (CGContextGetTypePtr)) { /* 4 is the type value of a bitmap context */ - if (CGContextGetTypePtr(cgc) == 4) - return TRUE; - return FALSE; + return CGContextGetTypePtr (cgc) == 4; } /* This will cause a (harmless) warning to be printed if called on a non-bitmap context */ - return CGBitmapContextGetBitsPerPixel(cgc) != 0; + return CGBitmapContextGetBitsPerPixel (cgc) != 0; } /* CoreGraphics limitation with flipped CTM surfaces: height must be less than signed 16-bit max */ @@ -282,16 +266,14 @@ _cairo_quartz_is_cgcontext_bitmap_context (CGContextRef cgc) { /* is the desired size of the surface within bounds? */ cairo_bool_t -_cairo_quartz_verify_surface_size(int width, int height) +_cairo_quartz_verify_surface_size (int width, int height) { /* hmmm, allow width, height == 0 ? */ - if (width < 0 || height < 0) { + if (width < 0 || height < 0) return FALSE; - } - if (width > CG_MAX_WIDTH || height > CG_MAX_HEIGHT) { + if (width > CG_MAX_WIDTH || height > CG_MAX_HEIGHT) return FALSE; - } return TRUE; } @@ -305,7 +287,7 @@ static cairo_status_t _cairo_path_to_quartz_context_move_to (void *closure, const cairo_point_t *point) { - //ND((stderr, "moveto: %f %f\n", _cairo_fixed_to_double(point->x), _cairo_fixed_to_double(point->y))); + //ND ((stderr, "moveto: %f %f\n", _cairo_fixed_to_double (point->x), _cairo_fixed_to_double (point->y))); double x = _cairo_fixed_to_double (point->x); double y = _cairo_fixed_to_double (point->y); @@ -317,7 +299,7 @@ static cairo_status_t _cairo_path_to_quartz_context_line_to (void *closure, const cairo_point_t *point) { - //ND((stderr, "lineto: %f %f\n", _cairo_fixed_to_double(point->x), _cairo_fixed_to_double(point->y))); + //ND ((stderr, "lineto: %f %f\n", _cairo_fixed_to_double (point->x), _cairo_fixed_to_double (point->y))); double x = _cairo_fixed_to_double (point->x); double y = _cairo_fixed_to_double (point->y); @@ -331,10 +313,10 @@ _cairo_path_to_quartz_context_curve_to (void *closure, const cairo_point_t *p1, const cairo_point_t *p2) { - //ND( (stderr, "curveto: %f,%f %f,%f %f,%f\n", - // _cairo_fixed_to_double(p0->x), _cairo_fixed_to_double(p0->y), - // _cairo_fixed_to_double(p1->x), _cairo_fixed_to_double(p1->y), - // _cairo_fixed_to_double(p2->x), _cairo_fixed_to_double(p2->y))); + //ND ((stderr, "curveto: %f,%f %f,%f %f,%f\n", + // _cairo_fixed_to_double (p0->x), _cairo_fixed_to_double (p0->y), + // _cairo_fixed_to_double (p1->x), _cairo_fixed_to_double (p1->y), + // _cairo_fixed_to_double (p2->x), _cairo_fixed_to_double (p2->y))); double x0 = _cairo_fixed_to_double (p0->x); double y0 = _cairo_fixed_to_double (p0->y); double x1 = _cairo_fixed_to_double (p1->x); @@ -342,15 +324,14 @@ _cairo_path_to_quartz_context_curve_to (void *closure, double x2 = _cairo_fixed_to_double (p2->x); double y2 = _cairo_fixed_to_double (p2->y); - CGContextAddCurveToPoint (closure, - x0, y0, x1, y1, x2, y2); + CGContextAddCurveToPoint (closure, x0, y0, x1, y1, x2, y2); return CAIRO_STATUS_SUCCESS; } static cairo_status_t _cairo_path_to_quartz_context_close_path (void *closure) { - //ND((stderr, "closepath\n")); + //ND ((stderr, "closepath\n")); CGContextClosePath (closure); return CAIRO_STATUS_SUCCESS; } @@ -363,7 +344,6 @@ _cairo_quartz_cairo_path_to_quartz_context (cairo_path_fixed_t *path, CGContextBeginPath (closure); status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_path_to_quartz_context_move_to, _cairo_path_to_quartz_context_line_to, _cairo_path_to_quartz_context_curve_to, @@ -377,6 +357,7 @@ _cairo_quartz_cairo_path_to_quartz_context (cairo_path_fixed_t *path, * Misc helpers/callbacks */ +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050 static PrivateCGCompositeMode _cairo_quartz_cairo_operator_to_quartz_composite (cairo_operator_t op) { @@ -424,158 +405,216 @@ _cairo_quartz_cairo_operator_to_quartz_composite (cairo_operator_t op) case CAIRO_OPERATOR_HSL_COLOR: case CAIRO_OPERATOR_HSL_LUMINOSITY: default: - assert (0); + ASSERT_NOT_REACHED; + } +} +#endif + +static CGBlendMode +_cairo_quartz_cairo_operator_to_quartz_blend (cairo_operator_t op) +{ + switch (op) { + case CAIRO_OPERATOR_MULTIPLY: + return kCGBlendModeMultiply; + case CAIRO_OPERATOR_SCREEN: + return kCGBlendModeScreen; + case CAIRO_OPERATOR_OVERLAY: + return kCGBlendModeOverlay; + case CAIRO_OPERATOR_DARKEN: + return kCGBlendModeDarken; + case CAIRO_OPERATOR_LIGHTEN: + return kCGBlendModeLighten; + case CAIRO_OPERATOR_COLOR_DODGE: + return kCGBlendModeColorDodge; + case CAIRO_OPERATOR_COLOR_BURN: + return kCGBlendModeColorBurn; + case CAIRO_OPERATOR_HARD_LIGHT: + return kCGBlendModeHardLight; + case CAIRO_OPERATOR_SOFT_LIGHT: + return kCGBlendModeSoftLight; + case CAIRO_OPERATOR_DIFFERENCE: + return kCGBlendModeDifference; + case CAIRO_OPERATOR_EXCLUSION: + return kCGBlendModeExclusion; + case CAIRO_OPERATOR_HSL_HUE: + return kCGBlendModeHue; + case CAIRO_OPERATOR_HSL_SATURATION: + return kCGBlendModeSaturation; + case CAIRO_OPERATOR_HSL_COLOR: + return kCGBlendModeColor; + case CAIRO_OPERATOR_HSL_LUMINOSITY: + return kCGBlendModeLuminosity; + +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 + case CAIRO_OPERATOR_CLEAR: + return kCGBlendModeClear; + case CAIRO_OPERATOR_SOURCE: + return kCGBlendModeCopy; + case CAIRO_OPERATOR_OVER: + return kCGBlendModeNormal; + case CAIRO_OPERATOR_IN: + return kCGBlendModeSourceIn; + case CAIRO_OPERATOR_OUT: + return kCGBlendModeSourceOut; + case CAIRO_OPERATOR_ATOP: + return kCGBlendModeSourceAtop; + case CAIRO_OPERATOR_DEST_OVER: + return kCGBlendModeDestinationOver; + case CAIRO_OPERATOR_DEST_IN: + return kCGBlendModeDestinationIn; + case CAIRO_OPERATOR_DEST_OUT: + return kCGBlendModeDestinationOut; + case CAIRO_OPERATOR_DEST_ATOP: + return kCGBlendModeDestinationAtop; + case CAIRO_OPERATOR_XOR: + return kCGBlendModeXOR; + case CAIRO_OPERATOR_ADD: + return kCGBlendModePlusLighter; +#else + case CAIRO_OPERATOR_CLEAR: + case CAIRO_OPERATOR_SOURCE: + case CAIRO_OPERATOR_OVER: + case CAIRO_OPERATOR_IN: + case CAIRO_OPERATOR_OUT: + case CAIRO_OPERATOR_ATOP: + case CAIRO_OPERATOR_DEST_OVER: + case CAIRO_OPERATOR_DEST_IN: + case CAIRO_OPERATOR_DEST_OUT: + case CAIRO_OPERATOR_DEST_ATOP: + case CAIRO_OPERATOR_XOR: + case CAIRO_OPERATOR_ADD: +#endif + + case CAIRO_OPERATOR_DEST: + case CAIRO_OPERATOR_SATURATE: + default: + ASSERT_NOT_REACHED; } } static cairo_int_status_t -_cairo_quartz_surface_set_cairo_operator (cairo_quartz_surface_t *surface, cairo_operator_t op) +_cairo_cgcontext_set_cairo_operator (CGContextRef context, cairo_operator_t op) { - ND((stderr, "%p _cairo_quartz_surface_set_cairo_operator %d\n", surface, op)); + CGBlendMode blendmode; - if (surface->base.content == CAIRO_CONTENT_ALPHA) { - /* For some weird reason, some compositing operators are - swapped when operating on masks */ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - case CAIRO_OPERATOR_SOURCE: - case CAIRO_OPERATOR_OVER: - case CAIRO_OPERATOR_DEST_IN: - case CAIRO_OPERATOR_DEST_OUT: - case CAIRO_OPERATOR_ADD: - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz_composite (op)); - return CAIRO_STATUS_SUCCESS; + if (op == CAIRO_OPERATOR_DEST) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - case CAIRO_OPERATOR_IN: - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeDestinationAtop); - return CAIRO_STATUS_SUCCESS; + /* Quartz doesn't support SATURATE at all. COLOR_DODGE and + * COLOR_BURN in Quartz follow the ISO32000 definition, but cairo + * uses the definition from the Adobe Supplement. + */ + if (op == CAIRO_OPERATOR_SATURATE || + op == CAIRO_OPERATOR_COLOR_DODGE || + op == CAIRO_OPERATOR_COLOR_BURN) + { + return CAIRO_INT_STATUS_UNSUPPORTED; + } - case CAIRO_OPERATOR_DEST_OVER: - case CAIRO_OPERATOR_MULTIPLY: - case CAIRO_OPERATOR_SCREEN: - case CAIRO_OPERATOR_OVERLAY: - case CAIRO_OPERATOR_DARKEN: - case CAIRO_OPERATOR_LIGHTEN: - case CAIRO_OPERATOR_COLOR_DODGE: - case CAIRO_OPERATOR_COLOR_BURN: - case CAIRO_OPERATOR_HARD_LIGHT: - case CAIRO_OPERATOR_SOFT_LIGHT: - case CAIRO_OPERATOR_DIFFERENCE: - case CAIRO_OPERATOR_EXCLUSION: - case CAIRO_OPERATOR_HSL_HUE: - case CAIRO_OPERATOR_HSL_SATURATION: - case CAIRO_OPERATOR_HSL_COLOR: - case CAIRO_OPERATOR_HSL_LUMINOSITY: - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeSourceOver); - return CAIRO_STATUS_SUCCESS; +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050 + if (op <= CAIRO_OPERATOR_ADD) { + PrivateCGCompositeMode compmode; - case CAIRO_OPERATOR_DEST_ATOP: - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeSourceIn); - return CAIRO_STATUS_SUCCESS; + compmode = _cairo_quartz_cairo_operator_to_quartz_composite (op); + CGContextSetCompositeOperation (context, compmode); + return CAIRO_STATUS_SUCCESS; + } +#endif - case CAIRO_OPERATOR_SATURATE: - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositePlusLighter); - return CAIRO_STATUS_SUCCESS; + blendmode = _cairo_quartz_cairo_operator_to_quartz_blend (op); + CGContextSetBlendMode (context, blendmode); + return CAIRO_STATUS_SUCCESS; +} +static cairo_int_status_t +_cairo_quartz_surface_set_cairo_operator (cairo_quartz_surface_t *surface, cairo_operator_t op) +{ + ND((stderr, "%p _cairo_quartz_surface_set_cairo_operator %d\n", surface, op)); - case CAIRO_OPERATOR_ATOP: - /* - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeDestinationOver); - return CAIRO_STATUS_SUCCESS; - */ - case CAIRO_OPERATOR_DEST: - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - case CAIRO_OPERATOR_OUT: - case CAIRO_OPERATOR_XOR: - default: - return CAIRO_INT_STATUS_UNSUPPORTED; + /* When the destination has no color components, we can avoid some + * fallbacks, but we have to workaround operators which behave + * differently in Quartz. */ + if (surface->base.content == CAIRO_CONTENT_ALPHA) { + if (op == CAIRO_OPERATOR_ATOP) + return CAIRO_INT_STATUS_NOTHING_TO_DO; + + if (op == CAIRO_OPERATOR_SOURCE || + op == CAIRO_OPERATOR_IN || + op == CAIRO_OPERATOR_OUT || + op == CAIRO_OPERATOR_DEST_IN || + op == CAIRO_OPERATOR_DEST_ATOP || + op == CAIRO_OPERATOR_XOR) + { + return CAIRO_INT_STATUS_UNSUPPORTED; } - } else { - switch (op) { - case CAIRO_OPERATOR_CLEAR: - case CAIRO_OPERATOR_SOURCE: - case CAIRO_OPERATOR_OVER: - case CAIRO_OPERATOR_IN: - case CAIRO_OPERATOR_OUT: - case CAIRO_OPERATOR_ATOP: - case CAIRO_OPERATOR_DEST_OVER: - case CAIRO_OPERATOR_DEST_IN: - case CAIRO_OPERATOR_DEST_OUT: - case CAIRO_OPERATOR_DEST_ATOP: - case CAIRO_OPERATOR_XOR: - case CAIRO_OPERATOR_ADD: - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz_composite (op)); - return CAIRO_STATUS_SUCCESS; - case CAIRO_OPERATOR_DEST: - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - case CAIRO_OPERATOR_SATURATE: - /* TODO: the following are mostly supported by CGContextSetBlendMode*/ - case CAIRO_OPERATOR_MULTIPLY: - case CAIRO_OPERATOR_SCREEN: - case CAIRO_OPERATOR_OVERLAY: - case CAIRO_OPERATOR_DARKEN: - case CAIRO_OPERATOR_LIGHTEN: - case CAIRO_OPERATOR_COLOR_DODGE: - case CAIRO_OPERATOR_COLOR_BURN: - case CAIRO_OPERATOR_HARD_LIGHT: - case CAIRO_OPERATOR_SOFT_LIGHT: - case CAIRO_OPERATOR_DIFFERENCE: - case CAIRO_OPERATOR_EXCLUSION: - case CAIRO_OPERATOR_HSL_HUE: - case CAIRO_OPERATOR_HSL_SATURATION: - case CAIRO_OPERATOR_HSL_COLOR: - case CAIRO_OPERATOR_HSL_LUMINOSITY: - default: - return CAIRO_INT_STATUS_UNSUPPORTED; - } + if (op == CAIRO_OPERATOR_DEST_OVER) + op = CAIRO_OPERATOR_OVER; + else if (op == CAIRO_OPERATOR_SATURATE) + op = CAIRO_OPERATOR_ADD; + else if (op == CAIRO_OPERATOR_COLOR_DODGE) + op = CAIRO_OPERATOR_OVER; + else if (op == CAIRO_OPERATOR_COLOR_BURN) + op = CAIRO_OPERATOR_OVER; } + + return _cairo_cgcontext_set_cairo_operator (surface->cgContext, op); } static inline CGLineCap _cairo_quartz_cairo_line_cap_to_quartz (cairo_line_cap_t ccap) { switch (ccap) { - case CAIRO_LINE_CAP_BUTT: return kCGLineCapButt; break; - case CAIRO_LINE_CAP_ROUND: return kCGLineCapRound; break; - case CAIRO_LINE_CAP_SQUARE: return kCGLineCapSquare; break; - } + default: + ASSERT_NOT_REACHED; - return kCGLineCapButt; + case CAIRO_LINE_CAP_BUTT: + return kCGLineCapButt; + + case CAIRO_LINE_CAP_ROUND: + return kCGLineCapRound; + + case CAIRO_LINE_CAP_SQUARE: + return kCGLineCapSquare; + } } static inline CGLineJoin _cairo_quartz_cairo_line_join_to_quartz (cairo_line_join_t cjoin) { switch (cjoin) { - case CAIRO_LINE_JOIN_MITER: return kCGLineJoinMiter; break; - case CAIRO_LINE_JOIN_ROUND: return kCGLineJoinRound; break; - case CAIRO_LINE_JOIN_BEVEL: return kCGLineJoinBevel; break; - } + default: + ASSERT_NOT_REACHED; - return kCGLineJoinMiter; + case CAIRO_LINE_JOIN_MITER: + return kCGLineJoinMiter; + + case CAIRO_LINE_JOIN_ROUND: + return kCGLineJoinRound; + + case CAIRO_LINE_JOIN_BEVEL: + return kCGLineJoinBevel; + } } static inline CGInterpolationQuality _cairo_quartz_filter_to_quartz (cairo_filter_t filter) { switch (filter) { - case CAIRO_FILTER_NEAREST: - return kCGInterpolationNone; + case CAIRO_FILTER_NEAREST: + case CAIRO_FILTER_FAST: + return kCGInterpolationNone; - case CAIRO_FILTER_FAST: - return kCGInterpolationLow; + case CAIRO_FILTER_BEST: + case CAIRO_FILTER_GOOD: + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + return kCGInterpolationDefault; - case CAIRO_FILTER_BEST: - case CAIRO_FILTER_GOOD: - case CAIRO_FILTER_BILINEAR: - case CAIRO_FILTER_GAUSSIAN: - return kCGInterpolationDefault; + default: + ASSERT_NOT_REACHED; + return kCGInterpolationDefault; } - - return kCGInterpolationDefault; } static inline void @@ -590,152 +629,6 @@ _cairo_quartz_cairo_matrix_to_quartz (const cairo_matrix_t *src, dst->ty = src->y0; } -typedef struct { - bool isClipping; - CGGlyph *cg_glyphs; - CGSize *cg_advances; - size_t nglyphs; - CGAffineTransform textTransform; - CGFontRef font; - CGPoint origin; -} unbounded_show_glyphs_t; - -typedef struct { - CGPathRef cgPath; - cairo_fill_rule_t fill_rule; -} unbounded_stroke_fill_t; - -typedef struct { - CGImageRef mask; - CGAffineTransform maskTransform; -} unbounded_mask_t; - -typedef enum { - UNBOUNDED_STROKE_FILL, - UNBOUNDED_SHOW_GLYPHS, - UNBOUNDED_MASK -} unbounded_op_t; - -typedef struct { - unbounded_op_t op; - union { - unbounded_stroke_fill_t stroke_fill; - unbounded_show_glyphs_t show_glyphs; - unbounded_mask_t mask; - } u; -} unbounded_op_data_t; - -static void -_cairo_quartz_fixup_unbounded_operation (cairo_quartz_surface_t *surface, - unbounded_op_data_t *op, - cairo_antialias_t antialias) -{ - CGRect clipBox, clipBoxRound; - CGContextRef cgc; - CGImageRef maskImage; - - /* TODO: handle failure */ - if (!CGContextClipToMaskPtr) - return; - - clipBox = CGContextGetClipBoundingBox (surface->cgContext); - clipBoxRound = CGRectIntegral (clipBox); - - cgc = CGBitmapContextCreate (NULL, - clipBoxRound.size.width, - clipBoxRound.size.height, - 8, - (((size_t) clipBoxRound.size.width) + 15) & (~15), - NULL, - kCGImageAlphaOnly); - - if (!cgc) - return; - - CGContextSetCompositeOperation (cgc, kPrivateCGCompositeCopy); - /* We want to mask out whatever we just rendered, so we fill the - * surface opaque, and then we'll render transparent. - */ - CGContextSetAlpha (cgc, 1.0f); - CGContextFillRect (cgc, CGRectMake (0, 0, clipBoxRound.size.width, clipBoxRound.size.height)); - - CGContextSetCompositeOperation (cgc, kPrivateCGCompositeClear); - CGContextSetShouldAntialias (cgc, (antialias != CAIRO_ANTIALIAS_NONE)); - - CGContextTranslateCTM (cgc, -clipBoxRound.origin.x, -clipBoxRound.origin.y); - - /* We need to either render the path that was given to us, or the glyph op */ - if (op->op == UNBOUNDED_STROKE_FILL) { - CGContextBeginPath (cgc); - CGContextAddPath (cgc, op->u.stroke_fill.cgPath); - - if (op->u.stroke_fill.fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextFillPath (cgc); - else - CGContextEOFillPath (cgc); - } else if (op->op == UNBOUNDED_SHOW_GLYPHS) { - CGContextSetFont (cgc, op->u.show_glyphs.font); - CGContextSetFontSize (cgc, 1.0); - CGContextSetTextMatrix (cgc, CGAffineTransformIdentity); - CGContextTranslateCTM (cgc, op->u.show_glyphs.origin.x, op->u.show_glyphs.origin.y); - CGContextConcatCTM (cgc, op->u.show_glyphs.textTransform); - - if (op->u.show_glyphs.isClipping) { - /* Note that the comment in show_glyphs about kCGTextClip - * and the text transform still applies here; however, the - * cg_advances we have were already transformed, so we - * don't have to do anything. */ - CGContextSetTextDrawingMode (cgc, kCGTextClip); - CGContextSaveGState (cgc); - } - - CGContextShowGlyphsWithAdvances (cgc, - op->u.show_glyphs.cg_glyphs, - op->u.show_glyphs.cg_advances, - op->u.show_glyphs.nglyphs); - - if (op->u.show_glyphs.isClipping) { - CGContextClearRect (cgc, clipBoxRound); - CGContextRestoreGState (cgc); - } - } else if (op->op == UNBOUNDED_MASK) { - CGAffineTransform ctm = CGContextGetCTM (cgc); - CGContextSaveGState (cgc); - CGContextConcatCTM (cgc, op->u.mask.maskTransform); - CGContextClipToMask (cgc, CGRectMake (0.0f, 0.0f, - CGImageGetWidth(op->u.mask.mask), CGImageGetHeight(op->u.mask.mask)), - op->u.mask.mask); - CGContextSetCTM (cgc, ctm); - CGContextClearRect (cgc, clipBoxRound); - CGContextRestoreGState (cgc); - } - - /* Also mask out the portion of the clipbox that we rounded out, if any */ - if (!CGRectEqualToRect (clipBox, clipBoxRound)) { - CGContextBeginPath (cgc); - CGContextAddRect (cgc, clipBoxRound); - CGContextAddRect (cgc, clipBox); - CGContextEOFillPath (cgc); - } - - maskImage = CGBitmapContextCreateImage (cgc); - CGContextRelease (cgc); - - if (!maskImage) - return; - - /* Then render with the mask */ - CGContextSaveGState (surface->cgContext); - - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeCopy); - CGContextClipToMaskPtr (surface->cgContext, clipBoxRound, maskImage); - CGImageRelease (maskImage); - - /* Finally, clear out the entire clipping region through our mask */ - CGContextClearRect (surface->cgContext, clipBoxRound); - - CGContextRestoreGState (surface->cgContext); -} /* * Source -> Quartz setup and finish functions @@ -754,18 +647,16 @@ ComputeGradientValue (void *info, * REPEAT/REFLECT */ if (grad->base.extend == CAIRO_EXTEND_REPEAT) { - fdist = fdist - floor(fdist); + fdist = fdist - floor (fdist); } else if (grad->base.extend == CAIRO_EXTEND_REFLECT) { - fdist = fmod(fabs(fdist), 2.0); - if (fdist > 1.0) { + fdist = fmod (fabs (fdist), 2.0); + if (fdist > 1.0) fdist = 2.0 - fdist; - } } - for (i = 0; i < grad->n_stops; i++) { + for (i = 0; i < grad->n_stops; i++) if (grad->stops[i].offset > fdist) break; - } if (i == 0 || i == grad->n_stops) { if (i == grad->n_stops) @@ -801,134 +692,62 @@ static const cairo_quartz_float_t gradient_output_value_ranges[8] = { static const CGFunctionCallbacks gradient_callbacks = { 0, ComputeGradientValue, (CGFunctionReleaseInfoCallback) cairo_pattern_destroy }; -/* Quartz will clamp input values to the input range. - - Our stops are all in the range 0.0 to 1.0. However, the color before the - beginning of the gradient line is obtained by Quartz computing a negative - position on the gradient line, clamping it to the input range we specified - for our color function, and then calling our color function (actually it - pre-samples the color function into an array, but that doesn't matter just - here). Therefore if we set the lower bound to 0.0, a negative position - on the gradient line will pass 0.0 to ComputeGradientValue, which will - select the last color stop with position 0, although it should select - the first color stop (this matters when there are multiple color stops with - position 0). - - Therefore we pass a small negative number as the lower bound of the input - range, so this value gets passed into ComputeGradientValue, which will - return the color of the first stop. The number should be small because - as far as I can tell, Quartz pre-samples the entire input range of the color - function into an array of fixed size, so if the input range is larger - than needed, the resolution of the gradient will be unnecessarily low. -*/ -static const cairo_quartz_float_t nonrepeating_gradient_input_value_range[2] = { -0.001f, 1.f }; + +/* Quartz computes a small number of samples of the gradient color + * function. On MacOS X 10.5 it apparently computes only 1024 + * samples. */ +#define MAX_GRADIENT_RANGE 1024 static CGFunctionRef -CreateGradientFunction (const cairo_gradient_pattern_t *gpat) +_cairo_quartz_create_gradient_function (const cairo_gradient_pattern_t *gradient, + const cairo_rectangle_int_t *extents, + cairo_circle_double_t *start, + cairo_circle_double_t *end) { cairo_pattern_t *pat; + cairo_quartz_float_t input_value_range[2]; - if (_cairo_pattern_create_copy (&pat, &gpat->base)) - /* quartz doesn't deal very well with malloc failing, so there's - * not much point in us trying either */ - return NULL; - - return CGFunctionCreate (pat, - 1, - nonrepeating_gradient_input_value_range, - 4, - gradient_output_value_ranges, - &gradient_callbacks); -} + if (gradient->base.extend != CAIRO_EXTEND_NONE) { + double bounds_x1, bounds_x2, bounds_y1, bounds_y2; + double t[2], tolerance; + + tolerance = fabs (_cairo_matrix_compute_determinant (&gradient->base.matrix)); + tolerance /= _cairo_matrix_transformed_circle_major_axis (&gradient->base.matrix, 1); + + bounds_x1 = extents->x; + bounds_y1 = extents->y; + bounds_x2 = extents->x + extents->width; + bounds_y2 = extents->y + extents->height; + _cairo_matrix_transform_bounding_box (&gradient->base.matrix, + &bounds_x1, &bounds_y1, + &bounds_x2, &bounds_y2, + NULL); + + _cairo_gradient_pattern_box_to_parameter (gradient, + bounds_x1, bounds_y1, + bounds_x2, bounds_y2, + tolerance, + t); + + if (gradient->base.extend == CAIRO_EXTEND_PAD) { + t[0] = MAX (t[0], -0.5); + t[1] = MIN (t[1], 1.5); + } else if (t[1] - t[0] > MAX_GRADIENT_RANGE) + return NULL; -static void -UpdateLinearParametersToIncludePoint(double *min_t, double *max_t, CGPoint *start, - double dx, double dy, - double x, double y) -{ - /* Compute a parameter t such that a line perpendicular to the (dx,dy) - vector, passing through (start->x + dx*t, start->y + dy*t), also - passes through (x,y). - - Let px = x - start->x, py = y - start->y. - t is given by - (px - dx*t)*dx + (py - dy*t)*dy = 0 - - Solving for t we get - numerator = dx*px + dy*py - denominator = dx^2 + dy^2 - t = numerator/denominator - - In CreateRepeatingLinearGradientFunction we know the length of (dx,dy) - is not zero. (This is checked in _cairo_quartz_setup_linear_source.) - */ - double px = x - start->x; - double py = y - start->y; - double numerator = dx*px + dy*py; - double denominator = dx*dx + dy*dy; - double t = numerator/denominator; - - if (*min_t > t) { - *min_t = t; - } - if (*max_t < t) { - *max_t = t; + /* set the input range for the function -- the function knows how + to map values outside of 0.0 .. 1.0 to the correct color */ + input_value_range[0] = t[0]; + input_value_range[1] = t[1]; + } else { + input_value_range[0] = 0; + input_value_range[1] = 1; } -} -static CGFunctionRef -CreateRepeatingLinearGradientFunction (cairo_quartz_surface_t *surface, - const cairo_gradient_pattern_t *gpat, - CGPoint *start, CGPoint *end, - cairo_rectangle_int_t *extents) -{ - cairo_pattern_t *pat; - cairo_quartz_float_t input_value_range[2]; - double t_min = 0.; - double t_max = 0.; - double dx = end->x - start->x; - double dy = end->y - start->y; - double bounds_x1, bounds_x2, bounds_y1, bounds_y2; - - if (!extents) { - extents = &surface->extents; - } - bounds_x1 = extents->x; - bounds_y1 = extents->y; - bounds_x2 = extents->x + extents->width; - bounds_y2 = extents->y + extents->height; - _cairo_matrix_transform_bounding_box (&gpat->base.matrix, - &bounds_x1, &bounds_y1, - &bounds_x2, &bounds_y2, - NULL); - - UpdateLinearParametersToIncludePoint(&t_min, &t_max, start, dx, dy, - bounds_x1, bounds_y1); - UpdateLinearParametersToIncludePoint(&t_min, &t_max, start, dx, dy, - bounds_x2, bounds_y1); - UpdateLinearParametersToIncludePoint(&t_min, &t_max, start, dx, dy, - bounds_x2, bounds_y2); - UpdateLinearParametersToIncludePoint(&t_min, &t_max, start, dx, dy, - bounds_x1, bounds_y2); - - /* Move t_min and t_max to the nearest usable integer to try to avoid - subtle variations due to numerical instability, especially accidentally - cutting off a pixel. Extending the gradient repetitions is always safe. */ - t_min = floor (t_min); - t_max = ceil (t_max); - end->x = start->x + dx*t_max; - end->y = start->y + dy*t_max; - start->x = start->x + dx*t_min; - start->y = start->y + dy*t_min; - - // set the input range for the function -- the function knows how to - // map values outside of 0.0 .. 1.0 to that range for REPEAT/REFLECT. - input_value_range[0] = t_min; - input_value_range[1] = t_max; - - if (_cairo_pattern_create_copy (&pat, &gpat->base)) - /* quartz doesn't deal very well with malloc failing, so there's - * not much point in us trying either */ + _cairo_gradient_pattern_interpolate (gradient, input_value_range[0], start); + _cairo_gradient_pattern_interpolate (gradient, input_value_range[1], end); + + if (_cairo_pattern_create_copy (&pat, &gradient->base)) return NULL; return CGFunctionCreate (pat, @@ -939,151 +758,6 @@ CreateRepeatingLinearGradientFunction (cairo_quartz_surface_t *surface, &gradient_callbacks); } -static void -UpdateRadialParameterToIncludePoint(double *max_t, CGPoint *center, - double dr, double dx, double dy, - double x, double y) -{ - /* Compute a parameter t such that a circle centered at - (center->x + dx*t, center->y + dy*t) with radius dr*t contains the - point (x,y). - - Let px = x - center->x, py = y - center->y. - Parameter values for which t is on the circle are given by - (px - dx*t)^2 + (py - dy*t)^2 = (t*dr)^2 - - Solving for t using the quadratic formula, and simplifying, we get - numerator = dx*px + dy*py +- - sqrt( dr^2*(px^2 + py^2) - (dx*py - dy*px)^2 ) - denominator = dx^2 + dy^2 - dr^2 - t = numerator/denominator - - In CreateRepeatingRadialGradientFunction we know the outer circle - contains the inner circle. Therefore the distance between the circle - centers plus the radius of the inner circle is less than the radius of - the outer circle. (This is checked in _cairo_quartz_setup_radial_source.) - Therefore - dx^2 + dy^2 < dr^2 - So the denominator is negative and the larger solution for t is given by - numerator = dx*px + dy*py - - sqrt( dr^2*(px^2 + py^2) - (dx*py - dy*px)^2 ) - denominator = dx^2 + dy^2 - dr^2 - t = numerator/denominator - dx^2 + dy^2 < dr^2 also ensures that the operand of sqrt is positive. - */ - double px = x - center->x; - double py = y - center->y; - double dx_py_minus_dy_px = dx*py - dy*px; - double numerator = dx*px + dy*py - - sqrt (dr*dr*(px*px + py*py) - dx_py_minus_dy_px*dx_py_minus_dy_px); - double denominator = dx*dx + dy*dy - dr*dr; - double t = numerator/denominator; - - if (*max_t < t) { - *max_t = t; - } -} - -/* This must only be called when one of the circles properly contains the other */ -static CGFunctionRef -CreateRepeatingRadialGradientFunction (cairo_quartz_surface_t *surface, - const cairo_gradient_pattern_t *gpat, - CGPoint *start, double *start_radius, - CGPoint *end, double *end_radius, - cairo_rectangle_int_t *extents) -{ - cairo_pattern_t *pat; - cairo_quartz_float_t input_value_range[2]; - CGPoint *inner; - double *inner_radius; - CGPoint *outer; - double *outer_radius; - /* minimum and maximum t-parameter values that will make our gradient - cover the clipBox */ - double t_min, t_max, t_temp; - /* outer minus inner */ - double dr, dx, dy; - double bounds_x1, bounds_x2, bounds_y1, bounds_y2; - - if (!extents) { - extents = &surface->extents; - } - bounds_x1 = extents->x; - bounds_y1 = extents->y; - bounds_x2 = extents->x + extents->width; - bounds_y2 = extents->y + extents->height; - _cairo_matrix_transform_bounding_box (&gpat->base.matrix, - &bounds_x1, &bounds_y1, - &bounds_x2, &bounds_y2, - NULL); - - if (*start_radius < *end_radius) { - /* end circle contains start circle */ - inner = start; - outer = end; - inner_radius = start_radius; - outer_radius = end_radius; - } else { - /* start circle contains end circle */ - inner = end; - outer = start; - inner_radius = end_radius; - outer_radius = start_radius; - } - - dr = *outer_radius - *inner_radius; - dx = outer->x - inner->x; - dy = outer->y - inner->y; - - /* We can't round or fudge t_min here, it has to be as accurate as possible. */ - t_min = -(*inner_radius/dr); - inner->x += t_min*dx; - inner->y += t_min*dy; - *inner_radius = 0.; - - t_temp = 0.; - UpdateRadialParameterToIncludePoint(&t_temp, inner, dr, dx, dy, - bounds_x1, bounds_y1); - UpdateRadialParameterToIncludePoint(&t_temp, inner, dr, dx, dy, - bounds_x2, bounds_y1); - UpdateRadialParameterToIncludePoint(&t_temp, inner, dr, dx, dy, - bounds_x2, bounds_y2); - UpdateRadialParameterToIncludePoint(&t_temp, inner, dr, dx, dy, - bounds_x1, bounds_y2); - /* UpdateRadialParameterToIncludePoint assumes t=0 means radius 0. - But for the parameter values we use with Quartz, t_min means radius 0. - Since the circles are alway expanding and contain the earlier circles, - it's safe to extend t_max/t_temp as much as we want, so round t_temp up - to the nearest integer. This may help us give stable results. */ - t_temp = ceil (t_temp); - t_max = t_min + t_temp; - outer->x = inner->x + t_temp*dx; - outer->y = inner->y + t_temp*dy; - *outer_radius = t_temp*dr; - - /* set the input range for the function -- the function knows how to - map values outside of 0.0 .. 1.0 to that range for REPEAT/REFLECT. */ - if (*start_radius < *end_radius) { - input_value_range[0] = t_min; - input_value_range[1] = t_max; - } else { - input_value_range[0] = 1 - t_max; - input_value_range[1] = 1 - t_min; - } - - if (_cairo_pattern_create_copy (&pat, &gpat->base)) - /* quartz doesn't deal very well with malloc failing, so there's - * not much point in us trying either */ - return NULL; - - return CGFunctionCreate (pat, - 1, - input_value_range, - 4, - gradient_output_value_ranges, - &gradient_callbacks); -} - /* Obtain a CGImageRef from a #cairo_surface_t * */ typedef struct { @@ -1101,8 +775,7 @@ DataProviderReleaseCallback (void *info, const void *data, size_t size) } static cairo_status_t -_cairo_surface_to_cgimage (cairo_surface_t *target, - cairo_surface_t *source, +_cairo_surface_to_cgimage (cairo_surface_t *source, CGImageRef *image_out) { cairo_status_t status; @@ -1116,7 +789,7 @@ _cairo_surface_to_cgimage (cairo_surface_t *target, if (_cairo_surface_is_quartz (source)) { cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) source; - if (IS_EMPTY(surface)) { + if (IS_EMPTY (surface)) { *image_out = NULL; return CAIRO_STATUS_SUCCESS; } @@ -1129,13 +802,13 @@ _cairo_surface_to_cgimage (cairo_surface_t *target, } source_img = malloc (sizeof (quartz_source_image_t)); - if (source_img == NULL) + if (unlikely (source_img == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); source_img->surface = source; status = _cairo_surface_acquire_source_image (source_img->surface, &source_img->image_out, &source_img->image_extra); - if (status) { + if (unlikely (status)) { free (source_img); return status; } @@ -1157,7 +830,7 @@ _cairo_surface_to_cgimage (cairo_surface_t *target, source_img); /* TODO: differentiate memory error and unsupported surface type */ - if (*image_out == NULL) + if (unlikely (*image_out == NULL)) status = CAIRO_INT_STATUS_UNSUPPORTED; } @@ -1237,8 +910,7 @@ _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t cairo_matrix_t m; /* SURFACE is the only type we'll handle here */ - if (apattern->type != CAIRO_PATTERN_TYPE_SURFACE) - return CAIRO_INT_STATUS_UNSUPPORTED; + assert (apattern->type == CAIRO_PATTERN_TYPE_SURFACE); spattern = (cairo_surface_pattern_t *) apattern; pat_surf = spattern->surface; @@ -1246,14 +918,14 @@ _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t is_bounded = _cairo_surface_get_extents (pat_surf, &extents); assert (is_bounded); - status = _cairo_surface_to_cgimage ((cairo_surface_t*) dest, pat_surf, &image); - if (status) + status = _cairo_surface_to_cgimage (pat_surf, &image); + if (unlikely (status)) return status; - if (image == NULL) + if (unlikely (image == NULL)) return CAIRO_INT_STATUS_NOTHING_TO_DO; - info = malloc(sizeof(SurfacePatternDrawInfo)); - if (!info) + info = malloc (sizeof (SurfacePatternDrawInfo)); + if (unlikely (!info)) return CAIRO_STATUS_NO_MEMORY; /* XXX -- if we're printing, we may need to call CGImageCreateCopy to make sure @@ -1284,7 +956,7 @@ _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t rh = pbounds.size.height; m = spattern->base.matrix; - cairo_matrix_invert(&m); + cairo_matrix_invert (&m); _cairo_quartz_cairo_matrix_to_quartz (&m, &stransform); /* The pattern matrix is relative to the bottom left, again; the @@ -1292,13 +964,13 @@ _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t * So we take the pattern matrix and the original context matrix, * which gives us the correct base translation/y flip. */ - ptransform = CGAffineTransformConcat(stransform, dest->cgContextBaseCTM); + ptransform = CGAffineTransformConcat (stransform, dest->cgContextBaseCTM); #ifdef QUARTZ_DEBUG - ND((stderr, " pbounds: %f %f %f %f\n", pbounds.origin.x, pbounds.origin.y, pbounds.size.width, pbounds.size.height)); - ND((stderr, " pattern xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", ptransform.tx, ptransform.ty, ptransform.a, ptransform.b, ptransform.c, ptransform.d)); - CGAffineTransform xform = CGContextGetCTM(dest->cgContext); - ND((stderr, " context xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", xform.tx, xform.ty, xform.a, xform.b, xform.c, xform.d)); + ND ((stderr, " pbounds: %f %f %f %f\n", pbounds.origin.x, pbounds.origin.y, pbounds.size.width, pbounds.size.height)); + ND ((stderr, " pattern xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", ptransform.tx, ptransform.ty, ptransform.a, ptransform.b, ptransform.c, ptransform.d)); + CGAffineTransform xform = CGContextGetCTM (dest->cgContext); + ND ((stderr, " context xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", xform.tx, xform.ty, xform.a, xform.b, xform.c, xform.d)); #endif *cgpat = CGPatternCreate (info, @@ -1312,86 +984,36 @@ _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t return CAIRO_STATUS_SUCCESS; } -typedef enum { - DO_SOLID, - DO_SHADING, - DO_PATTERN, - DO_IMAGE, - DO_UNSUPPORTED, - DO_NOTHING, - DO_TILED_IMAGE -} cairo_quartz_action_t; - -static cairo_quartz_action_t -_cairo_quartz_setup_fallback_source (cairo_quartz_surface_t *surface, - const cairo_pattern_t *source) -{ - CGRect clipBox = CGContextGetClipBoundingBox (surface->cgContext); - double x0, y0, w, h; - - cairo_surface_t *fallback; - CGImageRef img; - - cairo_status_t status; - - if (clipBox.size.width == 0.0f || - clipBox.size.height == 0.0f) - return DO_NOTHING; - - x0 = floor(clipBox.origin.x); - y0 = floor(clipBox.origin.y); - w = ceil(clipBox.origin.x + clipBox.size.width) - x0; - h = ceil(clipBox.origin.y + clipBox.size.height) - y0; - - /* Create a temporary the size of the clip surface, and position - * it so that the device origin coincides with the original surface */ - fallback = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, (int) w, (int) h); - cairo_surface_set_device_offset (fallback, -x0, -y0); +/* State used during a drawing operation. */ +typedef struct { + /* The destination of the mask */ + CGContextRef cgMaskContext; -#if 0 - { - cairo_t *fallback_cr; - cairo_pattern_t *source_copy; + /* The destination of the drawing of the source */ + CGContextRef cgDrawContext; - /* Paint the source onto our temporary */ - fallback_cr = cairo_create (fallback); - cairo_set_operator (fallback_cr, CAIRO_OPERATOR_SOURCE); + /* The filter to be used when drawing the source */ + CGInterpolationQuality filter; - /* Use a copy of the pattern because it is const and could be allocated - * on the stack */ - status = _cairo_pattern_create_copy (&source_copy, source); - cairo_set_source (fallback_cr, source_copy); - cairo_pattern_destroy (source_copy); + /* Action type */ + cairo_quartz_action_t action; - cairo_paint (fallback_cr); - cairo_destroy (fallback_cr); - } -#else - { - cairo_pattern_union_t pattern; + /* Destination rect */ + CGRect rect; - _cairo_pattern_init_static_copy (&pattern.base, source); - _cairo_pattern_transform (&pattern.base, - &fallback->device_transform_inverse); - status = _cairo_surface_paint (fallback, - CAIRO_OPERATOR_SOURCE, - &pattern.base, NULL); - } -#endif + /* Used with DO_SHADING, DO_IMAGE and DO_TILED_IMAGE */ + CGAffineTransform transform; - status = _cairo_surface_to_cgimage (&surface->base, fallback, &img); - if (status) - return DO_UNSUPPORTED; - if (img == NULL) - return DO_NOTHING; + /* Used with DO_IMAGE and DO_TILED_IMAGE */ + CGImageRef image; - surface->sourceImageRect = CGRectMake (0.0, 0.0, w, h); - surface->sourceImage = img; - surface->sourceImageSurface = fallback; - surface->sourceTransform = CGAffineTransformMakeTranslation (x0, y0); + /* Used with DO_SHADING */ + CGShadingRef shading; - return DO_IMAGE; -} + /* Temporary destination for unbounded operations */ + CGLayerRef layer; + CGRect clipRect; +} cairo_quartz_drawing_state_t; /* Quartz does not support repeating radients. We handle repeating gradients @@ -1400,181 +1022,170 @@ minimize the number of repetitions since Quartz seems to sample our color function across the entire range, even if part of that range is not needed for the visible area of the gradient, and it samples with some fixed resolution, so if the gradient range is too large it samples with very low resolution and -the gradient is very coarse. CreateRepeatingLinearGradientFunction and -CreateRepeatingRadialGradientFunction compute the number of repetitions needed -based on the extents of the object (the clip region cannot be used here since -we don't want the rasterization of the entire gradient to depend on the -clip region). +the gradient is very coarse. _cairo_quartz_create_gradient_function computes +the number of repetitions needed based on the extents. */ -static cairo_quartz_action_t -_cairo_quartz_setup_linear_source (cairo_quartz_surface_t *surface, - const cairo_linear_pattern_t *lpat, - cairo_rectangle_int_t *extents) +static cairo_int_status_t +_cairo_quartz_setup_gradient_source (cairo_quartz_drawing_state_t *state, + const cairo_gradient_pattern_t *gradient, + const cairo_rectangle_int_t *extents) { - const cairo_pattern_t *abspat = &lpat->base.base; cairo_matrix_t mat; - CGPoint start, end; + cairo_circle_double_t start, end; CGFunctionRef gradFunc; CGColorSpaceRef rgb; - bool extend = abspat->extend == CAIRO_EXTEND_PAD; + bool extend = gradient->base.extend != CAIRO_EXTEND_NONE; - if (lpat->base.n_stops == 0) { - CGContextSetRGBStrokeColor (surface->cgContext, 0., 0., 0., 0.); - CGContextSetRGBFillColor (surface->cgContext, 0., 0., 0., 0.); - return DO_SOLID; - } + assert (gradient->n_stops > 0); - if (lpat->p1.x == lpat->p2.x && - lpat->p1.y == lpat->p2.y) { - /* Quartz handles cases where the vector has no length very - * differently from pixman. - * Whatever the correct behaviour is, let's at least have only pixman's - * implementation to worry about. - */ - return _cairo_quartz_setup_fallback_source (surface, abspat); - } - - mat = abspat->matrix; + mat = gradient->base.matrix; cairo_matrix_invert (&mat); - _cairo_quartz_cairo_matrix_to_quartz (&mat, &surface->sourceTransform); + _cairo_quartz_cairo_matrix_to_quartz (&mat, &state->transform); - rgb = CGColorSpaceCreateDeviceRGB(); + gradFunc = _cairo_quartz_create_gradient_function (gradient, + extents, + &start, + &end); - start = CGPointMake (_cairo_fixed_to_double (lpat->p1.x), - _cairo_fixed_to_double (lpat->p1.y)); - end = CGPointMake (_cairo_fixed_to_double (lpat->p2.x), - _cairo_fixed_to_double (lpat->p2.y)); + if (unlikely (gradFunc == NULL)) + return CAIRO_INT_STATUS_UNSUPPORTED; - if (abspat->extend == CAIRO_EXTEND_NONE || - abspat->extend == CAIRO_EXTEND_PAD) - { - gradFunc = CreateGradientFunction (&lpat->base); + rgb = CGColorSpaceCreateDeviceRGB (); + + if (gradient->base.type == CAIRO_PATTERN_TYPE_LINEAR) { + state->shading = CGShadingCreateAxial (rgb, + CGPointMake (start.center.x, + start.center.y), + CGPointMake (end.center.x, + end.center.y), + gradFunc, + extend, extend); } else { - gradFunc = CreateRepeatingLinearGradientFunction (surface, - &lpat->base, - &start, &end, - extents); + state->shading = CGShadingCreateRadial (rgb, + CGPointMake (start.center.x, + start.center.y), + MAX (start.radius, 0), + CGPointMake (end.center.x, + end.center.y), + MAX (end.radius, 0), + gradFunc, + extend, extend); } - surface->sourceShading = CGShadingCreateAxial (rgb, - start, end, - gradFunc, - extend, extend); - - CGColorSpaceRelease(rgb); - CGFunctionRelease(gradFunc); + CGColorSpaceRelease (rgb); + CGFunctionRelease (gradFunc); - return DO_SHADING; + state->action = DO_SHADING; + return CAIRO_STATUS_SUCCESS; } -static cairo_quartz_action_t -_cairo_quartz_setup_radial_source (cairo_quartz_surface_t *surface, - const cairo_radial_pattern_t *rpat, - cairo_rectangle_int_t *extents) +static cairo_int_status_t +_cairo_quartz_setup_state (cairo_quartz_drawing_state_t *state, + cairo_quartz_surface_t *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_clip_t *clip) { - const cairo_pattern_t *abspat = &rpat->base.base; - cairo_matrix_t mat; - CGPoint start, end; - CGFunctionRef gradFunc; - CGColorSpaceRef rgb; - bool extend = abspat->extend == CAIRO_EXTEND_PAD; - double c1x = _cairo_fixed_to_double (rpat->c1.x); - double c1y = _cairo_fixed_to_double (rpat->c1.y); - double c2x = _cairo_fixed_to_double (rpat->c2.x); - double c2y = _cairo_fixed_to_double (rpat->c2.y); - double r1 = _cairo_fixed_to_double (rpat->r1); - double r2 = _cairo_fixed_to_double (rpat->r2); - double dx = c1x - c2x; - double dy = c1y - c2y; - double centerDistance = sqrt (dx*dx + dy*dy); - - if (rpat->base.n_stops == 0) { - CGContextSetRGBStrokeColor (surface->cgContext, 0., 0., 0., 0.); - CGContextSetRGBFillColor (surface->cgContext, 0., 0., 0., 0.); - return DO_SOLID; - } - - if (r2 <= centerDistance + r1 + 1e-6 && /* circle 2 doesn't contain circle 1 */ - r1 <= centerDistance + r2 + 1e-6) { /* circle 1 doesn't contain circle 2 */ - /* Quartz handles cases where neither circle contains the other very - * differently from pixman. - * Whatever the correct behaviour is, let's at least have only pixman's - * implementation to worry about. - * Note that this also catches the cases where r1 == r2. - */ - return _cairo_quartz_setup_fallback_source (surface, abspat); - } + cairo_bool_t needs_temp; + cairo_status_t status; - mat = abspat->matrix; - cairo_matrix_invert (&mat); - _cairo_quartz_cairo_matrix_to_quartz (&mat, &surface->sourceTransform); + state->layer = NULL; + state->image = NULL; + state->shading = NULL; + state->cgDrawContext = NULL; + state->cgMaskContext = NULL; - rgb = CGColorSpaceCreateDeviceRGB(); + status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + if (unlikely (status)) + return status; - start = CGPointMake (c1x, c1y); - end = CGPointMake (c2x, c2y); + status = _cairo_quartz_surface_set_cairo_operator (surface, op); + if (unlikely (status)) + return status; - if (abspat->extend == CAIRO_EXTEND_NONE || - abspat->extend == CAIRO_EXTEND_PAD) - { - gradFunc = CreateGradientFunction (&rpat->base); - } else { - gradFunc = CreateRepeatingRadialGradientFunction (surface, - &rpat->base, - &start, &r1, - &end, &r2, - extents); - } + /* Save before we change the pattern, colorspace, etc. so that + * we can restore and make sure that quartz releases our + * pattern (which may be stack allocated) + */ - surface->sourceShading = CGShadingCreateRadial (rgb, - start, - r1, - end, - r2, - gradFunc, - extend, extend); + CGContextSaveGState (surface->cgContext); + state->clipRect = CGContextGetClipBoundingBox (surface->cgContext); + state->clipRect = CGRectIntegral (state->clipRect); + state->rect = state->clipRect; - CGColorSpaceRelease(rgb); - CGFunctionRelease(gradFunc); + state->cgMaskContext = surface->cgContext; + state->cgDrawContext = state->cgMaskContext; - return DO_SHADING; -} + state->filter = _cairo_quartz_filter_to_quartz (source->filter); -static cairo_quartz_action_t -_cairo_quartz_setup_source (cairo_quartz_surface_t *surface, - const cairo_pattern_t *source, - cairo_rectangle_int_t *extents) -{ - assert (!(surface->sourceImage || surface->sourceShading || surface->sourcePattern)); + if (op == CAIRO_OPERATOR_CLEAR) { + CGContextSetRGBFillColor (state->cgDrawContext, 0, 0, 0, 1); - surface->oldInterpolationQuality = CGContextGetInterpolationQuality (surface->cgContext); - CGContextSetInterpolationQuality (surface->cgContext, _cairo_quartz_filter_to_quartz (source->filter)); + state->action = DO_DIRECT; + return CAIRO_STATUS_SUCCESS; + } + + /* + * To implement mask unbounded operations Quartz needs a temporary + * surface which will be composited entirely (ignoring the mask). + * To implement source unbounded operations Quartz needs a + * temporary surface which allows extending the source to a size + * covering the whole mask, but there are some optimization + * opportunities: + * + * - CLEAR completely ignores the source, thus we can just use a + * solid color fill. + * + * - SOURCE can be implemented by drawing the source and clearing + * outside of the source as long as the two regions have no + * intersection. This happens when the source is a pixel-aligned + * rectangle. If the source is at least as big as the + * intersection between the clip rectangle and the mask + * rectangle, no clear operation is needed. + */ + needs_temp = ! _cairo_operator_bounded_by_mask (op); + + if (needs_temp) { + state->layer = CGLayerCreateWithContext (surface->cgContext, + state->clipRect.size, + NULL); + state->cgDrawContext = CGLayerGetContext (state->layer); + state->cgMaskContext = state->cgDrawContext; + CGContextTranslateCTM (state->cgDrawContext, + -state->clipRect.origin.x, + -state->clipRect.origin.y); + } if (source->type == CAIRO_PATTERN_TYPE_SOLID) { cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) source; - CGContextSetRGBStrokeColor (surface->cgContext, + CGContextSetRGBStrokeColor (state->cgDrawContext, solid->color.red, solid->color.green, solid->color.blue, solid->color.alpha); - CGContextSetRGBFillColor (surface->cgContext, + CGContextSetRGBFillColor (state->cgDrawContext, solid->color.red, solid->color.green, solid->color.blue, solid->color.alpha); - return DO_SOLID; + state->action = DO_DIRECT; + return CAIRO_STATUS_SUCCESS; } - if (source->type == CAIRO_PATTERN_TYPE_LINEAR) { - const cairo_linear_pattern_t *lpat = (const cairo_linear_pattern_t *)source; - return _cairo_quartz_setup_linear_source (surface, lpat, extents); - } + if (source->type == CAIRO_PATTERN_TYPE_LINEAR || + source->type == CAIRO_PATTERN_TYPE_RADIAL) + { + const cairo_gradient_pattern_t *gpat = (const cairo_gradient_pattern_t *)source; + cairo_rectangle_int_t extents; + + extents = surface->virtual_extents; + extents.x -= surface->base.device_transform.x0; + extents.y -= surface->base.device_transform.y0; + _cairo_rectangle_union (&extents, &surface->extents); - if (source->type == CAIRO_PATTERN_TYPE_RADIAL) { - const cairo_radial_pattern_t *rpat = (const cairo_radial_pattern_t *)source; - return _cairo_quartz_setup_radial_source (surface, rpat, extents); + return _cairo_quartz_setup_gradient_source (state, gpat, &extents); } if (source->type == CAIRO_PATTERN_TYPE_SURFACE && @@ -1585,33 +1196,57 @@ _cairo_quartz_setup_source (cairo_quartz_surface_t *surface, CGImageRef img; cairo_matrix_t m = spat->base.matrix; cairo_rectangle_int_t extents; - cairo_status_t status; CGAffineTransform xform; CGRect srcRect; cairo_fixed_t fw, fh; cairo_bool_t is_bounded; - status = _cairo_surface_to_cgimage ((cairo_surface_t *) surface, pat_surf, &img); - if (status) - return DO_UNSUPPORTED; - if (img == NULL) - return DO_NOTHING; + status = _cairo_surface_to_cgimage (pat_surf, &img); + if (unlikely (status)) + return status; + if (unlikely (img == NULL)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - CGContextSetRGBFillColor (surface->cgContext, 0, 0, 0, 1); + state->image = img; - surface->sourceImage = img; + if (state->filter == kCGInterpolationNone && _cairo_matrix_is_translation (&m)) { + m.x0 = -ceil (m.x0 - 0.5); + m.y0 = -ceil (m.y0 - 0.5); + } else { + cairo_matrix_invert (&m); + } - cairo_matrix_invert(&m); - _cairo_quartz_cairo_matrix_to_quartz (&m, &surface->sourceTransform); + _cairo_quartz_cairo_matrix_to_quartz (&m, &state->transform); is_bounded = _cairo_surface_get_extents (pat_surf, &extents); assert (is_bounded); + srcRect = CGRectMake (0, 0, extents.width, extents.height); + if (source->extend == CAIRO_EXTEND_NONE) { - surface->sourceImageRect = CGRectMake (0, 0, extents.width, extents.height); - return DO_IMAGE; + int x, y; + if (op == CAIRO_OPERATOR_SOURCE && + (pat_surf->content == CAIRO_CONTENT_ALPHA || + ! _cairo_matrix_is_integer_translation (&m, &x, &y))) + { + state->layer = CGLayerCreateWithContext (surface->cgContext, + state->clipRect.size, + NULL); + state->cgDrawContext = CGLayerGetContext (state->layer); + CGContextTranslateCTM (state->cgDrawContext, + -state->clipRect.origin.x, + -state->clipRect.origin.y); + } + + CGContextSetRGBFillColor (state->cgDrawContext, 0, 0, 0, 1); + + state->rect = srcRect; + state->action = DO_IMAGE; + return CAIRO_STATUS_SUCCESS; } + CGContextSetRGBFillColor (state->cgDrawContext, 0, 0, 0, 1); + /* Quartz seems to tile images at pixel-aligned regions only -- this * leads to seams if the image doesn't end up scaling to fill the * space exactly. The CGPattern tiling approach doesn't have this @@ -1619,10 +1254,9 @@ _cairo_quartz_setup_source (cairo_quartz_surface_t *surface, * epsilon), and if not, fall back to the CGPattern type. */ - xform = CGAffineTransformConcat (CGContextGetCTM (surface->cgContext), - surface->sourceTransform); + xform = CGAffineTransformConcat (CGContextGetCTM (state->cgDrawContext), + state->transform); - srcRect = CGRectMake (0, 0, extents.width, extents.height); srcRect = CGRectApplyAffineTransform (srcRect, xform); fw = _cairo_fixed_from_double (srcRect.size.width); @@ -1634,16 +1268,16 @@ _cairo_quartz_setup_source (cairo_quartz_surface_t *surface, /* We're good to use DrawTiledImage, but ensure that * the math works out */ - srcRect.size.width = round(srcRect.size.width); - srcRect.size.height = round(srcRect.size.height); + srcRect.size.width = round (srcRect.size.width); + srcRect.size.height = round (srcRect.size.height); xform = CGAffineTransformInvert (xform); srcRect = CGRectApplyAffineTransform (srcRect, xform); - surface->sourceImageRect = srcRect; - - return DO_TILED_IMAGE; + state->rect = srcRect; + state->action = DO_TILED_IMAGE; + return CAIRO_STATUS_SUCCESS; } /* Fall through to generic SURFACE case */ @@ -1652,90 +1286,100 @@ _cairo_quartz_setup_source (cairo_quartz_surface_t *surface, if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { cairo_quartz_float_t patternAlpha = 1.0f; CGColorSpaceRef patternSpace; - CGPatternRef pattern; + CGPatternRef pattern = NULL; cairo_int_status_t status; status = _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (surface, source, &pattern); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return DO_NOTHING; - if (status) - return DO_UNSUPPORTED; - - // Save before we change the pattern, colorspace, etc. so that - // we can restore and make sure that quartz releases our - // pattern (which may be stack allocated) - CGContextSaveGState(surface->cgContext); - - patternSpace = CGColorSpaceCreatePattern(NULL); - CGContextSetFillColorSpace (surface->cgContext, patternSpace); - CGContextSetFillPattern (surface->cgContext, pattern, &patternAlpha); - CGContextSetStrokeColorSpace (surface->cgContext, patternSpace); - CGContextSetStrokePattern (surface->cgContext, pattern, &patternAlpha); + if (unlikely (status)) + return status; + + patternSpace = CGColorSpaceCreatePattern (NULL); + CGContextSetFillColorSpace (state->cgDrawContext, patternSpace); + CGContextSetFillPattern (state->cgDrawContext, pattern, &patternAlpha); + CGContextSetStrokeColorSpace (state->cgDrawContext, patternSpace); + CGContextSetStrokePattern (state->cgDrawContext, pattern, &patternAlpha); CGColorSpaceRelease (patternSpace); /* Quartz likes to munge the pattern phase (as yet unexplained * why); force it to 0,0 as we've already baked in the correct * pattern translation into the pattern matrix */ - CGContextSetPatternPhase (surface->cgContext, CGSizeMake(0,0)); + CGContextSetPatternPhase (state->cgDrawContext, CGSizeMake (0, 0)); - surface->sourcePattern = pattern; + CGPatternRelease (pattern); - return DO_PATTERN; + state->action = DO_DIRECT; + return CAIRO_STATUS_SUCCESS; } - return DO_UNSUPPORTED; + return CAIRO_INT_STATUS_UNSUPPORTED; } static void -_cairo_quartz_teardown_source (cairo_quartz_surface_t *surface, - const cairo_pattern_t *source) +_cairo_quartz_teardown_state (cairo_quartz_drawing_state_t *state, + cairo_quartz_surface_t *surface) { - CGContextSetInterpolationQuality (surface->cgContext, surface->oldInterpolationQuality); + if (state->layer) { + CGContextDrawLayerInRect (surface->cgContext, + state->clipRect, + state->layer); + CGContextRelease (state->cgDrawContext); + CGLayerRelease (state->layer); + } - if (surface->sourceImage) { - CGImageRelease(surface->sourceImage); - surface->sourceImage = NULL; + if (state->cgMaskContext) + CGContextRestoreGState (surface->cgContext); - cairo_surface_destroy(surface->sourceImageSurface); - surface->sourceImageSurface = NULL; - } + if (state->image) + CGImageRelease (state->image); - if (surface->sourceShading) { - CGShadingRelease(surface->sourceShading); - surface->sourceShading = NULL; + if (state->shading) + CGShadingRelease (state->shading); +} + +static void +_cairo_quartz_draw_source (cairo_quartz_drawing_state_t *state, + cairo_operator_t op) +{ + CGContextSetShouldAntialias (state->cgDrawContext, state->filter != kCGInterpolationNone); + CGContextSetInterpolationQuality(state->cgDrawContext, state->filter); + + if (state->action == DO_DIRECT) { + CGContextFillRect (state->cgDrawContext, state->rect); + return; } - if (surface->sourcePattern) { - CGPatternRelease(surface->sourcePattern); - // To tear down the pattern and colorspace - CGContextRestoreGState(surface->cgContext); + CGContextConcatCTM (state->cgDrawContext, state->transform); - surface->sourcePattern = NULL; + if (state->action == DO_SHADING) { + CGContextDrawShading (state->cgDrawContext, state->shading); + return; } -} + CGContextTranslateCTM (state->cgDrawContext, 0, state->rect.size.height); + CGContextScaleCTM (state->cgDrawContext, 1, -1); -static void -_cairo_quartz_draw_image (cairo_quartz_surface_t *surface, cairo_operator_t op, cairo_quartz_action_t action) -{ - assert (surface && surface->sourceImage && (action == DO_IMAGE || action == DO_TILED_IMAGE)); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextTranslateCTM (surface->cgContext, 0, surface->sourceImageRect.size.height); - CGContextScaleCTM (surface->cgContext, 1, -1); - - if (action == DO_IMAGE) { - CGContextDrawImage (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - if (!_cairo_operator_bounded_by_source(op)) { - CGContextBeginPath (surface->cgContext); - CGContextAddRect (surface->cgContext, surface->sourceImageRect); - CGContextAddRect (surface->cgContext, CGContextGetClipBoundingBox (surface->cgContext)); - CGContextSetRGBFillColor (surface->cgContext, 0, 0, 0, 0); - CGContextEOFillPath (surface->cgContext); + if (state->action == DO_IMAGE) { + CGContextDrawImage (state->cgDrawContext, state->rect, state->image); + if (op == CAIRO_OPERATOR_SOURCE && + state->cgDrawContext == state->cgMaskContext) + { + CGContextBeginPath (state->cgDrawContext); + CGContextAddRect (state->cgDrawContext, state->rect); + + CGContextTranslateCTM (state->cgDrawContext, 0, state->rect.size.height); + CGContextScaleCTM (state->cgDrawContext, 1, -1); + CGContextConcatCTM (state->cgDrawContext, + CGAffineTransformInvert (state->transform)); + + CGContextAddRect (state->cgDrawContext, state->clipRect); + + CGContextSetRGBFillColor (state->cgDrawContext, 0, 0, 0, 0); + CGContextEOFillPath (state->cgDrawContext); } - } else - CGContextDrawTiledImagePtr (surface->cgContext, surface->sourceImageRect, surface->sourceImage); + } else { + CGContextDrawTiledImagePtr (state->cgDrawContext, state->rect, state->image); + } } @@ -1751,37 +1395,33 @@ _cairo_quartz_get_image (cairo_quartz_surface_t *surface, unsigned char *imageData; cairo_image_surface_t *isurf; - if (IS_EMPTY(surface)) { + if (IS_EMPTY (surface)) { *image_out = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0, 0); return CAIRO_STATUS_SUCCESS; } if (surface->imageSurfaceEquiv) { - *image_out = (cairo_image_surface_t*) cairo_surface_reference(surface->imageSurfaceEquiv); + *image_out = (cairo_image_surface_t*) cairo_surface_reference (surface->imageSurfaceEquiv); return CAIRO_STATUS_SUCCESS; } - if (_cairo_quartz_is_cgcontext_bitmap_context(surface->cgContext)) { + if (_cairo_quartz_is_cgcontext_bitmap_context (surface->cgContext)) { unsigned int stride; unsigned int bitinfo; unsigned int bpc, bpp; CGColorSpaceRef colorspace; unsigned int color_comps; - imageData = (unsigned char *) CGBitmapContextGetData(surface->cgContext); + imageData = (unsigned char *) CGBitmapContextGetData (surface->cgContext); -#ifdef USE_10_3_WORKAROUNDS - bitinfo = CGBitmapContextGetAlphaInfo (surface->cgContext); -#else bitinfo = CGBitmapContextGetBitmapInfo (surface->cgContext); -#endif stride = CGBitmapContextGetBytesPerRow (surface->cgContext); bpp = CGBitmapContextGetBitsPerPixel (surface->cgContext); bpc = CGBitmapContextGetBitsPerComponent (surface->cgContext); // let's hope they don't add YUV under us colorspace = CGBitmapContextGetColorSpace (surface->cgContext); - color_comps = CGColorSpaceGetNumberOfComponents(colorspace); + color_comps = CGColorSpaceGetNumberOfComponents (colorspace); // XXX TODO: We can handle all of these by converting to // pixman masks, including non-native-endian masks @@ -1842,9 +1482,9 @@ _cairo_quartz_surface_finish (void *abstract_surface) { cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - ND((stderr, "_cairo_quartz_surface_finish[%p] cgc: %p\n", surface, surface->cgContext)); + ND ((stderr, "_cairo_quartz_surface_finish[%p] cgc: %p\n", surface, surface->cgContext)); - if (IS_EMPTY(surface)) + if (IS_EMPTY (surface)) return CAIRO_STATUS_SUCCESS; /* Restore our saved gstate that we use to reset clipping */ @@ -1876,10 +1516,10 @@ _cairo_quartz_surface_acquire_source_image (void *abstract_surface, cairo_int_status_t status; cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - //ND((stderr, "%p _cairo_quartz_surface_acquire_source_image\n", surface)); + //ND ((stderr, "%p _cairo_quartz_surface_acquire_source_image\n", surface)); status = _cairo_quartz_get_image (surface, image_out); - if (status) + if (unlikely (status)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); *image_extra = NULL; @@ -1906,10 +1546,10 @@ _cairo_quartz_surface_snapshot (void *abstract_surface) static void _cairo_quartz_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) + cairo_image_surface_t *image, + void *image_extra) { - cairo_surface_destroy ((cairo_surface_t *) image); + cairo_surface_destroy (&image->base); } @@ -1923,10 +1563,10 @@ _cairo_quartz_surface_acquire_dest_image (void *abstract_surface, cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; cairo_int_status_t status; - ND((stderr, "%p _cairo_quartz_surface_acquire_dest_image\n", surface)); + ND ((stderr, "%p _cairo_quartz_surface_acquire_dest_image\n", surface)); status = _cairo_quartz_get_image (surface, image_out); - if (status) + if (unlikely (status)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); *image_rect = surface->extents; @@ -1944,19 +1584,19 @@ _cairo_quartz_surface_release_dest_image (void *abstract_surface, { //cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - //ND((stderr, "%p _cairo_quartz_surface_release_dest_image\n", surface)); + //ND ((stderr, "%p _cairo_quartz_surface_release_dest_image\n", surface)); - cairo_surface_destroy ((cairo_surface_t *) image); + cairo_surface_destroy (&image->base); } static cairo_surface_t * _cairo_quartz_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) + cairo_content_t content, + int width, + int height) { - /*cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;*/ - + cairo_quartz_surface_t *surface, *similar_quartz; + cairo_surface_t *similar; cairo_format_t format; if (content == CAIRO_CONTENT_COLOR_ALPHA) @@ -1969,12 +1609,20 @@ _cairo_quartz_surface_create_similar (void *abstract_surface, return NULL; // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) { + if (!_cairo_quartz_verify_surface_size (width, height)) { return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); } - return cairo_quartz_surface_create (format, width, height); + similar = cairo_quartz_surface_create (format, width, height); + if (unlikely (similar->status)) + return similar; + + surface = (cairo_quartz_surface_t *) abstract_surface; + similar_quartz = (cairo_quartz_surface_t *) similar; + similar_quartz->virtual_extents = surface->virtual_extents; + + return similar; } static cairo_status_t @@ -1996,14 +1644,12 @@ _cairo_quartz_surface_clone_similar (void *abstract_surface, *clone_out = NULL; // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) { + if (!_cairo_quartz_verify_surface_size (width, height)) return CAIRO_INT_STATUS_UNSUPPORTED; - } if (width == 0 || height == 0) { - *clone_out = (cairo_surface_t*) - _cairo_quartz_surface_create_internal (NULL, CAIRO_CONTENT_COLOR_ALPHA, - width, height); + *clone_out = &_cairo_quartz_surface_create_internal (NULL, CAIRO_CONTENT_COLOR_ALPHA, + width, height)->base; *clone_offset_x = 0; *clone_offset_y = 0; return CAIRO_STATUS_SUCCESS; @@ -2012,24 +1658,24 @@ _cairo_quartz_surface_clone_similar (void *abstract_surface, if (_cairo_surface_is_quartz (src)) { cairo_quartz_surface_t *qsurf = (cairo_quartz_surface_t *) src; - if (IS_EMPTY(qsurf)) { - *clone_out = (cairo_surface_t*) - _cairo_quartz_surface_create_internal (NULL, CAIRO_CONTENT_COLOR_ALPHA, - qsurf->extents.width, qsurf->extents.height); + if (IS_EMPTY (qsurf)) { + *clone_out = &_cairo_quartz_surface_create_internal (NULL, + CAIRO_CONTENT_COLOR_ALPHA, + qsurf->extents.width, + qsurf->extents.height)->base; *clone_offset_x = 0; *clone_offset_y = 0; return CAIRO_STATUS_SUCCESS; } } - status = _cairo_surface_to_cgimage ((cairo_surface_t*) abstract_surface, src, &quartz_image); - if (status) + status = _cairo_surface_to_cgimage (src, &quartz_image); + if (unlikely (status)) return CAIRO_INT_STATUS_UNSUPPORTED; new_format = CAIRO_FORMAT_ARGB32; /* assumed */ - if (_cairo_surface_is_image (src)) { + if (_cairo_surface_is_image (src)) new_format = ((cairo_image_surface_t *) src)->format; - } new_surface = (cairo_quartz_surface_t *) cairo_quartz_surface_create (new_format, width, height); @@ -2044,12 +1690,11 @@ _cairo_quartz_surface_clone_similar (void *abstract_surface, CGContextSaveGState (new_surface->cgContext); - CGContextSetCompositeOperation (new_surface->cgContext, - kPrivateCGCompositeCopy); + _cairo_quartz_surface_set_cairo_operator (new_surface, CAIRO_OPERATOR_SOURCE); CGContextTranslateCTM (new_surface->cgContext, -src_x, -src_y); CGContextDrawImage (new_surface->cgContext, - CGRectMake (0, 0, CGImageGetWidth(quartz_image), CGImageGetHeight(quartz_image)), + CGRectMake (0, 0, CGImageGetWidth (quartz_image), CGImageGetHeight (quartz_image)), quartz_image); CGContextRestoreGState (new_surface->cgContext); @@ -2059,7 +1704,7 @@ _cairo_quartz_surface_clone_similar (void *abstract_surface, FINISH: *clone_offset_x = src_x; *clone_offset_y = src_y; - *clone_out = (cairo_surface_t*) new_surface; + *clone_out = &new_surface->base; return CAIRO_STATUS_SUCCESS; } @@ -2075,73 +1720,32 @@ _cairo_quartz_surface_get_extents (void *abstract_surface, } static cairo_int_status_t -_cairo_quartz_surface_paint_cg (void *abstract_surface, +_cairo_quartz_surface_paint_cg (cairo_quartz_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, cairo_clip_t *clip) { - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; + cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - ND((stderr, "%p _cairo_quartz_surface_paint op %d source->type %d\n", surface, op, source->type)); + ND ((stderr, "%p _cairo_quartz_surface_paint op %d source->type %d\n", surface, op, source->type)); - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - rv = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (unlikely (rv)) - return rv; + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - rv = _cairo_quartz_surface_set_cairo_operator (surface, op); + rv = _cairo_quartz_setup_state (&state, surface, op, source, clip); if (unlikely (rv)) - return rv == CAIRO_INT_STATUS_NOTHING_TO_DO ? CAIRO_STATUS_SUCCESS : rv; + goto BAIL; - action = _cairo_quartz_setup_source (surface, source, NULL); + _cairo_quartz_draw_source (&state, op); - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextFillRect (surface->cgContext, CGRectMake(surface->extents.x, - surface->extents.y, - surface->extents.width, - surface->extents.height)); - } else if (action == DO_SHADING) { - CGContextSaveGState (surface->cgContext); - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - CGContextRestoreGState (surface->cgContext); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - CGContextSaveGState (surface->cgContext); - _cairo_quartz_draw_image (surface, op, action); - CGContextRestoreGState (surface->cgContext); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; - } - - _cairo_quartz_teardown_source (surface, source); +BAIL: + _cairo_quartz_teardown_state (&state, surface); - ND((stderr, "-- paint\n")); + ND ((stderr, "-- paint\n")); return rv; } -static cairo_bool_t -_cairo_quartz_source_needs_extents (const cairo_pattern_t *source) -{ - /* For repeating gradients we need to manually extend the gradient and - repeat stops, since Quartz doesn't support repeating gradients natively. - We need to minimze the number of repeated stops, and since rasterization - depends on the number of repetitions we use (even if some of the - repetitions go beyond the extents of the object or outside the clip - region), it's important to use the same number of repetitions when - rendering an object no matter what the clip region is. So the - computation of the repetition count cannot depended on the clip region, - and should only depend on the object extents, so we need to compute - the object extents for repeating gradients. */ - return (source->type == CAIRO_PATTERN_TYPE_LINEAR || - source->type == CAIRO_PATTERN_TYPE_RADIAL) && - (source->extend == CAIRO_EXTEND_REPEAT || - source->extend == CAIRO_EXTEND_REFLECT); -} - static cairo_int_status_t _cairo_quartz_surface_paint (void *abstract_surface, cairo_operator_t op, @@ -2152,7 +1756,7 @@ _cairo_quartz_surface_paint (void *abstract_surface, cairo_int_status_t rv; cairo_image_surface_t *image; - rv = _cairo_quartz_surface_paint_cg (abstract_surface, + rv = _cairo_quartz_surface_paint_cg (surface, op, source, clip); @@ -2161,7 +1765,7 @@ _cairo_quartz_surface_paint (void *abstract_surface, return rv; rv = _cairo_quartz_get_image (surface, &image); - if (rv == CAIRO_STATUS_SUCCESS) { + if (likely (rv == CAIRO_STATUS_SUCCESS)) { rv = _cairo_surface_paint (&image->base, op, source, clip); cairo_surface_destroy (&image->base); } @@ -2170,7 +1774,7 @@ _cairo_quartz_surface_paint (void *abstract_surface, } static cairo_int_status_t -_cairo_quartz_surface_fill_cg (void *abstract_surface, +_cairo_quartz_surface_fill_cg (cairo_quartz_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, cairo_path_fixed_t *path, @@ -2179,87 +1783,41 @@ _cairo_quartz_surface_fill_cg (void *abstract_surface, cairo_antialias_t antialias, cairo_clip_t *clip) { - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; + cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - CGPathRef path_for_unbounded = NULL; - - ND((stderr, "%p _cairo_quartz_surface_fill op %d source->type %d\n", surface, op, source->type)); - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; + ND ((stderr, "%p _cairo_quartz_surface_fill op %d source->type %d\n", surface, op, source->type)); - rv = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (unlikely (rv)) - return rv; + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - rv = _cairo_quartz_surface_set_cairo_operator (surface, op); + rv = _cairo_quartz_setup_state (&state, surface, op, source, clip); if (unlikely (rv)) - return rv == CAIRO_INT_STATUS_NOTHING_TO_DO ? CAIRO_STATUS_SUCCESS : rv; - - CGContextSaveGState (surface->cgContext); - - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - - if (_cairo_quartz_source_needs_extents (source)) - { - /* We don't need precise extents since these are only used to - compute the number of gradient reptitions needed to cover the - object. */ - cairo_rectangle_int_t path_extents; - _cairo_path_fixed_approximate_fill_extents (path, &path_extents); - action = _cairo_quartz_setup_source (surface, source, &path_extents); - } else { - action = _cairo_quartz_setup_source (surface, source, NULL); - } - - _cairo_quartz_cairo_path_to_quartz_context (path, surface->cgContext); + goto BAIL; - if (!_cairo_operator_bounded_by_mask(op) && CGContextCopyPathPtr) - path_for_unbounded = CGContextCopyPathPtr (surface->cgContext); + CGContextSetShouldAntialias (state.cgMaskContext, (antialias != CAIRO_ANTIALIAS_NONE)); - if (action == DO_SOLID || action == DO_PATTERN) { - if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextFillPath (surface->cgContext); - else - CGContextEOFillPath (surface->cgContext); - } else if (action == DO_SHADING) { + _cairo_quartz_cairo_path_to_quartz_context (path, state.cgMaskContext); - // we have to clip and then paint the shading; we can't fill - // with the shading + if (state.action == DO_DIRECT) { + assert (state.cgDrawContext == state.cgMaskContext); if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextClip (surface->cgContext); + CGContextFillPath (state.cgMaskContext); else - CGContextEOClip (surface->cgContext); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { + CGContextEOFillPath (state.cgMaskContext); + } else { if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextClip (surface->cgContext); + CGContextClip (state.cgMaskContext); else - CGContextEOClip (surface->cgContext); + CGContextEOClip (state.cgMaskContext); - _cairo_quartz_draw_image (surface, op, action); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; + _cairo_quartz_draw_source (&state, op); } - _cairo_quartz_teardown_source (surface, source); - - CGContextRestoreGState (surface->cgContext); - - if (path_for_unbounded) { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_STROKE_FILL; - ub.u.stroke_fill.cgPath = path_for_unbounded; - ub.u.stroke_fill.fill_rule = fill_rule; - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, antialias); - CGPathRelease (path_for_unbounded); - } +BAIL: + _cairo_quartz_teardown_state (&state, surface); - ND((stderr, "-- fill\n")); + ND ((stderr, "-- fill\n")); return rv; } @@ -2277,7 +1835,7 @@ _cairo_quartz_surface_fill (void *abstract_surface, cairo_int_status_t rv; cairo_image_surface_t *image; - rv = _cairo_quartz_surface_fill_cg (abstract_surface, + rv = _cairo_quartz_surface_fill_cg (surface, op, source, path, @@ -2290,7 +1848,7 @@ _cairo_quartz_surface_fill (void *abstract_surface, return rv; rv = _cairo_quartz_get_image (surface, &image); - if (rv == CAIRO_STATUS_SUCCESS) { + if (likely (rv == CAIRO_STATUS_SUCCESS)) { rv = _cairo_surface_fill (&image->base, op, source, path, fill_rule, tolerance, antialias, clip); @@ -2301,7 +1859,7 @@ _cairo_quartz_surface_fill (void *abstract_surface, } static cairo_int_status_t -_cairo_quartz_surface_stroke_cg (void *abstract_surface, +_cairo_quartz_surface_stroke_cg (cairo_quartz_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, cairo_path_fixed_t *path, @@ -2312,124 +1870,74 @@ _cairo_quartz_surface_stroke_cg (void *abstract_surface, cairo_antialias_t antialias, cairo_clip_t *clip) { - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; + cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - CGAffineTransform origCTM, strokeTransform; - CGPathRef path_for_unbounded = NULL; - - ND((stderr, "%p _cairo_quartz_surface_stroke op %d source->type %d\n", surface, op, source->type)); + CGAffineTransform strokeTransform, invStrokeTransform; - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; + ND ((stderr, "%p _cairo_quartz_surface_stroke op %d source->type %d\n", surface, op, source->type)); - rv = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (unlikely (rv)) - return rv; + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; - rv = _cairo_quartz_surface_set_cairo_operator (surface, op); + rv = _cairo_quartz_setup_state (&state, surface, op, source, clip); if (unlikely (rv)) - return rv == CAIRO_INT_STATUS_NOTHING_TO_DO ? CAIRO_STATUS_SUCCESS : rv; + goto BAIL; // Turning antialiasing off used to cause misrendering with // single-pixel lines (e.g. 20,10.5 -> 21,10.5 end up being rendered as 2 pixels). // That's been since fixed in at least 10.5, and in the latest 10.4 dot releases. - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - CGContextSetLineWidth (surface->cgContext, style->line_width); - CGContextSetLineCap (surface->cgContext, _cairo_quartz_cairo_line_cap_to_quartz (style->line_cap)); - CGContextSetLineJoin (surface->cgContext, _cairo_quartz_cairo_line_join_to_quartz (style->line_join)); - CGContextSetMiterLimit (surface->cgContext, style->miter_limit); - - origCTM = CGContextGetCTM (surface->cgContext); + CGContextSetShouldAntialias (state.cgMaskContext, (antialias != CAIRO_ANTIALIAS_NONE)); + CGContextSetLineWidth (state.cgMaskContext, style->line_width); + CGContextSetLineCap (state.cgMaskContext, _cairo_quartz_cairo_line_cap_to_quartz (style->line_cap)); + CGContextSetLineJoin (state.cgMaskContext, _cairo_quartz_cairo_line_join_to_quartz (style->line_join)); + CGContextSetMiterLimit (state.cgMaskContext, style->miter_limit); if (style->dash && style->num_dashes) { -#define STATIC_DASH 32 - cairo_quartz_float_t sdash[STATIC_DASH]; + cairo_quartz_float_t sdash[CAIRO_STACK_ARRAY_LENGTH (cairo_quartz_float_t)]; cairo_quartz_float_t *fdash = sdash; unsigned int max_dashes = style->num_dashes; unsigned int k; if (style->num_dashes%2) max_dashes *= 2; - if (max_dashes > STATIC_DASH) + if (max_dashes > ARRAY_LENGTH (sdash)) fdash = _cairo_malloc_ab (max_dashes, sizeof (cairo_quartz_float_t)); - if (fdash == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + if (unlikely (fdash == NULL)) { + rv = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto BAIL; + } for (k = 0; k < max_dashes; k++) fdash[k] = (cairo_quartz_float_t) style->dash[k % style->num_dashes]; - CGContextSetLineDash (surface->cgContext, style->dash_offset, fdash, max_dashes); + CGContextSetLineDash (state.cgMaskContext, style->dash_offset, fdash, max_dashes); if (fdash != sdash) free (fdash); } else - CGContextSetLineDash (surface->cgContext, 0, NULL, 0); - - CGContextSaveGState (surface->cgContext); - - - if (_cairo_quartz_source_needs_extents (source)) - { - cairo_rectangle_int_t path_extents; - _cairo_path_fixed_approximate_stroke_extents (path, style, ctm, &path_extents); - action = _cairo_quartz_setup_source (surface, source, &path_extents); - } else { - action = _cairo_quartz_setup_source (surface, source, NULL); - } + CGContextSetLineDash (state.cgMaskContext, 0, NULL, 0); - _cairo_quartz_cairo_path_to_quartz_context (path, surface->cgContext); - - if (!_cairo_operator_bounded_by_mask (op) && CGContextCopyPathPtr) - path_for_unbounded = CGContextCopyPathPtr (surface->cgContext); + _cairo_quartz_cairo_path_to_quartz_context (path, state.cgMaskContext); _cairo_quartz_cairo_matrix_to_quartz (ctm, &strokeTransform); - CGContextConcatCTM (surface->cgContext, strokeTransform); - - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextStrokePath (surface->cgContext); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - CGContextReplacePathWithStrokedPath (surface->cgContext); - CGContextClip (surface->cgContext); + CGContextConcatCTM (state.cgMaskContext, strokeTransform); - CGContextSetCTM (surface->cgContext, origCTM); - _cairo_quartz_draw_image (surface, op, action); - } else if (action == DO_SHADING) { - CGContextReplacePathWithStrokedPath (surface->cgContext); - CGContextClip (surface->cgContext); + if (state.action == DO_DIRECT) { + assert (state.cgDrawContext == state.cgMaskContext); + CGContextStrokePath (state.cgMaskContext); + } else { + CGContextReplacePathWithStrokedPath (state.cgMaskContext); + CGContextClip (state.cgMaskContext); - CGContextSetCTM (surface->cgContext, origCTM); + _cairo_quartz_cairo_matrix_to_quartz (ctm_inverse, &invStrokeTransform); + CGContextConcatCTM (state.cgMaskContext, invStrokeTransform); - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; + _cairo_quartz_draw_source (&state, op); } - _cairo_quartz_teardown_source (surface, source); - - CGContextRestoreGState (surface->cgContext); - - if (path_for_unbounded) { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_STROKE_FILL; - ub.u.stroke_fill.fill_rule = CAIRO_FILL_RULE_WINDING; - - CGContextBeginPath (surface->cgContext); - CGContextAddPath (surface->cgContext, path_for_unbounded); - CGPathRelease (path_for_unbounded); - - CGContextSaveGState (surface->cgContext); - CGContextConcatCTM (surface->cgContext, strokeTransform); - CGContextReplacePathWithStrokedPath (surface->cgContext); - CGContextRestoreGState (surface->cgContext); - - ub.u.stroke_fill.cgPath = CGContextCopyPathPtr (surface->cgContext); - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, antialias); - CGPathRelease (ub.u.stroke_fill.cgPath); - } +BAIL: + _cairo_quartz_teardown_state (&state, surface); - ND((stderr, "-- stroke\n")); + ND ((stderr, "-- stroke\n")); return rv; } @@ -2449,7 +1957,7 @@ _cairo_quartz_surface_stroke (void *abstract_surface, cairo_int_status_t rv; cairo_image_surface_t *image; - rv = _cairo_quartz_surface_stroke_cg (abstract_surface, op, source, + rv = _cairo_quartz_surface_stroke_cg (surface, op, source, path, style, ctm, ctm_inverse, tolerance, antialias, clip); @@ -2458,7 +1966,7 @@ _cairo_quartz_surface_stroke (void *abstract_surface, return rv; rv = _cairo_quartz_get_image (surface, &image); - if (rv == CAIRO_STATUS_SUCCESS) { + if (likely (rv == CAIRO_STATUS_SUCCESS)) { rv = _cairo_surface_stroke (&image->base, op, source, path, style, ctm, ctm_inverse, tolerance, antialias, @@ -2471,7 +1979,7 @@ _cairo_quartz_surface_stroke (void *abstract_surface, #if CAIRO_HAS_QUARTZ_FONT static cairo_int_status_t -_cairo_quartz_surface_show_glyphs_cg (void *abstract_surface, +_cairo_quartz_surface_show_glyphs_cg (cairo_quartz_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, cairo_glyph_t *glyphs, @@ -2480,113 +1988,93 @@ _cairo_quartz_surface_show_glyphs_cg (void *abstract_surface, cairo_clip_t *clip, int *remaining_glyphs) { - CGAffineTransform textTransform, ctm, invTextTransform; -#define STATIC_BUF_SIZE 64 - CGGlyph glyphs_static[STATIC_BUF_SIZE]; - CGSize cg_advances_static[STATIC_BUF_SIZE]; + CGAffineTransform textTransform, invTextTransform; + CGGlyph glyphs_static[CAIRO_STACK_ARRAY_LENGTH (CGSize)]; + CGSize cg_advances_static[CAIRO_STACK_ARRAY_LENGTH (CGSize)]; CGGlyph *cg_glyphs = &glyphs_static[0]; CGSize *cg_advances = &cg_advances_static[0]; + COMPILE_TIME_ASSERT (sizeof (CGGlyph) <= sizeof (CGSize)); - cairo_rectangle_int_t glyph_extents; - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; + cairo_quartz_drawing_state_t state; cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; cairo_quartz_float_t xprev, yprev; int i; CGFontRef cgfref = NULL; - cairo_bool_t isClipping = FALSE; cairo_bool_t didForceFontSmoothing = FALSE; - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; if (num_glyphs <= 0) - return CAIRO_STATUS_SUCCESS; + return CAIRO_INT_STATUS_NOTHING_TO_DO; if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_QUARTZ) return CAIRO_INT_STATUS_UNSUPPORTED; - rv = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + rv = _cairo_quartz_setup_state (&state, surface, op, source, clip); if (unlikely (rv)) - return rv; - - rv = _cairo_quartz_surface_set_cairo_operator (surface, op); - if (unlikely (rv)) - return rv == CAIRO_INT_STATUS_NOTHING_TO_DO ? CAIRO_STATUS_SUCCESS : rv; - - CGContextSaveGState (surface->cgContext); + goto BAIL; - if (_cairo_quartz_source_needs_extents (source) && - !_cairo_scaled_font_glyph_device_extents (scaled_font, glyphs, num_glyphs, - &glyph_extents, NULL)) - { - action = _cairo_quartz_setup_source (surface, source, &glyph_extents); + if (state.action == DO_DIRECT) { + assert (state.cgDrawContext == state.cgMaskContext); + CGContextSetTextDrawingMode (state.cgMaskContext, kCGTextFill); } else { - action = _cairo_quartz_setup_source (surface, source, NULL); - } - - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextSetTextDrawingMode (surface->cgContext, kCGTextFill); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE || action == DO_SHADING) { - CGContextSetTextDrawingMode (surface->cgContext, kCGTextClip); - isClipping = TRUE; - } else { - if (action != DO_NOTHING) - rv = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; + CGContextSetTextDrawingMode (state.cgMaskContext, kCGTextClip); } /* this doesn't addref */ cgfref = _cairo_quartz_scaled_font_get_cg_font_ref (scaled_font); - CGContextSetFont (surface->cgContext, cgfref); - CGContextSetFontSize (surface->cgContext, 1.0); + CGContextSetFont (state.cgMaskContext, cgfref); + CGContextSetFontSize (state.cgMaskContext, 1.0); switch (scaled_font->options.antialias) { case CAIRO_ANTIALIAS_SUBPIXEL: - CGContextSetShouldAntialias (surface->cgContext, TRUE); - CGContextSetShouldSmoothFonts (surface->cgContext, TRUE); + CGContextSetShouldAntialias (state.cgMaskContext, TRUE); + CGContextSetShouldSmoothFonts (state.cgMaskContext, TRUE); if (CGContextSetAllowsFontSmoothingPtr && - !CGContextGetAllowsFontSmoothingPtr (surface->cgContext)) + !CGContextGetAllowsFontSmoothingPtr (state.cgMaskContext)) { didForceFontSmoothing = TRUE; - CGContextSetAllowsFontSmoothingPtr (surface->cgContext, TRUE); + CGContextSetAllowsFontSmoothingPtr (state.cgMaskContext, TRUE); } break; case CAIRO_ANTIALIAS_NONE: - CGContextSetShouldAntialias (surface->cgContext, FALSE); + CGContextSetShouldAntialias (state.cgMaskContext, FALSE); break; case CAIRO_ANTIALIAS_GRAY: - CGContextSetShouldAntialias (surface->cgContext, TRUE); - CGContextSetShouldSmoothFonts (surface->cgContext, FALSE); + CGContextSetShouldAntialias (state.cgMaskContext, TRUE); + CGContextSetShouldSmoothFonts (state.cgMaskContext, FALSE); break; case CAIRO_ANTIALIAS_DEFAULT: /* Don't do anything */ break; } - if (num_glyphs > STATIC_BUF_SIZE) { - cg_glyphs = (CGGlyph*) _cairo_malloc_ab (num_glyphs, sizeof(CGGlyph)); - if (cg_glyphs == NULL) { + if (num_glyphs > ARRAY_LENGTH (glyphs_static)) { + cg_glyphs = (CGGlyph*) _cairo_malloc_ab (num_glyphs, sizeof (CGGlyph) + sizeof (CGSize)); + if (unlikely (cg_glyphs == NULL)) { rv = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto BAIL; } - cg_advances = (CGSize*) _cairo_malloc_ab (num_glyphs, sizeof(CGSize)); - if (cg_advances == NULL) { - rv = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } + cg_advances = (CGSize*) (cg_glyphs + num_glyphs); } textTransform = CGAffineTransformMake (scaled_font->scale.xx, scaled_font->scale.yx, - -scaled_font->scale.xy, - -scaled_font->scale.yy, - 0, 0); - _cairo_quartz_cairo_matrix_to_quartz (&scaled_font->scale_inverse, &invTextTransform); + scaled_font->scale.xy, + scaled_font->scale.yy, + 0.0, 0.0); - CGContextSetTextMatrix (surface->cgContext, CGAffineTransformIdentity); + invTextTransform = CGAffineTransformMake (scaled_font->scale_inverse.xx, + scaled_font->scale_inverse.yx, + scaled_font->scale_inverse.xy, + scaled_font->scale_inverse.yy, + 0.0, 0.0); + + CGContextSetTextPosition (state.cgMaskContext, 0.0, 0.0); + CGContextSetTextMatrix (state.cgMaskContext, CGAffineTransformIdentity); /* Convert our glyph positions to glyph advances. We need n-1 advances, * since the advance at index 0 is applied after glyph 0. */ @@ -2599,64 +2087,36 @@ _cairo_quartz_surface_show_glyphs_cg (void *abstract_surface, cairo_quartz_float_t xf = glyphs[i].x; cairo_quartz_float_t yf = glyphs[i].y; cg_glyphs[i] = glyphs[i].index; - cg_advances[i - 1] = CGSizeApplyAffineTransform(CGSizeMake (xf - xprev, yf - yprev), invTextTransform); + cg_advances[i - 1] = CGSizeApplyAffineTransform (CGSizeMake (xf - xprev, yf - yprev), invTextTransform); xprev = xf; yprev = yf; } /* Translate to the first glyph's position before drawing */ - ctm = CGContextGetCTM (surface->cgContext); - CGContextTranslateCTM (surface->cgContext, glyphs[0].x, glyphs[0].y); - CGContextConcatCTM (surface->cgContext, textTransform); + CGContextTranslateCTM (state.cgMaskContext, glyphs[0].x, glyphs[0].y); + CGContextConcatCTM (state.cgMaskContext, textTransform); + CGContextScaleCTM (state.cgMaskContext, 1.0, -1.0); - CGContextShowGlyphsWithAdvances (surface->cgContext, + CGContextShowGlyphsWithAdvances (state.cgMaskContext, cg_glyphs, cg_advances, num_glyphs); - CGContextSetCTM (surface->cgContext, ctm); + CGContextScaleCTM (state.cgMaskContext, 1.0, -1.0); + CGContextConcatCTM (state.cgMaskContext, invTextTransform); + CGContextTranslateCTM (state.cgMaskContext, -glyphs[0].x, -glyphs[0].y); - if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - _cairo_quartz_draw_image (surface, op, action); - } else if (action == DO_SHADING) { - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } + if (state.action != DO_DIRECT) + _cairo_quartz_draw_source (&state, op); BAIL: - _cairo_quartz_teardown_source (surface, source); - if (didForceFontSmoothing) - CGContextSetAllowsFontSmoothingPtr (surface->cgContext, FALSE); - - CGContextRestoreGState (surface->cgContext); - - if (rv == CAIRO_STATUS_SUCCESS && - cgfref && - !_cairo_operator_bounded_by_mask (op)) - { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_SHOW_GLYPHS; - - ub.u.show_glyphs.isClipping = isClipping; - ub.u.show_glyphs.cg_glyphs = cg_glyphs; - ub.u.show_glyphs.cg_advances = cg_advances; - ub.u.show_glyphs.nglyphs = num_glyphs; - ub.u.show_glyphs.textTransform = textTransform; - ub.u.show_glyphs.font = cgfref; - ub.u.show_glyphs.origin = CGPointMake (glyphs[0].x, glyphs[0].y); - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, scaled_font->options.antialias); - } + CGContextSetAllowsFontSmoothingPtr (state.cgMaskContext, FALSE); + _cairo_quartz_teardown_state (&state, surface); - if (cg_advances != &cg_advances_static[0]) { - free (cg_advances); - } - - if (cg_glyphs != &glyphs_static[0]) { + if (cg_glyphs != glyphs_static) free (cg_glyphs); - } return rv; } @@ -2677,7 +2137,7 @@ _cairo_quartz_surface_show_glyphs (void *abstract_surface, cairo_image_surface_t *image; #if CAIRO_HAS_QUARTZ_FONT - rv = _cairo_quartz_surface_show_glyphs_cg (abstract_surface, op, source, + rv = _cairo_quartz_surface_show_glyphs_cg (surface, op, source, glyphs, num_glyphs, scaled_font, clip, remaining_glyphs); @@ -2687,7 +2147,7 @@ _cairo_quartz_surface_show_glyphs (void *abstract_surface, #endif rv = _cairo_quartz_get_image (surface, &image); - if (rv == CAIRO_STATUS_SUCCESS) { + if (likely (rv == CAIRO_STATUS_SUCCESS)) { rv = _cairo_surface_show_text_glyphs (&image->base, op, source, NULL, 0, glyphs, num_glyphs, @@ -2701,148 +2161,186 @@ _cairo_quartz_surface_show_glyphs (void *abstract_surface, static cairo_int_status_t _cairo_quartz_surface_mask_with_surface (cairo_quartz_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_surface_pattern_t *mask, - cairo_clip_t *clip) + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_surface_t *mask_surf, + const cairo_matrix_t *mask_mat, + CGInterpolationQuality filter, + cairo_clip_t *clip) { CGRect rect; CGImageRef img; - cairo_surface_t *pat_surf = mask->surface; cairo_status_t status = CAIRO_STATUS_SUCCESS; - CGAffineTransform ctm, mask_matrix; + CGAffineTransform mask_matrix; + cairo_quartz_drawing_state_t state; - status = _cairo_surface_to_cgimage ((cairo_surface_t *) surface, pat_surf, &img); - if (status) + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; + + status = _cairo_surface_to_cgimage (mask_surf, &img); + if (unlikely (status)) return status; - if (img == NULL) { - if (!_cairo_operator_bounded_by_mask (op)) - CGContextClearRect (surface->cgContext, CGContextGetClipBoundingBox (surface->cgContext)); - return CAIRO_STATUS_SUCCESS; - } - rect = CGRectMake (0.0f, 0.0f, CGImageGetWidth (img) , CGImageGetHeight (img)); + status = _cairo_quartz_setup_state (&state, surface, op, source, clip); + if (unlikely (status)) + goto BAIL; - CGContextSaveGState (surface->cgContext); + if (unlikely (img == NULL)) + goto BAIL; + + rect = CGRectMake (0.0, 0.0, CGImageGetWidth (img), CGImageGetHeight (img)); + _cairo_quartz_cairo_matrix_to_quartz (mask_mat, &mask_matrix); /* ClipToMask is essentially drawing an image, so we need to flip the CTM * to get the image to appear oriented the right way */ - ctm = CGContextGetCTM (surface->cgContext); + CGContextConcatCTM (state.cgMaskContext, CGAffineTransformInvert (mask_matrix)); + CGContextTranslateCTM (state.cgMaskContext, 0.0, rect.size.height); + CGContextScaleCTM (state.cgMaskContext, 1.0, -1.0); - _cairo_quartz_cairo_matrix_to_quartz (&mask->base.matrix, &mask_matrix); - mask_matrix = CGAffineTransformInvert(mask_matrix); - mask_matrix = CGAffineTransformTranslate (mask_matrix, 0.0, CGImageGetHeight (img)); - mask_matrix = CGAffineTransformScale (mask_matrix, 1.0, -1.0); + state.filter = filter; - CGContextConcatCTM (surface->cgContext, mask_matrix); - CGContextClipToMaskPtr (surface->cgContext, rect, img); + CGContextSetInterpolationQuality (state.cgMaskContext, filter); + CGContextSetShouldAntialias (state.cgMaskContext, filter != kCGInterpolationNone); - CGContextSetCTM (surface->cgContext, ctm); + CGContextClipToMask (state.cgMaskContext, rect, img); - status = _cairo_quartz_surface_paint_cg (surface, op, source, clip); + CGContextScaleCTM (state.cgMaskContext, 1.0, -1.0); + CGContextTranslateCTM (state.cgMaskContext, 0.0, -rect.size.height); + CGContextConcatCTM (state.cgMaskContext, mask_matrix); - CGContextRestoreGState (surface->cgContext); + _cairo_quartz_draw_source (&state, op); - if (!_cairo_operator_bounded_by_mask (op)) { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_MASK; - ub.u.mask.mask = img; - ub.u.mask.maskTransform = mask_matrix; - _cairo_quartz_fixup_unbounded_operation (surface, &ub, CAIRO_ANTIALIAS_NONE); - } +BAIL: + _cairo_quartz_teardown_state (&state, surface); CGImageRelease (img); return status; } -/* This is somewhat less than ideal, but it gets the job done; - * it would be better to avoid calling back into cairo. This - * creates a temporary surface to use as the mask. - */ static cairo_int_status_t -_cairo_quartz_surface_mask_with_generic (cairo_quartz_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_pattern_t *mask, - cairo_clip_t *clip) +_cairo_quartz_surface_mask_with_solid (cairo_quartz_surface_t *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + double alpha, + cairo_clip_t *clip) { - int width = surface->extents.width; - int height = surface->extents.height; - - cairo_surface_t *gradient_surf = NULL; - cairo_surface_pattern_t surface_pattern; - cairo_int_status_t status; - - /* Render the gradient to a surface */ - gradient_surf = cairo_quartz_surface_create (CAIRO_FORMAT_A8, - width, - height); + cairo_quartz_drawing_state_t state; + cairo_status_t status; - status = _cairo_quartz_surface_paint (gradient_surf, CAIRO_OPERATOR_SOURCE, mask, NULL); - if (status) + status = _cairo_quartz_setup_state (&state, surface, op, source, clip); + if (unlikely (status)) goto BAIL; - _cairo_pattern_init_for_surface (&surface_pattern, gradient_surf); + CGContextSetAlpha (surface->cgContext, alpha); + _cairo_quartz_draw_source (&state, op); - status = _cairo_quartz_surface_mask_with_surface (surface, op, source, &surface_pattern, clip); - - _cairo_pattern_fini (&surface_pattern.base); - - BAIL: - if (gradient_surf) - cairo_surface_destroy (gradient_surf); +BAIL: + _cairo_quartz_teardown_state (&state, surface); return status; } static cairo_int_status_t -_cairo_quartz_surface_mask_cg (void *abstract_surface, +_cairo_quartz_surface_mask_cg (cairo_quartz_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, cairo_clip_t *clip) { - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - - ND((stderr, "%p _cairo_quartz_surface_mask op %d source->type %d mask->type %d\n", surface, op, source->type, mask->type)); + cairo_surface_t *mask_surf; + cairo_matrix_t matrix; + cairo_status_t status; + cairo_bool_t need_temp; + CGInterpolationQuality filter; - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; + ND ((stderr, "%p _cairo_quartz_surface_mask op %d source->type %d mask->type %d\n", surface, op, source->type, mask->type)); - rv = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (unlikely (rv)) - return rv; + if (IS_EMPTY (surface)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; if (mask->type == CAIRO_PATTERN_TYPE_SOLID) { - /* This is easy; we just need to paint with the alpha. */ - cairo_solid_pattern_t *solid_mask = (cairo_solid_pattern_t *) mask; + const cairo_solid_pattern_t *mask_solid; - CGContextSetAlpha (surface->cgContext, solid_mask->color.alpha); - rv = _cairo_quartz_surface_paint_cg (surface, op, source, clip); - CGContextSetAlpha (surface->cgContext, 1.0); + mask_solid = (const cairo_solid_pattern_t *) mask; + return _cairo_quartz_surface_mask_with_solid (surface, op, source, + mask_solid->color.alpha, + clip); + } - return rv; + need_temp = (mask->type != CAIRO_PATTERN_TYPE_SURFACE || + mask->extend != CAIRO_EXTEND_NONE); + + filter = _cairo_quartz_filter_to_quartz (source->filter); + + if (! need_temp) { + mask_surf = ((const cairo_surface_pattern_t *) mask)->surface; + + /* When an opaque surface used as a mask in Quartz, its + * luminosity is used as the alpha value, so we con only use + * surfaces with alpha without creating a temporary mask. */ + need_temp = ! (mask_surf->content & CAIRO_CONTENT_ALPHA); } - /* If we have CGContextClipToMask, we can do more complex masks */ - if (CGContextClipToMaskPtr) { - /* For these, we can skip creating a temporary surface, since we already have one */ - if (mask->type == CAIRO_PATTERN_TYPE_SURFACE && mask->extend == CAIRO_EXTEND_NONE) - return _cairo_quartz_surface_mask_with_surface (surface, op, source, (cairo_surface_pattern_t *) mask, clip); + if (! need_temp) { + CGInterpolationQuality mask_filter; + cairo_bool_t simple_transform; + + matrix = mask->matrix; + + mask_filter = _cairo_quartz_filter_to_quartz (mask->filter); + if (mask_filter == kCGInterpolationNone) { + simple_transform = _cairo_matrix_is_translation (&matrix); + if (simple_transform) { + matrix.x0 = ceil (matrix.x0 - 0.5); + matrix.y0 = ceil (matrix.y0 - 0.5); + } + } else { + simple_transform = _cairo_matrix_is_integer_translation (&matrix, + NULL, + NULL); + } - return _cairo_quartz_surface_mask_with_generic (surface, op, source, mask, clip); + /* Quartz only allows one interpolation to be set for mask and + * source, so we can skip the temp surface only if the source + * filtering makes the mask look correct. */ + if (source->type == CAIRO_PATTERN_TYPE_SURFACE) + need_temp = ! (simple_transform || filter == mask_filter); + else + filter = mask_filter; } - /* So, CGContextClipToMask is not present in 10.3.9, so we're - * doomed; if we have imageData, we can do fallback, otherwise - * just pretend success. - */ - if (surface->imageData) - return CAIRO_INT_STATUS_UNSUPPORTED; + if (need_temp) { + /* Render the mask to a surface */ + mask_surf = _cairo_quartz_surface_create_similar (surface, + CAIRO_CONTENT_ALPHA, + surface->extents.width, + surface->extents.height); + status = mask_surf->status; + if (unlikely (status)) + goto BAIL; - return CAIRO_STATUS_SUCCESS; + /* mask_surf is clear, so use OVER instead of SOURCE to avoid a + * temporary layer or fallback to cairo-image. */ + status = _cairo_surface_paint (mask_surf, CAIRO_OPERATOR_OVER, mask, NULL); + if (unlikely (status)) + goto BAIL; + + cairo_matrix_init_identity (&matrix); + } + + status = _cairo_quartz_surface_mask_with_surface (surface, op, source, + mask_surf, + &matrix, + filter, + clip); + +BAIL: + + if (need_temp) + cairo_surface_destroy (mask_surf); + + return status; } static cairo_int_status_t @@ -2856,7 +2354,7 @@ _cairo_quartz_surface_mask (void *abstract_surface, cairo_int_status_t rv; cairo_image_surface_t *image; - rv = _cairo_quartz_surface_mask_cg (abstract_surface, + rv = _cairo_quartz_surface_mask_cg (surface, op, source, mask, @@ -2866,7 +2364,7 @@ _cairo_quartz_surface_mask (void *abstract_surface, return rv; rv = _cairo_quartz_get_image (surface, &image); - if (rv == CAIRO_STATUS_SUCCESS) { + if (likely (rv == CAIRO_STATUS_SUCCESS)) { rv = _cairo_surface_mask (&image->base, op, source, mask, clip); cairo_surface_destroy (&image->base); } @@ -2884,9 +2382,9 @@ _cairo_quartz_surface_clipper_intersect_clip_path (cairo_surface_clipper_t *clip cairo_quartz_surface_t *surface = cairo_container_of (clipper, cairo_quartz_surface_t, clipper); - ND((stderr, "%p _cairo_quartz_surface_intersect_clip_path path: %p\n", surface, path)); + ND ((stderr, "%p _cairo_quartz_surface_intersect_clip_path path: %p\n", surface, path)); - if (IS_EMPTY(surface)) + if (IS_EMPTY (surface)) return CAIRO_STATUS_SUCCESS; if (path == NULL) { @@ -2910,7 +2408,7 @@ _cairo_quartz_surface_clipper_intersect_clip_path (cairo_surface_clipper_t *clip CGContextEOClip (surface->cgContext); } - ND((stderr, "-- intersect_clip_path\n")); + ND ((stderr, "-- intersect_clip_path\n")); return CAIRO_STATUS_SUCCESS; } @@ -2954,20 +2452,20 @@ static const struct _cairo_surface_backend cairo_quartz_surface_backend = { cairo_quartz_surface_t * _cairo_quartz_surface_create_internal (CGContextRef cgContext, - cairo_content_t content, - unsigned int width, - unsigned int height) + cairo_content_t content, + unsigned int width, + unsigned int height) { cairo_quartz_surface_t *surface; - quartz_ensure_symbols(); + quartz_ensure_symbols (); /* Init the base surface */ - surface = malloc(sizeof(cairo_quartz_surface_t)); - if (surface == NULL) + surface = malloc (sizeof (cairo_quartz_surface_t)); + if (unlikely (surface == NULL)) return (cairo_quartz_surface_t*) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - memset(surface, 0, sizeof(cairo_quartz_surface_t)); + memset (surface, 0, sizeof (cairo_quartz_surface_t)); _cairo_surface_init (&surface->base, &cairo_quartz_surface_backend, @@ -2981,8 +2479,9 @@ _cairo_quartz_surface_create_internal (CGContextRef cgContext, surface->extents.x = surface->extents.y = 0; surface->extents.width = width; surface->extents.height = height; + surface->virtual_extents = surface->extents; - if (IS_EMPTY(surface)) { + if (IS_EMPTY (surface)) { surface->cgContext = NULL; surface->cgContextBaseCTM = CGAffineTransformIdentity; surface->imageData = NULL; @@ -3037,17 +2536,12 @@ cairo_quartz_surface_create_for_cg_context (CGContextRef cgContext, { cairo_quartz_surface_t *surf; - CGContextRetain (cgContext); - surf = _cairo_quartz_surface_create_internal (cgContext, CAIRO_CONTENT_COLOR_ALPHA, width, height); - if (surf->base.status) { - CGContextRelease (cgContext); - // create_internal will have set an error - return (cairo_surface_t*) surf; - } + if (likely (!surf->base.status)) + CGContextRetain (cgContext); - return (cairo_surface_t *) surf; + return &surf->base; } /** @@ -3079,18 +2573,18 @@ cairo_quartz_surface_create (cairo_format_t format, int bitsPerComponent; // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) + if (!_cairo_quartz_verify_surface_size (width, height)) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); if (width == 0 || height == 0) { - return (cairo_surface_t*) _cairo_quartz_surface_create_internal (NULL, _cairo_content_from_format (format), - width, height); + return &_cairo_quartz_surface_create_internal (NULL, _cairo_content_from_format (format), + width, height)->base; } if (format == CAIRO_FORMAT_ARGB32 || format == CAIRO_FORMAT_RGB24) { - cgColorspace = CGColorSpaceCreateDeviceRGB(); + cgColorspace = CGColorSpaceCreateDeviceRGB (); bitinfo = kCGBitmapByteOrder32Host; if (format == CAIRO_FORMAT_ARGB32) bitinfo |= kCGImageAlphaPremultipliedFirst; @@ -3120,7 +2614,7 @@ cairo_quartz_surface_create (cairo_format_t format, stride = (stride + 15) & ~15; imageData = _cairo_malloc_ab (height, stride); - if (!imageData) { + if (unlikely (!imageData)) { CGColorSpaceRelease (cgColorspace); return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } @@ -3152,13 +2646,13 @@ cairo_quartz_surface_create (cairo_format_t format, CGContextRelease (cgc); free (imageData); // create_internal will have set an error - return (cairo_surface_t*) surf; + return &surf->base; } surf->imageData = imageData; surf->imageSurfaceEquiv = cairo_image_surface_create_for_data (imageData, format, width, height, stride); - return (cairo_surface_t *) surf; + return &surf->base; } /** @@ -3168,6 +2662,13 @@ cairo_quartz_surface_create (cairo_format_t format, * Returns the CGContextRef that the given Quartz surface is backed * by. * + * A call to cairo_surface_flush() is required before using the + * CGContextRef to ensure that all pending drawing operations are + * finished and to restore any temporary modification cairo has made + * to its state. A call to cairo_surface_mark_dirty() is required + * after the state or the content of the CGContextRef has been + * modified. + * * Return value: the CGContextRef for the given surface. * * Since: 1.4 @@ -3194,11 +2695,11 @@ _cairo_surface_is_quartz (const cairo_surface_t *surface) #include -void ExportCGImageToPNGFile(CGImageRef inImageRef, char* dest) +void ExportCGImageToPNGFile (CGImageRef inImageRef, char* dest) { Handle dataRef = NULL; OSType dataRefType; - CFStringRef inPath = CFStringCreateWithCString(NULL, dest, kCFStringEncodingASCII); + CFStringRef inPath = CFStringCreateWithCString (NULL, dest, kCFStringEncodingASCII); GraphicsExportComponent grex = 0; unsigned long sizeWritten; @@ -3206,35 +2707,35 @@ void ExportCGImageToPNGFile(CGImageRef inImageRef, char* dest) ComponentResult result; // create the data reference - result = QTNewDataReferenceFromFullPathCFString(inPath, kQTNativeDefaultPathStyle, - 0, &dataRef, &dataRefType); + result = QTNewDataReferenceFromFullPathCFString (inPath, kQTNativeDefaultPathStyle, + 0, &dataRef, &dataRefType); if (NULL != dataRef && noErr == result) { // get the PNG exporter - result = OpenADefaultComponent(GraphicsExporterComponentType, kQTFileTypePNG, - &grex); + result = OpenADefaultComponent (GraphicsExporterComponentType, kQTFileTypePNG, + &grex); if (grex) { // tell the exporter where to find its source image - result = GraphicsExportSetInputCGImage(grex, inImageRef); + result = GraphicsExportSetInputCGImage (grex, inImageRef); if (noErr == result) { // tell the exporter where to save the exporter image - result = GraphicsExportSetOutputDataReference(grex, dataRef, - dataRefType); + result = GraphicsExportSetOutputDataReference (grex, dataRef, + dataRefType); if (noErr == result) { // write the PNG file - result = GraphicsExportDoExport(grex, &sizeWritten); + result = GraphicsExportDoExport (grex, &sizeWritten); } } // remember to close the component - CloseComponent(grex); + CloseComponent (grex); } // remember to dispose of the data reference handle - DisposeHandle(dataRef); + DisposeHandle (dataRef); } } @@ -3251,7 +2752,7 @@ quartz_image_to_png (CGImageRef imgref, char *dest) dest = sptr; } - ExportCGImageToPNGFile(imgref, dest); + ExportCGImageToPNGFile (imgref, dest); } void @@ -3278,9 +2779,9 @@ quartz_surface_to_png (cairo_quartz_surface_t *nq, char *dest) return; } - ExportCGImageToPNGFile(imgref, dest); + ExportCGImageToPNGFile (imgref, dest); - CGImageRelease(imgref); + CGImageRelease (imgref); } #endif /* QUARTZ_DEBUG */ diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c index 79d51e8..ce8a95a 100644 --- a/src/cairo-recording-surface.c +++ b/src/cairo-recording-surface.c @@ -54,12 +54,12 @@ * operations applied to the recording surface had instead been applied to the * target surface, you can use code like this: * - * cairo_t *cr; + * cairo_t *cr; * - * cr = cairo_create (target); - * cairo_set_source_surface (cr, recording_surface, 0.0, 0.0); - * cairo_paint (cr); - * cairo_destroy (cr); + * cr = cairo_create (target); + * cairo_set_source_surface (cr, recording_surface, 0.0, 0.0); + * cairo_paint (cr); + * cairo_destroy (cr); * * * A recording surface is logically unbounded, i.e. it has no implicit constraint @@ -249,13 +249,16 @@ _cairo_recording_surface_finish (void *abstract_surface) } static cairo_status_t -_cairo_recording_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) +_cairo_recording_surface_acquire_source_image_transformed (void *abstract_surface, + cairo_matrix_t *device_transform, + cairo_image_surface_t **image_out, + void **image_extra) { cairo_status_t status; cairo_recording_surface_t *surface = abstract_surface; cairo_surface_t *image; + double width; + double height; image = _cairo_surface_has_snapshot (&surface->base, &_cairo_image_surface_backend); @@ -265,9 +268,10 @@ _cairo_recording_surface_acquire_source_image (void *abstract_surface, return CAIRO_STATUS_SUCCESS; } + width = surface->extents.width * device_transform->xx; + height = surface->extents.height * device_transform->yy; image = _cairo_image_surface_create_with_content (surface->content, - surface->extents.width, - surface->extents.height); + width, height); if (unlikely (image->status)) return image->status; @@ -275,6 +279,8 @@ _cairo_recording_surface_acquire_source_image (void *abstract_surface, -surface->extents.x, -surface->extents.y); + _cairo_surface_set_device_scale (image, + device_transform->xx, device_transform->yy); status = _cairo_recording_surface_replay (&surface->base, image); if (unlikely (status)) { cairo_surface_destroy (image); @@ -288,6 +294,19 @@ _cairo_recording_surface_acquire_source_image (void *abstract_surface, return CAIRO_STATUS_SUCCESS; } +static cairo_status_t +_cairo_recording_surface_acquire_source_image (void *abstract_surface, + cairo_image_surface_t **image_out, + void **image_extra) +{ + cairo_matrix_t identity; + + cairo_matrix_init_identity (&identity); + + return _cairo_recording_surface_acquire_source_image_transformed ( + abstract_surface, &identity, image_out, image_extra); +} + static void _cairo_recording_surface_release_source_image (void *abstract_surface, cairo_image_surface_t *image, @@ -729,7 +748,8 @@ static const cairo_surface_backend_t cairo_recording_surface_backend = { NULL, /* can_repaint_solid_pattern_surface */ _cairo_recording_surface_has_show_text_glyphs, - _cairo_recording_surface_show_text_glyphs + _cairo_recording_surface_show_text_glyphs, + _cairo_recording_surface_acquire_source_image_transformed }; cairo_int_status_t @@ -781,7 +801,7 @@ _cairo_recording_surface_get_path (cairo_surface_t *surface, case CAIRO_COMMAND_FILL: { status = _cairo_path_fixed_append (path, - &command->fill.path, CAIRO_DIRECTION_FORWARD, + &command->fill.path, 0, 0); break; } @@ -898,8 +918,8 @@ _cairo_recording_surface_replay_internal (cairo_surface_t *surface, if (stroke_command != NULL && stroke_command->header.type == CAIRO_COMMAND_STROKE && - _cairo_path_fixed_is_equal (&command->fill.path, - &stroke_command->stroke.path)) + _cairo_path_fixed_equal (&command->fill.path, + &stroke_command->stroke.path)) { status = _cairo_surface_wrapper_fill_stroke (&wrapper, command->header.op, diff --git a/src/cairo-rectangle.c b/src/cairo-rectangle.c index cc27180..3a541eb 100644 --- a/src/cairo-rectangle.c +++ b/src/cairo-rectangle.c @@ -39,6 +39,8 @@ #include "cairoint.h" +#include "cairo-box-private.h" + cairo_private void _cairo_box_from_doubles (cairo_box_t *box, double *x1, double *y1, @@ -149,6 +151,29 @@ _cairo_rectangle_intersect (cairo_rectangle_int_t *dst, } } +/* Extends the dst rectangle to also contain src. + * If one of the rectangles is empty, the result is undefined + */ +void +_cairo_rectangle_union (cairo_rectangle_int_t *dst, + const cairo_rectangle_int_t *src) +{ + int x1, y1, x2, y2; + + x1 = MIN (dst->x, src->x); + y1 = MIN (dst->y, src->y); + /* Beware the unsigned promotion, fortunately we have bits to spare + * as (CAIRO_RECT_INT_MAX - CAIRO_RECT_INT_MIN) < UINT_MAX + */ + x2 = MAX (dst->x + (int) dst->width, src->x + (int) src->width); + y2 = MAX (dst->y + (int) dst->height, src->y + (int) src->height); + + dst->x = x1; + dst->y = y1; + dst->width = x2 - x1; + dst->height = y2 - y1; +} + #define P1x (line->p1.x) #define P1y (line->p1.y) #define P2x (line->p2.x) @@ -238,11 +263,31 @@ _cairo_box_intersects_line_segment (cairo_box_t *box, cairo_line_t *line) return FALSE; } -cairo_bool_t -_cairo_box_contains_point (cairo_box_t *box, const cairo_point_t *point) +static cairo_status_t +_cairo_box_add_spline_point (void *closure, + const cairo_point_t *point) { - if (point->x < box->p1.x || point->x > box->p2.x || - point->y < box->p1.y || point->y > box->p2.y) - return FALSE; - return TRUE; + _cairo_box_add_point (closure, point); + + return CAIRO_STATUS_SUCCESS; +} + +/* assumes a has been previously added */ +void +_cairo_box_add_curve_to (cairo_box_t *extents, + const cairo_point_t *a, + const cairo_point_t *b, + const cairo_point_t *c, + const cairo_point_t *d) +{ + _cairo_box_add_point (extents, d); + if (!_cairo_box_contains_point (extents, b) || + !_cairo_box_contains_point (extents, c)) + { + cairo_status_t status; + + status = _cairo_spline_bound (_cairo_box_add_spline_point, + extents, a, b, c, d); + assert (status == CAIRO_STATUS_SUCCESS); + } } diff --git a/src/cairo-region.c b/src/cairo-region.c index 112b1d8..b15f151 100644 --- a/src/cairo-region.c +++ b/src/cairo-region.c @@ -104,6 +104,7 @@ _cairo_region_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_SLANT: case CAIRO_STATUS_INVALID_WEIGHT: case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_region_t *) &_cairo_region_nil; diff --git a/src/cairo-scaled-font-subsets-private.h b/src/cairo-scaled-font-subsets-private.h index b165d9a..5277394 100644 --- a/src/cairo-scaled-font-subsets-private.h +++ b/src/cairo-scaled-font-subsets-private.h @@ -47,6 +47,7 @@ typedef struct _cairo_scaled_font_subsets_glyph { unsigned int subset_glyph_index; cairo_bool_t is_scaled; cairo_bool_t is_composite; + cairo_bool_t is_latin; double x_advance; double y_advance; cairo_bool_t utf8_is_mapped; @@ -124,6 +125,18 @@ _cairo_scaled_font_subsets_create_composite (void); cairo_private void _cairo_scaled_font_subsets_destroy (cairo_scaled_font_subsets_t *font_subsets); +/** + * _cairo_scaled_font_subsets_enable_latin_subset: + * @font_subsets: a #cairo_scaled_font_subsets_t object to be destroyed + * @use_latin: a #cairo_bool_t indicating if a latin subset is to be used + * + * If enabled, all CP1252 characters will be placed in a separate + * 8-bit latin subset. + **/ +cairo_private void +_cairo_scaled_font_subsets_enable_latin_subset (cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t use_latin); + /** * _cairo_scaled_font_subsets_map_glyph: * @font_subsets: a #cairo_scaled_font_subsets_t @@ -373,6 +386,15 @@ _cairo_cff_subset_init (cairo_cff_subset_t *cff_subset, cairo_private void _cairo_cff_subset_fini (cairo_cff_subset_t *cff_subset); +/** + * _cairo_cff_scaled_font_is_cid_cff: + * @scaled_font: a #cairo_scaled_font_t + * + * Return %TRUE if @scaled_font is a CID CFF font, otherwise return %FALSE. + **/ +cairo_private cairo_bool_t +_cairo_cff_scaled_font_is_cid_cff (cairo_scaled_font_t *scaled_font); + /** * _cairo_cff_fallback_init: * @cff_subset: a #cairo_cff_subset_t to initialize @@ -425,7 +447,29 @@ typedef struct _cairo_truetype_subset { * #cairo_scaled_font_t and the font backend in use) generate a * truetype file corresponding to @font_subset and initialize * @truetype_subset with information about the subset and the truetype - * data. + * data. The generated font will be suitable for embedding in + * PostScript. + * + * Return value: %CAIRO_STATUS_SUCCESS if successful, + * %CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a + * truetype file, or an non-zero value indicating an error. Possible + * errors include %CAIRO_STATUS_NO_MEMORY. + **/ +cairo_private cairo_status_t +_cairo_truetype_subset_init_ps (cairo_truetype_subset_t *truetype_subset, + cairo_scaled_font_subset_t *font_subset); + +/** + * _cairo_truetype_subset_init: + * @truetype_subset: a #cairo_truetype_subset_t to initialize + * @font_subset: the #cairo_scaled_font_subset_t to initialize from + * + * If possible (depending on the format of the underlying + * #cairo_scaled_font_t and the font backend in use) generate a + * truetype file corresponding to @font_subset and initialize + * @truetype_subset with information about the subset and the truetype + * data. The generated font will be suitable for embedding in + * PDF. * * Return value: %CAIRO_STATUS_SUCCESS if successful, * %CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a @@ -433,8 +477,8 @@ typedef struct _cairo_truetype_subset { * errors include %CAIRO_STATUS_NO_MEMORY. **/ cairo_private cairo_status_t -_cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, - cairo_scaled_font_subset_t *font_subset); +_cairo_truetype_subset_init_pdf (cairo_truetype_subset_t *truetype_subset, + cairo_scaled_font_subset_t *font_subset); /** * _cairo_truetype_subset_fini: @@ -447,7 +491,14 @@ _cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, cairo_private void _cairo_truetype_subset_fini (cairo_truetype_subset_t *truetype_subset); +cairo_private const char * +_cairo_ps_standard_encoding_to_glyphname (int glyph); +cairo_private int +_cairo_unicode_to_winansi (unsigned long unicode); + +cairo_private const char * +_cairo_winansi_to_glyphname (int glyph); typedef struct _cairo_type1_subset { char *base_font; @@ -663,6 +714,29 @@ _cairo_truetype_read_font_name (cairo_scaled_font_t *scaled_font, char **ps_name, char **font_name); +/** + * _cairo_truetype_get_style: + * @scaled_font: the #cairo_scaled_font_t + * @weight: returns the font weight from the OS/2 table + * @bold: returns true if font is bold + * @italic: returns true if font is italic + * + * If the font is a truetype/opentype font with an OS/2 table, get the + * weight, bold, and italic data from the OS/2 table. The weight + * values have the same meaning as the lfWeight field of the Windows + * LOGFONT structure. Refer to the TrueType Specification for + * definition of the weight values. + * + * Return value: %CAIRO_STATUS_SUCCESS if successful, + * %CAIRO_INT_STATUS_UNSUPPORTED if the font is not TrueType/OpenType + * or the OS/2 table is not present. + **/ +cairo_private cairo_int_status_t +_cairo_truetype_get_style (cairo_scaled_font_t *scaled_font, + int *weight, + cairo_bool_t *bold, + cairo_bool_t *italic); + #endif /* CAIRO_HAS_FONT_SUBSET */ #endif /* CAIRO_SCALED_FONT_SUBSETS_PRIVATE_H */ diff --git a/src/cairo-scaled-font-subsets.c b/src/cairo-scaled-font-subsets.c index 01bc05b..f5e6dec 100644 --- a/src/cairo-scaled-font-subsets.c +++ b/src/cairo-scaled-font-subsets.c @@ -70,12 +70,14 @@ typedef struct _cairo_sub_font { cairo_bool_t is_scaled; cairo_bool_t is_composite; cairo_bool_t is_user; + cairo_bool_t use_latin_subset; cairo_scaled_font_subsets_t *parent; cairo_scaled_font_t *scaled_font; unsigned int font_id; int current_subset; int num_glyphs_in_current_subset; + int num_glyphs_in_latin_subset; int max_glyphs_per_subset; cairo_hash_table_t *sub_font_glyphs; @@ -84,6 +86,7 @@ typedef struct _cairo_sub_font { struct _cairo_scaled_font_subsets { cairo_subsets_type_t type; + cairo_bool_t use_latin_subset; int max_glyphs_per_unscaled_subset_used; cairo_hash_table_t *unscaled_sub_fonts; @@ -106,6 +109,8 @@ typedef struct _cairo_sub_font_glyph { double x_advance; double y_advance; + cairo_bool_t is_latin; + int latin_character; cairo_bool_t is_mapped; uint32_t unicode; char *utf8; @@ -116,6 +121,8 @@ typedef struct _cairo_sub_font_collection { unsigned long *glyphs; /* scaled_font_glyph_index */ char **utf8; unsigned int glyphs_size; + int *to_latin_char; + unsigned long *latin_to_subset_glyph_index; unsigned int max_glyph; unsigned int num_glyphs; @@ -159,7 +166,11 @@ _cairo_sub_font_glyph_create (unsigned long scaled_font_glyph_index, unsigned int subset_id, unsigned int subset_glyph_index, double x_advance, - double y_advance) + double y_advance, + int latin_character, + uint32_t unicode, + char *utf8, + int utf8_len) { cairo_sub_font_glyph_t *sub_font_glyph; @@ -174,10 +185,12 @@ _cairo_sub_font_glyph_create (unsigned long scaled_font_glyph_index, sub_font_glyph->subset_glyph_index = subset_glyph_index; sub_font_glyph->x_advance = x_advance; sub_font_glyph->y_advance = y_advance; + sub_font_glyph->is_latin = (latin_character >= 0); + sub_font_glyph->latin_character = latin_character; sub_font_glyph->is_mapped = FALSE; - sub_font_glyph->unicode = -1; - sub_font_glyph->utf8 = NULL; - sub_font_glyph->utf8_len = 0; + sub_font_glyph->unicode = unicode; + sub_font_glyph->utf8 = utf8; + sub_font_glyph->utf8_len = utf8_len; return sub_font_glyph; } @@ -220,6 +233,10 @@ _cairo_sub_font_glyph_collect (void *entry, void *closure) collection->glyphs[subset_glyph_index] = scaled_font_glyph_index; collection->utf8[subset_glyph_index] = sub_font_glyph->utf8; + collection->to_latin_char[subset_glyph_index] = sub_font_glyph->latin_character; + if (sub_font_glyph->is_latin) + collection->latin_to_subset_glyph_index[sub_font_glyph->latin_character] = subset_glyph_index; + if (subset_glyph_index > collection->max_glyph) collection->max_glyph = subset_glyph_index; @@ -266,8 +283,6 @@ _cairo_sub_font_create (cairo_scaled_font_subsets_t *parent, cairo_sub_font_t **sub_font_out) { cairo_sub_font_t *sub_font; - cairo_status_t status; - cairo_scaled_font_subsets_glyph_t subset_glyph; sub_font = malloc (sizeof (cairo_sub_font_t)); if (unlikely (sub_font == NULL)) @@ -282,8 +297,22 @@ _cairo_sub_font_create (cairo_scaled_font_subsets_t *parent, sub_font->scaled_font = scaled_font; sub_font->font_id = font_id; - sub_font->current_subset = 0; + sub_font->use_latin_subset = parent->use_latin_subset; + + /* latin subsets of Type 3 and CID CFF fonts are not supported */ + if (sub_font->is_user || sub_font->is_scaled || + _cairo_cff_scaled_font_is_cid_cff (scaled_font) ) + { + sub_font->use_latin_subset = FALSE; + } + + if (sub_font->use_latin_subset) + sub_font->current_subset = 1; /* reserve subset 0 for latin glyphs */ + else + sub_font->current_subset = 0; + sub_font->num_glyphs_in_current_subset = 0; + sub_font->num_glyphs_in_latin_subset = 0; sub_font->max_glyphs_per_subset = max_glyphs_per_subset; sub_font->sub_font_glyphs = _cairo_hash_table_create (_cairo_sub_font_glyphs_equal); @@ -292,18 +321,6 @@ _cairo_sub_font_create (cairo_scaled_font_subsets_t *parent, return _cairo_error (CAIRO_STATUS_NO_MEMORY); } sub_font->next = NULL; - - /* Reserve first glyph in subset for the .notdef glyph except for - * Type 3 fonts */ - if (! is_scaled) { - status = _cairo_sub_font_map_glyph (sub_font, 0, NULL, -1, &subset_glyph); - if (unlikely (status)) { - _cairo_hash_table_destroy (sub_font->sub_font_glyphs); - free (sub_font); - return status; - } - } - *sub_font_out = sub_font; return CAIRO_STATUS_SUCCESS; } @@ -329,10 +346,39 @@ _cairo_sub_font_pluck (void *entry, void *closure) _cairo_sub_font_destroy (sub_font); } +/* Characters 0x80 to 0x9f in the winansi encoding. + * All other characters in the range 0x00 to 0xff map 1:1 to unicode */ +static unsigned int _winansi_0x80_to_0x9f[] = { + 0x20ac, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, + 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017d, 0x0000, + 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, + 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x0000, 0x017e, 0x0178 +}; + +int +_cairo_unicode_to_winansi (unsigned long uni) +{ + int i; + + /* exclude the extra "hyphen" at 0xad to avoid duplicate glyphnames */ + if ((uni >= 0x20 && uni <= 0x7e) || + (uni >= 0xa1 && uni <= 0xff && uni != 0xad) || + uni == 0) + return uni; + + for (i = 0; i < 32; i++) + if (_winansi_0x80_to_0x9f[i] == uni) + return i + 0x80; + + return -1; +} + static cairo_status_t -_cairo_sub_font_glyph_lookup_unicode (cairo_sub_font_glyph_t *sub_font_glyph, - cairo_scaled_font_t *scaled_font, - unsigned long scaled_font_glyph_index) +_cairo_sub_font_glyph_lookup_unicode (cairo_scaled_font_t *scaled_font, + unsigned long scaled_font_glyph_index, + uint32_t *unicode_out, + char **utf8_out, + int *utf8_len_out) { uint32_t unicode; char buf[8]; @@ -356,19 +402,19 @@ _cairo_sub_font_glyph_lookup_unicode (cairo_sub_font_glyph_t *sub_font_glyph, return status; } - sub_font_glyph->unicode = unicode; - sub_font_glyph->utf8 = NULL; - sub_font_glyph->utf8_len = 0; + *unicode_out = unicode; + *utf8_out = NULL; + *utf8_len_out = 0; if (unicode != (uint32_t) -1) { len = _cairo_ucs4_to_utf8 (unicode, buf); if (len > 0) { - sub_font_glyph->utf8 = malloc (len + 1); - if (unlikely (sub_font_glyph->utf8 == NULL)) + *utf8_out = malloc (len + 1); + if (unlikely (*utf8_out == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - memcpy (sub_font_glyph->utf8, buf, len); - sub_font_glyph->utf8[len] = 0; - sub_font_glyph->utf8_len = len; + memcpy (*utf8_out, buf, len); + (*utf8_out)[len] = 0; + *utf8_len_out = len; } } @@ -429,9 +475,14 @@ _cairo_sub_font_lookup_glyph (cairo_sub_font_t *sub_font, if (sub_font_glyph != NULL) { subset_glyph->font_id = sub_font->font_id; subset_glyph->subset_id = sub_font_glyph->subset_id; - subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; + if (sub_font_glyph->is_latin) + subset_glyph->subset_glyph_index = sub_font_glyph->latin_character; + else + subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; + subset_glyph->is_scaled = sub_font->is_scaled; subset_glyph->is_composite = sub_font->is_composite; + subset_glyph->is_latin = sub_font_glyph->is_latin; subset_glyph->x_advance = sub_font_glyph->x_advance; subset_glyph->y_advance = sub_font_glyph->y_advance; status = _cairo_sub_font_glyph_map_to_unicode (sub_font_glyph, @@ -445,11 +496,110 @@ _cairo_sub_font_lookup_glyph (cairo_sub_font_t *sub_font, return CAIRO_INT_STATUS_UNSUPPORTED; } +static cairo_status_t +_cairo_sub_font_add_glyph (cairo_sub_font_t *sub_font, + unsigned long scaled_font_glyph_index, + cairo_bool_t is_latin, + int latin_character, + uint32_t unicode, + char *utf8, + int utf8_len, + cairo_sub_font_glyph_t **sub_font_glyph_out) +{ + cairo_scaled_glyph_t *scaled_glyph; + cairo_sub_font_glyph_t *sub_font_glyph; + int *num_glyphs_in_subset_ptr; + double x_advance; + double y_advance; + cairo_status_t status; + + _cairo_scaled_font_freeze_cache (sub_font->scaled_font); + status = _cairo_scaled_glyph_lookup (sub_font->scaled_font, + scaled_font_glyph_index, + CAIRO_SCALED_GLYPH_INFO_METRICS, + &scaled_glyph); + assert (status != CAIRO_INT_STATUS_UNSUPPORTED); + if (unlikely (status)) { + _cairo_scaled_font_thaw_cache (sub_font->scaled_font); + return status; + } + + x_advance = scaled_glyph->metrics.x_advance; + y_advance = scaled_glyph->metrics.y_advance; + _cairo_scaled_font_thaw_cache (sub_font->scaled_font); + + if (unlikely (status)) { + _cairo_sub_font_glyph_destroy (sub_font_glyph); + return status; + } + + if (!is_latin && sub_font->num_glyphs_in_current_subset == sub_font->max_glyphs_per_subset) + { + sub_font->current_subset++; + sub_font->num_glyphs_in_current_subset = 0; + } + + if (is_latin) + num_glyphs_in_subset_ptr = &sub_font->num_glyphs_in_latin_subset; + else + num_glyphs_in_subset_ptr = &sub_font->num_glyphs_in_current_subset; + + /* Reserve first glyph in subset for the .notdef glyph except for + * Type 3 fonts */ + if (*num_glyphs_in_subset_ptr == 0 && + scaled_font_glyph_index != 0 && + ! _cairo_font_face_is_user (sub_font->scaled_font->font_face)) + { + status = _cairo_sub_font_add_glyph (sub_font, + 0, + is_latin, + 0, + 0, + NULL, + -1, + &sub_font_glyph); + if (unlikely (status)) + return status; + } + + sub_font_glyph = _cairo_sub_font_glyph_create (scaled_font_glyph_index, + is_latin ? 0 : sub_font->current_subset, + *num_glyphs_in_subset_ptr, + x_advance, + y_advance, + is_latin ? latin_character : -1, + unicode, + utf8, + utf8_len); + + if (unlikely (sub_font_glyph == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_hash_table_insert (sub_font->sub_font_glyphs, &sub_font_glyph->base); + if (unlikely (status)) { + _cairo_sub_font_glyph_destroy (sub_font_glyph); + return status; + } + + (*num_glyphs_in_subset_ptr)++; + if (sub_font->is_scaled) { + if (*num_glyphs_in_subset_ptr > sub_font->parent->max_glyphs_per_scaled_subset_used) + sub_font->parent->max_glyphs_per_scaled_subset_used = *num_glyphs_in_subset_ptr; + } else { + if (*num_glyphs_in_subset_ptr > sub_font->parent->max_glyphs_per_unscaled_subset_used) + sub_font->parent->max_glyphs_per_unscaled_subset_used = *num_glyphs_in_subset_ptr; + } + + *sub_font_glyph_out = sub_font_glyph; + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t _cairo_sub_font_map_glyph (cairo_sub_font_t *sub_font, unsigned long scaled_font_glyph_index, - const char *utf8, - int utf8_len, + const char *text_utf8, + int text_utf8_len, cairo_scaled_font_subsets_glyph_t *subset_glyph) { cairo_sub_font_glyph_t key, *sub_font_glyph; @@ -459,79 +609,64 @@ _cairo_sub_font_map_glyph (cairo_sub_font_t *sub_font, sub_font_glyph = _cairo_hash_table_lookup (sub_font->sub_font_glyphs, &key.base); if (sub_font_glyph == NULL) { - cairo_scaled_glyph_t *scaled_glyph; + uint32_t font_unicode; + char *font_utf8; + int font_utf8_len; + cairo_bool_t is_latin; + int latin_character; + + status = _cairo_sub_font_glyph_lookup_unicode (sub_font->scaled_font, + scaled_font_glyph_index, + &font_unicode, + &font_utf8, + &font_utf8_len); + if (unlikely(status)) + return status; - if (sub_font->num_glyphs_in_current_subset == sub_font->max_glyphs_per_subset) + /* If glyph is in the winansi encoding and font is not a user + * font, put glyph in the latin subset. If glyph is .notdef + * the latin subset is preferred but only if the latin subset + * already contains at least one glyph. We don't want to + * create a separate subset just for the .notdef glyph. + */ + is_latin = FALSE; + if (sub_font->use_latin_subset && + (! _cairo_font_face_is_user (sub_font->scaled_font->font_face))) { - cairo_scaled_font_subsets_glyph_t tmp_subset_glyph; - - sub_font->current_subset++; - sub_font->num_glyphs_in_current_subset = 0; - - /* Reserve first glyph in subset for the .notdef glyph - * except for Type 3 fonts */ - if (! _cairo_font_face_is_user (sub_font->scaled_font->font_face)) { - status = _cairo_sub_font_map_glyph (sub_font, 0, NULL, -1, &tmp_subset_glyph); - if (unlikely (status)) - return status; + latin_character = _cairo_unicode_to_winansi (font_unicode); + if (latin_character > 0 || + (latin_character == 0 && sub_font->num_glyphs_in_latin_subset > 0)) + { + is_latin = TRUE; } } - _cairo_scaled_font_freeze_cache (sub_font->scaled_font); - status = _cairo_scaled_glyph_lookup (sub_font->scaled_font, - scaled_font_glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (unlikely (status)) { - _cairo_scaled_font_thaw_cache (sub_font->scaled_font); - return status; - } - - sub_font_glyph = _cairo_sub_font_glyph_create (scaled_font_glyph_index, - sub_font->current_subset, - sub_font->num_glyphs_in_current_subset, - scaled_glyph->metrics.x_advance, - scaled_glyph->metrics.y_advance); - _cairo_scaled_font_thaw_cache (sub_font->scaled_font); - - if (unlikely (sub_font_glyph == NULL)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_sub_font_glyph_lookup_unicode (sub_font_glyph, - sub_font->scaled_font, - scaled_font_glyph_index); - if (unlikely (status)) { - _cairo_sub_font_glyph_destroy (sub_font_glyph); - return status; - } - - status = _cairo_hash_table_insert (sub_font->sub_font_glyphs, &sub_font_glyph->base); - if (unlikely (status)) { - _cairo_sub_font_glyph_destroy (sub_font_glyph); + status = _cairo_sub_font_add_glyph (sub_font, + scaled_font_glyph_index, + is_latin, + latin_character, + font_unicode, + font_utf8, + font_utf8_len, + &sub_font_glyph); + if (unlikely(status)) return status; - } - - sub_font->num_glyphs_in_current_subset++; - - if (sub_font->is_scaled) { - if (sub_font->num_glyphs_in_current_subset > sub_font->parent->max_glyphs_per_scaled_subset_used) - sub_font->parent->max_glyphs_per_scaled_subset_used = sub_font->num_glyphs_in_current_subset; - } else { - if (sub_font->num_glyphs_in_current_subset > sub_font->parent->max_glyphs_per_unscaled_subset_used) - sub_font->parent->max_glyphs_per_unscaled_subset_used = sub_font->num_glyphs_in_current_subset; - } } subset_glyph->font_id = sub_font->font_id; subset_glyph->subset_id = sub_font_glyph->subset_id; - subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; + if (sub_font_glyph->is_latin) + subset_glyph->subset_glyph_index = sub_font_glyph->latin_character; + else + subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; + subset_glyph->is_scaled = sub_font->is_scaled; subset_glyph->is_composite = sub_font->is_composite; + subset_glyph->is_latin = sub_font_glyph->is_latin; subset_glyph->x_advance = sub_font_glyph->x_advance; subset_glyph->y_advance = sub_font_glyph->y_advance; status = _cairo_sub_font_glyph_map_to_unicode (sub_font_glyph, - utf8, utf8_len, + text_utf8, text_utf8_len, &subset_glyph->utf8_is_mapped); subset_glyph->unicode = sub_font_glyph->unicode; @@ -558,6 +693,7 @@ _cairo_sub_font_collect (void *entry, void *closure) collection->subset_id = i; collection->num_glyphs = 0; collection->max_glyph = 0; + memset (collection->latin_to_subset_glyph_index, 0, 256*sizeof(unsigned long)); _cairo_hash_table_foreach (sub_font->sub_font_glyphs, _cairo_sub_font_glyph_collect, collection); @@ -578,21 +714,20 @@ _cairo_sub_font_collect (void *entry, void *closure) subset.utf8 = collection->utf8; subset.num_glyphs = collection->num_glyphs; subset.glyph_names = NULL; - /* No need to check for out of memory here. If to_unicode is NULL, the PDF - * surface does not emit an ToUnicode stream */ - subset.to_unicode = _cairo_malloc_ab (collection->num_glyphs, sizeof (unsigned long)); - if (subset.to_unicode) { - for (j = 0; j < collection->num_glyphs; j++) { - /* default unicode character required when mapping fails */ - subset.to_unicode[j] = 0xfffd; - } - } + + subset.is_latin = FALSE; + if (sub_font->use_latin_subset && i == 0) { + subset.is_latin = TRUE; + subset.to_latin_char = collection->to_latin_char; + subset.latin_to_subset_glyph_index = collection->latin_to_subset_glyph_index; + } else { + subset.to_latin_char = NULL; + subset.latin_to_subset_glyph_index = NULL; + } + collection->status = (collection->font_subset_callback) (&subset, collection->font_subset_callback_closure); - if (subset.to_unicode != NULL) - free (subset.to_unicode); - if (subset.glyph_names != NULL) { for (j = 0; j < collection->num_glyphs; j++) free (subset.glyph_names[j]); @@ -616,6 +751,7 @@ _cairo_scaled_font_subsets_create_internal (cairo_subsets_type_t type) } subsets->type = type; + subsets->use_latin_subset = FALSE; subsets->max_glyphs_per_unscaled_subset_used = 0; subsets->max_glyphs_per_scaled_subset_used = 0; subsets->num_sub_fonts = 0; @@ -670,6 +806,13 @@ _cairo_scaled_font_subsets_destroy (cairo_scaled_font_subsets_t *subsets) free (subsets); } +void +_cairo_scaled_font_subsets_enable_latin_subset (cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t use_latin) +{ + font_subsets->use_latin_subset = use_latin; +} + cairo_status_t _cairo_scaled_font_subsets_map_glyph (cairo_scaled_font_subsets_t *subsets, cairo_scaled_font_t *scaled_font, @@ -881,11 +1024,20 @@ _cairo_scaled_font_subsets_foreach_internal (cairo_scaled_font_subsets_t collection.glyphs = _cairo_malloc_ab (collection.glyphs_size, sizeof(unsigned long)); collection.utf8 = _cairo_malloc_ab (collection.glyphs_size, sizeof(char *)); - if (unlikely (collection.glyphs == NULL || collection.utf8 == NULL)) { + collection.to_latin_char = _cairo_malloc_ab (collection.glyphs_size, sizeof(int)); + collection.latin_to_subset_glyph_index = _cairo_malloc_ab (256, sizeof(unsigned long)); + if (unlikely (collection.glyphs == NULL || + collection.utf8 == NULL || + collection.to_latin_char == NULL || + collection.latin_to_subset_glyph_index == NULL)) { if (collection.glyphs != NULL) free (collection.glyphs); if (collection.utf8 != NULL) free (collection.utf8); + if (collection.to_latin_char != NULL) + free (collection.to_latin_char); + if (collection.latin_to_subset_glyph_index != NULL) + free (collection.latin_to_subset_glyph_index); return _cairo_error (CAIRO_STATUS_NO_MEMORY); } @@ -907,6 +1059,8 @@ _cairo_scaled_font_subsets_foreach_internal (cairo_scaled_font_subsets_t } free (collection.utf8); free (collection.glyphs); + free (collection.to_latin_char); + free (collection.latin_to_subset_glyph_index); return collection.status; } @@ -1040,7 +1194,12 @@ _cairo_scaled_font_subset_create_glyph_names (cairo_scaled_font_subset_t *subset } if (utf16_len == 1) { - snprintf (buf, sizeof (buf), "uni%04X", (int) utf16[0]); + int ch = _cairo_unicode_to_winansi (utf16[0]); + if (ch > 0 && _cairo_winansi_to_glyphname (ch)) + strncpy (buf, _cairo_winansi_to_glyphname (ch), sizeof (buf)); + else + snprintf (buf, sizeof (buf), "uni%04X", (int) utf16[0]); + _cairo_string_init_key (&key, buf); entry = _cairo_hash_table_lookup (names, &key.base); if (entry != NULL) diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c index b40e4d4..2702877 100644 --- a/src/cairo-scaled-font.c +++ b/src/cairo-scaled-font.c @@ -2071,6 +2071,7 @@ _cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font, cairo_box_t box = { { INT_MAX, INT_MAX }, { INT_MIN, INT_MIN }}; cairo_scaled_glyph_t *glyph_cache[64]; cairo_bool_t overlap = overlap_out ? FALSE : TRUE; + cairo_round_glyph_positions_t round_glyph_positions = _cairo_font_options_get_round_glyph_positions (&scaled_font->options); int i; if (unlikely (scaled_font->status)) @@ -2099,11 +2100,17 @@ _cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font, glyph_cache[cache_index] = scaled_glyph; } - x = _cairo_fixed_from_double (glyphs[i].x); + if (round_glyph_positions == CAIRO_ROUND_GLYPH_POS_ON) + x = _cairo_fixed_from_double (_cairo_lround (glyphs[i].x)); + else + x = _cairo_fixed_from_double (glyphs[i].x); x1 = x + scaled_glyph->bbox.p1.x; x2 = x + scaled_glyph->bbox.p2.x; - y = _cairo_fixed_from_double (glyphs[i].y); + if (round_glyph_positions == CAIRO_ROUND_GLYPH_POS_ON) + y = _cairo_fixed_from_double (_cairo_lround (glyphs[i].y)); + else + y = _cairo_fixed_from_double (glyphs[i].y); y1 = y + scaled_glyph->bbox.p1.y; y2 = y + scaled_glyph->bbox.p2.y; @@ -2487,7 +2494,7 @@ _cairo_scaled_font_glyph_path (cairo_scaled_font_t *scaled_font, &scaled_glyph); if (status == CAIRO_STATUS_SUCCESS) { status = _cairo_path_fixed_append (path, - scaled_glyph->path, CAIRO_DIRECTION_FORWARD, + scaled_glyph->path, _cairo_fixed_from_double (glyphs[i].x), _cairo_fixed_from_double (glyphs[i].y)); @@ -2786,6 +2793,8 @@ _cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font, if (unlikely (scaled_font->status)) return scaled_font->status; + assert (CAIRO_MUTEX_IS_LOCKED(scaled_font->mutex)); + if (CAIRO_INJECT_FAULT ()) return _cairo_error (CAIRO_STATUS_NO_MEMORY); diff --git a/src/cairo-script-surface.c b/src/cairo-script-surface.c index 0f0446d..5200b3a 100644 --- a/src/cairo-script-surface.c +++ b/src/cairo-script-surface.c @@ -929,10 +929,8 @@ _emit_linear_pattern (cairo_script_surface_t *surface, _cairo_output_stream_printf (ctx->stream, "%f %f %f %f linear", - _cairo_fixed_to_double (linear->p1.x), - _cairo_fixed_to_double (linear->p1.y), - _cairo_fixed_to_double (linear->p2.x), - _cairo_fixed_to_double (linear->p2.y)); + linear->pd1.x, linear->pd1.y, + linear->pd2.x, linear->pd2.y); return _emit_gradient_color_stops (&linear->base, ctx->stream); } @@ -947,15 +945,96 @@ _emit_radial_pattern (cairo_script_surface_t *surface, _cairo_output_stream_printf (ctx->stream, "%f %f %f %f %f %f radial", - _cairo_fixed_to_double (radial->c1.x), - _cairo_fixed_to_double (radial->c1.y), - _cairo_fixed_to_double (radial->r1), - _cairo_fixed_to_double (radial->c2.x), - _cairo_fixed_to_double (radial->c2.y), - _cairo_fixed_to_double (radial->r2)); + radial->cd1.center.x, + radial->cd1.center.y, + radial->cd1.radius, + radial->cd2.center.x, + radial->cd2.center.y, + radial->cd2.radius); return _emit_gradient_color_stops (&radial->base, ctx->stream); } +static cairo_status_t +_emit_mesh_pattern (cairo_script_surface_t *surface, + const cairo_pattern_t *pattern) +{ + cairo_script_context_t *ctx = to_context (surface); + cairo_pattern_t *mesh; + cairo_status_t status; + unsigned int i, n; + + mesh = (cairo_pattern_t *) pattern; + status = cairo_pattern_mesh_get_patch_count (mesh, &n); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (ctx->stream, "mesh"); + for (i = 0; i < n; i++) { + cairo_path_t *path; + cairo_path_data_t *data; + int j; + + _cairo_output_stream_printf (ctx->stream, "\n mesh-begin-patch"); + + path = cairo_pattern_mesh_get_path (mesh, i); + if (unlikely (path->status)) + return path->status; + + for (j = 0; j < path->num_data; j+=data[0].header.length) { + data = &path->data[j]; + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + _cairo_output_stream_printf (ctx->stream, + "\n %f %f mesh-move-to", + data[1].point.x, data[1].point.y); + break; + case CAIRO_PATH_LINE_TO: + _cairo_output_stream_printf (ctx->stream, + "\n %f %f mesh-line-to", + data[1].point.x, data[1].point.y); + break; + case CAIRO_PATH_CURVE_TO: + _cairo_output_stream_printf (ctx->stream, + "\n %f %f %f %f %f %f mesh-curve-to", + data[1].point.x, data[1].point.y, + data[2].point.x, data[2].point.y, + data[3].point.x, data[3].point.y); + break; + case CAIRO_PATH_CLOSE_PATH: + break; + } + } + cairo_path_destroy (path); + + for (j = 0; j < 4; j++) { + double x, y; + + status = cairo_pattern_mesh_get_control_point (mesh, i, j, &x, &y); + if (unlikely (status)) + return status; + _cairo_output_stream_printf (ctx->stream, + "\n %d %f %f mesh-set-control-point", + j, x, y); + } + + for (j = 0; j < 4; j++) { + double r, g, b, a; + + status = cairo_pattern_mesh_get_corner_color_rgba (mesh, i, j, &r, &g, &b, &a); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (ctx->stream, + "\n %d %f %f %f %f mesh-set-corner-color", + j, r, g, b, a); + } + + _cairo_output_stream_printf (ctx->stream, "\n mesh-end-patch"); + } + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t _emit_recording_surface_pattern (cairo_script_surface_t *surface, cairo_recording_surface_t *source) @@ -1465,6 +1544,10 @@ _emit_pattern (cairo_script_surface_t *surface, status = _emit_radial_pattern (surface, pattern); is_default_extend = pattern->extend == CAIRO_EXTEND_GRADIENT_DEFAULT; break; + case CAIRO_PATTERN_TYPE_MESH: + status = _emit_mesh_pattern (surface, pattern); + is_default_extend = TRUE; + break; case CAIRO_PATTERN_TYPE_SURFACE: status = _emit_surface_pattern (surface, pattern); is_default_extend = pattern->extend == CAIRO_EXTEND_SURFACE_DEFAULT; @@ -1666,7 +1749,6 @@ _emit_path (cairo_script_surface_t *surface, return status; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _path_move_to, _path_line_to, _path_curve_to, @@ -2054,13 +2136,13 @@ _cairo_script_surface_clipper_intersect_clip_path (cairo_surface_clipper_t *clip if (unlikely (status)) return status; - if (! path->is_rectilinear) { + if (path->has_curve_to) { status = _emit_tolerance (surface, tolerance, matrix_updated); if (unlikely (status)) return status; } - if (! path->maybe_fill_region) { + if (! _cairo_path_fixed_fill_maybe_region (path)) { status = _emit_antialias (surface, antialias); if (unlikely (status)) return status; @@ -2343,11 +2425,9 @@ _cairo_script_surface_stroke (void *abstract_surface, if (unlikely (status)) goto BAIL; - if (! path->is_rectilinear) { - status = _emit_tolerance (surface, tolerance, matrix_updated); - if (unlikely (status)) - goto BAIL; - } + status = _emit_tolerance (surface, tolerance, matrix_updated); + if (unlikely (status)) + goto BAIL; status = _emit_antialias (surface, antialias); if (unlikely (status)) @@ -2414,13 +2494,13 @@ _cairo_script_surface_fill (void *abstract_surface, goto BAIL; } - if (! path->is_rectilinear) { + if (path->has_curve_to) { status = _emit_tolerance (surface, tolerance, matrix_updated); if (unlikely (status)) goto BAIL; } - if (! path->maybe_fill_region) { + if (! _cairo_path_fixed_fill_maybe_region (path)) { status = _emit_antialias (surface, antialias); if (unlikely (status)) goto BAIL; diff --git a/src/cairo-skia-surface.cpp b/src/cairo-skia-surface.cpp index 8ce5a76..537c1bc 100644 --- a/src/cairo-skia-surface.cpp +++ b/src/cairo-skia-surface.cpp @@ -356,10 +356,10 @@ pattern_to_sk_shader (cairo_skia_surface_t *dst, const cairo_pattern_t *pattern, cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) gradient; SkPoint points[2]; - points[0].set (CAIRO_FIXED_TO_SK_SCALAR (linear->p1.x), - CAIRO_FIXED_TO_SK_SCALAR (linear->p1.y)); - points[1].set (CAIRO_FIXED_TO_SK_SCALAR (linear->p2.x), - CAIRO_FIXED_TO_SK_SCALAR (linear->p2.y)); + points[0].set (SkFloatToScalar (linear->pd1.x), + SkFloatToScalar (linear->pd1.y)); + points[1].set (SkFloatToScalar (linear->pd2.x), + SkFloatToScalar (linear->pd2.y)); shader = SkGradientShader::CreateLinear (points, colors, pos, gradient->n_stops, extend_to_sk (pattern->extend)); } else { @@ -500,7 +500,6 @@ path_to_sk (cairo_path_fixed_t *path, data.matrix = mat; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, cpc_move_to, cpc_line_to, cpc_curve_to, diff --git a/src/cairo-spans.c b/src/cairo-spans.c index a187b89..bffbdeb 100644 --- a/src/cairo-spans.c +++ b/src/cairo-spans.c @@ -204,6 +204,7 @@ _cairo_scan_converter_create_in_error (cairo_status_t status) case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: RETURN_NIL; case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: RETURN_NIL; case CAIRO_STATUS_DEVICE_ERROR: RETURN_NIL; + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL; default: break; } @@ -314,6 +315,7 @@ _cairo_span_renderer_create_in_error (cairo_status_t status) case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: RETURN_NIL; case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: RETURN_NIL; case CAIRO_STATUS_DEVICE_ERROR: RETURN_NIL; + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL; default: break; } diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c index 99ea07e..ca7a051 100644 --- a/src/cairo-surface-fallback.c +++ b/src/cairo-surface-fallback.c @@ -1067,13 +1067,12 @@ _cairo_surface_fallback_stroke (cairo_surface_t *surface, if (unlikely (status)) return status; - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); _cairo_traps_init (&traps); _cairo_traps_limit (&traps, clip_boxes, num_boxes); - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { status = _cairo_path_fixed_stroke_rectilinear_to_traps (path, stroke_style, ctm, @@ -1163,13 +1162,12 @@ _cairo_surface_fallback_fill (cairo_surface_t *surface, _cairo_traps_init (&traps); _cairo_traps_limit (&traps, clip_boxes, num_boxes); - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); - if (path->is_empty_fill) + if (_cairo_path_fixed_fill_is_empty (path)) goto DO_TRAPS; - is_rectilinear = _cairo_path_fixed_is_rectilinear_fill (path); + is_rectilinear = _cairo_path_fixed_fill_is_rectilinear (path); if (is_rectilinear) { status = _cairo_path_fixed_fill_rectilinear_to_traps (path, fill_rule, diff --git a/src/cairo-surface-wrapper.c b/src/cairo-surface-wrapper.c index 39e90f0..9667305 100644 --- a/src/cairo-surface-wrapper.c +++ b/src/cairo-surface-wrapper.c @@ -49,18 +49,6 @@ _copy_transformed_pattern (cairo_pattern_t *pattern, { _cairo_pattern_init_static_copy (pattern, original); - /* apply device_transform first so that it is transformed by ctm_inverse */ - if (original->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern; - cairo_surface_t *surface; - - surface_pattern = (cairo_surface_pattern_t *) original; - surface = surface_pattern->surface; - - if (_cairo_surface_has_device_transform (surface)) - _cairo_pattern_transform (pattern, &surface->device_transform); - } - if (! _cairo_matrix_is_identity (ctm_inverse)) _cairo_pattern_transform (pattern, ctm_inverse); } diff --git a/src/cairo-surface.c b/src/cairo-surface.c index ba70a2e..b9d9e16 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -58,7 +58,7 @@ * * A cairo surface is created by using backend-specific * constructors, typically of the form - * cairo_backend_surface_create(). + * cairo_backend_surface_create(). * * Most surface types allow accessing the surface without using Cairo * functions. If you do this, keep in mind that it is mandatory that you call @@ -123,7 +123,8 @@ const cairo_surface_t name = { \ CAIRO_SUBPIXEL_ORDER_DEFAULT, /* subpixel_order */ \ CAIRO_LCD_FILTER_DEFAULT, /* lcd_filter */ \ CAIRO_HINT_STYLE_DEFAULT, /* hint_style */ \ - CAIRO_HINT_METRICS_DEFAULT /* hint_metrics */ \ + CAIRO_HINT_METRICS_DEFAULT, /* hint_metrics */ \ + CAIRO_ROUND_GLYPH_POS_DEFAULT /* round_glyph_positions */ \ } /* font_options */ \ } @@ -653,6 +654,9 @@ cairo_surface_destroy (cairo_surface_t *surface) if (surface->owns_device) cairo_device_destroy (surface->device); + assert (surface->snapshot_of == NULL); + assert (!_cairo_surface_has_snapshots (surface)); + free (surface); } slim_hidden_def(cairo_surface_destroy); @@ -711,12 +715,13 @@ cairo_surface_finish (cairo_surface_t *surface) if (surface->finished) return; + cairo_surface_flush (surface); + /* update the snapshots *before* we declare the surface as finished */ _cairo_surface_detach_snapshots (surface); if (surface->snapshot_of != NULL) _cairo_surface_detach_snapshot (surface); - cairo_surface_flush (surface); surface->finished = TRUE; /* call finish even if in error mode */ @@ -725,6 +730,9 @@ cairo_surface_finish (cairo_surface_t *surface) if (unlikely (status)) status = _cairo_surface_set_error (surface, status); } + + assert (surface->snapshot_of == NULL); + assert (!_cairo_surface_has_snapshots (surface)); } slim_hidden_def (cairo_surface_finish); @@ -890,6 +898,14 @@ _cairo_mime_data_destroy (void *ptr) * @Since: 1.10 */ +/** + * CAIRO_MIME_TYPE_UNIQUE_ID: + * + * Unique identifier for a surface (cairo specific MIME type). + * + * @Since: 1.12 + */ + /** * cairo_surface_set_mime_data: * @surface: a #cairo_surface_t @@ -1449,6 +1465,33 @@ _cairo_surface_acquire_source_image (cairo_surface_t *surface, return CAIRO_STATUS_SUCCESS; } +cairo_status_t +_cairo_surface_acquire_source_image_transformed (cairo_surface_t *surface, + cairo_matrix_t *device_transform, + cairo_image_surface_t **image_out, + void **image_extra) +{ + cairo_status_t status; + + if (surface->status) + return surface->status; + + assert (!surface->finished); + + if (surface->backend->acquire_source_image_transformed == NULL) + return _cairo_surface_acquire_source_image (surface, + image_out, image_extra); + + status = surface->backend->acquire_source_image_transformed (surface, device_transform, + image_out, image_extra); + if (unlikely (status)) + return _cairo_surface_set_error (surface, status); + + _cairo_debug_check_image_surface_is_defined (&(*image_out)->base); + + return CAIRO_STATUS_SUCCESS; +} + /** * _cairo_surface_release_source_image: * @surface: a #cairo_surface_t @@ -1820,45 +1863,6 @@ _cairo_surface_composite (cairo_operator_t op, clip_region)); } -/** - * _cairo_surface_fill_rectangle: - * @surface: a #cairo_surface_t - * @op: the operator to apply to the rectangle - * @color: the source color - * @x: X coordinate of rectangle, in backend coordinates - * @y: Y coordinate of rectangle, in backend coordinates - * @width: width of rectangle, in backend coordinates - * @height: height of rectangle, in backend coordinates - * - * Applies an operator to a rectangle using a solid color as the source. - * See _cairo_surface_fill_rectangles() for full details. - * - * Return value: %CAIRO_STATUS_SUCCESS or the error that occurred - **/ -cairo_status_t -_cairo_surface_fill_rectangle (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - int x, - int y, - int width, - int height) -{ - cairo_rectangle_int_t rect; - - if (surface->status) - return surface->status; - - assert (_cairo_surface_is_writable (surface)); - - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - - return _cairo_surface_fill_rectangles (surface, op, color, &rect, 1); -} - /** * _cairo_surface_fill_region: * @surface: a #cairo_surface_t @@ -1895,7 +1899,8 @@ _cairo_surface_fill_region (cairo_surface_t *surface, /* catch a common reduction of _cairo_clip_combine_with_surface() */ if (op == CAIRO_OPERATOR_IN && - _cairo_color_equal (color, CAIRO_COLOR_WHITE)) + surface->content == CAIRO_CONTENT_ALPHA && + CAIRO_COLOR_IS_OPAQUE (color)) { return CAIRO_STATUS_SUCCESS; } @@ -2027,7 +2032,8 @@ _cairo_surface_paint (cairo_surface_t *surface, status = _cairo_surface_fallback_paint (surface, op, source, clip); FINISH: - surface->is_clear = op == CAIRO_OPERATOR_CLEAR && clip == NULL; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = op == CAIRO_OPERATOR_CLEAR && clip == NULL; return _cairo_surface_set_error (surface, status); } @@ -2082,7 +2088,8 @@ _cairo_surface_mask (cairo_surface_t *surface, status = _cairo_surface_fallback_mask (surface, op, source, mask, clip); FINISH: - surface->is_clear = FALSE; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = FALSE; return _cairo_surface_set_error (surface, status); } @@ -2161,7 +2168,8 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface, goto FINISH; FINISH: - surface->is_clear = FALSE; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = FALSE; return _cairo_surface_set_error (surface, status); } @@ -2219,7 +2227,8 @@ _cairo_surface_stroke (cairo_surface_t *surface, clip); FINISH: - surface->is_clear = FALSE; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = FALSE; return _cairo_surface_set_error (surface, status); } @@ -2273,7 +2282,8 @@ _cairo_surface_fill (cairo_surface_t *surface, clip); FINISH: - surface->is_clear = FALSE; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = FALSE; return _cairo_surface_set_error (surface, status); } @@ -2677,7 +2687,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, if (dev_scaled_font != scaled_font) cairo_scaled_font_destroy (dev_scaled_font); - surface->is_clear = FALSE; + if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) + surface->is_clear = FALSE; return _cairo_surface_set_error (surface, status); } @@ -2955,168 +2966,6 @@ _cairo_surface_set_resolution (cairo_surface_t *surface, surface->y_resolution = y_res; } -/* Generic methods for determining operation extents. */ - -static void -_rectangle_intersect_clip (cairo_rectangle_int_t *extents, cairo_clip_t *clip) -{ - const cairo_rectangle_int_t *clip_extents; - cairo_bool_t is_empty; - - clip_extents = NULL; - if (clip != NULL) - clip_extents = _cairo_clip_get_extents (clip); - - if (clip_extents != NULL) - is_empty = _cairo_rectangle_intersect (extents, clip_extents); -} - -static void -_cairo_surface_operation_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - cairo_bool_t is_empty; - - is_empty = _cairo_surface_get_extents (surface, extents); - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - - _cairo_pattern_get_extents (source, &source_extents); - is_empty = _cairo_rectangle_intersect (extents, &source_extents); - } - - _rectangle_intersect_clip (extents, clip); -} - -cairo_status_t -_cairo_surface_paint_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - _cairo_surface_operation_extents (surface, op, source, clip, extents); - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_surface_mask_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_pattern_t *mask, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - cairo_bool_t is_empty; - - _cairo_surface_operation_extents (surface, op, source, clip, extents); - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t mask_extents; - - _cairo_pattern_get_extents (mask, &mask_extents); - is_empty = _cairo_rectangle_intersect (extents, &mask_extents); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_surface_stroke_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_path_fixed_t *path, - const cairo_stroke_style_t *style, - const cairo_matrix_t *ctm, - const cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - cairo_status_t status; - cairo_bool_t is_empty; - - _cairo_surface_operation_extents (surface, op, source, clip, extents); - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t mask_extents; - - status = _cairo_path_fixed_stroke_extents (path, style, - ctm, ctm_inverse, - tolerance, - &mask_extents); - if (unlikely (status)) - return status; - - is_empty = _cairo_rectangle_intersect (extents, &mask_extents); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_surface_fill_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - cairo_bool_t is_empty; - - _cairo_surface_operation_extents (surface, op, source, clip, extents); - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t mask_extents; - - _cairo_path_fixed_fill_extents (path, fill_rule, tolerance, - &mask_extents); - is_empty = _cairo_rectangle_intersect (extents, &mask_extents); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_surface_glyphs_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents) -{ - cairo_status_t status; - cairo_bool_t is_empty; - - _cairo_surface_operation_extents (surface, op, source, clip, extents); - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t glyph_extents; - - status = _cairo_scaled_font_glyph_device_extents (scaled_font, - glyphs, - num_glyphs, - &glyph_extents, - NULL); - if (unlikely (status)) - return status; - - is_empty = _cairo_rectangle_intersect (extents, &glyph_extents); - } - - return CAIRO_STATUS_SUCCESS; -} - cairo_surface_t * _cairo_surface_create_in_error (cairo_status_t status) { @@ -3174,6 +3023,7 @@ _cairo_surface_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_SLANT: case CAIRO_STATUS_INVALID_WEIGHT: case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: + case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_surface_t *) &_cairo_surface_nil; diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c index fb612fa..bb5bccf 100644 --- a/src/cairo-svg-surface.c +++ b/src/cairo-svg-surface.c @@ -725,7 +725,6 @@ _cairo_svg_surface_emit_path (cairo_output_stream_t *output, info.output = output; info.ctm_inverse = ctm_inverse; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_svg_path_move_to, _cairo_svg_path_line_to, _cairo_svg_path_curve_to, @@ -935,6 +934,9 @@ _cairo_svg_surface_analyze_operation (cairo_svg_surface_t *surface, return CAIRO_INT_STATUS_UNSUPPORTED; } + if (pattern->type == CAIRO_PATTERN_TYPE_MESH) + return CAIRO_INT_STATUS_UNSUPPORTED; + /* SVG doesn't support extend reflect for image pattern */ if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE && pattern->extend == CAIRO_EXTEND_REFLECT) @@ -1782,7 +1784,6 @@ _cairo_svg_surface_emit_linear_pattern (cairo_svg_surface_t *surface, const cairo_matrix_t *parent_matrix) { cairo_svg_document_t *document = surface->document; - double x0, y0, x1, y1; cairo_matrix_t p2u; cairo_status_t status; @@ -1791,17 +1792,13 @@ _cairo_svg_surface_emit_linear_pattern (cairo_svg_surface_t *surface, /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - x0 = _cairo_fixed_to_double (pattern->p1.x); - y0 = _cairo_fixed_to_double (pattern->p1.y); - x1 = _cairo_fixed_to_double (pattern->p2.x); - y1 = _cairo_fixed_to_double (pattern->p2.y); - _cairo_output_stream_printf (document->xml_node_defs, "linear_pattern_id, - x0, y0, x1, y1); + pattern->pd1.x, pattern->pd1.y, + pattern->pd2.x, pattern->pd2.y); _cairo_svg_surface_emit_pattern_extend (document->xml_node_defs, &pattern->base.base), _cairo_svg_surface_emit_transform (document->xml_node_defs, "gradientTransform", &p2u, parent_matrix); @@ -1840,38 +1837,33 @@ _cairo_svg_surface_emit_radial_pattern (cairo_svg_surface_t *surface, double fx, fy; cairo_bool_t reverse_stops; cairo_status_t status; - cairo_point_t *c0, *c1; - cairo_fixed_t radius0, radius1; + cairo_circle_double_t *c0, *c1; extend = pattern->base.base.extend; - if (pattern->r1 < pattern->r2) { - c0 = &pattern->c1; - c1 = &pattern->c2; - radius0 = pattern->r1; - radius1 = pattern->r2; + if (pattern->cd1.radius < pattern->cd2.radius) { + c0 = &pattern->cd1; + c1 = &pattern->cd2; reverse_stops = FALSE; } else { - c0 = &pattern->c2; - c1 = &pattern->c1; - radius0 = pattern->r2; - radius1 = pattern->r1; + c0 = &pattern->cd2; + c1 = &pattern->cd1; reverse_stops = TRUE; } - x0 = _cairo_fixed_to_double (c0->x); - y0 = _cairo_fixed_to_double (c0->y); - r0 = _cairo_fixed_to_double (radius0); - x1 = _cairo_fixed_to_double (c1->x); - y1 = _cairo_fixed_to_double (c1->y); - r1 = _cairo_fixed_to_double (radius1); + x0 = c0->center.x; + y0 = c0->center.y; + r0 = c0->radius; + x1 = c1->center.x; + y1 = c1->center.y; + r1 = c1->radius; p2u = pattern->base.base.matrix; status = cairo_matrix_invert (&p2u); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - if (pattern->r1 == pattern->r2) { + if (r0 == r1) { unsigned int n_stops = pattern->base.n_stops; _cairo_output_stream_printf (document->xml_node_defs, @@ -2036,6 +2028,9 @@ _cairo_svg_surface_emit_pattern (cairo_svg_surface_t *surface, case CAIRO_PATTERN_TYPE_RADIAL: return _cairo_svg_surface_emit_radial_pattern (surface, (cairo_radial_pattern_t *) pattern, output, is_stroke, parent_matrix); + + case CAIRO_PATTERN_TYPE_MESH: + ASSERT_NOT_REACHED; } return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); } @@ -2574,6 +2569,7 @@ _cairo_svg_surface_get_font_options (void *abstract_surface, cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_OFF); } static const cairo_surface_backend_t cairo_svg_surface_backend = { diff --git a/src/cairo-tee-surface.c b/src/cairo-tee-surface.c index e37cef8..83811bd 100644 --- a/src/cairo-tee-surface.c +++ b/src/cairo-tee-surface.c @@ -450,9 +450,6 @@ cairo_tee_surface_create (cairo_surface_t *master) master->content); _cairo_surface_wrapper_init (&surface->master, master); - /* we trust that these are already set and remain constant */ - surface->base.device_transform = master->device_transform; - surface->base.device_transform_inverse = master->device_transform_inverse; _cairo_array_init (&surface->slaves, sizeof (cairo_surface_wrapper_t)); diff --git a/src/cairo-truetype-subset-private.h b/src/cairo-truetype-subset-private.h index aed60d0..dc95732 100644 --- a/src/cairo-truetype-subset-private.h +++ b/src/cairo-truetype-subset-private.h @@ -64,6 +64,7 @@ #define TT_TAG_loca MAKE_TT_TAG('l','o','c','a') #define TT_TAG_maxp MAKE_TT_TAG('m','a','x','p') #define TT_TAG_name MAKE_TT_TAG('n','a','m','e') +#define TT_TAG_OS2 MAKE_TT_TAG('O','S','/','2') #define TT_TAG_post MAKE_TT_TAG('p','o','s','t') #define TT_TAG_prep MAKE_TT_TAG('p','r','e','p') @@ -174,6 +175,18 @@ typedef struct _tt_name { } tt_name_t; +/* bitmask for fsSelection field */ +#define TT_FS_SELECTION_ITALIC 1 +#define TT_FS_SELECTION_BOLD 32 + +/* _unused fields are defined in TT spec but not used by cairo */ +typedef struct _tt_os2 { + uint16_t _unused1[2]; + uint16_t usWeightClass; + uint16_t _unused2[28]; + uint16_t fsSelection; + uint16_t _unused3[11]; +} tt_os2_t; /* composite_glyph_t flags */ #define TT_ARG_1_AND_2_ARE_WORDS 0x0001 diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c index 9bf2f8f..176f163 100644 --- a/src/cairo-truetype-subset.c +++ b/src/cairo-truetype-subset.c @@ -92,7 +92,7 @@ struct _cairo_truetype_font { unsigned long last_boundary; int *parent_to_subset; cairo_status_t status; - + cairo_bool_t is_pdf; }; /* @@ -132,6 +132,7 @@ _cairo_truetype_font_set_error (cairo_truetype_font_t *font, static cairo_status_t _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, + cairo_bool_t is_pdf, cairo_truetype_font_t **font_return) { cairo_status_t status; @@ -155,6 +156,10 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, * return CAIRO_INT_STATUS_UNSUPPORTED; */ + /* We need to use a fallback font generated from the synthesized outlines. */ + if (backend->is_synthetic && backend->is_synthetic (scaled_font_subset->scaled_font)) + return CAIRO_INT_STATUS_UNSUPPORTED; + size = sizeof (tt_head_t); status = backend->load_truetype_table (scaled_font_subset->scaled_font, TT_TAG_head, 0, @@ -206,6 +211,7 @@ _cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, goto fail2; } + font->is_pdf = is_pdf; font->base.num_glyphs = 0; font->base.x_min = (int16_t) be16_to_cpu (head.x_min); font->base.y_min = (int16_t) be16_to_cpu (head.y_min); @@ -393,51 +399,100 @@ cairo_truetype_font_check_boundary (cairo_truetype_font_t *font, return CAIRO_STATUS_SUCCESS; } +typedef struct _cmap_unicode_range { + unsigned int start; + unsigned int end; +} cmap_unicode_range_t; + +static cmap_unicode_range_t winansi_unicode_ranges[] = { + { 0x0020, 0x007f }, + { 0x00a0, 0x00ff }, + { 0x0152, 0x0153 }, + { 0x0160, 0x0161 }, + { 0x0178, 0x0178 }, + { 0x017d, 0x017e }, + { 0x0192, 0x0192 }, + { 0x02c6, 0x02c6 }, + { 0x02dc, 0x02dc }, + { 0x2013, 0x2026 }, + { 0x2030, 0x2030 }, + { 0x2039, 0x203a }, + { 0x20ac, 0x20ac }, + { 0x2122, 0x2122 }, +}; + static cairo_status_t cairo_truetype_font_write_cmap_table (cairo_truetype_font_t *font, unsigned long tag) { - unsigned int i; + int i; + unsigned int j; + int range_offset; + int num_ranges; + int entry_selector; + int length; + + num_ranges = ARRAY_LENGTH (winansi_unicode_ranges); + + length = 16 + (num_ranges + 1)*8; + for (i = 0; i < num_ranges; i++) + length += (winansi_unicode_ranges[i].end - winansi_unicode_ranges[i].start + 1)*2; + + entry_selector = 0; + while ((1 << entry_selector) <= (num_ranges + 1)) + entry_selector++; + + entry_selector--; cairo_truetype_font_write_be16 (font, 0); /* Table version */ - cairo_truetype_font_write_be16 (font, 2); /* Num tables */ + cairo_truetype_font_write_be16 (font, 1); /* Num tables */ cairo_truetype_font_write_be16 (font, 3); /* Platform */ - cairo_truetype_font_write_be16 (font, 0); /* Encoding */ - cairo_truetype_font_write_be32 (font, 20); /* Offset to start of table */ + cairo_truetype_font_write_be16 (font, 1); /* Encoding */ + cairo_truetype_font_write_be32 (font, 12); /* Offset to start of table */ - cairo_truetype_font_write_be16 (font, 1); /* Platform */ - cairo_truetype_font_write_be16 (font, 0); /* Encoding */ - cairo_truetype_font_write_be32 (font, 52); /* Offset to start of table */ - - /* Output a format 4 encoding table. */ + /* Output a format 4 encoding table for the winansi encoding */ cairo_truetype_font_write_be16 (font, 4); /* Format */ - cairo_truetype_font_write_be16 (font, 32); /* Length */ + cairo_truetype_font_write_be16 (font, length); /* Length */ cairo_truetype_font_write_be16 (font, 0); /* Version */ - cairo_truetype_font_write_be16 (font, 4); /* 2*segcount */ - cairo_truetype_font_write_be16 (font, 4); /* searchrange */ - cairo_truetype_font_write_be16 (font, 1); /* entry selector */ - cairo_truetype_font_write_be16 (font, 0); /* rangeshift */ - cairo_truetype_font_write_be16 (font, 0xf000 + font->base.num_glyphs - 1); /* end count[0] */ - cairo_truetype_font_write_be16 (font, 0xffff); /* end count[1] */ + cairo_truetype_font_write_be16 (font, num_ranges*2 + 2); /* 2*segcount */ + cairo_truetype_font_write_be16 (font, (1 << (entry_selector + 1))); /* searchrange */ + cairo_truetype_font_write_be16 (font, entry_selector); /* entry selector */ + cairo_truetype_font_write_be16 (font, num_ranges*2 + 2 - (1 << (entry_selector + 1))); /* rangeshift */ + for (i = 0; i < num_ranges; i++) + cairo_truetype_font_write_be16 (font, winansi_unicode_ranges[i].end); /* end count[] */ + cairo_truetype_font_write_be16 (font, 0xffff); /* end count[] */ + cairo_truetype_font_write_be16 (font, 0); /* reserved */ - cairo_truetype_font_write_be16 (font, 0xf000); /* startCode[0] */ - cairo_truetype_font_write_be16 (font, 0xffff); /* startCode[1] */ - cairo_truetype_font_write_be16 (font, 0x1000); /* delta[0] */ - cairo_truetype_font_write_be16 (font, 1); /* delta[1] */ - cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[0] */ - cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[1] */ - - /* Output a format 6 encoding table. */ - - cairo_truetype_font_write_be16 (font, 6); - cairo_truetype_font_write_be16 (font, 10 + 2 * font->base.num_glyphs); - cairo_truetype_font_write_be16 (font, 0); - cairo_truetype_font_write_be16 (font, 0); /* First character */ - cairo_truetype_font_write_be16 (font, font->base.num_glyphs); - for (i = 0; i < font->base.num_glyphs; i++) - cairo_truetype_font_write_be16 (font, i); + + for (i = 0; i < num_ranges; i++) + cairo_truetype_font_write_be16 (font, winansi_unicode_ranges[i].start); /* startCode[] */ + cairo_truetype_font_write_be16 (font, 0xffff); /* startCode[] */ + + for (i = 0; i < num_ranges; i++) + cairo_truetype_font_write_be16 (font, 0x0000); /* delta[] */ + cairo_truetype_font_write_be16 (font, 1); /* delta[] */ + + range_offset = num_ranges*2 + 2; + for (i = 0; i < num_ranges; i++) { + cairo_truetype_font_write_be16 (font, range_offset); /* rangeOffset[] */ + range_offset += (winansi_unicode_ranges[i].end - winansi_unicode_ranges[i].start + 1)*2 - 2; + } + cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[] */ + + for (i = 0; i < num_ranges; i++) { + for (j = winansi_unicode_ranges[i].start; j < winansi_unicode_ranges[i].end + 1; j++) { + int ch = _cairo_unicode_to_winansi (j); + int glyph; + + if (ch > 0) + glyph = font->scaled_font_subset->latin_to_subset_glyph_index[ch]; + else + glyph = 0; + cairo_truetype_font_write_be16 (font, glyph); + } + } return font->status; } @@ -985,8 +1040,9 @@ cairo_truetype_font_add_truetype_table (cairo_truetype_font_t *font, * The tables in the table directory must be listed in alphabetical * order. The "cvt", "fpgm", and "prep" are optional tables. They * will only be embedded in the subset if they exist in the source - * font. The pos parameter of cairo_truetype_font_add_truetype_table() - * specifies the position of the table in the table directory. + * font. "cmap" is only embedded for latin fonts. The pos parameter of + * cairo_truetype_font_add_truetype_table() specifies the position of + * the table in the table directory. */ static void cairo_truetype_font_create_truetype_table_list (cairo_truetype_font_t *font) @@ -1016,7 +1072,9 @@ cairo_truetype_font_create_truetype_table_list (cairo_truetype_font_t *font) has_prep = TRUE; font->num_tables = 0; - pos = 1; + pos = 0; + if (font->is_pdf && font->scaled_font_subset->is_latin) + pos++; if (has_cvt) pos++; if (has_fpgm) @@ -1024,7 +1082,8 @@ cairo_truetype_font_create_truetype_table_list (cairo_truetype_font_t *font) cairo_truetype_font_add_truetype_table (font, TT_TAG_glyf, cairo_truetype_font_write_glyf_table, pos); pos = 0; - cairo_truetype_font_add_truetype_table (font, TT_TAG_cmap, cairo_truetype_font_write_cmap_table, pos++); + if (font->is_pdf && font->scaled_font_subset->is_latin) + cairo_truetype_font_add_truetype_table (font, TT_TAG_cmap, cairo_truetype_font_write_cmap_table, pos++); if (has_cvt) cairo_truetype_font_add_truetype_table (font, TT_TAG_cvt, cairo_truetype_font_write_generic_table, pos++); if (has_fpgm) @@ -1039,9 +1098,10 @@ cairo_truetype_font_create_truetype_table_list (cairo_truetype_font_t *font) cairo_truetype_font_add_truetype_table (font, TT_TAG_prep, cairo_truetype_font_write_generic_table, pos); } -cairo_status_t -_cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, - cairo_scaled_font_subset_t *font_subset) +static cairo_status_t +cairo_truetype_subset_init_internal (cairo_truetype_subset_t *truetype_subset, + cairo_scaled_font_subset_t *font_subset, + cairo_bool_t is_pdf) { cairo_truetype_font_t *font = NULL; cairo_status_t status; @@ -1052,7 +1112,7 @@ _cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, const unsigned long *string_offsets = NULL; unsigned long num_strings = 0; - status = _cairo_truetype_font_create (font_subset, &font); + status = _cairo_truetype_font_create (font_subset, is_pdf, &font); if (unlikely (status)) return status; @@ -1150,6 +1210,20 @@ _cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, return status; } +cairo_status_t +_cairo_truetype_subset_init_ps (cairo_truetype_subset_t *truetype_subset, + cairo_scaled_font_subset_t *font_subset) +{ + return cairo_truetype_subset_init_internal (truetype_subset, font_subset, FALSE); +} + +cairo_status_t +_cairo_truetype_subset_init_pdf (cairo_truetype_subset_t *truetype_subset, + cairo_scaled_font_subset_t *font_subset) +{ + return cairo_truetype_subset_init_internal (truetype_subset, font_subset, TRUE); +} + void _cairo_truetype_subset_fini (cairo_truetype_subset_t *subset) { @@ -1430,4 +1504,47 @@ fail: return status; } +cairo_int_status_t +_cairo_truetype_get_style (cairo_scaled_font_t *scaled_font, + int *weight, + cairo_bool_t *bold, + cairo_bool_t *italic) +{ + cairo_status_t status; + const cairo_scaled_font_backend_t *backend; + tt_os2_t os2; + unsigned long size; + uint16_t selection; + + backend = scaled_font->backend; + if (!backend->load_truetype_table) + return CAIRO_INT_STATUS_UNSUPPORTED; + + size = 0; + status = backend->load_truetype_table (scaled_font, + TT_TAG_OS2, 0, + NULL, + &size); + if (status) + return status; + + if (size < sizeof(os2)) + return CAIRO_INT_STATUS_UNSUPPORTED; + + size = sizeof (os2); + status = backend->load_truetype_table (scaled_font, + TT_TAG_OS2, 0, + (unsigned char *) &os2, + &size); + if (status) + return status; + + *weight = be16_to_cpu (os2.usWeightClass); + selection = be16_to_cpu (os2.fsSelection); + *bold = (selection & TT_FS_SELECTION_BOLD) ? TRUE : FALSE; + *italic = (selection & TT_FS_SELECTION_ITALIC) ? TRUE : FALSE; + + return CAIRO_STATUS_SUCCESS; +} + #endif /* CAIRO_HAS_FONT_SUBSET */ diff --git a/src/cairo-type1-fallback.c b/src/cairo-type1-fallback.c index ef25fb6..39bc53f 100644 --- a/src/cairo-type1-fallback.c +++ b/src/cairo-type1-fallback.c @@ -146,7 +146,7 @@ static void charstring_encode_command (cairo_array_t *data, int command) { cairo_status_t status; - int orig_size; + unsigned int orig_size; unsigned char buf[5]; unsigned char *p = buf; @@ -173,7 +173,7 @@ charstring_encode_integer (cairo_array_t *data, cairo_charstring_type_t type) { cairo_status_t status; - int orig_size; + unsigned int orig_size; unsigned char buf[10]; unsigned char *p = buf; @@ -407,7 +407,6 @@ cairo_type1_font_create_charstring (cairo_type1_font_t *font, path_info.type = type; if (emit_path) { status = _cairo_path_fixed_interpret (scaled_glyph->path, - CAIRO_DIRECTION_FORWARD, _charstring_move_to, _charstring_line_to, _charstring_curve_to, @@ -514,12 +513,27 @@ cairo_type1_font_write_header (cairo_type1_font_t *font, "} readonly def\n" "/Encoding 256 array\n" "0 1 255 {1 index exch /.notdef put} for\n"); - for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { - if (font->scaled_font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (font->output, "dup %d /%s put\n", - i, font->scaled_font_subset->glyph_names[i]); - } else { - _cairo_output_stream_printf (font->output, "dup %d /g%d put\n", i, i); + if (font->scaled_font_subset->is_latin) { + for (i = 1; i < 256; i++) { + int subset_glyph = font->scaled_font_subset->latin_to_subset_glyph_index[i]; + + if (subset_glyph > 0) { + if (font->scaled_font_subset->glyph_names != NULL) { + _cairo_output_stream_printf (font->output, "dup %d /%s put\n", + i, font->scaled_font_subset->glyph_names[subset_glyph]); + } else { + _cairo_output_stream_printf (font->output, "dup %d /g%d put\n", i, subset_glyph); + } + } + } + } else { + for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { + if (font->scaled_font_subset->glyph_names != NULL) { + _cairo_output_stream_printf (font->output, "dup %d /%s put\n", + i, font->scaled_font_subset->glyph_names[i]); + } else { + _cairo_output_stream_printf (font->output, "dup %d /g%d put\n", i, i); + } } } _cairo_output_stream_printf (font->output, diff --git a/src/cairo-type1-glyph-names.c b/src/cairo-type1-glyph-names.c new file mode 100644 index 0000000..80ccb96 --- /dev/null +++ b/src/cairo-type1-glyph-names.c @@ -0,0 +1,410 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2006 Red Hat, Inc + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA + * You should have received a copy of the MPL along with this library + * in the file COPYING-MPL-1.1 + * + * 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 + * http://www.mozilla.org/MPL/ + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY + * OF ANY KIND, either express or implied. See the LGPL or the MPL for + * the specific language governing rights and limitations. + * + * The Original Code is the cairo graphics library. + * + * The Initial Developer of the Original Code is Red Hat, Inc. + * + * Contributor(s): + * Kristian Høgsberg + */ + +#include "cairoint.h" + +#if CAIRO_HAS_FONT_SUBSET + +#include "cairo-type1-private.h" +#include "cairo-scaled-font-subsets-private.h" + +#if 0 +/* + * The three tables that follow are generated using this perl code: + */ + +@ps_standard_encoding = ( + # 0 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 16 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 32 + "space", "exclam", "quotedbl", "numbersign", + "dollar", "percent", "ampersand", "quoteright", + "parenleft", "parenright", "asterisk", "plus", + "comma", "hyphen", "period", "slash", + # 48 + "zero", "one", "two", "three", + "four", "five", "six", "seven", + "eight", "nine", "colon", "semicolon", + "less", "equal", "greater", "question", + # 64 + "at", "A", "B", "C", + "D", "E", "F", "G", + "H", "I", "J", "K", + "L", "M", "N", "O", + # 80 + "P", "Q", "R", "S", + "T", "U", "V", "W", + "X", "Y", "Z", "bracketleft", + "backslash", "bracketright", "asciicircum", "underscore", + # 96 + "quoteleft", "a", "b", "c", + "d", "e", "f", "g", + "h", "i", "j", "k", + "l", "m", "n", "o", + # 112 + "p", "q", "r", "s", + "t", "u", "v", "w", + "x", "y", "z", "braceleft", + "bar", "braceright", "asciitilde", NULL, + # 128 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 144 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 160 + NULL, "exclamdown", "cent", "sterling", + "fraction", "yen", "florin", "section", + "currency", "quotesingle", "quotedblleft", "guillemotleft", + "guilsinglleft","guilsinglright","fi", "fl", + # 176 + NULL, "endash", "dagger", "daggerdbl", + "periodcentered",NULL, "paragraph", "bullet", + "quotesinglbase","quotedblbase","quotedblright","guillemotright", + "ellipsis", "perthousand", NULL, "questiondown", + # 192 + NULL, "grave", "acute", "circumflex", + "tilde", "macron", "breve", "dotaccent", + "dieresis", NULL, "ring", "cedilla", + NULL, "hungarumlaut", "ogonek", "caron", + # 208 + "emdash", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 224 + NULL, "AE", NULL, "ordfeminine", + NULL, NULL, NULL, NULL, + "Lslash", "Oslash", "OE", "ordmasculine", + NULL, NULL, NULL, NULL, + # 240 + NULL, "ae", NULL, NULL, + NULL, "dotlessi", NULL, NULL, + "lslash", "oslash", "oe", "germandbls", + NULL, NULL, NULL, NULL + ); + +@winansi_encoding = ( + # 0 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 16 + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + # 32 + "space", "exclam", "quotedbl", "numbersign", + "dollar", "percent", "ampersand", "quotesingle", + "parenleft", "parenright", "asterisk", "plus", + "comma", "hyphen", "period", "slash", + # 48 + "zero", "one", "two", "three", + "four", "five", "six", "seven", + "eight", "nine", "colon", "semicolon", + "less", "equal", "greater", "question", + # 64 + "at", "A", "B", "C", + "D", "E", "F", "G", + "H", "I", "J", "K", + "L", "M", "N", "O", + # 80 + "P", "Q", "R", "S", + "T", "U", "V", "W", + "X", "Y", "Z", "bracketleft", + "backslash", "bracketright", "asciicircum", "underscore", + # 96 + "grave", "a", "b", "c", + "d", "e", "f", "g", + "h", "i", "j", "k", + "l", "m", "n", "o", + # 112 + "p", "q", "r", "s", + "t", "u", "v", "w", + "x", "y", "z", "braceleft", + "bar", "braceright", "asciitilde", NULL, + # 128 + "Euro", NULL, "quotesinglbase","florin", + "quotedblbase", "ellipsis", "dagger", "daggerdbl", + "circumflex", "perthousand", "Scaron", "guilsinglleft", + "OE", NULL, "Zcaron", NULL, + # 144 + NULL, "quoteleft", "quoteright", "quotedblleft", + "quotedblright","bullet", "endash", "emdash", + "tilde", "trademark", "scaron", "guilsinglright", + "oe", NULL, "zcaron", "Ydieresis", + # 160 + NULL, "exclamdown", "cent", "sterling", + "currency", "yen", "brokenbar", "section", + "dieresis", "copyright", "ordfeminine", "guillemotleft", + # 173 is also "hyphen" but we leave this NULL to avoid duplicate names + "logicalnot", NULL, "registered", "macron", + # 176 + "degree", "plusminus", "twosuperior", "threesuperior", + "acute", "mu", "paragraph", "periodcentered", + "cedilla", "onesuperior", "ordmasculine", "guillemotright", + "onequarter", "onehalf", "threequarters","questiondown", + # 192 + "Agrave", "Aacute", "Acircumflex", "Atilde", + "Adieresis", "Aring", "AE", "Ccedilla", + "Egrave", "Eacute", "Ecircumflex", "Edieresis", + "Igrave", "Iacute", "Icircumflex", "Idieresis", + # 208 + "Eth", "Ntilde", "Ograve", "Oacute", + "Ocircumflex", "Otilde", "Odieresis", "multiply", + "Oslash", "Ugrave", "Uacute", "Ucircumflex", + "Udieresis", "Yacute", "Thorn", "germandbls", + # 224 + "agrave", "aacute", "acircumflex", "atilde", + "adieresis", "aring", "ae", "ccedilla", + "egrave", "eacute", "ecircumflex", "edieresis", + "igrave", "iacute", "icircumflex", "idieresis", + # 240 + "eth", "ntilde", "ograve", "oacute", + "ocircumflex", "otilde", "odieresis", "divide", + "oslash", "ugrave", "uacute", "ucircumflex", + "udieresis", "yacute", "thorn", "ydieresis" +); + +sub print_offsets { + $s = qq(); + for $sym (@_) { + if (! ($sym eq NULL)) { + $ss = qq( $hash{$sym}/*$sym*/,); + } else { + $ss = qq( 0,); + } + if (length($s) + length($ss) > 78) { + print qq( $s\n); + $s = ""; + } + $s .= $ss; + } + print qq( $s\n); +} + +@combined = (@ps_standard_encoding, @winansi_encoding); +print "static const char glyph_name_symbol[] = {\n"; +%hash = (); +$s = qq( "\\0"); +$offset = 1; +for $sym (@combined) { + if (! ($sym eq NULL)) { + if (! exists $hash{$sym}) { + $hash{$sym} = $offset; + $offset += length($sym) + 1; + $ss = qq( "$sym\\0"); + if (length($s) + length($ss) > 78) { + print qq( $s\n); + $s = ""; + } + $s .= $ss; + } + } +} +print qq( $s\n); +print "};\n\n"; + +print "static const int16_t ps_standard_encoding_offset[256] = {\n"; +print_offsets(@ps_standard_encoding); +print "};\n"; + +print "static const int16_t winansi_encoding_offset[256] = {\n"; +print_offsets(@winansi_encoding); +print "};\n"; + +exit; +#endif + +static const char glyph_name_symbol[] = { + "\0" "space\0" "exclam\0" "quotedbl\0" "numbersign\0" "dollar\0" "percent\0" + "ampersand\0" "quoteright\0" "parenleft\0" "parenright\0" "asterisk\0" + "plus\0" "comma\0" "hyphen\0" "period\0" "slash\0" "zero\0" "one\0" "two\0" + "three\0" "four\0" "five\0" "six\0" "seven\0" "eight\0" "nine\0" "colon\0" + "semicolon\0" "less\0" "equal\0" "greater\0" "question\0" "at\0" "A\0" "B\0" + "C\0" "D\0" "E\0" "F\0" "G\0" "H\0" "I\0" "J\0" "K\0" "L\0" "M\0" "N\0" "O\0" + "P\0" "Q\0" "R\0" "S\0" "T\0" "U\0" "V\0" "W\0" "X\0" "Y\0" "Z\0" + "bracketleft\0" "backslash\0" "bracketright\0" "asciicircum\0" "underscore\0" + "quoteleft\0" "a\0" "b\0" "c\0" "d\0" "e\0" "f\0" "g\0" "h\0" "i\0" "j\0" + "k\0" "l\0" "m\0" "n\0" "o\0" "p\0" "q\0" "r\0" "s\0" "t\0" "u\0" "v\0" "w\0" + "x\0" "y\0" "z\0" "braceleft\0" "bar\0" "braceright\0" "asciitilde\0" + "exclamdown\0" "cent\0" "sterling\0" "fraction\0" "yen\0" "florin\0" + "section\0" "currency\0" "quotesingle\0" "quotedblleft\0" "guillemotleft\0" + "guilsinglleft\0" "guilsinglright\0" "fi\0" "fl\0" "endash\0" "dagger\0" + "daggerdbl\0" "periodcentered\0" "paragraph\0" "bullet\0" "quotesinglbase\0" + "quotedblbase\0" "quotedblright\0" "guillemotright\0" "ellipsis\0" + "perthousand\0" "questiondown\0" "grave\0" "acute\0" "circumflex\0" "tilde\0" + "macron\0" "breve\0" "dotaccent\0" "dieresis\0" "ring\0" "cedilla\0" + "hungarumlaut\0" "ogonek\0" "caron\0" "emdash\0" "AE\0" "ordfeminine\0" + "Lslash\0" "Oslash\0" "OE\0" "ordmasculine\0" "ae\0" "dotlessi\0" "lslash\0" + "oslash\0" "oe\0" "germandbls\0" "Euro\0" "Scaron\0" "Zcaron\0" "trademark\0" + "scaron\0" "zcaron\0" "Ydieresis\0" "brokenbar\0" "copyright\0" + "logicalnot\0" "registered\0" "degree\0" "plusminus\0" "twosuperior\0" + "threesuperior\0" "mu\0" "onesuperior\0" "onequarter\0" "onehalf\0" + "threequarters\0" "Agrave\0" "Aacute\0" "Acircumflex\0" "Atilde\0" + "Adieresis\0" "Aring\0" "Ccedilla\0" "Egrave\0" "Eacute\0" "Ecircumflex\0" + "Edieresis\0" "Igrave\0" "Iacute\0" "Icircumflex\0" "Idieresis\0" "Eth\0" + "Ntilde\0" "Ograve\0" "Oacute\0" "Ocircumflex\0" "Otilde\0" "Odieresis\0" + "multiply\0" "Ugrave\0" "Uacute\0" "Ucircumflex\0" "Udieresis\0" "Yacute\0" + "Thorn\0" "agrave\0" "aacute\0" "acircumflex\0" "atilde\0" "adieresis\0" + "aring\0" "ccedilla\0" "egrave\0" "eacute\0" "ecircumflex\0" "edieresis\0" + "igrave\0" "iacute\0" "icircumflex\0" "idieresis\0" "eth\0" "ntilde\0" + "ograve\0" "oacute\0" "ocircumflex\0" "otilde\0" "odieresis\0" "divide\0" + "ugrave\0" "uacute\0" "ucircumflex\0" "udieresis\0" "yacute\0" "thorn\0" + "ydieresis\0" +}; + +static const int16_t ps_standard_encoding_offset[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1/*space*/, 7/*exclam*/, 14/*quotedbl*/, 23/*numbersign*/, + 34/*dollar*/, 41/*percent*/, 49/*ampersand*/, 59/*quoteright*/, + 70/*parenleft*/, 80/*parenright*/, 91/*asterisk*/, 100/*plus*/, 105/*comma*/, + 111/*hyphen*/, 118/*period*/, 125/*slash*/, 131/*zero*/, 136/*one*/, + 140/*two*/, 144/*three*/, 150/*four*/, 155/*five*/, 160/*six*/, 164/*seven*/, + 170/*eight*/, 176/*nine*/, 181/*colon*/, 187/*semicolon*/, 197/*less*/, + 202/*equal*/, 208/*greater*/, 216/*question*/, 225/*at*/, 228/*A*/, 230/*B*/, + 232/*C*/, 234/*D*/, 236/*E*/, 238/*F*/, 240/*G*/, 242/*H*/, 244/*I*/, + 246/*J*/, 248/*K*/, 250/*L*/, 252/*M*/, 254/*N*/, 256/*O*/, 258/*P*/, + 260/*Q*/, 262/*R*/, 264/*S*/, 266/*T*/, 268/*U*/, 270/*V*/, 272/*W*/, + 274/*X*/, 276/*Y*/, 278/*Z*/, 280/*bracketleft*/, 292/*backslash*/, + 302/*bracketright*/, 315/*asciicircum*/, 327/*underscore*/, 338/*quoteleft*/, + 348/*a*/, 350/*b*/, 352/*c*/, 354/*d*/, 356/*e*/, 358/*f*/, 360/*g*/, + 362/*h*/, 364/*i*/, 366/*j*/, 368/*k*/, 370/*l*/, 372/*m*/, 374/*n*/, + 376/*o*/, 378/*p*/, 380/*q*/, 382/*r*/, 384/*s*/, 386/*t*/, 388/*u*/, + 390/*v*/, 392/*w*/, 394/*x*/, 396/*y*/, 398/*z*/, 400/*braceleft*/, + 410/*bar*/, 414/*braceright*/, 425/*asciitilde*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 436/*exclamdown*/, 447/*cent*/, 452/*sterling*/, 461/*fraction*/, 470/*yen*/, + 474/*florin*/, 481/*section*/, 489/*currency*/, 498/*quotesingle*/, + 510/*quotedblleft*/, 523/*guillemotleft*/, 537/*guilsinglleft*/, + 551/*guilsinglright*/, 566/*fi*/, 569/*fl*/, 0, 572/*endash*/, 579/*dagger*/, + 586/*daggerdbl*/, 596/*periodcentered*/, 0, 611/*paragraph*/, 621/*bullet*/, + 628/*quotesinglbase*/, 643/*quotedblbase*/, 656/*quotedblright*/, + 670/*guillemotright*/, 685/*ellipsis*/, 694/*perthousand*/, 0, + 706/*questiondown*/, 0, 719/*grave*/, 725/*acute*/, 731/*circumflex*/, + 742/*tilde*/, 748/*macron*/, 755/*breve*/, 761/*dotaccent*/, 771/*dieresis*/, + 0, 780/*ring*/, 785/*cedilla*/, 0, 793/*hungarumlaut*/, 806/*ogonek*/, + 813/*caron*/, 819/*emdash*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 826/*AE*/, 0, 829/*ordfeminine*/, 0, 0, 0, 0, 841/*Lslash*/, 848/*Oslash*/, + 855/*OE*/, 858/*ordmasculine*/, 0, 0, 0, 0, 0, 871/*ae*/, 0, 0, 0, + 874/*dotlessi*/, 0, 0, 883/*lslash*/, 890/*oslash*/, 897/*oe*/, + 900/*germandbls*/, 0, 0, 0, 0, +}; + +static const int16_t winansi_encoding_offset[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1/*space*/, 7/*exclam*/, 14/*quotedbl*/, 23/*numbersign*/, + 34/*dollar*/, 41/*percent*/, 49/*ampersand*/, 498/*quotesingle*/, + 70/*parenleft*/, 80/*parenright*/, 91/*asterisk*/, 100/*plus*/, 105/*comma*/, + 111/*hyphen*/, 118/*period*/, 125/*slash*/, 131/*zero*/, 136/*one*/, + 140/*two*/, 144/*three*/, 150/*four*/, 155/*five*/, 160/*six*/, 164/*seven*/, + 170/*eight*/, 176/*nine*/, 181/*colon*/, 187/*semicolon*/, 197/*less*/, + 202/*equal*/, 208/*greater*/, 216/*question*/, 225/*at*/, 228/*A*/, 230/*B*/, + 232/*C*/, 234/*D*/, 236/*E*/, 238/*F*/, 240/*G*/, 242/*H*/, 244/*I*/, + 246/*J*/, 248/*K*/, 250/*L*/, 252/*M*/, 254/*N*/, 256/*O*/, 258/*P*/, + 260/*Q*/, 262/*R*/, 264/*S*/, 266/*T*/, 268/*U*/, 270/*V*/, 272/*W*/, + 274/*X*/, 276/*Y*/, 278/*Z*/, 280/*bracketleft*/, 292/*backslash*/, + 302/*bracketright*/, 315/*asciicircum*/, 327/*underscore*/, 719/*grave*/, + 348/*a*/, 350/*b*/, 352/*c*/, 354/*d*/, 356/*e*/, 358/*f*/, 360/*g*/, + 362/*h*/, 364/*i*/, 366/*j*/, 368/*k*/, 370/*l*/, 372/*m*/, 374/*n*/, + 376/*o*/, 378/*p*/, 380/*q*/, 382/*r*/, 384/*s*/, 386/*t*/, 388/*u*/, + 390/*v*/, 392/*w*/, 394/*x*/, 396/*y*/, 398/*z*/, 400/*braceleft*/, + 410/*bar*/, 414/*braceright*/, 425/*asciitilde*/, 0, 911/*Euro*/, 0, + 628/*quotesinglbase*/, 474/*florin*/, 643/*quotedblbase*/, 685/*ellipsis*/, + 579/*dagger*/, 586/*daggerdbl*/, 731/*circumflex*/, 694/*perthousand*/, + 916/*Scaron*/, 537/*guilsinglleft*/, 855/*OE*/, 0, 923/*Zcaron*/, 0, 0, + 338/*quoteleft*/, 59/*quoteright*/, 510/*quotedblleft*/, + 656/*quotedblright*/, 621/*bullet*/, 572/*endash*/, 819/*emdash*/, + 742/*tilde*/, 930/*trademark*/, 940/*scaron*/, 551/*guilsinglright*/, + 897/*oe*/, 0, 947/*zcaron*/, 954/*Ydieresis*/, 0, 436/*exclamdown*/, + 447/*cent*/, 452/*sterling*/, 489/*currency*/, 470/*yen*/, 964/*brokenbar*/, + 481/*section*/, 771/*dieresis*/, 974/*copyright*/, 829/*ordfeminine*/, + 523/*guillemotleft*/, 984/*logicalnot*/, 0, 995/*registered*/, 748/*macron*/, + 1006/*degree*/, 1013/*plusminus*/, 1023/*twosuperior*/, + 1035/*threesuperior*/, 725/*acute*/, 1049/*mu*/, 611/*paragraph*/, + 596/*periodcentered*/, 785/*cedilla*/, 1052/*onesuperior*/, + 858/*ordmasculine*/, 670/*guillemotright*/, 1064/*onequarter*/, + 1075/*onehalf*/, 1083/*threequarters*/, 706/*questiondown*/, 1097/*Agrave*/, + 1104/*Aacute*/, 1111/*Acircumflex*/, 1123/*Atilde*/, 1130/*Adieresis*/, + 1140/*Aring*/, 826/*AE*/, 1146/*Ccedilla*/, 1155/*Egrave*/, 1162/*Eacute*/, + 1169/*Ecircumflex*/, 1181/*Edieresis*/, 1191/*Igrave*/, 1198/*Iacute*/, + 1205/*Icircumflex*/, 1217/*Idieresis*/, 1227/*Eth*/, 1231/*Ntilde*/, + 1238/*Ograve*/, 1245/*Oacute*/, 1252/*Ocircumflex*/, 1264/*Otilde*/, + 1271/*Odieresis*/, 1281/*multiply*/, 848/*Oslash*/, 1290/*Ugrave*/, + 1297/*Uacute*/, 1304/*Ucircumflex*/, 1316/*Udieresis*/, 1326/*Yacute*/, + 1333/*Thorn*/, 900/*germandbls*/, 1339/*agrave*/, 1346/*aacute*/, + 1353/*acircumflex*/, 1365/*atilde*/, 1372/*adieresis*/, 1382/*aring*/, + 871/*ae*/, 1388/*ccedilla*/, 1397/*egrave*/, 1404/*eacute*/, + 1411/*ecircumflex*/, 1423/*edieresis*/, 1433/*igrave*/, 1440/*iacute*/, + 1447/*icircumflex*/, 1459/*idieresis*/, 1469/*eth*/, 1473/*ntilde*/, + 1480/*ograve*/, 1487/*oacute*/, 1494/*ocircumflex*/, 1506/*otilde*/, + 1513/*odieresis*/, 1523/*divide*/, 890/*oslash*/, 1530/*ugrave*/, + 1537/*uacute*/, 1544/*ucircumflex*/, 1556/*udieresis*/, 1566/*yacute*/, + 1573/*thorn*/, 1579/*ydieresis*/, +}; + +const char * +_cairo_ps_standard_encoding_to_glyphname (int glyph) +{ + if (ps_standard_encoding_offset[glyph]) + return glyph_name_symbol + ps_standard_encoding_offset[glyph]; + else + return NULL; +} + +const char * +_cairo_winansi_to_glyphname (int glyph) +{ + if (winansi_encoding_offset[glyph]) + return glyph_name_symbol + winansi_encoding_offset[glyph]; + else + return NULL; +} + +#endif /* CAIRO_HAS_FONT_SUBSET */ diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c index 9650699..e0b1bf8 100644 --- a/src/cairo-type1-subset.c +++ b/src/cairo-type1-subset.c @@ -116,6 +116,7 @@ typedef struct _cairo_type1_font_subset { static cairo_status_t _cairo_type1_font_subset_init (cairo_type1_font_subset_t *font, cairo_unscaled_font_t *unscaled_font, + cairo_scaled_font_subset_t *scaled_font_subset, cairo_bool_t hex_encode) { cairo_ft_unscaled_font_t *ft_unscaled_font; @@ -144,6 +145,7 @@ _cairo_type1_font_subset_init (cairo_type1_font_subset_t *font, #endif memset (font, 0, sizeof (*font)); + font->scaled_font_subset = scaled_font_subset; font->base.unscaled_font = _cairo_unscaled_font_reference (unscaled_font); font->base.num_glyphs = face->num_glyphs; font->base.x_min = face->bbox.xMin / (double)face->units_per_EM; @@ -391,13 +393,27 @@ cairo_type1_font_subset_write_header (cairo_type1_font_subset_t *font, _cairo_output_stream_printf (font->output, "/Encoding 256 array\n" "0 1 255 {1 index exch /.notdef put} for\n"); - for (i = 1; i < font->base.num_glyphs; i++) { - if (font->glyphs[i].subset_index < 0) - continue; - _cairo_output_stream_printf (font->output, - "dup %d /%s put\n", - font->glyphs[i].subset_index, - font->glyphs[i].name); + if (font->scaled_font_subset->is_latin) { + for (i = 1; i < 256; i++) { + int subset_glyph = font->scaled_font_subset->latin_to_subset_glyph_index[i]; + int parent_glyph = font->scaled_font_subset->glyphs[subset_glyph]; + + if (subset_glyph > 0) { + _cairo_output_stream_printf (font->output, + "dup %d /%s put\n", + i, + font->glyphs[parent_glyph].name); + } + } + } else { + for (i = 1; i < font->base.num_glyphs; i++) { + if (font->glyphs[i].subset_index < 0) + continue; + _cairo_output_stream_printf (font->output, + "dup %d /%s put\n", + font->glyphs[i].subset_index, + font->glyphs[i].name); + } } _cairo_output_stream_printf (font->output, "readonly def"); @@ -618,192 +634,6 @@ cairo_type1_font_subset_decode_integer (const unsigned char *p, int *integer) return p; } -#if 0 -/* - * The two tables that follow are generated using this perl code: - */ - -@encoding = ( - /* 0 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 16 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 32 */ - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - /* 48 */ - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - /* 64 */ - "at", "A", "B", "C", - "D", "E", "F", "G", - "H", "I", "J", "K", - "L", "M", "N", "O", - /* 80 */ - "P", "Q", "R", "S", - "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - /* 96 */ - "quoteleft", "a", "b", "c", - "d", "e", "f", "g", - "h", "i", "j", "k", - "l", "m", "n", "o", - /* 112 */ - "p", "q", "r", "s", - "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", NULL, - /* 128 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 144 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 160 */ - NULL, "exclamdown", "cent", "sterling", - "fraction", "yen", "florin", "section", - "currency", "quotesingle", "quotedblleft", "guillemotleft", - "guilsinglleft","guilsinglright","fi", "fl", - /* 176 */ - NULL, "endash", "dagger", "daggerdbl", - "periodcentered",NULL, "paragraph", "bullet", - "quotesinglbase","quotedblbase","quotedblright","guillemotright", - "ellipsis", "perthousand", NULL, "questiondown", - /* 192 */ - NULL, "grave", "acute", "circumflex", - "tilde", "macron", "breve", "dotaccent", - "dieresis", NULL, "ring", "cedilla", - NULL, "hungarumlaut", "ogonek", "caron", - /* 208 */ - "emdash", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 224 */ - NULL, "AE", NULL, "ordfeminine", - NULL, NULL, NULL, NULL, - "Lslash", "Oslash", "OE", "ordmasculine", - NULL, NULL, NULL, NULL, - /* 240 */ - NULL, "ae", NULL, NULL, - NULL, "dotlessi", NULL, NULL, - "lslash", "oslash", "oe", "germandbls", - NULL, NULL, NULL, NULL - ); - -print "static const char ps_standard_encoding_symbol[] = {\n"; -$s = qq( "\\0"); -for $sym (@encoding) { - if (! ($sym eq NULL)) { - $ss = qq( "$sym\\0"); - if (length($s) + length($ss) > 78) { - print qq( $s\n); - $s = ""; - } - $s .= $ss; - } -} -print qq( $s\n); -print "};\n\n"; -print "static const int16_t ps_standard_encoding_offset[256] = {\n"; -$offset = 1; -$s = qq(); -for $sym (@encoding) { - if (! ($sym eq NULL)) { - $ss = qq( $offset/*$sym*/,); - $offset += length($sym) + 1; - } else { - $ss = qq( 0,); - } - if (length($s) + length($ss) > 78) { - print qq( $s\n); - $s = ""; - } - $s .= $ss; -} -print qq( $s\n); -print "};\n"; -exit; -#endif - -static const char ps_standard_encoding_symbol[] = { - "\0" "space\0" "exclam\0" "quotedbl\0" "numbersign\0" "dollar\0" "percent\0" - "ampersand\0" "quoteright\0" "parenleft\0" "parenright\0" "asterisk\0" - "plus\0" "comma\0" "hyphen\0" "period\0" "slash\0" "zero\0" "one\0" "two\0" - "three\0" "four\0" "five\0" "six\0" "seven\0" "eight\0" "nine\0" "colon\0" - "semicolon\0" "less\0" "equal\0" "greater\0" "question\0" "at\0" "A\0" "B\0" - "C\0" "D\0" "E\0" "F\0" "G\0" "H\0" "I\0" "J\0" "K\0" "L\0" "M\0" "N\0" "O\0" - "P\0" "Q\0" "R\0" "S\0" "T\0" "U\0" "V\0" "W\0" "X\0" "Y\0" "Z\0" - "bracketleft\0" "backslash\0" "bracketright\0" "asciicircum\0" "underscore\0" - "quoteleft\0" "a\0" "b\0" "c\0" "d\0" "e\0" "f\0" "g\0" "h\0" "i\0" "j\0" - "k\0" "l\0" "m\0" "n\0" "o\0" "p\0" "q\0" "r\0" "s\0" "t\0" "u\0" "v\0" "w\0" - "x\0" "y\0" "z\0" "braceleft\0" "bar\0" "braceright\0" "asciitilde\0" - "exclamdown\0" "cent\0" "sterling\0" "fraction\0" "yen\0" "florin\0" - "section\0" "currency\0" "quotesingle\0" "quotedblleft\0" "guillemotleft\0" - "guilsinglleft\0" "guilsinglright\0" "fi\0" "fl\0" "endash\0" "dagger\0" - "daggerdbl\0" "periodcentered\0" "paragraph\0" "bullet\0" "quotesinglbase\0" - "quotedblbase\0" "quotedblright\0" "guillemotright\0" "ellipsis\0" - "perthousand\0" "questiondown\0" "grave\0" "acute\0" "circumflex\0" "tilde\0" - "macron\0" "breve\0" "dotaccent\0" "dieresis\0" "ring\0" "cedilla\0" - "hungarumlaut\0" "ogonek\0" "caron\0" "emdash\0" "AE\0" "ordfeminine\0" - "Lslash\0" "Oslash\0" "OE\0" "ordmasculine\0" "ae\0" "dotlessi\0" "lslash\0" - "oslash\0" "oe\0" "germandbls\0" -}; - -static const int16_t ps_standard_encoding_offset[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1/*space*/, 7/*exclam*/, 14/*quotedbl*/, 23/*numbersign*/, - 34/*dollar*/, 41/*percent*/, 49/*ampersand*/, 59/*quoteright*/, - 70/*parenleft*/, 80/*parenright*/, 91/*asterisk*/, 100/*plus*/, 105/*comma*/, - 111/*hyphen*/, 118/*period*/, 125/*slash*/, 131/*zero*/, 136/*one*/, - 140/*two*/, 144/*three*/, 150/*four*/, 155/*five*/, 160/*six*/, 164/*seven*/, - 170/*eight*/, 176/*nine*/, 181/*colon*/, 187/*semicolon*/, 197/*less*/, - 202/*equal*/, 208/*greater*/, 216/*question*/, 225/*at*/, 228/*A*/, 230/*B*/, - 232/*C*/, 234/*D*/, 236/*E*/, 238/*F*/, 240/*G*/, 242/*H*/, 244/*I*/, - 246/*J*/, 248/*K*/, 250/*L*/, 252/*M*/, 254/*N*/, 256/*O*/, 258/*P*/, - 260/*Q*/, 262/*R*/, 264/*S*/, 266/*T*/, 268/*U*/, 270/*V*/, 272/*W*/, - 274/*X*/, 276/*Y*/, 278/*Z*/, 280/*bracketleft*/, 292/*backslash*/, - 302/*bracketright*/, 315/*asciicircum*/, 327/*underscore*/, 338/*quoteleft*/, - 348/*a*/, 350/*b*/, 352/*c*/, 354/*d*/, 356/*e*/, 358/*f*/, 360/*g*/, - 362/*h*/, 364/*i*/, 366/*j*/, 368/*k*/, 370/*l*/, 372/*m*/, 374/*n*/, - 376/*o*/, 378/*p*/, 380/*q*/, 382/*r*/, 384/*s*/, 386/*t*/, 388/*u*/, - 390/*v*/, 392/*w*/, 394/*x*/, 396/*y*/, 398/*z*/, 400/*braceleft*/, - 410/*bar*/, 414/*braceright*/, 425/*asciitilde*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 436/*exclamdown*/, 447/*cent*/, 452/*sterling*/, 461/*fraction*/, 470/*yen*/, - 474/*florin*/, 481/*section*/, 489/*currency*/, 498/*quotesingle*/, - 510/*quotedblleft*/, 523/*guillemotleft*/, 537/*guilsinglleft*/, - 551/*guilsinglright*/, 566/*fi*/, 569/*fl*/, 0, 572/*endash*/, 579/*dagger*/, - 586/*daggerdbl*/, 596/*periodcentered*/, 0, 611/*paragraph*/, 621/*bullet*/, - 628/*quotesinglbase*/, 643/*quotedblbase*/, 656/*quotedblright*/, - 670/*guillemotright*/, 685/*ellipsis*/, 694/*perthousand*/, 0, - 706/*questiondown*/, 0, 719/*grave*/, 725/*acute*/, 731/*circumflex*/, - 742/*tilde*/, 748/*macron*/, 755/*breve*/, 761/*dotaccent*/, 771/*dieresis*/, - 0, 780/*ring*/, 785/*cedilla*/, 0, 793/*hungarumlaut*/, 806/*ogonek*/, - 813/*caron*/, 819/*emdash*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 826/*AE*/, 0, 829/*ordfeminine*/, 0, 0, 0, 0, 841/*Lslash*/, 848/*Oslash*/, - 855/*OE*/, 858/*ordmasculine*/, 0, 0, 0, 0, 0, 871/*ae*/, 0, 0, 0, - 874/*dotlessi*/, 0, 0, 883/*lslash*/, 890/*oslash*/, 897/*oe*/, - 900/*germandbls*/, 0, 0, 0, 0, -}; - -#define ps_standard_encoding(index) ((index) ? ps_standard_encoding_symbol+ps_standard_encoding_offset[(index)] : NULL) - static cairo_status_t use_standard_encoding_glyph (cairo_type1_font_subset_t *font, int index) { @@ -812,7 +642,7 @@ use_standard_encoding_glyph (cairo_type1_font_subset_t *font, int index) if (index < 0 || index > 255) return CAIRO_STATUS_SUCCESS; - glyph_name = ps_standard_encoding(index); + glyph_name = _cairo_ps_standard_encoding_to_glyphname (index); if (glyph_name == NULL) return CAIRO_STATUS_SUCCESS; @@ -1321,9 +1151,14 @@ _cairo_type1_subset_init (cairo_type1_subset_t *type1_subset, if (_cairo_ft_scaled_font_is_vertical (scaled_font_subset->scaled_font)) return CAIRO_INT_STATUS_UNSUPPORTED; + /* We need to use a fallback font generated from the synthesized outlines. */ + if (scaled_font_subset->scaled_font->backend->is_synthetic && + scaled_font_subset->scaled_font->backend->is_synthetic (scaled_font_subset->scaled_font)) + return CAIRO_INT_STATUS_UNSUPPORTED; + unscaled_font = _cairo_ft_scaled_font_get_unscaled_font (scaled_font_subset->scaled_font); - status = _cairo_type1_font_subset_init (&font, unscaled_font, hex_encode); + status = _cairo_type1_font_subset_init (&font, unscaled_font, scaled_font_subset, hex_encode); if (unlikely (status)) return status; diff --git a/src/cairo-types-private.h b/src/cairo-types-private.h index ac3fda8..967781c 100644 --- a/src/cairo-types-private.h +++ b/src/cairo-types-private.h @@ -132,9 +132,7 @@ struct _cairo_array { unsigned int size; unsigned int num_elements; unsigned int element_size; - char **elements; - - cairo_bool_t is_snapshot; + char *elements; }; /** @@ -161,12 +159,19 @@ typedef enum _cairo_lcd_filter { CAIRO_LCD_FILTER_FIR5 } cairo_lcd_filter_t; +typedef enum _cairo_round_glyph_positions { + CAIRO_ROUND_GLYPH_POS_DEFAULT, + CAIRO_ROUND_GLYPH_POS_ON, + CAIRO_ROUND_GLYPH_POS_OFF +} cairo_round_glyph_positions_t; + struct _cairo_font_options { cairo_antialias_t antialias; cairo_subpixel_order_t subpixel_order; cairo_lcd_filter_t lcd_filter; cairo_hint_style_t hint_style; cairo_hint_metrics_t hint_metrics; + cairo_round_glyph_positions_t round_glyph_positions; }; /* XXX: Right now, the _cairo_color structure puts unpremultiplied @@ -247,6 +252,11 @@ typedef struct _cairo_point_double { double y; } cairo_point_double_t; +typedef struct _cairo_circle_double { + cairo_point_double_t center; + double radius; +} cairo_circle_double_t; + typedef struct _cairo_distance_double { double dx; double dy; @@ -283,13 +293,6 @@ typedef struct _cairo_edge { typedef struct _cairo_polygon { cairo_status_t status; - cairo_point_t first_point; - cairo_point_t last_point; - cairo_point_t current_point; - cairo_slope_t current_edge; - cairo_bool_t has_current_point; - cairo_bool_t has_current_edge; - cairo_box_t extents; cairo_box_t limit; const cairo_box_t *limits; @@ -419,17 +422,15 @@ typedef struct _cairo_gradient_pattern { typedef struct _cairo_linear_pattern { cairo_gradient_pattern_t base; - cairo_point_t p1; - cairo_point_t p2; + cairo_point_double_t pd1; + cairo_point_double_t pd2; } cairo_linear_pattern_t; typedef struct _cairo_radial_pattern { cairo_gradient_pattern_t base; - cairo_point_t c1; - cairo_fixed_t r1; - cairo_point_t c2; - cairo_fixed_t r2; + cairo_circle_double_t cd1; + cairo_circle_double_t cd2; } cairo_radial_pattern_t; typedef union { @@ -439,6 +440,51 @@ typedef union { cairo_radial_pattern_t radial; } cairo_gradient_pattern_union_t; +/* + * A mesh patch is a tensor-product patch (bicubic Bezier surface + * patch). It has 16 control points. Each set of 4 points along the + * sides of the 4x4 grid of control points is a Bezier curve that + * defines one side of the patch. A color is assigned to each + * corner. The inner 4 points provide additional control over the + * shape and the color mapping. + * + * Cairo uses the same convention as the PDF Reference for numbering + * the points and side of the patch. + * + * + * Side 1 + * + * p[0][3] p[1][3] p[2][3] p[3][3] + * Side 0 p[0][2] p[1][2] p[2][2] p[3][2] Side 2 + * p[0][1] p[1][1] p[2][1] p[3][1] + * p[0][0] p[1][0] p[2][0] p[3][0] + * + * Side 3 + * + * + * Point Color + * ------------------------- + * points[0][0] colors[0] + * points[0][3] colors[1] + * points[3][3] colors[2] + * points[3][0] colors[3] + */ + +typedef struct _cairo_mesh_patch { + cairo_point_double_t points[4][4]; + cairo_color_t colors[4]; +} cairo_mesh_patch_t; + +typedef struct _cairo_mesh_pattern { + cairo_pattern_t base; + + cairo_array_t patches; + cairo_mesh_patch_t *current_patch; + int current_side; + cairo_bool_t has_control_point[4]; + cairo_bool_t has_color[4]; +} cairo_mesh_pattern_t; + typedef union { cairo_pattern_type_t type; cairo_pattern_t base; @@ -446,6 +492,7 @@ typedef union { cairo_solid_pattern_t solid; cairo_surface_pattern_t surface; cairo_gradient_pattern_union_t gradient; + cairo_mesh_pattern_t mesh; } cairo_pattern_union_t; /* diff --git a/src/cairo-vg-surface.c b/src/cairo-vg-surface.c index acc3f80..0034d73 100644 --- a/src/cairo-vg-surface.c +++ b/src/cairo-vg-surface.c @@ -588,7 +588,6 @@ _vg_path_from_cairo (vg_path_t *vg_path, vg_path->dcount = 0; status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _vg_move_to, _vg_line_to, _vg_curve_to, @@ -773,10 +772,10 @@ _vg_setup_linear_source (cairo_vg_context_t *context, { VGfloat linear[4]; - linear[0] = _cairo_fixed_to_double (lpat->p1.x); - linear[1] = _cairo_fixed_to_double (lpat->p1.y); - linear[2] = _cairo_fixed_to_double (lpat->p2.x); - linear[3] = _cairo_fixed_to_double (lpat->p2.y); + linear[0] = lpat->pd1.x; + linear[1] = lpat->pd1.y; + linear[2] = lpat->pd2.x; + linear[3] = lpat->pd2.y; vgSetParameteri (context->paint, VG_PAINT_COLOR_RAMP_SPREAD_MODE, @@ -800,11 +799,11 @@ _vg_setup_radial_source (cairo_vg_context_t *context, { VGfloat radial[5]; - radial[0] = _cairo_fixed_to_double (rpat->c1.x); - radial[1] = _cairo_fixed_to_double (rpat->c1.y); - radial[2] = _cairo_fixed_to_double (rpat->c2.x); - radial[3] = _cairo_fixed_to_double (rpat->c2.y); - radial[4] = _cairo_fixed_to_double (rpat->r2); + radial[0] = rpat->cd1.center.x; + radial[1] = rpat->cd1.center.y; + radial[2] = rpat->cd2.center.x; + radial[3] = rpat->cd2.center.y; + radial[4] = rpat->cd2.radius; vgSetParameteri (context->paint, VG_PAINT_COLOR_RAMP_SPREAD_MODE, VG_COLOR_RAMP_SPREAD_PAD); @@ -1301,6 +1300,7 @@ _vg_surface_get_font_options (void *abstract_surface, _cairo_font_options_init_default (options); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_OFF); } static cairo_int_status_t diff --git a/src/cairo-wgl-context.c b/src/cairo-wgl-context.c index ac15b1d..82f1211 100644 --- a/src/cairo-wgl-context.c +++ b/src/cairo-wgl-context.c @@ -153,7 +153,7 @@ _wgl_dummy_ctx (cairo_wgl_context_t *ctx) RegisterClassExA (&wincl); - ctx->dummy_wnd = CreateWindow ("cairo_wgl_context_dummy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + ctx->dummy_wnd = CreateWindowA ("cairo_wgl_context_dummy", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ctx->dummy_dc = GetDC (ctx->dummy_wnd); ZeroMemory (&pfd, sizeof (PIXELFORMATDESCRIPTOR)); @@ -199,6 +199,13 @@ cairo_wgl_device_create (HGLRC rc) ctx->base.swap_buffers = _wgl_swap_buffers; ctx->base.destroy = _wgl_destroy; + status = _cairo_gl_dispatch_init (&ctx->base.dispatch, + (cairo_gl_get_proc_addr_func_t) wglGetProcAddress); + if (unlikely (status)) { + free (ctx); + return _cairo_gl_context_create_in_error (status); + } + status = _cairo_gl_context_init (&ctx->base); if (unlikely (status)) { free (ctx); diff --git a/src/cairo-win32-font.c b/src/cairo-win32-font.c index 479c672..d0c29bb 100644 --- a/src/cairo-win32-font.c +++ b/src/cairo-win32-font.c @@ -46,6 +46,9 @@ #include "cairo-win32-private.h" #include "cairo-error-private.h" +#include "cairo-scaled-font-subsets-private.h" + +#include #ifndef SPI_GETFONTSMOOTHINGTYPE #define SPI_GETFONTSMOOTHINGTYPE 0x200a @@ -1511,6 +1514,7 @@ _cairo_win32_scaled_font_load_truetype_table (void *abstract_font, cairo_win32_scaled_font_t *scaled_font = abstract_font; HDC hdc; cairo_status_t status; + DWORD ret; hdc = _get_global_font_dc (); assert (hdc != NULL); @@ -1520,9 +1524,11 @@ _cairo_win32_scaled_font_load_truetype_table (void *abstract_font, if (status) return status; - *length = GetFontData (hdc, tag, offset, buffer, *length); - if (*length == GDI_ERROR) + ret = GetFontData (hdc, tag, offset, buffer, *length); + if (ret == GDI_ERROR || (buffer && ret != *length)) status = CAIRO_INT_STATUS_UNSUPPORTED; + else + *length = ret; cairo_win32_scaled_font_done_font (&scaled_font->base); @@ -1621,6 +1627,31 @@ exit1: return status; } +static cairo_bool_t +_cairo_win32_scaled_font_is_synthetic (void *abstract_font) +{ + cairo_win32_scaled_font_t *scaled_font = abstract_font; + cairo_status_t status; + int weight; + cairo_bool_t bold; + cairo_bool_t italic; + + status = _cairo_truetype_get_style (&scaled_font->base, + &weight, + &bold, + &italic); + /* If this doesn't work assume it is not synthetic to avoid + * unneccessary subsetting fallbacks. */ + if (status != CAIRO_STATUS_SUCCESS) + return FALSE; + + if (scaled_font->logfont.lfWeight != weight || + scaled_font->logfont.lfItalic != italic) + return TRUE; + + return FALSE; +} + static cairo_status_t _cairo_win32_scaled_font_init_glyph_surface (cairo_win32_scaled_font_t *scaled_font, cairo_scaled_glyph_t *scaled_glyph) @@ -1869,6 +1900,7 @@ const cairo_scaled_font_backend_t _cairo_win32_scaled_font_backend = { _cairo_win32_scaled_font_show_glyphs, _cairo_win32_scaled_font_load_truetype_table, _cairo_win32_scaled_font_index_to_ucs4, + _cairo_win32_scaled_font_is_synthetic }; /* #cairo_win32_font_face_t */ @@ -1934,6 +1966,118 @@ const cairo_font_face_backend_t _cairo_win32_font_face_backend = { _cairo_win32_font_face_scaled_font_create }; +/* We maintain a hash table from LOGFONT,HFONT => #cairo_font_face_t. + * The primary purpose of this mapping is to provide unique + * #cairo_font_face_t values so that our cache and mapping from + * #cairo_font_face_t => #cairo_scaled_font_t works. Once the + * corresponding #cairo_font_face_t objects fall out of downstream + * caches, we don't need them in this hash table anymore. + * + * Modifications to this hash table are protected by + * _cairo_win32_font_face_mutex. + */ + +static cairo_hash_table_t *cairo_win32_font_face_hash_table = NULL; + +static int +_cairo_win32_font_face_keys_equal (const void *key_a, + const void *key_b); + +static void +_cairo_win32_font_face_hash_table_destroy (void) +{ + cairo_win32_font_face_t *font_face; + + CAIRO_MUTEX_LOCK (_cairo_win32_font_face_mutex); + + if (cairo_win32_font_face_hash_table) { + /* This is rather inefficient, but destroying the hash table + * is something we only do during debugging, (during + * cairo_debug_reset_static_data), when efficiency is not + * relevant. */ + while (1) { + font_face= _cairo_hash_table_random_entry (cairo_win32_font_face_hash_table, + NULL); + if (font_face == NULL) + break; + _cairo_hash_table_remove (cairo_win32_font_face_hash_table, + &font_face->base.hash_entry); + + cairo_font_face_destroy (&font_face->base); + } + + _cairo_hash_table_destroy (cairo_win32_font_face_hash_table); + + cairo_win32_font_face_hash_table = NULL; + } + + CAIRO_MUTEX_UNLOCK (_cairo_win32_font_face_mutex); +} + +static cairo_hash_table_t * +_cairo_win32_font_face_hash_table_lock (void) +{ + CAIRO_MUTEX_LOCK (_cairo_win32_font_face_mutex); + + if (unlikely (cairo_win32_font_face_hash_table == NULL)) + { + cairo_win32_font_face_hash_table = + _cairo_hash_table_create (_cairo_win32_font_face_keys_equal); + + if (unlikely (cairo_win32_font_face_hash_table == NULL)) { + CAIRO_MUTEX_UNLOCK (_cairo_win32_font_face_mutex); + _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); + return NULL; + } + } + + return cairo_win32_font_face_hash_table; +} + +static void +_cairo_win32_font_face_hash_table_unlock (void) +{ + CAIRO_MUTEX_UNLOCK (_cairo_win32_font_face_mutex); +} + +static void +_cairo_win32_font_face_init_key (cairo_win32_font_face_t *key, + LOGFONTW *logfont, + HFONT font) +{ + unsigned long hash = _CAIRO_HASH_INIT_VALUE; + + key->logfont = *logfont; + key->hfont = font; + + hash = _cairo_hash_bytes (0, logfont->lfFaceName, 2*wcslen(logfont->lfFaceName)); + hash = _cairo_hash_bytes (hash, &logfont->lfWeight, sizeof(logfont->lfWeight)); + hash = _cairo_hash_bytes (hash, &logfont->lfItalic, sizeof(logfont->lfItalic)); + + key->base.hash_entry.hash = hash; +} + +static int +_cairo_win32_font_face_keys_equal (const void *key_a, + const void *key_b) +{ + const cairo_win32_font_face_t *face_a = key_a; + const cairo_win32_font_face_t *face_b = key_b; + + if (face_a->logfont.lfWeight == face_b->logfont.lfWeight && + face_a->logfont.lfItalic == face_b->logfont.lfItalic && + face_a->logfont.lfUnderline == face_b->logfont.lfUnderline && + face_a->logfont.lfStrikeOut == face_b->logfont.lfStrikeOut && + face_a->logfont.lfCharSet == face_b->logfont.lfCharSet && + face_a->logfont.lfOutPrecision == face_b->logfont.lfOutPrecision && + face_a->logfont.lfClipPrecision == face_b->logfont.lfClipPrecision && + face_a->logfont.lfPitchAndFamily == face_b->logfont.lfPitchAndFamily && + (wcscmp (face_a->logfont.lfFaceName, face_b->logfont.lfFaceName) == 0)) + return TRUE; + else + return FALSE; +} + /** * cairo_win32_font_face_create_for_logfontw_hfont: * @logfont: A #LOGFONTW structure specifying the font to use. @@ -1956,20 +2100,51 @@ const cairo_font_face_backend_t _cairo_win32_font_face_backend = { cairo_font_face_t * cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, HFONT font) { - cairo_win32_font_face_t *font_face; + cairo_win32_font_face_t *font_face, key; + cairo_hash_table_t *hash_table; + cairo_status_t status; + + hash_table = _cairo_win32_font_face_hash_table_lock (); + if (unlikely (hash_table == NULL)) { + _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); + return (cairo_font_face_t *)&_cairo_font_face_nil; + } + + _cairo_win32_font_face_init_key (&key, logfont, font); + /* Return existing unscaled font if it exists in the hash table. */ + font_face = _cairo_hash_table_lookup (hash_table, + &key.base.hash_entry); + if (font_face != NULL) { + cairo_font_face_reference (&font_face->base); + goto DONE; + } + + /* Otherwise create it and insert into hash table. */ font_face = malloc (sizeof (cairo_win32_font_face_t)); if (!font_face) { _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; + goto FAIL; } - font_face->logfont = *logfont; - font_face->hfont = font; - + _cairo_win32_font_face_init_key (font_face, logfont, font); _cairo_font_face_init (&font_face->base, &_cairo_win32_font_face_backend); + assert (font_face->base.hash_entry.hash == key.base.hash_entry.hash); + status = _cairo_hash_table_insert (hash_table, + &font_face->base.hash_entry); + if (unlikely (status)) + goto FAIL; + +DONE: + _cairo_win32_font_face_hash_table_unlock (); + return &font_face->base; + +FAIL: + _cairo_win32_font_face_hash_table_unlock (); + + return (cairo_font_face_t *)&_cairo_font_face_nil; } /** @@ -2178,3 +2353,9 @@ cairo_win32_scaled_font_get_device_to_logical (cairo_scaled_font_t *scaled_font, } *device_to_logical = win_font->device_to_logical; } + +void +_cairo_win32_font_reset_static_data (void) +{ + _cairo_win32_font_face_hash_table_destroy (); +} diff --git a/src/cairo-win32-printing-surface.c b/src/cairo-win32-printing-surface.c index 497be25..8023335 100644 --- a/src/cairo-win32-printing-surface.c +++ b/src/cairo-win32-printing-surface.c @@ -824,10 +824,10 @@ _cairo_win32_printing_surface_paint_linear_pattern (cairo_win32_surface_t *surfa cairo_matrix_multiply (&mat, &surface->ctm, &mat); - p1x = _cairo_fixed_to_double (pattern->p1.x); - p1y = _cairo_fixed_to_double (pattern->p1.y); - p2x = _cairo_fixed_to_double (pattern->p2.x); - p2y = _cairo_fixed_to_double (pattern->p2.y); + p1x = pattern->pd1.x; + p1y = pattern->pd1.y; + p2x = pattern->pd2.x; + p2y = pattern->pd2.y; cairo_matrix_translate (&mat, p1x, p1y); xd = p2x - p1x; @@ -971,6 +971,9 @@ _cairo_win32_printing_surface_paint_pattern (cairo_win32_surface_t *surface, case CAIRO_PATTERN_TYPE_RADIAL: return CAIRO_INT_STATUS_UNSUPPORTED; break; + + case CAIRO_PATTERN_TYPE_MESH: + ASSERT_NOT_REACHED; } return CAIRO_STATUS_SUCCESS; @@ -1087,7 +1090,6 @@ _cairo_win32_printing_surface_emit_path (cairo_win32_surface_t *surface, path_info.surface = surface; return _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_win32_printing_surface_path_move_to, _cairo_win32_printing_surface_path_line_to, _cairo_win32_printing_surface_path_curve_to, @@ -1157,6 +1159,7 @@ _cairo_win32_printing_surface_get_font_options (void *abstract_ cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON); } static cairo_int_status_t @@ -1429,6 +1432,94 @@ _cairo_win32_printing_surface_fill (void *abstract_surface, return status; } +static cairo_int_status_t +_cairo_win32_printing_surface_emit_win32_glyphs (cairo_win32_surface_t *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_glyph_t *glyphs, + int num_glyphs, + cairo_scaled_font_t *scaled_font, + cairo_clip_t *clip, + int *remaining_glyphs) +{ + cairo_matrix_t ctm; + cairo_glyph_t *unicode_glyphs; + cairo_scaled_font_subsets_glyph_t subset_glyph; + int i, first; + cairo_bool_t sequence_is_unicode; + cairo_status_t status = CAIRO_STATUS_SUCCESS; + + /* Where possible reverse the glyph indices back to unicode + * characters. Strings of glyphs that could not be reversed to + * unicode will be printed with ETO_GLYPH_INDEX. + * + * As _cairo_win32_scaled_font_index_to_ucs4() is a slow + * operation, the font subsetting function + * _cairo_scaled_font_subsets_map_glyph() is used to obtain + * the unicode value because it caches the reverse mapping in + * the subsets. + */ + + if (surface->has_ctm) { + for (i = 0; i < num_glyphs; i++) + cairo_matrix_transform_point (&surface->ctm, &glyphs[i].x, &glyphs[i].y); + cairo_matrix_multiply (&ctm, &scaled_font->ctm, &surface->ctm); + scaled_font = cairo_scaled_font_create (scaled_font->font_face, + &scaled_font->font_matrix, + &ctm, + &scaled_font->options); + } + + unicode_glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); + if (unicode_glyphs == NULL) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + memcpy (unicode_glyphs, glyphs, num_glyphs * sizeof (cairo_glyph_t)); + for (i = 0; i < num_glyphs; i++) { + status = _cairo_scaled_font_subsets_map_glyph (surface->font_subsets, + scaled_font, + glyphs[i].index, + NULL, 0, + &subset_glyph); + if (status) + goto fail; + + unicode_glyphs[i].index = subset_glyph.unicode; + } + + i = 0; + first = 0; + sequence_is_unicode = unicode_glyphs[0].index <= 0xffff; + while (i < num_glyphs) { + if (i == num_glyphs - 1 || + ((unicode_glyphs[i + 1].index < 0xffff) != sequence_is_unicode)) + { + status = _cairo_win32_surface_show_glyphs_internal ( + surface, + op, + source, + sequence_is_unicode ? &unicode_glyphs[first] : &glyphs[first], + i - first + 1, + scaled_font, + clip, + remaining_glyphs, + ! sequence_is_unicode); + first = i + 1; + if (i < num_glyphs - 1) + sequence_is_unicode = unicode_glyphs[i + 1].index <= 0xffff; + } + i++; + } + +fail: + if (surface->has_ctm) + cairo_scaled_font_destroy (scaled_font); + + free (unicode_glyphs); + + return status; +} + static cairo_int_status_t _cairo_win32_printing_surface_show_glyphs (void *abstract_surface, cairo_operator_t op, @@ -1513,67 +1604,14 @@ _cairo_win32_printing_surface_show_glyphs (void *abstract_surfac if (cairo_scaled_font_get_type (scaled_font) == CAIRO_FONT_TYPE_WIN32 && source->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_matrix_t ctm; - cairo_glyph_t *type1_glyphs = NULL; - cairo_scaled_font_subsets_glyph_t subset_glyph; - - /* Calling ExtTextOutW() with ETO_GLYPH_INDEX and a Type 1 - * font on a printer DC prints garbled text. The text displays - * correctly on a display DC. When using a printer - * DC, ExtTextOutW() only works with characters and not glyph - * indices. - * - * For Type 1 fonts the glyph indices are converted back to - * unicode characters before calling _cairo_win32_surface_show_glyphs(). - * - * As _cairo_win32_scaled_font_index_to_ucs4() is a slow - * operation, the font subsetting function - * _cairo_scaled_font_subsets_map_glyph() is used to obtain - * the unicode value because it caches the reverse mapping in - * the subsets. - */ - if (_cairo_win32_scaled_font_is_type1 (scaled_font)) { - type1_glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); - if (type1_glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (type1_glyphs, glyphs, num_glyphs * sizeof (cairo_glyph_t)); - for (i = 0; i < num_glyphs; i++) { - status = _cairo_scaled_font_subsets_map_glyph (surface->font_subsets, - scaled_font, - type1_glyphs[i].index, - NULL, 0, - &subset_glyph); - if (status) - return status; - - type1_glyphs[i].index = subset_glyph.unicode; - } - glyphs = type1_glyphs; - } - - if (surface->has_ctm || surface->has_gdi_ctm) { - cairo_matrix_multiply (&ctm, &surface->ctm, &surface->gdi_ctm); - for (i = 0; i < num_glyphs; i++) - cairo_matrix_transform_point (&ctm, &glyphs[i].x, &glyphs[i].y); - cairo_matrix_multiply (&ctm, &scaled_font->ctm, &ctm); - scaled_font = cairo_scaled_font_create (scaled_font->font_face, - &scaled_font->font_matrix, - &ctm, - &scaled_font->options); - } - status = _cairo_win32_surface_show_glyphs (surface, op, - source, glyphs, - num_glyphs, scaled_font, - clip, - remaining_glyphs); - if (surface->has_ctm) - cairo_scaled_font_destroy (scaled_font); - - if (type1_glyphs != NULL) - free (type1_glyphs); - - return status; + return _cairo_win32_printing_surface_emit_win32_glyphs (surface, + op, + source, + glyphs, + num_glyphs, + scaled_font, + clip, + remaining_glyphs); } #endif @@ -1746,7 +1784,7 @@ _cairo_win32_printing_surface_supports_fine_grained_fallbacks (void *abstract_su * possible to draw to the surface. * * The returned surface will be wrapped using the paginated surface to - * provide correct complex rendering behaviour; show_page() and + * provide correct complex rendering behaviour; cairo_surface_show_page() and * associated methods must be used for correct output. * * Return value: the newly created surface diff --git a/src/cairo-win32-private.h b/src/cairo-win32-private.h index cde27b7..efb0c1e 100644 --- a/src/cairo-win32-private.h +++ b/src/cairo-win32-private.h @@ -155,6 +155,17 @@ cairo_status_t _cairo_win32_surface_set_clip_region (void *abstract_surface, cairo_region_t *region); +cairo_int_status_t +_cairo_win32_surface_show_glyphs_internal (void *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_glyph_t *glyphs, + int num_glyphs, + cairo_scaled_font_t *scaled_font, + cairo_clip_t *clip, + int *remaining_glyphs, + cairo_bool_t glyph_indices); + cairo_int_status_t _cairo_win32_surface_show_glyphs (void *surface, cairo_operator_t op, diff --git a/src/cairo-win32-surface.c b/src/cairo-win32-surface.c index 660aaba..4a36226 100644 --- a/src/cairo-win32-surface.c +++ b/src/cairo-win32-surface.c @@ -124,11 +124,13 @@ _cairo_win32_print_gdi_error (const char *context) 0, NULL)) { fprintf (stderr, "%s: Unknown GDI error", context); } else { - fwprintf (stderr, L"%s: %S", context, (wchar_t *)lpMsgBuf); + fprintf (stderr, "%s: %S", context, (wchar_t *)lpMsgBuf); LocalFree (lpMsgBuf); } + fflush (stderr); + /* We should switch off of last_status, but we'd either return * CAIRO_STATUS_NO_MEMORY or CAIRO_STATUS_UNKNOWN_ERROR and there * is no CAIRO_STATUS_UNKNOWN_ERROR. @@ -1494,14 +1496,15 @@ _cairo_win32_surface_flush (void *abstract_surface) #define STACK_GLYPH_SIZE 256 cairo_int_status_t -_cairo_win32_surface_show_glyphs (void *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - cairo_clip_t *clip, - int *remaining_glyphs) +_cairo_win32_surface_show_glyphs_internal (void *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_glyph_t *glyphs, + int num_glyphs, + cairo_scaled_font_t *scaled_font, + cairo_clip_t *clip, + int *remaining_glyphs, + cairo_bool_t glyph_indexing) { #if CAIRO_HAS_WIN32_FONT cairo_win32_surface_t *dst = surface; @@ -1616,19 +1619,10 @@ _cairo_win32_surface_show_glyphs (void *surface, } } - /* Using glyph indices for a Type 1 font does not work on a - * printer DC. The win32 printing surface will convert the the - * glyph indices of Type 1 fonts to the unicode values. - */ - if ((dst->flags & CAIRO_WIN32_SURFACE_FOR_PRINTING) && - _cairo_win32_scaled_font_is_type1 (scaled_font)) - { - glyph_index_option = 0; - } - else - { + if (glyph_indexing) glyph_index_option = ETO_GLYPH_INDEX; - } + else + glyph_index_option = 0; win_result = ExtTextOutW(dst->dc, start_x, @@ -1656,6 +1650,28 @@ _cairo_win32_surface_show_glyphs (void *surface, #undef STACK_GLYPH_SIZE +cairo_int_status_t +_cairo_win32_surface_show_glyphs (void *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + cairo_glyph_t *glyphs, + int num_glyphs, + cairo_scaled_font_t *scaled_font, + cairo_clip_t *clip, + int *remaining_glyphs) +{ + return _cairo_win32_surface_show_glyphs_internal (surface, + op, + source, + glyphs, + num_glyphs, + scaled_font, + clip, + remaining_glyphs, + TRUE); +} + + /** * cairo_win32_surface_create: * @hdc: the DC to create a surface for @@ -1835,6 +1851,12 @@ _cairo_surface_is_win32 (cairo_surface_t *surface) * Returns the HDC associated with this surface, or %NULL if none. * Also returns %NULL if the surface is not a win32 surface. * + * A call to cairo_surface_flush() is required before using the HDC to + * ensure that all pending drawing operations are finished and to + * restore any temporary modification cairo has made to its state. A + * call to cairo_surface_mark_dirty() is required after the state or + * the content of the HDC has been modified. + * * Return value: HDC or %NULL if no HDC available. * * Since: 1.2 diff --git a/src/cairo-xcb-connection-core.c b/src/cairo-xcb-connection-core.c index 5b16c19..089cc4e 100644 --- a/src/cairo-xcb-connection-core.c +++ b/src/cairo-xcb-connection-core.c @@ -42,53 +42,18 @@ _cairo_xcb_connection_create_pixmap (cairo_xcb_connection_t *connection, uint16_t width, uint16_t height) { - struct { - uint8_t req; - uint8_t depth; - uint16_t len; - uint32_t pixmap; - uint32_t drawable; - uint16_t width, height; - } req; - struct iovec vec[1]; - - req.req = 53; - req.depth = depth; - req.len = sizeof (req) >> 2; - - req.pixmap = _cairo_xcb_connection_get_xid (connection); - req.drawable = drawable; - req.width = width; - req.height = height; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); - - return req.pixmap; + xcb_pixmap_t pixmap = _cairo_xcb_connection_get_xid (connection); + xcb_create_pixmap (connection->xcb_connection, + depth, pixmap, drawable, + width, height); + return pixmap; } void _cairo_xcb_connection_free_pixmap (cairo_xcb_connection_t *connection, xcb_pixmap_t pixmap) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t pixmap; - } req; - struct iovec vec[1]; - - req.req = 54; - req.len = sizeof (req) >> 2; - req.pixmap = pixmap; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_free_pixmap (connection->xcb_connection, pixmap); _cairo_xcb_connection_put_xid (connection, pixmap); } @@ -98,53 +63,17 @@ _cairo_xcb_connection_create_gc (cairo_xcb_connection_t *connection, uint32_t value_mask, uint32_t *values) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t gc; - uint32_t drawable; - uint32_t mask; - } req; - struct iovec vec[2]; - int len = _cairo_popcount (value_mask) * 4; - - req.req = 55; - req.len = (sizeof (req) + len) >> 2; - req.gc = _cairo_xcb_connection_get_xid (connection); - req.drawable = drawable; - req.mask = value_mask; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = values; - vec[1].iov_len = len; - - _cairo_xcb_connection_write (connection, vec, 2); - - return req.gc; + xcb_gcontext_t gc = _cairo_xcb_connection_get_xid (connection); + xcb_create_gc (connection->xcb_connection, gc, drawable, + value_mask, values); + return gc; } void _cairo_xcb_connection_free_gc (cairo_xcb_connection_t *connection, xcb_gcontext_t gc) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t gc; - } req; - struct iovec vec[1]; - - req.req = 60; - req.len = sizeof (req) >> 2; - req.gc = gc; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_free_gc (connection->xcb_connection, gc); _cairo_xcb_connection_put_xid (connection, gc); } @@ -154,27 +83,8 @@ _cairo_xcb_connection_change_gc (cairo_xcb_connection_t *connection, uint32_t value_mask, uint32_t *values) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t gc; - uint32_t mask; - } req; - struct iovec vec[2]; - int len = _cairo_popcount (value_mask) * 4; - - req.req = 56; - req.len = (sizeof (req) + len) >> 2; - req.gc = gc; - req.mask = value_mask; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = values; - vec[1].iov_len = len; - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_change_gc (connection->xcb_connection, gc, + value_mask, values); } void @@ -189,38 +99,8 @@ _cairo_xcb_connection_copy_area (cairo_xcb_connection_t *connection, uint16_t width, uint16_t height) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t src; - uint32_t dst; - uint32_t gc; - int16_t src_x; - int16_t src_y; - int16_t dst_x; - int16_t dst_y; - uint16_t width; - uint16_t height; - } req; - struct iovec vec[1]; - - req.req = 62; - req.len = sizeof (req) >> 2; - req.src = src; - req.dst = dst; - req.gc = gc; - req.src_x = src_x; - req.src_y = src_y; - req.dst_x = dst_x; - req.dst_y = dst_y; - req.width = width; - req.height = height; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_copy_area (connection->xcb_connection, src, dst, gc, + src_x, src_y, dst_x, dst_y, width, height); } void @@ -230,26 +110,8 @@ _cairo_xcb_connection_poly_fill_rectangle (cairo_xcb_connection_t *connection, uint32_t num_rectangles, xcb_rectangle_t *rectangles) { - struct { - uint8_t req; - uint8_t pad; - uint16_t len; - uint32_t dst; - uint32_t gc; - } req; - struct iovec vec[2]; - - req.req = 70; - req.len = (sizeof (req) + num_rectangles * sizeof (xcb_rectangle_t)) >> 2; - req.dst = dst; - req.gc = gc; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = rectangles; - vec[1].iov_len = num_rectangles * sizeof (xcb_rectangle_t); - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_poly_fill_rectangle (connection->xcb_connection, dst, gc, + num_rectangles, rectangles); } void @@ -264,86 +126,28 @@ _cairo_xcb_connection_put_image (cairo_xcb_connection_t *connection, uint32_t stride, void *data) { - struct { - uint8_t req; - uint8_t format; - uint16_t len; - uint32_t dst; - uint32_t gc; - uint16_t width; - uint16_t height; - int16_t dst_x; - int16_t dst_y; - uint8_t left; - uint8_t depth; - uint16_t pad; - } req; - struct iovec vec[3]; - uint32_t prefix[2]; + const uint32_t req_size = 18; uint32_t length = height * stride; - uint32_t len = (sizeof (req) + length) >> 2; - - req.req = 72; - req.format = XCB_IMAGE_FORMAT_Z_PIXMAP; - req.len = 0; - req.dst = dst; - req.gc = gc; - req.width = width; - req.height = height; - req.dst_x = dst_x; - req.dst_y = dst_y; - req.left = 0; - req.depth = depth; - - if (len < connection->root->maximum_request_length) { - req.len = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = data; - vec[1].iov_len = length; - - _cairo_xcb_connection_write (connection, vec, 2); - } else if (len < connection->maximum_request_length) { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - vec[2].iov_base = data; - vec[2].iov_len = length; + uint32_t len = (req_size + length) >> 2; - _cairo_xcb_connection_write (connection, vec, 3); + if (len < connection->maximum_request_length) { + xcb_put_image (connection->xcb_connection, XCB_IMAGE_FORMAT_Z_PIXMAP, + dst, gc, width, height, dst_x, dst_y, 0, depth, + length, data); } else { - int rows; - - rows = (connection->maximum_request_length - sizeof (req) - 4) / stride; + int rows = (connection->maximum_request_length - req_size - 4) / stride; if (rows > 0) { do { if (rows > height) rows = height; length = rows * stride; - len = (sizeof (req) + 4 + length) >> 2; - - req.height = rows; - - prefix[0] = *(uint32_t *) &req; - prefix[1] = len; - - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - vec[2].iov_base = data; - vec[2].iov_len = length; - /* note may modify vec */ - _cairo_xcb_connection_write (connection, vec, 3); + xcb_put_image (connection->xcb_connection, XCB_IMAGE_FORMAT_Z_PIXMAP, + dst, gc, width, rows, dst_x, dst_y, 0, depth, length, data); height -= rows; - req.dst_y += rows; + dst_y += rows; data = (char *) data + length; } while (height); } else { @@ -367,41 +171,35 @@ _cairo_xcb_connection_put_subimage (cairo_xcb_connection_t *connection, uint8_t depth, void *_data) { - struct { - uint8_t req; - uint8_t format; - uint16_t len; - uint32_t dst; - uint32_t gc; - uint16_t width; - uint16_t height; - int16_t dst_x; - int16_t dst_y; - uint8_t left; - uint8_t depth; - uint16_t pad; - } req; + xcb_protocol_request_t xcb_req = { + 0 /* count */, + 0 /* ext */, + XCB_PUT_IMAGE /* opcode */, + 1 /* isvoid (doesn't cause a reply) */ + }; + xcb_put_image_request_t req; struct iovec vec_stack[CAIRO_STACK_ARRAY_LENGTH (struct iovec)]; struct iovec *vec = vec_stack; - uint32_t prefix[2]; - uint32_t len = (sizeof (req) + cpp*width*height) >> 2; + uint32_t len = 0; uint8_t *data = _data; - int n; + int n = 3; + /* Two extra entries are needed for xcb, two for us */ + int entries_needed = height + 2 + 2; - req.req = 72; req.format = XCB_IMAGE_FORMAT_Z_PIXMAP; - req.len = 0; - req.dst = dst; + req.drawable = dst; req.gc = gc; req.width = width; req.height = height; req.dst_x = dst_x; req.dst_y = dst_y; - req.left = 0; + req.left_pad = 0; req.depth = depth; + req.pad0[0] = 0; + req.pad0[1] = 0; - if (height + 2 > ARRAY_LENGTH (vec_stack)) { - vec = _cairo_malloc_ab (height+2, sizeof (struct iovec)); + if (entries_needed > ARRAY_LENGTH (vec_stack)) { + vec = _cairo_malloc_ab (entries_needed, sizeof (struct iovec)); if (unlikely (vec == NULL)) { /* XXX loop over ARRAY_LENGTH (vec_stack) */ return; @@ -409,34 +207,30 @@ _cairo_xcb_connection_put_subimage (cairo_xcb_connection_t *connection, } data += src_y * stride + src_x * cpp; - if (len < connection->root->maximum_request_length) { - req.len = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - n = 1; - } else if (len < connection->maximum_request_length) { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - n = 2; - } else { - ASSERT_NOT_REACHED; - } + /* vec[1] will be used in XCB if it has to use BigRequests or insert a sync, + * vec[0] is used if the internal queue needs to be flushed. */ + vec[2].iov_base = (char *) &req; + vec[2].iov_len = sizeof (req); + /* Now comes the actual data */ while (height--) { vec[n].iov_base = data; vec[n].iov_len = cpp * width; + len += cpp * width; data += stride; n++; } - _cairo_xcb_connection_write (connection, vec, n); + /* And again some padding */ + vec[n].iov_base = 0; + vec[n].iov_len = -len & 3; + n++; + + /* For efficiency reasons, this functions writes the request "directly" to + * the xcb connection to avoid having to copy the data around. */ + assert (n == entries_needed); + xcb_req.count = n - 2; + xcb_send_request (connection->xcb_connection, 0, &vec[2], &xcb_req); if (vec != vec_stack) free (vec); @@ -452,7 +246,6 @@ _cairo_xcb_connection_get_image (cairo_xcb_connection_t *connection, xcb_get_image_reply_t **reply) { xcb_generic_error_t *error; - cairo_status_t status; *reply = xcb_get_image_reply (connection->xcb_connection, xcb_get_image (connection->xcb_connection, @@ -471,12 +264,5 @@ _cairo_xcb_connection_get_image (cairo_xcb_connection_t *connection, *reply = NULL; } - status = _cairo_xcb_connection_take_socket (connection); - if (unlikely (status)) { - if (*reply) - free (*reply); - *reply = NULL; - } - - return status; + return CAIRO_STATUS_SUCCESS; } diff --git a/src/cairo-xcb-connection-render.c b/src/cairo-xcb-connection-render.c index 63eb59d..b44e363 100644 --- a/src/cairo-xcb-connection-render.c +++ b/src/cairo-xcb-connection-render.c @@ -35,9 +35,6 @@ #include -#define X_RenderSpans 99 -#define XLIB_COORD_MAX 32767 - void _cairo_xcb_connection_render_create_picture (cairo_xcb_connection_t *connection, xcb_render_picture_t picture, @@ -46,34 +43,8 @@ _cairo_xcb_connection_render_create_picture (cairo_xcb_connection_t *connection uint32_t value_mask, uint32_t *value_list) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - uint32_t drawable; - uint32_t format; - uint32_t mask; - } req; - struct iovec vec[2]; - int len = _cairo_popcount (value_mask) * 4; - - COMPILE_TIME_ASSERT (sizeof (req) == 20); - - req.major = connection->render->major_opcode; - req.minor = 4; - req.length = (sizeof (req) + len) >> 2; - req.picture = picture; - req.drawable = drawable; - req.format = format; - req.mask = value_mask; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = value_list; - vec[1].iov_len = len; - - _cairo_xcb_connection_write (connection, vec, 1 + (len != 0)); + xcb_render_create_picture (connection->xcb_connection, picture, drawable, + format, value_mask, value_list); } void @@ -82,30 +53,8 @@ _cairo_xcb_connection_render_change_picture (cairo_xcb_connection_t *connect uint32_t value_mask, uint32_t *value_list) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - uint32_t mask; - } req; - struct iovec vec[2]; - int len = _cairo_popcount (value_mask) * 4; - - COMPILE_TIME_ASSERT (sizeof (req) == 12); - - req.major = connection->render->major_opcode; - req.minor = 5; - req.length = (sizeof (req) + len) >> 2; - req.picture = picture; - req.mask = value_mask; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = value_list; - vec[1].iov_len = len; - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_render_change_picture (connection->xcb_connection, picture, + value_mask, value_list); } void @@ -116,58 +65,16 @@ _cairo_xcb_connection_render_set_picture_clip_rectangles (cairo_xcb_connection_t uint32_t rectangles_len, xcb_rectangle_t *rectangles) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - uint16_t x; - uint16_t y; - } req; - struct iovec vec[2]; - int len = sizeof (xcb_rectangle_t) * rectangles_len; - - COMPILE_TIME_ASSERT (sizeof (req) == 12); - assert ((len + sizeof (req)) >> 2 < connection->root->maximum_request_length); - - req.major = connection->render->major_opcode; - req.minor = 6; - req.length = (sizeof (req) + len) >> 2; - req.picture = picture; - req.x = clip_x_origin; - req.y = clip_y_origin; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = rectangles; - vec[1].iov_len = len; - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_render_set_picture_clip_rectangles (connection->xcb_connection, picture, + clip_x_origin, clip_y_origin, + rectangles_len, rectangles); } void _cairo_xcb_connection_render_free_picture (cairo_xcb_connection_t *connection, xcb_render_picture_t picture) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 8); - - req.major = connection->render->major_opcode; - req.minor = 7; - req.length = sizeof (req) >> 2; - req.picture = picture; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_render_free_picture (connection->xcb_connection, picture); _cairo_xcb_connection_put_xid (connection, picture); } @@ -186,49 +93,8 @@ _cairo_xcb_connection_render_composite (cairo_xcb_connection_t *connection, uint16_t width, uint16_t height) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t src; - uint32_t mask; - uint32_t dst; - int16_t src_x; - int16_t src_y; - int16_t mask_x; - int16_t mask_y; - int16_t dst_x; - int16_t dst_y; - uint16_t width; - uint16_t height; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 36); - - req.major = connection->render->major_opcode; - req.minor = 8; - req.length = sizeof (req) >> 2; - req.op = op; - req.src = src; - req.mask = mask; - req.dst = dst; - req.src_x = src_x; - req.src_y = src_y; - req.mask_x = mask_x; - req.mask_y = mask_y; - req.dst_x = dst_x; - req.dst_y = dst_y; - req.width = width; - req.height = height; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_render_composite (connection->xcb_connection, op, src, mask, dst, + src_x, src_y, mask_x, mask_y, dst_x, dst_y, width, height); } void @@ -242,56 +108,8 @@ _cairo_xcb_connection_render_trapezoids (cairo_xcb_connection_t *connection, uint32_t traps_len, xcb_render_trapezoid_t *traps) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t src; - uint32_t dst; - uint32_t mask_format; - int16_t src_x; - int16_t src_y; - } req; - struct iovec vec[3]; - uint32_t prefix[2]; - uint32_t len = (sizeof (req) + traps_len * sizeof (xcb_render_trapezoid_t)) >> 2; - - COMPILE_TIME_ASSERT (sizeof (req) == 24); - - req.major = connection->render->major_opcode; - req.minor = 10; - req.length = 0; - req.op = op; - req.src = src; - req.dst = dst; - req.mask_format = mask_format; - req.src_x = src_x; - req.src_y = src_y; - - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = traps; - vec[1].iov_len = traps_len * sizeof (xcb_render_trapezoid_t); - - _cairo_xcb_connection_write (connection, vec, 2); - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - vec[2].iov_base = traps; - vec[2].iov_len = traps_len * sizeof (xcb_render_trapezoid_t); - - _cairo_xcb_connection_write (connection, vec, 3); - } + xcb_render_trapezoids (connection->xcb_connection, op, src, dst, + mask_format, src_x, src_y, traps_len, traps); } void @@ -305,6 +123,10 @@ _cairo_xcb_connection_render_spans (cairo_xcb_connection_t *connection, uint32_t num_spans, uint16_t *spans) { + ASSERT_NOT_REACHED; +#if 0 +#define X_RenderSpans 99 + struct { uint8_t major; uint8_t minor; @@ -360,6 +182,7 @@ _cairo_xcb_connection_render_spans (cairo_xcb_connection_t *connection, _cairo_xcb_connection_write (connection, vec, 3); } +#endif } void @@ -367,52 +190,14 @@ _cairo_xcb_connection_render_create_glyph_set (cairo_xcb_connection_t *connectio xcb_render_glyphset_t id, xcb_render_pictformat_t format) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t gsid; - uint32_t format; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 12); - - req.major = connection->render->major_opcode; - req.minor = 17; - req.length = sizeof (req) >> 2; - req.gsid = id; - req.format = format; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_render_create_glyph_set (connection->xcb_connection, id, format); } void _cairo_xcb_connection_render_free_glyph_set (cairo_xcb_connection_t *connection, xcb_render_glyphset_t glyphset) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t gsid; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 8); - - req.major = connection->render->major_opcode; - req.minor = 19; - req.length = sizeof (req) >> 2; - req.gsid = glyphset; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_render_free_glyph_set (connection->xcb_connection, glyphset); _cairo_xcb_connection_put_xid (connection, glyphset); } @@ -425,57 +210,8 @@ _cairo_xcb_connection_render_add_glyphs (cairo_xcb_connection_t *con uint32_t data_len, uint8_t *data) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t gsid; - uint32_t num_glyphs; - } req; - struct iovec vec[5]; - uint32_t prefix[2]; - uint32_t len = (sizeof (req) + num_glyphs * (sizeof (uint32_t) + sizeof (xcb_render_glyphinfo_t)) + data_len) >> 2; - int cnt; - - COMPILE_TIME_ASSERT (sizeof (req) == 12); - - req.major = connection->render->major_opcode; - req.minor = 20; - req.length = 0; - req.gsid = glyphset; - req.num_glyphs = num_glyphs; - - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - cnt = 1; - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - cnt = 2; - } - - vec[cnt].iov_base = glyphs_id; - vec[cnt].iov_len = num_glyphs * sizeof (uint32_t); - cnt++; - - vec[cnt].iov_base = glyphs; - vec[cnt].iov_len = num_glyphs * sizeof (xcb_render_glyphinfo_t); - cnt++; - - vec[cnt].iov_base = data; - vec[cnt].iov_len = data_len; - cnt++; - - _cairo_xcb_connection_write (connection, vec, cnt); + xcb_render_add_glyphs (connection->xcb_connection, glyphset, num_glyphs, + glyphs_id, glyphs, data_len, data); } void @@ -484,28 +220,7 @@ _cairo_xcb_connection_render_free_glyphs (cairo_xcb_connection_t *connec uint32_t num_glyphs, xcb_render_glyph_t *glyphs) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t gsid; - } req; - struct iovec vec[2]; - - COMPILE_TIME_ASSERT (sizeof (req) == 8); - assert ( (sizeof (req) + num_glyphs * sizeof (uint32_t)) >> 2 < connection->root->maximum_request_length); - - req.major = connection->render->major_opcode; - req.minor = 22; - req.length = (sizeof (req) + num_glyphs * sizeof (uint32_t)) >> 2; - req.gsid = glyphset; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = glyphs; - vec[1].iov_len = num_glyphs * sizeof (uint32_t); - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_render_free_glyphs (connection->xcb_connection, glyphset, num_glyphs, glyphs); } void @@ -520,61 +235,8 @@ _cairo_xcb_connection_render_composite_glyphs_8 (cairo_xcb_connection_t * uint32_t glyphcmds_len, uint8_t *glyphcmds) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t src; - uint32_t dst; - uint32_t mask_format; - uint32_t glyphset; - int16_t src_x; - int16_t src_y; - } req; - struct iovec vec[3]; - uint32_t prefix[2]; - int len; - - COMPILE_TIME_ASSERT (sizeof (req) == 28); - - req.major = connection->render->major_opcode; - req.minor = 23; - req.length = 0; - req.op = op; - req.src = src; - req.dst = dst; - req.mask_format = mask_format; - req.glyphset = glyphset; - req.src_x = src_x; - req.src_y = src_y; - - len = (sizeof (req) + glyphcmds_len) >> 2; - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - len = 1; - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - len = 2; - } - - vec[len].iov_base = glyphcmds; - vec[len].iov_len = glyphcmds_len; - len++; - - _cairo_xcb_connection_write (connection, vec, len); + xcb_render_composite_glyphs_8 (connection->xcb_connection, op, src, dst, mask_format, + glyphset, src_x, src_y, glyphcmds_len, glyphcmds); } void @@ -589,61 +251,8 @@ _cairo_xcb_connection_render_composite_glyphs_16 (cairo_xcb_connection_t uint32_t glyphcmds_len, uint8_t *glyphcmds) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t src; - uint32_t dst; - uint32_t mask_format; - uint32_t glyphset; - int16_t src_x; - int16_t src_y; - } req; - struct iovec vec[3]; - uint32_t prefix[2]; - int len; - - COMPILE_TIME_ASSERT (sizeof (req) == 28); - - req.major = connection->render->major_opcode; - req.minor = 24; - req.length = 0; - req.op = op; - req.src = src; - req.dst = dst; - req.mask_format = mask_format; - req.glyphset = glyphset; - req.src_x = src_x; - req.src_y = src_y; - - len = (sizeof (req) + glyphcmds_len) >> 2; - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - len = 1; - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - len = 2; - } - - vec[len].iov_base = glyphcmds; - vec[len].iov_len = glyphcmds_len; - len++; - - _cairo_xcb_connection_write (connection, vec, len); + xcb_render_composite_glyphs_16 (connection->xcb_connection, op, src, dst, mask_format, + glyphset, src_x, src_y, glyphcmds_len, glyphcmds); } void @@ -658,61 +267,8 @@ _cairo_xcb_connection_render_composite_glyphs_32 (cairo_xcb_connection_t uint32_t glyphcmds_len, uint8_t *glyphcmds) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t src; - uint32_t dst; - uint32_t mask_format; - uint32_t glyphset; - int16_t src_x; - int16_t src_y; - } req; - struct iovec vec[2]; - uint32_t prefix[2]; - int len; - - COMPILE_TIME_ASSERT (sizeof (req) == 28); - - req.major = connection->render->major_opcode; - req.minor = 25; - req.length = 0; - req.op = op; - req.src = src; - req.dst = dst; - req.mask_format = mask_format; - req.glyphset = glyphset; - req.src_x = src_x; - req.src_y = src_y; - - len = (sizeof (req) + glyphcmds_len) >> 2; - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - len = 1; - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - len = 2; - } - - vec[len].iov_base = glyphcmds; - vec[len].iov_len = glyphcmds_len; - len++; - - _cairo_xcb_connection_write (connection, vec, len); + xcb_render_composite_glyphs_32 (connection->xcb_connection, op, src, dst, mask_format, + glyphset, src_x, src_y, glyphcmds_len, glyphcmds); } void @@ -723,52 +279,8 @@ _cairo_xcb_connection_render_fill_rectangles (cairo_xcb_connection_t *conne uint32_t num_rects, xcb_rectangle_t *rects) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint8_t op; - uint8_t pad1; - uint16_t pad2; - uint32_t dst; - xcb_render_color_t color; - } req; - struct iovec vec[3]; - uint32_t prefix[2]; - uint32_t len; - - COMPILE_TIME_ASSERT (sizeof (req) == 20); - - req.major = connection->render->major_opcode; - req.minor = 26; - req.op = op; - req.dst = dst; - req.color = color; - - len = (sizeof (req) + num_rects * sizeof (xcb_rectangle_t)) >> 2; - if (len < connection->root->maximum_request_length) { - req.length = len; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - len = 1; - } else { - prefix[0] = *(uint32_t *) &req; - prefix[1] = len + 1; - vec[0].iov_base = prefix; - vec[0].iov_len = sizeof (prefix); - vec[1].iov_base = (uint32_t *) &req + 1; - vec[1].iov_len = sizeof (req) - 4; - - len = 2; - } - - vec[len].iov_base = rects; - vec[len].iov_len = num_rects * sizeof (xcb_rectangle_t); - len++; - - _cairo_xcb_connection_write (connection, vec, len); + xcb_render_fill_rectangles (connection->xcb_connection, op, dst, color, + num_rects, rects); } void @@ -776,25 +288,7 @@ _cairo_xcb_connection_render_set_picture_transform (cairo_xcb_connection_t xcb_render_picture_t picture, xcb_render_transform_t *transform) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - } req; - struct iovec vec[2]; - - req.major = connection->render->major_opcode; - req.minor = 28; - req.length = (sizeof (req) + sizeof (xcb_render_transform_t)) >> 2; - req.picture = picture; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = transform; - vec[1].iov_len = sizeof (xcb_render_transform_t); - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_render_set_picture_transform (connection->xcb_connection, picture, *transform); } void @@ -803,30 +297,8 @@ _cairo_xcb_connection_render_set_picture_filter (cairo_xcb_connection_t uint16_t filter_len, char *filter) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - uint16_t nbytes; - uint16_t pad; - } req; - struct iovec vec[2]; - - req.nbytes = filter_len; - filter_len = (filter_len + 3) & ~3; - - req.major = connection->render->major_opcode; - req.minor = 30; - req.length = (sizeof (req) + filter_len) >> 2; - req.picture = picture; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = filter; - vec[1].iov_len = filter_len; - - _cairo_xcb_connection_write (connection, vec, 2); + xcb_render_set_picture_filter (connection->xcb_connection, picture, + filter_len, filter, 0, NULL); } void @@ -834,27 +306,7 @@ _cairo_xcb_connection_render_create_solid_fill (cairo_xcb_connection_t *conn xcb_render_picture_t picture, xcb_render_color_t color) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - xcb_render_color_t color; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 16); - - req.major = connection->render->major_opcode; - req.minor = 33; - req.length = sizeof (req) >> 2; - req.picture = picture; - req.color = color; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_render_create_solid_fill (connection->xcb_connection, picture, color); } void @@ -866,35 +318,8 @@ _cairo_xcb_connection_render_create_linear_gradient (cairo_xcb_connection_t xcb_render_fixed_t *stops, xcb_render_color_t *colors) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - xcb_render_pointfix_t p1, p2; - uint32_t num_stops; - } req; - struct iovec vec[3]; - - COMPILE_TIME_ASSERT (sizeof (req) == 28); - assert((sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2 < connection->root->maximum_request_length); - - req.major = connection->render->major_opcode; - req.minor = 34; - req.length = (sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2; - req.picture = picture; - req.p1 = p1; - req.p2 = p2; - req.num_stops = num_stops; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = stops; - vec[1].iov_len = num_stops * sizeof (xcb_render_fixed_t); - vec[2].iov_base = colors; - vec[2].iov_len = num_stops * sizeof (xcb_render_color_t); - - _cairo_xcb_connection_write (connection, vec, 3); + xcb_render_create_linear_gradient (connection->xcb_connection, picture, + p1, p2, num_stops, stops, colors); } void @@ -908,40 +333,9 @@ _cairo_xcb_connection_render_create_radial_gradient (cairo_xcb_connection_t xcb_render_fixed_t *stops, xcb_render_color_t *colors) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - xcb_render_pointfix_t inner; - xcb_render_pointfix_t outer; - xcb_render_fixed_t inner_radius; - xcb_render_fixed_t outer_radius; - uint32_t num_stops; - } req; - struct iovec vec[3]; - - COMPILE_TIME_ASSERT (sizeof (req) == 36); - assert((sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2 < connection->root->maximum_request_length); - - req.major = connection->render->major_opcode; - req.minor = 35; - req.length = (sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2; - req.picture = picture; - req.inner = inner; - req.outer = outer; - req.inner_radius = inner_radius; - req.outer_radius = outer_radius; - req.num_stops = num_stops; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = stops; - vec[1].iov_len = num_stops * sizeof (xcb_render_fixed_t); - vec[2].iov_base = colors; - vec[2].iov_len = num_stops * sizeof (xcb_render_color_t); - - _cairo_xcb_connection_write (connection, vec, 3); + xcb_render_create_radial_gradient (connection->xcb_connection, picture, + inner, outer, inner_radius, outer_radius, + num_stops, stops, colors); } void @@ -953,34 +347,6 @@ _cairo_xcb_connection_render_create_conical_gradient (cairo_xcb_connection_t xcb_render_fixed_t *stops, xcb_render_color_t *colors) { - struct { - uint8_t major; - uint8_t minor; - uint16_t length; - uint32_t picture; - xcb_render_pointfix_t center; - xcb_render_fixed_t angle; - uint32_t num_stops; - } req; - struct iovec vec[3]; - - COMPILE_TIME_ASSERT (sizeof (req) == 24); - assert((sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2 < connection->root->maximum_request_length); - - req.major = connection->render->major_opcode; - req.minor = 36; - req.length = (sizeof (req) + num_stops * (sizeof (xcb_render_fixed_t) + sizeof (xcb_render_color_t))) >> 2; - req.picture = picture; - req.center = center; - req.angle = angle; - req.num_stops = num_stops; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - vec[1].iov_base = stops; - vec[1].iov_len = num_stops * sizeof (xcb_render_fixed_t); - vec[2].iov_base = colors; - vec[2].iov_len = num_stops * sizeof (xcb_render_color_t); - - _cairo_xcb_connection_write (connection, vec, 3); + xcb_render_create_conical_gradient (connection->xcb_connection, picture, + center, angle, num_stops, stops, colors); } diff --git a/src/cairo-xcb-connection-shm.c b/src/cairo-xcb-connection-shm.c index 060a03e..ccdcb27 100644 --- a/src/cairo-xcb-connection-shm.c +++ b/src/cairo-xcb-connection-shm.c @@ -41,35 +41,12 @@ _cairo_xcb_connection_shm_attach (cairo_xcb_connection_t *connection, uint32_t id, cairo_bool_t readonly) { - struct { - uint8_t req; - uint8_t shm_req; - uint16_t length; - uint32_t segment; - uint32_t id; - uint8_t readonly; - uint8_t pad1; - uint16_t pad2; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 16); - - req.req = connection->shm->major_opcode; - req.shm_req = 1; - req.length = sizeof (req) >> 2; - req.segment = _cairo_xcb_connection_get_xid (connection); - req.id = id; - req.readonly = readonly; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); - return req.segment; + uint32_t segment = _cairo_xcb_connection_get_xid (connection); + xcb_shm_attach (connection->xcb_connection, segment, id, readonly); + return segment; } -uint64_t +void _cairo_xcb_connection_shm_put_image (cairo_xcb_connection_t *connection, xcb_drawable_t dst, xcb_gcontext_t gc, @@ -85,53 +62,9 @@ _cairo_xcb_connection_shm_put_image (cairo_xcb_connection_t *connection, uint32_t shm, uint32_t offset) { - struct { - uint8_t req; - uint8_t shm_req; - uint16_t len; - uint32_t dst; - uint32_t gc; - uint16_t total_width; - uint16_t total_height; - int16_t src_x; - int16_t src_y; - uint16_t src_width; - uint16_t src_height; - int16_t dst_x; - int16_t dst_y; - uint8_t depth; - uint8_t format; - uint8_t send_event; - uint8_t pad; - uint32_t shm; - uint32_t offset; - } req; - struct iovec vec[2]; - - req.req = connection->shm->major_opcode; - req.shm_req = 3; - req.len = sizeof (req) >> 2; - req.dst = dst; - req.gc = gc; - req.total_width = total_width; - req.total_height = total_height; - req.src_x = src_x; - req.src_y = src_y; - req.src_width = width; - req.src_height = height; - req.dst_x = dst_x; - req.dst_y = dst_y; - req.depth = depth; - req.format = XCB_IMAGE_FORMAT_Z_PIXMAP; - req.send_event = 0; - req.shm = shm; - req.offset = offset; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); - return connection->seqno; + xcb_shm_put_image (connection->xcb_connection, dst, gc, total_width, total_height, + src_x, src_y, width, height, dst_x, dst_y, depth, + XCB_IMAGE_FORMAT_Z_PIXMAP, 0, shm, offset); } cairo_status_t @@ -164,31 +97,13 @@ _cairo_xcb_connection_shm_get_image (cairo_xcb_connection_t *connection, return _cairo_error (CAIRO_STATUS_READ_ERROR); } - return _cairo_xcb_connection_take_socket (connection); + return CAIRO_STATUS_SUCCESS; } void _cairo_xcb_connection_shm_detach (cairo_xcb_connection_t *connection, uint32_t segment) { - struct { - uint8_t req; - uint8_t shm_req; - uint16_t length; - uint32_t segment; - } req; - struct iovec vec[1]; - - COMPILE_TIME_ASSERT (sizeof (req) == 8); - - req.req = connection->shm->major_opcode; - req.shm_req = 2; - req.length = sizeof (req) >> 2; - req.segment = segment; - - vec[0].iov_base = &req; - vec[0].iov_len = sizeof (req); - - _cairo_xcb_connection_write (connection, vec, 1); + xcb_shm_detach (connection->xcb_connection, segment); _cairo_xcb_connection_put_xid (connection, segment); } diff --git a/src/cairo-xcb-connection.c b/src/cairo-xcb-connection.c index 0488390..73f70b1 100644 --- a/src/cairo-xcb-connection.c +++ b/src/cairo-xcb-connection.c @@ -479,6 +479,10 @@ _device_flush (void *device) if (unlikely (status)) return status; +#if CAIRO_HAS_XCB_SHM_FUNCTIONS + _cairo_xcb_connection_shm_mem_pools_flush (connection); +#endif + CAIRO_MUTEX_LOCK (connection->screens_mutex); cairo_list_foreach_entry (screen, cairo_xcb_screen_t, &connection->screens, link) @@ -540,12 +544,11 @@ _device_finish (void *device) _cairo_xcb_screen_finish (screen); } - if (connection->has_socket) { - /* Send a request so that xcb takes the socket from us, preventing - * a later use-after-free on shutdown of the connection. - */ - xcb_no_operation (connection->xcb_connection); - } +#if CAIRO_HAS_XCB_SHM_FUNCTIONS + /* _cairo_xcb_screen_finish finishes surfaces. If any of those surfaces had + * a fallback image, we might have done a SHM PutImage. */ + _cairo_xcb_connection_shm_mem_pools_flush (connection); +#endif if (was_cached) cairo_device_destroy (device); @@ -624,7 +627,6 @@ _cairo_xcb_connection_get (xcb_connection_t *xcb_connection) _cairo_device_init (&connection->device, &_cairo_xcb_device_backend); connection->xcb_connection = xcb_connection; - connection->has_socket = FALSE; cairo_list_init (&connection->fonts); cairo_list_init (&connection->screens); @@ -651,6 +653,7 @@ _cairo_xcb_connection_get (xcb_connection_t *xcb_connection) sizeof (cairo_xcb_xid_t)); cairo_list_init (&connection->shm_pools); + cairo_list_init (&connection->shm_pending); _cairo_freepool_init (&connection->shm_info_freelist, sizeof (cairo_xcb_shm_info_t)); @@ -787,39 +790,6 @@ _cairo_xcb_connection_get_xid (cairo_xcb_connection_t *connection) return xid; } -static void -_cairo_xcb_return_socket (void *closure) -{ - cairo_xcb_connection_t *connection = closure; - - CAIRO_MUTEX_LOCK (connection->device.mutex); - connection->has_socket = FALSE; - CAIRO_MUTEX_UNLOCK (connection->device.mutex); -} - -cairo_status_t -_cairo_xcb_connection_take_socket (cairo_xcb_connection_t *connection) -{ - assert (CAIRO_MUTEX_IS_LOCKED (connection->device.mutex)); - - if (unlikely (connection->device.status)) - return connection->device.status; - - if (! connection->has_socket) { - if (! xcb_take_socket (connection->xcb_connection, - _cairo_xcb_return_socket, - connection, - 0, &connection->seqno)) - { - return connection->device.status = _cairo_error (CAIRO_STATUS_WRITE_ERROR); - } - - connection->has_socket = TRUE; - } - - return CAIRO_STATUS_SUCCESS; -} - /* public (debug) interface */ void diff --git a/src/cairo-xcb-private.h b/src/cairo-xcb-private.h index e066911..b6b25ce 100644 --- a/src/cairo-xcb-private.h +++ b/src/cairo-xcb-private.h @@ -66,9 +66,10 @@ struct _cairo_xcb_shm_info { cairo_xcb_connection_t *connection; uint32_t shm; uint32_t offset; - uint64_t seqno; void *mem; cairo_xcb_shm_mem_pool_t *pool; + xcb_get_input_focus_cookie_t sync; + cairo_list_t pending; }; struct _cairo_xcb_surface { @@ -170,7 +171,6 @@ struct _cairo_xcb_connection { cairo_device_t device; xcb_connection_t *xcb_connection; - cairo_bool_t has_socket; xcb_render_pictformat_t standard_formats[5]; cairo_hash_table_t *xrender_formats; @@ -183,13 +183,13 @@ struct _cairo_xcb_connection { const xcb_query_extension_reply_t *render; const xcb_query_extension_reply_t *shm; const xcb_query_extension_reply_t *dri2; - uint64_t seqno; cairo_list_t free_xids; cairo_freepool_t xid_pool; cairo_mutex_t shm_mutex; cairo_list_t shm_pools; + cairo_list_t shm_pending; cairo_freepool_t shm_info_freelist; cairo_mutex_t screens_mutex; @@ -246,9 +246,6 @@ _cairo_xcb_connection_acquire (cairo_xcb_connection_t *connection) return cairo_device_acquire (&connection->device); } -cairo_private cairo_status_t -_cairo_xcb_connection_take_socket (cairo_xcb_connection_t *connection); - cairo_private uint32_t _cairo_xcb_connection_get_xid (cairo_xcb_connection_t *connection); @@ -276,6 +273,9 @@ _cairo_xcb_connection_allocate_shm_info (cairo_xcb_connection_t *display, cairo_private void _cairo_xcb_shm_info_destroy (cairo_xcb_shm_info_t *shm_info); +cairo_private void +_cairo_xcb_connection_shm_mem_pools_flush (cairo_xcb_connection_t *connection); + cairo_private void _cairo_xcb_connection_shm_mem_pools_fini (cairo_xcb_connection_t *connection); @@ -451,19 +451,6 @@ _cairo_xcb_surface_core_fill_boxes (cairo_xcb_surface_t *dst, const cairo_color_t *color, cairo_boxes_t *boxes); -static inline void -_cairo_xcb_connection_write (cairo_xcb_connection_t *connection, - struct iovec *vec, - int count) -{ - if (unlikely (connection->device.status)) - return; - - connection->seqno++; - if (unlikely (! xcb_writev (connection->xcb_connection, vec, count, 1))) - connection->device.status = _cairo_error (CAIRO_STATUS_WRITE_ERROR); -} - cairo_private xcb_pixmap_t _cairo_xcb_connection_create_pixmap (cairo_xcb_connection_t *connection, uint8_t depth, @@ -552,7 +539,7 @@ _cairo_xcb_connection_shm_attach (cairo_xcb_connection_t *connection, uint32_t id, cairo_bool_t readonly); -cairo_private uint64_t +cairo_private void _cairo_xcb_connection_shm_put_image (cairo_xcb_connection_t *connection, xcb_drawable_t dst, xcb_gcontext_t gc, diff --git a/src/cairo-xcb-screen.c b/src/cairo-xcb-screen.c index c80bf2d..5e94d49 100644 --- a/src/cairo-xcb-screen.c +++ b/src/cairo-xcb-screen.c @@ -116,6 +116,10 @@ _surface_cache_entry_destroy (void *closure) { struct pattern_cache_entry *entry = closure; + /* Destroy all the references to the surfaces that were generated + * because of the caching. This means that the cache is giving up + * the resources held by that surface. They are now considered as + * owned by whatever holds a reference to the surface. */ if (entry->picture->snapshot_of != NULL) _cairo_surface_detach_snapshot (entry->picture); cairo_surface_destroy (entry->picture); diff --git a/src/cairo-xcb-shm.c b/src/cairo-xcb-shm.c index 417496e..c3e3d35 100644 --- a/src/cairo-xcb-shm.c +++ b/src/cairo-xcb-shm.c @@ -49,6 +49,11 @@ typedef struct _cairo_xcb_shm_mem_block cairo_xcb_shm_mem_block_t; +typedef enum { + PENDING_WAIT, + PENDING_POLL +} shm_wait_type_t; + struct _cairo_xcb_shm_mem_block { unsigned int bits; cairo_list_t link; @@ -412,6 +417,70 @@ _cairo_xcb_shm_mem_pool_destroy (cairo_xcb_shm_mem_pool_t *pool) free (pool); } +static void +_cairo_xcb_shm_info_finalize (cairo_xcb_shm_info_t *shm_info) +{ + cairo_xcb_connection_t *connection = shm_info->connection; + + assert (CAIRO_MUTEX_IS_LOCKED (connection->shm_mutex)); + + _cairo_xcb_shm_mem_pool_free (shm_info->pool, shm_info->mem); + _cairo_freepool_free (&connection->shm_info_freelist, shm_info); + + /* scan for old, unused pools - hold at least one in reserve */ + if (! cairo_list_is_singular (&connection->shm_pools)) + { + cairo_xcb_shm_mem_pool_t *pool, *next; + cairo_list_t head; + + cairo_list_init (&head); + cairo_list_move (connection->shm_pools.next, &head); + + cairo_list_foreach_entry_safe (pool, next, cairo_xcb_shm_mem_pool_t, + &connection->shm_pools, link) + { + if (pool->free_bytes == pool->max_bytes) { + _cairo_xcb_connection_shm_detach (connection, pool->shmseg); + _cairo_xcb_shm_mem_pool_destroy (pool); + } + } + + cairo_list_move (head.next, &connection->shm_pools); + } +} + +static void +_cairo_xcb_shm_process_pending (cairo_xcb_connection_t *connection, shm_wait_type_t wait) +{ + cairo_xcb_shm_info_t *info, *next; + xcb_get_input_focus_reply_t *reply; + + assert (CAIRO_MUTEX_IS_LOCKED (connection->shm_mutex)); + cairo_list_foreach_entry_safe (info, next, cairo_xcb_shm_info_t, + &connection->shm_pending, pending) + { + switch (wait) { + case PENDING_WAIT: + reply = xcb_wait_for_reply (connection->xcb_connection, + info->sync.sequence, NULL); + break; + case PENDING_POLL: + if (! xcb_poll_for_reply (connection->xcb_connection, + info->sync.sequence, + (void **) &reply, NULL)) + /* We cannot be sure the server finished with this image yet, so + * try again later. All other shm info are guranteed to have a + * larger sequence number and thus don't have to be checked. */ + return; + break; + } + + free (reply); + cairo_list_del (&info->pending); + _cairo_xcb_shm_info_finalize (info); + } +} + cairo_int_status_t _cairo_xcb_connection_allocate_shm_info (cairo_xcb_connection_t *connection, size_t size, @@ -426,6 +495,8 @@ _cairo_xcb_connection_allocate_shm_info (cairo_xcb_connection_t *connection, assert (connection->flags & CAIRO_XCB_HAS_SHM); CAIRO_MUTEX_LOCK (connection->shm_mutex); + _cairo_xcb_shm_process_pending (connection, PENDING_POLL); + cairo_list_foreach_entry_safe (pool, next, cairo_xcb_shm_mem_pool_t, &connection->shm_pools, link) { @@ -513,6 +584,7 @@ _cairo_xcb_connection_allocate_shm_info (cairo_xcb_connection_t *connection, shm_info->shm = pool->shmseg; shm_info->offset = (char *) mem - (char *) pool->base; shm_info->mem = mem; + shm_info->sync.sequence = XCB_NONE; /* scan for old, unused pools */ cairo_list_foreach_entry_safe (pool, next, cairo_xcb_shm_mem_pool_t, @@ -535,39 +607,33 @@ _cairo_xcb_shm_info_destroy (cairo_xcb_shm_info_t *shm_info) { cairo_xcb_connection_t *connection = shm_info->connection; - CAIRO_MUTEX_LOCK (connection->shm_mutex); - - _cairo_xcb_shm_mem_pool_free (shm_info->pool, shm_info->mem); - _cairo_freepool_free (&connection->shm_info_freelist, shm_info); - - /* scan for old, unused pools - hold at least one in reserve */ - if (! cairo_list_is_singular (&connection->shm_pools) && - _cairo_xcb_connection_take_socket (connection) == CAIRO_STATUS_SUCCESS) - { - cairo_xcb_shm_mem_pool_t *pool, *next; - cairo_list_t head; - - cairo_list_init (&head); - cairo_list_move (connection->shm_pools.next, &head); + /* We can only return shm_info->mem to the allocator when we can be sure + * that the X server no longer reads from it. Since the X server processes + * requests in order, we send a GetInputFocus here. + * _cairo_xcb_shm_process_pending () will later check if the reply for that + * request was received and then actually mark this memory area as free. */ - cairo_list_foreach_entry_safe (pool, next, cairo_xcb_shm_mem_pool_t, - &connection->shm_pools, link) - { - if (pool->free_bytes == pool->max_bytes) { - _cairo_xcb_connection_shm_detach (connection, pool->shmseg); - _cairo_xcb_shm_mem_pool_destroy (pool); - } - } + CAIRO_MUTEX_LOCK (connection->shm_mutex); + assert (shm_info->sync.sequence == XCB_NONE); + shm_info->sync = xcb_get_input_focus (connection->xcb_connection); - cairo_list_move (head.next, &connection->shm_pools); - } + cairo_list_init (&shm_info->pending); + cairo_list_add_tail (&shm_info->pending, &connection->shm_pending); + CAIRO_MUTEX_UNLOCK (connection->shm_mutex); +} +void +_cairo_xcb_connection_shm_mem_pools_flush (cairo_xcb_connection_t *connection) +{ + CAIRO_MUTEX_LOCK (connection->shm_mutex); + _cairo_xcb_shm_process_pending (connection, PENDING_WAIT); CAIRO_MUTEX_UNLOCK (connection->shm_mutex); } void _cairo_xcb_connection_shm_mem_pools_fini (cairo_xcb_connection_t *connection) { + assert (cairo_list_is_empty (&connection->shm_pending)); while (! cairo_list_is_empty (&connection->shm_pools)) { _cairo_xcb_shm_mem_pool_destroy (cairo_list_first_entry (&connection->shm_pools, cairo_xcb_shm_mem_pool_t, diff --git a/src/cairo-xcb-surface-core.c b/src/cairo-xcb-surface-core.c index 3fbb072..b752a33 100644 --- a/src/cairo-xcb-surface-core.c +++ b/src/cairo-xcb-surface-core.c @@ -64,10 +64,8 @@ _cairo_xcb_pixmap_finish (void *abstract_surface) if (unlikely (status)) return status; - if (_cairo_xcb_connection_take_socket (surface->connection) == CAIRO_STATUS_SUCCESS) { - _cairo_xcb_connection_free_pixmap (surface->connection, - surface->pixmap); - } + _cairo_xcb_connection_free_pixmap (surface->connection, + surface->pixmap); _cairo_xcb_connection_release (surface->connection); } @@ -222,16 +220,15 @@ _pixmap_from_image (cairo_xcb_surface_t *target, gc = _cairo_xcb_screen_get_gc (target->screen, pixmap->pixmap, image->depth); if (shm_info != NULL) { - shm_info->seqno = - _cairo_xcb_connection_shm_put_image (target->connection, - pixmap->pixmap, gc, - image->width, image->height, - 0, 0, - image->width, image->height, - 0, 0, - image->depth, - shm_info->shm, - shm_info->offset); + _cairo_xcb_connection_shm_put_image (target->connection, + pixmap->pixmap, gc, + image->width, image->height, + 0, 0, + image->width, image->height, + 0, 0, + image->depth, + shm_info->shm, + shm_info->offset); } else { int len; @@ -448,6 +445,7 @@ _cairo_xcb_pixmap_for_pattern (cairo_xcb_surface_t *target, /* fallthrough */ case CAIRO_PATTERN_TYPE_LINEAR: case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: return _render_to_pixmap (target, pattern, extents); default: @@ -472,10 +470,6 @@ _cairo_xcb_surface_core_copy_boxes (cairo_xcb_surface_t *dst, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (dst->connection); - if (unlikely (status)) - goto CLEANUP_CONNECTION; - src = _cairo_xcb_pixmap_for_pattern (dst, src_pattern, extents); status = src->base.status; if (unlikely (status)) @@ -566,12 +560,6 @@ _cairo_xcb_surface_core_fill_boxes (cairo_xcb_surface_t *dst, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (dst->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (dst->connection); - return status; - } - gc = _cairo_xcb_screen_get_gc (dst->screen, dst->drawable, dst->depth); #if 0 diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c index 8294a47..728c8a3 100644 --- a/src/cairo-xcb-surface-render.c +++ b/src/cairo-xcb-surface-render.c @@ -115,8 +115,7 @@ _cairo_xcb_picture_finish (void *abstract_surface) _cairo_xcb_screen_remove_surface_picture (surface->screen, &surface->base); if (surface->owner == NULL) { - if (_cairo_xcb_connection_take_socket (connection) == CAIRO_STATUS_SUCCESS) - _cairo_xcb_connection_render_free_picture (connection, surface->picture); + _cairo_xcb_connection_render_free_picture (connection, surface->picture); } _cairo_xcb_connection_release (connection); @@ -294,12 +293,14 @@ _cairo_xcb_surface_clear_clip_region (cairo_xcb_surface_t *surface) uint32_t values[] = { XCB_NONE }; _cairo_xcb_connection_render_change_picture (surface->connection, surface->picture, - XCB_RENDER_CP_CLIP_MASK, values); + XCB_RENDER_CP_CLIP_MASK, + values); } static void _cairo_xcb_surface_ensure_picture (cairo_xcb_surface_t *surface) { + assert (surface->fallback == NULL); if (surface->picture == XCB_NONE) { surface->picture = _cairo_xcb_connection_get_xid (surface->connection); _cairo_xcb_connection_render_create_picture (surface->connection, @@ -328,16 +329,15 @@ _picture_from_image (cairo_xcb_surface_t *target, gc = _cairo_xcb_screen_get_gc (target->screen, pixmap, image->depth); if (shm_info != NULL) { - shm_info->seqno = - _cairo_xcb_connection_shm_put_image (target->connection, - pixmap, gc, - image->width, image->height, - 0, 0, - image->width, image->height, - 0, 0, - image->depth, - shm_info->shm, - shm_info->offset); + _cairo_xcb_connection_shm_put_image (target->connection, + pixmap, gc, + image->width, image->height, + 0, 0, + image->width, image->height, + 0, 0, + image->depth, + shm_info->shm, + shm_info->offset); } else { int len; @@ -425,34 +425,7 @@ _pattern_is_supported (uint32_t flags, return FALSE; } - return TRUE; -} - -static double -_pixman_nearest_sample (double d) -{ - return ceil (d - .5); -} - -static cairo_bool_t -_nearest_sample (const cairo_matrix_t *m, - cairo_filter_t filter, - double *tx, double *ty) -{ - *tx = m->x0; - *ty = m->y0; - if ((filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST) - && _cairo_matrix_has_unity_scale (m)) - { - *tx = _pixman_nearest_sample (*tx); - *ty = _pixman_nearest_sample (*ty); - } - else - { - if (*tx != floor (*tx) || *ty != floor (*ty)) - return FALSE; - } - return fabs (*tx) < PIXMAN_MAX_INT && fabs (*ty) < PIXMAN_MAX_INT; + return pattern->type != CAIRO_PATTERN_TYPE_MESH; } static void @@ -461,58 +434,28 @@ _cairo_xcb_picture_set_matrix (cairo_xcb_picture_t *picture, cairo_filter_t filter, double xc, double yc) { - cairo_matrix_t m; - double tx, ty; - - m = *matrix; - if (_nearest_sample (&m, filter, &tx, &ty)) - m.x0 = m.y0 = 0; - else - tx = ty = 0; - - if (! _cairo_matrix_is_identity (&m)) { - xcb_render_transform_t transform; - cairo_matrix_t inv; - cairo_status_t status; - - inv = m; - status = cairo_matrix_invert (&inv); - assert (status == CAIRO_STATUS_SUCCESS); - - if (m.x0 != 0. || m.y0 != 0.) { - double x, y; + xcb_render_transform_t transform; + pixman_transform_t *pixman_transform; + cairo_status_t ignored; - /* pixman also limits the [xy]_offset to 16 bits so evenly - * spread the bits between the two. - */ - x = floor (inv.x0 / 2); - y = floor (inv.y0 / 2); - tx = -x; - ty = -y; - cairo_matrix_init_translate (&inv, x, y); - cairo_matrix_multiply (&m, &inv, &m); - } else { - if (tx != 0. || ty != 0.) - cairo_matrix_transform_point (&inv, &tx, &ty); - } + /* Casting between pixman_transform_t and xcb_render_transform_t is safe + * because they happen to be the exact same type. + */ + pixman_transform = (pixman_transform_t *) &transform; - /* Casting between pixman_transform_t and XTransform is safe because - * they happen to be the exact same type. - */ - _cairo_matrix_to_pixman_matrix (&m, - (pixman_transform_t *) &transform, xc, yc); + picture->x = picture->x0; + picture->y = picture->y0; + ignored = _cairo_matrix_to_pixman_matrix_offset (matrix, filter, xc, yc, + pixman_transform, + &picture->x, &picture->y); - if (memcmp (&picture->transform, &transform, sizeof (xcb_render_transform_t))) { - _cairo_xcb_connection_render_set_picture_transform (_picture_to_connection(picture), - picture->picture, - &transform); + if (memcmp (&picture->transform, &transform, sizeof (xcb_render_transform_t))) { + _cairo_xcb_connection_render_set_picture_transform (_picture_to_connection (picture), + picture->picture, + &transform); - picture->transform = transform; - } + picture->transform = transform; } - - picture->x = picture->x0 + tx; - picture->y = picture->y0 + ty; } static void @@ -936,14 +879,16 @@ _cairo_xcb_linear_picture (cairo_xcb_surface_t *target, const cairo_rectangle_int_t *extents) { char buf[CAIRO_STACK_BUFFER_SIZE]; - cairo_fixed_t xdim, ydim; xcb_render_fixed_t *stops; xcb_render_color_t *colors; xcb_render_pointfix_t p1, p2; - cairo_matrix_t matrix = pattern->base.base.matrix; + cairo_matrix_t matrix; + cairo_circle_double_t extremes[2]; cairo_xcb_picture_t *picture; cairo_status_t status; + _cairo_gradient_pattern_fit_to_range (&pattern->base, PIXMAN_MAX_INT >> 1, &matrix, extremes); + picture = (cairo_xcb_picture_t *) _cairo_xcb_screen_lookup_linear_picture (target->screen, pattern); if (picture != NULL) @@ -964,46 +909,13 @@ _cairo_xcb_linear_picture (cairo_xcb_surface_t *target, } picture->filter = CAIRO_FILTER_DEFAULT; - xdim = pattern->p2.x - pattern->p1.x; - ydim = pattern->p2.y - pattern->p1.y; - - /* - * Transform the matrix to avoid overflow when converting between - * cairo_fixed_t and pixman_fixed_t (without incurring performance - * loss when the transformation is unnecessary). - * - * XXX: Consider converting out-of-range co-ordinates and transforms. - * Having a function to compute the required transformation to - * "normalize" a given bounding box would be generally useful - - * cf linear patterns, gradient patterns, surface patterns... - */ -#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ - if (unlikely (_cairo_fixed_integer_ceil (xdim) > PIXMAN_MAX_INT || - _cairo_fixed_integer_ceil (ydim) > PIXMAN_MAX_INT)) - { - double sf; - - if (xdim > ydim) - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (xdim); - else - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (ydim); - - p1.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (pattern->p1.x) * sf); - p1.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (pattern->p1.y) * sf); - p2.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (pattern->p2.x) * sf); - p2.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (pattern->p2.y) * sf); + colors = (xcb_render_color_t *) (stops + pattern->base.n_stops); - cairo_matrix_scale (&matrix, sf, sf); - } - else - { - p1.x = _cairo_fixed_to_16_16 (pattern->p1.x); - p1.y = _cairo_fixed_to_16_16 (pattern->p1.y); - p2.x = _cairo_fixed_to_16_16 (pattern->p2.x); - p2.y = _cairo_fixed_to_16_16 (pattern->p2.y); - } + p1.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + p1.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + p2.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + p2.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); - colors = (xcb_render_color_t *) (stops + pattern->base.n_stops); _cairo_xcb_connection_render_create_linear_gradient (target->connection, picture->picture, p1, p2, @@ -1042,11 +954,15 @@ _cairo_xcb_radial_picture (cairo_xcb_surface_t *target, char buf[CAIRO_STACK_BUFFER_SIZE]; xcb_render_fixed_t *stops; xcb_render_color_t *colors; - xcb_render_pointfix_t c1, c2; + xcb_render_pointfix_t p1, p2; xcb_render_fixed_t r1, r2; + cairo_matrix_t matrix; + cairo_circle_double_t extremes[2]; cairo_xcb_picture_t *picture; cairo_status_t status; + _cairo_gradient_pattern_fit_to_range (&pattern->base, PIXMAN_MAX_INT >> 1, &matrix, extremes); + picture = (cairo_xcb_picture_t *) _cairo_xcb_screen_lookup_radial_picture (target->screen, pattern); if (picture != NULL) @@ -1067,17 +983,19 @@ _cairo_xcb_radial_picture (cairo_xcb_surface_t *target, } picture->filter = CAIRO_FILTER_DEFAULT; - c1.x = _cairo_fixed_to_16_16 (pattern->c1.x); - c1.y = _cairo_fixed_to_16_16 (pattern->c1.y); - r1 = _cairo_fixed_to_16_16 (pattern->r1); - c2.x = _cairo_fixed_to_16_16 (pattern->c2.x); - c2.y = _cairo_fixed_to_16_16 (pattern->c2.y); - r2 = _cairo_fixed_to_16_16 (pattern->r2); - colors = (xcb_render_color_t *) (stops + pattern->base.n_stops); + + p1.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + p1.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + p2.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + p2.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); + + r1 = _cairo_fixed_16_16_from_double (extremes[0].radius); + r2 = _cairo_fixed_16_16_from_double (extremes[1].radius); + _cairo_xcb_connection_render_create_radial_gradient (target->connection, picture->picture, - c1, c2, r1, r2, + p1, p2, r1, r2, pattern->base.n_stops, stops, colors); @@ -1093,7 +1011,7 @@ _cairo_xcb_radial_picture (cairo_xcb_surface_t *target, } setup_picture: - _cairo_xcb_picture_set_matrix (picture, &pattern->base.base.matrix, + _cairo_xcb_picture_set_matrix (picture, &matrix, pattern->base.base.filter, extents->x + extents->width/2., extents->y + extents->height/2.); @@ -1112,6 +1030,12 @@ _copy_to_picture (cairo_xcb_surface_t *source, cairo_xcb_picture_t *picture; uint32_t values[] = { 0, 1 }; + if (source->deferred_clear) { + cairo_status_t status = _cairo_xcb_surface_clear (source); + if (unlikely (status)) + return (cairo_xcb_picture_t *) _cairo_surface_create_in_error (status); + } + /* XXX two level device locking, ensure we release the xcb device mutex? */ if (source->drm != NULL) cairo_surface_flush (source->drm); @@ -1147,16 +1071,8 @@ _cairo_xcb_surface_picture (cairo_xcb_surface_t *target, cairo_surface_t *source = pattern->surface; cairo_xcb_picture_t *picture; cairo_filter_t filter; - cairo_extend_t extend; cairo_status_t status; - if (source->is_clear) { - if (source->content & CAIRO_CONTENT_ALPHA) - return _cairo_xcb_transparent_picture (target); - else - return _cairo_xcb_black_picture (target); - } - { cairo_xcb_surface_t *snapshot; @@ -1178,7 +1094,7 @@ _cairo_xcb_surface_picture (cairo_xcb_surface_t *target, picture = NULL; } - if (source->type == CAIRO_SURFACE_TYPE_XCB) + if (source->type == CAIRO_SURFACE_TYPE_XCB && ((cairo_xcb_surface_t *) source)->fallback == NULL) { if (source->backend->type == CAIRO_SURFACE_TYPE_XCB) { if (((cairo_xcb_surface_t *) source)->screen == target->screen) { @@ -1224,7 +1140,7 @@ _cairo_xcb_surface_picture (cairo_xcb_surface_t *target, } } #if CAIRO_HAS_XLIB_XCB_FUNCTIONS - else if (source->type == CAIRO_SURFACE_TYPE_XLIB) + else if (source->type == CAIRO_SURFACE_TYPE_XLIB && ((cairo_xlib_xcb_surface_t *) source)->xcb->fallback == NULL) { if (source->backend->type == CAIRO_SURFACE_TYPE_XLIB) { if (((cairo_xlib_xcb_surface_t *) source)->xcb->screen == target->screen) { @@ -1393,7 +1309,7 @@ _cairo_xcb_surface_picture (cairo_xcb_surface_t *target, _cairo_surface_attach_snapshot (source, &picture->base, - cairo_surface_finish); + NULL); setup_picture: filter = pattern->base.filter; @@ -1412,13 +1328,7 @@ setup_picture: extents->y + extents->height/2.); - extend = pattern->base.extend; - if (extents->x >= 0 && extents->x + extents->width <= picture->width && - extents->y >= 0 && extents->y + extents->height <= picture->height) - { - extend = CAIRO_EXTEND_NONE; - } - _cairo_xcb_picture_set_extend (picture, extend); + _cairo_xcb_picture_set_extend (picture, pattern->base.extend); _cairo_xcb_picture_set_component_alpha (picture, pattern->base.has_component_alpha); return picture; @@ -1453,6 +1363,7 @@ _cairo_xcb_picture_for_pattern (cairo_xcb_surface_t *target, return _cairo_xcb_surface_picture (target, (cairo_surface_pattern_t *) pattern, extents); + case CAIRO_PATTERN_TYPE_MESH: default: ASSERT_NOT_REACHED; return _render_to_picture (target, pattern, extents); @@ -1495,10 +1406,10 @@ _render_fill_boxes (void *abstract_dst, int i, j; for (i = j = 0; i < chunk->count; i++) { - int x1 = _cairo_fixed_integer_round (chunk->base[i].p1.x); - int y1 = _cairo_fixed_integer_round (chunk->base[i].p1.y); - int x2 = _cairo_fixed_integer_round (chunk->base[i].p2.x); - int y2 = _cairo_fixed_integer_round (chunk->base[i].p2.y); + int x1 = _cairo_fixed_integer_round_down (chunk->base[i].p1.x); + int y1 = _cairo_fixed_integer_round_down (chunk->base[i].p1.y); + int x2 = _cairo_fixed_integer_round_down (chunk->base[i].p2.x); + int y2 = _cairo_fixed_integer_round_down (chunk->base[i].p2.y); if (x2 > x1 && y2 > y1) { xrects[j].x = x1; @@ -1523,6 +1434,7 @@ _render_fill_boxes (void *abstract_dst, return CAIRO_STATUS_SUCCESS; } +/* pixel aligned, non-overlapping boxes */ static cairo_int_status_t _render_composite_boxes (cairo_xcb_surface_t *dst, cairo_operator_t op, @@ -1533,6 +1445,9 @@ _render_composite_boxes (cairo_xcb_surface_t *dst, { cairo_xcb_picture_t *src, *mask; const struct _cairo_boxes_chunk *chunk; + xcb_rectangle_t stack_boxes[128]; + xcb_rectangle_t *clip_boxes; + int num_boxes; int render_op; render_op = _render_operator (op); @@ -1546,67 +1461,78 @@ _render_composite_boxes (cairo_xcb_surface_t *dst, if (unlikely (src->base.status)) return src->base.status; - if (mask_pattern != NULL) { - mask = _cairo_xcb_picture_for_pattern (dst, mask_pattern, extents); - if (unlikely (mask->base.status)) { - cairo_surface_destroy (&src->base); - return mask->base.status; - } + /* amalgamate into a single Composite call by setting a clip region */ + clip_boxes = stack_boxes; + if (boxes->num_boxes > ARRAY_LENGTH(stack_boxes)) { + clip_boxes = _cairo_malloc_ab(boxes->num_boxes, sizeof(xcb_rectangle_t)); + if (unlikely (clip_boxes == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } - for (chunk = &boxes->chunks; chunk != NULL; chunk = chunk->next) { - const cairo_box_t *box = chunk->base; - int i; + num_boxes = 0; + for (chunk = &boxes->chunks; chunk != NULL; chunk = chunk->next) { + const cairo_box_t *box = chunk->base; + int i; - for (i = 0; i < chunk->count; i++) { - int x = _cairo_fixed_integer_round (box[i].p1.x); - int y = _cairo_fixed_integer_round (box[i].p1.y); - int width = _cairo_fixed_integer_round (box[i].p2.x) - x; - int height = _cairo_fixed_integer_round (box[i].p2.y) - y; - - if (width && height) { - _cairo_xcb_connection_render_composite (dst->connection, - render_op, - src->picture, - mask->picture, - dst->picture, - x + src->x, - y + src->y, - x + mask->x, - y + mask->y, - x, y, - width, height); - } + for (i = 0; i < chunk->count; i++) { + int x = _cairo_fixed_integer_round_down (box[i].p1.x); + int y = _cairo_fixed_integer_round_down (box[i].p1.y); + int width = _cairo_fixed_integer_round_down (box[i].p2.x) - x; + int height = _cairo_fixed_integer_round_down (box[i].p2.y) - y; + + if (width && height) { + clip_boxes[num_boxes].x = x; + clip_boxes[num_boxes].y = y; + clip_boxes[num_boxes].width = width; + clip_boxes[num_boxes].height = height; + num_boxes++; } } + } - cairo_surface_destroy (&mask->base); - } else { - for (chunk = &boxes->chunks; chunk != NULL; chunk = chunk->next) { - const cairo_box_t *box = chunk->base; - int i; + if (num_boxes) { + _cairo_xcb_connection_render_set_picture_clip_rectangles(dst->connection, + dst->picture, + 0, 0, + num_boxes, + clip_boxes); - for (i = 0; i < chunk->count; i++) { - int x = _cairo_fixed_integer_round (box[i].p1.x); - int y = _cairo_fixed_integer_round (box[i].p1.y); - int width = _cairo_fixed_integer_round (box[i].p2.x) - x; - int height = _cairo_fixed_integer_round (box[i].p2.y) - y; - - if (width && height) { - _cairo_xcb_connection_render_composite (dst->connection, - render_op, - src->picture, - XCB_NONE, - dst->picture, - x + src->x, - y + src->y, - 0, 0, - x, y, - width, height); - } + if (mask_pattern != NULL) { + mask = _cairo_xcb_picture_for_pattern (dst, mask_pattern, extents); + if (unlikely (mask->base.status)) { + cairo_surface_destroy (&src->base); + return mask->base.status; } + + _cairo_xcb_connection_render_composite (dst->connection, + render_op, + src->picture, + mask->picture, + dst->picture, + src->x, src->y, + mask->x, mask->y, + extents->x, extents->y, + extents->width, extents->height); + + cairo_surface_destroy (&mask->base); + } else { + _cairo_xcb_connection_render_composite (dst->connection, + render_op, + src->picture, + XCB_NONE, + dst->picture, + src->x, src->y, + 0, 0, + extents->x, extents->y, + extents->width, extents->height); } + + _cairo_xcb_surface_clear_clip_region (dst); } + if (clip_boxes != stack_boxes) + free (clip_boxes); + cairo_surface_destroy (&src->base); return CAIRO_STATUS_SUCCESS; @@ -1815,10 +1741,7 @@ _create_composite_mask (cairo_clip_t *clip, surface->picture, clear, 1, &xrect); } else { - status = _cairo_xcb_surface_render_paint (surface, - CAIRO_OPERATOR_CLEAR, - &_cairo_pattern_clear.base, - NULL); + status = _cairo_xcb_surface_clear (surface); if (unlikely (status)) { cairo_surface_destroy (&surface->base); return (cairo_xcb_surface_t *) _cairo_surface_create_in_error (status); @@ -2340,7 +2263,7 @@ _cairo_xcb_surface_fixup_unbounded_boxes (cairo_xcb_surface_t *dst, status = _render_fill_boxes (dst, CAIRO_OPERATOR_CLEAR, CAIRO_COLOR_TRANSPARENT, - boxes); + &clear); } _cairo_boxes_fini (&clear); @@ -2359,23 +2282,27 @@ _cairo_xcb_surface_clear (cairo_xcb_surface_t *dst) if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (dst->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (dst->connection); - return status; - } - - gc = _cairo_xcb_screen_get_gc (dst->screen, dst->drawable, dst->depth); - rect.x = rect.y = 0; rect.width = dst->width; rect.height = dst->height; - _cairo_xcb_connection_poly_fill_rectangle (dst->connection, - dst->drawable, gc, - 1, &rect); + if (dst->flags & CAIRO_XCB_RENDER_HAS_COMPOSITE) { + xcb_render_color_t transparent = { 0 }; + + _cairo_xcb_connection_render_fill_rectangles (dst->connection, + XCB_RENDER_PICT_OP_CLEAR, + dst->picture, + transparent, + 1, &rect); + } else { + gc = _cairo_xcb_screen_get_gc (dst->screen, dst->drawable, dst->depth); + + _cairo_xcb_connection_poly_fill_rectangle (dst->connection, + dst->drawable, gc, + 1, &rect); - _cairo_xcb_screen_put_gc (dst->screen, dst->depth, gc); + _cairo_xcb_screen_put_gc (dst->screen, dst->depth, gc); + } _cairo_xcb_connection_release (dst->connection); @@ -2394,6 +2321,7 @@ _clip_and_composite (cairo_xcb_surface_t *dst, { cairo_status_t status; cairo_region_t *clip_region = NULL; + cairo_region_t extents_region; cairo_bool_t need_clip_surface = FALSE; if (clip != NULL) { @@ -2416,22 +2344,21 @@ _clip_and_composite (cairo_xcb_surface_t *dst, is_empty = ! _cairo_rectangle_intersect (&extents->bounded, &rect); if (unlikely (is_empty && extents->is_bounded)) return CAIRO_STATUS_SUCCESS; - - if (cairo_region_num_rectangles (clip_region) == 1) - clip_region = NULL; } + } else if (!extents->is_bounded) { + /* The X server will estimate the affected region of the unbounded + * operation and will apply the operation to that rectangle. + * However, there are cases where this estimate is too high (e.g. + * the test suite's clip-fill-{eo,nz}-unbounded tests). + */ + _cairo_region_init_rectangle (&extents_region, &extents->unbounded); + clip_region = &extents_region; } status = _cairo_xcb_connection_acquire (dst->connection); if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (dst->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (dst->connection); - return status; - } - if (dst->deferred_clear) { status = _cairo_xcb_surface_clear (dst); if (unlikely (status)) { @@ -2488,6 +2415,8 @@ _clip_and_composite (cairo_xcb_surface_t *dst, if (clip_region != NULL) _cairo_xcb_surface_clear_clip_region (dst); + if (clip_region == &extents_region) + _cairo_region_fini (&extents_region); _cairo_xcb_connection_release (dst->connection); @@ -2513,7 +2442,8 @@ _core_boxes (cairo_xcb_surface_t *dst, cairo_status_t status; status = _cairo_clip_get_region (clip, &clip_region); - assert (status == CAIRO_STATUS_SUCCESS || CAIRO_INT_STATUS_UNSUPPORTED); + assert (status == CAIRO_STATUS_SUCCESS || + status == CAIRO_INT_STATUS_UNSUPPORTED); if (status == CAIRO_INT_STATUS_UNSUPPORTED) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -2559,7 +2489,8 @@ _composite_boxes (cairo_xcb_surface_t *dst, if (clip != NULL) { status = _cairo_clip_get_region (clip, &clip_region); - assert (status == CAIRO_STATUS_SUCCESS || CAIRO_INT_STATUS_UNSUPPORTED); + assert (status == CAIRO_STATUS_SUCCESS || + status == CAIRO_INT_STATUS_UNSUPPORTED); need_clip_mask = status == CAIRO_INT_STATUS_UNSUPPORTED; if (need_clip_mask && @@ -2576,12 +2507,6 @@ _composite_boxes (cairo_xcb_surface_t *dst, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (dst->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (dst->connection); - return status; - } - _cairo_xcb_surface_ensure_picture (dst); if (dst->flags & CAIRO_XCB_RENDER_HAS_FILL_RECTANGLES && ! need_clip_mask && (op == CAIRO_OPERATOR_CLEAR || src->type == CAIRO_PATTERN_TYPE_SOLID)) @@ -2593,8 +2518,7 @@ _composite_boxes (cairo_xcb_surface_t *dst, else color = &((cairo_solid_pattern_t *) src)->color; - if (! (op == CAIRO_OPERATOR_IN && color->alpha_short >= 0xff00)) - status = _render_fill_boxes (dst, op, color, boxes); + status = _render_fill_boxes (dst, op, color, boxes); } else { @@ -2704,11 +2628,6 @@ _upload_image_inplace (cairo_xcb_surface_t *surface, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (surface->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (surface->connection); - return status; - } gc = _cairo_xcb_screen_get_gc (surface->screen, surface->drawable, image->depth); /* Do we need to trim the image? */ @@ -2779,7 +2698,10 @@ _clip_and_composite_boxes (cairo_xcb_surface_t *dst, } if (dst->deferred_clear) { - _cairo_xcb_surface_clear (dst); + status = _cairo_xcb_surface_clear (dst); + if (unlikely (status)) { + return status; + } if (op == CAIRO_OPERATOR_OVER) op = CAIRO_OPERATOR_SOURCE; @@ -2825,7 +2747,7 @@ _clip_and_composite_boxes (cairo_xcb_surface_t *dst, static cairo_bool_t _mono_edge_is_vertical (const cairo_line_t *line) { - return _cairo_fixed_integer_round (line->p1.x) == _cairo_fixed_integer_round (line->p2.x); + return _cairo_fixed_integer_round_down (line->p1.x) == _cairo_fixed_integer_round_down (line->p2.x); } static cairo_bool_t @@ -2863,7 +2785,8 @@ _traps_are_pixel_aligned (cairo_traps_t *traps, static void _boxes_for_traps (cairo_boxes_t *boxes, - cairo_traps_t *traps) + cairo_traps_t *traps, + cairo_antialias_t antialias) { int i; @@ -2874,21 +2797,40 @@ _boxes_for_traps (cairo_boxes_t *boxes, boxes->chunks.count = traps->num_traps; boxes->chunks.size = traps->num_traps; - for (i = 0; i < traps->num_traps; i++) { - cairo_fixed_t x1 = traps->traps[i].left.p1.x; - cairo_fixed_t x2 = traps->traps[i].right.p1.x; - cairo_fixed_t y1 = traps->traps[i].top; - cairo_fixed_t y2 = traps->traps[i].bottom; - - boxes->chunks.base[i].p1.x = x1; - boxes->chunks.base[i].p1.y = y1; - boxes->chunks.base[i].p2.x = x2; - boxes->chunks.base[i].p2.y = y2; - - if (boxes->is_pixel_aligned) { - boxes->is_pixel_aligned = - _cairo_fixed_is_integer (x1) && _cairo_fixed_is_integer (y1) && - _cairo_fixed_is_integer (x2) && _cairo_fixed_is_integer (y2); + if (antialias != CAIRO_ANTIALIAS_NONE) { + for (i = 0; i < traps->num_traps; i++) { + /* Note the traps and boxes alias so we need to take the local copies first. */ + cairo_fixed_t x1 = traps->traps[i].left.p1.x; + cairo_fixed_t x2 = traps->traps[i].right.p1.x; + cairo_fixed_t y1 = traps->traps[i].top; + cairo_fixed_t y2 = traps->traps[i].bottom; + + boxes->chunks.base[i].p1.x = x1; + boxes->chunks.base[i].p1.y = y1; + boxes->chunks.base[i].p2.x = x2; + boxes->chunks.base[i].p2.y = y2; + + if (boxes->is_pixel_aligned) { + boxes->is_pixel_aligned = + _cairo_fixed_is_integer (x1) && _cairo_fixed_is_integer (y1) && + _cairo_fixed_is_integer (x2) && _cairo_fixed_is_integer (y2); + } + } + } else { + boxes->is_pixel_aligned = TRUE; + + for (i = 0; i < traps->num_traps; i++) { + /* Note the traps and boxes alias so we need to take the local copies first. */ + cairo_fixed_t x1 = traps->traps[i].left.p1.x; + cairo_fixed_t x2 = traps->traps[i].right.p1.x; + cairo_fixed_t y1 = traps->traps[i].top; + cairo_fixed_t y2 = traps->traps[i].bottom; + + /* round down here to match Pixman's behavior when using traps. */ + boxes->chunks.base[i].p1.x = _cairo_fixed_round_down (x1); + boxes->chunks.base[i].p1.y = _cairo_fixed_round_down (y1); + boxes->chunks.base[i].p2.x = _cairo_fixed_round_down (x2); + boxes->chunks.base[i].p2.y = _cairo_fixed_round_down (y2); } } } @@ -3324,7 +3266,7 @@ _cairo_xcb_surface_render_composite_polygon (cairo_xcb_surface_t *dst, { cairo_boxes_t boxes; - _boxes_for_traps (&boxes, &traps.traps); + _boxes_for_traps (&boxes, &traps.traps, antialias); status = _clip_and_composite_boxes (dst, op, source, &boxes, antialias, extents, clip); @@ -3364,8 +3306,7 @@ _cairo_xcb_surface_render_stroke_as_polygon (cairo_xcb_surface_t *dst, cairo_polygon_t polygon; cairo_status_t status; - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_stroke_to_polygon (path, stroke_style, @@ -3500,7 +3441,7 @@ _cairo_xcb_surface_render_stroke (cairo_xcb_surface_t *surface, } status = CAIRO_INT_STATUS_UNSUPPORTED; - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -3564,8 +3505,7 @@ _cairo_xcb_surface_render_fill_as_polygon (cairo_xcb_surface_t *dst, cairo_polygon_t polygon; cairo_status_t status; - _cairo_polygon_init (&polygon); - _cairo_polygon_limit (&polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &polygon); if (likely (status == CAIRO_STATUS_SUCCESS)) { @@ -3683,7 +3623,7 @@ _cairo_xcb_surface_render_fill (cairo_xcb_surface_t *surface, } status = CAIRO_INT_STATUS_UNSUPPORTED; - if (_cairo_path_fixed_is_rectilinear_fill (path)) { + if (_cairo_path_fixed_fill_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -3807,49 +3747,108 @@ typedef struct { static cairo_status_t _can_composite_glyphs (cairo_xcb_surface_t *dst, + cairo_rectangle_int_t *extents, cairo_scaled_font_t *scaled_font, cairo_glyph_t *glyphs, - int num_glyphs) + int *num_glyphs) { - unsigned long glyph_cache[64]; - cairo_status_t status; +#define GLYPH_CACHE_SIZE 64 + cairo_box_t bbox_cache[GLYPH_CACHE_SIZE]; + unsigned long glyph_cache[GLYPH_CACHE_SIZE]; +#undef GLYPH_CACHE_SIZE + cairo_status_t status = CAIRO_STATUS_SUCCESS; + cairo_glyph_t *glyphs_end, *valid_glyphs; const int max_glyph_size = dst->connection->maximum_request_length - 64; - int i; + /* We must initialize the cache with values that cannot match the + * "hash" to guarantee that when compared for the first time they + * will result in a mismatch. The hash function is simply modulus, + * so we cannot use 0 in glyph_cache[0], but we can use it in all + * other array cells. + */ memset (glyph_cache, 0, sizeof (glyph_cache)); + glyph_cache[0] = 1; - /* first scan for oversized glyphs, and fallback in that case */ - for (i = 0; i < num_glyphs; i++) { + /* Scan for oversized glyphs or glyphs outside the representable + * range and fallback in that case, discard glyphs outside of the + * image. + */ + valid_glyphs = glyphs; + for (glyphs_end = glyphs + *num_glyphs; glyphs != glyphs_end; glyphs++) { + double x1, y1, x2, y2; cairo_scaled_glyph_t *scaled_glyph; + cairo_box_t *bbox; int width, height, len; int g; - g = glyphs[i].index % ARRAY_LENGTH (glyph_cache); - if (glyph_cache[g] == glyphs[i].index) - continue; + g = glyphs->index % ARRAY_LENGTH (glyph_cache); + if (glyph_cache[g] != glyphs->index) { + status = _cairo_scaled_glyph_lookup (scaled_font, + glyphs->index, + CAIRO_SCALED_GLYPH_INFO_METRICS, + &scaled_glyph); + if (unlikely (status)) + break; - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (unlikely (status)) - return status; + glyph_cache[g] = glyphs->index; + bbox_cache[g] = scaled_glyph->bbox; + } + bbox = &bbox_cache[g]; + + /* Drop glyphs outside the clipping */ + x1 = _cairo_fixed_to_double (bbox->p1.x); + y1 = _cairo_fixed_to_double (bbox->p1.y); + y2 = _cairo_fixed_to_double (bbox->p2.y); + x2 = _cairo_fixed_to_double (bbox->p2.x); + if (unlikely (glyphs->x + x2 <= extents->x || + glyphs->y + y2 <= extents->y || + glyphs->x + x1 >= extents->x + extents->width || + glyphs->y + y1 >= extents->y + extents->height)) + { + (*num_glyphs)--; + continue; + } /* XRenderAddGlyph does not handle a glyph surface larger than * the extended maximum XRequest size. */ - width = - _cairo_fixed_integer_ceil (scaled_glyph->bbox.p2.x - scaled_glyph->bbox.p1.x); - height = - _cairo_fixed_integer_ceil (scaled_glyph->bbox.p2.y - scaled_glyph->bbox.p1.y); + width = _cairo_fixed_integer_ceil (bbox->p2.x - bbox->p1.x); + height = _cairo_fixed_integer_ceil (bbox->p2.y - bbox->p1.y); len = CAIRO_STRIDE_FOR_WIDTH_BPP (width, 32) * height; - if (len >= max_glyph_size) - return CAIRO_INT_STATUS_UNSUPPORTED; + if (unlikely (len >= max_glyph_size)) { + status = CAIRO_INT_STATUS_UNSUPPORTED; + break; + } - glyph_cache[g] = glyphs[i].index; + /* The glyph coordinates must be representable in an int16_t. + * When possible, they will be expressed as an offset from the + * previous glyph, otherwise they will be an offset from the + * operation extents or from the surface origin. If the last + * two options are not valid, fallback. + */ + if (unlikely (glyphs->x > INT16_MAX || + glyphs->y > INT16_MAX || + glyphs->x - extents->x < INT16_MIN || + glyphs->y - extents->y < INT16_MIN)) + { + status = CAIRO_INT_STATUS_UNSUPPORTED; + break; + } + + + if (unlikely (valid_glyphs != glyphs)) + *valid_glyphs = *glyphs; + valid_glyphs++; } - return CAIRO_STATUS_SUCCESS; + if (unlikely (valid_glyphs != glyphs)) { + for (; glyphs != glyphs_end; glyphs++) { + *valid_glyphs = *glyphs; + valid_glyphs++; + } + } + + return status; } /* Start a new element for the first glyph, @@ -3973,8 +3972,6 @@ _cairo_xcb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font) status = _cairo_xcb_connection_acquire (connection); have_connection = status == CAIRO_STATUS_SUCCESS; - if (likely (have_connection)) - status = _cairo_xcb_connection_take_socket (connection); for (i = 0; i < NUM_GLYPHSETS; i++) { cairo_xcb_font_glyphset_info_t *glyphset_info; @@ -4476,25 +4473,8 @@ _composite_glyphs (void *closure, glyph_cache[cache_index] = scaled_glyph; } - /* Glyph skipping: - * - * We skip any glyphs that have troublesome coordinates. We want - * to make sure that (glyph2.x - (glyph1.x + glyph1.width)) fits in - * a signed 16bit integer, otherwise it will overflow in the render - * protocol. - * To ensure this, we'll make sure that (glyph2.x - glyph1.x) fits in - * a signed 15bit integer. The trivial option would be to allow - * coordinates -8192..8192, but that's kinda dull. It probably will - * take a decade or so to get monitors 8192x4096 or something. A - * negative value of -8192 on the other hand, is absolutely useless. - * Note that we do want to allow some negative positions. The glyph - * may start off the screen but part of it make it to the screen. - * Anyway, we will allow positions in the range -4096..122887. That - * will buy us a few more years before this stops working. - */ this_x = _cairo_lround (info->glyphs[i].d.x) - dst_x; this_y = _cairo_lround (info->glyphs[i].d.y) - dst_y; - assert (! (((this_x+4096) | (this_y+4096)) & ~0x3fffu)); this_glyphset_info = _cairo_xcb_scaled_glyph_get_glyphset_info (scaled_glyph); if (glyphset_info == NULL) @@ -4521,8 +4501,17 @@ _composite_glyphs (void *closure, * prefer the latter is the fact that Xserver ADDs all glyphs * to the mask first, and then composes that to final surface, * though it's not a big deal. + * + * If the glyph has a coordinate which cannot be represented + * as a 16-bit offset from the previous glyph, flush the + * current chunk. The current glyph will be the first one in + * the next chunk, thus its coordinates will be an offset from + * the destination origin. This offset is guaranteed to be + * representable as 16-bit offset in _can_composite_glyphs(). */ if (request_size + width > max_request_size - _cairo_sz_x_glyph_elt_t || + this_x - x > INT16_MAX || this_x - x < INT16_MIN || + this_y - y > INT16_MAX || this_y - y < INT16_MIN || this_glyphset_info != glyphset_info) { status = _emit_glyphs_chunk (dst, op, src, @@ -4633,42 +4622,14 @@ _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface, if (_cairo_clip_contains_rectangle (clip, &extents.mask)) clip = NULL; - if (clip != NULL) { + if (clip != NULL && extents.is_bounded) { clip = _cairo_clip_init_copy (&local_clip, clip); - if (extents.is_bounded) { - cairo_region_t *clip_region = NULL; - - status = _cairo_clip_rectangle (clip, &extents.bounded); - if (unlikely (status)) { - _cairo_clip_fini (&local_clip); - return status; - } - - status = _cairo_clip_get_region (clip, &clip_region); - if (unlikely (_cairo_status_is_error (status) || - status == CAIRO_INT_STATUS_NOTHING_TO_DO)) - { - _cairo_clip_fini (&local_clip); - return status; - } - - if (clip_region != NULL) { - cairo_rectangle_int_t rect; - cairo_bool_t is_empty; - - cairo_region_get_extents (clip_region, &rect); - is_empty = ! _cairo_rectangle_intersect (&extents.unbounded, &rect); - if (unlikely (is_empty)) - return CAIRO_STATUS_SUCCESS; - - is_empty = ! _cairo_rectangle_intersect (&extents.bounded, &rect); - if (unlikely (is_empty && extents.is_bounded)) - return CAIRO_STATUS_SUCCESS; - - if (cairo_region_num_rectangles (clip_region) == 1) - clip = NULL; - } + status = _cairo_clip_rectangle (clip, &extents.bounded); + if (unlikely (status)) { + _cairo_clip_fini (&local_clip); + return status; } + have_clip = TRUE; } @@ -4677,8 +4638,8 @@ _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface, _cairo_scaled_font_freeze_cache (scaled_font); if (_surface_owns_font (surface, scaled_font)) { - status = _can_composite_glyphs (surface, - scaled_font, glyphs, num_glyphs); + status = _can_composite_glyphs (surface, &extents.bounded, + scaled_font, glyphs, &num_glyphs); if (likely (status == CAIRO_STATUS_SUCCESS)) { composite_glyphs_info_t info; @@ -4701,8 +4662,7 @@ _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface, status = _cairo_xcb_surface_render_glyphs_via_mask (surface, op, source, scaled_font, glyphs, num_glyphs, - have_clip ? &local_clip : NULL, - &extents); + clip, &extents); } if (have_clip) diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c index d852f50..6b45e8b 100644 --- a/src/cairo-xcb-surface.c +++ b/src/cairo-xcb-surface.c @@ -203,12 +203,6 @@ _cairo_xcb_surface_create_similar (void *abstract_other, if (unlikely (status)) return _cairo_surface_create_in_error (status); - status =_cairo_xcb_connection_take_socket (connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (connection); - return _cairo_surface_create_in_error (status); - } - if (content == other->base.content) { pixmap = _cairo_xcb_connection_create_pixmap (connection, other->depth, @@ -289,15 +283,13 @@ _cairo_xcb_surface_finish (void *abstract_surface) status = _cairo_xcb_connection_acquire (surface->connection); if (status == CAIRO_STATUS_SUCCESS) { - if (_cairo_xcb_connection_take_socket (surface->connection) == CAIRO_STATUS_SUCCESS) { - if (surface->picture != XCB_NONE) { - _cairo_xcb_connection_render_free_picture (surface->connection, - surface->picture); - } - - if (surface->owns_pixmap) - _cairo_xcb_connection_free_pixmap (surface->connection, surface->drawable); + if (surface->picture != XCB_NONE) { + _cairo_xcb_connection_render_free_picture (surface->connection, + surface->picture); } + + if (surface->owns_pixmap) + _cairo_xcb_connection_free_pixmap (surface->connection, surface->drawable); _cairo_xcb_connection_release (surface->connection); } @@ -428,10 +420,6 @@ _get_image (cairo_xcb_surface_t *surface, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (connection); - if (unlikely (status)) - goto FAIL; - if (use_shm) { status = _get_shm_image (surface, image_out); if (status != CAIRO_INT_STATUS_UNSUPPORTED) @@ -604,6 +592,7 @@ _cairo_xcb_surface_get_font_options (void *abstract_surface, { /* XXX copy from xlib */ _cairo_font_options_init_default (options); + _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON); } static cairo_status_t @@ -619,17 +608,16 @@ _put_shm_image (cairo_xcb_surface_t *surface, if (shm_info == NULL) return CAIRO_INT_STATUS_UNSUPPORTED; - shm_info->seqno = - _cairo_xcb_connection_shm_put_image (surface->connection, - surface->drawable, - gc, - surface->width, surface->height, - 0, 0, - image->width, image->height, - 0, 0, - image->depth, - shm_info->shm, - shm_info->offset); + _cairo_xcb_connection_shm_put_image (surface->connection, + surface->drawable, + gc, + surface->width, surface->height, + 0, 0, + image->width, image->height, + 0, 0, + image->depth, + shm_info->shm, + shm_info->offset); return CAIRO_STATUS_SUCCESS; #else @@ -649,12 +637,6 @@ _put_image (cairo_xcb_surface_t *surface, if (unlikely (status)) return status; - status = _cairo_xcb_connection_take_socket (surface->connection); - if (unlikely (status)) { - _cairo_xcb_connection_release (surface->connection); - return status; - } - if (image->pixman_format == surface->pixman_format) { xcb_gcontext_t gc; @@ -1164,19 +1146,22 @@ cairo_xcb_surface_create (xcb_connection_t *xcb_connection, int depth; if (xcb_connection_has_error (xcb_connection)) - return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR)); if (unlikely (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX)) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); xcb_screen = _cairo_xcb_screen_from_visual (xcb_connection, visual, &depth); if (unlikely (xcb_screen == NULL)) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_VISUAL); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_VISUAL)); image_masks.alpha_mask = 0; image_masks.red_mask = visual->red_mask; image_masks.green_mask = visual->green_mask; image_masks.blue_mask = visual->blue_mask; + if (depth == 32) /* XXX visuals have no alpha! */ + image_masks.alpha_mask = + 0xffffffff & ~(visual->red_mask | visual->green_mask | visual->blue_mask); if (depth > 16) image_masks.bpp = 32; else if (depth > 8) @@ -1216,10 +1201,10 @@ cairo_xcb_surface_create_for_bitmap (xcb_connection_t *xcb_connection, cairo_xcb_screen_t *screen; if (xcb_connection_has_error (xcb_connection)) - return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR)); if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); screen = _cairo_xcb_screen_get (xcb_connection, xcb_screen); if (unlikely (screen == NULL)) @@ -1267,10 +1252,10 @@ cairo_xcb_surface_create_with_xrender_format (xcb_connection_t *xcb_connecti pixman_format_code_t pixman_format; if (xcb_connection_has_error (xcb_connection)) - return _cairo_surface_create_in_error (CAIRO_STATUS_WRITE_ERROR); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR)); if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); image_masks.alpha_mask = (unsigned long) format->direct.alpha_mask << format->direct.alpha_shift; diff --git a/src/cairo-xlib-screen.c b/src/cairo-xlib-screen.c index 801dc3d..a0c3df8 100644 --- a/src/cairo-xlib-screen.c +++ b/src/cairo-xlib-screen.c @@ -447,6 +447,7 @@ _cairo_xlib_screen_get_font_options (cairo_xlib_screen_t *info) { if (! info->has_font_options) { _cairo_font_options_init_default (&info->font_options); + _cairo_font_options_set_round_glyph_positions (&info->font_options, CAIRO_ROUND_GLYPH_POS_ON); if (info->screen != NULL) { cairo_xlib_display_t *display; diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index c74f656..8b59804 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -59,6 +59,7 @@ #include /* for XDestroyImage */ #define XLIB_COORD_MAX 32767 +#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ #define DEBUG 0 @@ -1623,17 +1624,28 @@ static cairo_status_t _cairo_xlib_surface_set_matrix (cairo_xlib_display_t *display, cairo_xlib_surface_t *surface, const cairo_matrix_t *matrix, + cairo_filter_t filter, double xc, - double yc) + double yc, + int *x_offset, + int *y_offset) { XTransform xtransform; + pixman_transform_t *pixman_transform; + cairo_status_t status; /* Casting between pixman_transform_t and XTransform is safe because * they happen to be the exact same type. */ - _cairo_matrix_to_pixman_matrix (matrix, - (pixman_transform_t *) &xtransform, - xc, yc); + pixman_transform = (pixman_transform_t *) &xtransform; + + status = _cairo_matrix_to_pixman_matrix_offset (matrix, filter, xc, yc, + pixman_transform, + x_offset, y_offset); + if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) + status = CAIRO_STATUS_SUCCESS; + if (unlikely (status != CAIRO_STATUS_SUCCESS)) + return status; if (memcmp (&xtransform, &surface->xtransform, sizeof (XTransform)) == 0) return CAIRO_STATUS_SUCCESS; @@ -1757,11 +1769,11 @@ _cairo_xlib_surface_set_component_alpha (cairo_xlib_surface_t *surface, } static cairo_int_status_t -_cairo_xlib_surface_set_attributes (cairo_xlib_display_t *display, - cairo_xlib_surface_t *surface, - const cairo_surface_attributes_t *attributes, - double xc, - double yc) +_cairo_xlib_surface_set_attributes (cairo_xlib_display_t *display, + cairo_xlib_surface_t *surface, + cairo_surface_attributes_t *attributes, + double xc, + double yc) { cairo_int_status_t status; XRenderPictureAttributes pa; @@ -1770,7 +1782,11 @@ _cairo_xlib_surface_set_attributes (cairo_xlib_display_t *display, _cairo_xlib_surface_ensure_src_picture (display, surface); status = _cairo_xlib_surface_set_matrix (display, surface, - &attributes->matrix, xc, yc); + &attributes->matrix, + attributes->filter, + xc, yc, + &attributes->x_offset, + &attributes->y_offset); if (unlikely (status)) return status; @@ -2079,6 +2095,7 @@ _cairo_xlib_surface_acquire_pattern_surface (cairo_xlib_display_t *display, cairo_matrix_t matrix = pattern->matrix; cairo_xlib_surface_t *surface; char buf[CAIRO_STACK_BUFFER_SIZE]; + cairo_circle_double_t extremes[2]; XFixed *stops; XRenderColor *colors; XRenderPictFormat *format; @@ -2128,70 +2145,32 @@ _cairo_xlib_surface_acquire_pattern_surface (cairo_xlib_display_t *display, XSync (display->display, False); #endif + _cairo_gradient_pattern_fit_to_range (gradient, PIXMAN_MAX_INT >> 1, &matrix, extremes); + if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR) { - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) pattern; XLinearGradient grad; - cairo_fixed_t xdim, ydim; - - xdim = linear->p2.x - linear->p1.x; - ydim = linear->p2.y - linear->p1.y; - - /* - * Transform the matrix to avoid overflow when converting between - * cairo_fixed_t and pixman_fixed_t (without incurring performance - * loss when the transformation is unnecessary). - * - * XXX: Consider converting out-of-range co-ordinates and transforms. - * Having a function to compute the required transformation to - * "normalize" a given bounding box would be generally useful - - * cf linear patterns, gradient patterns, surface patterns... - */ -#define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ - if (_cairo_fixed_integer_ceil (xdim) > PIXMAN_MAX_INT || - _cairo_fixed_integer_ceil (ydim) > PIXMAN_MAX_INT) - { - double sf; - - if (xdim > ydim) - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (xdim); - else - sf = PIXMAN_MAX_INT / _cairo_fixed_to_double (ydim); - - grad.p1.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.x) * sf); - grad.p1.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p1.y) * sf); - grad.p2.x = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.x) * sf); - grad.p2.y = _cairo_fixed_16_16_from_double (_cairo_fixed_to_double (linear->p2.y) * sf); - - cairo_matrix_scale (&matrix, sf, sf); - } - else - { - grad.p1.x = _cairo_fixed_to_16_16 (linear->p1.x); - grad.p1.y = _cairo_fixed_to_16_16 (linear->p1.y); - grad.p2.x = _cairo_fixed_to_16_16 (linear->p2.x); - grad.p2.y = _cairo_fixed_to_16_16 (linear->p2.y); - } + grad.p1.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + grad.p1.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + grad.p2.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + grad.p2.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); picture = XRenderCreateLinearGradient (display->display, &grad, stops, colors, gradient->n_stops); } else { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; XRadialGradient grad; - grad.inner.x = _cairo_fixed_to_16_16 (radial->c1.x); - grad.inner.y = _cairo_fixed_to_16_16 (radial->c1.y); - grad.inner.radius = _cairo_fixed_to_16_16 (radial->r1); - - grad.outer.x = _cairo_fixed_to_16_16 (radial->c2.x); - grad.outer.y = _cairo_fixed_to_16_16 (radial->c2.y); - grad.outer.radius = _cairo_fixed_to_16_16 (radial->r2); + grad.inner.x = _cairo_fixed_16_16_from_double (extremes[0].center.x); + grad.inner.y = _cairo_fixed_16_16_from_double (extremes[0].center.y); + grad.inner.radius = _cairo_fixed_16_16_from_double (extremes[0].radius); + grad.outer.x = _cairo_fixed_16_16_from_double (extremes[1].center.x); + grad.outer.y = _cairo_fixed_16_16_from_double (extremes[1].center.y); + grad.outer.radius = _cairo_fixed_16_16_from_double (extremes[1].radius); picture = XRenderCreateRadialGradient (display->display, &grad, stops, colors, gradient->n_stops); - } if (stops != (XFixed *) buf) @@ -2230,6 +2209,7 @@ _cairo_xlib_surface_acquire_pattern_surface (cairo_xlib_display_t *display, ASSERT_NOT_REACHED; case CAIRO_PATTERN_TYPE_SOLID: case CAIRO_PATTERN_TYPE_SURFACE: + case CAIRO_PATTERN_TYPE_MESH: break; } @@ -3371,7 +3351,7 @@ cairo_xlib_surface_create (Display *dpy, if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) { /* you're lying, and you know it! */ - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); } scr = _cairo_xlib_screen_from_visual (dpy, visual); @@ -3413,7 +3393,7 @@ cairo_xlib_surface_create_for_bitmap (Display *dpy, cairo_status_t status; if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); status = _cairo_xlib_screen_get (dpy, scr, &screen); if (unlikely (status)) @@ -3459,7 +3439,7 @@ cairo_xlib_surface_create_with_xrender_format (Display *dpy, cairo_status_t status; if (width > XLIB_COORD_MAX || height > XLIB_COORD_MAX) - return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_SIZE)); status = _cairo_xlib_screen_get (dpy, scr, &screen); if (unlikely (status)) @@ -4534,30 +4514,20 @@ _cairo_xlib_surface_emit_glyphs (cairo_xlib_display_t *display, if (unlikely (status)) return status; - this_x = _cairo_lround (glyphs[i].d.x); - this_y = _cairo_lround (glyphs[i].d.y); - - /* Glyph skipping: - * - * We skip any glyphs that have troublesome coordinates. We want - * to make sure that (glyph2.x - (glyph1.x + glyph1.width)) fits in - * a signed 16bit integer, otherwise it will overflow in the render - * protocol. - * To ensure this, we'll make sure that (glyph2.x - glyph1.x) fits in - * a signed 15bit integer. The trivial option would be to allow - * coordinates -8192..8192, but that's kinda dull. It probably will - * take a decade or so to get monitors 8192x4096 or something. A - * negative value of -8192 on the other hand, is absolutely useless. - * Note that we do want to allow some negative positions. The glyph - * may start off the screen but part of it make it to the screen. - * Anyway, we will allow positions in the range -4096..122887. That - * will buy us a few more years before this stops working. - * - * Update: upon seeing weird glyphs, we just return and let fallback - * code do the job. + /* The glyph coordinates must be representable in an int16_t. + * When possible, they will be expressed as an offset from the + * previous glyph, otherwise they will be an offset from the + * surface origin. If we can't guarantee this to be possible, + * fallback. */ - if (((this_x+4096)|(this_y+4096))&~0x3fffu) + if (glyphs[i].d.x > INT16_MAX || glyphs[i].d.y > INT16_MAX || + glyphs[i].d.x < INT16_MIN || glyphs[i].d.y < INT16_MIN) + { break; + } + + this_x = _cairo_lround (glyphs[i].d.x); + this_y = _cairo_lround (glyphs[i].d.y); /* Send unsent glyphs to the server */ if (_cairo_xlib_scaled_glyph_get_glyphset_info (scaled_glyph) == NULL) { @@ -4605,8 +4575,18 @@ _cairo_xlib_surface_emit_glyphs (cairo_xlib_display_t *display, * prefer the latter is the fact that Xserver ADDs all glyphs * to the mask first, and then composes that to final surface, * though it's not a big deal. + * + * If the glyph has a coordinate which cannot be represented + * as a 16-bit offset from the previous glyph, flush the + * current chunk. The current glyph will be the first one in + * the next chunk, thus its coordinates will be an offset from + * the destination origin. This offset is guaranteed to be + * representable as 16-bit offset (otherwise we would have + * fallen back). */ if (request_size + width > max_request_size - _cairo_sz_xGlyphElt || + this_x - x > INT16_MAX || this_x - x < INT16_MIN || + this_y - y > INT16_MAX || this_y - y < INT16_MIN || (this_glyphset_info != glyphset_info)) { status = _emit_glyphs_chunk (display, dst, glyphs, i, scaled_font, op, src, attributes, diff --git a/src/cairo-xml-surface.c b/src/cairo-xml-surface.c index b323d03..83d4f91 100644 --- a/src/cairo-xml-surface.c +++ b/src/cairo-xml-surface.c @@ -421,7 +421,6 @@ _cairo_xml_emit_path (cairo_xml_t *xml, _cairo_xml_printf_start (xml, ""); status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, _cairo_xml_move_to, _cairo_xml_line_to, _cairo_xml_curve_to, @@ -555,10 +554,8 @@ _cairo_xml_emit_linear (cairo_xml_t *xml, { _cairo_xml_printf (xml, "", - _cairo_fixed_to_double (linear->p1.x), - _cairo_fixed_to_double (linear->p1.y), - _cairo_fixed_to_double (linear->p2.x), - _cairo_fixed_to_double (linear->p2.y)); + linear->pd1.x, linear->pd1.y, + linear->pd2.x, linear->pd2.y); _cairo_xml_indent (xml, 2); _cairo_xml_emit_gradient (xml, &linear->base); _cairo_xml_indent (xml, -2); @@ -572,12 +569,8 @@ _cairo_xml_emit_radial (cairo_xml_t *xml, { _cairo_xml_printf (xml, "", - _cairo_fixed_to_double (radial->c1.x), - _cairo_fixed_to_double (radial->c1.y), - _cairo_fixed_to_double (radial->r1), - _cairo_fixed_to_double (radial->c2.x), - _cairo_fixed_to_double (radial->c2.y), - _cairo_fixed_to_double (radial->r2)); + radial->cd1.center.x, radial->cd1.center.y, radial->cd1.radius, + radial->cd2.center.x, radial->cd2.center.y, radial->cd2.radius); _cairo_xml_indent (xml, 2); _cairo_xml_emit_gradient (xml, &radial->base); _cairo_xml_indent (xml, -2); @@ -872,7 +865,7 @@ _cairo_xml_emit_type42_font (cairo_xml_t *xml, if (unlikely (buf == NULL)) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - status = backend->load_truetype_table (scaled_font, 0, 0, buf, NULL); + status = backend->load_truetype_table (scaled_font, 0, 0, buf, &size); if (unlikely (status)) { free (buf); return status; diff --git a/src/cairo.c b/src/cairo.c index 5117f8a..73dbaee 100644 --- a/src/cairo.c +++ b/src/cairo.c @@ -117,11 +117,13 @@ static const cairo_t _cairo_nil = { { 0, 0 }, /* last_move_point */ { 0, 0 }, /* current point */ FALSE, /* has_current_point */ - FALSE, /* has_last_move_point */ + TRUE, /* needs_move_to */ + FALSE, /* has_extents */ FALSE, /* has_curve_to */ - FALSE, /* is_box */ - FALSE, /* maybe_fill_region */ - TRUE, /* is_empty_fill */ + TRUE, /* stroke_is_rectilinear */ + TRUE, /* fill_is_rectilinear */ + TRUE, /* fill_maybe_region */ + TRUE, /* fill_is_empty */ { {0, 0}, {0, 0}}, /* extents */ {{{NULL,NULL}}} /* link */ }} @@ -138,11 +140,13 @@ static const cairo_t _cairo_nil__null_pointer = { { 0, 0 }, /* last_move_point */ { 0, 0 }, /* current point */ FALSE, /* has_current_point */ - FALSE, /* has_last_move_point */ + TRUE, /* needs_move_to */ + FALSE, /* has_extents */ FALSE, /* has_curve_to */ - FALSE, /* is_box */ - FALSE, /* maybe_fill_region */ - TRUE, /* is_empty_fill */ + TRUE, /* stroke_is_rectilinear */ + TRUE, /* fill_is_rectilinear */ + TRUE, /* fill_maybe_region */ + TRUE, /* fill_is_empty */ { {0, 0}, {0, 0}}, /* extents */ {{{NULL,NULL}}} /* link */ }} @@ -341,7 +345,8 @@ _cairo_reset_static_data (void) * default values and with @target as a target surface. The target * surface should be constructed with a backend-specific function such * as cairo_image_surface_create() (or any other - * cairo_backend_surface_create() variant). + * cairo_backend_surface_create() + * variant). * * This function references @target, so you can immediately * call cairo_surface_destroy() on it if you don't need to @@ -580,6 +585,11 @@ cairo_restore (cairo_t *cr) if (unlikely (cr->status)) return; + if (unlikely (_cairo_gstate_is_group (cr->gstate))) { + _cairo_set_error (cr, _cairo_error (CAIRO_STATUS_INVALID_RESTORE)); + return; + } + status = _cairo_gstate_restore (&cr->gstate, &cr->gstate_freelist); if (unlikely (status)) _cairo_set_error (cr, status); @@ -749,7 +759,7 @@ slim_hidden_def(cairo_push_group_with_content); cairo_pattern_t * cairo_pop_group (cairo_t *cr) { - cairo_surface_t *group_surface, *parent_target; + cairo_surface_t *group_surface; cairo_pattern_t *group_pattern; cairo_matrix_t group_matrix, device_transform_matrix; cairo_status_t status; @@ -757,27 +767,18 @@ cairo_pop_group (cairo_t *cr) if (unlikely (cr->status)) return _cairo_pattern_create_in_error (cr->status); - /* Grab the active surfaces */ - group_surface = _cairo_gstate_get_target (cr->gstate); - parent_target = _cairo_gstate_get_parent_target (cr->gstate); - /* Verify that we are at the right nesting level */ - if (parent_target == NULL) { + if (unlikely (! _cairo_gstate_is_group (cr->gstate))) { _cairo_set_error (cr, CAIRO_STATUS_INVALID_POP_GROUP); return _cairo_pattern_create_in_error (CAIRO_STATUS_INVALID_POP_GROUP); } - /* We need to save group_surface before we restore; we don't need - * to reference parent_target and original_target, since the - * gstate will still hold refs to them once we restore. */ + /* Get a reference to the active surface before restoring */ + group_surface = _cairo_gstate_get_target (cr->gstate); group_surface = cairo_surface_reference (group_surface); - cairo_restore (cr); - - if (unlikely (cr->status)) { - group_pattern = _cairo_pattern_create_in_error (cr->status); - goto done; - } + status = _cairo_gstate_restore (&cr->gstate, &cr->gstate_freelist); + assert (status == CAIRO_STATUS_SUCCESS); group_pattern = cairo_pattern_create_for_surface (group_surface); status = group_pattern->status; @@ -824,7 +825,7 @@ slim_hidden_def(cairo_pop_group); * operations: * * - * #cairo_pattern_t *group = cairo_pop_group (cr); + * cairo_pattern_t *group = cairo_pop_group (cr); * cairo_set_source (cr, group); * cairo_pattern_destroy (group); * @@ -1806,8 +1807,8 @@ slim_hidden_def (cairo_curve_to); * Adds a circular arc of the given @radius to the current path. The * arc is centered at (@xc, @yc), begins at @angle1 and proceeds in * the direction of increasing angles to end at @angle2. If @angle2 is - * less than @angle1 it will be progressively increased by 2*M_PI - * until it is greater than @angle1. + * less than @angle1 it will be progressively increased by + * 2*M_PI until it is greater than @angle1. * * If there is a current point, an initial line segment will be added * to the path to connect the current point to the beginning of the @@ -1815,11 +1816,12 @@ slim_hidden_def (cairo_curve_to); * calling cairo_new_sub_path() before calling cairo_arc(). * * Angles are measured in radians. An angle of 0.0 is in the direction - * of the positive X axis (in user space). An angle of %M_PI/2.0 radians - * (90 degrees) is in the direction of the positive Y axis (in - * user space). Angles increase in the direction from the positive X - * axis toward the positive Y axis. So with the default transformation - * matrix, angles increase in a clockwise direction. + * of the positive X axis (in user space). An angle of + * M_PI/2.0 radians (90 degrees) is in the + * direction of the positive Y axis (in user space). Angles increase + * in the direction from the positive X axis toward the positive Y + * axis. So with the default transformation matrix, angles increase in + * a clockwise direction. * * (To convert from degrees to radians, use degrees * (M_PI / * 180.).) @@ -1857,8 +1859,14 @@ cairo_arc (cairo_t *cr, return; } - while (angle2 < angle1) - angle2 += 2 * M_PI; + if (angle2 < angle1) { + /* increase angle2 by multiples of full circle until it + * satisfies angle2 >= angle1 */ + angle2 = fmod (angle2 - angle1, 2 * M_PI); + if (angle2 < 0) + angle2 += 2 * M_PI; + angle2 += angle1; + } cairo_line_to (cr, xc + radius * cos (angle1), @@ -1880,8 +1888,8 @@ cairo_arc (cairo_t *cr, * Adds a circular arc of the given @radius to the current path. The * arc is centered at (@xc, @yc), begins at @angle1 and proceeds in * the direction of decreasing angles to end at @angle2. If @angle2 is - * greater than @angle1 it will be progressively decreased by 2*M_PI - * until it is less than @angle1. + * greater than @angle1 it will be progressively decreased by + * 2*M_PI until it is less than @angle1. * * See cairo_arc() for more details. This function differs only in the * direction of the arc between the two angles. @@ -1899,8 +1907,14 @@ cairo_arc_negative (cairo_t *cr, if (radius <= 0.0) return; - while (angle2 > angle1) - angle2 -= 2 * M_PI; + if (angle2 > angle1) { + /* decrease angle2 by multiples of full circle until it + * satisfies angle2 <= angle1 */ + angle2 = fmod (angle2 - angle1, 2 * M_PI); + if (angle2 > 0) + angle2 -= 2 * M_PI; + angle2 += angle1; + } cairo_line_to (cr, xc + radius * cos (angle1), @@ -3780,7 +3794,8 @@ slim_hidden_def (cairo_get_tolerance); * cairo_get_antialias: * @cr: a cairo context * - * Gets the current shape antialiasing mode, as set by cairo_set_shape_antialias(). + * Gets the current shape antialiasing mode, as set by + * cairo_set_antialias(). * * Return value: the current shape antialiasing mode. **/ diff --git a/src/cairo.h b/src/cairo.h index 136c5db..e087d89 100644 --- a/src/cairo.h +++ b/src/cairo.h @@ -152,8 +152,8 @@ typedef struct _cairo_surface cairo_surface_t; * A #cairo_device_t represents the driver interface for drawing * operations to a #cairo_surface_t. There are different subtypes of * #cairo_device_t for different drawing backends; for example, - * cairo_xcb_device_create() creates a device that wraps the connection - * to an X Windows System using the XCB library. + * cairo_egl_device_create() creates a device that wraps an EGL display and + * context. * * The type of a device can be queried with cairo_device_get_type(). * @@ -196,9 +196,10 @@ typedef struct _cairo_matrix { * cairo_pattern_create_rgb() creates a pattern for a solid * opaque color. * - * Other than various cairo_pattern_create_type() - * functions, some of the pattern types can be implicitly created - * using various cairo_set_source_type() functions; + * Other than various + * cairo_pattern_create_type() + * functions, some of the pattern types can be implicitly created using various + * cairo_set_source_type() functions; * for example cairo_set_source_rgb(). * * The type of a pattern can be queried with cairo_pattern_get_type(). @@ -270,6 +271,10 @@ typedef struct _cairo_user_data_key { * @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: user-font method not implemented (Since 1.10) * @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: the device type is not appropriate for the operation (Since 1.10) * @CAIRO_STATUS_DEVICE_ERROR: an operation to the device caused an unspecified error (Since 1.10) + * @CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: a mesh pattern + * construction operation was used outside of a + * cairo_pattern_mesh_begin_patch()/cairo_pattern_mesh_end_patch() + * pair (Since 1.12) * @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of * status values defined in this enumeration. When using this value, note * that the version of cairo at run-time may have additional status values @@ -321,6 +326,7 @@ typedef enum _cairo_status { CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, CAIRO_STATUS_DEVICE_TYPE_MISMATCH, CAIRO_STATUS_DEVICE_ERROR, + CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, CAIRO_STATUS_LAST_STATUS } cairo_status_t; @@ -1197,8 +1203,8 @@ typedef enum _cairo_hint_metrics { * * Individual features of a #cairo_font_options_t can be set or * accessed using functions named - * cairo_font_options_set_feature_name and - * cairo_font_options_get_feature_name, like + * cairo_font_options_set_feature_name() and + * cairo_font_options_get_feature_name(), like * cairo_font_options_set_antialias() and * cairo_font_options_get_antialias(). * @@ -1364,8 +1370,8 @@ cairo_font_face_status (cairo_font_face_t *font_face); * * The type of a font face is determined by the function used to * create it, which will generally be of the form - * cairo_type_font_face_create(). The font face type can be queried - * with cairo_font_face_get_type() + * cairo_type_font_face_create(). + * The font face type can be queried with cairo_font_face_get_type() * * The various #cairo_font_face_t functions can be used with a font face * of any type. @@ -1378,7 +1384,8 @@ cairo_font_face_status (cairo_font_face_t *font_face); * fonts of any type, but some font backends also provide * type-specific functions that must only be called with a scaled font * of the appropriate type. These functions have names that begin with - * cairo_type_scaled_font() such as cairo_ft_scaled_font_lock_face(). + * cairo_type_scaled_font() + * such as cairo_ft_scaled_font_lock_face(). * * The behavior of calling a type-specific function with a scaled font * of the wrong type is undefined. @@ -1947,7 +1954,6 @@ cairo_device_reference (cairo_device_t *device); * @CAIRO_DEVICE_TYPE_XCB: The surface is of type xcb * @CAIRO_DEVICE_TYPE_XLIB: The surface is of type xlib * @CAIRO_DEVICE_TYPE_XML: The surface is of type XML - * cairo_surface_create_for_rectangle() * * #cairo_device_type_t is used to describe the type of a given * device. The devices types are also known as "backends" within cairo. @@ -1958,7 +1964,8 @@ cairo_device_reference (cairo_device_t *device); * any type, but some backends also provide type-specific functions * that must only be called with a device of the appropriate * type. These functions have names that begin with - * cairo_type_device such as cairo_xcb_device_debug_set_render_version(). + * cairo_type_device such as + * cairo_xcb_device_debug_cap_xrender_version(). * * The behavior of calling a type-specific function with a surface of * the wrong type is undefined. @@ -2077,7 +2084,8 @@ cairo_surface_status (cairo_surface_t *surface); * backends" within cairo. * * The type of a surface is determined by the function used to create - * it, which will generally be of the form cairo_type_surface_create(), + * it, which will generally be of the form + * cairo_type_surface_create(), * (though see cairo_surface_create_similar() as well). * * The surface type can be queried with cairo_surface_get_type() @@ -2086,7 +2094,7 @@ cairo_surface_status (cairo_surface_t *surface); * any type, but some backends also provide type-specific functions * that must only be called with a surface of the appropriate * type. These functions have names that begin with - * cairo_type_surface such as cairo_image_surface_get_width(). + * cairo_type_surface such as cairo_image_surface_get_width(). * * The behavior of calling a type-specific function with a surface of * the wrong type is undefined. @@ -2155,6 +2163,7 @@ cairo_surface_set_user_data (cairo_surface_t *surface, #define CAIRO_MIME_TYPE_PNG "image/png" #define CAIRO_MIME_TYPE_JP2 "image/jp2" #define CAIRO_MIME_TYPE_URI "text/x-uri" +#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid" cairo_public void cairo_surface_get_mime_data (cairo_surface_t *surface, @@ -2330,6 +2339,9 @@ cairo_public cairo_pattern_t * cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1); +cairo_public cairo_pattern_t * +cairo_pattern_create_mesh (void); + cairo_public cairo_pattern_t * cairo_pattern_reference (cairo_pattern_t *pattern); @@ -2359,6 +2371,7 @@ cairo_pattern_set_user_data (cairo_pattern_t *pattern, * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image). * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient. * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient. + * @CAIRO_PATTERN_TYPE_MESH: The pattern is a mesh. * * #cairo_pattern_type_t is used to describe the type of a given pattern. * @@ -2386,7 +2399,8 @@ typedef enum _cairo_pattern_type { CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE, CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL + CAIRO_PATTERN_TYPE_RADIAL, + CAIRO_PATTERN_TYPE_MESH } cairo_pattern_type_t; cairo_public cairo_pattern_type_t @@ -2403,6 +2417,42 @@ cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, double red, double green, double blue, double alpha); +cairo_public void +cairo_pattern_mesh_begin_patch (cairo_pattern_t *pattern); + +cairo_public void +cairo_pattern_mesh_end_patch (cairo_pattern_t *pattern); + +cairo_public void +cairo_pattern_mesh_curve_to (cairo_pattern_t *pattern, + double x1, double y1, + double x2, double y2, + double x3, double y3); + +cairo_public void +cairo_pattern_mesh_line_to (cairo_pattern_t *pattern, + double x, double y); + +cairo_public void +cairo_pattern_mesh_move_to (cairo_pattern_t *pattern, + double x, double y); + +cairo_public void +cairo_pattern_mesh_set_control_point (cairo_pattern_t *pattern, + unsigned int point_num, + double x, double y); + +cairo_public void +cairo_pattern_mesh_set_corner_color_rgb (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, double green, double blue); + +cairo_public void +cairo_pattern_mesh_set_corner_color_rgba (cairo_pattern_t *pattern, + unsigned int corner_num, + double red, double green, double blue, + double alpha); + cairo_public void cairo_pattern_set_matrix (cairo_pattern_t *pattern, const cairo_matrix_t *matrix); @@ -2427,6 +2477,8 @@ cairo_pattern_get_matrix (cairo_pattern_t *pattern, * example, outside the surface bounds or outside the gradient * geometry). * + * Mesh patterns are not affected by the extend mode. + * * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns * and %CAIRO_EXTEND_PAD for gradient patterns. * @@ -2460,7 +2512,7 @@ cairo_pattern_get_extend (cairo_pattern_t *pattern); * * #cairo_filter_t is used to indicate what filtering should be * applied when reading pixel values from patterns. See - * cairo_pattern_set_source() for indicating the desired filter to be + * cairo_pattern_set_filter() for indicating the desired filter to be * used with a particular pattern. */ typedef enum _cairo_filter { @@ -2508,6 +2560,27 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, double *x0, double *y0, double *r0, double *x1, double *y1, double *r1); +cairo_public cairo_status_t +cairo_pattern_mesh_get_patch_count (cairo_pattern_t *pattern, + unsigned int *count); + +cairo_public cairo_path_t * +cairo_pattern_mesh_get_path (cairo_pattern_t *pattern, + unsigned int patch_num); + +cairo_public cairo_status_t +cairo_pattern_mesh_get_corner_color_rgba (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int corner_num, + double *red, double *green, + double *blue, double *alpha); + +cairo_public cairo_status_t +cairo_pattern_mesh_get_control_point (cairo_pattern_t *pattern, + unsigned int patch_num, + unsigned int point_num, + double *x, double *y); + /* Matrix functions */ cairo_public void diff --git a/src/cairoint.h b/src/cairoint.h index 500b2d9..f203ec5 100644 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -262,6 +262,13 @@ cairo_private void _cairo_box_round_to_rectangle (const cairo_box_t *box, cairo_rectangle_int_t *rectangle); +cairo_private void +_cairo_box_add_curve_to (cairo_box_t *extents, + const cairo_point_t *a, + const cairo_point_t *b, + const cairo_point_t *c, + const cairo_point_t *d); + cairo_private void _cairo_boxes_get_extents (const cairo_box_t *boxes, int num_boxes, @@ -280,22 +287,21 @@ cairo_private cairo_bool_t _cairo_rectangle_intersect (cairo_rectangle_int_t *dst, const cairo_rectangle_int_t *src); +/* Extends the dst rectangle to also contain src. + * If one of the rectangles is empty, the result is undefined + */ +cairo_private void +_cairo_rectangle_union (cairo_rectangle_int_t *dst, + const cairo_rectangle_int_t *src); + cairo_private cairo_bool_t _cairo_box_intersects_line_segment (cairo_box_t *box, cairo_line_t *line) cairo_pure; -cairo_private cairo_bool_t -_cairo_box_contains_point (cairo_box_t *box, - const cairo_point_t *point) cairo_pure; - /* cairo-array.c structures and functions */ cairo_private void -_cairo_array_init (cairo_array_t *array, int element_size); - -cairo_private void -_cairo_array_init_snapshot (cairo_array_t *array, - const cairo_array_t *other); +_cairo_array_init (cairo_array_t *array, unsigned int element_size); cairo_private void _cairo_array_fini (cairo_array_t *array); @@ -312,7 +318,7 @@ _cairo_array_append (cairo_array_t *array, const void *element); cairo_private cairo_status_t _cairo_array_append_multiple (cairo_array_t *array, const void *elements, - int num_elements); + unsigned int num_elements); cairo_private cairo_status_t _cairo_array_allocate (cairo_array_t *array, @@ -322,14 +328,17 @@ _cairo_array_allocate (cairo_array_t *array, cairo_private void * _cairo_array_index (cairo_array_t *array, unsigned int index); +cairo_private const void * +_cairo_array_index_const (const cairo_array_t *array, unsigned int index); + cairo_private void -_cairo_array_copy_element (cairo_array_t *array, int index, void *dst); +_cairo_array_copy_element (const cairo_array_t *array, unsigned int index, void *dst); -cairo_private int -_cairo_array_num_elements (cairo_array_t *array); +cairo_private unsigned int +_cairo_array_num_elements (const cairo_array_t *array); -cairo_private int -_cairo_array_size (cairo_array_t *array); +cairo_private unsigned int +_cairo_array_size (const cairo_array_t *array); typedef struct { const cairo_user_data_key_t *key; @@ -354,8 +363,8 @@ _cairo_user_data_array_set_data (cairo_user_data_array_t *array, cairo_destroy_func_t destroy); cairo_private cairo_status_t -_cairo_user_data_array_copy (cairo_user_data_array_t *dst, - cairo_user_data_array_t *src); +_cairo_user_data_array_copy (cairo_user_data_array_t *dst, + const cairo_user_data_array_t *src); cairo_private void _cairo_user_data_array_foreach (cairo_user_data_array_t *array, @@ -397,6 +406,9 @@ _cairo_toy_font_face_reset_static_data (void); cairo_private void _cairo_ft_font_reset_static_data (void); +cairo_private void +_cairo_win32_font_reset_static_data (void); + /* the font backend interface */ struct _cairo_unscaled_font_backend { @@ -433,12 +445,14 @@ typedef struct _cairo_scaled_font_subset { * Value of glyphs array is scaled_font_glyph_index. */ unsigned long *glyphs; - unsigned long *to_unicode; char **utf8; char **glyph_names; + int *to_latin_char; + unsigned long *latin_to_subset_glyph_index; unsigned int num_glyphs; cairo_bool_t is_composite; cairo_bool_t is_scaled; + cairo_bool_t is_latin; } cairo_scaled_font_subset_t; struct _cairo_scaled_font_backend { @@ -487,6 +501,24 @@ struct _cairo_scaled_font_backend { cairo_region_t *clip_region, int *remaining_glyphs); + /* Read data from a sfnt font table. + * @scaled_font: font + * @tag: 4 byte table name specifying the table to read. + * @offset: offset into the table + * @buffer: buffer to write data into. Caller must ensure there is sufficient space. + * If NULL, return the size of the table in @length. + * @length: If @buffer is NULL, the size of the table will be returned in @length. + * If @buffer is not null, @length specifies the number of bytes to read. + * + * If less than @length bytes are available to read this function + * returns CAIRO_INT_STATUS_UNSUPPORTED. Note that requesting more + * bytes than are available in the table may continue reading data + * from the following table and return success. If this is + * undesirable the caller should first query the table size. If an + * error occurs the output value of @length is undefined. + * + * Returns CAIRO_INT_STATUS_UNSUPPORTED if not a sfnt style font or table not found. + */ cairo_warn cairo_int_status_t (*load_truetype_table)(void *scaled_font, unsigned long tag, @@ -500,6 +532,9 @@ struct _cairo_scaled_font_backend { (*index_to_ucs4)(void *scaled_font, unsigned long index, uint32_t *ucs4); + + cairo_warn cairo_bool_t + (*is_synthetic)(void *scaled_font); }; struct _cairo_font_face_backend { @@ -821,6 +856,12 @@ struct _cairo_surface_backend { cairo_text_cluster_flags_t cluster_flags, cairo_scaled_font_t *scaled_font, cairo_clip_t *clip); + + cairo_warn cairo_status_t + (*acquire_source_image_transformed) (void *abstract_surface, + cairo_matrix_t *device_transform, + cairo_image_surface_t **image_out, + void **image_extra); }; #include "cairo-surface-private.h" @@ -944,7 +985,7 @@ _cairo_restrict_value (double value, double min, double max) } /* C99 round() rounds to the nearest integral value with halfway cases rounded - * away from 0. _cairo_round rounds halfway cases toward negative infinity. + * away from 0. _cairo_round rounds halfway cases toward positive infinity. * This matches the rounding behaviour of _cairo_lround. */ static inline double cairo_const _cairo_round (double r) @@ -956,7 +997,11 @@ _cairo_round (double r) cairo_private int _cairo_lround (double d) cairo_const; #else -#define _cairo_lround lround +static inline int cairo_const +_cairo_lround (double r) +{ + return _cairo_round (r); +} #endif cairo_private uint16_t @@ -1079,6 +1124,13 @@ _cairo_font_options_set_lcd_filter (cairo_font_options_t *options, cairo_private cairo_lcd_filter_t _cairo_font_options_get_lcd_filter (const cairo_font_options_t *options); +cairo_private void +_cairo_font_options_set_round_glyph_positions (cairo_font_options_t *options, + cairo_round_glyph_positions_t round); + +cairo_private cairo_round_glyph_positions_t +_cairo_font_options_get_round_glyph_positions (const cairo_font_options_t *options); + /* cairo-hull.c */ cairo_private cairo_status_t _cairo_hull_compute (cairo_pen_vertex_t *vertices, int *num_vertices); @@ -1114,10 +1166,6 @@ cairo_private cairo_status_t _cairo_path_fixed_init_copy (cairo_path_fixed_t *path, const cairo_path_fixed_t *other); -cairo_private cairo_bool_t -_cairo_path_fixed_is_equal (const cairo_path_fixed_t *path, - const cairo_path_fixed_t *other); - cairo_private void _cairo_path_fixed_fini (cairo_path_fixed_t *path); @@ -1186,7 +1234,6 @@ typedef cairo_status_t cairo_private cairo_status_t _cairo_path_fixed_interpret (const cairo_path_fixed_t *path, - cairo_direction_t dir, cairo_path_fixed_move_to_func_t *move_to, cairo_path_fixed_line_to_func_t *line_to, cairo_path_fixed_curve_to_func_t *curve_to, @@ -1195,13 +1242,17 @@ _cairo_path_fixed_interpret (const cairo_path_fixed_t *path, cairo_private cairo_status_t _cairo_path_fixed_interpret_flat (const cairo_path_fixed_t *path, - cairo_direction_t dir, cairo_path_fixed_move_to_func_t *move_to, cairo_path_fixed_line_to_func_t *line_to, cairo_path_fixed_close_path_func_t *close_path, void *closure, double tolerance); + +cairo_private cairo_bool_t +_cairo_path_bounder_extents (const cairo_path_fixed_t *path, + cairo_box_t *box); + cairo_private cairo_bool_t _cairo_path_fixed_extents (const cairo_path_fixed_t *path, cairo_box_t *box); @@ -1542,15 +1593,6 @@ _cairo_surface_composite (cairo_operator_t op, unsigned int height, cairo_region_t *clip_region); -cairo_private cairo_status_t -_cairo_surface_fill_rectangle (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - int x, - int y, - int width, - int height); - cairo_private cairo_status_t _cairo_surface_fill_region (cairo_surface_t *surface, cairo_operator_t op, @@ -1630,55 +1672,6 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface, cairo_scaled_font_t *scaled_font, cairo_clip_t *clip); -cairo_private cairo_status_t -_cairo_surface_paint_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -_cairo_surface_mask_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_pattern_t *mask, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -_cairo_surface_stroke_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_path_fixed_t *path, - const cairo_stroke_style_t *style, - const cairo_matrix_t *ctm, - const cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -_cairo_surface_fill_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -_cairo_surface_glyphs_extents (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - cairo_clip_t *clip, - cairo_rectangle_int_t *extents); - cairo_private cairo_status_t _cairo_surface_composite_trapezoids (cairo_operator_t op, const cairo_pattern_t *pattern, @@ -1713,6 +1706,12 @@ _cairo_surface_acquire_source_image (cairo_surface_t *surface, cairo_image_surface_t **image_out, void **image_extra); +cairo_private cairo_status_t +_cairo_surface_acquire_source_image_transformed (cairo_surface_t *surface, + cairo_matrix_t *device_trasnform, + cairo_image_surface_t **image_out, + void **image_extra); + cairo_private void _cairo_surface_release_source_image (cairo_surface_t *surface, cairo_image_surface_t *image, @@ -1983,12 +1982,9 @@ _cairo_pen_find_active_ccw_vertex_index (const cairo_pen_t *pen, /* cairo-polygon.c */ cairo_private void -_cairo_polygon_init (cairo_polygon_t *polygon); - -cairo_private void -_cairo_polygon_limit (cairo_polygon_t *polygon, - const cairo_box_t *boxes, - int num_boxes); +_cairo_polygon_init (cairo_polygon_t *polygon, + const cairo_box_t *boxes, + int num_boxes); cairo_private void _cairo_polygon_fini (cairo_polygon_t *polygon); @@ -2004,17 +2000,6 @@ _cairo_polygon_add_external_edge (void *polygon, const cairo_point_t *p1, const cairo_point_t *p2); -cairo_private cairo_status_t -_cairo_polygon_move_to (cairo_polygon_t *polygon, - const cairo_point_t *point); - -cairo_private cairo_status_t -_cairo_polygon_line_to (cairo_polygon_t *polygon, - const cairo_point_t *point); - -cairo_private cairo_status_t -_cairo_polygon_close (cairo_polygon_t *polygon); - #define _cairo_polygon_status(P) ((cairo_polygon_t *) (P))->status /* cairo-spline.c */ @@ -2085,11 +2070,20 @@ cairo_private double _cairo_matrix_transformed_circle_major_axis (const cairo_matrix_t *matrix, double radius) cairo_pure; -cairo_private void -_cairo_matrix_to_pixman_matrix (const cairo_matrix_t *matrix, - pixman_transform_t *pixman_transform, - double xc, - double yc); +cairo_private cairo_bool_t +_cairo_matrix_is_pixman_translation (const cairo_matrix_t *matrix, + cairo_filter_t filter, + int *out_x_offset, + int *out_y_offset); + +cairo_private cairo_status_t +_cairo_matrix_to_pixman_matrix_offset (const cairo_matrix_t *matrix, + cairo_filter_t filter, + double xc, + double yc, + pixman_transform_t *out_transform, + int *out_x_offset, + int *out_y_offset); /* cairo-traps.c */ cairo_private void @@ -2209,15 +2203,6 @@ cairo_private void _cairo_pattern_init_for_surface (cairo_surface_pattern_t *pattern, cairo_surface_t *surface); -cairo_private void -_cairo_pattern_init_linear (cairo_linear_pattern_t *pattern, - double x0, double y0, double x1, double y1); - -cairo_private void -_cairo_pattern_init_radial (cairo_radial_pattern_t *pattern, - double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1); - cairo_private void _cairo_pattern_fini (cairo_pattern_t *pattern); @@ -2228,11 +2213,40 @@ cairo_private void _cairo_pattern_transform (cairo_pattern_t *pattern, const cairo_matrix_t *ctm_inverse); +cairo_private cairo_bool_t +_cairo_mesh_pattern_coord_box (const cairo_mesh_pattern_t *mesh, + double *out_xmin, + double *out_ymin, + double *out_xmax, + double *out_ymax); + +cairo_private void +_cairo_pattern_alpha_range (const cairo_pattern_t *gradient, + double *out_min, double *out_max); + cairo_private cairo_bool_t _cairo_gradient_pattern_is_solid (const cairo_gradient_pattern_t *gradient, const cairo_rectangle_int_t *extents, cairo_color_t *color); +cairo_private void +_cairo_gradient_pattern_box_to_parameter (const cairo_gradient_pattern_t *gradient, + double x0, double y0, + double x1, double y1, + double tolerance, + double out_range[2]); + +cairo_private void +_cairo_gradient_pattern_interpolate (const cairo_gradient_pattern_t *gradient, + double t, + cairo_circle_double_t *out_circle); + +cairo_private void +_cairo_gradient_pattern_fit_to_range (const cairo_gradient_pattern_t *gradient, + double max_value, + cairo_matrix_t *out_matrix, + cairo_circle_double_t out_circle[2]); + cairo_private cairo_bool_t _cairo_pattern_is_opaque_solid (const cairo_pattern_t *pattern); @@ -2302,9 +2316,6 @@ cairo_private cairo_bool_t _cairo_linear_pattern_equal (const cairo_linear_pattern_t *a, const cairo_linear_pattern_t *b); -cairo_private unsigned long -_cairo_pattern_size (const cairo_pattern_t *pattern); - cairo_private cairo_bool_t _cairo_radial_pattern_equal (const cairo_radial_pattern_t *a, const cairo_radial_pattern_t *b); @@ -2353,6 +2364,18 @@ _cairo_utf8_to_utf16 (const char *str, int *items_written); #endif +/* cairo-mesh-pattern-rasterizer.c */ + +cairo_private void +_cairo_mesh_pattern_rasterize (const cairo_mesh_pattern_t *mesh, + void *data, + int width, + int height, + int stride, + double x_offset, + double y_offset); + + /* cairo-observer.c */ cairo_private void @@ -2413,6 +2436,10 @@ slim_hidden_proto (cairo_pattern_create_rgb); slim_hidden_proto (cairo_pattern_create_rgba); slim_hidden_proto (cairo_pattern_destroy); slim_hidden_proto (cairo_pattern_get_extend); +slim_hidden_proto (cairo_pattern_mesh_curve_to); +slim_hidden_proto (cairo_pattern_mesh_line_to); +slim_hidden_proto (cairo_pattern_mesh_move_to); +slim_hidden_proto (cairo_pattern_mesh_set_corner_color_rgba); slim_hidden_proto_no_warn (cairo_pattern_reference); slim_hidden_proto (cairo_pattern_set_matrix); slim_hidden_proto (cairo_pop_group); diff --git a/src/drm/cairo-drm-i915-shader.c b/src/drm/cairo-drm-i915-shader.c index 483f187..84e501f 100644 --- a/src/drm/cairo-drm-i915-shader.c +++ b/src/drm/cairo-drm-i915-shader.c @@ -332,16 +332,18 @@ i915_shader_radial_init (struct i915_shader_radial *r, { double dx, dy, dr, r1; - dx = _cairo_fixed_to_double (radial->c2.x - radial->c1.x); - dy = _cairo_fixed_to_double (radial->c2.y - radial->c1.y); - dr = _cairo_fixed_to_double (radial->r2 - radial->r1); + dx = radial->cd2.center.x - radial->cd1.center.x; + dy = radial->cd2.center.y - radial->cd1.center.y; + dr = radial->cd2.radius - radial->cd1.radius; - r1 = _cairo_fixed_to_double (radial->r1); + r1 = radial->cd1.radius; - if (radial->c2.x == radial->c1.x && radial->c2.y == radial->c1.y) { + if (radial->cd2.center.x == radial->cd1.center.x && + radial->cd2.center.y == radial->cd1.center.y) + { /* XXX dr == 0, meaningless with anything other than PAD */ - r->constants[0] = _cairo_fixed_to_double (radial->c1.x) / dr; - r->constants[1] = _cairo_fixed_to_double (radial->c1.y) / dr; + r->constants[0] = radial->cd1.center.x / dr; + r->constants[1] = radial->cd1.center.y / dr; r->constants[2] = 1. / dr; r->constants[3] = -r1 / dr; @@ -352,8 +354,8 @@ i915_shader_radial_init (struct i915_shader_radial *r, r->base.mode = RADIAL_ONE; } else { - r->constants[0] = -_cairo_fixed_to_double (radial->c1.x); - r->constants[1] = -_cairo_fixed_to_double (radial->c1.y); + r->constants[0] = -radial->cd1.center.x; + r->constants[1] = -radial->cd1.center.y; r->constants[2] = r1; r->constants[3] = -4 * (dx*dx + dy*dy - dr*dr); @@ -1028,8 +1030,8 @@ i915_shader_linear_init (struct i915_shader_linear *l, double x0, y0, sf; double dx, dy, offset; - dx = _cairo_fixed_to_double (linear->p2.x - linear->p1.x); - dy = _cairo_fixed_to_double (linear->p2.y - linear->p1.y); + dx = linear->pd2.x - linear->pd1.x; + dy = linear->pd2.y - linear->pd1.y; sf = dx * dx + dy * dy; if (sf <= 1e-5) return FALSE; @@ -1037,8 +1039,8 @@ i915_shader_linear_init (struct i915_shader_linear *l, dx /= sf; dy /= sf; - x0 = _cairo_fixed_to_double (linear->p1.x); - y0 = _cairo_fixed_to_double (linear->p1.y); + x0 = linear->pd1.x; + y0 = linear->pd1.y; offset = dx*x0 + dy*y0; if (_cairo_matrix_is_identity (&linear->base.base.matrix)) { diff --git a/src/drm/cairo-drm-i915-surface.c b/src/drm/cairo-drm-i915-surface.c index 8d365dd..247d8ad 100644 --- a/src/drm/cairo-drm-i915-surface.c +++ b/src/drm/cairo-drm-i915-surface.c @@ -1915,9 +1915,9 @@ i915_surface_fill_with_alpha (void *abstract_dst, return status; } - assert (! path->is_empty_fill); + assert (! _cairo_path_fixed_fill_is_empty (path)); - if (_cairo_path_fixed_is_rectilinear_fill (path)) { + if (_cairo_path_fixed_fill_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -1938,8 +1938,7 @@ i915_surface_fill_with_alpha (void *abstract_dst, goto CLEANUP_BOXES; } - _cairo_polygon_init (&info.polygon); - _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &info.polygon); if (unlikely (status)) @@ -2259,7 +2258,7 @@ i915_surface_stroke (void *abstract_dst, return status; } - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -2280,8 +2279,7 @@ i915_surface_stroke (void *abstract_dst, goto CLEANUP_BOXES; } - _cairo_polygon_init (&info.polygon); - _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_stroke_to_polygon (path, stroke_style, diff --git a/src/drm/cairo-drm-i965-shader.c b/src/drm/cairo-drm-i965-shader.c index 5a5c966..03d7d44 100644 --- a/src/drm/cairo-drm-i965-shader.c +++ b/src/drm/cairo-drm-i965-shader.c @@ -161,14 +161,14 @@ i965_shader_acquire_linear (i965_shader_t *shader, src->base.filter = i965_filter (CAIRO_FILTER_BILINEAR); src->base.extend = i965_extend (linear->base.base.extend); - dx = _cairo_fixed_to_double (linear->p2.x - linear->p1.x); - dy = _cairo_fixed_to_double (linear->p2.y - linear->p1.y); + dx = linear->pd2.x - linear->pd1.x; + dy = linear->pd2.y - linear->pd1.y; sf = 1. / (dx * dx + dy * dy); dx *= sf; dy *= sf; - x0 = _cairo_fixed_to_double (linear->p1.x); - y0 = _cairo_fixed_to_double (linear->p1.y); + x0 = linear->pd1.x; + y0 = linear->pd1.y; offset = dx*x0 + dy*y0; if (_cairo_matrix_is_identity (&linear->base.base.matrix)) { @@ -215,24 +215,26 @@ i965_shader_acquire_radial (i965_shader_t *shader, src->base.filter = i965_filter (CAIRO_FILTER_BILINEAR); src->base.extend = i965_extend (radial->base.base.extend); - dx = _cairo_fixed_to_double (radial->c2.x - radial->c1.x); - dy = _cairo_fixed_to_double (radial->c2.y - radial->c1.y); - dr = _cairo_fixed_to_double (radial->r2 - radial->r1); + dx = radial->cd2.center.x - radial->cd1.center.x; + dy = radial->cd2.center.y - radial->cd1.center.y; + dr = radial->cd2.radius - radial->cd1.radius; - r1 = _cairo_fixed_to_double (radial->r1); + r1 = radial->cd1.radius; - if (FALSE && radial->c2.x == radial->c1.x && radial->c2.y == radial->c1.y) { + if (FALSE && (radial->cd2.center.x == radial->cd1.center.x && + radial->cd2.center.y == radial->cd1.center.y)) + { /* XXX dr == 0, meaningless with anything other than PAD */ - src->base.constants[0] = _cairo_fixed_to_double (radial->c1.x) / dr; - src->base.constants[1] = _cairo_fixed_to_double (radial->c1.y) / dr; + src->base.constants[0] = radial->cd1.center.x / dr; + src->base.constants[1] = radial->cd1.center.y / dr; src->base.constants[2] = 1. / dr; src->base.constants[3] = -r1 / dr; src->base.constants_size = 4; src->base.mode = RADIAL_ONE; } else { - src->base.constants[0] = -_cairo_fixed_to_double (radial->c1.x); - src->base.constants[1] = -_cairo_fixed_to_double (radial->c1.y); + src->base.constants[0] = -radial->cd1.center.x; + src->base.constants[1] = -radial->cd1.center.y; src->base.constants[2] = r1; src->base.constants[3] = -4 * (dx*dx + dy*dy - dr*dr); diff --git a/src/drm/cairo-drm-i965-surface.c b/src/drm/cairo-drm-i965-surface.c index e578d6f..3947836 100644 --- a/src/drm/cairo-drm-i965-surface.c +++ b/src/drm/cairo-drm-i965-surface.c @@ -1322,7 +1322,7 @@ i965_surface_stroke (void *abstract_dst, return status; } - if (path->is_rectilinear) { + if (_cairo_path_fixed_stroke_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -1343,8 +1343,7 @@ i965_surface_stroke (void *abstract_dst, goto CLEANUP_BOXES; } - _cairo_polygon_init (&info.polygon); - _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_stroke_to_polygon (path, stroke_style, @@ -1429,9 +1428,9 @@ i965_surface_fill (void *abstract_dst, return status; } - assert (! path->is_empty_fill); + assert (! _cairo_path_fixed_fill_is_empty (path)); - if (_cairo_path_fixed_is_rectilinear_fill (path)) { + if (_cairo_path_fixed_fill_is_rectilinear (path)) { cairo_boxes_t boxes; _cairo_boxes_init (&boxes); @@ -1451,8 +1450,7 @@ i965_surface_fill (void *abstract_dst, goto CLEANUP_BOXES; } - _cairo_polygon_init (&info.polygon); - _cairo_polygon_limit (&info.polygon, clip_boxes, num_boxes); + _cairo_polygon_init (&info.polygon, clip_boxes, num_boxes); status = _cairo_path_fixed_fill_to_polygon (path, tolerance, &info.polygon); if (unlikely (status)) diff --git a/src/drm/cairo-drm-intel-private.h b/src/drm/cairo-drm-intel-private.h index aaba13d..7fe3623 100644 --- a/src/drm/cairo-drm-intel-private.h +++ b/src/drm/cairo-drm-intel-private.h @@ -67,7 +67,6 @@ typedef struct _intel_bo { uint32_t full_size; uint16_t stride; uint16_t _stride; - uint32_t bucket :4; uint32_t tiling :4; uint32_t _tiling :4; uint32_t purgeable :1; @@ -191,16 +190,7 @@ typedef struct _intel_device { size_t gtt_max_size; size_t gtt_avail_size; - cairo_mutex_t bo_mutex; cairo_freepool_t bo_pool; - struct _intel_bo_cache { - cairo_list_t list; - uint16_t min_entries; - uint16_t num_entries; - } bo_cache[INTEL_BO_CACHE_BUCKETS]; - size_t bo_cache_size; - size_t bo_max_cache_size_high; - size_t bo_max_cache_size_low; cairo_list_t bo_in_flight; cairo_mutex_t mutex; diff --git a/src/drm/cairo-drm-intel.c b/src/drm/cairo-drm-intel.c index ab139d5..d45155e 100644 --- a/src/drm/cairo-drm-intel.c +++ b/src/drm/cairo-drm-intel.c @@ -286,21 +286,6 @@ pot (int v) return v; } -static void -intel_bo_cache_remove (intel_device_t *device, - intel_bo_t *bo, - int bucket) -{ - _cairo_drm_bo_close (&device->base, &bo->base); - - cairo_list_del (&bo->cache_list); - - device->bo_cache[bucket].num_entries--; - device->bo_cache_size -= 4096 * (1 << bucket); - - _cairo_freepool_free (&device->bo_pool, bo); -} - cairo_bool_t intel_bo_madvise (intel_device_t *device, intel_bo_t *bo, @@ -345,25 +330,6 @@ intel_bo_set_real_size (intel_device_t *device, } } -static void -intel_bo_cache_purge (intel_device_t *device) -{ - int bucket; - - for (bucket = 0; bucket < INTEL_BO_CACHE_BUCKETS; bucket++) { - intel_bo_t *bo, *next; - - cairo_list_foreach_entry_safe (bo, next, - intel_bo_t, - &device->bo_cache[bucket].list, - cache_list) - { - if (! intel_bo_madvise (device, bo, I915_MADV_DONTNEED)) - intel_bo_cache_remove (device, bo, bucket); - } - } -} - intel_bo_t * intel_bo_create (intel_device_t *device, uint32_t max_size, @@ -418,98 +384,10 @@ intel_bo_create (intel_device_t *device, } } - bo = NULL; - - CAIRO_MUTEX_LOCK (device->bo_mutex); - if (bucket < INTEL_BO_CACHE_BUCKETS) { - int loop = MIN (3, INTEL_BO_CACHE_BUCKETS - bucket); - /* Our goal is to avoid clflush which occur on CPU->GPU - * transitions, so we want to minimise reusing CPU - * write buffers. However, by the time a buffer is freed - * it is most likely in the GPU domain anyway (readback is rare!). - */ - do { - if (gpu_target) { - intel_bo_t *next; - - cairo_list_foreach_entry_reverse_safe (bo, next, - intel_bo_t, - &device->bo_cache[bucket].list, - cache_list) - { - if (real_size > bo->base.size) - continue; - - /* For a gpu target, by the time our batch fires, the - * GPU will have finished using this buffer. However, - * changing tiling may require a fence deallocation and - * cause serialisation... - */ - - if (tiling && bo->_tiling && - (bo->_tiling != tiling || bo->_stride != stride)) - { - continue; - } - - device->bo_cache[bucket].num_entries--; - device->bo_cache_size -= 4096 * (1 << bucket); - cairo_list_del (&bo->cache_list); - - if (! intel_bo_madvise (device, bo, I915_MADV_WILLNEED)) { - _cairo_drm_bo_close (&device->base, &bo->base); - _cairo_freepool_free (&device->bo_pool, bo); - } else - goto INIT; - } - } - - while (! cairo_list_is_empty (&device->bo_cache[bucket].list)) { - bo = cairo_list_first_entry (&device->bo_cache[bucket].list, - intel_bo_t, cache_list); - if (intel_bo_is_inactive (device, bo)) { - device->bo_cache[bucket].num_entries--; - device->bo_cache_size -= 4096 * (1 << bucket); - cairo_list_del (&bo->cache_list); - - if (! intel_bo_madvise (device, bo, I915_MADV_WILLNEED)) { - _cairo_drm_bo_close (&device->base, &bo->base); - _cairo_freepool_free (&device->bo_pool, bo); - } else - goto SIZE; - } else - break; - } - } while (--loop && ++bucket); - } - - if (device->bo_cache_size > device->bo_max_cache_size_high) { - cairo_bool_t not_empty; - - intel_bo_cache_purge (device); - - /* trim caches by discarding the most recent buffer in each bucket */ - do { - not_empty = FALSE; - for (bucket = INTEL_BO_CACHE_BUCKETS; bucket--; ) { - if (device->bo_cache[bucket].num_entries > - device->bo_cache[bucket].min_entries) - { - bo = cairo_list_last_entry (&device->bo_cache[bucket].list, - intel_bo_t, cache_list); - - intel_bo_cache_remove (device, bo, bucket); - not_empty = TRUE; - } - } - } while (not_empty && device->bo_cache_size > device->bo_max_cache_size_low); - } - /* no cached buffer available, allocate fresh */ bo = _cairo_freepool_alloc (&device->bo_pool); if (unlikely (bo == NULL)) { _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - CAIRO_MUTEX_UNLOCK (device->bo_mutex); return bo; } @@ -521,10 +399,6 @@ intel_bo_create (intel_device_t *device, bo->virtual = NULL; bo->cpu = TRUE; - bucket = ffs (cache_size / 4096) - 1; - if (bucket > INTEL_BO_CACHE_BUCKETS) - bucket = INTEL_BO_CACHE_BUCKETS; - bo->bucket = bucket; bo->_tiling = I915_TILING_NONE; bo->_stride = 0; bo->purgeable = 0; @@ -544,18 +418,14 @@ intel_bo_create (intel_device_t *device, if (unlikely (ret != 0)) { _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); _cairo_freepool_free (&device->bo_pool, bo); - CAIRO_MUTEX_UNLOCK (device->bo_mutex); return NULL; } bo->base.handle = create.handle; bo->full_size = bo->base.size = create.size; -SIZE: intel_bo_set_real_size (device, bo, real_size); -INIT: CAIRO_REFERENCE_COUNT_INIT (&bo->base.ref_count, 1); - CAIRO_MUTEX_UNLOCK (device->bo_mutex); DONE: bo->tiling = tiling; bo->stride = stride; @@ -570,9 +440,7 @@ intel_bo_create_for_name (intel_device_t *device, uint32_t name) intel_bo_t *bo; int ret; - CAIRO_MUTEX_LOCK (device->bo_mutex); bo = _cairo_freepool_alloc (&device->bo_pool); - CAIRO_MUTEX_UNLOCK (device->bo_mutex); if (unlikely (bo == NULL)) { _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return NULL; @@ -591,7 +459,6 @@ intel_bo_create_for_name (intel_device_t *device, uint32_t name) bo->purgeable = 0; bo->busy = TRUE; bo->cpu = FALSE; - bo->bucket = INTEL_BO_CACHE_BUCKETS; bo->opaque0 = 0; bo->opaque1 = 0; @@ -617,9 +484,7 @@ intel_bo_create_for_name (intel_device_t *device, uint32_t name) return bo; FAIL: - CAIRO_MUTEX_LOCK (device->bo_mutex); _cairo_freepool_free (&device->bo_pool, bo); - CAIRO_MUTEX_UNLOCK (device->bo_mutex); return NULL; } @@ -628,7 +493,6 @@ intel_bo_release (void *_dev, void *_bo) { intel_device_t *device = _dev; intel_bo_t *bo = _bo; - int bucket; if (bo->virtual != NULL) intel_bo_unmap (bo); @@ -636,27 +500,8 @@ intel_bo_release (void *_dev, void *_bo) assert (bo->exec == NULL); assert (cairo_list_is_empty (&bo->cache_list)); - bucket = bo->bucket; - - CAIRO_MUTEX_LOCK (device->bo_mutex); - if (bo->base.name == 0 && - bucket < INTEL_BO_CACHE_BUCKETS && - intel_bo_madvise (device, bo, I915_MADV_DONTNEED)) - { - device->bo_cache[bucket].num_entries++; - device->bo_cache_size += 4096 * (1 << bucket); - - if (bo->busy) - cairo_list_add_tail (&bo->cache_list, &device->bo_cache[bucket].list); - else - cairo_list_add (&bo->cache_list, &device->bo_cache[bucket].list); - } - else - { - _cairo_drm_bo_close (&device->base, &bo->base); - _cairo_freepool_free (&device->bo_pool, bo); - } - CAIRO_MUTEX_UNLOCK (device->bo_mutex); + _cairo_drm_bo_close (&device->base, &bo->base); + _cairo_freepool_free (&device->bo_pool, bo); } void @@ -869,36 +714,6 @@ intel_bo_put_image (intel_device_t *device, return CAIRO_STATUS_SUCCESS; } -static void -_intel_device_init_bo_cache (intel_device_t *device) -{ - int i; - - CAIRO_MUTEX_INIT (device->bo_mutex); - device->bo_cache_size = 0; - device->bo_max_cache_size_high = device->gtt_max_size / 2; - device->bo_max_cache_size_low = device->gtt_max_size / 4; - cairo_list_init (&device->bo_in_flight); - - for (i = 0; i < INTEL_BO_CACHE_BUCKETS; i++) { - struct _intel_bo_cache *cache = &device->bo_cache[i]; - - cairo_list_init (&cache->list); - - /* 256*4k ... 4*16MiB */ - if (i <= 6) - cache->min_entries = 1 << (6 - i); - else - cache->min_entries = 0; - cache->num_entries = 0; - } - - _cairo_freepool_init (&device->bo_pool, sizeof (intel_bo_t)); - - device->base.surface.flink = _cairo_drm_surface_flink; - device->base.surface.map_to_image = intel_surface_map_to_image; -} - static cairo_bool_t _intel_snapshot_cache_entry_can_remove (const void *closure) { @@ -934,8 +749,6 @@ intel_device_init (intel_device_t *device, int fd) device->gtt_avail_size = aperture.aper_available_size; device->gtt_avail_size -= device->gtt_avail_size >> 5; - _intel_device_init_bo_cache (device); - size = aperture.aper_size / 8; device->snapshot_cache_max_size = size / 4; status = _cairo_cache_init (&device->snapshot_cache, @@ -959,23 +772,6 @@ intel_device_init (intel_device_t *device, int fd) return CAIRO_STATUS_SUCCESS; } -static void -_intel_bo_cache_fini (intel_device_t *device) -{ - int bucket; - - for (bucket = 0; bucket < INTEL_BO_CACHE_BUCKETS; bucket++) { - struct _intel_bo_cache *cache = &device->bo_cache[bucket]; - intel_bo_t *bo; - - cairo_list_foreach_entry (bo, intel_bo_t, &cache->list, cache_list) - _cairo_drm_bo_close (&device->base, &bo->base); - } - - _cairo_freepool_fini (&device->bo_pool); - CAIRO_MUTEX_FINI (device->bo_mutex); -} - static void _intel_gradient_cache_fini (intel_device_t *device) { @@ -1020,7 +816,7 @@ intel_device_fini (intel_device_t *device) _cairo_cache_fini (&device->snapshot_cache); _intel_gradient_cache_fini (device); - _intel_bo_cache_fini (device); + _cairo_freepool_fini (&device->bo_pool); _cairo_drm_device_fini (&device->base); } diff --git a/src/glew/GL/glew.h b/src/glew/GL/glew.h deleted file mode 100644 index 86e0600..0000000 --- a/src/glew/GL/glew.h +++ /dev/null @@ -1,12255 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -//#include "cairo.h" /* keep distcheck happy */ - -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#ifndef __glew_h__ -#define __glew_h__ -#define __GLEW_H__ - -#if defined(__gl_h_) || defined(__GL_H__) || defined(__X_GL_H) -#error gl.h included before glew.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error glext.h included before glew.h -#endif -#if defined(__gl_ATI_h_) -#error glATI.h included before glew.h -#endif - -#define __gl_h_ -#define __GL_H__ -#define __X_GL_H -#define __glext_h_ -#define __GLEXT_H_ -#define __gl_ATI_h_ - -#if defined(_WIN32) - -/* - * GLEW does not include to avoid name space pollution. - * GL needs GLAPI and GLAPIENTRY, GLU needs APIENTRY, CALLBACK, and wchar_t - * defined properly. - */ -/* */ -#ifndef APIENTRY -#define GLEW_APIENTRY_DEFINED -# if defined(__MINGW32__) -# define APIENTRY __stdcall -# elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) -# define APIENTRY __stdcall -# else -# define APIENTRY -# endif -#endif -#ifndef GLAPI -# if defined(__MINGW32__) -# define GLAPI extern -# endif -#endif -/* */ -#ifndef CALLBACK -#define GLEW_CALLBACK_DEFINED -# if defined(__MINGW32__) -# define CALLBACK __attribute__ ((__stdcall__)) -# elif (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) -# define CALLBACK __stdcall -# else -# define CALLBACK -# endif -#endif -/* and */ -#ifndef WINGDIAPI -#define GLEW_WINGDIAPI_DEFINED -#define WINGDIAPI __declspec(dllimport) -#endif -/* */ -#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(_WCHAR_T_DEFINED) -typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -#endif -/* */ -#if !defined(_W64) -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && defined(_MSC_VER) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif -#if !defined(_PTRDIFF_T_DEFINED) && !defined(_PTRDIFF_T_) -# ifdef _WIN64 -typedef __int64 ptrdiff_t; -# else -typedef _W64 int ptrdiff_t; -# endif -# define _PTRDIFF_T_DEFINED -# define _PTRDIFF_T_ -#endif - -#ifndef GLAPI -# if defined(__MINGW32__) -# define GLAPI extern -# else -# define GLAPI WINGDIAPI -# endif -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY APIENTRY -#endif - -/* - * GLEW_STATIC needs to be set when using the static version. - * GLEW_BUILD is set when building the DLL version. - */ -#ifdef GLEW_STATIC -# define GLEWAPI extern -#else -# ifdef GLEW_BUILD -# define GLEWAPI extern __declspec(dllexport) -# else -# define GLEWAPI extern __declspec(dllimport) -# endif -#endif - -#else /* _UNIX */ - -/* - * Needed for ptrdiff_t in turn needed by VBO. This is defined by ISO - * C. On my system, this amounts to _3 lines_ of included code, all of - * them pretty much harmless. If you know of a way of detecting 32 vs - * 64 _targets_ at compile time you are free to replace this with - * something that's portable. For now, _this_ is the portable solution. - * (mem, 2004-01-04) - */ - -#include -#include - -#define GLEW_APIENTRY_DEFINED -#define APIENTRY -#define GLEWAPI extern - -#ifndef GLAPI -#define GLAPI extern -#endif -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#endif /* _WIN32 */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* ----------------------------- GL_VERSION_1_1 ---------------------------- */ - -#ifndef GL_VERSION_1_1 -#define GL_VERSION_1_1 1 - -typedef unsigned int GLenum; -typedef unsigned int GLbitfield; -typedef unsigned int GLuint; -typedef int GLint; -typedef int GLsizei; -typedef unsigned char GLboolean; -typedef signed char GLbyte; -typedef short GLshort; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLulong; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; -#if defined(_MSC_VER) -# if _MSC_VER < 1400 -typedef __int64 GLint64EXT; -typedef unsigned __int64 GLuint64EXT; -# else -typedef signed long long GLint64EXT; -typedef unsigned long long GLuint64EXT; -# endif -#else -# if defined(__MINGW32__) -#include -# endif -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#endif - -#define GL_ACCUM 0x0100 -#define GL_LOAD 0x0101 -#define GL_RETURN 0x0102 -#define GL_MULT 0x0103 -#define GL_ADD 0x0104 -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000fffff -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 -#define GL_TRUE 1 -#define GL_FALSE 0 -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A -#define GL_NONE 0 -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_NO_ERROR 0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_RANGE 0x0B12 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_RANGE 0x0B22 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LIST_MODE 0x0B30 -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_SHADE_MODEL 0x0B54 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_FOG 0x0B60 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_COLOR 0x0B66 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_MATRIX_MODE 0x0BA0 -#define GL_NORMALIZE 0x0BA1 -#define GL_VIEWPORT 0x0BA2 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_FUNC 0x0BC1 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_DITHER 0x0BD0 -#define GL_BLEND_DST 0x0BE0 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND 0x0BE2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_READ_BUFFER 0x0C02 -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_INDEX_MODE 0x0C30 -#define GL_RGBA_MODE 0x0C31 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_RENDER_MODE 0x0C40 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_INDEX_BITS 0x0D51 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_ALPHA_BITS 0x0D55 -#define GL_DEPTH_BITS 0x0D56 -#define GL_STENCIL_BITS 0x0D57 -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_CLEAR 0x1500 -#define GL_AND 0x1501 -#define GL_AND_REVERSE 0x1502 -#define GL_COPY 0x1503 -#define GL_AND_INVERTED 0x1504 -#define GL_NOOP 0x1505 -#define GL_XOR 0x1506 -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_EQUIV 0x1509 -#define GL_INVERT 0x150A -#define GL_OR_REVERSE 0x150B -#define GL_COPY_INVERTED 0x150C -#define GL_OR_INVERTED 0x150D -#define GL_NAND 0x150E -#define GL_SET 0x150F -#define GL_EMISSION 0x1600 -#define GL_SHININESS 0x1601 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_COLOR_INDEX 0x1900 -#define GL_STENCIL_INDEX 0x1901 -#define GL_DEPTH_COMPONENT 0x1902 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_BITMAP 0x1A00 -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_RENDER 0x1C00 -#define GL_FEEDBACK 0x1C01 -#define GL_SELECT 0x1C02 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_MODULATE 0x2100 -#define GL_DECAL 0x2101 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_ENV 0x2300 -#define GL_EYE_LINEAR 0x2400 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_SPHERE_MAP 0x2402 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_PLANE 0x2502 -#define GL_NEAREST 0x2600 -#define GL_LINEAR 0x2601 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_CLAMP 0x2900 -#define GL_REPEAT 0x2901 -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D -#define GL_LOGIC_OP GL_INDEX_LOGIC_OP -#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 - -GLAPI void GLAPIENTRY glAccum (GLenum op, GLfloat value); -GLAPI void GLAPIENTRY glAlphaFunc (GLenum func, GLclampf ref); -GLAPI GLboolean GLAPIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -GLAPI void GLAPIENTRY glArrayElement (GLint i); -GLAPI void GLAPIENTRY glBegin (GLenum mode); -GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture); -GLAPI void GLAPIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -GLAPI void GLAPIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); -GLAPI void GLAPIENTRY glCallList (GLuint list); -GLAPI void GLAPIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -GLAPI void GLAPIENTRY glClear (GLbitfield mask); -GLAPI void GLAPIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -GLAPI void GLAPIENTRY glClearDepth (GLclampd depth); -GLAPI void GLAPIENTRY glClearIndex (GLfloat c); -GLAPI void GLAPIENTRY glClearStencil (GLint s); -GLAPI void GLAPIENTRY glClipPlane (GLenum plane, const GLdouble *equation); -GLAPI void GLAPIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue); -GLAPI void GLAPIENTRY glColor3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue); -GLAPI void GLAPIENTRY glColor3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue); -GLAPI void GLAPIENTRY glColor3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor3i (GLint red, GLint green, GLint blue); -GLAPI void GLAPIENTRY glColor3iv (const GLint *v); -GLAPI void GLAPIENTRY glColor3s (GLshort red, GLshort green, GLshort blue); -GLAPI void GLAPIENTRY glColor3sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -GLAPI void GLAPIENTRY glColor3ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue); -GLAPI void GLAPIENTRY glColor3uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor3us (GLushort red, GLushort green, GLushort blue); -GLAPI void GLAPIENTRY glColor3usv (const GLushort *v); -GLAPI void GLAPIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -GLAPI void GLAPIENTRY glColor4bv (const GLbyte *v); -GLAPI void GLAPIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -GLAPI void GLAPIENTRY glColor4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -GLAPI void GLAPIENTRY glColor4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -GLAPI void GLAPIENTRY glColor4iv (const GLint *v); -GLAPI void GLAPIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -GLAPI void GLAPIENTRY glColor4sv (const GLshort *v); -GLAPI void GLAPIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -GLAPI void GLAPIENTRY glColor4ubv (const GLubyte *v); -GLAPI void GLAPIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -GLAPI void GLAPIENTRY glColor4uiv (const GLuint *v); -GLAPI void GLAPIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -GLAPI void GLAPIENTRY glColor4usv (const GLushort *v); -GLAPI void GLAPIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -GLAPI void GLAPIENTRY glColorMaterial (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -GLAPI void GLAPIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -GLAPI void GLAPIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -GLAPI void GLAPIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -GLAPI void GLAPIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glCullFace (GLenum mode); -GLAPI void GLAPIENTRY glDeleteLists (GLuint list, GLsizei range); -GLAPI void GLAPIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); -GLAPI void GLAPIENTRY glDepthFunc (GLenum func); -GLAPI void GLAPIENTRY glDepthMask (GLboolean flag); -GLAPI void GLAPIENTRY glDepthRange (GLclampd zNear, GLclampd zFar); -GLAPI void GLAPIENTRY glDisable (GLenum cap); -GLAPI void GLAPIENTRY glDisableClientState (GLenum array); -GLAPI void GLAPIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); -GLAPI void GLAPIENTRY glDrawBuffer (GLenum mode); -GLAPI void GLAPIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void GLAPIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glEdgeFlag (GLboolean flag); -GLAPI void GLAPIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glEdgeFlagv (const GLboolean *flag); -GLAPI void GLAPIENTRY glEnable (GLenum cap); -GLAPI void GLAPIENTRY glEnableClientState (GLenum array); -GLAPI void GLAPIENTRY glEnd (void); -GLAPI void GLAPIENTRY glEndList (void); -GLAPI void GLAPIENTRY glEvalCoord1d (GLdouble u); -GLAPI void GLAPIENTRY glEvalCoord1dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord1f (GLfloat u); -GLAPI void GLAPIENTRY glEvalCoord1fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalCoord2d (GLdouble u, GLdouble v); -GLAPI void GLAPIENTRY glEvalCoord2dv (const GLdouble *u); -GLAPI void GLAPIENTRY glEvalCoord2f (GLfloat u, GLfloat v); -GLAPI void GLAPIENTRY glEvalCoord2fv (const GLfloat *u); -GLAPI void GLAPIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -GLAPI void GLAPIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -GLAPI void GLAPIENTRY glEvalPoint1 (GLint i); -GLAPI void GLAPIENTRY glEvalPoint2 (GLint i, GLint j); -GLAPI void GLAPIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -GLAPI void GLAPIENTRY glFinish (void); -GLAPI void GLAPIENTRY glFlush (void); -GLAPI void GLAPIENTRY glFogf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glFogfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glFogi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glFogiv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glFrontFace (GLenum mode); -GLAPI void GLAPIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI GLuint GLAPIENTRY glGenLists (GLsizei range); -GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures); -GLAPI void GLAPIENTRY glGetBooleanv (GLenum pname, GLboolean *params); -GLAPI void GLAPIENTRY glGetClipPlane (GLenum plane, GLdouble *equation); -GLAPI void GLAPIENTRY glGetDoublev (GLenum pname, GLdouble *params); -GLAPI GLenum GLAPIENTRY glGetError (void); -GLAPI void GLAPIENTRY glGetFloatv (GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetIntegerv (GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v); -GLAPI void GLAPIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v); -GLAPI void GLAPIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v); -GLAPI void GLAPIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetPixelMapfv (GLenum map, GLfloat *values); -GLAPI void GLAPIENTRY glGetPixelMapuiv (GLenum map, GLuint *values); -GLAPI void GLAPIENTRY glGetPixelMapusv (GLenum map, GLushort *values); -GLAPI void GLAPIENTRY glGetPointerv (GLenum pname, GLvoid* *params); -GLAPI void GLAPIENTRY glGetPolygonStipple (GLubyte *mask); -GLAPI const GLubyte * GLAPIENTRY glGetString (GLenum name); -GLAPI void GLAPIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -GLAPI void GLAPIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -GLAPI void GLAPIENTRY glHint (GLenum target, GLenum mode); -GLAPI void GLAPIENTRY glIndexMask (GLuint mask); -GLAPI void GLAPIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glIndexd (GLdouble c); -GLAPI void GLAPIENTRY glIndexdv (const GLdouble *c); -GLAPI void GLAPIENTRY glIndexf (GLfloat c); -GLAPI void GLAPIENTRY glIndexfv (const GLfloat *c); -GLAPI void GLAPIENTRY glIndexi (GLint c); -GLAPI void GLAPIENTRY glIndexiv (const GLint *c); -GLAPI void GLAPIENTRY glIndexs (GLshort c); -GLAPI void GLAPIENTRY glIndexsv (const GLshort *c); -GLAPI void GLAPIENTRY glIndexub (GLubyte c); -GLAPI void GLAPIENTRY glIndexubv (const GLubyte *c); -GLAPI void GLAPIENTRY glInitNames (void); -GLAPI void GLAPIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -GLAPI GLboolean GLAPIENTRY glIsEnabled (GLenum cap); -GLAPI GLboolean GLAPIENTRY glIsList (GLuint list); -GLAPI GLboolean GLAPIENTRY glIsTexture (GLuint texture); -GLAPI void GLAPIENTRY glLightModelf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightModelfv (GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLightModeli (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightModeliv (GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glLighti (GLenum light, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glLineStipple (GLint factor, GLushort pattern); -GLAPI void GLAPIENTRY glLineWidth (GLfloat width); -GLAPI void GLAPIENTRY glListBase (GLuint base); -GLAPI void GLAPIENTRY glLoadIdentity (void); -GLAPI void GLAPIENTRY glLoadMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glLoadMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glLoadName (GLuint name); -GLAPI void GLAPIENTRY glLogicOp (GLenum opcode); -GLAPI void GLAPIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -GLAPI void GLAPIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -GLAPI void GLAPIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -GLAPI void GLAPIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -GLAPI void GLAPIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -GLAPI void GLAPIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -GLAPI void GLAPIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -GLAPI void GLAPIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -GLAPI void GLAPIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glMateriali (GLenum face, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glMatrixMode (GLenum mode); -GLAPI void GLAPIENTRY glMultMatrixd (const GLdouble *m); -GLAPI void GLAPIENTRY glMultMatrixf (const GLfloat *m); -GLAPI void GLAPIENTRY glNewList (GLuint list, GLenum mode); -GLAPI void GLAPIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -GLAPI void GLAPIENTRY glNormal3bv (const GLbyte *v); -GLAPI void GLAPIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -GLAPI void GLAPIENTRY glNormal3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -GLAPI void GLAPIENTRY glNormal3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glNormal3i (GLint nx, GLint ny, GLint nz); -GLAPI void GLAPIENTRY glNormal3iv (const GLint *v); -GLAPI void GLAPIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz); -GLAPI void GLAPIENTRY glNormal3sv (const GLshort *v); -GLAPI void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -GLAPI void GLAPIENTRY glPassThrough (GLfloat token); -GLAPI void GLAPIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values); -GLAPI void GLAPIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values); -GLAPI void GLAPIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values); -GLAPI void GLAPIENTRY glPixelStoref (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelStorei (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelTransferf (GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glPixelTransferi (GLenum pname, GLint param); -GLAPI void GLAPIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor); -GLAPI void GLAPIENTRY glPointSize (GLfloat size); -GLAPI void GLAPIENTRY glPolygonMode (GLenum face, GLenum mode); -GLAPI void GLAPIENTRY glPolygonOffset (GLfloat factor, GLfloat units); -GLAPI void GLAPIENTRY glPolygonStipple (const GLubyte *mask); -GLAPI void GLAPIENTRY glPopAttrib (void); -GLAPI void GLAPIENTRY glPopClientAttrib (void); -GLAPI void GLAPIENTRY glPopMatrix (void); -GLAPI void GLAPIENTRY glPopName (void); -GLAPI void GLAPIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -GLAPI void GLAPIENTRY glPushAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushClientAttrib (GLbitfield mask); -GLAPI void GLAPIENTRY glPushMatrix (void); -GLAPI void GLAPIENTRY glPushName (GLuint name); -GLAPI void GLAPIENTRY glRasterPos2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glRasterPos2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glRasterPos2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glRasterPos2iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glRasterPos2sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRasterPos3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glRasterPos3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glRasterPos3iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glRasterPos3sv (const GLshort *v); -GLAPI void GLAPIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glRasterPos4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glRasterPos4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glRasterPos4iv (const GLint *v); -GLAPI void GLAPIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glRasterPos4sv (const GLshort *v); -GLAPI void GLAPIENTRY glReadBuffer (GLenum mode); -GLAPI void GLAPIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -GLAPI void GLAPIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -GLAPI void GLAPIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2); -GLAPI void GLAPIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -GLAPI void GLAPIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2); -GLAPI void GLAPIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -GLAPI void GLAPIENTRY glRectiv (const GLint *v1, const GLint *v2); -GLAPI void GLAPIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -GLAPI void GLAPIENTRY glRectsv (const GLshort *v1, const GLshort *v2); -GLAPI GLint GLAPIENTRY glRenderMode (GLenum mode); -GLAPI void GLAPIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glSelectBuffer (GLsizei size, GLuint *buffer); -GLAPI void GLAPIENTRY glShadeModel (GLenum mode); -GLAPI void GLAPIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); -GLAPI void GLAPIENTRY glStencilMask (GLuint mask); -GLAPI void GLAPIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -GLAPI void GLAPIENTRY glTexCoord1d (GLdouble s); -GLAPI void GLAPIENTRY glTexCoord1dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord1f (GLfloat s); -GLAPI void GLAPIENTRY glTexCoord1fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord1i (GLint s); -GLAPI void GLAPIENTRY glTexCoord1iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord1s (GLshort s); -GLAPI void GLAPIENTRY glTexCoord1sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord2d (GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glTexCoord2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord2f (GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glTexCoord2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord2i (GLint s, GLint t); -GLAPI void GLAPIENTRY glTexCoord2iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord2s (GLshort s, GLshort t); -GLAPI void GLAPIENTRY glTexCoord2sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glTexCoord3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glTexCoord3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord3i (GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glTexCoord3iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glTexCoord3sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glTexCoord4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glTexCoord4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glTexCoord4iv (const GLint *v); -GLAPI void GLAPIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glTexCoord4sv (const GLshort *v); -GLAPI void GLAPIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param); -GLAPI void GLAPIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -GLAPI void GLAPIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); -GLAPI void GLAPIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); -GLAPI void GLAPIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -GLAPI void GLAPIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -GLAPI void GLAPIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex2d (GLdouble x, GLdouble y); -GLAPI void GLAPIENTRY glVertex2dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex2f (GLfloat x, GLfloat y); -GLAPI void GLAPIENTRY glVertex2fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex2i (GLint x, GLint y); -GLAPI void GLAPIENTRY glVertex2iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex2s (GLshort x, GLshort y); -GLAPI void GLAPIENTRY glVertex2sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z); -GLAPI void GLAPIENTRY glVertex3dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z); -GLAPI void GLAPIENTRY glVertex3fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex3i (GLint x, GLint y, GLint z); -GLAPI void GLAPIENTRY glVertex3iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex3s (GLshort x, GLshort y, GLshort z); -GLAPI void GLAPIENTRY glVertex3sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -GLAPI void GLAPIENTRY glVertex4dv (const GLdouble *v); -GLAPI void GLAPIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -GLAPI void GLAPIENTRY glVertex4fv (const GLfloat *v); -GLAPI void GLAPIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w); -GLAPI void GLAPIENTRY glVertex4iv (const GLint *v); -GLAPI void GLAPIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -GLAPI void GLAPIENTRY glVertex4sv (const GLshort *v); -GLAPI void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); - -#define GLEW_VERSION_1_1 GLEW_GET_VAR(__GLEW_VERSION_1_1) - -#endif /* GL_VERSION_1_1 */ - -/* ----------------------------- GL_VERSION_1_2 ---------------------------- */ - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 - -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_RESCALE_NORMAL 0x803A -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E - -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); - -#define glCopyTexSubImage3D GLEW_GET_FUN(__glewCopyTexSubImage3D) -#define glDrawRangeElements GLEW_GET_FUN(__glewDrawRangeElements) -#define glTexImage3D GLEW_GET_FUN(__glewTexImage3D) -#define glTexSubImage3D GLEW_GET_FUN(__glewTexSubImage3D) - -#define GLEW_VERSION_1_2 GLEW_GET_VAR(__GLEW_VERSION_1_2) - -#endif /* GL_VERSION_1_2 */ - -/* ----------------------------- GL_VERSION_1_3 ---------------------------- */ - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 - -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_SUBTRACT 0x84E7 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#define GL_MULTISAMPLE_BIT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); - -#define glActiveTexture GLEW_GET_FUN(__glewActiveTexture) -#define glClientActiveTexture GLEW_GET_FUN(__glewClientActiveTexture) -#define glCompressedTexImage1D GLEW_GET_FUN(__glewCompressedTexImage1D) -#define glCompressedTexImage2D GLEW_GET_FUN(__glewCompressedTexImage2D) -#define glCompressedTexImage3D GLEW_GET_FUN(__glewCompressedTexImage3D) -#define glCompressedTexSubImage1D GLEW_GET_FUN(__glewCompressedTexSubImage1D) -#define glCompressedTexSubImage2D GLEW_GET_FUN(__glewCompressedTexSubImage2D) -#define glCompressedTexSubImage3D GLEW_GET_FUN(__glewCompressedTexSubImage3D) -#define glGetCompressedTexImage GLEW_GET_FUN(__glewGetCompressedTexImage) -#define glLoadTransposeMatrixd GLEW_GET_FUN(__glewLoadTransposeMatrixd) -#define glLoadTransposeMatrixf GLEW_GET_FUN(__glewLoadTransposeMatrixf) -#define glMultTransposeMatrixd GLEW_GET_FUN(__glewMultTransposeMatrixd) -#define glMultTransposeMatrixf GLEW_GET_FUN(__glewMultTransposeMatrixf) -#define glMultiTexCoord1d GLEW_GET_FUN(__glewMultiTexCoord1d) -#define glMultiTexCoord1dv GLEW_GET_FUN(__glewMultiTexCoord1dv) -#define glMultiTexCoord1f GLEW_GET_FUN(__glewMultiTexCoord1f) -#define glMultiTexCoord1fv GLEW_GET_FUN(__glewMultiTexCoord1fv) -#define glMultiTexCoord1i GLEW_GET_FUN(__glewMultiTexCoord1i) -#define glMultiTexCoord1iv GLEW_GET_FUN(__glewMultiTexCoord1iv) -#define glMultiTexCoord1s GLEW_GET_FUN(__glewMultiTexCoord1s) -#define glMultiTexCoord1sv GLEW_GET_FUN(__glewMultiTexCoord1sv) -#define glMultiTexCoord2d GLEW_GET_FUN(__glewMultiTexCoord2d) -#define glMultiTexCoord2dv GLEW_GET_FUN(__glewMultiTexCoord2dv) -#define glMultiTexCoord2f GLEW_GET_FUN(__glewMultiTexCoord2f) -#define glMultiTexCoord2fv GLEW_GET_FUN(__glewMultiTexCoord2fv) -#define glMultiTexCoord2i GLEW_GET_FUN(__glewMultiTexCoord2i) -#define glMultiTexCoord2iv GLEW_GET_FUN(__glewMultiTexCoord2iv) -#define glMultiTexCoord2s GLEW_GET_FUN(__glewMultiTexCoord2s) -#define glMultiTexCoord2sv GLEW_GET_FUN(__glewMultiTexCoord2sv) -#define glMultiTexCoord3d GLEW_GET_FUN(__glewMultiTexCoord3d) -#define glMultiTexCoord3dv GLEW_GET_FUN(__glewMultiTexCoord3dv) -#define glMultiTexCoord3f GLEW_GET_FUN(__glewMultiTexCoord3f) -#define glMultiTexCoord3fv GLEW_GET_FUN(__glewMultiTexCoord3fv) -#define glMultiTexCoord3i GLEW_GET_FUN(__glewMultiTexCoord3i) -#define glMultiTexCoord3iv GLEW_GET_FUN(__glewMultiTexCoord3iv) -#define glMultiTexCoord3s GLEW_GET_FUN(__glewMultiTexCoord3s) -#define glMultiTexCoord3sv GLEW_GET_FUN(__glewMultiTexCoord3sv) -#define glMultiTexCoord4d GLEW_GET_FUN(__glewMultiTexCoord4d) -#define glMultiTexCoord4dv GLEW_GET_FUN(__glewMultiTexCoord4dv) -#define glMultiTexCoord4f GLEW_GET_FUN(__glewMultiTexCoord4f) -#define glMultiTexCoord4fv GLEW_GET_FUN(__glewMultiTexCoord4fv) -#define glMultiTexCoord4i GLEW_GET_FUN(__glewMultiTexCoord4i) -#define glMultiTexCoord4iv GLEW_GET_FUN(__glewMultiTexCoord4iv) -#define glMultiTexCoord4s GLEW_GET_FUN(__glewMultiTexCoord4s) -#define glMultiTexCoord4sv GLEW_GET_FUN(__glewMultiTexCoord4sv) -#define glSampleCoverage GLEW_GET_FUN(__glewSampleCoverage) - -#define GLEW_VERSION_1_3 GLEW_GET_VAR(__GLEW_VERSION_1_3) - -#endif /* GL_VERSION_1_3 */ - -/* ----------------------------- GL_VERSION_1_4 ---------------------------- */ - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 - -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_COMPARE_R_TO_TEXTURE 0x884E - -typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *p); - -#define glBlendColor GLEW_GET_FUN(__glewBlendColor) -#define glBlendEquation GLEW_GET_FUN(__glewBlendEquation) -#define glBlendFuncSeparate GLEW_GET_FUN(__glewBlendFuncSeparate) -#define glFogCoordPointer GLEW_GET_FUN(__glewFogCoordPointer) -#define glFogCoordd GLEW_GET_FUN(__glewFogCoordd) -#define glFogCoorddv GLEW_GET_FUN(__glewFogCoorddv) -#define glFogCoordf GLEW_GET_FUN(__glewFogCoordf) -#define glFogCoordfv GLEW_GET_FUN(__glewFogCoordfv) -#define glMultiDrawArrays GLEW_GET_FUN(__glewMultiDrawArrays) -#define glMultiDrawElements GLEW_GET_FUN(__glewMultiDrawElements) -#define glPointParameterf GLEW_GET_FUN(__glewPointParameterf) -#define glPointParameterfv GLEW_GET_FUN(__glewPointParameterfv) -#define glPointParameteri GLEW_GET_FUN(__glewPointParameteri) -#define glPointParameteriv GLEW_GET_FUN(__glewPointParameteriv) -#define glSecondaryColor3b GLEW_GET_FUN(__glewSecondaryColor3b) -#define glSecondaryColor3bv GLEW_GET_FUN(__glewSecondaryColor3bv) -#define glSecondaryColor3d GLEW_GET_FUN(__glewSecondaryColor3d) -#define glSecondaryColor3dv GLEW_GET_FUN(__glewSecondaryColor3dv) -#define glSecondaryColor3f GLEW_GET_FUN(__glewSecondaryColor3f) -#define glSecondaryColor3fv GLEW_GET_FUN(__glewSecondaryColor3fv) -#define glSecondaryColor3i GLEW_GET_FUN(__glewSecondaryColor3i) -#define glSecondaryColor3iv GLEW_GET_FUN(__glewSecondaryColor3iv) -#define glSecondaryColor3s GLEW_GET_FUN(__glewSecondaryColor3s) -#define glSecondaryColor3sv GLEW_GET_FUN(__glewSecondaryColor3sv) -#define glSecondaryColor3ub GLEW_GET_FUN(__glewSecondaryColor3ub) -#define glSecondaryColor3ubv GLEW_GET_FUN(__glewSecondaryColor3ubv) -#define glSecondaryColor3ui GLEW_GET_FUN(__glewSecondaryColor3ui) -#define glSecondaryColor3uiv GLEW_GET_FUN(__glewSecondaryColor3uiv) -#define glSecondaryColor3us GLEW_GET_FUN(__glewSecondaryColor3us) -#define glSecondaryColor3usv GLEW_GET_FUN(__glewSecondaryColor3usv) -#define glSecondaryColorPointer GLEW_GET_FUN(__glewSecondaryColorPointer) -#define glWindowPos2d GLEW_GET_FUN(__glewWindowPos2d) -#define glWindowPos2dv GLEW_GET_FUN(__glewWindowPos2dv) -#define glWindowPos2f GLEW_GET_FUN(__glewWindowPos2f) -#define glWindowPos2fv GLEW_GET_FUN(__glewWindowPos2fv) -#define glWindowPos2i GLEW_GET_FUN(__glewWindowPos2i) -#define glWindowPos2iv GLEW_GET_FUN(__glewWindowPos2iv) -#define glWindowPos2s GLEW_GET_FUN(__glewWindowPos2s) -#define glWindowPos2sv GLEW_GET_FUN(__glewWindowPos2sv) -#define glWindowPos3d GLEW_GET_FUN(__glewWindowPos3d) -#define glWindowPos3dv GLEW_GET_FUN(__glewWindowPos3dv) -#define glWindowPos3f GLEW_GET_FUN(__glewWindowPos3f) -#define glWindowPos3fv GLEW_GET_FUN(__glewWindowPos3fv) -#define glWindowPos3i GLEW_GET_FUN(__glewWindowPos3i) -#define glWindowPos3iv GLEW_GET_FUN(__glewWindowPos3iv) -#define glWindowPos3s GLEW_GET_FUN(__glewWindowPos3s) -#define glWindowPos3sv GLEW_GET_FUN(__glewWindowPos3sv) - -#define GLEW_VERSION_1_4 GLEW_GET_VAR(__GLEW_VERSION_1_4) - -#endif /* GL_VERSION_1_4 */ - -/* ----------------------------- GL_VERSION_1_5 ---------------------------- */ - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 - -#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE -#define GL_FOG_COORD GL_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY -#define GL_SRC0_RGB GL_SOURCE0_RGB -#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER -#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE -#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA -#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE -#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA -#define GL_SRC1_RGB GL_SOURCE1_RGB -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING -#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA -#define GL_SRC2_RGB GL_SOURCE2_RGB -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 - -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id); -typedef GLvoid* (GLAPIENTRY * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERPROC) (GLenum target); - -#define glBeginQuery GLEW_GET_FUN(__glewBeginQuery) -#define glBindBuffer GLEW_GET_FUN(__glewBindBuffer) -#define glBufferData GLEW_GET_FUN(__glewBufferData) -#define glBufferSubData GLEW_GET_FUN(__glewBufferSubData) -#define glDeleteBuffers GLEW_GET_FUN(__glewDeleteBuffers) -#define glDeleteQueries GLEW_GET_FUN(__glewDeleteQueries) -#define glEndQuery GLEW_GET_FUN(__glewEndQuery) -#define glGenBuffers GLEW_GET_FUN(__glewGenBuffers) -#define glGenQueries GLEW_GET_FUN(__glewGenQueries) -#define glGetBufferParameteriv GLEW_GET_FUN(__glewGetBufferParameteriv) -#define glGetBufferPointerv GLEW_GET_FUN(__glewGetBufferPointerv) -#define glGetBufferSubData GLEW_GET_FUN(__glewGetBufferSubData) -#define glGetQueryObjectiv GLEW_GET_FUN(__glewGetQueryObjectiv) -#define glGetQueryObjectuiv GLEW_GET_FUN(__glewGetQueryObjectuiv) -#define glGetQueryiv GLEW_GET_FUN(__glewGetQueryiv) -#define glIsBuffer GLEW_GET_FUN(__glewIsBuffer) -#define glIsQuery GLEW_GET_FUN(__glewIsQuery) -#define glMapBuffer GLEW_GET_FUN(__glewMapBuffer) -#define glUnmapBuffer GLEW_GET_FUN(__glewUnmapBuffer) - -#define GLEW_VERSION_1_5 GLEW_GET_VAR(__GLEW_VERSION_1_5) - -#endif /* GL_VERSION_1_5 */ - -/* ----------------------------- GL_VERSION_2_0 ---------------------------- */ - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 - -#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 - -typedef char GLchar; - -typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLint obj, GLsizei maxLength, GLsizei* length, GLchar* source); -typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVPROC) (GLuint, GLenum, GLdouble*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); - -#define glAttachShader GLEW_GET_FUN(__glewAttachShader) -#define glBindAttribLocation GLEW_GET_FUN(__glewBindAttribLocation) -#define glBlendEquationSeparate GLEW_GET_FUN(__glewBlendEquationSeparate) -#define glCompileShader GLEW_GET_FUN(__glewCompileShader) -#define glCreateProgram GLEW_GET_FUN(__glewCreateProgram) -#define glCreateShader GLEW_GET_FUN(__glewCreateShader) -#define glDeleteProgram GLEW_GET_FUN(__glewDeleteProgram) -#define glDeleteShader GLEW_GET_FUN(__glewDeleteShader) -#define glDetachShader GLEW_GET_FUN(__glewDetachShader) -#define glDisableVertexAttribArray GLEW_GET_FUN(__glewDisableVertexAttribArray) -#define glDrawBuffers GLEW_GET_FUN(__glewDrawBuffers) -#define glEnableVertexAttribArray GLEW_GET_FUN(__glewEnableVertexAttribArray) -#define glGetActiveAttrib GLEW_GET_FUN(__glewGetActiveAttrib) -#define glGetActiveUniform GLEW_GET_FUN(__glewGetActiveUniform) -#define glGetAttachedShaders GLEW_GET_FUN(__glewGetAttachedShaders) -#define glGetAttribLocation GLEW_GET_FUN(__glewGetAttribLocation) -#define glGetProgramInfoLog GLEW_GET_FUN(__glewGetProgramInfoLog) -#define glGetProgramiv GLEW_GET_FUN(__glewGetProgramiv) -#define glGetShaderInfoLog GLEW_GET_FUN(__glewGetShaderInfoLog) -#define glGetShaderSource GLEW_GET_FUN(__glewGetShaderSource) -#define glGetShaderiv GLEW_GET_FUN(__glewGetShaderiv) -#define glGetUniformLocation GLEW_GET_FUN(__glewGetUniformLocation) -#define glGetUniformfv GLEW_GET_FUN(__glewGetUniformfv) -#define glGetUniformiv GLEW_GET_FUN(__glewGetUniformiv) -#define glGetVertexAttribPointerv GLEW_GET_FUN(__glewGetVertexAttribPointerv) -#define glGetVertexAttribdv GLEW_GET_FUN(__glewGetVertexAttribdv) -#define glGetVertexAttribfv GLEW_GET_FUN(__glewGetVertexAttribfv) -#define glGetVertexAttribiv GLEW_GET_FUN(__glewGetVertexAttribiv) -#define glIsProgram GLEW_GET_FUN(__glewIsProgram) -#define glIsShader GLEW_GET_FUN(__glewIsShader) -#define glLinkProgram GLEW_GET_FUN(__glewLinkProgram) -#define glShaderSource GLEW_GET_FUN(__glewShaderSource) -#define glStencilFuncSeparate GLEW_GET_FUN(__glewStencilFuncSeparate) -#define glStencilMaskSeparate GLEW_GET_FUN(__glewStencilMaskSeparate) -#define glStencilOpSeparate GLEW_GET_FUN(__glewStencilOpSeparate) -#define glUniform1f GLEW_GET_FUN(__glewUniform1f) -#define glUniform1fv GLEW_GET_FUN(__glewUniform1fv) -#define glUniform1i GLEW_GET_FUN(__glewUniform1i) -#define glUniform1iv GLEW_GET_FUN(__glewUniform1iv) -#define glUniform2f GLEW_GET_FUN(__glewUniform2f) -#define glUniform2fv GLEW_GET_FUN(__glewUniform2fv) -#define glUniform2i GLEW_GET_FUN(__glewUniform2i) -#define glUniform2iv GLEW_GET_FUN(__glewUniform2iv) -#define glUniform3f GLEW_GET_FUN(__glewUniform3f) -#define glUniform3fv GLEW_GET_FUN(__glewUniform3fv) -#define glUniform3i GLEW_GET_FUN(__glewUniform3i) -#define glUniform3iv GLEW_GET_FUN(__glewUniform3iv) -#define glUniform4f GLEW_GET_FUN(__glewUniform4f) -#define glUniform4fv GLEW_GET_FUN(__glewUniform4fv) -#define glUniform4i GLEW_GET_FUN(__glewUniform4i) -#define glUniform4iv GLEW_GET_FUN(__glewUniform4iv) -#define glUniformMatrix2fv GLEW_GET_FUN(__glewUniformMatrix2fv) -#define glUniformMatrix3fv GLEW_GET_FUN(__glewUniformMatrix3fv) -#define glUniformMatrix4fv GLEW_GET_FUN(__glewUniformMatrix4fv) -#define glUseProgram GLEW_GET_FUN(__glewUseProgram) -#define glValidateProgram GLEW_GET_FUN(__glewValidateProgram) -#define glVertexAttrib1d GLEW_GET_FUN(__glewVertexAttrib1d) -#define glVertexAttrib1dv GLEW_GET_FUN(__glewVertexAttrib1dv) -#define glVertexAttrib1f GLEW_GET_FUN(__glewVertexAttrib1f) -#define glVertexAttrib1fv GLEW_GET_FUN(__glewVertexAttrib1fv) -#define glVertexAttrib1s GLEW_GET_FUN(__glewVertexAttrib1s) -#define glVertexAttrib1sv GLEW_GET_FUN(__glewVertexAttrib1sv) -#define glVertexAttrib2d GLEW_GET_FUN(__glewVertexAttrib2d) -#define glVertexAttrib2dv GLEW_GET_FUN(__glewVertexAttrib2dv) -#define glVertexAttrib2f GLEW_GET_FUN(__glewVertexAttrib2f) -#define glVertexAttrib2fv GLEW_GET_FUN(__glewVertexAttrib2fv) -#define glVertexAttrib2s GLEW_GET_FUN(__glewVertexAttrib2s) -#define glVertexAttrib2sv GLEW_GET_FUN(__glewVertexAttrib2sv) -#define glVertexAttrib3d GLEW_GET_FUN(__glewVertexAttrib3d) -#define glVertexAttrib3dv GLEW_GET_FUN(__glewVertexAttrib3dv) -#define glVertexAttrib3f GLEW_GET_FUN(__glewVertexAttrib3f) -#define glVertexAttrib3fv GLEW_GET_FUN(__glewVertexAttrib3fv) -#define glVertexAttrib3s GLEW_GET_FUN(__glewVertexAttrib3s) -#define glVertexAttrib3sv GLEW_GET_FUN(__glewVertexAttrib3sv) -#define glVertexAttrib4Nbv GLEW_GET_FUN(__glewVertexAttrib4Nbv) -#define glVertexAttrib4Niv GLEW_GET_FUN(__glewVertexAttrib4Niv) -#define glVertexAttrib4Nsv GLEW_GET_FUN(__glewVertexAttrib4Nsv) -#define glVertexAttrib4Nub GLEW_GET_FUN(__glewVertexAttrib4Nub) -#define glVertexAttrib4Nubv GLEW_GET_FUN(__glewVertexAttrib4Nubv) -#define glVertexAttrib4Nuiv GLEW_GET_FUN(__glewVertexAttrib4Nuiv) -#define glVertexAttrib4Nusv GLEW_GET_FUN(__glewVertexAttrib4Nusv) -#define glVertexAttrib4bv GLEW_GET_FUN(__glewVertexAttrib4bv) -#define glVertexAttrib4d GLEW_GET_FUN(__glewVertexAttrib4d) -#define glVertexAttrib4dv GLEW_GET_FUN(__glewVertexAttrib4dv) -#define glVertexAttrib4f GLEW_GET_FUN(__glewVertexAttrib4f) -#define glVertexAttrib4fv GLEW_GET_FUN(__glewVertexAttrib4fv) -#define glVertexAttrib4iv GLEW_GET_FUN(__glewVertexAttrib4iv) -#define glVertexAttrib4s GLEW_GET_FUN(__glewVertexAttrib4s) -#define glVertexAttrib4sv GLEW_GET_FUN(__glewVertexAttrib4sv) -#define glVertexAttrib4ubv GLEW_GET_FUN(__glewVertexAttrib4ubv) -#define glVertexAttrib4uiv GLEW_GET_FUN(__glewVertexAttrib4uiv) -#define glVertexAttrib4usv GLEW_GET_FUN(__glewVertexAttrib4usv) -#define glVertexAttribPointer GLEW_GET_FUN(__glewVertexAttribPointer) - -#define GLEW_VERSION_2_0 GLEW_GET_VAR(__GLEW_VERSION_2_0) - -#endif /* GL_VERSION_2_0 */ - -/* ----------------------------- GL_VERSION_2_1 ---------------------------- */ - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 - -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B - -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); - -#define glUniformMatrix2x3fv GLEW_GET_FUN(__glewUniformMatrix2x3fv) -#define glUniformMatrix2x4fv GLEW_GET_FUN(__glewUniformMatrix2x4fv) -#define glUniformMatrix3x2fv GLEW_GET_FUN(__glewUniformMatrix3x2fv) -#define glUniformMatrix3x4fv GLEW_GET_FUN(__glewUniformMatrix3x4fv) -#define glUniformMatrix4x2fv GLEW_GET_FUN(__glewUniformMatrix4x2fv) -#define glUniformMatrix4x3fv GLEW_GET_FUN(__glewUniformMatrix4x3fv) - -#define GLEW_VERSION_2_1 GLEW_GET_VAR(__GLEW_VERSION_2_1) - -#endif /* GL_VERSION_2_1 */ - -/* ----------------------------- GL_VERSION_3_0 ---------------------------- */ - -#ifndef GL_VERSION_3_0 -#define GL_VERSION_3_0 1 - -#define GL_MAX_CLIP_DISTANCES GL_MAX_CLIP_PLANES -#define GL_CLIP_DISTANCE5 GL_CLIP_PLANE5 -#define GL_CLIP_DISTANCE1 GL_CLIP_PLANE1 -#define GL_CLIP_DISTANCE3 GL_CLIP_PLANE3 -#define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_R_TO_TEXTURE_ARB -#define GL_CLIP_DISTANCE0 GL_CLIP_PLANE0 -#define GL_CLIP_DISTANCE4 GL_CLIP_PLANE4 -#define GL_CLIP_DISTANCE2 GL_CLIP_PLANE2 -#define GL_MAX_VARYING_COMPONENTS GL_MAX_VARYING_FLOATS -#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_DEPTH_BUFFER 0x8223 -#define GL_STENCIL_BUFFER 0x8224 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_ALPHA_INTEGER 0x8D97 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint, GLenum); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEPROC) (GLenum, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEPROC) (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint, GLuint, const GLchar*); -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORPROC) (GLenum, GLenum); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum, GLint, GLfloat, GLint); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum, GLint, const GLfloat*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum, GLint, const GLint*); -typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum, GLint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLCOLORMASKIPROC) (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -typedef void (GLAPIENTRY * PFNGLDISABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENABLEIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANI_VPROC) (GLenum, GLuint, GLboolean*); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint, const GLchar*); -typedef void (GLAPIENTRY * PFNGLGETINTEGERI_VPROC) (GLenum, GLuint, GLint*); -typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVPROC) (GLenum, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum, GLenum, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint, GLuint, GLint*); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint, GLint, GLuint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint, GLenum, GLint*); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint, GLenum, GLuint*); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDIPROC) (GLenum, GLuint); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVPROC) (GLenum, GLenum, const GLint*); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVPROC) (GLenum, GLenum, const GLuint*); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint, GLsizei, const GLint*, GLenum); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint, GLsizei, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IPROC) (GLuint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIPROC) (GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IPROC) (GLuint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIPROC) (GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IPROC) (GLuint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIPROC) (GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVPROC) (GLuint, const GLbyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint, GLint, GLint, GLint, GLint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint, const GLint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVPROC) (GLuint, const GLshort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint, const GLubyte*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint, GLuint, GLuint, GLuint, GLuint); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint, const GLuint*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVPROC) (GLuint, const GLushort*); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum, GLsizei, const GLvoid*); - -#define glBeginConditionalRender GLEW_GET_FUN(__glewBeginConditionalRender) -#define glBeginTransformFeedback GLEW_GET_FUN(__glewBeginTransformFeedback) -#define glBindBufferBase GLEW_GET_FUN(__glewBindBufferBase) -#define glBindBufferRange GLEW_GET_FUN(__glewBindBufferRange) -#define glBindFragDataLocation GLEW_GET_FUN(__glewBindFragDataLocation) -#define glClampColor GLEW_GET_FUN(__glewClampColor) -#define glClearBufferfi GLEW_GET_FUN(__glewClearBufferfi) -#define glClearBufferfv GLEW_GET_FUN(__glewClearBufferfv) -#define glClearBufferiv GLEW_GET_FUN(__glewClearBufferiv) -#define glClearBufferuiv GLEW_GET_FUN(__glewClearBufferuiv) -#define glColorMaski GLEW_GET_FUN(__glewColorMaski) -#define glDisablei GLEW_GET_FUN(__glewDisablei) -#define glEnablei GLEW_GET_FUN(__glewEnablei) -#define glEndConditionalRender GLEW_GET_FUN(__glewEndConditionalRender) -#define glEndTransformFeedback GLEW_GET_FUN(__glewEndTransformFeedback) -#define glGetBooleani_v GLEW_GET_FUN(__glewGetBooleani_v) -#define glGetFragDataLocation GLEW_GET_FUN(__glewGetFragDataLocation) -#define glGetIntegeri_v GLEW_GET_FUN(__glewGetIntegeri_v) -#define glGetStringi GLEW_GET_FUN(__glewGetStringi) -#define glGetTexParameterIiv GLEW_GET_FUN(__glewGetTexParameterIiv) -#define glGetTexParameterIuiv GLEW_GET_FUN(__glewGetTexParameterIuiv) -#define glGetTransformFeedbackVarying GLEW_GET_FUN(__glewGetTransformFeedbackVarying) -#define glGetUniformuiv GLEW_GET_FUN(__glewGetUniformuiv) -#define glGetVertexAttribIiv GLEW_GET_FUN(__glewGetVertexAttribIiv) -#define glGetVertexAttribIuiv GLEW_GET_FUN(__glewGetVertexAttribIuiv) -#define glIsEnabledi GLEW_GET_FUN(__glewIsEnabledi) -#define glTexParameterIiv GLEW_GET_FUN(__glewTexParameterIiv) -#define glTexParameterIuiv GLEW_GET_FUN(__glewTexParameterIuiv) -#define glTransformFeedbackVaryings GLEW_GET_FUN(__glewTransformFeedbackVaryings) -#define glUniform1ui GLEW_GET_FUN(__glewUniform1ui) -#define glUniform1uiv GLEW_GET_FUN(__glewUniform1uiv) -#define glUniform2ui GLEW_GET_FUN(__glewUniform2ui) -#define glUniform2uiv GLEW_GET_FUN(__glewUniform2uiv) -#define glUniform3ui GLEW_GET_FUN(__glewUniform3ui) -#define glUniform3uiv GLEW_GET_FUN(__glewUniform3uiv) -#define glUniform4ui GLEW_GET_FUN(__glewUniform4ui) -#define glUniform4uiv GLEW_GET_FUN(__glewUniform4uiv) -#define glVertexAttribI1i GLEW_GET_FUN(__glewVertexAttribI1i) -#define glVertexAttribI1iv GLEW_GET_FUN(__glewVertexAttribI1iv) -#define glVertexAttribI1ui GLEW_GET_FUN(__glewVertexAttribI1ui) -#define glVertexAttribI1uiv GLEW_GET_FUN(__glewVertexAttribI1uiv) -#define glVertexAttribI2i GLEW_GET_FUN(__glewVertexAttribI2i) -#define glVertexAttribI2iv GLEW_GET_FUN(__glewVertexAttribI2iv) -#define glVertexAttribI2ui GLEW_GET_FUN(__glewVertexAttribI2ui) -#define glVertexAttribI2uiv GLEW_GET_FUN(__glewVertexAttribI2uiv) -#define glVertexAttribI3i GLEW_GET_FUN(__glewVertexAttribI3i) -#define glVertexAttribI3iv GLEW_GET_FUN(__glewVertexAttribI3iv) -#define glVertexAttribI3ui GLEW_GET_FUN(__glewVertexAttribI3ui) -#define glVertexAttribI3uiv GLEW_GET_FUN(__glewVertexAttribI3uiv) -#define glVertexAttribI4bv GLEW_GET_FUN(__glewVertexAttribI4bv) -#define glVertexAttribI4i GLEW_GET_FUN(__glewVertexAttribI4i) -#define glVertexAttribI4iv GLEW_GET_FUN(__glewVertexAttribI4iv) -#define glVertexAttribI4sv GLEW_GET_FUN(__glewVertexAttribI4sv) -#define glVertexAttribI4ubv GLEW_GET_FUN(__glewVertexAttribI4ubv) -#define glVertexAttribI4ui GLEW_GET_FUN(__glewVertexAttribI4ui) -#define glVertexAttribI4uiv GLEW_GET_FUN(__glewVertexAttribI4uiv) -#define glVertexAttribI4usv GLEW_GET_FUN(__glewVertexAttribI4usv) -#define glVertexAttribIPointer GLEW_GET_FUN(__glewVertexAttribIPointer) - -#define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0) - -#endif /* GL_VERSION_3_0 */ - -/* -------------------------- GL_3DFX_multisample -------------------------- */ - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 - -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 - -#define GLEW_3DFX_multisample GLEW_GET_VAR(__GLEW_3DFX_multisample) - -#endif /* GL_3DFX_multisample */ - -/* ---------------------------- GL_3DFX_tbuffer ---------------------------- */ - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 - -typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); - -#define glTbufferMask3DFX GLEW_GET_FUN(__glewTbufferMask3DFX) - -#define GLEW_3DFX_tbuffer GLEW_GET_VAR(__GLEW_3DFX_tbuffer) - -#endif /* GL_3DFX_tbuffer */ - -/* -------------------- GL_3DFX_texture_compression_FXT1 ------------------- */ - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 - -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 - -#define GLEW_3DFX_texture_compression_FXT1 GLEW_GET_VAR(__GLEW_3DFX_texture_compression_FXT1) - -#endif /* GL_3DFX_texture_compression_FXT1 */ - -/* ------------------------ GL_APPLE_client_storage ------------------------ */ - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 - -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 - -#define GLEW_APPLE_client_storage GLEW_GET_VAR(__GLEW_APPLE_client_storage) - -#endif /* GL_APPLE_client_storage */ - -/* ------------------------- GL_APPLE_element_array ------------------------ */ - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 - -#define GL_ELEMENT_ARRAY_APPLE 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint* first, const GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint* first, const GLsizei *count, GLsizei primcount); - -#define glDrawElementArrayAPPLE GLEW_GET_FUN(__glewDrawElementArrayAPPLE) -#define glDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewDrawRangeElementArrayAPPLE) -#define glElementPointerAPPLE GLEW_GET_FUN(__glewElementPointerAPPLE) -#define glMultiDrawElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawElementArrayAPPLE) -#define glMultiDrawRangeElementArrayAPPLE GLEW_GET_FUN(__glewMultiDrawRangeElementArrayAPPLE) - -#define GLEW_APPLE_element_array GLEW_GET_VAR(__GLEW_APPLE_element_array) - -#endif /* GL_APPLE_element_array */ - -/* ----------------------------- GL_APPLE_fence ---------------------------- */ - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 - -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -typedef void (GLAPIENTRY * PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint* fences); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (GLAPIENTRY * PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); - -#define glDeleteFencesAPPLE GLEW_GET_FUN(__glewDeleteFencesAPPLE) -#define glFinishFenceAPPLE GLEW_GET_FUN(__glewFinishFenceAPPLE) -#define glFinishObjectAPPLE GLEW_GET_FUN(__glewFinishObjectAPPLE) -#define glGenFencesAPPLE GLEW_GET_FUN(__glewGenFencesAPPLE) -#define glIsFenceAPPLE GLEW_GET_FUN(__glewIsFenceAPPLE) -#define glSetFenceAPPLE GLEW_GET_FUN(__glewSetFenceAPPLE) -#define glTestFenceAPPLE GLEW_GET_FUN(__glewTestFenceAPPLE) -#define glTestObjectAPPLE GLEW_GET_FUN(__glewTestObjectAPPLE) - -#define GLEW_APPLE_fence GLEW_GET_VAR(__GLEW_APPLE_fence) - -#endif /* GL_APPLE_fence */ - -/* ------------------------- GL_APPLE_float_pixels ------------------------- */ - -#ifndef GL_APPLE_float_pixels -#define GL_APPLE_float_pixels 1 - -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F - -#define GLEW_APPLE_float_pixels GLEW_GET_VAR(__GLEW_APPLE_float_pixels) - -#endif /* GL_APPLE_float_pixels */ - -/* ---------------------- GL_APPLE_flush_buffer_range ---------------------- */ - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 - -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 - -typedef void (GLAPIENTRY * PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); - -#define glBufferParameteriAPPLE GLEW_GET_FUN(__glewBufferParameteriAPPLE) -#define glFlushMappedBufferRangeAPPLE GLEW_GET_FUN(__glewFlushMappedBufferRangeAPPLE) - -#define GLEW_APPLE_flush_buffer_range GLEW_GET_VAR(__GLEW_APPLE_flush_buffer_range) - -#endif /* GL_APPLE_flush_buffer_range */ - -/* ------------------------- GL_APPLE_pixel_buffer ------------------------- */ - -#ifndef GL_APPLE_pixel_buffer -#define GL_APPLE_pixel_buffer 1 - -#define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 - -#define GLEW_APPLE_pixel_buffer GLEW_GET_VAR(__GLEW_APPLE_pixel_buffer) - -#endif /* GL_APPLE_pixel_buffer */ - -/* ------------------------ GL_APPLE_specular_vector ----------------------- */ - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 - -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 - -#define GLEW_APPLE_specular_vector GLEW_GET_VAR(__GLEW_APPLE_specular_vector) - -#endif /* GL_APPLE_specular_vector */ - -/* ------------------------- GL_APPLE_texture_range ------------------------ */ - -#ifndef GL_APPLE_texture_range -#define GL_APPLE_texture_range 1 - -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); -typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid *pointer); - -#define glGetTexParameterPointervAPPLE GLEW_GET_FUN(__glewGetTexParameterPointervAPPLE) -#define glTextureRangeAPPLE GLEW_GET_FUN(__glewTextureRangeAPPLE) - -#define GLEW_APPLE_texture_range GLEW_GET_VAR(__GLEW_APPLE_texture_range) - -#endif /* GL_APPLE_texture_range */ - -/* ------------------------ GL_APPLE_transform_hint ------------------------ */ - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 - -#define GL_TRANSFORM_HINT_APPLE 0x85B1 - -#define GLEW_APPLE_transform_hint GLEW_GET_VAR(__GLEW_APPLE_transform_hint) - -#endif /* GL_APPLE_transform_hint */ - -/* ---------------------- GL_APPLE_vertex_array_object --------------------- */ - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); - -#define glBindVertexArrayAPPLE GLEW_GET_FUN(__glewBindVertexArrayAPPLE) -#define glDeleteVertexArraysAPPLE GLEW_GET_FUN(__glewDeleteVertexArraysAPPLE) -#define glGenVertexArraysAPPLE GLEW_GET_FUN(__glewGenVertexArraysAPPLE) -#define glIsVertexArrayAPPLE GLEW_GET_FUN(__glewIsVertexArrayAPPLE) - -#define GLEW_APPLE_vertex_array_object GLEW_GET_VAR(__GLEW_APPLE_vertex_array_object) - -#endif /* GL_APPLE_vertex_array_object */ - -/* ---------------------- GL_APPLE_vertex_array_range ---------------------- */ - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeAPPLE GLEW_GET_FUN(__glewFlushVertexArrayRangeAPPLE) -#define glVertexArrayParameteriAPPLE GLEW_GET_FUN(__glewVertexArrayParameteriAPPLE) -#define glVertexArrayRangeAPPLE GLEW_GET_FUN(__glewVertexArrayRangeAPPLE) - -#define GLEW_APPLE_vertex_array_range GLEW_GET_VAR(__GLEW_APPLE_vertex_array_range) - -#endif /* GL_APPLE_vertex_array_range */ - -/* --------------------------- GL_APPLE_ycbcr_422 -------------------------- */ - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 - -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB - -#define GLEW_APPLE_ycbcr_422 GLEW_GET_VAR(__GLEW_APPLE_ycbcr_422) - -#endif /* GL_APPLE_ycbcr_422 */ - -/* ----------------------- GL_ARB_color_buffer_float ----------------------- */ - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 - -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D - -typedef void (GLAPIENTRY * PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); - -#define glClampColorARB GLEW_GET_FUN(__glewClampColorARB) - -#define GLEW_ARB_color_buffer_float GLEW_GET_VAR(__GLEW_ARB_color_buffer_float) - -#endif /* GL_ARB_color_buffer_float */ - -/* ----------------------- GL_ARB_depth_buffer_float ----------------------- */ - -#ifndef GL_ARB_depth_buffer_float -#define GL_ARB_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD - -#define GLEW_ARB_depth_buffer_float GLEW_GET_VAR(__GLEW_ARB_depth_buffer_float) - -#endif /* GL_ARB_depth_buffer_float */ - -/* -------------------------- GL_ARB_depth_texture ------------------------- */ - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B - -#define GLEW_ARB_depth_texture GLEW_GET_VAR(__GLEW_ARB_depth_texture) - -#endif /* GL_ARB_depth_texture */ - -/* -------------------------- GL_ARB_draw_buffers -------------------------- */ - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersARB GLEW_GET_FUN(__glewDrawBuffersARB) - -#define GLEW_ARB_draw_buffers GLEW_GET_VAR(__GLEW_ARB_draw_buffers) - -#endif /* GL_ARB_draw_buffers */ - -/* ------------------------- GL_ARB_draw_instanced ------------------------- */ - -#ifndef GL_ARB_draw_instanced -#define GL_ARB_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); - -#define glDrawArraysInstancedARB GLEW_GET_FUN(__glewDrawArraysInstancedARB) -#define glDrawElementsInstancedARB GLEW_GET_FUN(__glewDrawElementsInstancedARB) - -#define GLEW_ARB_draw_instanced GLEW_GET_VAR(__GLEW_ARB_draw_instanced) - -#endif /* GL_ARB_draw_instanced */ - -/* ------------------------ GL_ARB_fragment_program ------------------------ */ - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 - -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 - -#define GLEW_ARB_fragment_program GLEW_GET_VAR(__GLEW_ARB_fragment_program) - -#endif /* GL_ARB_fragment_program */ - -/* --------------------- GL_ARB_fragment_program_shadow -------------------- */ - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 - -#define GLEW_ARB_fragment_program_shadow GLEW_GET_VAR(__GLEW_ARB_fragment_program_shadow) - -#endif /* GL_ARB_fragment_program_shadow */ - -/* ------------------------- GL_ARB_fragment_shader ------------------------ */ - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 - -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B - -#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader) - -#endif /* GL_ARB_fragment_shader */ - -/* ----------------------- GL_ARB_framebuffer_object ----------------------- */ - -#ifndef GL_ARB_framebuffer_object -#define GL_ARB_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 -#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 -#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 -#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 -#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 -#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 -#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 -#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_INDEX 0x8222 -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_SRGB 0x8C40 -#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target,GLenum attachment, GLuint texture,GLint level,GLint layer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebuffer GLEW_GET_FUN(__glewBindFramebuffer) -#define glBindRenderbuffer GLEW_GET_FUN(__glewBindRenderbuffer) -#define glBlitFramebuffer GLEW_GET_FUN(__glewBlitFramebuffer) -#define glCheckFramebufferStatus GLEW_GET_FUN(__glewCheckFramebufferStatus) -#define glDeleteFramebuffers GLEW_GET_FUN(__glewDeleteFramebuffers) -#define glDeleteRenderbuffers GLEW_GET_FUN(__glewDeleteRenderbuffers) -#define glFramebufferRenderbuffer GLEW_GET_FUN(__glewFramebufferRenderbuffer) -#define glFramebufferTextureLayer GLEW_GET_FUN(__glewFramebufferTextureLayer) -#define glFramebufferTexture1D GLEW_GET_FUN(__glewFramebufferTexture1D) -#define glFramebufferTexture2D GLEW_GET_FUN(__glewFramebufferTexture2D) -#define glFramebufferTexture3D GLEW_GET_FUN(__glewFramebufferTexture3D) -#define glGenFramebuffers GLEW_GET_FUN(__glewGenFramebuffers) -#define glGenRenderbuffers GLEW_GET_FUN(__glewGenRenderbuffers) -#define glGenerateMipmap GLEW_GET_FUN(__glewGenerateMipmap) -#define glGetFramebufferAttachmentParameteriv GLEW_GET_FUN(__glewGetFramebufferAttachmentParameteriv) -#define glGetRenderbufferParameteriv GLEW_GET_FUN(__glewGetRenderbufferParameteriv) -#define glIsFramebuffer GLEW_GET_FUN(__glewIsFramebuffer) -#define glIsRenderbuffer GLEW_GET_FUN(__glewIsRenderbuffer) -#define glRenderbufferStorage GLEW_GET_FUN(__glewRenderbufferStorage) -#define glRenderbufferStorageMultisample GLEW_GET_FUN(__glewRenderbufferStorageMultisample) - -#define GLEW_ARB_framebuffer_object GLEW_GET_VAR(__GLEW_ARB_framebuffer_object) - -#endif /* GL_ARB_framebuffer_object */ - -/* ------------------------ GL_ARB_framebuffer_sRGB ------------------------ */ - -#ifndef GL_ARB_framebuffer_sRGB -#define GL_ARB_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB 0x8DB9 - -#define GLEW_ARB_framebuffer_sRGB GLEW_GET_VAR(__GLEW_ARB_framebuffer_sRGB) - -#endif /* GL_ARB_framebuffer_sRGB */ - -/* ------------------------ GL_ARB_geometry_shader4 ------------------------ */ - -#ifndef GL_ARB_geometry_shader4 -#define GL_ARB_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_ARB 0xA -#define GL_LINE_STRIP_ADJACENCY_ARB 0xB -#define GL_TRIANGLES_ADJACENCY_ARB 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0xD -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureARB GLEW_GET_FUN(__glewFramebufferTextureARB) -#define glFramebufferTextureFaceARB GLEW_GET_FUN(__glewFramebufferTextureFaceARB) -#define glFramebufferTextureLayerARB GLEW_GET_FUN(__glewFramebufferTextureLayerARB) -#define glProgramParameteriARB GLEW_GET_FUN(__glewProgramParameteriARB) - -#define GLEW_ARB_geometry_shader4 GLEW_GET_VAR(__GLEW_ARB_geometry_shader4) - -#endif /* GL_ARB_geometry_shader4 */ - -/* ------------------------ GL_ARB_half_float_pixel ------------------------ */ - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 - -#define GL_HALF_FLOAT_ARB 0x140B - -#define GLEW_ARB_half_float_pixel GLEW_GET_VAR(__GLEW_ARB_half_float_pixel) - -#endif /* GL_ARB_half_float_pixel */ - -/* ------------------------ GL_ARB_half_float_vertex ----------------------- */ - -#ifndef GL_ARB_half_float_vertex -#define GL_ARB_half_float_vertex 1 - -#define GL_HALF_FLOAT 0x140B - -#define GLEW_ARB_half_float_vertex GLEW_GET_VAR(__GLEW_ARB_half_float_vertex) - -#endif /* GL_ARB_half_float_vertex */ - -/* ----------------------------- GL_ARB_imaging ---------------------------- */ - -#ifndef GL_ARB_imaging -#define GL_ARB_imaging 1 - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_IGNORE_BORDER 0x8150 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_WRAP_BORDER 0x8152 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); - -#define glColorSubTable GLEW_GET_FUN(__glewColorSubTable) -#define glColorTable GLEW_GET_FUN(__glewColorTable) -#define glColorTableParameterfv GLEW_GET_FUN(__glewColorTableParameterfv) -#define glColorTableParameteriv GLEW_GET_FUN(__glewColorTableParameteriv) -#define glConvolutionFilter1D GLEW_GET_FUN(__glewConvolutionFilter1D) -#define glConvolutionFilter2D GLEW_GET_FUN(__glewConvolutionFilter2D) -#define glConvolutionParameterf GLEW_GET_FUN(__glewConvolutionParameterf) -#define glConvolutionParameterfv GLEW_GET_FUN(__glewConvolutionParameterfv) -#define glConvolutionParameteri GLEW_GET_FUN(__glewConvolutionParameteri) -#define glConvolutionParameteriv GLEW_GET_FUN(__glewConvolutionParameteriv) -#define glCopyColorSubTable GLEW_GET_FUN(__glewCopyColorSubTable) -#define glCopyColorTable GLEW_GET_FUN(__glewCopyColorTable) -#define glCopyConvolutionFilter1D GLEW_GET_FUN(__glewCopyConvolutionFilter1D) -#define glCopyConvolutionFilter2D GLEW_GET_FUN(__glewCopyConvolutionFilter2D) -#define glGetColorTable GLEW_GET_FUN(__glewGetColorTable) -#define glGetColorTableParameterfv GLEW_GET_FUN(__glewGetColorTableParameterfv) -#define glGetColorTableParameteriv GLEW_GET_FUN(__glewGetColorTableParameteriv) -#define glGetConvolutionFilter GLEW_GET_FUN(__glewGetConvolutionFilter) -#define glGetConvolutionParameterfv GLEW_GET_FUN(__glewGetConvolutionParameterfv) -#define glGetConvolutionParameteriv GLEW_GET_FUN(__glewGetConvolutionParameteriv) -#define glGetHistogram GLEW_GET_FUN(__glewGetHistogram) -#define glGetHistogramParameterfv GLEW_GET_FUN(__glewGetHistogramParameterfv) -#define glGetHistogramParameteriv GLEW_GET_FUN(__glewGetHistogramParameteriv) -#define glGetMinmax GLEW_GET_FUN(__glewGetMinmax) -#define glGetMinmaxParameterfv GLEW_GET_FUN(__glewGetMinmaxParameterfv) -#define glGetMinmaxParameteriv GLEW_GET_FUN(__glewGetMinmaxParameteriv) -#define glGetSeparableFilter GLEW_GET_FUN(__glewGetSeparableFilter) -#define glHistogram GLEW_GET_FUN(__glewHistogram) -#define glMinmax GLEW_GET_FUN(__glewMinmax) -#define glResetHistogram GLEW_GET_FUN(__glewResetHistogram) -#define glResetMinmax GLEW_GET_FUN(__glewResetMinmax) -#define glSeparableFilter2D GLEW_GET_FUN(__glewSeparableFilter2D) - -#define GLEW_ARB_imaging GLEW_GET_VAR(__GLEW_ARB_imaging) - -#endif /* GL_ARB_imaging */ - -/* ------------------------ GL_ARB_instanced_arrays ------------------------ */ - -#ifndef GL_ARB_instanced_arrays -#define GL_ARB_instanced_arrays 1 - -#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE - -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); - -#define glVertexAttribDivisorARB GLEW_GET_FUN(__glewVertexAttribDivisorARB) - -#define GLEW_ARB_instanced_arrays GLEW_GET_VAR(__GLEW_ARB_instanced_arrays) - -#endif /* GL_ARB_instanced_arrays */ - -/* ------------------------ GL_ARB_map_buffer_range ------------------------ */ - -#ifndef GL_ARB_map_buffer_range -#define GL_ARB_map_buffer_range 1 - -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 - -typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); - -#define glFlushMappedBufferRange GLEW_GET_FUN(__glewFlushMappedBufferRange) -#define glMapBufferRange GLEW_GET_FUN(__glewMapBufferRange) - -#define GLEW_ARB_map_buffer_range GLEW_GET_VAR(__GLEW_ARB_map_buffer_range) - -#endif /* GL_ARB_map_buffer_range */ - -/* ------------------------- GL_ARB_matrix_palette ------------------------- */ - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 - -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 - -typedef void (GLAPIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, GLubyte *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, GLuint *indices); -typedef void (GLAPIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, GLushort *indices); - -#define glCurrentPaletteMatrixARB GLEW_GET_FUN(__glewCurrentPaletteMatrixARB) -#define glMatrixIndexPointerARB GLEW_GET_FUN(__glewMatrixIndexPointerARB) -#define glMatrixIndexubvARB GLEW_GET_FUN(__glewMatrixIndexubvARB) -#define glMatrixIndexuivARB GLEW_GET_FUN(__glewMatrixIndexuivARB) -#define glMatrixIndexusvARB GLEW_GET_FUN(__glewMatrixIndexusvARB) - -#define GLEW_ARB_matrix_palette GLEW_GET_VAR(__GLEW_ARB_matrix_palette) - -#endif /* GL_ARB_matrix_palette */ - -/* --------------------------- GL_ARB_multisample -------------------------- */ - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 - -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); - -#define glSampleCoverageARB GLEW_GET_FUN(__glewSampleCoverageARB) - -#define GLEW_ARB_multisample GLEW_GET_VAR(__GLEW_ARB_multisample) - -#endif /* GL_ARB_multisample */ - -/* -------------------------- GL_ARB_multitexture -------------------------- */ - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#define glActiveTextureARB GLEW_GET_FUN(__glewActiveTextureARB) -#define glClientActiveTextureARB GLEW_GET_FUN(__glewClientActiveTextureARB) -#define glMultiTexCoord1dARB GLEW_GET_FUN(__glewMultiTexCoord1dARB) -#define glMultiTexCoord1dvARB GLEW_GET_FUN(__glewMultiTexCoord1dvARB) -#define glMultiTexCoord1fARB GLEW_GET_FUN(__glewMultiTexCoord1fARB) -#define glMultiTexCoord1fvARB GLEW_GET_FUN(__glewMultiTexCoord1fvARB) -#define glMultiTexCoord1iARB GLEW_GET_FUN(__glewMultiTexCoord1iARB) -#define glMultiTexCoord1ivARB GLEW_GET_FUN(__glewMultiTexCoord1ivARB) -#define glMultiTexCoord1sARB GLEW_GET_FUN(__glewMultiTexCoord1sARB) -#define glMultiTexCoord1svARB GLEW_GET_FUN(__glewMultiTexCoord1svARB) -#define glMultiTexCoord2dARB GLEW_GET_FUN(__glewMultiTexCoord2dARB) -#define glMultiTexCoord2dvARB GLEW_GET_FUN(__glewMultiTexCoord2dvARB) -#define glMultiTexCoord2fARB GLEW_GET_FUN(__glewMultiTexCoord2fARB) -#define glMultiTexCoord2fvARB GLEW_GET_FUN(__glewMultiTexCoord2fvARB) -#define glMultiTexCoord2iARB GLEW_GET_FUN(__glewMultiTexCoord2iARB) -#define glMultiTexCoord2ivARB GLEW_GET_FUN(__glewMultiTexCoord2ivARB) -#define glMultiTexCoord2sARB GLEW_GET_FUN(__glewMultiTexCoord2sARB) -#define glMultiTexCoord2svARB GLEW_GET_FUN(__glewMultiTexCoord2svARB) -#define glMultiTexCoord3dARB GLEW_GET_FUN(__glewMultiTexCoord3dARB) -#define glMultiTexCoord3dvARB GLEW_GET_FUN(__glewMultiTexCoord3dvARB) -#define glMultiTexCoord3fARB GLEW_GET_FUN(__glewMultiTexCoord3fARB) -#define glMultiTexCoord3fvARB GLEW_GET_FUN(__glewMultiTexCoord3fvARB) -#define glMultiTexCoord3iARB GLEW_GET_FUN(__glewMultiTexCoord3iARB) -#define glMultiTexCoord3ivARB GLEW_GET_FUN(__glewMultiTexCoord3ivARB) -#define glMultiTexCoord3sARB GLEW_GET_FUN(__glewMultiTexCoord3sARB) -#define glMultiTexCoord3svARB GLEW_GET_FUN(__glewMultiTexCoord3svARB) -#define glMultiTexCoord4dARB GLEW_GET_FUN(__glewMultiTexCoord4dARB) -#define glMultiTexCoord4dvARB GLEW_GET_FUN(__glewMultiTexCoord4dvARB) -#define glMultiTexCoord4fARB GLEW_GET_FUN(__glewMultiTexCoord4fARB) -#define glMultiTexCoord4fvARB GLEW_GET_FUN(__glewMultiTexCoord4fvARB) -#define glMultiTexCoord4iARB GLEW_GET_FUN(__glewMultiTexCoord4iARB) -#define glMultiTexCoord4ivARB GLEW_GET_FUN(__glewMultiTexCoord4ivARB) -#define glMultiTexCoord4sARB GLEW_GET_FUN(__glewMultiTexCoord4sARB) -#define glMultiTexCoord4svARB GLEW_GET_FUN(__glewMultiTexCoord4svARB) - -#define GLEW_ARB_multitexture GLEW_GET_VAR(__GLEW_ARB_multitexture) - -#endif /* GL_ARB_multitexture */ - -/* ------------------------- GL_ARB_occlusion_query ------------------------ */ - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 - -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 - -typedef void (GLAPIENTRY * PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id); - -#define glBeginQueryARB GLEW_GET_FUN(__glewBeginQueryARB) -#define glDeleteQueriesARB GLEW_GET_FUN(__glewDeleteQueriesARB) -#define glEndQueryARB GLEW_GET_FUN(__glewEndQueryARB) -#define glGenQueriesARB GLEW_GET_FUN(__glewGenQueriesARB) -#define glGetQueryObjectivARB GLEW_GET_FUN(__glewGetQueryObjectivARB) -#define glGetQueryObjectuivARB GLEW_GET_FUN(__glewGetQueryObjectuivARB) -#define glGetQueryivARB GLEW_GET_FUN(__glewGetQueryivARB) -#define glIsQueryARB GLEW_GET_FUN(__glewIsQueryARB) - -#define GLEW_ARB_occlusion_query GLEW_GET_VAR(__GLEW_ARB_occlusion_query) - -#endif /* GL_ARB_occlusion_query */ - -/* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */ - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF - -#define GLEW_ARB_pixel_buffer_object GLEW_GET_VAR(__GLEW_ARB_pixel_buffer_object) - -#endif /* GL_ARB_pixel_buffer_object */ - -/* ------------------------ GL_ARB_point_parameters ------------------------ */ - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 - -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, GLfloat* params); - -#define glPointParameterfARB GLEW_GET_FUN(__glewPointParameterfARB) -#define glPointParameterfvARB GLEW_GET_FUN(__glewPointParameterfvARB) - -#define GLEW_ARB_point_parameters GLEW_GET_VAR(__GLEW_ARB_point_parameters) - -#endif /* GL_ARB_point_parameters */ - -/* -------------------------- GL_ARB_point_sprite -------------------------- */ - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 - -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 - -#define GLEW_ARB_point_sprite GLEW_GET_VAR(__GLEW_ARB_point_sprite) - -#endif /* GL_ARB_point_sprite */ - -/* ------------------------- GL_ARB_shader_objects ------------------------- */ - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 - -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 - -typedef char GLcharARB; -typedef unsigned int GLhandleARB; - -typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj); -typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source); -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params); -typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); - -#define glAttachObjectARB GLEW_GET_FUN(__glewAttachObjectARB) -#define glCompileShaderARB GLEW_GET_FUN(__glewCompileShaderARB) -#define glCreateProgramObjectARB GLEW_GET_FUN(__glewCreateProgramObjectARB) -#define glCreateShaderObjectARB GLEW_GET_FUN(__glewCreateShaderObjectARB) -#define glDeleteObjectARB GLEW_GET_FUN(__glewDeleteObjectARB) -#define glDetachObjectARB GLEW_GET_FUN(__glewDetachObjectARB) -#define glGetActiveUniformARB GLEW_GET_FUN(__glewGetActiveUniformARB) -#define glGetAttachedObjectsARB GLEW_GET_FUN(__glewGetAttachedObjectsARB) -#define glGetHandleARB GLEW_GET_FUN(__glewGetHandleARB) -#define glGetInfoLogARB GLEW_GET_FUN(__glewGetInfoLogARB) -#define glGetObjectParameterfvARB GLEW_GET_FUN(__glewGetObjectParameterfvARB) -#define glGetObjectParameterivARB GLEW_GET_FUN(__glewGetObjectParameterivARB) -#define glGetShaderSourceARB GLEW_GET_FUN(__glewGetShaderSourceARB) -#define glGetUniformLocationARB GLEW_GET_FUN(__glewGetUniformLocationARB) -#define glGetUniformfvARB GLEW_GET_FUN(__glewGetUniformfvARB) -#define glGetUniformivARB GLEW_GET_FUN(__glewGetUniformivARB) -#define glLinkProgramARB GLEW_GET_FUN(__glewLinkProgramARB) -#define glShaderSourceARB GLEW_GET_FUN(__glewShaderSourceARB) -#define glUniform1fARB GLEW_GET_FUN(__glewUniform1fARB) -#define glUniform1fvARB GLEW_GET_FUN(__glewUniform1fvARB) -#define glUniform1iARB GLEW_GET_FUN(__glewUniform1iARB) -#define glUniform1ivARB GLEW_GET_FUN(__glewUniform1ivARB) -#define glUniform2fARB GLEW_GET_FUN(__glewUniform2fARB) -#define glUniform2fvARB GLEW_GET_FUN(__glewUniform2fvARB) -#define glUniform2iARB GLEW_GET_FUN(__glewUniform2iARB) -#define glUniform2ivARB GLEW_GET_FUN(__glewUniform2ivARB) -#define glUniform3fARB GLEW_GET_FUN(__glewUniform3fARB) -#define glUniform3fvARB GLEW_GET_FUN(__glewUniform3fvARB) -#define glUniform3iARB GLEW_GET_FUN(__glewUniform3iARB) -#define glUniform3ivARB GLEW_GET_FUN(__glewUniform3ivARB) -#define glUniform4fARB GLEW_GET_FUN(__glewUniform4fARB) -#define glUniform4fvARB GLEW_GET_FUN(__glewUniform4fvARB) -#define glUniform4iARB GLEW_GET_FUN(__glewUniform4iARB) -#define glUniform4ivARB GLEW_GET_FUN(__glewUniform4ivARB) -#define glUniformMatrix2fvARB GLEW_GET_FUN(__glewUniformMatrix2fvARB) -#define glUniformMatrix3fvARB GLEW_GET_FUN(__glewUniformMatrix3fvARB) -#define glUniformMatrix4fvARB GLEW_GET_FUN(__glewUniformMatrix4fvARB) -#define glUseProgramObjectARB GLEW_GET_FUN(__glewUseProgramObjectARB) -#define glValidateProgramARB GLEW_GET_FUN(__glewValidateProgramARB) - -#define GLEW_ARB_shader_objects GLEW_GET_VAR(__GLEW_ARB_shader_objects) - -#endif /* GL_ARB_shader_objects */ - -/* ---------------------- GL_ARB_shading_language_100 ---------------------- */ - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 - -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C - -#define GLEW_ARB_shading_language_100 GLEW_GET_VAR(__GLEW_ARB_shading_language_100) - -#endif /* GL_ARB_shading_language_100 */ - -/* ----------------------------- GL_ARB_shadow ----------------------------- */ - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 - -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E - -#define GLEW_ARB_shadow GLEW_GET_VAR(__GLEW_ARB_shadow) - -#endif /* GL_ARB_shadow */ - -/* ------------------------- GL_ARB_shadow_ambient ------------------------- */ - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 - -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF - -#define GLEW_ARB_shadow_ambient GLEW_GET_VAR(__GLEW_ARB_shadow_ambient) - -#endif /* GL_ARB_shadow_ambient */ - -/* ---------------------- GL_ARB_texture_border_clamp ---------------------- */ - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_ARB 0x812D - -#define GLEW_ARB_texture_border_clamp GLEW_GET_VAR(__GLEW_ARB_texture_border_clamp) - -#endif /* GL_ARB_texture_border_clamp */ - -/* ---------------------- GL_ARB_texture_buffer_object --------------------- */ - -#ifndef GL_ARB_texture_buffer_object -#define GL_ARB_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferARB GLEW_GET_FUN(__glewTexBufferARB) - -#define GLEW_ARB_texture_buffer_object GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object) - -#endif /* GL_ARB_texture_buffer_object */ - -/* ----------------------- GL_ARB_texture_compression ---------------------- */ - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 - -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 - -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, void* img); - -#define glCompressedTexImage1DARB GLEW_GET_FUN(__glewCompressedTexImage1DARB) -#define glCompressedTexImage2DARB GLEW_GET_FUN(__glewCompressedTexImage2DARB) -#define glCompressedTexImage3DARB GLEW_GET_FUN(__glewCompressedTexImage3DARB) -#define glCompressedTexSubImage1DARB GLEW_GET_FUN(__glewCompressedTexSubImage1DARB) -#define glCompressedTexSubImage2DARB GLEW_GET_FUN(__glewCompressedTexSubImage2DARB) -#define glCompressedTexSubImage3DARB GLEW_GET_FUN(__glewCompressedTexSubImage3DARB) -#define glGetCompressedTexImageARB GLEW_GET_FUN(__glewGetCompressedTexImageARB) - -#define GLEW_ARB_texture_compression GLEW_GET_VAR(__GLEW_ARB_texture_compression) - -#endif /* GL_ARB_texture_compression */ - -/* -------------------- GL_ARB_texture_compression_rgtc -------------------- */ - -#ifndef GL_ARB_texture_compression_rgtc -#define GL_ARB_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE - -#define GLEW_ARB_texture_compression_rgtc GLEW_GET_VAR(__GLEW_ARB_texture_compression_rgtc) - -#endif /* GL_ARB_texture_compression_rgtc */ - -/* ------------------------ GL_ARB_texture_cube_map ------------------------ */ - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 - -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C - -#define GLEW_ARB_texture_cube_map GLEW_GET_VAR(__GLEW_ARB_texture_cube_map) - -#endif /* GL_ARB_texture_cube_map */ - -/* ------------------------- GL_ARB_texture_env_add ------------------------ */ - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 - -#define GLEW_ARB_texture_env_add GLEW_GET_VAR(__GLEW_ARB_texture_env_add) - -#endif /* GL_ARB_texture_env_add */ - -/* ----------------------- GL_ARB_texture_env_combine ---------------------- */ - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 - -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A - -#define GLEW_ARB_texture_env_combine GLEW_GET_VAR(__GLEW_ARB_texture_env_combine) - -#endif /* GL_ARB_texture_env_combine */ - -/* ---------------------- GL_ARB_texture_env_crossbar ---------------------- */ - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 - -#define GLEW_ARB_texture_env_crossbar GLEW_GET_VAR(__GLEW_ARB_texture_env_crossbar) - -#endif /* GL_ARB_texture_env_crossbar */ - -/* ------------------------ GL_ARB_texture_env_dot3 ------------------------ */ - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 - -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF - -#define GLEW_ARB_texture_env_dot3 GLEW_GET_VAR(__GLEW_ARB_texture_env_dot3) - -#endif /* GL_ARB_texture_env_dot3 */ - -/* -------------------------- GL_ARB_texture_float ------------------------- */ - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 - -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 - -#define GLEW_ARB_texture_float GLEW_GET_VAR(__GLEW_ARB_texture_float) - -#endif /* GL_ARB_texture_float */ - -/* --------------------- GL_ARB_texture_mirrored_repeat -------------------- */ - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_ARB 0x8370 - -#define GLEW_ARB_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_ARB_texture_mirrored_repeat) - -#endif /* GL_ARB_texture_mirrored_repeat */ - -/* -------------------- GL_ARB_texture_non_power_of_two -------------------- */ - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 - -#define GLEW_ARB_texture_non_power_of_two GLEW_GET_VAR(__GLEW_ARB_texture_non_power_of_two) - -#endif /* GL_ARB_texture_non_power_of_two */ - -/* ------------------------ GL_ARB_texture_rectangle ----------------------- */ - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 - -#define GLEW_ARB_texture_rectangle GLEW_GET_VAR(__GLEW_ARB_texture_rectangle) - -#endif /* GL_ARB_texture_rectangle */ - -/* --------------------------- GL_ARB_texture_rg --------------------------- */ - -#ifndef GL_ARB_texture_rg -#define GL_ARB_texture_rg 1 - -#define GL_RED 0x1903 -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C - -#define GLEW_ARB_texture_rg GLEW_GET_VAR(__GLEW_ARB_texture_rg) - -#endif /* GL_ARB_texture_rg */ - -/* ------------------------ GL_ARB_transpose_matrix ------------------------ */ - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 - -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 - -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (GLdouble m[16]); -typedef void (GLAPIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (GLfloat m[16]); - -#define glLoadTransposeMatrixdARB GLEW_GET_FUN(__glewLoadTransposeMatrixdARB) -#define glLoadTransposeMatrixfARB GLEW_GET_FUN(__glewLoadTransposeMatrixfARB) -#define glMultTransposeMatrixdARB GLEW_GET_FUN(__glewMultTransposeMatrixdARB) -#define glMultTransposeMatrixfARB GLEW_GET_FUN(__glewMultTransposeMatrixfARB) - -#define GLEW_ARB_transpose_matrix GLEW_GET_VAR(__GLEW_ARB_transpose_matrix) - -#endif /* GL_ARB_transpose_matrix */ - -/* ----------------------- GL_ARB_vertex_array_object ---------------------- */ - -#ifndef GL_ARB_vertex_array_object -#define GL_ARB_vertex_array_object 1 - -#define GL_VERTEX_ARRAY_BINDING 0x85B5 - -typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); -typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); -typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYPROC) (GLuint array); - -#define glBindVertexArray GLEW_GET_FUN(__glewBindVertexArray) -#define glDeleteVertexArrays GLEW_GET_FUN(__glewDeleteVertexArrays) -#define glGenVertexArrays GLEW_GET_FUN(__glewGenVertexArrays) -#define glIsVertexArray GLEW_GET_FUN(__glewIsVertexArray) - -#define GLEW_ARB_vertex_array_object GLEW_GET_VAR(__GLEW_ARB_vertex_array_object) - -#endif /* GL_ARB_vertex_array_object */ - -/* -------------------------- GL_ARB_vertex_blend -------------------------- */ - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 - -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F - -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); -typedef void (GLAPIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, GLbyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, GLdouble *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, GLfloat *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, GLint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, GLshort *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, GLubyte *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, GLuint *weights); -typedef void (GLAPIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, GLushort *weights); - -#define glVertexBlendARB GLEW_GET_FUN(__glewVertexBlendARB) -#define glWeightPointerARB GLEW_GET_FUN(__glewWeightPointerARB) -#define glWeightbvARB GLEW_GET_FUN(__glewWeightbvARB) -#define glWeightdvARB GLEW_GET_FUN(__glewWeightdvARB) -#define glWeightfvARB GLEW_GET_FUN(__glewWeightfvARB) -#define glWeightivARB GLEW_GET_FUN(__glewWeightivARB) -#define glWeightsvARB GLEW_GET_FUN(__glewWeightsvARB) -#define glWeightubvARB GLEW_GET_FUN(__glewWeightubvARB) -#define glWeightuivARB GLEW_GET_FUN(__glewWeightuivARB) -#define glWeightusvARB GLEW_GET_FUN(__glewWeightusvARB) - -#define GLEW_ARB_vertex_blend GLEW_GET_VAR(__GLEW_ARB_vertex_blend) - -#endif /* GL_ARB_vertex_blend */ - -/* ---------------------- GL_ARB_vertex_buffer_object ---------------------- */ - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 - -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA - -typedef ptrdiff_t GLsizeiptrARB; -typedef ptrdiff_t GLintptrARB; - -typedef void (GLAPIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid* data); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint* buffers); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid* data); -typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPBUFFERARBPROC) (GLenum target); - -#define glBindBufferARB GLEW_GET_FUN(__glewBindBufferARB) -#define glBufferDataARB GLEW_GET_FUN(__glewBufferDataARB) -#define glBufferSubDataARB GLEW_GET_FUN(__glewBufferSubDataARB) -#define glDeleteBuffersARB GLEW_GET_FUN(__glewDeleteBuffersARB) -#define glGenBuffersARB GLEW_GET_FUN(__glewGenBuffersARB) -#define glGetBufferParameterivARB GLEW_GET_FUN(__glewGetBufferParameterivARB) -#define glGetBufferPointervARB GLEW_GET_FUN(__glewGetBufferPointervARB) -#define glGetBufferSubDataARB GLEW_GET_FUN(__glewGetBufferSubDataARB) -#define glIsBufferARB GLEW_GET_FUN(__glewIsBufferARB) -#define glMapBufferARB GLEW_GET_FUN(__glewMapBufferARB) -#define glUnmapBufferARB GLEW_GET_FUN(__glewUnmapBufferARB) - -#define GLEW_ARB_vertex_buffer_object GLEW_GET_VAR(__GLEW_ARB_vertex_buffer_object) - -#endif /* GL_ARB_vertex_buffer_object */ - -/* ------------------------- GL_ARB_vertex_program ------------------------- */ - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 - -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF - -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint* programs); -typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint* programs); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer); - -#define glBindProgramARB GLEW_GET_FUN(__glewBindProgramARB) -#define glDeleteProgramsARB GLEW_GET_FUN(__glewDeleteProgramsARB) -#define glDisableVertexAttribArrayARB GLEW_GET_FUN(__glewDisableVertexAttribArrayARB) -#define glEnableVertexAttribArrayARB GLEW_GET_FUN(__glewEnableVertexAttribArrayARB) -#define glGenProgramsARB GLEW_GET_FUN(__glewGenProgramsARB) -#define glGetProgramEnvParameterdvARB GLEW_GET_FUN(__glewGetProgramEnvParameterdvARB) -#define glGetProgramEnvParameterfvARB GLEW_GET_FUN(__glewGetProgramEnvParameterfvARB) -#define glGetProgramLocalParameterdvARB GLEW_GET_FUN(__glewGetProgramLocalParameterdvARB) -#define glGetProgramLocalParameterfvARB GLEW_GET_FUN(__glewGetProgramLocalParameterfvARB) -#define glGetProgramStringARB GLEW_GET_FUN(__glewGetProgramStringARB) -#define glGetProgramivARB GLEW_GET_FUN(__glewGetProgramivARB) -#define glGetVertexAttribPointervARB GLEW_GET_FUN(__glewGetVertexAttribPointervARB) -#define glGetVertexAttribdvARB GLEW_GET_FUN(__glewGetVertexAttribdvARB) -#define glGetVertexAttribfvARB GLEW_GET_FUN(__glewGetVertexAttribfvARB) -#define glGetVertexAttribivARB GLEW_GET_FUN(__glewGetVertexAttribivARB) -#define glIsProgramARB GLEW_GET_FUN(__glewIsProgramARB) -#define glProgramEnvParameter4dARB GLEW_GET_FUN(__glewProgramEnvParameter4dARB) -#define glProgramEnvParameter4dvARB GLEW_GET_FUN(__glewProgramEnvParameter4dvARB) -#define glProgramEnvParameter4fARB GLEW_GET_FUN(__glewProgramEnvParameter4fARB) -#define glProgramEnvParameter4fvARB GLEW_GET_FUN(__glewProgramEnvParameter4fvARB) -#define glProgramLocalParameter4dARB GLEW_GET_FUN(__glewProgramLocalParameter4dARB) -#define glProgramLocalParameter4dvARB GLEW_GET_FUN(__glewProgramLocalParameter4dvARB) -#define glProgramLocalParameter4fARB GLEW_GET_FUN(__glewProgramLocalParameter4fARB) -#define glProgramLocalParameter4fvARB GLEW_GET_FUN(__glewProgramLocalParameter4fvARB) -#define glProgramStringARB GLEW_GET_FUN(__glewProgramStringARB) -#define glVertexAttrib1dARB GLEW_GET_FUN(__glewVertexAttrib1dARB) -#define glVertexAttrib1dvARB GLEW_GET_FUN(__glewVertexAttrib1dvARB) -#define glVertexAttrib1fARB GLEW_GET_FUN(__glewVertexAttrib1fARB) -#define glVertexAttrib1fvARB GLEW_GET_FUN(__glewVertexAttrib1fvARB) -#define glVertexAttrib1sARB GLEW_GET_FUN(__glewVertexAttrib1sARB) -#define glVertexAttrib1svARB GLEW_GET_FUN(__glewVertexAttrib1svARB) -#define glVertexAttrib2dARB GLEW_GET_FUN(__glewVertexAttrib2dARB) -#define glVertexAttrib2dvARB GLEW_GET_FUN(__glewVertexAttrib2dvARB) -#define glVertexAttrib2fARB GLEW_GET_FUN(__glewVertexAttrib2fARB) -#define glVertexAttrib2fvARB GLEW_GET_FUN(__glewVertexAttrib2fvARB) -#define glVertexAttrib2sARB GLEW_GET_FUN(__glewVertexAttrib2sARB) -#define glVertexAttrib2svARB GLEW_GET_FUN(__glewVertexAttrib2svARB) -#define glVertexAttrib3dARB GLEW_GET_FUN(__glewVertexAttrib3dARB) -#define glVertexAttrib3dvARB GLEW_GET_FUN(__glewVertexAttrib3dvARB) -#define glVertexAttrib3fARB GLEW_GET_FUN(__glewVertexAttrib3fARB) -#define glVertexAttrib3fvARB GLEW_GET_FUN(__glewVertexAttrib3fvARB) -#define glVertexAttrib3sARB GLEW_GET_FUN(__glewVertexAttrib3sARB) -#define glVertexAttrib3svARB GLEW_GET_FUN(__glewVertexAttrib3svARB) -#define glVertexAttrib4NbvARB GLEW_GET_FUN(__glewVertexAttrib4NbvARB) -#define glVertexAttrib4NivARB GLEW_GET_FUN(__glewVertexAttrib4NivARB) -#define glVertexAttrib4NsvARB GLEW_GET_FUN(__glewVertexAttrib4NsvARB) -#define glVertexAttrib4NubARB GLEW_GET_FUN(__glewVertexAttrib4NubARB) -#define glVertexAttrib4NubvARB GLEW_GET_FUN(__glewVertexAttrib4NubvARB) -#define glVertexAttrib4NuivARB GLEW_GET_FUN(__glewVertexAttrib4NuivARB) -#define glVertexAttrib4NusvARB GLEW_GET_FUN(__glewVertexAttrib4NusvARB) -#define glVertexAttrib4bvARB GLEW_GET_FUN(__glewVertexAttrib4bvARB) -#define glVertexAttrib4dARB GLEW_GET_FUN(__glewVertexAttrib4dARB) -#define glVertexAttrib4dvARB GLEW_GET_FUN(__glewVertexAttrib4dvARB) -#define glVertexAttrib4fARB GLEW_GET_FUN(__glewVertexAttrib4fARB) -#define glVertexAttrib4fvARB GLEW_GET_FUN(__glewVertexAttrib4fvARB) -#define glVertexAttrib4ivARB GLEW_GET_FUN(__glewVertexAttrib4ivARB) -#define glVertexAttrib4sARB GLEW_GET_FUN(__glewVertexAttrib4sARB) -#define glVertexAttrib4svARB GLEW_GET_FUN(__glewVertexAttrib4svARB) -#define glVertexAttrib4ubvARB GLEW_GET_FUN(__glewVertexAttrib4ubvARB) -#define glVertexAttrib4uivARB GLEW_GET_FUN(__glewVertexAttrib4uivARB) -#define glVertexAttrib4usvARB GLEW_GET_FUN(__glewVertexAttrib4usvARB) -#define glVertexAttribPointerARB GLEW_GET_FUN(__glewVertexAttribPointerARB) - -#define GLEW_ARB_vertex_program GLEW_GET_VAR(__GLEW_ARB_vertex_program) - -#endif /* GL_ARB_vertex_program */ - -/* -------------------------- GL_ARB_vertex_shader ------------------------- */ - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 - -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A - -typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name); -typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name); - -#define glBindAttribLocationARB GLEW_GET_FUN(__glewBindAttribLocationARB) -#define glGetActiveAttribARB GLEW_GET_FUN(__glewGetActiveAttribARB) -#define glGetAttribLocationARB GLEW_GET_FUN(__glewGetAttribLocationARB) - -#define GLEW_ARB_vertex_shader GLEW_GET_VAR(__GLEW_ARB_vertex_shader) - -#endif /* GL_ARB_vertex_shader */ - -/* --------------------------- GL_ARB_window_pos --------------------------- */ - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort* p); - -#define glWindowPos2dARB GLEW_GET_FUN(__glewWindowPos2dARB) -#define glWindowPos2dvARB GLEW_GET_FUN(__glewWindowPos2dvARB) -#define glWindowPos2fARB GLEW_GET_FUN(__glewWindowPos2fARB) -#define glWindowPos2fvARB GLEW_GET_FUN(__glewWindowPos2fvARB) -#define glWindowPos2iARB GLEW_GET_FUN(__glewWindowPos2iARB) -#define glWindowPos2ivARB GLEW_GET_FUN(__glewWindowPos2ivARB) -#define glWindowPos2sARB GLEW_GET_FUN(__glewWindowPos2sARB) -#define glWindowPos2svARB GLEW_GET_FUN(__glewWindowPos2svARB) -#define glWindowPos3dARB GLEW_GET_FUN(__glewWindowPos3dARB) -#define glWindowPos3dvARB GLEW_GET_FUN(__glewWindowPos3dvARB) -#define glWindowPos3fARB GLEW_GET_FUN(__glewWindowPos3fARB) -#define glWindowPos3fvARB GLEW_GET_FUN(__glewWindowPos3fvARB) -#define glWindowPos3iARB GLEW_GET_FUN(__glewWindowPos3iARB) -#define glWindowPos3ivARB GLEW_GET_FUN(__glewWindowPos3ivARB) -#define glWindowPos3sARB GLEW_GET_FUN(__glewWindowPos3sARB) -#define glWindowPos3svARB GLEW_GET_FUN(__glewWindowPos3svARB) - -#define GLEW_ARB_window_pos GLEW_GET_VAR(__GLEW_ARB_window_pos) - -#endif /* GL_ARB_window_pos */ - -/* ------------------------- GL_ATIX_point_sprites ------------------------- */ - -#ifndef GL_ATIX_point_sprites -#define GL_ATIX_point_sprites 1 - -#define GL_TEXTURE_POINT_MODE_ATIX 0x60B0 -#define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60B1 -#define GL_TEXTURE_POINT_SPRITE_ATIX 0x60B2 -#define GL_POINT_SPRITE_CULL_MODE_ATIX 0x60B3 -#define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60B4 -#define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60B5 - -#define GLEW_ATIX_point_sprites GLEW_GET_VAR(__GLEW_ATIX_point_sprites) - -#endif /* GL_ATIX_point_sprites */ - -/* ---------------------- GL_ATIX_texture_env_combine3 --------------------- */ - -#ifndef GL_ATIX_texture_env_combine3 -#define GL_ATIX_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATIX 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATIX 0x8745 -#define GL_MODULATE_SUBTRACT_ATIX 0x8746 - -#define GLEW_ATIX_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATIX_texture_env_combine3) - -#endif /* GL_ATIX_texture_env_combine3 */ - -/* ----------------------- GL_ATIX_texture_env_route ----------------------- */ - -#ifndef GL_ATIX_texture_env_route -#define GL_ATIX_texture_env_route 1 - -#define GL_SECONDARY_COLOR_ATIX 0x8747 -#define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 -#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 - -#define GLEW_ATIX_texture_env_route GLEW_GET_VAR(__GLEW_ATIX_texture_env_route) - -#endif /* GL_ATIX_texture_env_route */ - -/* ---------------- GL_ATIX_vertex_shader_output_point_size ---------------- */ - -#ifndef GL_ATIX_vertex_shader_output_point_size -#define GL_ATIX_vertex_shader_output_point_size 1 - -#define GL_OUTPUT_POINT_SIZE_ATIX 0x610E - -#define GLEW_ATIX_vertex_shader_output_point_size GLEW_GET_VAR(__GLEW_ATIX_vertex_shader_output_point_size) - -#endif /* GL_ATIX_vertex_shader_output_point_size */ - -/* -------------------------- GL_ATI_draw_buffers -------------------------- */ - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 - -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 - -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum* bufs); - -#define glDrawBuffersATI GLEW_GET_FUN(__glewDrawBuffersATI) - -#define GLEW_ATI_draw_buffers GLEW_GET_VAR(__GLEW_ATI_draw_buffers) - -#endif /* GL_ATI_draw_buffers */ - -/* -------------------------- GL_ATI_element_array ------------------------- */ - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 - -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A - -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -typedef void (GLAPIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void* pointer); - -#define glDrawElementArrayATI GLEW_GET_FUN(__glewDrawElementArrayATI) -#define glDrawRangeElementArrayATI GLEW_GET_FUN(__glewDrawRangeElementArrayATI) -#define glElementPointerATI GLEW_GET_FUN(__glewElementPointerATI) - -#define GLEW_ATI_element_array GLEW_GET_VAR(__GLEW_ATI_element_array) - -#endif /* GL_ATI_element_array */ - -/* ------------------------- GL_ATI_envmap_bumpmap ------------------------- */ - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 - -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C - -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -typedef void (GLAPIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); - -#define glGetTexBumpParameterfvATI GLEW_GET_FUN(__glewGetTexBumpParameterfvATI) -#define glGetTexBumpParameterivATI GLEW_GET_FUN(__glewGetTexBumpParameterivATI) -#define glTexBumpParameterfvATI GLEW_GET_FUN(__glewTexBumpParameterfvATI) -#define glTexBumpParameterivATI GLEW_GET_FUN(__glewTexBumpParameterivATI) - -#define GLEW_ATI_envmap_bumpmap GLEW_GET_VAR(__GLEW_ATI_envmap_bumpmap) - -#endif /* GL_ATI_envmap_bumpmap */ - -/* ------------------------- GL_ATI_fragment_shader ------------------------ */ - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 - -#define GL_RED_BIT_ATI 0x00000001 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B - -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (GLAPIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (GLAPIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (GLAPIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (GLAPIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat* value); - -#define glAlphaFragmentOp1ATI GLEW_GET_FUN(__glewAlphaFragmentOp1ATI) -#define glAlphaFragmentOp2ATI GLEW_GET_FUN(__glewAlphaFragmentOp2ATI) -#define glAlphaFragmentOp3ATI GLEW_GET_FUN(__glewAlphaFragmentOp3ATI) -#define glBeginFragmentShaderATI GLEW_GET_FUN(__glewBeginFragmentShaderATI) -#define glBindFragmentShaderATI GLEW_GET_FUN(__glewBindFragmentShaderATI) -#define glColorFragmentOp1ATI GLEW_GET_FUN(__glewColorFragmentOp1ATI) -#define glColorFragmentOp2ATI GLEW_GET_FUN(__glewColorFragmentOp2ATI) -#define glColorFragmentOp3ATI GLEW_GET_FUN(__glewColorFragmentOp3ATI) -#define glDeleteFragmentShaderATI GLEW_GET_FUN(__glewDeleteFragmentShaderATI) -#define glEndFragmentShaderATI GLEW_GET_FUN(__glewEndFragmentShaderATI) -#define glGenFragmentShadersATI GLEW_GET_FUN(__glewGenFragmentShadersATI) -#define glPassTexCoordATI GLEW_GET_FUN(__glewPassTexCoordATI) -#define glSampleMapATI GLEW_GET_FUN(__glewSampleMapATI) -#define glSetFragmentShaderConstantATI GLEW_GET_FUN(__glewSetFragmentShaderConstantATI) - -#define GLEW_ATI_fragment_shader GLEW_GET_VAR(__GLEW_ATI_fragment_shader) - -#endif /* GL_ATI_fragment_shader */ - -/* ------------------------ GL_ATI_map_object_buffer ----------------------- */ - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 - -typedef void* (GLAPIENTRY * PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); - -#define glMapObjectBufferATI GLEW_GET_FUN(__glewMapObjectBufferATI) -#define glUnmapObjectBufferATI GLEW_GET_FUN(__glewUnmapObjectBufferATI) - -#define GLEW_ATI_map_object_buffer GLEW_GET_VAR(__GLEW_ATI_map_object_buffer) - -#endif /* GL_ATI_map_object_buffer */ - -/* -------------------------- GL_ATI_pn_triangles -------------------------- */ - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 - -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 - -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); - -#define glPNTrianglesfATI GLEW_GET_FUN(__glPNTrianglewesfATI) -#define glPNTrianglesiATI GLEW_GET_FUN(__glPNTrianglewesiATI) - -#define GLEW_ATI_pn_triangles GLEW_GET_VAR(__GLEW_ATI_pn_triangles) - -#endif /* GL_ATI_pn_triangles */ - -/* ------------------------ GL_ATI_separate_stencil ------------------------ */ - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 - -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 - -typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); - -#define glStencilFuncSeparateATI GLEW_GET_FUN(__glewStencilFuncSeparateATI) -#define glStencilOpSeparateATI GLEW_GET_FUN(__glewStencilOpSeparateATI) - -#define GLEW_ATI_separate_stencil GLEW_GET_VAR(__GLEW_ATI_separate_stencil) - -#endif /* GL_ATI_separate_stencil */ - -/* ----------------------- GL_ATI_shader_texture_lod ----------------------- */ - -#ifndef GL_ATI_shader_texture_lod -#define GL_ATI_shader_texture_lod 1 - -#define GLEW_ATI_shader_texture_lod GLEW_GET_VAR(__GLEW_ATI_shader_texture_lod) - -#endif /* GL_ATI_shader_texture_lod */ - -/* ---------------------- GL_ATI_text_fragment_shader ---------------------- */ - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 - -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 - -#define GLEW_ATI_text_fragment_shader GLEW_GET_VAR(__GLEW_ATI_text_fragment_shader) - -#endif /* GL_ATI_text_fragment_shader */ - -/* --------------------- GL_ATI_texture_compression_3dc -------------------- */ - -#ifndef GL_ATI_texture_compression_3dc -#define GL_ATI_texture_compression_3dc 1 - -#define GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI 0x8837 - -#define GLEW_ATI_texture_compression_3dc GLEW_GET_VAR(__GLEW_ATI_texture_compression_3dc) - -#endif /* GL_ATI_texture_compression_3dc */ - -/* ---------------------- GL_ATI_texture_env_combine3 ---------------------- */ - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 - -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 - -#define GLEW_ATI_texture_env_combine3 GLEW_GET_VAR(__GLEW_ATI_texture_env_combine3) - -#endif /* GL_ATI_texture_env_combine3 */ - -/* -------------------------- GL_ATI_texture_float ------------------------- */ - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 - -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F - -#define GLEW_ATI_texture_float GLEW_GET_VAR(__GLEW_ATI_texture_float) - -#endif /* GL_ATI_texture_float */ - -/* ----------------------- GL_ATI_texture_mirror_once ---------------------- */ - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 - -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 - -#define GLEW_ATI_texture_mirror_once GLEW_GET_VAR(__GLEW_ATI_texture_mirror_once) - -#endif /* GL_ATI_texture_mirror_once */ - -/* ----------------------- GL_ATI_vertex_array_object ---------------------- */ - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 - -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 - -typedef void (GLAPIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (GLAPIENTRY * PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef GLuint (GLAPIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void* pointer, GLenum usage); -typedef void (GLAPIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); -typedef void (GLAPIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); - -#define glArrayObjectATI GLEW_GET_FUN(__glewArrayObjectATI) -#define glFreeObjectBufferATI GLEW_GET_FUN(__glewFreeObjectBufferATI) -#define glGetArrayObjectfvATI GLEW_GET_FUN(__glewGetArrayObjectfvATI) -#define glGetArrayObjectivATI GLEW_GET_FUN(__glewGetArrayObjectivATI) -#define glGetObjectBufferfvATI GLEW_GET_FUN(__glewGetObjectBufferfvATI) -#define glGetObjectBufferivATI GLEW_GET_FUN(__glewGetObjectBufferivATI) -#define glGetVariantArrayObjectfvATI GLEW_GET_FUN(__glewGetVariantArrayObjectfvATI) -#define glGetVariantArrayObjectivATI GLEW_GET_FUN(__glewGetVariantArrayObjectivATI) -#define glIsObjectBufferATI GLEW_GET_FUN(__glewIsObjectBufferATI) -#define glNewObjectBufferATI GLEW_GET_FUN(__glewNewObjectBufferATI) -#define glUpdateObjectBufferATI GLEW_GET_FUN(__glewUpdateObjectBufferATI) -#define glVariantArrayObjectATI GLEW_GET_FUN(__glewVariantArrayObjectATI) - -#define GLEW_ATI_vertex_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_array_object) - -#endif /* GL_ATI_vertex_array_object */ - -/* ------------------- GL_ATI_vertex_attrib_array_object ------------------- */ - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 - -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); - -#define glGetVertexAttribArrayObjectfvATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectfvATI) -#define glGetVertexAttribArrayObjectivATI GLEW_GET_FUN(__glewGetVertexAttribArrayObjectivATI) -#define glVertexAttribArrayObjectATI GLEW_GET_FUN(__glewVertexAttribArrayObjectATI) - -#define GLEW_ATI_vertex_attrib_array_object GLEW_GET_VAR(__GLEW_ATI_vertex_attrib_array_object) - -#endif /* GL_ATI_vertex_attrib_array_object */ - -/* ------------------------- GL_ATI_vertex_streams ------------------------- */ - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 - -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_SOURCE_ATI 0x876C -#define GL_VERTEX_STREAM0_ATI 0x876D -#define GL_VERTEX_STREAM1_ATI 0x876E -#define GL_VERTEX_STREAM2_ATI 0x876F -#define GL_VERTEX_STREAM3_ATI 0x8770 -#define GL_VERTEX_STREAM4_ATI 0x8771 -#define GL_VERTEX_STREAM5_ATI 0x8772 -#define GL_VERTEX_STREAM6_ATI 0x8773 -#define GL_VERTEX_STREAM7_ATI 0x8774 - -typedef void (GLAPIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte x, GLbyte y, GLbyte z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *v); - -#define glClientActiveVertexStreamATI GLEW_GET_FUN(__glewClientActiveVertexStreamATI) -#define glNormalStream3bATI GLEW_GET_FUN(__glewNormalStream3bATI) -#define glNormalStream3bvATI GLEW_GET_FUN(__glewNormalStream3bvATI) -#define glNormalStream3dATI GLEW_GET_FUN(__glewNormalStream3dATI) -#define glNormalStream3dvATI GLEW_GET_FUN(__glewNormalStream3dvATI) -#define glNormalStream3fATI GLEW_GET_FUN(__glewNormalStream3fATI) -#define glNormalStream3fvATI GLEW_GET_FUN(__glewNormalStream3fvATI) -#define glNormalStream3iATI GLEW_GET_FUN(__glewNormalStream3iATI) -#define glNormalStream3ivATI GLEW_GET_FUN(__glewNormalStream3ivATI) -#define glNormalStream3sATI GLEW_GET_FUN(__glewNormalStream3sATI) -#define glNormalStream3svATI GLEW_GET_FUN(__glewNormalStream3svATI) -#define glVertexBlendEnvfATI GLEW_GET_FUN(__glewVertexBlendEnvfATI) -#define glVertexBlendEnviATI GLEW_GET_FUN(__glewVertexBlendEnviATI) -#define glVertexStream2dATI GLEW_GET_FUN(__glewVertexStream2dATI) -#define glVertexStream2dvATI GLEW_GET_FUN(__glewVertexStream2dvATI) -#define glVertexStream2fATI GLEW_GET_FUN(__glewVertexStream2fATI) -#define glVertexStream2fvATI GLEW_GET_FUN(__glewVertexStream2fvATI) -#define glVertexStream2iATI GLEW_GET_FUN(__glewVertexStream2iATI) -#define glVertexStream2ivATI GLEW_GET_FUN(__glewVertexStream2ivATI) -#define glVertexStream2sATI GLEW_GET_FUN(__glewVertexStream2sATI) -#define glVertexStream2svATI GLEW_GET_FUN(__glewVertexStream2svATI) -#define glVertexStream3dATI GLEW_GET_FUN(__glewVertexStream3dATI) -#define glVertexStream3dvATI GLEW_GET_FUN(__glewVertexStream3dvATI) -#define glVertexStream3fATI GLEW_GET_FUN(__glewVertexStream3fATI) -#define glVertexStream3fvATI GLEW_GET_FUN(__glewVertexStream3fvATI) -#define glVertexStream3iATI GLEW_GET_FUN(__glewVertexStream3iATI) -#define glVertexStream3ivATI GLEW_GET_FUN(__glewVertexStream3ivATI) -#define glVertexStream3sATI GLEW_GET_FUN(__glewVertexStream3sATI) -#define glVertexStream3svATI GLEW_GET_FUN(__glewVertexStream3svATI) -#define glVertexStream4dATI GLEW_GET_FUN(__glewVertexStream4dATI) -#define glVertexStream4dvATI GLEW_GET_FUN(__glewVertexStream4dvATI) -#define glVertexStream4fATI GLEW_GET_FUN(__glewVertexStream4fATI) -#define glVertexStream4fvATI GLEW_GET_FUN(__glewVertexStream4fvATI) -#define glVertexStream4iATI GLEW_GET_FUN(__glewVertexStream4iATI) -#define glVertexStream4ivATI GLEW_GET_FUN(__glewVertexStream4ivATI) -#define glVertexStream4sATI GLEW_GET_FUN(__glewVertexStream4sATI) -#define glVertexStream4svATI GLEW_GET_FUN(__glewVertexStream4svATI) - -#define GLEW_ATI_vertex_streams GLEW_GET_VAR(__GLEW_ATI_vertex_streams) - -#endif /* GL_ATI_vertex_streams */ - -/* --------------------------- GL_EXT_422_pixels --------------------------- */ - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 - -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF - -#define GLEW_EXT_422_pixels GLEW_GET_VAR(__GLEW_EXT_422_pixels) - -#endif /* GL_EXT_422_pixels */ - -/* ---------------------------- GL_EXT_Cg_shader --------------------------- */ - -#ifndef GL_EXT_Cg_shader -#define GL_EXT_Cg_shader 1 - -#define GL_CG_VERTEX_SHADER_EXT 0x890E -#define GL_CG_FRAGMENT_SHADER_EXT 0x890F - -#define GLEW_EXT_Cg_shader GLEW_GET_VAR(__GLEW_EXT_Cg_shader) - -#endif /* GL_EXT_Cg_shader */ - -/* ------------------------------ GL_EXT_abgr ------------------------------ */ - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 - -#define GL_ABGR_EXT 0x8000 - -#define GLEW_EXT_abgr GLEW_GET_VAR(__GLEW_EXT_abgr) - -#endif /* GL_EXT_abgr */ - -/* ------------------------------ GL_EXT_bgra ------------------------------ */ - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 - -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 - -#define GLEW_EXT_bgra GLEW_GET_VAR(__GLEW_EXT_bgra) - -#endif /* GL_EXT_bgra */ - -/* ------------------------ GL_EXT_bindable_uniform ------------------------ */ - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 - -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF - -typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (GLAPIENTRY * PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -typedef void (GLAPIENTRY * PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); - -#define glGetUniformBufferSizeEXT GLEW_GET_FUN(__glewGetUniformBufferSizeEXT) -#define glGetUniformOffsetEXT GLEW_GET_FUN(__glewGetUniformOffsetEXT) -#define glUniformBufferEXT GLEW_GET_FUN(__glewUniformBufferEXT) - -#define GLEW_EXT_bindable_uniform GLEW_GET_VAR(__GLEW_EXT_bindable_uniform) - -#endif /* GL_EXT_bindable_uniform */ - -/* --------------------------- GL_EXT_blend_color -------------------------- */ - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 - -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 - -typedef void (GLAPIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - -#define glBlendColorEXT GLEW_GET_FUN(__glewBlendColorEXT) - -#define GLEW_EXT_blend_color GLEW_GET_VAR(__GLEW_EXT_blend_color) - -#endif /* GL_EXT_blend_color */ - -/* --------------------- GL_EXT_blend_equation_separate -------------------- */ - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 - -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); - -#define glBlendEquationSeparateEXT GLEW_GET_FUN(__glewBlendEquationSeparateEXT) - -#define GLEW_EXT_blend_equation_separate GLEW_GET_VAR(__GLEW_EXT_blend_equation_separate) - -#endif /* GL_EXT_blend_equation_separate */ - -/* ----------------------- GL_EXT_blend_func_separate ---------------------- */ - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 - -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB - -typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); - -#define glBlendFuncSeparateEXT GLEW_GET_FUN(__glewBlendFuncSeparateEXT) - -#define GLEW_EXT_blend_func_separate GLEW_GET_VAR(__GLEW_EXT_blend_func_separate) - -#endif /* GL_EXT_blend_func_separate */ - -/* ------------------------- GL_EXT_blend_logic_op ------------------------- */ - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 - -#define GLEW_EXT_blend_logic_op GLEW_GET_VAR(__GLEW_EXT_blend_logic_op) - -#endif /* GL_EXT_blend_logic_op */ - -/* -------------------------- GL_EXT_blend_minmax -------------------------- */ - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 - -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 - -typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); - -#define glBlendEquationEXT GLEW_GET_FUN(__glewBlendEquationEXT) - -#define GLEW_EXT_blend_minmax GLEW_GET_VAR(__GLEW_EXT_blend_minmax) - -#endif /* GL_EXT_blend_minmax */ - -/* ------------------------- GL_EXT_blend_subtract ------------------------- */ - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 - -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B - -#define GLEW_EXT_blend_subtract GLEW_GET_VAR(__GLEW_EXT_blend_subtract) - -#endif /* GL_EXT_blend_subtract */ - -/* ------------------------ GL_EXT_clip_volume_hint ------------------------ */ - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 - -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 - -#define GLEW_EXT_clip_volume_hint GLEW_GET_VAR(__GLEW_EXT_clip_volume_hint) - -#endif /* GL_EXT_clip_volume_hint */ - -/* ------------------------------ GL_EXT_cmyka ----------------------------- */ - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 - -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F - -#define GLEW_EXT_cmyka GLEW_GET_VAR(__GLEW_EXT_cmyka) - -#endif /* GL_EXT_cmyka */ - -/* ------------------------- GL_EXT_color_subtable ------------------------- */ - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 - -typedef void (GLAPIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); - -#define glColorSubTableEXT GLEW_GET_FUN(__glewColorSubTableEXT) -#define glCopyColorSubTableEXT GLEW_GET_FUN(__glewCopyColorSubTableEXT) - -#define GLEW_EXT_color_subtable GLEW_GET_VAR(__GLEW_EXT_color_subtable) - -#endif /* GL_EXT_color_subtable */ - -/* ---------------------- GL_EXT_compiled_vertex_array --------------------- */ - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 - -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 - -typedef void (GLAPIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); - -#define glLockArraysEXT GLEW_GET_FUN(__glewLockArraysEXT) -#define glUnlockArraysEXT GLEW_GET_FUN(__glewUnlockArraysEXT) - -#define GLEW_EXT_compiled_vertex_array GLEW_GET_VAR(__GLEW_EXT_compiled_vertex_array) - -#endif /* GL_EXT_compiled_vertex_array */ - -/* --------------------------- GL_EXT_convolution -------------------------- */ - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 - -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 - -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* image); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* image); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); -typedef void (GLAPIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* row, const void* column); - -#define glConvolutionFilter1DEXT GLEW_GET_FUN(__glewConvolutionFilter1DEXT) -#define glConvolutionFilter2DEXT GLEW_GET_FUN(__glewConvolutionFilter2DEXT) -#define glConvolutionParameterfEXT GLEW_GET_FUN(__glewConvolutionParameterfEXT) -#define glConvolutionParameterfvEXT GLEW_GET_FUN(__glewConvolutionParameterfvEXT) -#define glConvolutionParameteriEXT GLEW_GET_FUN(__glewConvolutionParameteriEXT) -#define glConvolutionParameterivEXT GLEW_GET_FUN(__glewConvolutionParameterivEXT) -#define glCopyConvolutionFilter1DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter1DEXT) -#define glCopyConvolutionFilter2DEXT GLEW_GET_FUN(__glewCopyConvolutionFilter2DEXT) -#define glGetConvolutionFilterEXT GLEW_GET_FUN(__glewGetConvolutionFilterEXT) -#define glGetConvolutionParameterfvEXT GLEW_GET_FUN(__glewGetConvolutionParameterfvEXT) -#define glGetConvolutionParameterivEXT GLEW_GET_FUN(__glewGetConvolutionParameterivEXT) -#define glGetSeparableFilterEXT GLEW_GET_FUN(__glewGetSeparableFilterEXT) -#define glSeparableFilter2DEXT GLEW_GET_FUN(__glewSeparableFilter2DEXT) - -#define GLEW_EXT_convolution GLEW_GET_VAR(__GLEW_EXT_convolution) - -#endif /* GL_EXT_convolution */ - -/* ------------------------ GL_EXT_coordinate_frame ------------------------ */ - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 - -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 - -typedef void (GLAPIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, void* pointer); - -#define glBinormalPointerEXT GLEW_GET_FUN(__glewBinormalPointerEXT) -#define glTangentPointerEXT GLEW_GET_FUN(__glewTangentPointerEXT) - -#define GLEW_EXT_coordinate_frame GLEW_GET_VAR(__GLEW_EXT_coordinate_frame) - -#endif /* GL_EXT_coordinate_frame */ - -/* -------------------------- GL_EXT_copy_texture -------------------------- */ - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 - -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glCopyTexImage1DEXT GLEW_GET_FUN(__glewCopyTexImage1DEXT) -#define glCopyTexImage2DEXT GLEW_GET_FUN(__glewCopyTexImage2DEXT) -#define glCopyTexSubImage1DEXT GLEW_GET_FUN(__glewCopyTexSubImage1DEXT) -#define glCopyTexSubImage2DEXT GLEW_GET_FUN(__glewCopyTexSubImage2DEXT) -#define glCopyTexSubImage3DEXT GLEW_GET_FUN(__glewCopyTexSubImage3DEXT) - -#define GLEW_EXT_copy_texture GLEW_GET_VAR(__GLEW_EXT_copy_texture) - -#endif /* GL_EXT_copy_texture */ - -/* --------------------------- GL_EXT_cull_vertex -------------------------- */ - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 - -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); - -#define glCullParameterdvEXT GLEW_GET_FUN(__glewCullParameterdvEXT) -#define glCullParameterfvEXT GLEW_GET_FUN(__glewCullParameterfvEXT) - -#define GLEW_EXT_cull_vertex GLEW_GET_VAR(__GLEW_EXT_cull_vertex) - -#endif /* GL_EXT_cull_vertex */ - -/* ------------------------ GL_EXT_depth_bounds_test ----------------------- */ - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 - -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 - -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); - -#define glDepthBoundsEXT GLEW_GET_FUN(__glewDepthBoundsEXT) - -#define GLEW_EXT_depth_bounds_test GLEW_GET_VAR(__GLEW_EXT_depth_bounds_test) - -#endif /* GL_EXT_depth_bounds_test */ - -/* ----------------------- GL_EXT_direct_state_access ---------------------- */ - -#ifndef GL_EXT_direct_state_access -#define GL_EXT_direct_state_access 1 - -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E -#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F - -typedef void (GLAPIENTRY * PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef GLenum (GLAPIENTRY * PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (GLAPIENTRY * PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum* bufs); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (GLAPIENTRY * PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, void* img); -typedef void (GLAPIENTRY * PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum pname, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum pname, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint* param); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void** params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); -typedef void (GLAPIENTRY * PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void* string); -typedef void (GLAPIENTRY * PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum pname, GLuint index, GLvoid** params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint* params); -typedef GLvoid * (GLAPIENTRY * PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef void (GLAPIENTRY * PFNGLMATRIXFRUSTUMEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXLOADFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTDEXTPROC) (GLenum matrixMode, const GLdouble* m); -typedef void (GLAPIENTRY * PFNGLMATRIXMULTFEXTPROC) (GLenum matrixMode, const GLfloat* m); -typedef void (GLAPIENTRY * PFNGLMATRIXORTHOEXTPROC) (GLenum matrixMode, GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f); -typedef void (GLAPIENTRY * PFNGLMATRIXPOPEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXPUSHEXTPROC) (GLenum matrixMode); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEDEXTPROC) (GLenum matrixMode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXROTATEFEXTPROC) (GLenum matrixMode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXSCALEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum matrixMode, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum matrixMode, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); -typedef void (GLAPIENTRY * PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint* params); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat* param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint* param); -typedef void (GLAPIENTRY * PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); -typedef GLboolean (GLAPIENTRY * PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); - -#define glBindMultiTextureEXT GLEW_GET_FUN(__glewBindMultiTextureEXT) -#define glCheckNamedFramebufferStatusEXT GLEW_GET_FUN(__glewCheckNamedFramebufferStatusEXT) -#define glClientAttribDefaultEXT GLEW_GET_FUN(__glewClientAttribDefaultEXT) -#define glCompressedMultiTexImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage1DEXT) -#define glCompressedMultiTexImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage2DEXT) -#define glCompressedMultiTexImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexImage3DEXT) -#define glCompressedMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage1DEXT) -#define glCompressedMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage2DEXT) -#define glCompressedMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCompressedMultiTexSubImage3DEXT) -#define glCompressedTextureImage1DEXT GLEW_GET_FUN(__glewCompressedTextureImage1DEXT) -#define glCompressedTextureImage2DEXT GLEW_GET_FUN(__glewCompressedTextureImage2DEXT) -#define glCompressedTextureImage3DEXT GLEW_GET_FUN(__glewCompressedTextureImage3DEXT) -#define glCompressedTextureSubImage1DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage1DEXT) -#define glCompressedTextureSubImage2DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage2DEXT) -#define glCompressedTextureSubImage3DEXT GLEW_GET_FUN(__glewCompressedTextureSubImage3DEXT) -#define glCopyMultiTexImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexImage1DEXT) -#define glCopyMultiTexImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexImage2DEXT) -#define glCopyMultiTexSubImage1DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage1DEXT) -#define glCopyMultiTexSubImage2DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage2DEXT) -#define glCopyMultiTexSubImage3DEXT GLEW_GET_FUN(__glewCopyMultiTexSubImage3DEXT) -#define glCopyTextureImage1DEXT GLEW_GET_FUN(__glewCopyTextureImage1DEXT) -#define glCopyTextureImage2DEXT GLEW_GET_FUN(__glewCopyTextureImage2DEXT) -#define glCopyTextureSubImage1DEXT GLEW_GET_FUN(__glewCopyTextureSubImage1DEXT) -#define glCopyTextureSubImage2DEXT GLEW_GET_FUN(__glewCopyTextureSubImage2DEXT) -#define glCopyTextureSubImage3DEXT GLEW_GET_FUN(__glewCopyTextureSubImage3DEXT) -#define glDisableClientStateIndexedEXT GLEW_GET_FUN(__glewDisableClientStateIndexedEXT) -#define glEnableClientStateIndexedEXT GLEW_GET_FUN(__glewEnableClientStateIndexedEXT) -#define glFramebufferDrawBufferEXT GLEW_GET_FUN(__glewFramebufferDrawBufferEXT) -#define glFramebufferDrawBuffersEXT GLEW_GET_FUN(__glewFramebufferDrawBuffersEXT) -#define glFramebufferReadBufferEXT GLEW_GET_FUN(__glewFramebufferReadBufferEXT) -#define glGenerateMultiTexMipmapEXT GLEW_GET_FUN(__glewGenerateMultiTexMipmapEXT) -#define glGenerateTextureMipmapEXT GLEW_GET_FUN(__glewGenerateTextureMipmapEXT) -#define glGetCompressedMultiTexImageEXT GLEW_GET_FUN(__glewGetCompressedMultiTexImageEXT) -#define glGetCompressedTextureImageEXT GLEW_GET_FUN(__glewGetCompressedTextureImageEXT) -#define glGetDoubleIndexedvEXT GLEW_GET_FUN(__glewGetDoubleIndexedvEXT) -#define glGetFloatIndexedvEXT GLEW_GET_FUN(__glewGetFloatIndexedvEXT) -#define glGetFramebufferParameterivEXT GLEW_GET_FUN(__glewGetFramebufferParameterivEXT) -#define glGetMultiTexEnvfvEXT GLEW_GET_FUN(__glewGetMultiTexEnvfvEXT) -#define glGetMultiTexEnvivEXT GLEW_GET_FUN(__glewGetMultiTexEnvivEXT) -#define glGetMultiTexGendvEXT GLEW_GET_FUN(__glewGetMultiTexGendvEXT) -#define glGetMultiTexGenfvEXT GLEW_GET_FUN(__glewGetMultiTexGenfvEXT) -#define glGetMultiTexGenivEXT GLEW_GET_FUN(__glewGetMultiTexGenivEXT) -#define glGetMultiTexImageEXT GLEW_GET_FUN(__glewGetMultiTexImageEXT) -#define glGetMultiTexLevelParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterfvEXT) -#define glGetMultiTexLevelParameterivEXT GLEW_GET_FUN(__glewGetMultiTexLevelParameterivEXT) -#define glGetMultiTexParameterIivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIivEXT) -#define glGetMultiTexParameterIuivEXT GLEW_GET_FUN(__glewGetMultiTexParameterIuivEXT) -#define glGetMultiTexParameterfvEXT GLEW_GET_FUN(__glewGetMultiTexParameterfvEXT) -#define glGetMultiTexParameterivEXT GLEW_GET_FUN(__glewGetMultiTexParameterivEXT) -#define glGetNamedBufferParameterivEXT GLEW_GET_FUN(__glewGetNamedBufferParameterivEXT) -#define glGetNamedBufferPointervEXT GLEW_GET_FUN(__glewGetNamedBufferPointervEXT) -#define glGetNamedBufferSubDataEXT GLEW_GET_FUN(__glewGetNamedBufferSubDataEXT) -#define glGetNamedFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetNamedFramebufferAttachmentParameterivEXT) -#define glGetNamedProgramLocalParameterIivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIivEXT) -#define glGetNamedProgramLocalParameterIuivEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterIuivEXT) -#define glGetNamedProgramLocalParameterdvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterdvEXT) -#define glGetNamedProgramLocalParameterfvEXT GLEW_GET_FUN(__glewGetNamedProgramLocalParameterfvEXT) -#define glGetNamedProgramStringEXT GLEW_GET_FUN(__glewGetNamedProgramStringEXT) -#define glGetNamedProgramivEXT GLEW_GET_FUN(__glewGetNamedProgramivEXT) -#define glGetNamedRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetNamedRenderbufferParameterivEXT) -#define glGetPointerIndexedvEXT GLEW_GET_FUN(__glewGetPointerIndexedvEXT) -#define glGetTextureImageEXT GLEW_GET_FUN(__glewGetTextureImageEXT) -#define glGetTextureLevelParameterfvEXT GLEW_GET_FUN(__glewGetTextureLevelParameterfvEXT) -#define glGetTextureLevelParameterivEXT GLEW_GET_FUN(__glewGetTextureLevelParameterivEXT) -#define glGetTextureParameterIivEXT GLEW_GET_FUN(__glewGetTextureParameterIivEXT) -#define glGetTextureParameterIuivEXT GLEW_GET_FUN(__glewGetTextureParameterIuivEXT) -#define glGetTextureParameterfvEXT GLEW_GET_FUN(__glewGetTextureParameterfvEXT) -#define glGetTextureParameterivEXT GLEW_GET_FUN(__glewGetTextureParameterivEXT) -#define glMapNamedBufferEXT GLEW_GET_FUN(__glewMapNamedBufferEXT) -#define glMatrixFrustumEXT GLEW_GET_FUN(__glewMatrixFrustumEXT) -#define glMatrixLoadIdentityEXT GLEW_GET_FUN(__glewMatrixLoadIdentityEXT) -#define glMatrixLoadTransposedEXT GLEW_GET_FUN(__glewMatrixLoadTransposedEXT) -#define glMatrixLoadTransposefEXT GLEW_GET_FUN(__glewMatrixLoadTransposefEXT) -#define glMatrixLoaddEXT GLEW_GET_FUN(__glewMatrixLoaddEXT) -#define glMatrixLoadfEXT GLEW_GET_FUN(__glewMatrixLoadfEXT) -#define glMatrixMultTransposedEXT GLEW_GET_FUN(__glewMatrixMultTransposedEXT) -#define glMatrixMultTransposefEXT GLEW_GET_FUN(__glewMatrixMultTransposefEXT) -#define glMatrixMultdEXT GLEW_GET_FUN(__glewMatrixMultdEXT) -#define glMatrixMultfEXT GLEW_GET_FUN(__glewMatrixMultfEXT) -#define glMatrixOrthoEXT GLEW_GET_FUN(__glewMatrixOrthoEXT) -#define glMatrixPopEXT GLEW_GET_FUN(__glewMatrixPopEXT) -#define glMatrixPushEXT GLEW_GET_FUN(__glewMatrixPushEXT) -#define glMatrixRotatedEXT GLEW_GET_FUN(__glewMatrixRotatedEXT) -#define glMatrixRotatefEXT GLEW_GET_FUN(__glewMatrixRotatefEXT) -#define glMatrixScaledEXT GLEW_GET_FUN(__glewMatrixScaledEXT) -#define glMatrixScalefEXT GLEW_GET_FUN(__glewMatrixScalefEXT) -#define glMatrixTranslatedEXT GLEW_GET_FUN(__glewMatrixTranslatedEXT) -#define glMatrixTranslatefEXT GLEW_GET_FUN(__glewMatrixTranslatefEXT) -#define glMultiTexBufferEXT GLEW_GET_FUN(__glewMultiTexBufferEXT) -#define glMultiTexCoordPointerEXT GLEW_GET_FUN(__glewMultiTexCoordPointerEXT) -#define glMultiTexEnvfEXT GLEW_GET_FUN(__glewMultiTexEnvfEXT) -#define glMultiTexEnvfvEXT GLEW_GET_FUN(__glewMultiTexEnvfvEXT) -#define glMultiTexEnviEXT GLEW_GET_FUN(__glewMultiTexEnviEXT) -#define glMultiTexEnvivEXT GLEW_GET_FUN(__glewMultiTexEnvivEXT) -#define glMultiTexGendEXT GLEW_GET_FUN(__glewMultiTexGendEXT) -#define glMultiTexGendvEXT GLEW_GET_FUN(__glewMultiTexGendvEXT) -#define glMultiTexGenfEXT GLEW_GET_FUN(__glewMultiTexGenfEXT) -#define glMultiTexGenfvEXT GLEW_GET_FUN(__glewMultiTexGenfvEXT) -#define glMultiTexGeniEXT GLEW_GET_FUN(__glewMultiTexGeniEXT) -#define glMultiTexGenivEXT GLEW_GET_FUN(__glewMultiTexGenivEXT) -#define glMultiTexImage1DEXT GLEW_GET_FUN(__glewMultiTexImage1DEXT) -#define glMultiTexImage2DEXT GLEW_GET_FUN(__glewMultiTexImage2DEXT) -#define glMultiTexImage3DEXT GLEW_GET_FUN(__glewMultiTexImage3DEXT) -#define glMultiTexParameterIivEXT GLEW_GET_FUN(__glewMultiTexParameterIivEXT) -#define glMultiTexParameterIuivEXT GLEW_GET_FUN(__glewMultiTexParameterIuivEXT) -#define glMultiTexParameterfEXT GLEW_GET_FUN(__glewMultiTexParameterfEXT) -#define glMultiTexParameterfvEXT GLEW_GET_FUN(__glewMultiTexParameterfvEXT) -#define glMultiTexParameteriEXT GLEW_GET_FUN(__glewMultiTexParameteriEXT) -#define glMultiTexParameterivEXT GLEW_GET_FUN(__glewMultiTexParameterivEXT) -#define glMultiTexRenderbufferEXT GLEW_GET_FUN(__glewMultiTexRenderbufferEXT) -#define glMultiTexSubImage1DEXT GLEW_GET_FUN(__glewMultiTexSubImage1DEXT) -#define glMultiTexSubImage2DEXT GLEW_GET_FUN(__glewMultiTexSubImage2DEXT) -#define glMultiTexSubImage3DEXT GLEW_GET_FUN(__glewMultiTexSubImage3DEXT) -#define glNamedBufferDataEXT GLEW_GET_FUN(__glewNamedBufferDataEXT) -#define glNamedBufferSubDataEXT GLEW_GET_FUN(__glewNamedBufferSubDataEXT) -#define glNamedFramebufferRenderbufferEXT GLEW_GET_FUN(__glewNamedFramebufferRenderbufferEXT) -#define glNamedFramebufferTexture1DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture1DEXT) -#define glNamedFramebufferTexture2DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture2DEXT) -#define glNamedFramebufferTexture3DEXT GLEW_GET_FUN(__glewNamedFramebufferTexture3DEXT) -#define glNamedFramebufferTextureEXT GLEW_GET_FUN(__glewNamedFramebufferTextureEXT) -#define glNamedFramebufferTextureFaceEXT GLEW_GET_FUN(__glewNamedFramebufferTextureFaceEXT) -#define glNamedFramebufferTextureLayerEXT GLEW_GET_FUN(__glewNamedFramebufferTextureLayerEXT) -#define glNamedProgramLocalParameter4dEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dEXT) -#define glNamedProgramLocalParameter4dvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4dvEXT) -#define glNamedProgramLocalParameter4fEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fEXT) -#define glNamedProgramLocalParameter4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameter4fvEXT) -#define glNamedProgramLocalParameterI4iEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4iEXT) -#define glNamedProgramLocalParameterI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4ivEXT) -#define glNamedProgramLocalParameterI4uiEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uiEXT) -#define glNamedProgramLocalParameterI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParameterI4uivEXT) -#define glNamedProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewNamedProgramLocalParameters4fvEXT) -#define glNamedProgramLocalParametersI4ivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4ivEXT) -#define glNamedProgramLocalParametersI4uivEXT GLEW_GET_FUN(__glewNamedProgramLocalParametersI4uivEXT) -#define glNamedProgramStringEXT GLEW_GET_FUN(__glewNamedProgramStringEXT) -#define glNamedRenderbufferStorageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageEXT) -#define glNamedRenderbufferStorageMultisampleCoverageEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleCoverageEXT) -#define glNamedRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewNamedRenderbufferStorageMultisampleEXT) -#define glProgramUniform1fEXT GLEW_GET_FUN(__glewProgramUniform1fEXT) -#define glProgramUniform1fvEXT GLEW_GET_FUN(__glewProgramUniform1fvEXT) -#define glProgramUniform1iEXT GLEW_GET_FUN(__glewProgramUniform1iEXT) -#define glProgramUniform1ivEXT GLEW_GET_FUN(__glewProgramUniform1ivEXT) -#define glProgramUniform1uiEXT GLEW_GET_FUN(__glewProgramUniform1uiEXT) -#define glProgramUniform1uivEXT GLEW_GET_FUN(__glewProgramUniform1uivEXT) -#define glProgramUniform2fEXT GLEW_GET_FUN(__glewProgramUniform2fEXT) -#define glProgramUniform2fvEXT GLEW_GET_FUN(__glewProgramUniform2fvEXT) -#define glProgramUniform2iEXT GLEW_GET_FUN(__glewProgramUniform2iEXT) -#define glProgramUniform2ivEXT GLEW_GET_FUN(__glewProgramUniform2ivEXT) -#define glProgramUniform2uiEXT GLEW_GET_FUN(__glewProgramUniform2uiEXT) -#define glProgramUniform2uivEXT GLEW_GET_FUN(__glewProgramUniform2uivEXT) -#define glProgramUniform3fEXT GLEW_GET_FUN(__glewProgramUniform3fEXT) -#define glProgramUniform3fvEXT GLEW_GET_FUN(__glewProgramUniform3fvEXT) -#define glProgramUniform3iEXT GLEW_GET_FUN(__glewProgramUniform3iEXT) -#define glProgramUniform3ivEXT GLEW_GET_FUN(__glewProgramUniform3ivEXT) -#define glProgramUniform3uiEXT GLEW_GET_FUN(__glewProgramUniform3uiEXT) -#define glProgramUniform3uivEXT GLEW_GET_FUN(__glewProgramUniform3uivEXT) -#define glProgramUniform4fEXT GLEW_GET_FUN(__glewProgramUniform4fEXT) -#define glProgramUniform4fvEXT GLEW_GET_FUN(__glewProgramUniform4fvEXT) -#define glProgramUniform4iEXT GLEW_GET_FUN(__glewProgramUniform4iEXT) -#define glProgramUniform4ivEXT GLEW_GET_FUN(__glewProgramUniform4ivEXT) -#define glProgramUniform4uiEXT GLEW_GET_FUN(__glewProgramUniform4uiEXT) -#define glProgramUniform4uivEXT GLEW_GET_FUN(__glewProgramUniform4uivEXT) -#define glProgramUniformMatrix2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2fvEXT) -#define glProgramUniformMatrix2x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x3fvEXT) -#define glProgramUniformMatrix2x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix2x4fvEXT) -#define glProgramUniformMatrix3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3fvEXT) -#define glProgramUniformMatrix3x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x2fvEXT) -#define glProgramUniformMatrix3x4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix3x4fvEXT) -#define glProgramUniformMatrix4fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4fvEXT) -#define glProgramUniformMatrix4x2fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x2fvEXT) -#define glProgramUniformMatrix4x3fvEXT GLEW_GET_FUN(__glewProgramUniformMatrix4x3fvEXT) -#define glPushClientAttribDefaultEXT GLEW_GET_FUN(__glewPushClientAttribDefaultEXT) -#define glTextureBufferEXT GLEW_GET_FUN(__glewTextureBufferEXT) -#define glTextureImage1DEXT GLEW_GET_FUN(__glewTextureImage1DEXT) -#define glTextureImage2DEXT GLEW_GET_FUN(__glewTextureImage2DEXT) -#define glTextureImage3DEXT GLEW_GET_FUN(__glewTextureImage3DEXT) -#define glTextureParameterIivEXT GLEW_GET_FUN(__glewTextureParameterIivEXT) -#define glTextureParameterIuivEXT GLEW_GET_FUN(__glewTextureParameterIuivEXT) -#define glTextureParameterfEXT GLEW_GET_FUN(__glewTextureParameterfEXT) -#define glTextureParameterfvEXT GLEW_GET_FUN(__glewTextureParameterfvEXT) -#define glTextureParameteriEXT GLEW_GET_FUN(__glewTextureParameteriEXT) -#define glTextureParameterivEXT GLEW_GET_FUN(__glewTextureParameterivEXT) -#define glTextureRenderbufferEXT GLEW_GET_FUN(__glewTextureRenderbufferEXT) -#define glTextureSubImage1DEXT GLEW_GET_FUN(__glewTextureSubImage1DEXT) -#define glTextureSubImage2DEXT GLEW_GET_FUN(__glewTextureSubImage2DEXT) -#define glTextureSubImage3DEXT GLEW_GET_FUN(__glewTextureSubImage3DEXT) -#define glUnmapNamedBufferEXT GLEW_GET_FUN(__glewUnmapNamedBufferEXT) - -#define GLEW_EXT_direct_state_access GLEW_GET_VAR(__GLEW_EXT_direct_state_access) - -#endif /* GL_EXT_direct_state_access */ - -/* -------------------------- GL_EXT_draw_buffers2 ------------------------- */ - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 - -typedef void (GLAPIENTRY * PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (GLAPIENTRY * PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (GLAPIENTRY * PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum value, GLuint index, GLboolean* data); -typedef void (GLAPIENTRY * PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum value, GLuint index, GLint* data); -typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); - -#define glColorMaskIndexedEXT GLEW_GET_FUN(__glewColorMaskIndexedEXT) -#define glDisableIndexedEXT GLEW_GET_FUN(__glewDisableIndexedEXT) -#define glEnableIndexedEXT GLEW_GET_FUN(__glewEnableIndexedEXT) -#define glGetBooleanIndexedvEXT GLEW_GET_FUN(__glewGetBooleanIndexedvEXT) -#define glGetIntegerIndexedvEXT GLEW_GET_FUN(__glewGetIntegerIndexedvEXT) -#define glIsEnabledIndexedEXT GLEW_GET_FUN(__glewIsEnabledIndexedEXT) - -#define GLEW_EXT_draw_buffers2 GLEW_GET_VAR(__GLEW_EXT_draw_buffers2) - -#endif /* GL_EXT_draw_buffers2 */ - -/* ------------------------- GL_EXT_draw_instanced ------------------------- */ - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 - -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); - -#define glDrawArraysInstancedEXT GLEW_GET_FUN(__glewDrawArraysInstancedEXT) -#define glDrawElementsInstancedEXT GLEW_GET_FUN(__glewDrawElementsInstancedEXT) - -#define GLEW_EXT_draw_instanced GLEW_GET_VAR(__GLEW_EXT_draw_instanced) - -#endif /* GL_EXT_draw_instanced */ - -/* ----------------------- GL_EXT_draw_range_elements ---------------------- */ - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 - -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 - -typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); - -#define glDrawRangeElementsEXT GLEW_GET_FUN(__glewDrawRangeElementsEXT) - -#define GLEW_EXT_draw_range_elements GLEW_GET_VAR(__GLEW_EXT_draw_range_elements) - -#endif /* GL_EXT_draw_range_elements */ - -/* ---------------------------- GL_EXT_fog_coord --------------------------- */ - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 - -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 - -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (GLAPIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); - -#define glFogCoordPointerEXT GLEW_GET_FUN(__glewFogCoordPointerEXT) -#define glFogCoorddEXT GLEW_GET_FUN(__glewFogCoorddEXT) -#define glFogCoorddvEXT GLEW_GET_FUN(__glewFogCoorddvEXT) -#define glFogCoordfEXT GLEW_GET_FUN(__glewFogCoordfEXT) -#define glFogCoordfvEXT GLEW_GET_FUN(__glewFogCoordfvEXT) - -#define GLEW_EXT_fog_coord GLEW_GET_VAR(__GLEW_EXT_fog_coord) - -#endif /* GL_EXT_fog_coord */ - -/* ------------------------ GL_EXT_fragment_lighting ----------------------- */ - -#ifndef GL_EXT_fragment_lighting -#define GL_EXT_fragment_lighting 1 - -#define GL_FRAGMENT_LIGHTING_EXT 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_EXT 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_EXT 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_EXT 0x8405 -#define GL_CURRENT_RASTER_NORMAL_EXT 0x8406 -#define GL_LIGHT_ENV_MODE_EXT 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT 0x840B -#define GL_FRAGMENT_LIGHT0_EXT 0x840C -#define GL_FRAGMENT_LIGHT7_EXT 0x8413 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALEXTPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVEXTPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIEXTPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVEXTPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFEXTPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIEXTPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFEXTPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIEXTPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVEXTPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVEXTPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVEXTPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVEXTPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLLIGHTENVIEXTPROC) (GLenum pname, GLint param); - -#define glFragmentColorMaterialEXT GLEW_GET_FUN(__glewFragmentColorMaterialEXT) -#define glFragmentLightModelfEXT GLEW_GET_FUN(__glewFragmentLightModelfEXT) -#define glFragmentLightModelfvEXT GLEW_GET_FUN(__glewFragmentLightModelfvEXT) -#define glFragmentLightModeliEXT GLEW_GET_FUN(__glewFragmentLightModeliEXT) -#define glFragmentLightModelivEXT GLEW_GET_FUN(__glewFragmentLightModelivEXT) -#define glFragmentLightfEXT GLEW_GET_FUN(__glewFragmentLightfEXT) -#define glFragmentLightfvEXT GLEW_GET_FUN(__glewFragmentLightfvEXT) -#define glFragmentLightiEXT GLEW_GET_FUN(__glewFragmentLightiEXT) -#define glFragmentLightivEXT GLEW_GET_FUN(__glewFragmentLightivEXT) -#define glFragmentMaterialfEXT GLEW_GET_FUN(__glewFragmentMaterialfEXT) -#define glFragmentMaterialfvEXT GLEW_GET_FUN(__glewFragmentMaterialfvEXT) -#define glFragmentMaterialiEXT GLEW_GET_FUN(__glewFragmentMaterialiEXT) -#define glFragmentMaterialivEXT GLEW_GET_FUN(__glewFragmentMaterialivEXT) -#define glGetFragmentLightfvEXT GLEW_GET_FUN(__glewGetFragmentLightfvEXT) -#define glGetFragmentLightivEXT GLEW_GET_FUN(__glewGetFragmentLightivEXT) -#define glGetFragmentMaterialfvEXT GLEW_GET_FUN(__glewGetFragmentMaterialfvEXT) -#define glGetFragmentMaterialivEXT GLEW_GET_FUN(__glewGetFragmentMaterialivEXT) -#define glLightEnviEXT GLEW_GET_FUN(__glewLightEnviEXT) - -#define GLEW_EXT_fragment_lighting GLEW_GET_VAR(__GLEW_EXT_fragment_lighting) - -#endif /* GL_EXT_fragment_lighting */ - -/* ------------------------ GL_EXT_framebuffer_blit ------------------------ */ - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 - -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA - -typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - -#define glBlitFramebufferEXT GLEW_GET_FUN(__glewBlitFramebufferEXT) - -#define GLEW_EXT_framebuffer_blit GLEW_GET_VAR(__GLEW_EXT_framebuffer_blit) - -#endif /* GL_EXT_framebuffer_blit */ - -/* --------------------- GL_EXT_framebuffer_multisample -------------------- */ - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 - -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleEXT GLEW_GET_FUN(__glewRenderbufferStorageMultisampleEXT) - -#define GLEW_EXT_framebuffer_multisample GLEW_GET_VAR(__GLEW_EXT_framebuffer_multisample) - -#endif /* GL_EXT_framebuffer_multisample */ - -/* ----------------------- GL_EXT_framebuffer_object ----------------------- */ - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 - -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 - -typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint* framebuffers); -typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLboolean (GLAPIENTRY * PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); - -#define glBindFramebufferEXT GLEW_GET_FUN(__glewBindFramebufferEXT) -#define glBindRenderbufferEXT GLEW_GET_FUN(__glewBindRenderbufferEXT) -#define glCheckFramebufferStatusEXT GLEW_GET_FUN(__glewCheckFramebufferStatusEXT) -#define glDeleteFramebuffersEXT GLEW_GET_FUN(__glewDeleteFramebuffersEXT) -#define glDeleteRenderbuffersEXT GLEW_GET_FUN(__glewDeleteRenderbuffersEXT) -#define glFramebufferRenderbufferEXT GLEW_GET_FUN(__glewFramebufferRenderbufferEXT) -#define glFramebufferTexture1DEXT GLEW_GET_FUN(__glewFramebufferTexture1DEXT) -#define glFramebufferTexture2DEXT GLEW_GET_FUN(__glewFramebufferTexture2DEXT) -#define glFramebufferTexture3DEXT GLEW_GET_FUN(__glewFramebufferTexture3DEXT) -#define glGenFramebuffersEXT GLEW_GET_FUN(__glewGenFramebuffersEXT) -#define glGenRenderbuffersEXT GLEW_GET_FUN(__glewGenRenderbuffersEXT) -#define glGenerateMipmapEXT GLEW_GET_FUN(__glewGenerateMipmapEXT) -#define glGetFramebufferAttachmentParameterivEXT GLEW_GET_FUN(__glewGetFramebufferAttachmentParameterivEXT) -#define glGetRenderbufferParameterivEXT GLEW_GET_FUN(__glewGetRenderbufferParameterivEXT) -#define glIsFramebufferEXT GLEW_GET_FUN(__glewIsFramebufferEXT) -#define glIsRenderbufferEXT GLEW_GET_FUN(__glewIsRenderbufferEXT) -#define glRenderbufferStorageEXT GLEW_GET_FUN(__glewRenderbufferStorageEXT) - -#define GLEW_EXT_framebuffer_object GLEW_GET_VAR(__GLEW_EXT_framebuffer_object) - -#endif /* GL_EXT_framebuffer_object */ - -/* ------------------------ GL_EXT_framebuffer_sRGB ------------------------ */ - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 - -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA - -#define GLEW_EXT_framebuffer_sRGB GLEW_GET_VAR(__GLEW_EXT_framebuffer_sRGB) - -#endif /* GL_EXT_framebuffer_sRGB */ - -/* ------------------------ GL_EXT_geometry_shader4 ------------------------ */ - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 - -#define GL_LINES_ADJACENCY_EXT 0xA -#define GL_LINE_STRIP_ADJACENCY_EXT 0xB -#define GL_TRIANGLES_ADJACENCY_EXT 0xC -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0xD -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 - -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); - -#define glFramebufferTextureEXT GLEW_GET_FUN(__glewFramebufferTextureEXT) -#define glFramebufferTextureFaceEXT GLEW_GET_FUN(__glewFramebufferTextureFaceEXT) -#define glFramebufferTextureLayerEXT GLEW_GET_FUN(__glewFramebufferTextureLayerEXT) -#define glProgramParameteriEXT GLEW_GET_FUN(__glewProgramParameteriEXT) - -#define GLEW_EXT_geometry_shader4 GLEW_GET_VAR(__GLEW_EXT_geometry_shader4) - -#endif /* GL_EXT_geometry_shader4 */ - -/* --------------------- GL_EXT_gpu_program_parameters --------------------- */ - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat* params); - -#define glProgramEnvParameters4fvEXT GLEW_GET_FUN(__glewProgramEnvParameters4fvEXT) -#define glProgramLocalParameters4fvEXT GLEW_GET_FUN(__glewProgramLocalParameters4fvEXT) - -#define GLEW_EXT_gpu_program_parameters GLEW_GET_VAR(__GLEW_EXT_gpu_program_parameters) - -#endif /* GL_EXT_gpu_program_parameters */ - -/* --------------------------- GL_EXT_gpu_shader4 -------------------------- */ - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 - -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 - -typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); - -#define glBindFragDataLocationEXT GLEW_GET_FUN(__glewBindFragDataLocationEXT) -#define glGetFragDataLocationEXT GLEW_GET_FUN(__glewGetFragDataLocationEXT) -#define glGetUniformuivEXT GLEW_GET_FUN(__glewGetUniformuivEXT) -#define glGetVertexAttribIivEXT GLEW_GET_FUN(__glewGetVertexAttribIivEXT) -#define glGetVertexAttribIuivEXT GLEW_GET_FUN(__glewGetVertexAttribIuivEXT) -#define glUniform1uiEXT GLEW_GET_FUN(__glewUniform1uiEXT) -#define glUniform1uivEXT GLEW_GET_FUN(__glewUniform1uivEXT) -#define glUniform2uiEXT GLEW_GET_FUN(__glewUniform2uiEXT) -#define glUniform2uivEXT GLEW_GET_FUN(__glewUniform2uivEXT) -#define glUniform3uiEXT GLEW_GET_FUN(__glewUniform3uiEXT) -#define glUniform3uivEXT GLEW_GET_FUN(__glewUniform3uivEXT) -#define glUniform4uiEXT GLEW_GET_FUN(__glewUniform4uiEXT) -#define glUniform4uivEXT GLEW_GET_FUN(__glewUniform4uivEXT) -#define glVertexAttribI1iEXT GLEW_GET_FUN(__glewVertexAttribI1iEXT) -#define glVertexAttribI1ivEXT GLEW_GET_FUN(__glewVertexAttribI1ivEXT) -#define glVertexAttribI1uiEXT GLEW_GET_FUN(__glewVertexAttribI1uiEXT) -#define glVertexAttribI1uivEXT GLEW_GET_FUN(__glewVertexAttribI1uivEXT) -#define glVertexAttribI2iEXT GLEW_GET_FUN(__glewVertexAttribI2iEXT) -#define glVertexAttribI2ivEXT GLEW_GET_FUN(__glewVertexAttribI2ivEXT) -#define glVertexAttribI2uiEXT GLEW_GET_FUN(__glewVertexAttribI2uiEXT) -#define glVertexAttribI2uivEXT GLEW_GET_FUN(__glewVertexAttribI2uivEXT) -#define glVertexAttribI3iEXT GLEW_GET_FUN(__glewVertexAttribI3iEXT) -#define glVertexAttribI3ivEXT GLEW_GET_FUN(__glewVertexAttribI3ivEXT) -#define glVertexAttribI3uiEXT GLEW_GET_FUN(__glewVertexAttribI3uiEXT) -#define glVertexAttribI3uivEXT GLEW_GET_FUN(__glewVertexAttribI3uivEXT) -#define glVertexAttribI4bvEXT GLEW_GET_FUN(__glewVertexAttribI4bvEXT) -#define glVertexAttribI4iEXT GLEW_GET_FUN(__glewVertexAttribI4iEXT) -#define glVertexAttribI4ivEXT GLEW_GET_FUN(__glewVertexAttribI4ivEXT) -#define glVertexAttribI4svEXT GLEW_GET_FUN(__glewVertexAttribI4svEXT) -#define glVertexAttribI4ubvEXT GLEW_GET_FUN(__glewVertexAttribI4ubvEXT) -#define glVertexAttribI4uiEXT GLEW_GET_FUN(__glewVertexAttribI4uiEXT) -#define glVertexAttribI4uivEXT GLEW_GET_FUN(__glewVertexAttribI4uivEXT) -#define glVertexAttribI4usvEXT GLEW_GET_FUN(__glewVertexAttribI4usvEXT) -#define glVertexAttribIPointerEXT GLEW_GET_FUN(__glewVertexAttribIPointerEXT) - -#define GLEW_EXT_gpu_shader4 GLEW_GET_VAR(__GLEW_EXT_gpu_shader4) - -#endif /* GL_EXT_gpu_shader4 */ - -/* ---------------------------- GL_EXT_histogram --------------------------- */ - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 - -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 - -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (GLAPIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); - -#define glGetHistogramEXT GLEW_GET_FUN(__glewGetHistogramEXT) -#define glGetHistogramParameterfvEXT GLEW_GET_FUN(__glewGetHistogramParameterfvEXT) -#define glGetHistogramParameterivEXT GLEW_GET_FUN(__glewGetHistogramParameterivEXT) -#define glGetMinmaxEXT GLEW_GET_FUN(__glewGetMinmaxEXT) -#define glGetMinmaxParameterfvEXT GLEW_GET_FUN(__glewGetMinmaxParameterfvEXT) -#define glGetMinmaxParameterivEXT GLEW_GET_FUN(__glewGetMinmaxParameterivEXT) -#define glHistogramEXT GLEW_GET_FUN(__glewHistogramEXT) -#define glMinmaxEXT GLEW_GET_FUN(__glewMinmaxEXT) -#define glResetHistogramEXT GLEW_GET_FUN(__glewResetHistogramEXT) -#define glResetMinmaxEXT GLEW_GET_FUN(__glewResetMinmaxEXT) - -#define GLEW_EXT_histogram GLEW_GET_VAR(__GLEW_EXT_histogram) - -#endif /* GL_EXT_histogram */ - -/* ----------------------- GL_EXT_index_array_formats ---------------------- */ - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 - -#define GLEW_EXT_index_array_formats GLEW_GET_VAR(__GLEW_EXT_index_array_formats) - -#endif /* GL_EXT_index_array_formats */ - -/* --------------------------- GL_EXT_index_func --------------------------- */ - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 - -typedef void (GLAPIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLfloat ref); - -#define glIndexFuncEXT GLEW_GET_FUN(__glewIndexFuncEXT) - -#define GLEW_EXT_index_func GLEW_GET_VAR(__GLEW_EXT_index_func) - -#endif /* GL_EXT_index_func */ - -/* ------------------------- GL_EXT_index_material ------------------------- */ - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 - -typedef void (GLAPIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glIndexMaterialEXT GLEW_GET_FUN(__glewIndexMaterialEXT) - -#define GLEW_EXT_index_material GLEW_GET_VAR(__GLEW_EXT_index_material) - -#endif /* GL_EXT_index_material */ - -/* -------------------------- GL_EXT_index_texture ------------------------- */ - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 - -#define GLEW_EXT_index_texture GLEW_GET_VAR(__GLEW_EXT_index_texture) - -#endif /* GL_EXT_index_texture */ - -/* -------------------------- GL_EXT_light_texture ------------------------- */ - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 - -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 - -typedef void (GLAPIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (GLAPIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (GLAPIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); - -#define glApplyTextureEXT GLEW_GET_FUN(__glewApplyTextureEXT) -#define glTextureLightEXT GLEW_GET_FUN(__glewTextureLightEXT) -#define glTextureMaterialEXT GLEW_GET_FUN(__glewTextureMaterialEXT) - -#define GLEW_EXT_light_texture GLEW_GET_VAR(__GLEW_EXT_light_texture) - -#endif /* GL_EXT_light_texture */ - -/* ------------------------- GL_EXT_misc_attribute ------------------------- */ - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 - -#define GLEW_EXT_misc_attribute GLEW_GET_VAR(__GLEW_EXT_misc_attribute) - -#endif /* GL_EXT_misc_attribute */ - -/* ------------------------ GL_EXT_multi_draw_arrays ----------------------- */ - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint* first, GLsizei *count, GLsizei primcount); -typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, GLsizei* count, GLenum type, const GLvoid **indices, GLsizei primcount); - -#define glMultiDrawArraysEXT GLEW_GET_FUN(__glewMultiDrawArraysEXT) -#define glMultiDrawElementsEXT GLEW_GET_FUN(__glewMultiDrawElementsEXT) - -#define GLEW_EXT_multi_draw_arrays GLEW_GET_VAR(__GLEW_EXT_multi_draw_arrays) - -#endif /* GL_EXT_multi_draw_arrays */ - -/* --------------------------- GL_EXT_multisample -------------------------- */ - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 - -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); - -#define glSampleMaskEXT GLEW_GET_FUN(__glewSampleMaskEXT) -#define glSamplePatternEXT GLEW_GET_FUN(__glewSamplePatternEXT) - -#define GLEW_EXT_multisample GLEW_GET_VAR(__GLEW_EXT_multisample) - -#endif /* GL_EXT_multisample */ - -/* ---------------------- GL_EXT_packed_depth_stencil ---------------------- */ - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 - -#define GLEW_EXT_packed_depth_stencil GLEW_GET_VAR(__GLEW_EXT_packed_depth_stencil) - -#endif /* GL_EXT_packed_depth_stencil */ - -/* -------------------------- GL_EXT_packed_float -------------------------- */ - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 - -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C - -#define GLEW_EXT_packed_float GLEW_GET_VAR(__GLEW_EXT_packed_float) - -#endif /* GL_EXT_packed_float */ - -/* -------------------------- GL_EXT_packed_pixels ------------------------- */ - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 - -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 - -#define GLEW_EXT_packed_pixels GLEW_GET_VAR(__GLEW_EXT_packed_pixels) - -#endif /* GL_EXT_packed_pixels */ - -/* ------------------------ GL_EXT_paletted_texture ------------------------ */ - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 - -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 -#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void* data); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint* params); - -#define glColorTableEXT GLEW_GET_FUN(__glewColorTableEXT) -#define glGetColorTableEXT GLEW_GET_FUN(__glewGetColorTableEXT) -#define glGetColorTableParameterfvEXT GLEW_GET_FUN(__glewGetColorTableParameterfvEXT) -#define glGetColorTableParameterivEXT GLEW_GET_FUN(__glewGetColorTableParameterivEXT) - -#define GLEW_EXT_paletted_texture GLEW_GET_VAR(__GLEW_EXT_paletted_texture) - -#endif /* GL_EXT_paletted_texture */ - -/* ----------------------- GL_EXT_pixel_buffer_object ---------------------- */ - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 - -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF - -#define GLEW_EXT_pixel_buffer_object GLEW_GET_VAR(__GLEW_EXT_pixel_buffer_object) - -#endif /* GL_EXT_pixel_buffer_object */ - -/* ------------------------- GL_EXT_pixel_transform ------------------------ */ - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 - -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 - -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetPixelTransformParameterfvEXT GLEW_GET_FUN(__glewGetPixelTransformParameterfvEXT) -#define glGetPixelTransformParameterivEXT GLEW_GET_FUN(__glewGetPixelTransformParameterivEXT) -#define glPixelTransformParameterfEXT GLEW_GET_FUN(__glewPixelTransformParameterfEXT) -#define glPixelTransformParameterfvEXT GLEW_GET_FUN(__glewPixelTransformParameterfvEXT) -#define glPixelTransformParameteriEXT GLEW_GET_FUN(__glewPixelTransformParameteriEXT) -#define glPixelTransformParameterivEXT GLEW_GET_FUN(__glewPixelTransformParameterivEXT) - -#define GLEW_EXT_pixel_transform GLEW_GET_VAR(__GLEW_EXT_pixel_transform) - -#endif /* GL_EXT_pixel_transform */ - -/* ------------------- GL_EXT_pixel_transform_color_table ------------------ */ - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 - -#define GLEW_EXT_pixel_transform_color_table GLEW_GET_VAR(__GLEW_EXT_pixel_transform_color_table) - -#endif /* GL_EXT_pixel_transform_color_table */ - -/* ------------------------ GL_EXT_point_parameters ------------------------ */ - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 - -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params); - -#define glPointParameterfEXT GLEW_GET_FUN(__glewPointParameterfEXT) -#define glPointParameterfvEXT GLEW_GET_FUN(__glewPointParameterfvEXT) - -#define GLEW_EXT_point_parameters GLEW_GET_VAR(__GLEW_EXT_point_parameters) - -#endif /* GL_EXT_point_parameters */ - -/* ------------------------- GL_EXT_polygon_offset ------------------------- */ - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 - -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 - -typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); - -#define glPolygonOffsetEXT GLEW_GET_FUN(__glewPolygonOffsetEXT) - -#define GLEW_EXT_polygon_offset GLEW_GET_VAR(__GLEW_EXT_polygon_offset) - -#endif /* GL_EXT_polygon_offset */ - -/* ------------------------- GL_EXT_rescale_normal ------------------------- */ - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 - -#define GL_RESCALE_NORMAL_EXT 0x803A - -#define GLEW_EXT_rescale_normal GLEW_GET_VAR(__GLEW_EXT_rescale_normal) - -#endif /* GL_EXT_rescale_normal */ - -/* -------------------------- GL_EXT_scene_marker -------------------------- */ - -#ifndef GL_EXT_scene_marker -#define GL_EXT_scene_marker 1 - -typedef void (GLAPIENTRY * PFNGLBEGINSCENEEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLENDSCENEEXTPROC) (void); - -#define glBeginSceneEXT GLEW_GET_FUN(__glewBeginSceneEXT) -#define glEndSceneEXT GLEW_GET_FUN(__glewEndSceneEXT) - -#define GLEW_EXT_scene_marker GLEW_GET_VAR(__GLEW_EXT_scene_marker) - -#endif /* GL_EXT_scene_marker */ - -/* ------------------------- GL_EXT_secondary_color ------------------------ */ - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 - -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E - -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); - -#define glSecondaryColor3bEXT GLEW_GET_FUN(__glewSecondaryColor3bEXT) -#define glSecondaryColor3bvEXT GLEW_GET_FUN(__glewSecondaryColor3bvEXT) -#define glSecondaryColor3dEXT GLEW_GET_FUN(__glewSecondaryColor3dEXT) -#define glSecondaryColor3dvEXT GLEW_GET_FUN(__glewSecondaryColor3dvEXT) -#define glSecondaryColor3fEXT GLEW_GET_FUN(__glewSecondaryColor3fEXT) -#define glSecondaryColor3fvEXT GLEW_GET_FUN(__glewSecondaryColor3fvEXT) -#define glSecondaryColor3iEXT GLEW_GET_FUN(__glewSecondaryColor3iEXT) -#define glSecondaryColor3ivEXT GLEW_GET_FUN(__glewSecondaryColor3ivEXT) -#define glSecondaryColor3sEXT GLEW_GET_FUN(__glewSecondaryColor3sEXT) -#define glSecondaryColor3svEXT GLEW_GET_FUN(__glewSecondaryColor3svEXT) -#define glSecondaryColor3ubEXT GLEW_GET_FUN(__glewSecondaryColor3ubEXT) -#define glSecondaryColor3ubvEXT GLEW_GET_FUN(__glewSecondaryColor3ubvEXT) -#define glSecondaryColor3uiEXT GLEW_GET_FUN(__glewSecondaryColor3uiEXT) -#define glSecondaryColor3uivEXT GLEW_GET_FUN(__glewSecondaryColor3uivEXT) -#define glSecondaryColor3usEXT GLEW_GET_FUN(__glewSecondaryColor3usEXT) -#define glSecondaryColor3usvEXT GLEW_GET_FUN(__glewSecondaryColor3usvEXT) -#define glSecondaryColorPointerEXT GLEW_GET_FUN(__glewSecondaryColorPointerEXT) - -#define GLEW_EXT_secondary_color GLEW_GET_VAR(__GLEW_EXT_secondary_color) - -#endif /* GL_EXT_secondary_color */ - -/* --------------------- GL_EXT_separate_specular_color -------------------- */ - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 - -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA - -#define GLEW_EXT_separate_specular_color GLEW_GET_VAR(__GLEW_EXT_separate_specular_color) - -#endif /* GL_EXT_separate_specular_color */ - -/* -------------------------- GL_EXT_shadow_funcs -------------------------- */ - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 - -#define GLEW_EXT_shadow_funcs GLEW_GET_VAR(__GLEW_EXT_shadow_funcs) - -#endif /* GL_EXT_shadow_funcs */ - -/* --------------------- GL_EXT_shared_texture_palette --------------------- */ - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 - -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB - -#define GLEW_EXT_shared_texture_palette GLEW_GET_VAR(__GLEW_EXT_shared_texture_palette) - -#endif /* GL_EXT_shared_texture_palette */ - -/* ------------------------ GL_EXT_stencil_clear_tag ----------------------- */ - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 - -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 - -#define GLEW_EXT_stencil_clear_tag GLEW_GET_VAR(__GLEW_EXT_stencil_clear_tag) - -#endif /* GL_EXT_stencil_clear_tag */ - -/* ------------------------ GL_EXT_stencil_two_side ------------------------ */ - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 - -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 - -typedef void (GLAPIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); - -#define glActiveStencilFaceEXT GLEW_GET_FUN(__glewActiveStencilFaceEXT) - -#define GLEW_EXT_stencil_two_side GLEW_GET_VAR(__GLEW_EXT_stencil_two_side) - -#endif /* GL_EXT_stencil_two_side */ - -/* -------------------------- GL_EXT_stencil_wrap -------------------------- */ - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 - -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 - -#define GLEW_EXT_stencil_wrap GLEW_GET_VAR(__GLEW_EXT_stencil_wrap) - -#endif /* GL_EXT_stencil_wrap */ - -/* --------------------------- GL_EXT_subtexture --------------------------- */ - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 - -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels); - -#define glTexSubImage1DEXT GLEW_GET_FUN(__glewTexSubImage1DEXT) -#define glTexSubImage2DEXT GLEW_GET_FUN(__glewTexSubImage2DEXT) -#define glTexSubImage3DEXT GLEW_GET_FUN(__glewTexSubImage3DEXT) - -#define GLEW_EXT_subtexture GLEW_GET_VAR(__GLEW_EXT_subtexture) - -#endif /* GL_EXT_subtexture */ - -/* ----------------------------- GL_EXT_texture ---------------------------- */ - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 - -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 - -#define GLEW_EXT_texture GLEW_GET_VAR(__GLEW_EXT_texture) - -#endif /* GL_EXT_texture */ - -/* ---------------------------- GL_EXT_texture3D --------------------------- */ - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 - -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels); - -#define glTexImage3DEXT GLEW_GET_FUN(__glewTexImage3DEXT) - -#define GLEW_EXT_texture3D GLEW_GET_VAR(__GLEW_EXT_texture3D) - -#endif /* GL_EXT_texture3D */ - -/* -------------------------- GL_EXT_texture_array ------------------------- */ - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 - -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D - -#define GLEW_EXT_texture_array GLEW_GET_VAR(__GLEW_EXT_texture_array) - -#endif /* GL_EXT_texture_array */ - -/* ---------------------- GL_EXT_texture_buffer_object --------------------- */ - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 - -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E - -typedef void (GLAPIENTRY * PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); - -#define glTexBufferEXT GLEW_GET_FUN(__glewTexBufferEXT) - -#define GLEW_EXT_texture_buffer_object GLEW_GET_VAR(__GLEW_EXT_texture_buffer_object) - -#endif /* GL_EXT_texture_buffer_object */ - -/* -------------------- GL_EXT_texture_compression_dxt1 -------------------- */ - -#ifndef GL_EXT_texture_compression_dxt1 -#define GL_EXT_texture_compression_dxt1 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 - -#define GLEW_EXT_texture_compression_dxt1 GLEW_GET_VAR(__GLEW_EXT_texture_compression_dxt1) - -#endif /* GL_EXT_texture_compression_dxt1 */ - -/* -------------------- GL_EXT_texture_compression_latc -------------------- */ - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 - -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 - -#define GLEW_EXT_texture_compression_latc GLEW_GET_VAR(__GLEW_EXT_texture_compression_latc) - -#endif /* GL_EXT_texture_compression_latc */ - -/* -------------------- GL_EXT_texture_compression_rgtc -------------------- */ - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 - -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE - -#define GLEW_EXT_texture_compression_rgtc GLEW_GET_VAR(__GLEW_EXT_texture_compression_rgtc) - -#endif /* GL_EXT_texture_compression_rgtc */ - -/* -------------------- GL_EXT_texture_compression_s3tc -------------------- */ - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 - -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 - -#define GLEW_EXT_texture_compression_s3tc GLEW_GET_VAR(__GLEW_EXT_texture_compression_s3tc) - -#endif /* GL_EXT_texture_compression_s3tc */ - -/* ------------------------ GL_EXT_texture_cube_map ------------------------ */ - -#ifndef GL_EXT_texture_cube_map -#define GL_EXT_texture_cube_map 1 - -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C - -#define GLEW_EXT_texture_cube_map GLEW_GET_VAR(__GLEW_EXT_texture_cube_map) - -#endif /* GL_EXT_texture_cube_map */ - -/* ----------------------- GL_EXT_texture_edge_clamp ----------------------- */ - -#ifndef GL_EXT_texture_edge_clamp -#define GL_EXT_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_EXT 0x812F - -#define GLEW_EXT_texture_edge_clamp GLEW_GET_VAR(__GLEW_EXT_texture_edge_clamp) - -#endif /* GL_EXT_texture_edge_clamp */ - -/* --------------------------- GL_EXT_texture_env -------------------------- */ - -#ifndef GL_EXT_texture_env -#define GL_EXT_texture_env 1 - -#define GL_TEXTURE_ENV0_EXT 0 -#define GL_ENV_BLEND_EXT 0 -#define GL_TEXTURE_ENV_SHIFT_EXT 0 -#define GL_ENV_REPLACE_EXT 0 -#define GL_ENV_ADD_EXT 0 -#define GL_ENV_SUBTRACT_EXT 0 -#define GL_TEXTURE_ENV_MODE_ALPHA_EXT 0 -#define GL_ENV_REVERSE_SUBTRACT_EXT 0 -#define GL_ENV_REVERSE_BLEND_EXT 0 -#define GL_ENV_COPY_EXT 0 -#define GL_ENV_MODULATE_EXT 0 - -#define GLEW_EXT_texture_env GLEW_GET_VAR(__GLEW_EXT_texture_env) - -#endif /* GL_EXT_texture_env */ - -/* ------------------------- GL_EXT_texture_env_add ------------------------ */ - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 - -#define GLEW_EXT_texture_env_add GLEW_GET_VAR(__GLEW_EXT_texture_env_add) - -#endif /* GL_EXT_texture_env_add */ - -/* ----------------------- GL_EXT_texture_env_combine ---------------------- */ - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 - -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A - -#define GLEW_EXT_texture_env_combine GLEW_GET_VAR(__GLEW_EXT_texture_env_combine) - -#endif /* GL_EXT_texture_env_combine */ - -/* ------------------------ GL_EXT_texture_env_dot3 ------------------------ */ - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 - -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 - -#define GLEW_EXT_texture_env_dot3 GLEW_GET_VAR(__GLEW_EXT_texture_env_dot3) - -#endif /* GL_EXT_texture_env_dot3 */ - -/* ------------------- GL_EXT_texture_filter_anisotropic ------------------- */ - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 - -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF - -#define GLEW_EXT_texture_filter_anisotropic GLEW_GET_VAR(__GLEW_EXT_texture_filter_anisotropic) - -#endif /* GL_EXT_texture_filter_anisotropic */ - -/* ------------------------- GL_EXT_texture_integer ------------------------ */ - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 - -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E - -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (GLAPIENTRY * PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); - -#define glClearColorIiEXT GLEW_GET_FUN(__glewClearColorIiEXT) -#define glClearColorIuiEXT GLEW_GET_FUN(__glewClearColorIuiEXT) -#define glGetTexParameterIivEXT GLEW_GET_FUN(__glewGetTexParameterIivEXT) -#define glGetTexParameterIuivEXT GLEW_GET_FUN(__glewGetTexParameterIuivEXT) -#define glTexParameterIivEXT GLEW_GET_FUN(__glewTexParameterIivEXT) -#define glTexParameterIuivEXT GLEW_GET_FUN(__glewTexParameterIuivEXT) - -#define GLEW_EXT_texture_integer GLEW_GET_VAR(__GLEW_EXT_texture_integer) - -#endif /* GL_EXT_texture_integer */ - -/* ------------------------ GL_EXT_texture_lod_bias ------------------------ */ - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 - -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 - -#define GLEW_EXT_texture_lod_bias GLEW_GET_VAR(__GLEW_EXT_texture_lod_bias) - -#endif /* GL_EXT_texture_lod_bias */ - -/* ---------------------- GL_EXT_texture_mirror_clamp ---------------------- */ - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 - -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 - -#define GLEW_EXT_texture_mirror_clamp GLEW_GET_VAR(__GLEW_EXT_texture_mirror_clamp) - -#endif /* GL_EXT_texture_mirror_clamp */ - -/* ------------------------- GL_EXT_texture_object ------------------------- */ - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 - -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A - -typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint* textures, GLboolean* residences); -typedef void (GLAPIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (GLAPIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint* textures); -typedef void (GLAPIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint* textures); -typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint* textures, const GLclampf* priorities); - -#define glAreTexturesResidentEXT GLEW_GET_FUN(__glewAreTexturesResidentEXT) -#define glBindTextureEXT GLEW_GET_FUN(__glewBindTextureEXT) -#define glDeleteTexturesEXT GLEW_GET_FUN(__glewDeleteTexturesEXT) -#define glGenTexturesEXT GLEW_GET_FUN(__glewGenTexturesEXT) -#define glIsTextureEXT GLEW_GET_FUN(__glewIsTextureEXT) -#define glPrioritizeTexturesEXT GLEW_GET_FUN(__glewPrioritizeTexturesEXT) - -#define GLEW_EXT_texture_object GLEW_GET_VAR(__GLEW_EXT_texture_object) - -#endif /* GL_EXT_texture_object */ - -/* --------------------- GL_EXT_texture_perturb_normal --------------------- */ - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 - -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF - -typedef void (GLAPIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); - -#define glTextureNormalEXT GLEW_GET_FUN(__glewTextureNormalEXT) - -#define GLEW_EXT_texture_perturb_normal GLEW_GET_VAR(__GLEW_EXT_texture_perturb_normal) - -#endif /* GL_EXT_texture_perturb_normal */ - -/* ------------------------ GL_EXT_texture_rectangle ----------------------- */ - -#ifndef GL_EXT_texture_rectangle -#define GL_EXT_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 - -#define GLEW_EXT_texture_rectangle GLEW_GET_VAR(__GLEW_EXT_texture_rectangle) - -#endif /* GL_EXT_texture_rectangle */ - -/* -------------------------- GL_EXT_texture_sRGB -------------------------- */ - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F - -#define GLEW_EXT_texture_sRGB GLEW_GET_VAR(__GLEW_EXT_texture_sRGB) - -#endif /* GL_EXT_texture_sRGB */ - -/* --------------------- GL_EXT_texture_shared_exponent -------------------- */ - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 - -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F - -#define GLEW_EXT_texture_shared_exponent GLEW_GET_VAR(__GLEW_EXT_texture_shared_exponent) - -#endif /* GL_EXT_texture_shared_exponent */ - -/* ------------------------- GL_EXT_texture_swizzle ------------------------ */ - -#ifndef GL_EXT_texture_swizzle -#define GL_EXT_texture_swizzle 1 - -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 - -#define GLEW_EXT_texture_swizzle GLEW_GET_VAR(__GLEW_EXT_texture_swizzle) - -#endif /* GL_EXT_texture_swizzle */ - -/* --------------------------- GL_EXT_timer_query -------------------------- */ - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 - -#define GL_TIME_ELAPSED_EXT 0x88BF - -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); - -#define glGetQueryObjecti64vEXT GLEW_GET_FUN(__glewGetQueryObjecti64vEXT) -#define glGetQueryObjectui64vEXT GLEW_GET_FUN(__glewGetQueryObjectui64vEXT) - -#define GLEW_EXT_timer_query GLEW_GET_VAR(__GLEW_EXT_timer_query) - -#endif /* GL_EXT_timer_query */ - -/* ----------------------- GL_EXT_transform_feedback ----------------------- */ - -#ifndef GL_EXT_transform_feedback -#define GL_EXT_transform_feedback 1 - -#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F - -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei *size, GLenum *type, char *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); - -#define glBeginTransformFeedbackEXT GLEW_GET_FUN(__glewBeginTransformFeedbackEXT) -#define glBindBufferBaseEXT GLEW_GET_FUN(__glewBindBufferBaseEXT) -#define glBindBufferOffsetEXT GLEW_GET_FUN(__glewBindBufferOffsetEXT) -#define glBindBufferRangeEXT GLEW_GET_FUN(__glewBindBufferRangeEXT) -#define glEndTransformFeedbackEXT GLEW_GET_FUN(__glewEndTransformFeedbackEXT) -#define glGetTransformFeedbackVaryingEXT GLEW_GET_FUN(__glewGetTransformFeedbackVaryingEXT) -#define glTransformFeedbackVaryingsEXT GLEW_GET_FUN(__glewTransformFeedbackVaryingsEXT) - -#define GLEW_EXT_transform_feedback GLEW_GET_VAR(__GLEW_EXT_transform_feedback) - -#endif /* GL_EXT_transform_feedback */ - -/* -------------------------- GL_EXT_vertex_array -------------------------- */ - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 - -#define GL_DOUBLE_EXT 0x140A -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 - -typedef void (GLAPIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (GLAPIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean* pointer); -typedef void (GLAPIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, void** params); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); - -#define glArrayElementEXT GLEW_GET_FUN(__glewArrayElementEXT) -#define glColorPointerEXT GLEW_GET_FUN(__glewColorPointerEXT) -#define glDrawArraysEXT GLEW_GET_FUN(__glewDrawArraysEXT) -#define glEdgeFlagPointerEXT GLEW_GET_FUN(__glewEdgeFlagPointerEXT) -#define glGetPointervEXT GLEW_GET_FUN(__glewGetPointervEXT) -#define glIndexPointerEXT GLEW_GET_FUN(__glewIndexPointerEXT) -#define glNormalPointerEXT GLEW_GET_FUN(__glewNormalPointerEXT) -#define glTexCoordPointerEXT GLEW_GET_FUN(__glewTexCoordPointerEXT) -#define glVertexPointerEXT GLEW_GET_FUN(__glewVertexPointerEXT) - -#define GLEW_EXT_vertex_array GLEW_GET_VAR(__GLEW_EXT_vertex_array) - -#endif /* GL_EXT_vertex_array */ - -/* ------------------------ GL_EXT_vertex_array_bgra ----------------------- */ - -#ifndef GL_EXT_vertex_array_bgra -#define GL_EXT_vertex_array_bgra 1 - -#define GL_BGRA 0x80E1 - -#define GLEW_EXT_vertex_array_bgra GLEW_GET_VAR(__GLEW_EXT_vertex_array_bgra) - -#endif /* GL_EXT_vertex_array_bgra */ - -/* -------------------------- GL_EXT_vertex_shader ------------------------- */ - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 - -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED - -typedef void (GLAPIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef GLuint (GLAPIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (GLAPIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef void (GLAPIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (GLAPIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum dataType, GLenum storageType, GLenum range, GLuint components); -typedef GLuint (GLAPIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (GLAPIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid **data); -typedef void (GLAPIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLboolean (GLAPIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (GLAPIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (GLAPIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (GLAPIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (GLAPIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (GLAPIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, GLvoid *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, GLbyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, GLdouble *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, GLfloat *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, GLint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, GLshort *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, GLubyte *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, GLuint *addr); -typedef void (GLAPIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, GLushort *addr); -typedef void (GLAPIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); - -#define glBeginVertexShaderEXT GLEW_GET_FUN(__glewBeginVertexShaderEXT) -#define glBindLightParameterEXT GLEW_GET_FUN(__glewBindLightParameterEXT) -#define glBindMaterialParameterEXT GLEW_GET_FUN(__glewBindMaterialParameterEXT) -#define glBindParameterEXT GLEW_GET_FUN(__glewBindParameterEXT) -#define glBindTexGenParameterEXT GLEW_GET_FUN(__glewBindTexGenParameterEXT) -#define glBindTextureUnitParameterEXT GLEW_GET_FUN(__glewBindTextureUnitParameterEXT) -#define glBindVertexShaderEXT GLEW_GET_FUN(__glewBindVertexShaderEXT) -#define glDeleteVertexShaderEXT GLEW_GET_FUN(__glewDeleteVertexShaderEXT) -#define glDisableVariantClientStateEXT GLEW_GET_FUN(__glewDisableVariantClientStateEXT) -#define glEnableVariantClientStateEXT GLEW_GET_FUN(__glewEnableVariantClientStateEXT) -#define glEndVertexShaderEXT GLEW_GET_FUN(__glewEndVertexShaderEXT) -#define glExtractComponentEXT GLEW_GET_FUN(__glewExtractComponentEXT) -#define glGenSymbolsEXT GLEW_GET_FUN(__glewGenSymbolsEXT) -#define glGenVertexShadersEXT GLEW_GET_FUN(__glewGenVertexShadersEXT) -#define glGetInvariantBooleanvEXT GLEW_GET_FUN(__glewGetInvariantBooleanvEXT) -#define glGetInvariantFloatvEXT GLEW_GET_FUN(__glewGetInvariantFloatvEXT) -#define glGetInvariantIntegervEXT GLEW_GET_FUN(__glewGetInvariantIntegervEXT) -#define glGetLocalConstantBooleanvEXT GLEW_GET_FUN(__glewGetLocalConstantBooleanvEXT) -#define glGetLocalConstantFloatvEXT GLEW_GET_FUN(__glewGetLocalConstantFloatvEXT) -#define glGetLocalConstantIntegervEXT GLEW_GET_FUN(__glewGetLocalConstantIntegervEXT) -#define glGetVariantBooleanvEXT GLEW_GET_FUN(__glewGetVariantBooleanvEXT) -#define glGetVariantFloatvEXT GLEW_GET_FUN(__glewGetVariantFloatvEXT) -#define glGetVariantIntegervEXT GLEW_GET_FUN(__glewGetVariantIntegervEXT) -#define glGetVariantPointervEXT GLEW_GET_FUN(__glewGetVariantPointervEXT) -#define glInsertComponentEXT GLEW_GET_FUN(__glewInsertComponentEXT) -#define glIsVariantEnabledEXT GLEW_GET_FUN(__glewIsVariantEnabledEXT) -#define glSetInvariantEXT GLEW_GET_FUN(__glewSetInvariantEXT) -#define glSetLocalConstantEXT GLEW_GET_FUN(__glewSetLocalConstantEXT) -#define glShaderOp1EXT GLEW_GET_FUN(__glewShaderOp1EXT) -#define glShaderOp2EXT GLEW_GET_FUN(__glewShaderOp2EXT) -#define glShaderOp3EXT GLEW_GET_FUN(__glewShaderOp3EXT) -#define glSwizzleEXT GLEW_GET_FUN(__glewSwizzleEXT) -#define glVariantPointerEXT GLEW_GET_FUN(__glewVariantPointerEXT) -#define glVariantbvEXT GLEW_GET_FUN(__glewVariantbvEXT) -#define glVariantdvEXT GLEW_GET_FUN(__glewVariantdvEXT) -#define glVariantfvEXT GLEW_GET_FUN(__glewVariantfvEXT) -#define glVariantivEXT GLEW_GET_FUN(__glewVariantivEXT) -#define glVariantsvEXT GLEW_GET_FUN(__glewVariantsvEXT) -#define glVariantubvEXT GLEW_GET_FUN(__glewVariantubvEXT) -#define glVariantuivEXT GLEW_GET_FUN(__glewVariantuivEXT) -#define glVariantusvEXT GLEW_GET_FUN(__glewVariantusvEXT) -#define glWriteMaskEXT GLEW_GET_FUN(__glewWriteMaskEXT) - -#define GLEW_EXT_vertex_shader GLEW_GET_VAR(__GLEW_EXT_vertex_shader) - -#endif /* GL_EXT_vertex_shader */ - -/* ------------------------ GL_EXT_vertex_weighting ------------------------ */ - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 - -#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 -#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 -#define GL_MODELVIEW0_EXT 0x1700 -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 - -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (GLfloat* weight); - -#define glVertexWeightPointerEXT GLEW_GET_FUN(__glewVertexWeightPointerEXT) -#define glVertexWeightfEXT GLEW_GET_FUN(__glewVertexWeightfEXT) -#define glVertexWeightfvEXT GLEW_GET_FUN(__glewVertexWeightfvEXT) - -#define GLEW_EXT_vertex_weighting GLEW_GET_VAR(__GLEW_EXT_vertex_weighting) - -#endif /* GL_EXT_vertex_weighting */ - -/* ---------------------- GL_GREMEDY_frame_terminator ---------------------- */ - -#ifndef GL_GREMEDY_frame_terminator -#define GL_GREMEDY_frame_terminator 1 - -typedef void (GLAPIENTRY * PFNGLFRAMETERMINATORGREMEDYPROC) (void); - -#define glFrameTerminatorGREMEDY GLEW_GET_FUN(__glewFrameTerminatorGREMEDY) - -#define GLEW_GREMEDY_frame_terminator GLEW_GET_VAR(__GLEW_GREMEDY_frame_terminator) - -#endif /* GL_GREMEDY_frame_terminator */ - -/* ------------------------ GL_GREMEDY_string_marker ----------------------- */ - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 - -typedef void (GLAPIENTRY * PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void* string); - -#define glStringMarkerGREMEDY GLEW_GET_FUN(__glewStringMarkerGREMEDY) - -#define GLEW_GREMEDY_string_marker GLEW_GET_VAR(__GLEW_GREMEDY_string_marker) - -#endif /* GL_GREMEDY_string_marker */ - -/* --------------------- GL_HP_convolution_border_modes -------------------- */ - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 - -#define GLEW_HP_convolution_border_modes GLEW_GET_VAR(__GLEW_HP_convolution_border_modes) - -#endif /* GL_HP_convolution_border_modes */ - -/* ------------------------- GL_HP_image_transform ------------------------- */ - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 - -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glGetImageTransformParameterfvHP GLEW_GET_FUN(__glewGetImageTransformParameterfvHP) -#define glGetImageTransformParameterivHP GLEW_GET_FUN(__glewGetImageTransformParameterivHP) -#define glImageTransformParameterfHP GLEW_GET_FUN(__glewImageTransformParameterfHP) -#define glImageTransformParameterfvHP GLEW_GET_FUN(__glewImageTransformParameterfvHP) -#define glImageTransformParameteriHP GLEW_GET_FUN(__glewImageTransformParameteriHP) -#define glImageTransformParameterivHP GLEW_GET_FUN(__glewImageTransformParameterivHP) - -#define GLEW_HP_image_transform GLEW_GET_VAR(__GLEW_HP_image_transform) - -#endif /* GL_HP_image_transform */ - -/* -------------------------- GL_HP_occlusion_test ------------------------- */ - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 - -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 - -#define GLEW_HP_occlusion_test GLEW_GET_VAR(__GLEW_HP_occlusion_test) - -#endif /* GL_HP_occlusion_test */ - -/* ------------------------- GL_HP_texture_lighting ------------------------ */ - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 - -#define GLEW_HP_texture_lighting GLEW_GET_VAR(__GLEW_HP_texture_lighting) - -#endif /* GL_HP_texture_lighting */ - -/* --------------------------- GL_IBM_cull_vertex -------------------------- */ - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 - -#define GL_CULL_VERTEX_IBM 103050 - -#define GLEW_IBM_cull_vertex GLEW_GET_VAR(__GLEW_IBM_cull_vertex) - -#endif /* GL_IBM_cull_vertex */ - -/* ---------------------- GL_IBM_multimode_draw_arrays --------------------- */ - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 - -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum* mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (GLAPIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum* mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); - -#define glMultiModeDrawArraysIBM GLEW_GET_FUN(__glewMultiModeDrawArraysIBM) -#define glMultiModeDrawElementsIBM GLEW_GET_FUN(__glewMultiModeDrawElementsIBM) - -#define GLEW_IBM_multimode_draw_arrays GLEW_GET_VAR(__GLEW_IBM_multimode_draw_arrays) - -#endif /* GL_IBM_multimode_draw_arrays */ - -/* ------------------------- GL_IBM_rasterpos_clip ------------------------- */ - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 - -#define GL_RASTER_POSITION_UNCLIPPED_IBM 103010 - -#define GLEW_IBM_rasterpos_clip GLEW_GET_VAR(__GLEW_IBM_rasterpos_clip) - -#endif /* GL_IBM_rasterpos_clip */ - -/* --------------------------- GL_IBM_static_data -------------------------- */ - -#ifndef GL_IBM_static_data -#define GL_IBM_static_data 1 - -#define GL_ALL_STATIC_DATA_IBM 103060 -#define GL_STATIC_VERTEX_ARRAY_IBM 103061 - -#define GLEW_IBM_static_data GLEW_GET_VAR(__GLEW_IBM_static_data) - -#endif /* GL_IBM_static_data */ - -/* --------------------- GL_IBM_texture_mirrored_repeat -------------------- */ - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_IBM_texture_mirrored_repeat 1 - -#define GL_MIRRORED_REPEAT_IBM 0x8370 - -#define GLEW_IBM_texture_mirrored_repeat GLEW_GET_VAR(__GLEW_IBM_texture_mirrored_repeat) - -#endif /* GL_IBM_texture_mirrored_repeat */ - -/* ----------------------- GL_IBM_vertex_array_lists ----------------------- */ - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 - -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid ** pointer, GLint ptrstride); - -#define glColorPointerListIBM GLEW_GET_FUN(__glewColorPointerListIBM) -#define glEdgeFlagPointerListIBM GLEW_GET_FUN(__glewEdgeFlagPointerListIBM) -#define glFogCoordPointerListIBM GLEW_GET_FUN(__glewFogCoordPointerListIBM) -#define glIndexPointerListIBM GLEW_GET_FUN(__glewIndexPointerListIBM) -#define glNormalPointerListIBM GLEW_GET_FUN(__glewNormalPointerListIBM) -#define glSecondaryColorPointerListIBM GLEW_GET_FUN(__glewSecondaryColorPointerListIBM) -#define glTexCoordPointerListIBM GLEW_GET_FUN(__glewTexCoordPointerListIBM) -#define glVertexPointerListIBM GLEW_GET_FUN(__glewVertexPointerListIBM) - -#define GLEW_IBM_vertex_array_lists GLEW_GET_VAR(__GLEW_IBM_vertex_array_lists) - -#endif /* GL_IBM_vertex_array_lists */ - -/* -------------------------- GL_INGR_color_clamp -------------------------- */ - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 - -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 - -#define GLEW_INGR_color_clamp GLEW_GET_VAR(__GLEW_INGR_color_clamp) - -#endif /* GL_INGR_color_clamp */ - -/* ------------------------- GL_INGR_interlace_read ------------------------ */ - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 - -#define GL_INTERLACE_READ_INGR 0x8568 - -#define GLEW_INGR_interlace_read GLEW_GET_VAR(__GLEW_INGR_interlace_read) - -#endif /* GL_INGR_interlace_read */ - -/* ------------------------ GL_INTEL_parallel_arrays ----------------------- */ - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 - -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 - -typedef void (GLAPIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void** pointer); - -#define glColorPointervINTEL GLEW_GET_FUN(__glewColorPointervINTEL) -#define glNormalPointervINTEL GLEW_GET_FUN(__glewNormalPointervINTEL) -#define glTexCoordPointervINTEL GLEW_GET_FUN(__glewTexCoordPointervINTEL) -#define glVertexPointervINTEL GLEW_GET_FUN(__glewVertexPointervINTEL) - -#define GLEW_INTEL_parallel_arrays GLEW_GET_VAR(__GLEW_INTEL_parallel_arrays) - -#endif /* GL_INTEL_parallel_arrays */ - -/* ------------------------ GL_INTEL_texture_scissor ----------------------- */ - -#ifndef GL_INTEL_texture_scissor -#define GL_INTEL_texture_scissor 1 - -typedef void (GLAPIENTRY * PFNGLTEXSCISSORFUNCINTELPROC) (GLenum target, GLenum lfunc, GLenum hfunc); -typedef void (GLAPIENTRY * PFNGLTEXSCISSORINTELPROC) (GLenum target, GLclampf tlow, GLclampf thigh); - -#define glTexScissorFuncINTEL GLEW_GET_FUN(__glewTexScissorFuncINTEL) -#define glTexScissorINTEL GLEW_GET_FUN(__glewTexScissorINTEL) - -#define GLEW_INTEL_texture_scissor GLEW_GET_VAR(__GLEW_INTEL_texture_scissor) - -#endif /* GL_INTEL_texture_scissor */ - -/* -------------------------- GL_KTX_buffer_region ------------------------- */ - -#ifndef GL_KTX_buffer_region -#define GL_KTX_buffer_region 1 - -#define GL_KTX_FRONT_REGION 0x0 -#define GL_KTX_BACK_REGION 0x1 -#define GL_KTX_Z_REGION 0x2 -#define GL_KTX_STENCIL_REGION 0x3 - -typedef GLuint (GLAPIENTRY * PFNGLBUFFERREGIONENABLEDEXTPROC) (void); -typedef void (GLAPIENTRY * PFNGLDELETEBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLDRAWBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height, GLint xDest, GLint yDest); -typedef GLuint (GLAPIENTRY * PFNGLNEWBUFFERREGIONEXTPROC) (GLenum region); -typedef void (GLAPIENTRY * PFNGLREADBUFFERREGIONEXTPROC) (GLuint region, GLint x, GLint y, GLsizei width, GLsizei height); - -#define glBufferRegionEnabledEXT GLEW_GET_FUN(__glewBufferRegionEnabledEXT) -#define glDeleteBufferRegionEXT GLEW_GET_FUN(__glewDeleteBufferRegionEXT) -#define glDrawBufferRegionEXT GLEW_GET_FUN(__glewDrawBufferRegionEXT) -#define glNewBufferRegionEXT GLEW_GET_FUN(__glewNewBufferRegionEXT) -#define glReadBufferRegionEXT GLEW_GET_FUN(__glewReadBufferRegionEXT) - -#define GLEW_KTX_buffer_region GLEW_GET_VAR(__GLEW_KTX_buffer_region) - -#endif /* GL_KTX_buffer_region */ - -/* ------------------------- GL_MESAX_texture_stack ------------------------ */ - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 - -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E - -#define GLEW_MESAX_texture_stack GLEW_GET_VAR(__GLEW_MESAX_texture_stack) - -#endif /* GL_MESAX_texture_stack */ - -/* -------------------------- GL_MESA_pack_invert -------------------------- */ - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 - -#define GL_PACK_INVERT_MESA 0x8758 - -#define GLEW_MESA_pack_invert GLEW_GET_VAR(__GLEW_MESA_pack_invert) - -#endif /* GL_MESA_pack_invert */ - -/* ------------------------- GL_MESA_resize_buffers ------------------------ */ - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 - -typedef void (GLAPIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); - -#define glResizeBuffersMESA GLEW_GET_FUN(__glewResizeBuffersMESA) - -#define GLEW_MESA_resize_buffers GLEW_GET_VAR(__GLEW_MESA_resize_buffers) - -#endif /* GL_MESA_resize_buffers */ - -/* --------------------------- GL_MESA_window_pos -------------------------- */ - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 - -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint* p); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort* p); - -#define glWindowPos2dMESA GLEW_GET_FUN(__glewWindowPos2dMESA) -#define glWindowPos2dvMESA GLEW_GET_FUN(__glewWindowPos2dvMESA) -#define glWindowPos2fMESA GLEW_GET_FUN(__glewWindowPos2fMESA) -#define glWindowPos2fvMESA GLEW_GET_FUN(__glewWindowPos2fvMESA) -#define glWindowPos2iMESA GLEW_GET_FUN(__glewWindowPos2iMESA) -#define glWindowPos2ivMESA GLEW_GET_FUN(__glewWindowPos2ivMESA) -#define glWindowPos2sMESA GLEW_GET_FUN(__glewWindowPos2sMESA) -#define glWindowPos2svMESA GLEW_GET_FUN(__glewWindowPos2svMESA) -#define glWindowPos3dMESA GLEW_GET_FUN(__glewWindowPos3dMESA) -#define glWindowPos3dvMESA GLEW_GET_FUN(__glewWindowPos3dvMESA) -#define glWindowPos3fMESA GLEW_GET_FUN(__glewWindowPos3fMESA) -#define glWindowPos3fvMESA GLEW_GET_FUN(__glewWindowPos3fvMESA) -#define glWindowPos3iMESA GLEW_GET_FUN(__glewWindowPos3iMESA) -#define glWindowPos3ivMESA GLEW_GET_FUN(__glewWindowPos3ivMESA) -#define glWindowPos3sMESA GLEW_GET_FUN(__glewWindowPos3sMESA) -#define glWindowPos3svMESA GLEW_GET_FUN(__glewWindowPos3svMESA) -#define glWindowPos4dMESA GLEW_GET_FUN(__glewWindowPos4dMESA) -#define glWindowPos4dvMESA GLEW_GET_FUN(__glewWindowPos4dvMESA) -#define glWindowPos4fMESA GLEW_GET_FUN(__glewWindowPos4fMESA) -#define glWindowPos4fvMESA GLEW_GET_FUN(__glewWindowPos4fvMESA) -#define glWindowPos4iMESA GLEW_GET_FUN(__glewWindowPos4iMESA) -#define glWindowPos4ivMESA GLEW_GET_FUN(__glewWindowPos4ivMESA) -#define glWindowPos4sMESA GLEW_GET_FUN(__glewWindowPos4sMESA) -#define glWindowPos4svMESA GLEW_GET_FUN(__glewWindowPos4svMESA) - -#define GLEW_MESA_window_pos GLEW_GET_VAR(__GLEW_MESA_window_pos) - -#endif /* GL_MESA_window_pos */ - -/* ------------------------- GL_MESA_ycbcr_texture ------------------------- */ - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 - -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 - -#define GLEW_MESA_ycbcr_texture GLEW_GET_VAR(__GLEW_MESA_ycbcr_texture) - -#endif /* GL_MESA_ycbcr_texture */ - -/* --------------------------- GL_NV_blend_square -------------------------- */ - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 - -#define GLEW_NV_blend_square GLEW_GET_VAR(__GLEW_NV_blend_square) - -#endif /* GL_NV_blend_square */ - -/* ------------------------ GL_NV_conditional_render ----------------------- */ - -#ifndef GL_NV_conditional_render -#define GL_NV_conditional_render 1 - -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 - -typedef void (GLAPIENTRY * PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (GLAPIENTRY * PFNGLENDCONDITIONALRENDERNVPROC) (void); - -#define glBeginConditionalRenderNV GLEW_GET_FUN(__glewBeginConditionalRenderNV) -#define glEndConditionalRenderNV GLEW_GET_FUN(__glewEndConditionalRenderNV) - -#define GLEW_NV_conditional_render GLEW_GET_VAR(__GLEW_NV_conditional_render) - -#endif /* GL_NV_conditional_render */ - -/* ----------------------- GL_NV_copy_depth_to_color ----------------------- */ - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 - -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F - -#define GLEW_NV_copy_depth_to_color GLEW_GET_VAR(__GLEW_NV_copy_depth_to_color) - -#endif /* GL_NV_copy_depth_to_color */ - -/* ------------------------ GL_NV_depth_buffer_float ----------------------- */ - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 - -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (GLAPIENTRY * PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); - -#define glClearDepthdNV GLEW_GET_FUN(__glewClearDepthdNV) -#define glDepthBoundsdNV GLEW_GET_FUN(__glewDepthBoundsdNV) -#define glDepthRangedNV GLEW_GET_FUN(__glewDepthRangedNV) - -#define GLEW_NV_depth_buffer_float GLEW_GET_VAR(__GLEW_NV_depth_buffer_float) - -#endif /* GL_NV_depth_buffer_float */ - -/* --------------------------- GL_NV_depth_clamp --------------------------- */ - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 - -#define GL_DEPTH_CLAMP_NV 0x864F - -#define GLEW_NV_depth_clamp GLEW_GET_VAR(__GLEW_NV_depth_clamp) - -#endif /* GL_NV_depth_clamp */ - -/* ---------------------- GL_NV_depth_range_unclamped ---------------------- */ - -#ifndef GL_NV_depth_range_unclamped -#define GL_NV_depth_range_unclamped 1 - -#define GL_SAMPLE_COUNT_BITS_NV 0x8864 -#define GL_CURRENT_SAMPLE_COUNT_QUERY_NV 0x8865 -#define GL_QUERY_RESULT_NV 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_NV 0x8867 -#define GL_SAMPLE_COUNT_NV 0x8914 - -#define GLEW_NV_depth_range_unclamped GLEW_GET_VAR(__GLEW_NV_depth_range_unclamped) - -#endif /* GL_NV_depth_range_unclamped */ - -/* ---------------------------- GL_NV_evaluators --------------------------- */ - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 - -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 - -typedef void (GLAPIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void* points); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void* points); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint* params); - -#define glEvalMapsNV GLEW_GET_FUN(__glewEvalMapsNV) -#define glGetMapAttribParameterfvNV GLEW_GET_FUN(__glewGetMapAttribParameterfvNV) -#define glGetMapAttribParameterivNV GLEW_GET_FUN(__glewGetMapAttribParameterivNV) -#define glGetMapControlPointsNV GLEW_GET_FUN(__glewGetMapControlPointsNV) -#define glGetMapParameterfvNV GLEW_GET_FUN(__glewGetMapParameterfvNV) -#define glGetMapParameterivNV GLEW_GET_FUN(__glewGetMapParameterivNV) -#define glMapControlPointsNV GLEW_GET_FUN(__glewMapControlPointsNV) -#define glMapParameterfvNV GLEW_GET_FUN(__glewMapParameterfvNV) -#define glMapParameterivNV GLEW_GET_FUN(__glewMapParameterivNV) - -#define GLEW_NV_evaluators GLEW_GET_VAR(__GLEW_NV_evaluators) - -#endif /* GL_NV_evaluators */ - -/* ----------------------- GL_NV_explicit_multisample ---------------------- */ - -#ifndef GL_NV_explicit_multisample -#define GL_NV_explicit_multisample 1 - -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 -#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 -#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 -#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 - -typedef void (GLAPIENTRY * PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat* val); -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (GLAPIENTRY * PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); - -#define glGetMultisamplefvNV GLEW_GET_FUN(__glewGetMultisamplefvNV) -#define glSampleMaskIndexedNV GLEW_GET_FUN(__glewSampleMaskIndexedNV) -#define glTexRenderbufferNV GLEW_GET_FUN(__glewTexRenderbufferNV) - -#define GLEW_NV_explicit_multisample GLEW_GET_VAR(__GLEW_NV_explicit_multisample) - -#endif /* GL_NV_explicit_multisample */ - -/* ------------------------------ GL_NV_fence ------------------------------ */ - -#ifndef GL_NV_fence -#define GL_NV_fence 1 - -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 - -typedef void (GLAPIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint* fences); -typedef void (GLAPIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint* fences); -typedef void (GLAPIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISFENCENVPROC) (GLuint fence); -typedef void (GLAPIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -typedef GLboolean (GLAPIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); - -#define glDeleteFencesNV GLEW_GET_FUN(__glewDeleteFencesNV) -#define glFinishFenceNV GLEW_GET_FUN(__glewFinishFenceNV) -#define glGenFencesNV GLEW_GET_FUN(__glewGenFencesNV) -#define glGetFenceivNV GLEW_GET_FUN(__glewGetFenceivNV) -#define glIsFenceNV GLEW_GET_FUN(__glewIsFenceNV) -#define glSetFenceNV GLEW_GET_FUN(__glewSetFenceNV) -#define glTestFenceNV GLEW_GET_FUN(__glewTestFenceNV) - -#define GLEW_NV_fence GLEW_GET_VAR(__GLEW_NV_fence) - -#endif /* GL_NV_fence */ - -/* --------------------------- GL_NV_float_buffer -------------------------- */ - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 - -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E - -#define GLEW_NV_float_buffer GLEW_GET_VAR(__GLEW_NV_float_buffer) - -#endif /* GL_NV_float_buffer */ - -/* --------------------------- GL_NV_fog_distance -------------------------- */ - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 - -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C - -#define GLEW_NV_fog_distance GLEW_GET_VAR(__GLEW_NV_fog_distance) - -#endif /* GL_NV_fog_distance */ - -/* ------------------------- GL_NV_fragment_program ------------------------ */ - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 - -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 - -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble *params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLdouble v[]); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte* name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte* name, const GLfloat v[]); - -#define glGetProgramNamedParameterdvNV GLEW_GET_FUN(__glewGetProgramNamedParameterdvNV) -#define glGetProgramNamedParameterfvNV GLEW_GET_FUN(__glewGetProgramNamedParameterfvNV) -#define glProgramNamedParameter4dNV GLEW_GET_FUN(__glewProgramNamedParameter4dNV) -#define glProgramNamedParameter4dvNV GLEW_GET_FUN(__glewProgramNamedParameter4dvNV) -#define glProgramNamedParameter4fNV GLEW_GET_FUN(__glewProgramNamedParameter4fNV) -#define glProgramNamedParameter4fvNV GLEW_GET_FUN(__glewProgramNamedParameter4fvNV) - -#define GLEW_NV_fragment_program GLEW_GET_VAR(__GLEW_NV_fragment_program) - -#endif /* GL_NV_fragment_program */ - -/* ------------------------ GL_NV_fragment_program2 ------------------------ */ - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 - -#define GLEW_NV_fragment_program2 GLEW_GET_VAR(__GLEW_NV_fragment_program2) - -#endif /* GL_NV_fragment_program2 */ - -/* ------------------------ GL_NV_fragment_program4 ------------------------ */ - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 - -#define GLEW_NV_fragment_program4 GLEW_GET_VAR(__GLEW_NV_fragment_program4) - -#endif /* GL_NV_fragment_program4 */ - -/* --------------------- GL_NV_fragment_program_option --------------------- */ - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 - -#define GLEW_NV_fragment_program_option GLEW_GET_VAR(__GLEW_NV_fragment_program_option) - -#endif /* GL_NV_fragment_program_option */ - -/* ----------------- GL_NV_framebuffer_multisample_coverage ---------------- */ - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 - -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 - -typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); - -#define glRenderbufferStorageMultisampleCoverageNV GLEW_GET_FUN(__glewRenderbufferStorageMultisampleCoverageNV) - -#define GLEW_NV_framebuffer_multisample_coverage GLEW_GET_VAR(__GLEW_NV_framebuffer_multisample_coverage) - -#endif /* GL_NV_framebuffer_multisample_coverage */ - -/* ------------------------ GL_NV_geometry_program4 ------------------------ */ - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 - -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 - -typedef void (GLAPIENTRY * PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); - -#define glProgramVertexLimitNV GLEW_GET_FUN(__glewProgramVertexLimitNV) - -#define GLEW_NV_geometry_program4 GLEW_GET_VAR(__GLEW_NV_geometry_program4) - -#endif /* GL_NV_geometry_program4 */ - -/* ------------------------- GL_NV_geometry_shader4 ------------------------ */ - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 - -#define GLEW_NV_geometry_shader4 GLEW_GET_VAR(__GLEW_NV_geometry_shader4) - -#endif /* GL_NV_geometry_shader4 */ - -/* --------------------------- GL_NV_gpu_program4 -------------------------- */ - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 - -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 - -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); - -#define glProgramEnvParameterI4iNV GLEW_GET_FUN(__glewProgramEnvParameterI4iNV) -#define glProgramEnvParameterI4ivNV GLEW_GET_FUN(__glewProgramEnvParameterI4ivNV) -#define glProgramEnvParameterI4uiNV GLEW_GET_FUN(__glewProgramEnvParameterI4uiNV) -#define glProgramEnvParameterI4uivNV GLEW_GET_FUN(__glewProgramEnvParameterI4uivNV) -#define glProgramEnvParametersI4ivNV GLEW_GET_FUN(__glewProgramEnvParametersI4ivNV) -#define glProgramEnvParametersI4uivNV GLEW_GET_FUN(__glewProgramEnvParametersI4uivNV) -#define glProgramLocalParameterI4iNV GLEW_GET_FUN(__glewProgramLocalParameterI4iNV) -#define glProgramLocalParameterI4ivNV GLEW_GET_FUN(__glewProgramLocalParameterI4ivNV) -#define glProgramLocalParameterI4uiNV GLEW_GET_FUN(__glewProgramLocalParameterI4uiNV) -#define glProgramLocalParameterI4uivNV GLEW_GET_FUN(__glewProgramLocalParameterI4uivNV) -#define glProgramLocalParametersI4ivNV GLEW_GET_FUN(__glewProgramLocalParametersI4ivNV) -#define glProgramLocalParametersI4uivNV GLEW_GET_FUN(__glewProgramLocalParametersI4uivNV) - -#define GLEW_NV_gpu_program4 GLEW_GET_VAR(__GLEW_NV_gpu_program4) - -#endif /* GL_NV_gpu_program4 */ - -/* ---------------------------- GL_NV_half_float --------------------------- */ - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 - -#define GL_HALF_FLOAT_NV 0x140B - -typedef unsigned short GLhalf; - -typedef void (GLAPIENTRY * PFNGLCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLCOLOR4HNVPROC) (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); -typedef void (GLAPIENTRY * PFNGLCOLOR4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHNVPROC) (GLhalf fog); -typedef void (GLAPIENTRY * PFNGLFOGCOORDHVNVPROC) (const GLhalf* fog); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalf s); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLNORMAL3HNVPROC) (GLhalf nx, GLhalf ny, GLhalf nz); -typedef void (GLAPIENTRY * PFNGLNORMAL3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HNVPROC) (GLhalf red, GLhalf green, GLhalf blue); -typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HNVPROC) (GLhalf s); -typedef void (GLAPIENTRY * PFNGLTEXCOORD1HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HNVPROC) (GLhalf s, GLhalf t); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HNVPROC) (GLhalf s, GLhalf t, GLhalf r); -typedef void (GLAPIENTRY * PFNGLTEXCOORD3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HNVPROC) (GLhalf s, GLhalf t, GLhalf r, GLhalf q); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX2HNVPROC) (GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEX2HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX3HNVPROC) (GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEX3HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEX4HNVPROC) (GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEX4HVNVPROC) (const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalf x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalf x, GLhalf y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalf* v); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHNVPROC) (GLhalf weight); -typedef void (GLAPIENTRY * PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalf* weight); - -#define glColor3hNV GLEW_GET_FUN(__glewColor3hNV) -#define glColor3hvNV GLEW_GET_FUN(__glewColor3hvNV) -#define glColor4hNV GLEW_GET_FUN(__glewColor4hNV) -#define glColor4hvNV GLEW_GET_FUN(__glewColor4hvNV) -#define glFogCoordhNV GLEW_GET_FUN(__glewFogCoordhNV) -#define glFogCoordhvNV GLEW_GET_FUN(__glewFogCoordhvNV) -#define glMultiTexCoord1hNV GLEW_GET_FUN(__glewMultiTexCoord1hNV) -#define glMultiTexCoord1hvNV GLEW_GET_FUN(__glewMultiTexCoord1hvNV) -#define glMultiTexCoord2hNV GLEW_GET_FUN(__glewMultiTexCoord2hNV) -#define glMultiTexCoord2hvNV GLEW_GET_FUN(__glewMultiTexCoord2hvNV) -#define glMultiTexCoord3hNV GLEW_GET_FUN(__glewMultiTexCoord3hNV) -#define glMultiTexCoord3hvNV GLEW_GET_FUN(__glewMultiTexCoord3hvNV) -#define glMultiTexCoord4hNV GLEW_GET_FUN(__glewMultiTexCoord4hNV) -#define glMultiTexCoord4hvNV GLEW_GET_FUN(__glewMultiTexCoord4hvNV) -#define glNormal3hNV GLEW_GET_FUN(__glewNormal3hNV) -#define glNormal3hvNV GLEW_GET_FUN(__glewNormal3hvNV) -#define glSecondaryColor3hNV GLEW_GET_FUN(__glewSecondaryColor3hNV) -#define glSecondaryColor3hvNV GLEW_GET_FUN(__glewSecondaryColor3hvNV) -#define glTexCoord1hNV GLEW_GET_FUN(__glewTexCoord1hNV) -#define glTexCoord1hvNV GLEW_GET_FUN(__glewTexCoord1hvNV) -#define glTexCoord2hNV GLEW_GET_FUN(__glewTexCoord2hNV) -#define glTexCoord2hvNV GLEW_GET_FUN(__glewTexCoord2hvNV) -#define glTexCoord3hNV GLEW_GET_FUN(__glewTexCoord3hNV) -#define glTexCoord3hvNV GLEW_GET_FUN(__glewTexCoord3hvNV) -#define glTexCoord4hNV GLEW_GET_FUN(__glewTexCoord4hNV) -#define glTexCoord4hvNV GLEW_GET_FUN(__glewTexCoord4hvNV) -#define glVertex2hNV GLEW_GET_FUN(__glewVertex2hNV) -#define glVertex2hvNV GLEW_GET_FUN(__glewVertex2hvNV) -#define glVertex3hNV GLEW_GET_FUN(__glewVertex3hNV) -#define glVertex3hvNV GLEW_GET_FUN(__glewVertex3hvNV) -#define glVertex4hNV GLEW_GET_FUN(__glewVertex4hNV) -#define glVertex4hvNV GLEW_GET_FUN(__glewVertex4hvNV) -#define glVertexAttrib1hNV GLEW_GET_FUN(__glewVertexAttrib1hNV) -#define glVertexAttrib1hvNV GLEW_GET_FUN(__glewVertexAttrib1hvNV) -#define glVertexAttrib2hNV GLEW_GET_FUN(__glewVertexAttrib2hNV) -#define glVertexAttrib2hvNV GLEW_GET_FUN(__glewVertexAttrib2hvNV) -#define glVertexAttrib3hNV GLEW_GET_FUN(__glewVertexAttrib3hNV) -#define glVertexAttrib3hvNV GLEW_GET_FUN(__glewVertexAttrib3hvNV) -#define glVertexAttrib4hNV GLEW_GET_FUN(__glewVertexAttrib4hNV) -#define glVertexAttrib4hvNV GLEW_GET_FUN(__glewVertexAttrib4hvNV) -#define glVertexAttribs1hvNV GLEW_GET_FUN(__glewVertexAttribs1hvNV) -#define glVertexAttribs2hvNV GLEW_GET_FUN(__glewVertexAttribs2hvNV) -#define glVertexAttribs3hvNV GLEW_GET_FUN(__glewVertexAttribs3hvNV) -#define glVertexAttribs4hvNV GLEW_GET_FUN(__glewVertexAttribs4hvNV) -#define glVertexWeighthNV GLEW_GET_FUN(__glewVertexWeighthNV) -#define glVertexWeighthvNV GLEW_GET_FUN(__glewVertexWeighthvNV) - -#define GLEW_NV_half_float GLEW_GET_VAR(__GLEW_NV_half_float) - -#endif /* GL_NV_half_float */ - -/* ------------------------ GL_NV_light_max_exponent ----------------------- */ - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 - -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 - -#define GLEW_NV_light_max_exponent GLEW_GET_VAR(__GLEW_NV_light_max_exponent) - -#endif /* GL_NV_light_max_exponent */ - -/* --------------------- GL_NV_multisample_filter_hint --------------------- */ - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 - -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 - -#define GLEW_NV_multisample_filter_hint GLEW_GET_VAR(__GLEW_NV_multisample_filter_hint) - -#endif /* GL_NV_multisample_filter_hint */ - -/* ------------------------- GL_NV_occlusion_query ------------------------- */ - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 - -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 - -typedef void (GLAPIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); - -#define glBeginOcclusionQueryNV GLEW_GET_FUN(__glewBeginOcclusionQueryNV) -#define glDeleteOcclusionQueriesNV GLEW_GET_FUN(__glewDeleteOcclusionQueriesNV) -#define glEndOcclusionQueryNV GLEW_GET_FUN(__glewEndOcclusionQueryNV) -#define glGenOcclusionQueriesNV GLEW_GET_FUN(__glewGenOcclusionQueriesNV) -#define glGetOcclusionQueryivNV GLEW_GET_FUN(__glewGetOcclusionQueryivNV) -#define glGetOcclusionQueryuivNV GLEW_GET_FUN(__glewGetOcclusionQueryuivNV) -#define glIsOcclusionQueryNV GLEW_GET_FUN(__glewIsOcclusionQueryNV) - -#define GLEW_NV_occlusion_query GLEW_GET_VAR(__GLEW_NV_occlusion_query) - -#endif /* GL_NV_occlusion_query */ - -/* ----------------------- GL_NV_packed_depth_stencil ---------------------- */ - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA - -#define GLEW_NV_packed_depth_stencil GLEW_GET_VAR(__GLEW_NV_packed_depth_stencil) - -#endif /* GL_NV_packed_depth_stencil */ - -/* --------------------- GL_NV_parameter_buffer_object --------------------- */ - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 - -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 - -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); -typedef void (GLAPIENTRY * PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); - -#define glProgramBufferParametersIivNV GLEW_GET_FUN(__glewProgramBufferParametersIivNV) -#define glProgramBufferParametersIuivNV GLEW_GET_FUN(__glewProgramBufferParametersIuivNV) -#define glProgramBufferParametersfvNV GLEW_GET_FUN(__glewProgramBufferParametersfvNV) - -#define GLEW_NV_parameter_buffer_object GLEW_GET_VAR(__GLEW_NV_parameter_buffer_object) - -#endif /* GL_NV_parameter_buffer_object */ - -/* ------------------------- GL_NV_pixel_data_range ------------------------ */ - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 - -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D - -typedef void (GLAPIENTRY * PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -typedef void (GLAPIENTRY * PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, void* pointer); - -#define glFlushPixelDataRangeNV GLEW_GET_FUN(__glewFlushPixelDataRangeNV) -#define glPixelDataRangeNV GLEW_GET_FUN(__glewPixelDataRangeNV) - -#define GLEW_NV_pixel_data_range GLEW_GET_VAR(__GLEW_NV_pixel_data_range) - -#endif /* GL_NV_pixel_data_range */ - -/* --------------------------- GL_NV_point_sprite -------------------------- */ - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 - -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 - -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint* params); - -#define glPointParameteriNV GLEW_GET_FUN(__glewPointParameteriNV) -#define glPointParameterivNV GLEW_GET_FUN(__glewPointParameterivNV) - -#define GLEW_NV_point_sprite GLEW_GET_VAR(__GLEW_NV_point_sprite) - -#endif /* GL_NV_point_sprite */ - -/* -------------------------- GL_NV_present_video -------------------------- */ - -#ifndef GL_NV_present_video -#define GL_NV_present_video 1 - -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B - -typedef void (GLAPIENTRY * PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT* params); -typedef void (GLAPIENTRY * PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint* params); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (GLAPIENTRY * PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); -typedef void (GLAPIENTRY * PFNGLVIDEOPARAMETERIVNVPROC) (GLuint video_slot, GLenum pname, const GLint* params); - -#define glGetVideoi64vNV GLEW_GET_FUN(__glewGetVideoi64vNV) -#define glGetVideoivNV GLEW_GET_FUN(__glewGetVideoivNV) -#define glGetVideoui64vNV GLEW_GET_FUN(__glewGetVideoui64vNV) -#define glGetVideouivNV GLEW_GET_FUN(__glewGetVideouivNV) -#define glPresentFrameDualFillNV GLEW_GET_FUN(__glewPresentFrameDualFillNV) -#define glPresentFrameKeyedNV GLEW_GET_FUN(__glewPresentFrameKeyedNV) -#define glVideoParameterivNV GLEW_GET_FUN(__glewVideoParameterivNV) - -#define GLEW_NV_present_video GLEW_GET_VAR(__GLEW_NV_present_video) - -#endif /* GL_NV_present_video */ - -/* ------------------------ GL_NV_primitive_restart ------------------------ */ - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 - -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 - -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void); - -#define glPrimitiveRestartIndexNV GLEW_GET_FUN(__glewPrimitiveRestartIndexNV) -#define glPrimitiveRestartNV GLEW_GET_FUN(__glewPrimitiveRestartNV) - -#define GLEW_NV_primitive_restart GLEW_GET_VAR(__GLEW_NV_primitive_restart) - -#endif /* GL_NV_primitive_restart */ - -/* ------------------------ GL_NV_register_combiners ----------------------- */ - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 - -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 - -typedef void (GLAPIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint* params); - -#define glCombinerInputNV GLEW_GET_FUN(__glewCombinerInputNV) -#define glCombinerOutputNV GLEW_GET_FUN(__glewCombinerOutputNV) -#define glCombinerParameterfNV GLEW_GET_FUN(__glewCombinerParameterfNV) -#define glCombinerParameterfvNV GLEW_GET_FUN(__glewCombinerParameterfvNV) -#define glCombinerParameteriNV GLEW_GET_FUN(__glewCombinerParameteriNV) -#define glCombinerParameterivNV GLEW_GET_FUN(__glewCombinerParameterivNV) -#define glFinalCombinerInputNV GLEW_GET_FUN(__glewFinalCombinerInputNV) -#define glGetCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetCombinerInputParameterfvNV) -#define glGetCombinerInputParameterivNV GLEW_GET_FUN(__glewGetCombinerInputParameterivNV) -#define glGetCombinerOutputParameterfvNV GLEW_GET_FUN(__glewGetCombinerOutputParameterfvNV) -#define glGetCombinerOutputParameterivNV GLEW_GET_FUN(__glewGetCombinerOutputParameterivNV) -#define glGetFinalCombinerInputParameterfvNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterfvNV) -#define glGetFinalCombinerInputParameterivNV GLEW_GET_FUN(__glewGetFinalCombinerInputParameterivNV) - -#define GLEW_NV_register_combiners GLEW_GET_VAR(__GLEW_NV_register_combiners) - -#endif /* GL_NV_register_combiners */ - -/* ----------------------- GL_NV_register_combiners2 ----------------------- */ - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 - -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 - -typedef void (GLAPIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat* params); - -#define glCombinerStageParameterfvNV GLEW_GET_FUN(__glewCombinerStageParameterfvNV) -#define glGetCombinerStageParameterfvNV GLEW_GET_FUN(__glewGetCombinerStageParameterfvNV) - -#define GLEW_NV_register_combiners2 GLEW_GET_VAR(__GLEW_NV_register_combiners2) - -#endif /* GL_NV_register_combiners2 */ - -/* -------------------------- GL_NV_texgen_emboss -------------------------- */ - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 - -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F - -#define GLEW_NV_texgen_emboss GLEW_GET_VAR(__GLEW_NV_texgen_emboss) - -#endif /* GL_NV_texgen_emboss */ - -/* ------------------------ GL_NV_texgen_reflection ------------------------ */ - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 - -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 - -#define GLEW_NV_texgen_reflection GLEW_GET_VAR(__GLEW_NV_texgen_reflection) - -#endif /* GL_NV_texgen_reflection */ - -/* --------------------- GL_NV_texture_compression_vtc --------------------- */ - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 - -#define GLEW_NV_texture_compression_vtc GLEW_GET_VAR(__GLEW_NV_texture_compression_vtc) - -#endif /* GL_NV_texture_compression_vtc */ - -/* ----------------------- GL_NV_texture_env_combine4 ---------------------- */ - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 - -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B - -#define GLEW_NV_texture_env_combine4 GLEW_GET_VAR(__GLEW_NV_texture_env_combine4) - -#endif /* GL_NV_texture_env_combine4 */ - -/* ---------------------- GL_NV_texture_expand_normal ---------------------- */ - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 - -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F - -#define GLEW_NV_texture_expand_normal GLEW_GET_VAR(__GLEW_NV_texture_expand_normal) - -#endif /* GL_NV_texture_expand_normal */ - -/* ------------------------ GL_NV_texture_rectangle ------------------------ */ - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 - -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 - -#define GLEW_NV_texture_rectangle GLEW_GET_VAR(__GLEW_NV_texture_rectangle) - -#endif /* GL_NV_texture_rectangle */ - -/* -------------------------- GL_NV_texture_shader ------------------------- */ - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 - -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F - -#define GLEW_NV_texture_shader GLEW_GET_VAR(__GLEW_NV_texture_shader) - -#endif /* GL_NV_texture_shader */ - -/* ------------------------- GL_NV_texture_shader2 ------------------------- */ - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 - -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D - -#define GLEW_NV_texture_shader2 GLEW_GET_VAR(__GLEW_NV_texture_shader2) - -#endif /* GL_NV_texture_shader2 */ - -/* ------------------------- GL_NV_texture_shader3 ------------------------- */ - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 - -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 - -#define GLEW_NV_texture_shader3 GLEW_GET_VAR(__GLEW_NV_texture_shader3) - -#endif /* GL_NV_texture_shader3 */ - -/* ------------------------ GL_NV_transform_feedback ----------------------- */ - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 - -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F - -typedef void (GLAPIENTRY * PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (GLAPIENTRY * PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -typedef GLint (GLAPIENTRY * PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); - -#define glActiveVaryingNV GLEW_GET_FUN(__glewActiveVaryingNV) -#define glBeginTransformFeedbackNV GLEW_GET_FUN(__glewBeginTransformFeedbackNV) -#define glBindBufferBaseNV GLEW_GET_FUN(__glewBindBufferBaseNV) -#define glBindBufferOffsetNV GLEW_GET_FUN(__glewBindBufferOffsetNV) -#define glBindBufferRangeNV GLEW_GET_FUN(__glewBindBufferRangeNV) -#define glEndTransformFeedbackNV GLEW_GET_FUN(__glewEndTransformFeedbackNV) -#define glGetActiveVaryingNV GLEW_GET_FUN(__glewGetActiveVaryingNV) -#define glGetTransformFeedbackVaryingNV GLEW_GET_FUN(__glewGetTransformFeedbackVaryingNV) -#define glGetVaryingLocationNV GLEW_GET_FUN(__glewGetVaryingLocationNV) -#define glTransformFeedbackAttribsNV GLEW_GET_FUN(__glewTransformFeedbackAttribsNV) -#define glTransformFeedbackVaryingsNV GLEW_GET_FUN(__glewTransformFeedbackVaryingsNV) - -#define GLEW_NV_transform_feedback GLEW_GET_VAR(__GLEW_NV_transform_feedback) - -#endif /* GL_NV_transform_feedback */ - -/* ------------------------ GL_NV_vertex_array_range ----------------------- */ - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 - -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 - -typedef void (GLAPIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* pointer); - -#define glFlushVertexArrayRangeNV GLEW_GET_FUN(__glewFlushVertexArrayRangeNV) -#define glVertexArrayRangeNV GLEW_GET_FUN(__glewVertexArrayRangeNV) - -#define GLEW_NV_vertex_array_range GLEW_GET_VAR(__GLEW_NV_vertex_array_range) - -#endif /* GL_NV_vertex_array_range */ - -/* ----------------------- GL_NV_vertex_array_range2 ----------------------- */ - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 - -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 - -#define GLEW_NV_vertex_array_range2 GLEW_GET_VAR(__GLEW_NV_vertex_array_range2) - -#endif /* GL_NV_vertex_array_range2 */ - -/* -------------------------- GL_NV_vertex_program ------------------------- */ - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 - -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F - -typedef GLboolean (GLAPIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint* ids, GLboolean *residences); -typedef void (GLAPIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint* ids); -typedef void (GLAPIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte* program); -typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid** pointer); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint* params); -typedef GLboolean (GLAPIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (GLAPIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte* program); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint num, const GLdouble* params); -typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint num, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, GLuint* ids); -typedef void (GLAPIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei n, const GLdouble* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei n, const GLfloat* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei n, const GLshort* v); -typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei n, const GLubyte* v); - -#define glAreProgramsResidentNV GLEW_GET_FUN(__glewAreProgramsResidentNV) -#define glBindProgramNV GLEW_GET_FUN(__glewBindProgramNV) -#define glDeleteProgramsNV GLEW_GET_FUN(__glewDeleteProgramsNV) -#define glExecuteProgramNV GLEW_GET_FUN(__glewExecuteProgramNV) -#define glGenProgramsNV GLEW_GET_FUN(__glewGenProgramsNV) -#define glGetProgramParameterdvNV GLEW_GET_FUN(__glewGetProgramParameterdvNV) -#define glGetProgramParameterfvNV GLEW_GET_FUN(__glewGetProgramParameterfvNV) -#define glGetProgramStringNV GLEW_GET_FUN(__glewGetProgramStringNV) -#define glGetProgramivNV GLEW_GET_FUN(__glewGetProgramivNV) -#define glGetTrackMatrixivNV GLEW_GET_FUN(__glewGetTrackMatrixivNV) -#define glGetVertexAttribPointervNV GLEW_GET_FUN(__glewGetVertexAttribPointervNV) -#define glGetVertexAttribdvNV GLEW_GET_FUN(__glewGetVertexAttribdvNV) -#define glGetVertexAttribfvNV GLEW_GET_FUN(__glewGetVertexAttribfvNV) -#define glGetVertexAttribivNV GLEW_GET_FUN(__glewGetVertexAttribivNV) -#define glIsProgramNV GLEW_GET_FUN(__glewIsProgramNV) -#define glLoadProgramNV GLEW_GET_FUN(__glewLoadProgramNV) -#define glProgramParameter4dNV GLEW_GET_FUN(__glewProgramParameter4dNV) -#define glProgramParameter4dvNV GLEW_GET_FUN(__glewProgramParameter4dvNV) -#define glProgramParameter4fNV GLEW_GET_FUN(__glewProgramParameter4fNV) -#define glProgramParameter4fvNV GLEW_GET_FUN(__glewProgramParameter4fvNV) -#define glProgramParameters4dvNV GLEW_GET_FUN(__glewProgramParameters4dvNV) -#define glProgramParameters4fvNV GLEW_GET_FUN(__glewProgramParameters4fvNV) -#define glRequestResidentProgramsNV GLEW_GET_FUN(__glewRequestResidentProgramsNV) -#define glTrackMatrixNV GLEW_GET_FUN(__glewTrackMatrixNV) -#define glVertexAttrib1dNV GLEW_GET_FUN(__glewVertexAttrib1dNV) -#define glVertexAttrib1dvNV GLEW_GET_FUN(__glewVertexAttrib1dvNV) -#define glVertexAttrib1fNV GLEW_GET_FUN(__glewVertexAttrib1fNV) -#define glVertexAttrib1fvNV GLEW_GET_FUN(__glewVertexAttrib1fvNV) -#define glVertexAttrib1sNV GLEW_GET_FUN(__glewVertexAttrib1sNV) -#define glVertexAttrib1svNV GLEW_GET_FUN(__glewVertexAttrib1svNV) -#define glVertexAttrib2dNV GLEW_GET_FUN(__glewVertexAttrib2dNV) -#define glVertexAttrib2dvNV GLEW_GET_FUN(__glewVertexAttrib2dvNV) -#define glVertexAttrib2fNV GLEW_GET_FUN(__glewVertexAttrib2fNV) -#define glVertexAttrib2fvNV GLEW_GET_FUN(__glewVertexAttrib2fvNV) -#define glVertexAttrib2sNV GLEW_GET_FUN(__glewVertexAttrib2sNV) -#define glVertexAttrib2svNV GLEW_GET_FUN(__glewVertexAttrib2svNV) -#define glVertexAttrib3dNV GLEW_GET_FUN(__glewVertexAttrib3dNV) -#define glVertexAttrib3dvNV GLEW_GET_FUN(__glewVertexAttrib3dvNV) -#define glVertexAttrib3fNV GLEW_GET_FUN(__glewVertexAttrib3fNV) -#define glVertexAttrib3fvNV GLEW_GET_FUN(__glewVertexAttrib3fvNV) -#define glVertexAttrib3sNV GLEW_GET_FUN(__glewVertexAttrib3sNV) -#define glVertexAttrib3svNV GLEW_GET_FUN(__glewVertexAttrib3svNV) -#define glVertexAttrib4dNV GLEW_GET_FUN(__glewVertexAttrib4dNV) -#define glVertexAttrib4dvNV GLEW_GET_FUN(__glewVertexAttrib4dvNV) -#define glVertexAttrib4fNV GLEW_GET_FUN(__glewVertexAttrib4fNV) -#define glVertexAttrib4fvNV GLEW_GET_FUN(__glewVertexAttrib4fvNV) -#define glVertexAttrib4sNV GLEW_GET_FUN(__glewVertexAttrib4sNV) -#define glVertexAttrib4svNV GLEW_GET_FUN(__glewVertexAttrib4svNV) -#define glVertexAttrib4ubNV GLEW_GET_FUN(__glewVertexAttrib4ubNV) -#define glVertexAttrib4ubvNV GLEW_GET_FUN(__glewVertexAttrib4ubvNV) -#define glVertexAttribPointerNV GLEW_GET_FUN(__glewVertexAttribPointerNV) -#define glVertexAttribs1dvNV GLEW_GET_FUN(__glewVertexAttribs1dvNV) -#define glVertexAttribs1fvNV GLEW_GET_FUN(__glewVertexAttribs1fvNV) -#define glVertexAttribs1svNV GLEW_GET_FUN(__glewVertexAttribs1svNV) -#define glVertexAttribs2dvNV GLEW_GET_FUN(__glewVertexAttribs2dvNV) -#define glVertexAttribs2fvNV GLEW_GET_FUN(__glewVertexAttribs2fvNV) -#define glVertexAttribs2svNV GLEW_GET_FUN(__glewVertexAttribs2svNV) -#define glVertexAttribs3dvNV GLEW_GET_FUN(__glewVertexAttribs3dvNV) -#define glVertexAttribs3fvNV GLEW_GET_FUN(__glewVertexAttribs3fvNV) -#define glVertexAttribs3svNV GLEW_GET_FUN(__glewVertexAttribs3svNV) -#define glVertexAttribs4dvNV GLEW_GET_FUN(__glewVertexAttribs4dvNV) -#define glVertexAttribs4fvNV GLEW_GET_FUN(__glewVertexAttribs4fvNV) -#define glVertexAttribs4svNV GLEW_GET_FUN(__glewVertexAttribs4svNV) -#define glVertexAttribs4ubvNV GLEW_GET_FUN(__glewVertexAttribs4ubvNV) - -#define GLEW_NV_vertex_program GLEW_GET_VAR(__GLEW_NV_vertex_program) - -#endif /* GL_NV_vertex_program */ - -/* ------------------------ GL_NV_vertex_program1_1 ------------------------ */ - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 - -#define GLEW_NV_vertex_program1_1 GLEW_GET_VAR(__GLEW_NV_vertex_program1_1) - -#endif /* GL_NV_vertex_program1_1 */ - -/* ------------------------- GL_NV_vertex_program2 ------------------------- */ - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 - -#define GLEW_NV_vertex_program2 GLEW_GET_VAR(__GLEW_NV_vertex_program2) - -#endif /* GL_NV_vertex_program2 */ - -/* ---------------------- GL_NV_vertex_program2_option --------------------- */ - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 - -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 - -#define GLEW_NV_vertex_program2_option GLEW_GET_VAR(__GLEW_NV_vertex_program2_option) - -#endif /* GL_NV_vertex_program2_option */ - -/* ------------------------- GL_NV_vertex_program3 ------------------------- */ - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 - -#define MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C - -#define GLEW_NV_vertex_program3 GLEW_GET_VAR(__GLEW_NV_vertex_program3) - -#endif /* GL_NV_vertex_program3 */ - -/* ------------------------- GL_NV_vertex_program4 ------------------------- */ - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 - -#define GLEW_NV_vertex_program4 GLEW_GET_VAR(__GLEW_NV_vertex_program4) - -#endif /* GL_NV_vertex_program4 */ - -/* ------------------------ GL_OES_byte_coordinates ------------------------ */ - -#ifndef GL_OES_byte_coordinates -#define GL_OES_byte_coordinates 1 - -#define GL_BYTE 0x1400 - -#define GLEW_OES_byte_coordinates GLEW_GET_VAR(__GLEW_OES_byte_coordinates) - -#endif /* GL_OES_byte_coordinates */ - -/* ------------------- GL_OES_compressed_paletted_texture ------------------ */ - -#ifndef GL_OES_compressed_paletted_texture -#define GL_OES_compressed_paletted_texture 1 - -#define GL_PALETTE4_RGB8_OES 0x8B90 -#define GL_PALETTE4_RGBA8_OES 0x8B91 -#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 -#define GL_PALETTE4_RGBA4_OES 0x8B93 -#define GL_PALETTE4_RGB5_A1_OES 0x8B94 -#define GL_PALETTE8_RGB8_OES 0x8B95 -#define GL_PALETTE8_RGBA8_OES 0x8B96 -#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 -#define GL_PALETTE8_RGBA4_OES 0x8B98 -#define GL_PALETTE8_RGB5_A1_OES 0x8B99 - -#define GLEW_OES_compressed_paletted_texture GLEW_GET_VAR(__GLEW_OES_compressed_paletted_texture) - -#endif /* GL_OES_compressed_paletted_texture */ - -/* --------------------------- GL_OES_read_format -------------------------- */ - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 - -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B - -#define GLEW_OES_read_format GLEW_GET_VAR(__GLEW_OES_read_format) - -#endif /* GL_OES_read_format */ - -/* ------------------------ GL_OES_single_precision ------------------------ */ - -#ifndef GL_OES_single_precision -#define GL_OES_single_precision 1 - -typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFOESPROC) (GLclampd depth); -typedef void (GLAPIENTRY * PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); -typedef void (GLAPIENTRY * PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); -typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat* equation); -typedef void (GLAPIENTRY * PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - -#define glClearDepthfOES GLEW_GET_FUN(__glewClearDepthfOES) -#define glClipPlanefOES GLEW_GET_FUN(__glewClipPlanefOES) -#define glDepthRangefOES GLEW_GET_FUN(__glewDepthRangefOES) -#define glFrustumfOES GLEW_GET_FUN(__glewFrustumfOES) -#define glGetClipPlanefOES GLEW_GET_FUN(__glewGetClipPlanefOES) -#define glOrthofOES GLEW_GET_FUN(__glewOrthofOES) - -#define GLEW_OES_single_precision GLEW_GET_VAR(__GLEW_OES_single_precision) - -#endif /* GL_OES_single_precision */ - -/* ---------------------------- GL_OML_interlace --------------------------- */ - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 - -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 - -#define GLEW_OML_interlace GLEW_GET_VAR(__GLEW_OML_interlace) - -#endif /* GL_OML_interlace */ - -/* ---------------------------- GL_OML_resample ---------------------------- */ - -#ifndef GL_OML_resample -#define GL_OML_resample 1 - -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 - -#define GLEW_OML_resample GLEW_GET_VAR(__GLEW_OML_resample) - -#endif /* GL_OML_resample */ - -/* ---------------------------- GL_OML_subsample --------------------------- */ - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 - -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 - -#define GLEW_OML_subsample GLEW_GET_VAR(__GLEW_OML_subsample) - -#endif /* GL_OML_subsample */ - -/* --------------------------- GL_PGI_misc_hints --------------------------- */ - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 - -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 107000 -#define GL_CONSERVE_MEMORY_HINT_PGI 107005 -#define GL_RECLAIM_MEMORY_HINT_PGI 107006 -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 107010 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 107011 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 107012 -#define GL_ALWAYS_FAST_HINT_PGI 107020 -#define GL_ALWAYS_SOFT_HINT_PGI 107021 -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 107022 -#define GL_ALLOW_DRAW_WIN_HINT_PGI 107023 -#define GL_ALLOW_DRAW_FRG_HINT_PGI 107024 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 107025 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 107030 -#define GL_STRICT_LIGHTING_HINT_PGI 107031 -#define GL_STRICT_SCISSOR_HINT_PGI 107032 -#define GL_FULL_STIPPLE_HINT_PGI 107033 -#define GL_CLIP_NEAR_HINT_PGI 107040 -#define GL_CLIP_FAR_HINT_PGI 107041 -#define GL_WIDE_LINE_HINT_PGI 107042 -#define GL_BACK_NORMALS_HINT_PGI 107043 - -#define GLEW_PGI_misc_hints GLEW_GET_VAR(__GLEW_PGI_misc_hints) - -#endif /* GL_PGI_misc_hints */ - -/* -------------------------- GL_PGI_vertex_hints -------------------------- */ - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 - -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_VERTEX_DATA_HINT_PGI 107050 -#define GL_VERTEX_CONSISTENT_HINT_PGI 107051 -#define GL_MATERIAL_SIDE_HINT_PGI 107052 -#define GL_MAX_VERTEX_HINT_PGI 107053 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 - -#define GLEW_PGI_vertex_hints GLEW_GET_VAR(__GLEW_PGI_vertex_hints) - -#endif /* GL_PGI_vertex_hints */ - -/* ----------------------- GL_REND_screen_coordinates ---------------------- */ - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 - -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 - -#define GLEW_REND_screen_coordinates GLEW_GET_VAR(__GLEW_REND_screen_coordinates) - -#endif /* GL_REND_screen_coordinates */ - -/* ------------------------------- GL_S3_s3tc ------------------------------ */ - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 - -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#define GL_RGBA_DXT5_S3TC 0x83A4 -#define GL_RGBA4_DXT5_S3TC 0x83A5 - -#define GLEW_S3_s3tc GLEW_GET_VAR(__GLEW_S3_s3tc) - -#endif /* GL_S3_s3tc */ - -/* -------------------------- GL_SGIS_color_range -------------------------- */ - -#ifndef GL_SGIS_color_range -#define GL_SGIS_color_range 1 - -#define GL_EXTENDED_RANGE_SGIS 0x85A5 -#define GL_MIN_RED_SGIS 0x85A6 -#define GL_MAX_RED_SGIS 0x85A7 -#define GL_MIN_GREEN_SGIS 0x85A8 -#define GL_MAX_GREEN_SGIS 0x85A9 -#define GL_MIN_BLUE_SGIS 0x85AA -#define GL_MAX_BLUE_SGIS 0x85AB -#define GL_MIN_ALPHA_SGIS 0x85AC -#define GL_MAX_ALPHA_SGIS 0x85AD - -#define GLEW_SGIS_color_range GLEW_GET_VAR(__GLEW_SGIS_color_range) - -#endif /* GL_SGIS_color_range */ - -/* ------------------------- GL_SGIS_detail_texture ------------------------ */ - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 - -typedef void (GLAPIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat* points); - -#define glDetailTexFuncSGIS GLEW_GET_FUN(__glewDetailTexFuncSGIS) -#define glGetDetailTexFuncSGIS GLEW_GET_FUN(__glewGetDetailTexFuncSGIS) - -#define GLEW_SGIS_detail_texture GLEW_GET_VAR(__GLEW_SGIS_detail_texture) - -#endif /* GL_SGIS_detail_texture */ - -/* -------------------------- GL_SGIS_fog_function ------------------------- */ - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 - -typedef void (GLAPIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat* points); -typedef void (GLAPIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat* points); - -#define glFogFuncSGIS GLEW_GET_FUN(__glewFogFuncSGIS) -#define glGetFogFuncSGIS GLEW_GET_FUN(__glewGetFogFuncSGIS) - -#define GLEW_SGIS_fog_function GLEW_GET_VAR(__GLEW_SGIS_fog_function) - -#endif /* GL_SGIS_fog_function */ - -/* ------------------------ GL_SGIS_generate_mipmap ------------------------ */ - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 - -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 - -#define GLEW_SGIS_generate_mipmap GLEW_GET_VAR(__GLEW_SGIS_generate_mipmap) - -#endif /* GL_SGIS_generate_mipmap */ - -/* -------------------------- GL_SGIS_multisample -------------------------- */ - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 - -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 - -typedef void (GLAPIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (GLAPIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); - -#define glSampleMaskSGIS GLEW_GET_FUN(__glewSampleMaskSGIS) -#define glSamplePatternSGIS GLEW_GET_FUN(__glewSamplePatternSGIS) - -#define GLEW_SGIS_multisample GLEW_GET_VAR(__GLEW_SGIS_multisample) - -#endif /* GL_SGIS_multisample */ - -/* ------------------------- GL_SGIS_pixel_texture ------------------------- */ - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 - -#define GLEW_SGIS_pixel_texture GLEW_GET_VAR(__GLEW_SGIS_pixel_texture) - -#endif /* GL_SGIS_pixel_texture */ - -/* ----------------------- GL_SGIS_point_line_texgen ----------------------- */ - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 - -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 - -#define GLEW_SGIS_point_line_texgen GLEW_GET_VAR(__GLEW_SGIS_point_line_texgen) - -#endif /* GL_SGIS_point_line_texgen */ - -/* ------------------------ GL_SGIS_sharpen_texture ------------------------ */ - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 - -typedef void (GLAPIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat* points); -typedef void (GLAPIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat* points); - -#define glGetSharpenTexFuncSGIS GLEW_GET_FUN(__glewGetSharpenTexFuncSGIS) -#define glSharpenTexFuncSGIS GLEW_GET_FUN(__glewSharpenTexFuncSGIS) - -#define GLEW_SGIS_sharpen_texture GLEW_GET_VAR(__GLEW_SGIS_sharpen_texture) - -#endif /* GL_SGIS_sharpen_texture */ - -/* --------------------------- GL_SGIS_texture4D --------------------------- */ - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 - -typedef void (GLAPIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLint border, GLenum format, GLenum type, const void* pixels); -typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei extent, GLenum format, GLenum type, const void* pixels); - -#define glTexImage4DSGIS GLEW_GET_FUN(__glewTexImage4DSGIS) -#define glTexSubImage4DSGIS GLEW_GET_FUN(__glewTexSubImage4DSGIS) - -#define GLEW_SGIS_texture4D GLEW_GET_VAR(__GLEW_SGIS_texture4D) - -#endif /* GL_SGIS_texture4D */ - -/* ---------------------- GL_SGIS_texture_border_clamp --------------------- */ - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 - -#define GL_CLAMP_TO_BORDER_SGIS 0x812D - -#define GLEW_SGIS_texture_border_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_border_clamp) - -#endif /* GL_SGIS_texture_border_clamp */ - -/* ----------------------- GL_SGIS_texture_edge_clamp ---------------------- */ - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 - -#define GL_CLAMP_TO_EDGE_SGIS 0x812F - -#define GLEW_SGIS_texture_edge_clamp GLEW_GET_VAR(__GLEW_SGIS_texture_edge_clamp) - -#endif /* GL_SGIS_texture_edge_clamp */ - -/* ------------------------ GL_SGIS_texture_filter4 ------------------------ */ - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 - -typedef void (GLAPIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat* weights); -typedef void (GLAPIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); - -#define glGetTexFilterFuncSGIS GLEW_GET_FUN(__glewGetTexFilterFuncSGIS) -#define glTexFilterFuncSGIS GLEW_GET_FUN(__glewTexFilterFuncSGIS) - -#define GLEW_SGIS_texture_filter4 GLEW_GET_VAR(__GLEW_SGIS_texture_filter4) - -#endif /* GL_SGIS_texture_filter4 */ - -/* -------------------------- GL_SGIS_texture_lod -------------------------- */ - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 - -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D - -#define GLEW_SGIS_texture_lod GLEW_GET_VAR(__GLEW_SGIS_texture_lod) - -#endif /* GL_SGIS_texture_lod */ - -/* ------------------------- GL_SGIS_texture_select ------------------------ */ - -#ifndef GL_SGIS_texture_select -#define GL_SGIS_texture_select 1 - -#define GLEW_SGIS_texture_select GLEW_GET_VAR(__GLEW_SGIS_texture_select) - -#endif /* GL_SGIS_texture_select */ - -/* ----------------------------- GL_SGIX_async ----------------------------- */ - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 - -#define GL_ASYNC_MARKER_SGIX 0x8329 - -typedef void (GLAPIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef void (GLAPIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLint (GLAPIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint* markerp); -typedef GLuint (GLAPIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef GLboolean (GLAPIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (GLAPIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint* markerp); - -#define glAsyncMarkerSGIX GLEW_GET_FUN(__glewAsyncMarkerSGIX) -#define glDeleteAsyncMarkersSGIX GLEW_GET_FUN(__glewDeleteAsyncMarkersSGIX) -#define glFinishAsyncSGIX GLEW_GET_FUN(__glewFinishAsyncSGIX) -#define glGenAsyncMarkersSGIX GLEW_GET_FUN(__glewGenAsyncMarkersSGIX) -#define glIsAsyncMarkerSGIX GLEW_GET_FUN(__glewIsAsyncMarkerSGIX) -#define glPollAsyncSGIX GLEW_GET_FUN(__glewPollAsyncSGIX) - -#define GLEW_SGIX_async GLEW_GET_VAR(__GLEW_SGIX_async) - -#endif /* GL_SGIX_async */ - -/* ------------------------ GL_SGIX_async_histogram ------------------------ */ - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 - -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D - -#define GLEW_SGIX_async_histogram GLEW_GET_VAR(__GLEW_SGIX_async_histogram) - -#endif /* GL_SGIX_async_histogram */ - -/* -------------------------- GL_SGIX_async_pixel -------------------------- */ - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 - -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 - -#define GLEW_SGIX_async_pixel GLEW_GET_VAR(__GLEW_SGIX_async_pixel) - -#endif /* GL_SGIX_async_pixel */ - -/* ----------------------- GL_SGIX_blend_alpha_minmax ---------------------- */ - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 - -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 - -#define GLEW_SGIX_blend_alpha_minmax GLEW_GET_VAR(__GLEW_SGIX_blend_alpha_minmax) - -#endif /* GL_SGIX_blend_alpha_minmax */ - -/* ---------------------------- GL_SGIX_clipmap ---------------------------- */ - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 - -#define GLEW_SGIX_clipmap GLEW_GET_VAR(__GLEW_SGIX_clipmap) - -#endif /* GL_SGIX_clipmap */ - -/* ---------------------- GL_SGIX_convolution_accuracy --------------------- */ - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 - -#define GL_CONVOLUTION_HINT_SGIX 0x8316 - -#define GLEW_SGIX_convolution_accuracy GLEW_GET_VAR(__GLEW_SGIX_convolution_accuracy) - -#endif /* GL_SGIX_convolution_accuracy */ - -/* ------------------------- GL_SGIX_depth_texture ------------------------- */ - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 - -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 - -#define GLEW_SGIX_depth_texture GLEW_GET_VAR(__GLEW_SGIX_depth_texture) - -#endif /* GL_SGIX_depth_texture */ - -/* -------------------------- GL_SGIX_flush_raster ------------------------- */ - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 - -typedef void (GLAPIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); - -#define glFlushRasterSGIX GLEW_GET_FUN(__glewFlushRasterSGIX) - -#define GLEW_SGIX_flush_raster GLEW_GET_VAR(__GLEW_SGIX_flush_raster) - -#endif /* GL_SGIX_flush_raster */ - -/* --------------------------- GL_SGIX_fog_offset -------------------------- */ - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 - -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 - -#define GLEW_SGIX_fog_offset GLEW_GET_VAR(__GLEW_SGIX_fog_offset) - -#endif /* GL_SGIX_fog_offset */ - -/* -------------------------- GL_SGIX_fog_texture -------------------------- */ - -#ifndef GL_SGIX_fog_texture -#define GL_SGIX_fog_texture 1 - -#define GL_TEXTURE_FOG_SGIX 0 -#define GL_FOG_PATCHY_FACTOR_SGIX 0 -#define GL_FRAGMENT_FOG_SGIX 0 - -typedef void (GLAPIENTRY * PFNGLTEXTUREFOGSGIXPROC) (GLenum pname); - -#define glTextureFogSGIX GLEW_GET_FUN(__glewTextureFogSGIX) - -#define GLEW_SGIX_fog_texture GLEW_GET_VAR(__GLEW_SGIX_fog_texture) - -#endif /* GL_SGIX_fog_texture */ - -/* ------------------- GL_SGIX_fragment_specular_lighting ------------------ */ - -#ifndef GL_SGIX_fragment_specular_lighting -#define GL_SGIX_fragment_specular_lighting 1 - -typedef void (GLAPIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, const GLfloat param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, const GLint param); -typedef void (GLAPIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum value, GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum value, GLint* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data); -typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data); - -#define glFragmentColorMaterialSGIX GLEW_GET_FUN(__glewFragmentColorMaterialSGIX) -#define glFragmentLightModelfSGIX GLEW_GET_FUN(__glewFragmentLightModelfSGIX) -#define glFragmentLightModelfvSGIX GLEW_GET_FUN(__glewFragmentLightModelfvSGIX) -#define glFragmentLightModeliSGIX GLEW_GET_FUN(__glewFragmentLightModeliSGIX) -#define glFragmentLightModelivSGIX GLEW_GET_FUN(__glewFragmentLightModelivSGIX) -#define glFragmentLightfSGIX GLEW_GET_FUN(__glewFragmentLightfSGIX) -#define glFragmentLightfvSGIX GLEW_GET_FUN(__glewFragmentLightfvSGIX) -#define glFragmentLightiSGIX GLEW_GET_FUN(__glewFragmentLightiSGIX) -#define glFragmentLightivSGIX GLEW_GET_FUN(__glewFragmentLightivSGIX) -#define glFragmentMaterialfSGIX GLEW_GET_FUN(__glewFragmentMaterialfSGIX) -#define glFragmentMaterialfvSGIX GLEW_GET_FUN(__glewFragmentMaterialfvSGIX) -#define glFragmentMaterialiSGIX GLEW_GET_FUN(__glewFragmentMaterialiSGIX) -#define glFragmentMaterialivSGIX GLEW_GET_FUN(__glewFragmentMaterialivSGIX) -#define glGetFragmentLightfvSGIX GLEW_GET_FUN(__glewGetFragmentLightfvSGIX) -#define glGetFragmentLightivSGIX GLEW_GET_FUN(__glewGetFragmentLightivSGIX) -#define glGetFragmentMaterialfvSGIX GLEW_GET_FUN(__glewGetFragmentMaterialfvSGIX) -#define glGetFragmentMaterialivSGIX GLEW_GET_FUN(__glewGetFragmentMaterialivSGIX) - -#define GLEW_SGIX_fragment_specular_lighting GLEW_GET_VAR(__GLEW_SGIX_fragment_specular_lighting) - -#endif /* GL_SGIX_fragment_specular_lighting */ - -/* --------------------------- GL_SGIX_framezoom --------------------------- */ - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 - -typedef void (GLAPIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); - -#define glFrameZoomSGIX GLEW_GET_FUN(__glewFrameZoomSGIX) - -#define GLEW_SGIX_framezoom GLEW_GET_VAR(__GLEW_SGIX_framezoom) - -#endif /* GL_SGIX_framezoom */ - -/* --------------------------- GL_SGIX_interlace --------------------------- */ - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 - -#define GL_INTERLACE_SGIX 0x8094 - -#define GLEW_SGIX_interlace GLEW_GET_VAR(__GLEW_SGIX_interlace) - -#endif /* GL_SGIX_interlace */ - -/* ------------------------- GL_SGIX_ir_instrument1 ------------------------ */ - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 - -#define GLEW_SGIX_ir_instrument1 GLEW_GET_VAR(__GLEW_SGIX_ir_instrument1) - -#endif /* GL_SGIX_ir_instrument1 */ - -/* ------------------------- GL_SGIX_list_priority ------------------------- */ - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 - -#define GLEW_SGIX_list_priority GLEW_GET_VAR(__GLEW_SGIX_list_priority) - -#endif /* GL_SGIX_list_priority */ - -/* ------------------------- GL_SGIX_pixel_texture ------------------------- */ - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 - -typedef void (GLAPIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); - -#define glPixelTexGenSGIX GLEW_GET_FUN(__glewPixelTexGenSGIX) - -#define GLEW_SGIX_pixel_texture GLEW_GET_VAR(__GLEW_SGIX_pixel_texture) - -#endif /* GL_SGIX_pixel_texture */ - -/* ----------------------- GL_SGIX_pixel_texture_bits ---------------------- */ - -#ifndef GL_SGIX_pixel_texture_bits -#define GL_SGIX_pixel_texture_bits 1 - -#define GLEW_SGIX_pixel_texture_bits GLEW_GET_VAR(__GLEW_SGIX_pixel_texture_bits) - -#endif /* GL_SGIX_pixel_texture_bits */ - -/* ------------------------ GL_SGIX_reference_plane ------------------------ */ - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 - -typedef void (GLAPIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble* equation); - -#define glReferencePlaneSGIX GLEW_GET_FUN(__glewReferencePlaneSGIX) - -#define GLEW_SGIX_reference_plane GLEW_GET_VAR(__GLEW_SGIX_reference_plane) - -#endif /* GL_SGIX_reference_plane */ - -/* ---------------------------- GL_SGIX_resample --------------------------- */ - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 - -#define GL_PACK_RESAMPLE_SGIX 0x842E -#define GL_UNPACK_RESAMPLE_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 - -#define GLEW_SGIX_resample GLEW_GET_VAR(__GLEW_SGIX_resample) - -#endif /* GL_SGIX_resample */ - -/* ----------------------------- GL_SGIX_shadow ---------------------------- */ - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 - -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D - -#define GLEW_SGIX_shadow GLEW_GET_VAR(__GLEW_SGIX_shadow) - -#endif /* GL_SGIX_shadow */ - -/* ------------------------- GL_SGIX_shadow_ambient ------------------------ */ - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 - -#define GL_SHADOW_AMBIENT_SGIX 0x80BF - -#define GLEW_SGIX_shadow_ambient GLEW_GET_VAR(__GLEW_SGIX_shadow_ambient) - -#endif /* GL_SGIX_shadow_ambient */ - -/* ----------------------------- GL_SGIX_sprite ---------------------------- */ - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 - -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (GLAPIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, GLint* params); - -#define glSpriteParameterfSGIX GLEW_GET_FUN(__glewSpriteParameterfSGIX) -#define glSpriteParameterfvSGIX GLEW_GET_FUN(__glewSpriteParameterfvSGIX) -#define glSpriteParameteriSGIX GLEW_GET_FUN(__glewSpriteParameteriSGIX) -#define glSpriteParameterivSGIX GLEW_GET_FUN(__glewSpriteParameterivSGIX) - -#define GLEW_SGIX_sprite GLEW_GET_VAR(__GLEW_SGIX_sprite) - -#endif /* GL_SGIX_sprite */ - -/* ----------------------- GL_SGIX_tag_sample_buffer ----------------------- */ - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 - -typedef void (GLAPIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); - -#define glTagSampleBufferSGIX GLEW_GET_FUN(__glewTagSampleBufferSGIX) - -#define GLEW_SGIX_tag_sample_buffer GLEW_GET_VAR(__GLEW_SGIX_tag_sample_buffer) - -#endif /* GL_SGIX_tag_sample_buffer */ - -/* ------------------------ GL_SGIX_texture_add_env ------------------------ */ - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 - -#define GLEW_SGIX_texture_add_env GLEW_GET_VAR(__GLEW_SGIX_texture_add_env) - -#endif /* GL_SGIX_texture_add_env */ - -/* -------------------- GL_SGIX_texture_coordinate_clamp ------------------- */ - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 - -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B - -#define GLEW_SGIX_texture_coordinate_clamp GLEW_GET_VAR(__GLEW_SGIX_texture_coordinate_clamp) - -#endif /* GL_SGIX_texture_coordinate_clamp */ - -/* ------------------------ GL_SGIX_texture_lod_bias ----------------------- */ - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 - -#define GLEW_SGIX_texture_lod_bias GLEW_GET_VAR(__GLEW_SGIX_texture_lod_bias) - -#endif /* GL_SGIX_texture_lod_bias */ - -/* ---------------------- GL_SGIX_texture_multi_buffer --------------------- */ - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 - -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E - -#define GLEW_SGIX_texture_multi_buffer GLEW_GET_VAR(__GLEW_SGIX_texture_multi_buffer) - -#endif /* GL_SGIX_texture_multi_buffer */ - -/* ------------------------- GL_SGIX_texture_range ------------------------- */ - -#ifndef GL_SGIX_texture_range -#define GL_SGIX_texture_range 1 - -#define GL_RGB_SIGNED_SGIX 0x85E0 -#define GL_RGBA_SIGNED_SGIX 0x85E1 -#define GL_ALPHA_SIGNED_SGIX 0x85E2 -#define GL_LUMINANCE_SIGNED_SGIX 0x85E3 -#define GL_INTENSITY_SIGNED_SGIX 0x85E4 -#define GL_LUMINANCE_ALPHA_SIGNED_SGIX 0x85E5 -#define GL_RGB16_SIGNED_SGIX 0x85E6 -#define GL_RGBA16_SIGNED_SGIX 0x85E7 -#define GL_ALPHA16_SIGNED_SGIX 0x85E8 -#define GL_LUMINANCE16_SIGNED_SGIX 0x85E9 -#define GL_INTENSITY16_SIGNED_SGIX 0x85EA -#define GL_LUMINANCE16_ALPHA16_SIGNED_SGIX 0x85EB -#define GL_RGB_EXTENDED_RANGE_SGIX 0x85EC -#define GL_RGBA_EXTENDED_RANGE_SGIX 0x85ED -#define GL_ALPHA_EXTENDED_RANGE_SGIX 0x85EE -#define GL_LUMINANCE_EXTENDED_RANGE_SGIX 0x85EF -#define GL_INTENSITY_EXTENDED_RANGE_SGIX 0x85F0 -#define GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX 0x85F1 -#define GL_RGB16_EXTENDED_RANGE_SGIX 0x85F2 -#define GL_RGBA16_EXTENDED_RANGE_SGIX 0x85F3 -#define GL_ALPHA16_EXTENDED_RANGE_SGIX 0x85F4 -#define GL_LUMINANCE16_EXTENDED_RANGE_SGIX 0x85F5 -#define GL_INTENSITY16_EXTENDED_RANGE_SGIX 0x85F6 -#define GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX 0x85F7 -#define GL_MIN_LUMINANCE_SGIS 0x85F8 -#define GL_MAX_LUMINANCE_SGIS 0x85F9 -#define GL_MIN_INTENSITY_SGIS 0x85FA -#define GL_MAX_INTENSITY_SGIS 0x85FB - -#define GLEW_SGIX_texture_range GLEW_GET_VAR(__GLEW_SGIX_texture_range) - -#endif /* GL_SGIX_texture_range */ - -/* ----------------------- GL_SGIX_texture_scale_bias ---------------------- */ - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 - -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C - -#define GLEW_SGIX_texture_scale_bias GLEW_GET_VAR(__GLEW_SGIX_texture_scale_bias) - -#endif /* GL_SGIX_texture_scale_bias */ - -/* ------------------------- GL_SGIX_vertex_preclip ------------------------ */ - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip) - -#endif /* GL_SGIX_vertex_preclip */ - -/* ---------------------- GL_SGIX_vertex_preclip_hint ---------------------- */ - -#ifndef GL_SGIX_vertex_preclip_hint -#define GL_SGIX_vertex_preclip_hint 1 - -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF - -#define GLEW_SGIX_vertex_preclip_hint GLEW_GET_VAR(__GLEW_SGIX_vertex_preclip_hint) - -#endif /* GL_SGIX_vertex_preclip_hint */ - -/* ----------------------------- GL_SGIX_ycrcb ----------------------------- */ - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 - -#define GLEW_SGIX_ycrcb GLEW_GET_VAR(__GLEW_SGIX_ycrcb) - -#endif /* GL_SGIX_ycrcb */ - -/* -------------------------- GL_SGI_color_matrix -------------------------- */ - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 - -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB - -#define GLEW_SGI_color_matrix GLEW_GET_VAR(__GLEW_SGI_color_matrix) - -#endif /* GL_SGI_color_matrix */ - -/* --------------------------- GL_SGI_color_table -------------------------- */ - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 - -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF - -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint* params); -typedef void (GLAPIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); -typedef void (GLAPIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint* params); -typedef void (GLAPIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void* table); - -#define glColorTableParameterfvSGI GLEW_GET_FUN(__glewColorTableParameterfvSGI) -#define glColorTableParameterivSGI GLEW_GET_FUN(__glewColorTableParameterivSGI) -#define glColorTableSGI GLEW_GET_FUN(__glewColorTableSGI) -#define glCopyColorTableSGI GLEW_GET_FUN(__glewCopyColorTableSGI) -#define glGetColorTableParameterfvSGI GLEW_GET_FUN(__glewGetColorTableParameterfvSGI) -#define glGetColorTableParameterivSGI GLEW_GET_FUN(__glewGetColorTableParameterivSGI) -#define glGetColorTableSGI GLEW_GET_FUN(__glewGetColorTableSGI) - -#define GLEW_SGI_color_table GLEW_GET_VAR(__GLEW_SGI_color_table) - -#endif /* GL_SGI_color_table */ - -/* ----------------------- GL_SGI_texture_color_table ---------------------- */ - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 - -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD - -#define GLEW_SGI_texture_color_table GLEW_GET_VAR(__GLEW_SGI_texture_color_table) - -#endif /* GL_SGI_texture_color_table */ - -/* ------------------------- GL_SUNX_constant_data ------------------------- */ - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 - -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 - -typedef void (GLAPIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); - -#define glFinishTextureSUNX GLEW_GET_FUN(__glewFinishTextureSUNX) - -#define GLEW_SUNX_constant_data GLEW_GET_VAR(__GLEW_SUNX_constant_data) - -#endif /* GL_SUNX_constant_data */ - -/* -------------------- GL_SUN_convolution_border_modes -------------------- */ - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 - -#define GL_WRAP_BORDER_SUN 0x81D4 - -#define GLEW_SUN_convolution_border_modes GLEW_GET_VAR(__GLEW_SUN_convolution_border_modes) - -#endif /* GL_SUN_convolution_border_modes */ - -/* -------------------------- GL_SUN_global_alpha -------------------------- */ - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 - -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA - -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -typedef void (GLAPIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); - -#define glGlobalAlphaFactorbSUN GLEW_GET_FUN(__glewGlobalAlphaFactorbSUN) -#define glGlobalAlphaFactordSUN GLEW_GET_FUN(__glewGlobalAlphaFactordSUN) -#define glGlobalAlphaFactorfSUN GLEW_GET_FUN(__glewGlobalAlphaFactorfSUN) -#define glGlobalAlphaFactoriSUN GLEW_GET_FUN(__glewGlobalAlphaFactoriSUN) -#define glGlobalAlphaFactorsSUN GLEW_GET_FUN(__glewGlobalAlphaFactorsSUN) -#define glGlobalAlphaFactorubSUN GLEW_GET_FUN(__glewGlobalAlphaFactorubSUN) -#define glGlobalAlphaFactoruiSUN GLEW_GET_FUN(__glewGlobalAlphaFactoruiSUN) -#define glGlobalAlphaFactorusSUN GLEW_GET_FUN(__glewGlobalAlphaFactorusSUN) - -#define GLEW_SUN_global_alpha GLEW_GET_VAR(__GLEW_SUN_global_alpha) - -#endif /* GL_SUN_global_alpha */ - -/* --------------------------- GL_SUN_mesh_array --------------------------- */ - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 - -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 - -#define GLEW_SUN_mesh_array GLEW_GET_VAR(__GLEW_SUN_mesh_array) - -#endif /* GL_SUN_mesh_array */ - -/* ------------------------ GL_SUN_read_video_pixels ----------------------- */ - -#ifndef GL_SUN_read_video_pixels -#define GL_SUN_read_video_pixels 1 - -typedef void (GLAPIENTRY * PFNGLREADVIDEOPIXELSSUNPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); - -#define glReadVideoPixelsSUN GLEW_GET_FUN(__glewReadVideoPixelsSUN) - -#define GLEW_SUN_read_video_pixels GLEW_GET_VAR(__GLEW_SUN_read_video_pixels) - -#endif /* GL_SUN_read_video_pixels */ - -/* --------------------------- GL_SUN_slice_accum -------------------------- */ - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 - -#define GL_SLICE_ACCUM_SUN 0x85CC - -#define GLEW_SUN_slice_accum GLEW_GET_VAR(__GLEW_SUN_slice_accum) - -#endif /* GL_SUN_slice_accum */ - -/* -------------------------- GL_SUN_triangle_list ------------------------- */ - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 - -#define GL_RESTART_SUN 0x01 -#define GL_REPLACE_MIDDLE_SUN 0x02 -#define GL_REPLACE_OLDEST_SUN 0x03 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB - -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void* pointer); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint* code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort* code); - -#define glReplacementCodePointerSUN GLEW_GET_FUN(__glewReplacementCodePointerSUN) -#define glReplacementCodeubSUN GLEW_GET_FUN(__glewReplacementCodeubSUN) -#define glReplacementCodeubvSUN GLEW_GET_FUN(__glewReplacementCodeubvSUN) -#define glReplacementCodeuiSUN GLEW_GET_FUN(__glewReplacementCodeuiSUN) -#define glReplacementCodeuivSUN GLEW_GET_FUN(__glewReplacementCodeuivSUN) -#define glReplacementCodeusSUN GLEW_GET_FUN(__glewReplacementCodeusSUN) -#define glReplacementCodeusvSUN GLEW_GET_FUN(__glewReplacementCodeusvSUN) - -#define GLEW_SUN_triangle_list GLEW_GET_VAR(__GLEW_SUN_triangle_list) - -#endif /* GL_SUN_triangle_list */ - -/* ----------------------------- GL_SUN_vertex ----------------------------- */ - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 - -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte* c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint* rc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint* rc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat* tc, const GLubyte *c, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat* tc, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat* tc, const GLfloat *v); - -#define glColor3fVertex3fSUN GLEW_GET_FUN(__glewColor3fVertex3fSUN) -#define glColor3fVertex3fvSUN GLEW_GET_FUN(__glewColor3fVertex3fvSUN) -#define glColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fSUN) -#define glColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewColor4fNormal3fVertex3fvSUN) -#define glColor4ubVertex2fSUN GLEW_GET_FUN(__glewColor4ubVertex2fSUN) -#define glColor4ubVertex2fvSUN GLEW_GET_FUN(__glewColor4ubVertex2fvSUN) -#define glColor4ubVertex3fSUN GLEW_GET_FUN(__glewColor4ubVertex3fSUN) -#define glColor4ubVertex3fvSUN GLEW_GET_FUN(__glewColor4ubVertex3fvSUN) -#define glNormal3fVertex3fSUN GLEW_GET_FUN(__glewNormal3fVertex3fSUN) -#define glNormal3fVertex3fvSUN GLEW_GET_FUN(__glewNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fSUN) -#define glReplacementCodeuiColor3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor3fVertex3fvSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiColor4ubVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fSUN) -#define glReplacementCodeuiColor4ubVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiColor4ubVertex3fvSUN) -#define glReplacementCodeuiNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fSUN) -#define glReplacementCodeuiNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) -#define glReplacementCodeuiTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fSUN) -#define glReplacementCodeuiTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiTexCoord2fVertex3fvSUN) -#define glReplacementCodeuiVertex3fSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fSUN) -#define glReplacementCodeuiVertex3fvSUN GLEW_GET_FUN(__glewReplacementCodeuiVertex3fvSUN) -#define glTexCoord2fColor3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fSUN) -#define glTexCoord2fColor3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor3fVertex3fvSUN) -#define glTexCoord2fColor4fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fSUN) -#define glTexCoord2fColor4fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4fNormal3fVertex3fvSUN) -#define glTexCoord2fColor4ubVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fSUN) -#define glTexCoord2fColor4ubVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fColor4ubVertex3fvSUN) -#define glTexCoord2fNormal3fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fSUN) -#define glTexCoord2fNormal3fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fNormal3fVertex3fvSUN) -#define glTexCoord2fVertex3fSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fSUN) -#define glTexCoord2fVertex3fvSUN GLEW_GET_FUN(__glewTexCoord2fVertex3fvSUN) -#define glTexCoord4fColor4fNormal3fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fSUN) -#define glTexCoord4fColor4fNormal3fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fColor4fNormal3fVertex4fvSUN) -#define glTexCoord4fVertex4fSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fSUN) -#define glTexCoord4fVertex4fvSUN GLEW_GET_FUN(__glewTexCoord4fVertex4fvSUN) - -#define GLEW_SUN_vertex GLEW_GET_VAR(__GLEW_SUN_vertex) - -#endif /* GL_SUN_vertex */ - -/* -------------------------- GL_WIN_phong_shading ------------------------- */ - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 - -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB - -#define GLEW_WIN_phong_shading GLEW_GET_VAR(__GLEW_WIN_phong_shading) - -#endif /* GL_WIN_phong_shading */ - -/* -------------------------- GL_WIN_specular_fog -------------------------- */ - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 - -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC - -#define GLEW_WIN_specular_fog GLEW_GET_VAR(__GLEW_WIN_specular_fog) - -#endif /* GL_WIN_specular_fog */ - -/* ---------------------------- GL_WIN_swap_hint --------------------------- */ - -#ifndef GL_WIN_swap_hint -#define GL_WIN_swap_hint 1 - -typedef void (GLAPIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height); - -#define glAddSwapHintRectWIN GLEW_GET_FUN(__glewAddSwapHintRectWIN) - -#define GLEW_WIN_swap_hint GLEW_GET_VAR(__GLEW_WIN_swap_hint) - -#endif /* GL_WIN_swap_hint */ - -/* ------------------------------------------------------------------------- */ - -#if defined(GLEW_MX) && defined(_WIN32) -#define GLEW_FUN_EXPORT -#else -#define GLEW_FUN_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) -#define GLEW_VAR_EXPORT -#else -#define GLEW_VAR_EXPORT GLEWAPI -#endif /* GLEW_MX */ - -#if defined(GLEW_MX) && defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements; -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DPROC __glewTexImage3D; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREPROC __glewActiveTexture; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv; -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage; - -GLEW_FUN_EXPORT PFNGLBLENDCOLORPROC __glewBlendColor; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONPROC __glewBlendEquation; -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer; -GLEW_FUN_EXPORT PFNGLFOGCOORDDPROC __glewFogCoordd; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVPROC __glewFogCoorddv; -GLEW_FUN_EXPORT PFNGLFOGCOORDFPROC __glewFogCoordf; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVPROC __glewFogCoordfv; -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFPROC __glewPointParameterf; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIPROC __glewPointParameteri; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DPROC __glewWindowPos2d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FPROC __glewWindowPos2f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IPROC __glewWindowPos2i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SPROC __glewWindowPos2s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DPROC __glewWindowPos3d; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FPROC __glewWindowPos3f; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IPROC __glewWindowPos3i; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SPROC __glewWindowPos3s; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYPROC __glewBeginQuery; -GLEW_FUN_EXPORT PFNGLBINDBUFFERPROC __glewBindBuffer; -GLEW_FUN_EXPORT PFNGLBUFFERDATAPROC __glewBufferData; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAPROC __glewBufferSubData; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSPROC __glewDeleteBuffers; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESPROC __glewDeleteQueries; -GLEW_FUN_EXPORT PFNGLENDQUERYPROC __glewEndQuery; -GLEW_FUN_EXPORT PFNGLGENBUFFERSPROC __glewGenBuffers; -GLEW_FUN_EXPORT PFNGLGENQUERIESPROC __glewGenQueries; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv; -GLEW_FUN_EXPORT PFNGLGETQUERYIVPROC __glewGetQueryiv; -GLEW_FUN_EXPORT PFNGLISBUFFERPROC __glewIsBuffer; -GLEW_FUN_EXPORT PFNGLISQUERYPROC __glewIsQuery; -GLEW_FUN_EXPORT PFNGLMAPBUFFERPROC __glewMapBuffer; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERPROC __glewUnmapBuffer; - -GLEW_FUN_EXPORT PFNGLATTACHSHADERPROC __glewAttachShader; -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation; -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERPROC __glewCompileShader; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMPROC __glewCreateProgram; -GLEW_FUN_EXPORT PFNGLCREATESHADERPROC __glewCreateShader; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMPROC __glewDeleteProgram; -GLEW_FUN_EXPORT PFNGLDELETESHADERPROC __glewDeleteShader; -GLEW_FUN_EXPORT PFNGLDETACHSHADERPROC __glewDetachShader; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSPROC __glewDrawBuffers; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform; -GLEW_FUN_EXPORT PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation; -GLEW_FUN_EXPORT PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVPROC __glewGetProgramiv; -GLEW_FUN_EXPORT PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEPROC __glewGetShaderSource; -GLEW_FUN_EXPORT PFNGLGETSHADERIVPROC __glewGetShaderiv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVPROC __glewGetUniformfv; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVPROC __glewGetUniformiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv; -GLEW_FUN_EXPORT PFNGLISPROGRAMPROC __glewIsProgram; -GLEW_FUN_EXPORT PFNGLISSHADERPROC __glewIsShader; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMPROC __glewLinkProgram; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEPROC __glewShaderSource; -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate; -GLEW_FUN_EXPORT PFNGLUNIFORM1FPROC __glewUniform1f; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVPROC __glewUniform1fv; -GLEW_FUN_EXPORT PFNGLUNIFORM1IPROC __glewUniform1i; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVPROC __glewUniform1iv; -GLEW_FUN_EXPORT PFNGLUNIFORM2FPROC __glewUniform2f; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVPROC __glewUniform2fv; -GLEW_FUN_EXPORT PFNGLUNIFORM2IPROC __glewUniform2i; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVPROC __glewUniform2iv; -GLEW_FUN_EXPORT PFNGLUNIFORM3FPROC __glewUniform3f; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVPROC __glewUniform3fv; -GLEW_FUN_EXPORT PFNGLUNIFORM3IPROC __glewUniform3i; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVPROC __glewUniform3iv; -GLEW_FUN_EXPORT PFNGLUNIFORM4FPROC __glewUniform4f; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVPROC __glewUniform4fv; -GLEW_FUN_EXPORT PFNGLUNIFORM4IPROC __glewUniform4i; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVPROC __glewUniform4iv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMPROC __glewUseProgram; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMPROC __glewValidateProgram; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer; - -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEPROC __glewBindBufferBase; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange; -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation; -GLEW_FUN_EXPORT PFNGLCLAMPCOLORPROC __glewClampColor; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFIPROC __glewClearBufferfi; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERFVPROC __glewClearBufferfv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERIVPROC __glewClearBufferiv; -GLEW_FUN_EXPORT PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv; -GLEW_FUN_EXPORT PFNGLCOLORMASKIPROC __glewColorMaski; -GLEW_FUN_EXPORT PFNGLDISABLEIPROC __glewDisablei; -GLEW_FUN_EXPORT PFNGLENABLEIPROC __glewEnablei; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback; -GLEW_FUN_EXPORT PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation; -GLEW_FUN_EXPORT PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v; -GLEW_FUN_EXPORT PFNGLGETSTRINGIPROC __glewGetStringi; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv; -GLEW_FUN_EXPORT PFNGLISENABLEDIPROC __glewIsEnabledi; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIPROC __glewUniform1ui; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVPROC __glewUniform1uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIPROC __glewUniform2ui; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVPROC __glewUniform2uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIPROC __glewUniform3ui; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVPROC __glewUniform3uiv; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIPROC __glewUniform4ui; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVPROC __glewUniform4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer; - -GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE; -GLEW_FUN_EXPORT PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE; -GLEW_FUN_EXPORT PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE; -GLEW_FUN_EXPORT PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE; -GLEW_FUN_EXPORT PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE; -GLEW_FUN_EXPORT PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE; -GLEW_FUN_EXPORT PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE; - -GLEW_FUN_EXPORT PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE; -GLEW_FUN_EXPORT PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE; - -GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer; -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPROC __glewGetMinmax; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter; -GLEW_FUN_EXPORT PFNGLHISTOGRAMPROC __glewHistogram; -GLEW_FUN_EXPORT PFNGLMINMAXPROC __glewMinmax; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMPROC __glewResetHistogram; -GLEW_FUN_EXPORT PFNGLRESETMINMAXPROC __glewResetMinmax; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D; - -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB; - -GLEW_FUN_EXPORT PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange; -GLEW_FUN_EXPORT PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange; - -GLEW_FUN_EXPORT PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB; -GLEW_FUN_EXPORT PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB; - -GLEW_FUN_EXPORT PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB; - -GLEW_FUN_EXPORT PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB; -GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB; - -GLEW_FUN_EXPORT PFNGLBEGINQUERYARBPROC __glewBeginQueryARB; -GLEW_FUN_EXPORT PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB; -GLEW_FUN_EXPORT PFNGLENDQUERYARBPROC __glewEndQueryARB; -GLEW_FUN_EXPORT PFNGLGENQUERIESARBPROC __glewGenQueriesARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB; -GLEW_FUN_EXPORT PFNGLGETQUERYIVARBPROC __glewGetQueryivARB; -GLEW_FUN_EXPORT PFNGLISQUERYARBPROC __glewIsQueryARB; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB; - -GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB; -GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB; -GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB; -GLEW_FUN_EXPORT PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB; -GLEW_FUN_EXPORT PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB; -GLEW_FUN_EXPORT PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB; -GLEW_FUN_EXPORT PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB; -GLEW_FUN_EXPORT PFNGLGETHANDLEARBPROC __glewGetHandleARB; -GLEW_FUN_EXPORT PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB; -GLEW_FUN_EXPORT PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB; -GLEW_FUN_EXPORT PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB; -GLEW_FUN_EXPORT PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB; -GLEW_FUN_EXPORT PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FARBPROC __glewUniform1fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IARBPROC __glewUniform1iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FARBPROC __glewUniform2fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IARBPROC __glewUniform2iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FARBPROC __glewUniform3fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IARBPROC __glewUniform3iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FARBPROC __glewUniform4fARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IARBPROC __glewUniform4iARB; -GLEW_FUN_EXPORT PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB; -GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB; -GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB; -GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB; - -GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB; - -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB; - -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB; -GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB; - -GLEW_FUN_EXPORT PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays; -GLEW_FUN_EXPORT PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays; -GLEW_FUN_EXPORT PFNGLISVERTEXARRAYPROC __glewIsVertexArray; - -GLEW_FUN_EXPORT PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB; -GLEW_FUN_EXPORT PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB; -GLEW_FUN_EXPORT PFNGLWEIGHTBVARBPROC __glewWeightbvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTDVARBPROC __glewWeightdvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTFVARBPROC __glewWeightfvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTIVARBPROC __glewWeightivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTSVARBPROC __glewWeightsvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUBVARBPROC __glewWeightubvARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUIVARBPROC __glewWeightuivARB; -GLEW_FUN_EXPORT PFNGLWEIGHTUSVARBPROC __glewWeightusvARB; - -GLEW_FUN_EXPORT PFNGLBINDBUFFERARBPROC __glewBindBufferARB; -GLEW_FUN_EXPORT PFNGLBUFFERDATAARBPROC __glewBufferDataARB; -GLEW_FUN_EXPORT PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB; -GLEW_FUN_EXPORT PFNGLGENBUFFERSARBPROC __glewGenBuffersARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB; -GLEW_FUN_EXPORT PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB; -GLEW_FUN_EXPORT PFNGLISBUFFERARBPROC __glewIsBufferARB; -GLEW_FUN_EXPORT PFNGLMAPBUFFERARBPROC __glewMapBufferARB; -GLEW_FUN_EXPORT PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB; - -GLEW_FUN_EXPORT PFNGLBINDPROGRAMARBPROC __glewBindProgramARB; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB; -GLEW_FUN_EXPORT PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB; -GLEW_FUN_EXPORT PFNGLISPROGRAMARBPROC __glewIsProgramARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB; -GLEW_FUN_EXPORT PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB; - -GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB; -GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB; -GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB; - -GLEW_FUN_EXPORT PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI; - -GLEW_FUN_EXPORT PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI; -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI; -GLEW_FUN_EXPORT PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI; - -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI; -GLEW_FUN_EXPORT PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI; - -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI; -GLEW_FUN_EXPORT PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI; -GLEW_FUN_EXPORT PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI; -GLEW_FUN_EXPORT PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI; -GLEW_FUN_EXPORT PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI; -GLEW_FUN_EXPORT PFNGLSAMPLEMAPATIPROC __glewSampleMapATI; -GLEW_FUN_EXPORT PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI; - -GLEW_FUN_EXPORT PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI; - -GLEW_FUN_EXPORT PFNGLPNTRIANGLESFATIPROC __glPNTrianglewesfATI; -GLEW_FUN_EXPORT PFNGLPNTRIANGLESIATIPROC __glPNTrianglewesiATI; - -GLEW_FUN_EXPORT PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI; -GLEW_FUN_EXPORT PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI; - -GLEW_FUN_EXPORT PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI; -GLEW_FUN_EXPORT PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI; -GLEW_FUN_EXPORT PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI; -GLEW_FUN_EXPORT PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI; -GLEW_FUN_EXPORT PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI; -GLEW_FUN_EXPORT PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI; - -GLEW_FUN_EXPORT PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI; -GLEW_FUN_EXPORT PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI; -GLEW_FUN_EXPORT PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI; -GLEW_FUN_EXPORT PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI; - -GLEW_FUN_EXPORT PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT; -GLEW_FUN_EXPORT PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT; - -GLEW_FUN_EXPORT PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT; - -GLEW_FUN_EXPORT PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT; - -GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT; -GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT; - -GLEW_FUN_EXPORT PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT; -GLEW_FUN_EXPORT PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT; - -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT; -GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT; -GLEW_FUN_EXPORT PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT; - -GLEW_FUN_EXPORT PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT; - -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT; -GLEW_FUN_EXPORT PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT; - -GLEW_FUN_EXPORT PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT; -GLEW_FUN_EXPORT PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT; -GLEW_FUN_EXPORT PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT; -GLEW_FUN_EXPORT PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT; -GLEW_FUN_EXPORT PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT; -GLEW_FUN_EXPORT PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT; -GLEW_FUN_EXPORT PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT; -GLEW_FUN_EXPORT PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT; -GLEW_FUN_EXPORT PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT; -GLEW_FUN_EXPORT PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT; -GLEW_FUN_EXPORT PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT; -GLEW_FUN_EXPORT PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT; -GLEW_FUN_EXPORT PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT; -GLEW_FUN_EXPORT PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT; -GLEW_FUN_EXPORT PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT; -GLEW_FUN_EXPORT PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT; - -GLEW_FUN_EXPORT PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT; -GLEW_FUN_EXPORT PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT; -GLEW_FUN_EXPORT PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT; -GLEW_FUN_EXPORT PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT; -GLEW_FUN_EXPORT PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT; -GLEW_FUN_EXPORT PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT; -GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT; - -GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT; - -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT; -GLEW_FUN_EXPORT PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT; -GLEW_FUN_EXPORT PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT; - -GLEW_FUN_EXPORT PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT; -GLEW_FUN_EXPORT PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT; -GLEW_FUN_EXPORT PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT; -GLEW_FUN_EXPORT PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT; -GLEW_FUN_EXPORT PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT; -GLEW_FUN_EXPORT PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT; -GLEW_FUN_EXPORT PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT; -GLEW_FUN_EXPORT PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT; -GLEW_FUN_EXPORT PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT; -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT; - -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT; -GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT; - -GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT; -GLEW_FUN_EXPORT PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT; -GLEW_FUN_EXPORT PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT; - -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT; -GLEW_FUN_EXPORT PFNGLHISTOGRAMEXTPROC __glewHistogramEXT; -GLEW_FUN_EXPORT PFNGLMINMAXEXTPROC __glewMinmaxEXT; -GLEW_FUN_EXPORT PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT; -GLEW_FUN_EXPORT PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT; - -GLEW_FUN_EXPORT PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT; - -GLEW_FUN_EXPORT PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT; - -GLEW_FUN_EXPORT PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT; -GLEW_FUN_EXPORT PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT; -GLEW_FUN_EXPORT PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT; - -GLEW_FUN_EXPORT PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEEXTPROC __glewColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT; - -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT; -GLEW_FUN_EXPORT PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT; - -GLEW_FUN_EXPORT PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT; - -GLEW_FUN_EXPORT PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT; -GLEW_FUN_EXPORT PFNGLENDSCENEEXTPROC __glewEndSceneEXT; - -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT; - -GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT; - -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT; - -GLEW_FUN_EXPORT PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT; - -GLEW_FUN_EXPORT PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT; -GLEW_FUN_EXPORT PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT; -GLEW_FUN_EXPORT PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT; - -GLEW_FUN_EXPORT PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT; -GLEW_FUN_EXPORT PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT; -GLEW_FUN_EXPORT PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT; -GLEW_FUN_EXPORT PFNGLISTEXTUREEXTPROC __glewIsTextureEXT; -GLEW_FUN_EXPORT PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT; - -GLEW_FUN_EXPORT PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT; - -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT; -GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT; - -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT; - -GLEW_FUN_EXPORT PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT; -GLEW_FUN_EXPORT PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT; -GLEW_FUN_EXPORT PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT; -GLEW_FUN_EXPORT PFNGLGETPOINTERVEXTPROC __glewGetPointervEXT; -GLEW_FUN_EXPORT PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT; -GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT; - -GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT; -GLEW_FUN_EXPORT PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT; -GLEW_FUN_EXPORT PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT; -GLEW_FUN_EXPORT PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT; -GLEW_FUN_EXPORT PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT; -GLEW_FUN_EXPORT PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT; -GLEW_FUN_EXPORT PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT; -GLEW_FUN_EXPORT PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT; -GLEW_FUN_EXPORT PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT; -GLEW_FUN_EXPORT PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT; -GLEW_FUN_EXPORT PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT; -GLEW_FUN_EXPORT PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT; -GLEW_FUN_EXPORT PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT; -GLEW_FUN_EXPORT PFNGLSWIZZLEEXTPROC __glewSwizzleEXT; -GLEW_FUN_EXPORT PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT; -GLEW_FUN_EXPORT PFNGLVARIANTBVEXTPROC __glewVariantbvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTDVEXTPROC __glewVariantdvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTFVEXTPROC __glewVariantfvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTIVEXTPROC __glewVariantivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTSVEXTPROC __glewVariantsvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT; -GLEW_FUN_EXPORT PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT; -GLEW_FUN_EXPORT PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT; - -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT; - -GLEW_FUN_EXPORT PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY; - -GLEW_FUN_EXPORT PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY; - -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP; -GLEW_FUN_EXPORT PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP; - -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM; -GLEW_FUN_EXPORT PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM; -GLEW_FUN_EXPORT PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM; - -GLEW_FUN_EXPORT PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL; -GLEW_FUN_EXPORT PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL; -GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL; -GLEW_FUN_EXPORT PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL; - -GLEW_FUN_EXPORT PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL; -GLEW_FUN_EXPORT PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL; - -GLEW_FUN_EXPORT PFNGLBUFFERREGIONENABLEDEXTPROC __glewBufferRegionEnabledEXT; -GLEW_FUN_EXPORT PFNGLDELETEBUFFERREGIONEXTPROC __glewDeleteBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLDRAWBUFFERREGIONEXTPROC __glewDrawBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLNEWBUFFERREGIONEXTPROC __glewNewBufferRegionEXT; -GLEW_FUN_EXPORT PFNGLREADBUFFERREGIONEXTPROC __glewReadBufferRegionEXT; - -GLEW_FUN_EXPORT PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA; - -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA; -GLEW_FUN_EXPORT PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA; - -GLEW_FUN_EXPORT PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV; -GLEW_FUN_EXPORT PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV; -GLEW_FUN_EXPORT PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV; - -GLEW_FUN_EXPORT PFNGLEVALMAPSNVPROC __glewEvalMapsNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV; -GLEW_FUN_EXPORT PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV; -GLEW_FUN_EXPORT PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV; -GLEW_FUN_EXPORT PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV; -GLEW_FUN_EXPORT PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV; -GLEW_FUN_EXPORT PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV; - -GLEW_FUN_EXPORT PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV; -GLEW_FUN_EXPORT PFNGLFINISHFENCENVPROC __glewFinishFenceNV; -GLEW_FUN_EXPORT PFNGLGENFENCESNVPROC __glewGenFencesNV; -GLEW_FUN_EXPORT PFNGLGETFENCEIVNVPROC __glewGetFenceivNV; -GLEW_FUN_EXPORT PFNGLISFENCENVPROC __glewIsFenceNV; -GLEW_FUN_EXPORT PFNGLSETFENCENVPROC __glewSetFenceNV; -GLEW_FUN_EXPORT PFNGLTESTFENCENVPROC __glewTestFenceNV; - -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV; - -GLEW_FUN_EXPORT PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV; - -GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV; -GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV; -GLEW_FUN_EXPORT PFNGLCOLOR4HVNVPROC __glewColor4hvNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHNVPROC __glewFogCoordhNV; -GLEW_FUN_EXPORT PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HNVPROC __glewNormal3hNV; -GLEW_FUN_EXPORT PFNGLNORMAL3HVNVPROC __glewNormal3hvNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV; -GLEW_FUN_EXPORT PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV; -GLEW_FUN_EXPORT PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HNVPROC __glewVertex2hNV; -GLEW_FUN_EXPORT PFNGLVERTEX2HVNVPROC __glewVertex2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HNVPROC __glewVertex3hNV; -GLEW_FUN_EXPORT PFNGLVERTEX3HVNVPROC __glewVertex3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HNVPROC __glewVertex4hNV; -GLEW_FUN_EXPORT PFNGLVERTEX4HVNVPROC __glewVertex4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV; -GLEW_FUN_EXPORT PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV; - -GLEW_FUN_EXPORT PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV; -GLEW_FUN_EXPORT PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV; -GLEW_FUN_EXPORT PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV; -GLEW_FUN_EXPORT PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV; - -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV; -GLEW_FUN_EXPORT PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV; - -GLEW_FUN_EXPORT PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV; -GLEW_FUN_EXPORT PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV; - -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV; -GLEW_FUN_EXPORT PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV; - -GLEW_FUN_EXPORT PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV; -GLEW_FUN_EXPORT PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV; -GLEW_FUN_EXPORT PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV; -GLEW_FUN_EXPORT PFNGLVIDEOPARAMETERIVNVPROC __glewVideoParameterivNV; - -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV; -GLEW_FUN_EXPORT PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV; -GLEW_FUN_EXPORT PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV; -GLEW_FUN_EXPORT PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV; -GLEW_FUN_EXPORT PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV; - -GLEW_FUN_EXPORT PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV; - -GLEW_FUN_EXPORT PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV; -GLEW_FUN_EXPORT PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV; -GLEW_FUN_EXPORT PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV; -GLEW_FUN_EXPORT PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV; -GLEW_FUN_EXPORT PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV; -GLEW_FUN_EXPORT PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV; -GLEW_FUN_EXPORT PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV; - -GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV; -GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV; - -GLEW_FUN_EXPORT PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV; -GLEW_FUN_EXPORT PFNGLBINDPROGRAMNVPROC __glewBindProgramNV; -GLEW_FUN_EXPORT PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV; -GLEW_FUN_EXPORT PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV; -GLEW_FUN_EXPORT PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV; -GLEW_FUN_EXPORT PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV; -GLEW_FUN_EXPORT PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV; -GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV; -GLEW_FUN_EXPORT PFNGLISPROGRAMNVPROC __glewIsProgramNV; -GLEW_FUN_EXPORT PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV; -GLEW_FUN_EXPORT PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV; -GLEW_FUN_EXPORT PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV; -GLEW_FUN_EXPORT PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV; -GLEW_FUN_EXPORT PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV; - -GLEW_FUN_EXPORT PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES; -GLEW_FUN_EXPORT PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES; -GLEW_FUN_EXPORT PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES; -GLEW_FUN_EXPORT PFNGLFRUSTUMFOESPROC __glewFrustumfOES; -GLEW_FUN_EXPORT PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES; -GLEW_FUN_EXPORT PFNGLORTHOFOESPROC __glewOrthofOES; - -GLEW_FUN_EXPORT PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS; -GLEW_FUN_EXPORT PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS; - -GLEW_FUN_EXPORT PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS; -GLEW_FUN_EXPORT PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS; - -GLEW_FUN_EXPORT PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS; -GLEW_FUN_EXPORT PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS; - -GLEW_FUN_EXPORT PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS; -GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS; - -GLEW_FUN_EXPORT PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS; -GLEW_FUN_EXPORT PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS; - -GLEW_FUN_EXPORT PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX; -GLEW_FUN_EXPORT PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX; -GLEW_FUN_EXPORT PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX; -GLEW_FUN_EXPORT PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX; - -GLEW_FUN_EXPORT PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX; - -GLEW_FUN_EXPORT PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX; - -GLEW_FUN_EXPORT PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX; -GLEW_FUN_EXPORT PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX; -GLEW_FUN_EXPORT PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX; - -GLEW_FUN_EXPORT PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX; - -GLEW_FUN_EXPORT PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX; - -GLEW_FUN_EXPORT PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX; - -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX; -GLEW_FUN_EXPORT PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX; - -GLEW_FUN_EXPORT PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX; - -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLCOLORTABLESGIPROC __glewColorTableSGI; -GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI; -GLEW_FUN_EXPORT PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI; - -GLEW_FUN_EXPORT PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX; - -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN; -GLEW_FUN_EXPORT PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN; - -GLEW_FUN_EXPORT PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN; - -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN; - -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN; -GLEW_FUN_EXPORT PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN; -GLEW_FUN_EXPORT PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN; - -GLEW_FUN_EXPORT PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN; - -#if defined(GLEW_MX) && !defined(_WIN32) -struct GLEWContextStruct -{ -#endif /* GLEW_MX */ - -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_3; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_4; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_5; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_0; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1; -GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer; -GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_client_storage; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_float_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_flush_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_pixel_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_specular_vector; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_transform_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_instanced_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_map_buffer_range; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_crossbar; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_route; -GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_vertex_shader_output_point_size; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_draw_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_element_array; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_envmap_bumpmap; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_map_object_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_pn_triangles; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_separate_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_shader_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_text_fragment_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_compression_3dc; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_env_combine3; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_float; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_texture_mirror_once; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_attrib_array_object; -GLEW_VAR_EXPORT GLboolean __GLEW_ATI_vertex_streams; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_422_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_Cg_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_abgr; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_bindable_uniform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_equation_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_func_separate; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_logic_op; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_blend_subtract; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_clip_volume_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cmyka; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_color_subtable; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_compiled_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_convolution; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_coordinate_frame; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_copy_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_depth_bounds_test; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_direct_state_access; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_buffers2; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_instanced; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_draw_range_elements; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fog_coord; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_fragment_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_blit; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_framebuffer_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_program_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_gpu_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_array_formats; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_func; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_material; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_index_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_light_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_misc_attribute; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multi_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_float; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_packed_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_pixel_transform_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_point_parameters; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_polygon_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_rescale_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_two_side; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_wrap; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_subtexture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture3D; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_dxt1; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_latc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_rgtc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_compression_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_cube_map; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_add; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_combine; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_env_dot3; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_filter_anisotropic; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_integer; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_mirror_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_object; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_perturb_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_sRGB; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_shared_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_texture_swizzle; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator; -GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_string_marker; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_image_transform; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_occlusion_test; -GLEW_VAR_EXPORT GLboolean __GLEW_HP_texture_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_cull_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_multimode_draw_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_rasterpos_clip; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_static_data; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_texture_mirrored_repeat; -GLEW_VAR_EXPORT GLboolean __GLEW_IBM_vertex_array_lists; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_color_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_INGR_interlace_read; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_parallel_arrays; -GLEW_VAR_EXPORT GLboolean __GLEW_INTEL_texture_scissor; -GLEW_VAR_EXPORT GLboolean __GLEW_KTX_buffer_region; -GLEW_VAR_EXPORT GLboolean __GLEW_MESAX_texture_stack; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_pack_invert; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_resize_buffers; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_window_pos; -GLEW_VAR_EXPORT GLboolean __GLEW_MESA_ycbcr_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_blend_square; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_conditional_render; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_copy_depth_to_color; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_buffer_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_depth_range_unclamped; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_evaluators; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_explicit_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fence; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_float_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fog_distance; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_fragment_program_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_occlusion_query; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_packed_depth_stencil; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_parameter_buffer_object; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_pixel_data_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_point_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_present_video; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_compression_vtc; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_env_combine4; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_expand_normal; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_rectangle; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_shader3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program2_option; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program3; -GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program4; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_byte_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_compressed_paletted_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_read_format; -GLEW_VAR_EXPORT GLboolean __GLEW_OES_single_precision; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_OML_subsample; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_misc_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_PGI_vertex_hints; -GLEW_VAR_EXPORT GLboolean __GLEW_REND_screen_coordinates; -GLEW_VAR_EXPORT GLboolean __GLEW_S3_s3tc; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_color_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_detail_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_fog_function; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_generate_mipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_multisample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_point_line_texgen; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_sharpen_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture4D; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_border_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_edge_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_filter4; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_lod; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIS_texture_select; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_histogram; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_async_pixel; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_blend_alpha_minmax; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_clipmap; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_convolution_accuracy; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_depth_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_flush_raster; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_offset; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fog_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_fragment_specular_lighting; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_framezoom; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_interlace; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ir_instrument1; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_list_priority; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_pixel_texture_bits; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_reference_plane; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_resample; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_shadow_ambient; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_sprite; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_tag_sample_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_add_env; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_coordinate_clamp; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_lod_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_multi_buffer; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_range; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_texture_scale_bias; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_vertex_preclip_hint; -GLEW_VAR_EXPORT GLboolean __GLEW_SGIX_ycrcb; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_matrix; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SGI_texture_color_table; -GLEW_VAR_EXPORT GLboolean __GLEW_SUNX_constant_data; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_convolution_border_modes; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_global_alpha; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_mesh_array; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_read_video_pixels; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_slice_accum; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_triangle_list; -GLEW_VAR_EXPORT GLboolean __GLEW_SUN_vertex; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_phong_shading; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_specular_fog; -GLEW_VAR_EXPORT GLboolean __GLEW_WIN_swap_hint; - -#ifdef GLEW_MX -}; /* GLEWContextStruct */ -#endif /* GLEW_MX */ - -/* ------------------------------------------------------------------------- */ - -/* error codes */ -#define GLEW_OK 0 -#define GLEW_NO_ERROR 0 -#define GLEW_ERROR_NO_GL_VERSION 1 /* missing GL version */ -#define GLEW_ERROR_GL_VERSION_10_ONLY 2 /* GL 1.1 and up are not supported */ -#define GLEW_ERROR_GLX_VERSION_11_ONLY 3 /* GLX 1.2 and up are not supported */ - -/* string codes */ -#define GLEW_VERSION 1 -#define GLEW_VERSION_MAJOR 2 -#define GLEW_VERSION_MINOR 3 -#define GLEW_VERSION_MICRO 4 - -/* API */ -#ifdef GLEW_MX - -typedef struct GLEWContextStruct GLEWContext; -GLEWAPI GLenum glewContextInit (GLEWContext* ctx); -GLEWAPI GLboolean glewContextIsSupported (GLEWContext* ctx, const char* name); - -#define glewInit() glewContextInit(glewGetContext()) -#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) -#ifdef _WIN32 -# define GLEW_GET_FUN(x) glewGetContext()->x -#else -# define GLEW_GET_FUN(x) x -#endif - -#else /* GLEW_MX */ - -GLEWAPI GLenum glewInit (void); -GLEWAPI GLboolean glewIsSupported (const char* name); -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&x) -#define GLEW_GET_FUN(x) x - -#endif /* GLEW_MX */ - -GLEWAPI GLboolean glewExperimental; -GLEWAPI GLboolean glewGetExtension (const char* name); -GLEWAPI const GLubyte* glewGetErrorString (GLenum error); -GLEWAPI const GLubyte* glewGetString (GLenum name); - -#ifdef __cplusplus -} -#endif - -#ifdef GLEW_APIENTRY_DEFINED -#undef GLEW_APIENTRY_DEFINED -#undef APIENTRY -#undef GLAPIENTRY -#endif - -#ifdef GLEW_CALLBACK_DEFINED -#undef GLEW_CALLBACK_DEFINED -#undef CALLBACK -#endif - -#ifdef GLEW_WINGDIAPI_DEFINED -#undef GLEW_WINGDIAPI_DEFINED -#undef WINGDIAPI -#endif - -#undef GLAPI -/* #undef GLEWAPI */ - -#endif /* __glew_h__ */ diff --git a/src/glew/GL/glxew.h b/src/glew/GL/glxew.h deleted file mode 100644 index d3933cd..0000000 --- a/src/glew/GL/glxew.h +++ /dev/null @@ -1,1399 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -//#include "cairo.h" /* keep distcheck happy */ - -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#ifndef __glxew_h__ -#define __glxew_h__ -#define __GLXEW_H__ - -#ifdef __glxext_h_ -#error glxext.h included before glxew.h -#endif -#ifdef GLX_H -#error glx.h included before glxew.h -#endif - -#define __glxext_h_ -#define __GLX_glx_h__ -#define GLX_H - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* ---------------------------- GLX_VERSION_1_0 --------------------------- */ - -#ifndef GLX_VERSION_1_0 -#define GLX_VERSION_1_0 1 - -#define GLX_USE_GL 1 -#define GLX_BUFFER_SIZE 2 -#define GLX_LEVEL 3 -#define GLX_RGBA 4 -#define GLX_DOUBLEBUFFER 5 -#define GLX_STEREO 6 -#define GLX_AUX_BUFFERS 7 -#define GLX_RED_SIZE 8 -#define GLX_GREEN_SIZE 9 -#define GLX_BLUE_SIZE 10 -#define GLX_ALPHA_SIZE 11 -#define GLX_DEPTH_SIZE 12 -#define GLX_STENCIL_SIZE 13 -#define GLX_ACCUM_RED_SIZE 14 -#define GLX_ACCUM_GREEN_SIZE 15 -#define GLX_ACCUM_BLUE_SIZE 16 -#define GLX_ACCUM_ALPHA_SIZE 17 -#define GLX_BAD_SCREEN 1 -#define GLX_BAD_ATTRIBUTE 2 -#define GLX_NO_EXTENSION 3 -#define GLX_BAD_VISUAL 4 -#define GLX_BAD_CONTEXT 5 -#define GLX_BAD_VALUE 6 -#define GLX_BAD_ENUM 7 - -typedef XID GLXDrawable; -typedef XID GLXPixmap; -#ifdef __sun -typedef struct __glXContextRec *GLXContext; -#else -typedef struct __GLXcontextRec *GLXContext; -#endif - -typedef unsigned int GLXVideoDeviceNV; - -extern Bool glXQueryExtension (Display *dpy, int *errorBase, int *eventBase); -extern Bool glXQueryVersion (Display *dpy, int *major, int *minor); -extern int glXGetConfig (Display *dpy, XVisualInfo *vis, int attrib, int *value); -extern XVisualInfo* glXChooseVisual (Display *dpy, int screen, int *attribList); -extern GLXPixmap glXCreateGLXPixmap (Display *dpy, XVisualInfo *vis, Pixmap pixmap); -extern void glXDestroyGLXPixmap (Display *dpy, GLXPixmap pix); -extern GLXContext glXCreateContext (Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct); -extern void glXDestroyContext (Display *dpy, GLXContext ctx); -extern Bool glXIsDirect (Display *dpy, GLXContext ctx); -extern void glXCopyContext (Display *dpy, GLXContext src, GLXContext dst, GLulong mask); -extern Bool glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx); -extern GLXContext glXGetCurrentContext (void); -extern GLXDrawable glXGetCurrentDrawable (void); -extern void glXWaitGL (void); -extern void glXWaitX (void); -extern void glXSwapBuffers (Display *dpy, GLXDrawable drawable); -extern void glXUseXFont (Font font, int first, int count, int listBase); - -#define GLXEW_VERSION_1_0 GLXEW_GET_VAR(__GLXEW_VERSION_1_0) - -#endif /* GLX_VERSION_1_0 */ - -/* ---------------------------- GLX_VERSION_1_1 --------------------------- */ - -#ifndef GLX_VERSION_1_1 -#define GLX_VERSION_1_1 - -#define GLX_VENDOR 0x1 -#define GLX_VERSION 0x2 -#define GLX_EXTENSIONS 0x3 - -extern const char* glXQueryExtensionsString (Display *dpy, int screen); -extern const char* glXGetClientString (Display *dpy, int name); -extern const char* glXQueryServerString (Display *dpy, int screen, int name); - -#define GLXEW_VERSION_1_1 GLXEW_GET_VAR(__GLXEW_VERSION_1_1) - -#endif /* GLX_VERSION_1_1 */ - -/* ---------------------------- GLX_VERSION_1_2 ---------------------------- */ - -#ifndef GLX_VERSION_1_2 -#define GLX_VERSION_1_2 1 - -typedef Display* ( * PFNGLXGETCURRENTDISPLAYPROC) (void); - -#define glXGetCurrentDisplay GLXEW_GET_FUN(__glewXGetCurrentDisplay) - -#define GLXEW_VERSION_1_2 GLXEW_GET_VAR(__GLXEW_VERSION_1_2) - -#endif /* GLX_VERSION_1_2 */ - -/* ---------------------------- GLX_VERSION_1_3 ---------------------------- */ - -#ifndef GLX_VERSION_1_3 -#define GLX_VERSION_1_3 1 - -#define GLX_RGBA_BIT 0x00000001 -#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 -#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 -#define GLX_PBUFFER_BIT 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 -#define GLX_AUX_BUFFERS_BIT 0x00000010 -#define GLX_CONFIG_CAVEAT 0x20 -#define GLX_DEPTH_BUFFER_BIT 0x00000020 -#define GLX_X_VISUAL_TYPE 0x22 -#define GLX_TRANSPARENT_TYPE 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE 0x24 -#define GLX_TRANSPARENT_RED_VALUE 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 -#define GLX_STENCIL_BUFFER_BIT 0x00000040 -#define GLX_ACCUM_BUFFER_BIT 0x00000080 -#define GLX_NONE 0x8000 -#define GLX_SLOW_CONFIG 0x8001 -#define GLX_TRUE_COLOR 0x8002 -#define GLX_DIRECT_COLOR 0x8003 -#define GLX_PSEUDO_COLOR 0x8004 -#define GLX_STATIC_COLOR 0x8005 -#define GLX_GRAY_SCALE 0x8006 -#define GLX_STATIC_GRAY 0x8007 -#define GLX_TRANSPARENT_RGB 0x8008 -#define GLX_TRANSPARENT_INDEX 0x8009 -#define GLX_VISUAL_ID 0x800B -#define GLX_SCREEN 0x800C -#define GLX_NON_CONFORMANT_CONFIG 0x800D -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 -#define GLX_X_RENDERABLE 0x8012 -#define GLX_FBCONFIG_ID 0x8013 -#define GLX_RGBA_TYPE 0x8014 -#define GLX_COLOR_INDEX_TYPE 0x8015 -#define GLX_MAX_PBUFFER_WIDTH 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT 0x8017 -#define GLX_MAX_PBUFFER_PIXELS 0x8018 -#define GLX_PRESERVED_CONTENTS 0x801B -#define GLX_LARGEST_PBUFFER 0x801C -#define GLX_WIDTH 0x801D -#define GLX_HEIGHT 0x801E -#define GLX_EVENT_MASK 0x801F -#define GLX_DAMAGED 0x8020 -#define GLX_SAVED 0x8021 -#define GLX_WINDOW 0x8022 -#define GLX_PBUFFER 0x8023 -#define GLX_PBUFFER_HEIGHT 0x8040 -#define GLX_PBUFFER_WIDTH 0x8041 -#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 -#define GLX_DONT_CARE 0xFFFFFFFF - -typedef XID GLXFBConfigID; -typedef XID GLXWindow; -typedef XID GLXPbuffer; -typedef struct __GLXFBConfigRec *GLXFBConfig; - -typedef struct { - int event_type; - int draw_type; - unsigned long serial; - Bool send_event; - Display *display; - GLXDrawable drawable; - unsigned int buffer_mask; - unsigned int aux_buffer; - int x, y; - int width, height; - int count; -} GLXPbufferClobberEvent; -typedef union __GLXEvent { - GLXPbufferClobberEvent glxpbufferclobber; - long pad[24]; -} GLXEvent; - -typedef GLXFBConfig* ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); -typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); -typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); -typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); -typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); -typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); -typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); -typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); -typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); -typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); -typedef GLXFBConfig* ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); -typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); -typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); -typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *display, GLXDrawable draw, GLXDrawable read, GLXContext ctx); -typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); -typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); -typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); - -#define glXChooseFBConfig GLXEW_GET_FUN(__glewXChooseFBConfig) -#define glXCreateNewContext GLXEW_GET_FUN(__glewXCreateNewContext) -#define glXCreatePbuffer GLXEW_GET_FUN(__glewXCreatePbuffer) -#define glXCreatePixmap GLXEW_GET_FUN(__glewXCreatePixmap) -#define glXCreateWindow GLXEW_GET_FUN(__glewXCreateWindow) -#define glXDestroyPbuffer GLXEW_GET_FUN(__glewXDestroyPbuffer) -#define glXDestroyPixmap GLXEW_GET_FUN(__glewXDestroyPixmap) -#define glXDestroyWindow GLXEW_GET_FUN(__glewXDestroyWindow) -#define glXGetCurrentReadDrawable GLXEW_GET_FUN(__glewXGetCurrentReadDrawable) -#define glXGetFBConfigAttrib GLXEW_GET_FUN(__glewXGetFBConfigAttrib) -#define glXGetFBConfigs GLXEW_GET_FUN(__glewXGetFBConfigs) -#define glXGetSelectedEvent GLXEW_GET_FUN(__glewXGetSelectedEvent) -#define glXGetVisualFromFBConfig GLXEW_GET_FUN(__glewXGetVisualFromFBConfig) -#define glXMakeContextCurrent GLXEW_GET_FUN(__glewXMakeContextCurrent) -#define glXQueryContext GLXEW_GET_FUN(__glewXQueryContext) -#define glXQueryDrawable GLXEW_GET_FUN(__glewXQueryDrawable) -#define glXSelectEvent GLXEW_GET_FUN(__glewXSelectEvent) - -#define GLXEW_VERSION_1_3 GLXEW_GET_VAR(__GLXEW_VERSION_1_3) - -#endif /* GLX_VERSION_1_3 */ - -/* ---------------------------- GLX_VERSION_1_4 ---------------------------- */ - -#ifndef GLX_VERSION_1_4 -#define GLX_VERSION_1_4 1 - -#define GLX_SAMPLE_BUFFERS 100000 -#define GLX_SAMPLES 100001 - -extern void ( * glXGetProcAddress (const GLubyte *procName)) (void); - -#define GLXEW_VERSION_1_4 GLXEW_GET_VAR(__GLXEW_VERSION_1_4) - -#endif /* GLX_VERSION_1_4 */ - -/* -------------------------- GLX_3DFX_multisample ------------------------- */ - -#ifndef GLX_3DFX_multisample -#define GLX_3DFX_multisample 1 - -#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 -#define GLX_SAMPLES_3DFX 0x8051 - -#define GLXEW_3DFX_multisample GLXEW_GET_VAR(__GLXEW_3DFX_multisample) - -#endif /* GLX_3DFX_multisample */ - -/* ------------------------- GLX_ARB_create_context ------------------------ */ - -#ifndef GLX_ARB_create_context -#define GLX_ARB_create_context 1 - -#define GLX_CONTEXT_DEBUG_BIT_ARB 0x0001 -#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002 -#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 -#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 -#define GLX_CONTEXT_FLAGS_ARB 0x2094 - -typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display* dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); - -#define glXCreateContextAttribsARB GLXEW_GET_FUN(__glewXCreateContextAttribsARB) - -#define GLXEW_ARB_create_context GLXEW_GET_VAR(__GLXEW_ARB_create_context) - -#endif /* GLX_ARB_create_context */ - -/* ------------------------- GLX_ARB_fbconfig_float ------------------------ */ - -#ifndef GLX_ARB_fbconfig_float -#define GLX_ARB_fbconfig_float 1 - -#define GLX_RGBA_FLOAT_BIT 0x00000004 -#define GLX_RGBA_FLOAT_TYPE 0x20B9 - -#define GLXEW_ARB_fbconfig_float GLXEW_GET_VAR(__GLXEW_ARB_fbconfig_float) - -#endif /* GLX_ARB_fbconfig_float */ - -/* ------------------------ GLX_ARB_framebuffer_sRGB ----------------------- */ - -#ifndef GLX_ARB_framebuffer_sRGB -#define GLX_ARB_framebuffer_sRGB 1 - -#define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 - -#define GLXEW_ARB_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_ARB_framebuffer_sRGB) - -#endif /* GLX_ARB_framebuffer_sRGB */ - -/* ------------------------ GLX_ARB_get_proc_address ----------------------- */ - -#ifndef GLX_ARB_get_proc_address -#define GLX_ARB_get_proc_address 1 - -extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void); - -#define GLXEW_ARB_get_proc_address GLXEW_GET_VAR(__GLXEW_ARB_get_proc_address) - -#endif /* GLX_ARB_get_proc_address */ - -/* -------------------------- GLX_ARB_multisample -------------------------- */ - -#ifndef GLX_ARB_multisample -#define GLX_ARB_multisample 1 - -#define GLX_SAMPLE_BUFFERS_ARB 100000 -#define GLX_SAMPLES_ARB 100001 - -#define GLXEW_ARB_multisample GLXEW_GET_VAR(__GLXEW_ARB_multisample) - -#endif /* GLX_ARB_multisample */ - -/* ----------------------- GLX_ATI_pixel_format_float ---------------------- */ - -#ifndef GLX_ATI_pixel_format_float -#define GLX_ATI_pixel_format_float 1 - -#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 - -#define GLXEW_ATI_pixel_format_float GLXEW_GET_VAR(__GLXEW_ATI_pixel_format_float) - -#endif /* GLX_ATI_pixel_format_float */ - -/* ------------------------- GLX_ATI_render_texture ------------------------ */ - -#ifndef GLX_ATI_render_texture -#define GLX_ATI_render_texture 1 - -#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800 -#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801 -#define GLX_TEXTURE_FORMAT_ATI 0x9802 -#define GLX_TEXTURE_TARGET_ATI 0x9803 -#define GLX_MIPMAP_TEXTURE_ATI 0x9804 -#define GLX_TEXTURE_RGB_ATI 0x9805 -#define GLX_TEXTURE_RGBA_ATI 0x9806 -#define GLX_NO_TEXTURE_ATI 0x9807 -#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808 -#define GLX_TEXTURE_1D_ATI 0x9809 -#define GLX_TEXTURE_2D_ATI 0x980A -#define GLX_MIPMAP_LEVEL_ATI 0x980B -#define GLX_CUBE_MAP_FACE_ATI 0x980C -#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D -#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E -#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F -#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810 -#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811 -#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812 -#define GLX_FRONT_LEFT_ATI 0x9813 -#define GLX_FRONT_RIGHT_ATI 0x9814 -#define GLX_BACK_LEFT_ATI 0x9815 -#define GLX_BACK_RIGHT_ATI 0x9816 -#define GLX_AUX0_ATI 0x9817 -#define GLX_AUX1_ATI 0x9818 -#define GLX_AUX2_ATI 0x9819 -#define GLX_AUX3_ATI 0x981A -#define GLX_AUX4_ATI 0x981B -#define GLX_AUX5_ATI 0x981C -#define GLX_AUX6_ATI 0x981D -#define GLX_AUX7_ATI 0x981E -#define GLX_AUX8_ATI 0x981F -#define GLX_AUX9_ATI 0x9820 -#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821 -#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822 - -typedef void ( * PFNGLXBINDTEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); -typedef void ( * PFNGLXDRAWABLEATTRIBATIPROC) (Display *dpy, GLXDrawable draw, const int *attrib_list); -typedef void ( * PFNGLXRELEASETEXIMAGEATIPROC) (Display *dpy, GLXPbuffer pbuf, int buffer); - -#define glXBindTexImageATI GLXEW_GET_FUN(__glewXBindTexImageATI) -#define glXDrawableAttribATI GLXEW_GET_FUN(__glewXDrawableAttribATI) -#define glXReleaseTexImageATI GLXEW_GET_FUN(__glewXReleaseTexImageATI) - -#define GLXEW_ATI_render_texture GLXEW_GET_VAR(__GLXEW_ATI_render_texture) - -#endif /* GLX_ATI_render_texture */ - -/* --------------------- GLX_EXT_fbconfig_packed_float --------------------- */ - -#ifndef GLX_EXT_fbconfig_packed_float -#define GLX_EXT_fbconfig_packed_float 1 - -#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 -#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 - -#define GLXEW_EXT_fbconfig_packed_float GLXEW_GET_VAR(__GLXEW_EXT_fbconfig_packed_float) - -#endif /* GLX_EXT_fbconfig_packed_float */ - -/* ------------------------ GLX_EXT_framebuffer_sRGB ----------------------- */ - -#ifndef GLX_EXT_framebuffer_sRGB -#define GLX_EXT_framebuffer_sRGB 1 - -#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 - -#define GLXEW_EXT_framebuffer_sRGB GLXEW_GET_VAR(__GLXEW_EXT_framebuffer_sRGB) - -#endif /* GLX_EXT_framebuffer_sRGB */ - -/* ------------------------- GLX_EXT_import_context ------------------------ */ - -#ifndef GLX_EXT_import_context -#define GLX_EXT_import_context 1 - -#define GLX_SHARE_CONTEXT_EXT 0x800A -#define GLX_VISUAL_ID_EXT 0x800B -#define GLX_SCREEN_EXT 0x800C - -typedef XID GLXContextID; - -typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display* dpy, GLXContext context); -typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); -typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display* dpy, GLXContextID contextID); -typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display* dpy, GLXContext context, int attribute,int *value); - -#define glXFreeContextEXT GLXEW_GET_FUN(__glewXFreeContextEXT) -#define glXGetContextIDEXT GLXEW_GET_FUN(__glewXGetContextIDEXT) -#define glXImportContextEXT GLXEW_GET_FUN(__glewXImportContextEXT) -#define glXQueryContextInfoEXT GLXEW_GET_FUN(__glewXQueryContextInfoEXT) - -#define GLXEW_EXT_import_context GLXEW_GET_VAR(__GLXEW_EXT_import_context) - -#endif /* GLX_EXT_import_context */ - -/* -------------------------- GLX_EXT_scene_marker ------------------------- */ - -#ifndef GLX_EXT_scene_marker -#define GLX_EXT_scene_marker 1 - -#define GLXEW_EXT_scene_marker GLXEW_GET_VAR(__GLXEW_EXT_scene_marker) - -#endif /* GLX_EXT_scene_marker */ - -/* ---------------------- GLX_EXT_texture_from_pixmap ---------------------- */ - -#ifndef GLX_EXT_texture_from_pixmap -#define GLX_EXT_texture_from_pixmap 1 - -#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 -#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 -#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 -#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 -#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 -#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 -#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 -#define GLX_Y_INVERTED_EXT 0x20D4 -#define GLX_TEXTURE_FORMAT_EXT 0x20D5 -#define GLX_TEXTURE_TARGET_EXT 0x20D6 -#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 -#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 -#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 -#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA -#define GLX_TEXTURE_1D_EXT 0x20DB -#define GLX_TEXTURE_2D_EXT 0x20DC -#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD -#define GLX_FRONT_LEFT_EXT 0x20DE -#define GLX_FRONT_RIGHT_EXT 0x20DF -#define GLX_BACK_LEFT_EXT 0x20E0 -#define GLX_BACK_RIGHT_EXT 0x20E1 -#define GLX_AUX0_EXT 0x20E2 -#define GLX_AUX1_EXT 0x20E3 -#define GLX_AUX2_EXT 0x20E4 -#define GLX_AUX3_EXT 0x20E5 -#define GLX_AUX4_EXT 0x20E6 -#define GLX_AUX5_EXT 0x20E7 -#define GLX_AUX6_EXT 0x20E8 -#define GLX_AUX7_EXT 0x20E9 -#define GLX_AUX8_EXT 0x20EA -#define GLX_AUX9_EXT 0x20EB - -typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer, const int *attrib_list); -typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable drawable, int buffer); - -#define glXBindTexImageEXT GLXEW_GET_FUN(__glewXBindTexImageEXT) -#define glXReleaseTexImageEXT GLXEW_GET_FUN(__glewXReleaseTexImageEXT) - -#define GLXEW_EXT_texture_from_pixmap GLXEW_GET_VAR(__GLXEW_EXT_texture_from_pixmap) - -#endif /* GLX_EXT_texture_from_pixmap */ - -/* -------------------------- GLX_EXT_visual_info -------------------------- */ - -#ifndef GLX_EXT_visual_info -#define GLX_EXT_visual_info 1 - -#define GLX_X_VISUAL_TYPE_EXT 0x22 -#define GLX_TRANSPARENT_TYPE_EXT 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 -#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 -#define GLX_NONE_EXT 0x8000 -#define GLX_TRUE_COLOR_EXT 0x8002 -#define GLX_DIRECT_COLOR_EXT 0x8003 -#define GLX_PSEUDO_COLOR_EXT 0x8004 -#define GLX_STATIC_COLOR_EXT 0x8005 -#define GLX_GRAY_SCALE_EXT 0x8006 -#define GLX_STATIC_GRAY_EXT 0x8007 -#define GLX_TRANSPARENT_RGB_EXT 0x8008 -#define GLX_TRANSPARENT_INDEX_EXT 0x8009 - -#define GLXEW_EXT_visual_info GLXEW_GET_VAR(__GLXEW_EXT_visual_info) - -#endif /* GLX_EXT_visual_info */ - -/* ------------------------- GLX_EXT_visual_rating ------------------------- */ - -#ifndef GLX_EXT_visual_rating -#define GLX_EXT_visual_rating 1 - -#define GLX_VISUAL_CAVEAT_EXT 0x20 -#define GLX_SLOW_VISUAL_EXT 0x8001 -#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D - -#define GLXEW_EXT_visual_rating GLXEW_GET_VAR(__GLXEW_EXT_visual_rating) - -#endif /* GLX_EXT_visual_rating */ - -/* -------------------------- GLX_MESA_agp_offset -------------------------- */ - -#ifndef GLX_MESA_agp_offset -#define GLX_MESA_agp_offset 1 - -typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void* pointer); - -#define glXGetAGPOffsetMESA GLXEW_GET_FUN(__glewXGetAGPOffsetMESA) - -#define GLXEW_MESA_agp_offset GLXEW_GET_VAR(__GLXEW_MESA_agp_offset) - -#endif /* GLX_MESA_agp_offset */ - -/* ------------------------ GLX_MESA_copy_sub_buffer ----------------------- */ - -#ifndef GLX_MESA_copy_sub_buffer -#define GLX_MESA_copy_sub_buffer 1 - -typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display* dpy, GLXDrawable drawable, int x, int y, int width, int height); - -#define glXCopySubBufferMESA GLXEW_GET_FUN(__glewXCopySubBufferMESA) - -#define GLXEW_MESA_copy_sub_buffer GLXEW_GET_VAR(__GLXEW_MESA_copy_sub_buffer) - -#endif /* GLX_MESA_copy_sub_buffer */ - -/* ------------------------ GLX_MESA_pixmap_colormap ----------------------- */ - -#ifndef GLX_MESA_pixmap_colormap -#define GLX_MESA_pixmap_colormap 1 - -typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display* dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); - -#define glXCreateGLXPixmapMESA GLXEW_GET_FUN(__glewXCreateGLXPixmapMESA) - -#define GLXEW_MESA_pixmap_colormap GLXEW_GET_VAR(__GLXEW_MESA_pixmap_colormap) - -#endif /* GLX_MESA_pixmap_colormap */ - -/* ------------------------ GLX_MESA_release_buffers ----------------------- */ - -#ifndef GLX_MESA_release_buffers -#define GLX_MESA_release_buffers 1 - -typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display* dpy, GLXDrawable d); - -#define glXReleaseBuffersMESA GLXEW_GET_FUN(__glewXReleaseBuffersMESA) - -#define GLXEW_MESA_release_buffers GLXEW_GET_VAR(__GLXEW_MESA_release_buffers) - -#endif /* GLX_MESA_release_buffers */ - -/* ------------------------- GLX_MESA_set_3dfx_mode ------------------------ */ - -#ifndef GLX_MESA_set_3dfx_mode -#define GLX_MESA_set_3dfx_mode 1 - -#define GLX_3DFX_WINDOW_MODE_MESA 0x1 -#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 - -typedef GLboolean ( * PFNGLXSET3DFXMODEMESAPROC) (GLint mode); - -#define glXSet3DfxModeMESA GLXEW_GET_FUN(__glewXSet3DfxModeMESA) - -#define GLXEW_MESA_set_3dfx_mode GLXEW_GET_VAR(__GLXEW_MESA_set_3dfx_mode) - -#endif /* GLX_MESA_set_3dfx_mode */ - -/* -------------------------- GLX_NV_float_buffer -------------------------- */ - -#ifndef GLX_NV_float_buffer -#define GLX_NV_float_buffer 1 - -#define GLX_FLOAT_COMPONENTS_NV 0x20B0 - -#define GLXEW_NV_float_buffer GLXEW_GET_VAR(__GLXEW_NV_float_buffer) - -#endif /* GLX_NV_float_buffer */ - -/* -------------------------- GLX_NV_present_video ------------------------- */ - -#ifndef GLX_NV_present_video -#define GLX_NV_present_video 1 - -#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 - -typedef int ( * PFNGLXBINDVIDEODEVICENVPROC) (Display* dpy, unsigned int video_slot, unsigned int video_device, const int *attrib_list); -typedef unsigned int* ( * PFNGLXENUMERATEVIDEODEVICESNVPROC) (Display *dpy, int screen, int *nelements); - -#define glXBindVideoDeviceNV GLXEW_GET_FUN(__glewXBindVideoDeviceNV) -#define glXEnumerateVideoDevicesNV GLXEW_GET_FUN(__glewXEnumerateVideoDevicesNV) - -#define GLXEW_NV_present_video GLXEW_GET_VAR(__GLXEW_NV_present_video) - -#endif /* GLX_NV_present_video */ - -/* --------------------------- GLX_NV_swap_group --------------------------- */ - -#ifndef GLX_NV_swap_group -#define GLX_NV_swap_group 1 - -typedef Bool ( * PFNGLXBINDSWAPBARRIERNVPROC) (Display* dpy, GLuint group, GLuint barrier); -typedef Bool ( * PFNGLXJOINSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint group); -typedef Bool ( * PFNGLXQUERYFRAMECOUNTNVPROC) (Display* dpy, int screen, GLuint *count); -typedef Bool ( * PFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display* dpy, int screen, GLuint *maxGroups, GLuint *maxBarriers); -typedef Bool ( * PFNGLXQUERYSWAPGROUPNVPROC) (Display* dpy, GLXDrawable drawable, GLuint *group, GLuint *barrier); -typedef Bool ( * PFNGLXRESETFRAMECOUNTNVPROC) (Display* dpy, int screen); - -#define glXBindSwapBarrierNV GLXEW_GET_FUN(__glewXBindSwapBarrierNV) -#define glXJoinSwapGroupNV GLXEW_GET_FUN(__glewXJoinSwapGroupNV) -#define glXQueryFrameCountNV GLXEW_GET_FUN(__glewXQueryFrameCountNV) -#define glXQueryMaxSwapGroupsNV GLXEW_GET_FUN(__glewXQueryMaxSwapGroupsNV) -#define glXQuerySwapGroupNV GLXEW_GET_FUN(__glewXQuerySwapGroupNV) -#define glXResetFrameCountNV GLXEW_GET_FUN(__glewXResetFrameCountNV) - -#define GLXEW_NV_swap_group GLXEW_GET_VAR(__GLXEW_NV_swap_group) - -#endif /* GLX_NV_swap_group */ - -/* ----------------------- GLX_NV_vertex_array_range ----------------------- */ - -#ifndef GLX_NV_vertex_array_range -#define GLX_NV_vertex_array_range 1 - -typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority); -typedef void ( * PFNGLXFREEMEMORYNVPROC) (void *pointer); - -#define glXAllocateMemoryNV GLXEW_GET_FUN(__glewXAllocateMemoryNV) -#define glXFreeMemoryNV GLXEW_GET_FUN(__glewXFreeMemoryNV) - -#define GLXEW_NV_vertex_array_range GLXEW_GET_VAR(__GLXEW_NV_vertex_array_range) - -#endif /* GLX_NV_vertex_array_range */ - -/* -------------------------- GLX_NV_video_output -------------------------- */ - -#ifndef GLX_NV_video_output -#define GLX_NV_video_output 1 - -#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 -#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 -#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 -#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 -#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 -#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 -#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 -#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA -#define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB -#define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC - -typedef int ( * PFNGLXBINDVIDEOIMAGENVPROC) (Display* dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); -typedef int ( * PFNGLXGETVIDEODEVICENVPROC) (Display* dpy, int screen, int numVideoDevices, GLXVideoDeviceNV *pVideoDevice); -typedef int ( * PFNGLXGETVIDEOINFONVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo); -typedef int ( * PFNGLXRELEASEVIDEODEVICENVPROC) (Display* dpy, int screen, GLXVideoDeviceNV VideoDevice); -typedef int ( * PFNGLXRELEASEVIDEOIMAGENVPROC) (Display* dpy, GLXPbuffer pbuf); -typedef int ( * PFNGLXSENDPBUFFERTOVIDEONVPROC) (Display* dpy, GLXPbuffer pbuf, int iBufferType, unsigned long *pulCounterPbuffer, GLboolean bBlock); - -#define glXBindVideoImageNV GLXEW_GET_FUN(__glewXBindVideoImageNV) -#define glXGetVideoDeviceNV GLXEW_GET_FUN(__glewXGetVideoDeviceNV) -#define glXGetVideoInfoNV GLXEW_GET_FUN(__glewXGetVideoInfoNV) -#define glXReleaseVideoDeviceNV GLXEW_GET_FUN(__glewXReleaseVideoDeviceNV) -#define glXReleaseVideoImageNV GLXEW_GET_FUN(__glewXReleaseVideoImageNV) -#define glXSendPbufferToVideoNV GLXEW_GET_FUN(__glewXSendPbufferToVideoNV) - -#define GLXEW_NV_video_output GLXEW_GET_VAR(__GLXEW_NV_video_output) - -#endif /* GLX_NV_video_output */ - -/* -------------------------- GLX_OML_swap_method -------------------------- */ - -#ifndef GLX_OML_swap_method -#define GLX_OML_swap_method 1 - -#define GLX_SWAP_METHOD_OML 0x8060 -#define GLX_SWAP_EXCHANGE_OML 0x8061 -#define GLX_SWAP_COPY_OML 0x8062 -#define GLX_SWAP_UNDEFINED_OML 0x8063 - -#define GLXEW_OML_swap_method GLXEW_GET_VAR(__GLXEW_OML_swap_method) - -#endif /* GLX_OML_swap_method */ - -/* -------------------------- GLX_OML_sync_control ------------------------- */ - -#if !defined(GLX_OML_sync_control) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -#include -#define GLX_OML_sync_control 1 - -typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator); -typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc); -typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); -typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t* ust, int64_t* msc, int64_t* sbc); -typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display* dpy, GLXDrawable drawable, int64_t target_sbc, int64_t* ust, int64_t* msc, int64_t* sbc); - -#define glXGetMscRateOML GLXEW_GET_FUN(__glewXGetMscRateOML) -#define glXGetSyncValuesOML GLXEW_GET_FUN(__glewXGetSyncValuesOML) -#define glXSwapBuffersMscOML GLXEW_GET_FUN(__glewXSwapBuffersMscOML) -#define glXWaitForMscOML GLXEW_GET_FUN(__glewXWaitForMscOML) -#define glXWaitForSbcOML GLXEW_GET_FUN(__glewXWaitForSbcOML) - -#define GLXEW_OML_sync_control GLXEW_GET_VAR(__GLXEW_OML_sync_control) - -#endif /* GLX_OML_sync_control */ - -/* ------------------------ GLX_SGIS_blended_overlay ----------------------- */ - -#ifndef GLX_SGIS_blended_overlay -#define GLX_SGIS_blended_overlay 1 - -#define GLX_BLENDED_RGBA_SGIS 0x8025 - -#define GLXEW_SGIS_blended_overlay GLXEW_GET_VAR(__GLXEW_SGIS_blended_overlay) - -#endif /* GLX_SGIS_blended_overlay */ - -/* -------------------------- GLX_SGIS_color_range ------------------------- */ - -#ifndef GLX_SGIS_color_range -#define GLX_SGIS_color_range 1 - -#define GLX_MIN_RED_SGIS 0 -#define GLX_MAX_GREEN_SGIS 0 -#define GLX_MIN_BLUE_SGIS 0 -#define GLX_MAX_ALPHA_SGIS 0 -#define GLX_MIN_GREEN_SGIS 0 -#define GLX_MIN_ALPHA_SGIS 0 -#define GLX_MAX_RED_SGIS 0 -#define GLX_EXTENDED_RANGE_SGIS 0 -#define GLX_MAX_BLUE_SGIS 0 - -#define GLXEW_SGIS_color_range GLXEW_GET_VAR(__GLXEW_SGIS_color_range) - -#endif /* GLX_SGIS_color_range */ - -/* -------------------------- GLX_SGIS_multisample ------------------------- */ - -#ifndef GLX_SGIS_multisample -#define GLX_SGIS_multisample 1 - -#define GLX_SAMPLE_BUFFERS_SGIS 100000 -#define GLX_SAMPLES_SGIS 100001 - -#define GLXEW_SGIS_multisample GLXEW_GET_VAR(__GLXEW_SGIS_multisample) - -#endif /* GLX_SGIS_multisample */ - -/* ---------------------- GLX_SGIS_shared_multisample ---------------------- */ - -#ifndef GLX_SGIS_shared_multisample -#define GLX_SGIS_shared_multisample 1 - -#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 -#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 - -#define GLXEW_SGIS_shared_multisample GLXEW_GET_VAR(__GLXEW_SGIS_shared_multisample) - -#endif /* GLX_SGIS_shared_multisample */ - -/* --------------------------- GLX_SGIX_fbconfig --------------------------- */ - -#ifndef GLX_SGIX_fbconfig -#define GLX_SGIX_fbconfig 1 - -#define GLX_WINDOW_BIT_SGIX 0x00000001 -#define GLX_RGBA_BIT_SGIX 0x00000001 -#define GLX_PIXMAP_BIT_SGIX 0x00000002 -#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 -#define GLX_SCREEN_EXT 0x800C -#define GLX_DRAWABLE_TYPE_SGIX 0x8010 -#define GLX_RENDER_TYPE_SGIX 0x8011 -#define GLX_X_RENDERABLE_SGIX 0x8012 -#define GLX_FBCONFIG_ID_SGIX 0x8013 -#define GLX_RGBA_TYPE_SGIX 0x8014 -#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 - -typedef XID GLXFBConfigIDSGIX; -typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; - -typedef GLXFBConfigSGIX* ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); -typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); -typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display* dpy, GLXFBConfig config, Pixmap pixmap); -typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display* dpy, GLXFBConfigSGIX config, int attribute, int *value); -typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display* dpy, XVisualInfo *vis); -typedef XVisualInfo* ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfig config); - -#define glXChooseFBConfigSGIX GLXEW_GET_FUN(__glewXChooseFBConfigSGIX) -#define glXCreateContextWithConfigSGIX GLXEW_GET_FUN(__glewXCreateContextWithConfigSGIX) -#define glXCreateGLXPixmapWithConfigSGIX GLXEW_GET_FUN(__glewXCreateGLXPixmapWithConfigSGIX) -#define glXGetFBConfigAttribSGIX GLXEW_GET_FUN(__glewXGetFBConfigAttribSGIX) -#define glXGetFBConfigFromVisualSGIX GLXEW_GET_FUN(__glewXGetFBConfigFromVisualSGIX) -#define glXGetVisualFromFBConfigSGIX GLXEW_GET_FUN(__glewXGetVisualFromFBConfigSGIX) - -#define GLXEW_SGIX_fbconfig GLXEW_GET_VAR(__GLXEW_SGIX_fbconfig) - -#endif /* GLX_SGIX_fbconfig */ - -/* --------------------------- GLX_SGIX_hyperpipe -------------------------- */ - -#ifndef GLX_SGIX_hyperpipe -#define GLX_SGIX_hyperpipe 1 - -#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 -#define GLX_PIPE_RECT_SGIX 0x00000001 -#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 -#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 -#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 -#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 -#define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 -#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 -#define GLX_BAD_HYPERPIPE_SGIX 92 -#define GLX_HYPERPIPE_ID_SGIX 0x8030 - -typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int networkId; -} GLXHyperpipeNetworkSGIX; -typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int XOrigin; - int YOrigin; - int maxHeight; - int maxWidth; -} GLXPipeRectLimits; -typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int channel; - unsigned int participationType; - int timeSlice; -} GLXHyperpipeConfigSGIX; -typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int srcXOrigin; - int srcYOrigin; - int srcWidth; - int srcHeight; - int destXOrigin; - int destYOrigin; - int destWidth; - int destHeight; -} GLXPipeRect; - -typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); -typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); -typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); -typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); -typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); -typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); -typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); -typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); - -#define glXBindHyperpipeSGIX GLXEW_GET_FUN(__glewXBindHyperpipeSGIX) -#define glXDestroyHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXDestroyHyperpipeConfigSGIX) -#define glXHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXHyperpipeAttribSGIX) -#define glXHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXHyperpipeConfigSGIX) -#define glXQueryHyperpipeAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeAttribSGIX) -#define glXQueryHyperpipeBestAttribSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeBestAttribSGIX) -#define glXQueryHyperpipeConfigSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeConfigSGIX) -#define glXQueryHyperpipeNetworkSGIX GLXEW_GET_FUN(__glewXQueryHyperpipeNetworkSGIX) - -#define GLXEW_SGIX_hyperpipe GLXEW_GET_VAR(__GLXEW_SGIX_hyperpipe) - -#endif /* GLX_SGIX_hyperpipe */ - -/* ---------------------------- GLX_SGIX_pbuffer --------------------------- */ - -#ifndef GLX_SGIX_pbuffer -#define GLX_SGIX_pbuffer 1 - -#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 -#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 -#define GLX_PBUFFER_BIT_SGIX 0x00000004 -#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 -#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 -#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 -#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 -#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 -#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 -#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 -#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 -#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 -#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A -#define GLX_PRESERVED_CONTENTS_SGIX 0x801B -#define GLX_LARGEST_PBUFFER_SGIX 0x801C -#define GLX_WIDTH_SGIX 0x801D -#define GLX_HEIGHT_SGIX 0x801E -#define GLX_EVENT_MASK_SGIX 0x801F -#define GLX_DAMAGED_SGIX 0x8020 -#define GLX_SAVED_SGIX 0x8021 -#define GLX_WINDOW_SGIX 0x8022 -#define GLX_PBUFFER_SGIX 0x8023 -#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 - -typedef XID GLXPbufferSGIX; -typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; - -typedef GLXPbuffer ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display* dpy, GLXFBConfig config, unsigned int width, unsigned int height, int *attrib_list); -typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf); -typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long *mask); -typedef void ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display* dpy, GLXPbuffer pbuf, int attribute, unsigned int *value); -typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display* dpy, GLXDrawable drawable, unsigned long mask); - -#define glXCreateGLXPbufferSGIX GLXEW_GET_FUN(__glewXCreateGLXPbufferSGIX) -#define glXDestroyGLXPbufferSGIX GLXEW_GET_FUN(__glewXDestroyGLXPbufferSGIX) -#define glXGetSelectedEventSGIX GLXEW_GET_FUN(__glewXGetSelectedEventSGIX) -#define glXQueryGLXPbufferSGIX GLXEW_GET_FUN(__glewXQueryGLXPbufferSGIX) -#define glXSelectEventSGIX GLXEW_GET_FUN(__glewXSelectEventSGIX) - -#define GLXEW_SGIX_pbuffer GLXEW_GET_VAR(__GLXEW_SGIX_pbuffer) - -#endif /* GLX_SGIX_pbuffer */ - -/* ------------------------- GLX_SGIX_swap_barrier ------------------------- */ - -#ifndef GLX_SGIX_swap_barrier -#define GLX_SGIX_swap_barrier 1 - -typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); -typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); - -#define glXBindSwapBarrierSGIX GLXEW_GET_FUN(__glewXBindSwapBarrierSGIX) -#define glXQueryMaxSwapBarriersSGIX GLXEW_GET_FUN(__glewXQueryMaxSwapBarriersSGIX) - -#define GLXEW_SGIX_swap_barrier GLXEW_GET_VAR(__GLXEW_SGIX_swap_barrier) - -#endif /* GLX_SGIX_swap_barrier */ - -/* -------------------------- GLX_SGIX_swap_group -------------------------- */ - -#ifndef GLX_SGIX_swap_group -#define GLX_SGIX_swap_group 1 - -typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); - -#define glXJoinSwapGroupSGIX GLXEW_GET_FUN(__glewXJoinSwapGroupSGIX) - -#define GLXEW_SGIX_swap_group GLXEW_GET_VAR(__GLXEW_SGIX_swap_group) - -#endif /* GLX_SGIX_swap_group */ - -/* ------------------------- GLX_SGIX_video_resize ------------------------- */ - -#ifndef GLX_SGIX_video_resize -#define GLX_SGIX_video_resize 1 - -#define GLX_SYNC_FRAME_SGIX 0x00000000 -#define GLX_SYNC_SWAP_SGIX 0x00000001 - -typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display* display, int screen, int channel, Window window); -typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int x, int y, int w, int h); -typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display* display, int screen, int channel, GLenum synctype); -typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display* display, int screen, int channel, int *x, int *y, int *w, int *h); -typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display* display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); - -#define glXBindChannelToWindowSGIX GLXEW_GET_FUN(__glewXBindChannelToWindowSGIX) -#define glXChannelRectSGIX GLXEW_GET_FUN(__glewXChannelRectSGIX) -#define glXChannelRectSyncSGIX GLXEW_GET_FUN(__glewXChannelRectSyncSGIX) -#define glXQueryChannelDeltasSGIX GLXEW_GET_FUN(__glewXQueryChannelDeltasSGIX) -#define glXQueryChannelRectSGIX GLXEW_GET_FUN(__glewXQueryChannelRectSGIX) - -#define GLXEW_SGIX_video_resize GLXEW_GET_VAR(__GLXEW_SGIX_video_resize) - -#endif /* GLX_SGIX_video_resize */ - -/* ---------------------- GLX_SGIX_visual_select_group --------------------- */ - -#ifndef GLX_SGIX_visual_select_group -#define GLX_SGIX_visual_select_group 1 - -#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 - -#define GLXEW_SGIX_visual_select_group GLXEW_GET_VAR(__GLXEW_SGIX_visual_select_group) - -#endif /* GLX_SGIX_visual_select_group */ - -/* ---------------------------- GLX_SGI_cushion ---------------------------- */ - -#ifndef GLX_SGI_cushion -#define GLX_SGI_cushion 1 - -typedef void ( * PFNGLXCUSHIONSGIPROC) (Display* dpy, Window window, float cushion); - -#define glXCushionSGI GLXEW_GET_FUN(__glewXCushionSGI) - -#define GLXEW_SGI_cushion GLXEW_GET_VAR(__GLXEW_SGI_cushion) - -#endif /* GLX_SGI_cushion */ - -/* ----------------------- GLX_SGI_make_current_read ----------------------- */ - -#ifndef GLX_SGI_make_current_read -#define GLX_SGI_make_current_read 1 - -typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); -typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); - -#define glXGetCurrentReadDrawableSGI GLXEW_GET_FUN(__glewXGetCurrentReadDrawableSGI) -#define glXMakeCurrentReadSGI GLXEW_GET_FUN(__glewXMakeCurrentReadSGI) - -#define GLXEW_SGI_make_current_read GLXEW_GET_VAR(__GLXEW_SGI_make_current_read) - -#endif /* GLX_SGI_make_current_read */ - -/* -------------------------- GLX_SGI_swap_control ------------------------- */ - -#ifndef GLX_SGI_swap_control -#define GLX_SGI_swap_control 1 - -typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); - -#define glXSwapIntervalSGI GLXEW_GET_FUN(__glewXSwapIntervalSGI) - -#define GLXEW_SGI_swap_control GLXEW_GET_VAR(__GLXEW_SGI_swap_control) - -#endif /* GLX_SGI_swap_control */ - -/* --------------------------- GLX_SGI_video_sync -------------------------- */ - -#ifndef GLX_SGI_video_sync -#define GLX_SGI_video_sync 1 - -typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (uint* count); -typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int* count); - -#define glXGetVideoSyncSGI GLXEW_GET_FUN(__glewXGetVideoSyncSGI) -#define glXWaitVideoSyncSGI GLXEW_GET_FUN(__glewXWaitVideoSyncSGI) - -#define GLXEW_SGI_video_sync GLXEW_GET_VAR(__GLXEW_SGI_video_sync) - -#endif /* GLX_SGI_video_sync */ - -/* --------------------- GLX_SUN_get_transparent_index --------------------- */ - -#ifndef GLX_SUN_get_transparent_index -#define GLX_SUN_get_transparent_index 1 - -typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display* dpy, Window overlay, Window underlay, unsigned long *pTransparentIndex); - -#define glXGetTransparentIndexSUN GLXEW_GET_FUN(__glewXGetTransparentIndexSUN) - -#define GLXEW_SUN_get_transparent_index GLXEW_GET_VAR(__GLXEW_SUN_get_transparent_index) - -#endif /* GLX_SUN_get_transparent_index */ - -/* -------------------------- GLX_SUN_video_resize ------------------------- */ - -#ifndef GLX_SUN_video_resize -#define GLX_SUN_video_resize 1 - -#define GLX_VIDEO_RESIZE_SUN 0x8171 -#define GL_VIDEO_RESIZE_COMPENSATION_SUN 0x85CD - -typedef int ( * PFNGLXGETVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float* factor); -typedef int ( * PFNGLXVIDEORESIZESUNPROC) (Display* display, GLXDrawable window, float factor); - -#define glXGetVideoResizeSUN GLXEW_GET_FUN(__glewXGetVideoResizeSUN) -#define glXVideoResizeSUN GLXEW_GET_FUN(__glewXVideoResizeSUN) - -#define GLXEW_SUN_video_resize GLXEW_GET_VAR(__GLXEW_SUN_video_resize) - -#endif /* GLX_SUN_video_resize */ - -/* ------------------------------------------------------------------------- */ - -#ifdef GLEW_MX -#define GLXEW_EXPORT -#else -#define GLXEW_EXPORT extern -#endif /* GLEW_MX */ - -extern PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay; - -extern PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig; -extern PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext; -extern PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer; -extern PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap; -extern PFNGLXCREATEWINDOWPROC __glewXCreateWindow; -extern PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer; -extern PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap; -extern PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow; -extern PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable; -extern PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib; -extern PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs; -extern PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent; -extern PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig; -extern PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent; -extern PFNGLXQUERYCONTEXTPROC __glewXQueryContext; -extern PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable; -extern PFNGLXSELECTEVENTPROC __glewXSelectEvent; - -extern PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB; - -extern PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI; -extern PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI; -extern PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI; - -extern PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT; -extern PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT; -extern PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT; -extern PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT; - -extern PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT; -extern PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT; - -extern PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA; - -extern PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA; - -extern PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA; - -extern PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA; - -extern PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA; - -extern PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV; -extern PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV; - -extern PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV; -extern PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV; -extern PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV; -extern PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV; -extern PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV; -extern PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV; - -extern PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV; -extern PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV; - -extern PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV; -extern PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV; -extern PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV; -extern PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV; -extern PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV; -extern PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV; - -#ifdef GLX_OML_sync_control -extern PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML; -extern PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML; -extern PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML; -extern PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML; -extern PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML; -#endif - -extern PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX; -extern PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX; -extern PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX; -extern PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX; -extern PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX; -extern PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX; - -extern PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX; -extern PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX; -extern PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX; -extern PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX; -extern PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX; -extern PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX; -extern PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX; -extern PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX; - -extern PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX; -extern PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX; -extern PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX; -extern PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX; -extern PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX; - -extern PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX; -extern PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX; - -extern PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX; - -extern PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX; -extern PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX; -extern PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX; -extern PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX; -extern PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX; - -extern PFNGLXCUSHIONSGIPROC __glewXCushionSGI; - -extern PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI; -extern PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI; - -extern PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI; - -extern PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI; -extern PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI; - -extern PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN; - -extern PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN; -extern PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN; - -#if defined(GLEW_MX) -struct GLXEWContextStruct -{ -#endif /* GLEW_MX */ - -GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_0; -GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_1; -GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_2; -GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_3; -GLXEW_EXPORT GLboolean __GLXEW_VERSION_1_4; -GLXEW_EXPORT GLboolean __GLXEW_3DFX_multisample; -GLXEW_EXPORT GLboolean __GLXEW_ARB_create_context; -GLXEW_EXPORT GLboolean __GLXEW_ARB_fbconfig_float; -GLXEW_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB; -GLXEW_EXPORT GLboolean __GLXEW_ARB_get_proc_address; -GLXEW_EXPORT GLboolean __GLXEW_ARB_multisample; -GLXEW_EXPORT GLboolean __GLXEW_ATI_pixel_format_float; -GLXEW_EXPORT GLboolean __GLXEW_ATI_render_texture; -GLXEW_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float; -GLXEW_EXPORT GLboolean __GLXEW_EXT_framebuffer_sRGB; -GLXEW_EXPORT GLboolean __GLXEW_EXT_import_context; -GLXEW_EXPORT GLboolean __GLXEW_EXT_scene_marker; -GLXEW_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap; -GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_info; -GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_rating; -GLXEW_EXPORT GLboolean __GLXEW_MESA_agp_offset; -GLXEW_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer; -GLXEW_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap; -GLXEW_EXPORT GLboolean __GLXEW_MESA_release_buffers; -GLXEW_EXPORT GLboolean __GLXEW_MESA_set_3dfx_mode; -GLXEW_EXPORT GLboolean __GLXEW_NV_float_buffer; -GLXEW_EXPORT GLboolean __GLXEW_NV_present_video; -GLXEW_EXPORT GLboolean __GLXEW_NV_swap_group; -GLXEW_EXPORT GLboolean __GLXEW_NV_vertex_array_range; -GLXEW_EXPORT GLboolean __GLXEW_NV_video_output; -GLXEW_EXPORT GLboolean __GLXEW_OML_swap_method; -GLXEW_EXPORT GLboolean __GLXEW_OML_sync_control; -GLXEW_EXPORT GLboolean __GLXEW_SGIS_blended_overlay; -GLXEW_EXPORT GLboolean __GLXEW_SGIS_color_range; -GLXEW_EXPORT GLboolean __GLXEW_SGIS_multisample; -GLXEW_EXPORT GLboolean __GLXEW_SGIS_shared_multisample; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_fbconfig; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_hyperpipe; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_pbuffer; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_barrier; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_swap_group; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_video_resize; -GLXEW_EXPORT GLboolean __GLXEW_SGIX_visual_select_group; -GLXEW_EXPORT GLboolean __GLXEW_SGI_cushion; -GLXEW_EXPORT GLboolean __GLXEW_SGI_make_current_read; -GLXEW_EXPORT GLboolean __GLXEW_SGI_swap_control; -GLXEW_EXPORT GLboolean __GLXEW_SGI_video_sync; -GLXEW_EXPORT GLboolean __GLXEW_SUN_get_transparent_index; -GLXEW_EXPORT GLboolean __GLXEW_SUN_video_resize; - -#ifdef GLEW_MX -}; /* GLXEWContextStruct */ -#endif /* GLEW_MX */ - -/* ------------------------------------------------------------------------ */ - -#ifdef GLEW_MX - -typedef struct GLXEWContextStruct GLXEWContext; -extern GLenum glxewContextInit (GLXEWContext* ctx); -extern GLboolean glxewContextIsSupported (GLXEWContext* ctx, const char* name); - -#define glxewInit() glxewContextInit(glxewGetContext()) -#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) - -#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) -#define GLXEW_GET_FUN(x) x - -#else /* GLEW_MX */ - -#define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) -#define GLXEW_GET_FUN(x) x - -extern GLboolean glxewIsSupported (const char* name); - -#endif /* GLEW_MX */ - -extern GLboolean glxewGetExtension (const char* name); - -#ifdef __cplusplus -} -#endif - -#endif /* __glxew_h__ */ diff --git a/src/glew/LICENSE.txt b/src/glew/LICENSE.txt deleted file mode 100644 index f707804..0000000 --- a/src/glew/LICENSE.txt +++ /dev/null @@ -1,73 +0,0 @@ -The OpenGL Extension Wrangler Library -Copyright (C) 2002-2007, Milan Ikits -Copyright (C) 2002-2007, Marcelo E. Magallon -Copyright (C) 2002, Lev Povalahev -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -* The name of the author may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - - -Mesa 3-D graphics library -Version: 7.0 - -Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -Copyright (c) 2007 The Khronos Group Inc. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and/or associated documentation files (the -"Materials"), to deal in the Materials without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Materials, and to -permit persons to whom the Materials are furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Materials. - -THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. diff --git a/src/glew/glew.c b/src/glew/glew.c deleted file mode 100644 index 9b86003..0000000 --- a/src/glew/glew.c +++ /dev/null @@ -1,12189 +0,0 @@ -/* -** The OpenGL Extension Wrangler Library -** Copyright (C) 2002-2008, Milan Ikits -** Copyright (C) 2002-2008, Marcelo E. Magallon -** Copyright (C) 2002, Lev Povalahev -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** -** * Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** * The name of the author may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -** THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include -#if defined(_WIN32) -# include -#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) -# include -#endif - -/* - * Define glewGetContext and related helper macros. - */ -#ifdef GLEW_MX -# define glewGetContext() ctx -# ifdef _WIN32 -# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx -# define GLEW_CONTEXT_ARG_VAR_INIT ctx -# define wglewGetContext() ctx -# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx -# define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx -# else /* _WIN32 */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT -# define glxewGetContext() ctx -# define GLXEW_CONTEXT_ARG_DEF_INIT void -# define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx -# endif /* _WIN32 */ -# define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx -#else /* GLEW_MX */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT -# define GLEW_CONTEXT_ARG_DEF_LIST void -# define WGLEW_CONTEXT_ARG_DEF_INIT void -# define WGLEW_CONTEXT_ARG_DEF_LIST void -# define GLXEW_CONTEXT_ARG_DEF_INIT void -# define GLXEW_CONTEXT_ARG_DEF_LIST void -#endif /* GLEW_MX */ - -#ifndef NULL -#define NULL (void *) 0 -#endif - -#if defined(__APPLE__) -#include -#include -#include - -void* NSGLGetProcAddress (const GLubyte *name) -{ - static const struct mach_header* image = NULL; - NSSymbol symbol; - char* symbolName; - if (NULL == image) - { - image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR); - } - /* prepend a '_' for the Unix C symbol mangling convention */ - symbolName = malloc(strlen((const char*)name) + 2); - strcpy(symbolName+1, (const char*)name); - symbolName[0] = '_'; - symbol = NULL; - /* if (NSIsSymbolNameDefined(symbolName)) - symbol = NSLookupAndBindSymbol(symbolName); */ - symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL; - free(symbolName); - return symbol ? NSAddressOfSymbol(symbol) : NULL; -} -#endif /* __APPLE__ */ - -#if defined(__sgi) || defined (__sun) -#include -#include -#include - -void* dlGetProcAddress (const GLubyte* name) -{ - static void* h = NULL; - static void* gpa; - - if (h == NULL) - { - if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL; - gpa = dlsym(h, "glXGetProcAddress"); - } - - if (gpa != NULL) - return ((void*(*)(const GLubyte*))gpa)(name); - else - return dlsym(h, (const char*)name); -} -#endif /* __sgi || __sun */ - -/* - * Define glewGetProcAddress. - */ -#if defined(_WIN32) -# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name) -#else -# if defined(__APPLE__) -# define glewGetProcAddress(name) NSGLGetProcAddress(name) -# else -# if defined(__sgi) || defined(__sun) -# define glewGetProcAddress(name) dlGetProcAddress(name) -# else /* __linux */ -# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name) -# endif -# endif -#endif - -/* - * Define GLboolean const cast. - */ -#define CONST_CAST(x) (*(GLboolean*)&x) - -/* - * GLEW, just like OpenGL or GLU, does not rely on the standard C library. - * These functions implement the functionality required in this file. - */ -static GLuint _glewStrLen (const GLubyte* s) -{ - GLuint i=0; - if (s == NULL) return 0; - while (s[i] != '\0') i++; - return i; -} - -static GLuint _glewStrCLen (const GLubyte* s, GLubyte c) -{ - GLuint i=0; - if (s == NULL) return 0; - while (s[i] != '\0' && s[i] != c) i++; - return (s[i] == '\0' || s[i] == c) ? i : 0; -} - -static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n) -{ - GLuint i=0; - if(a == NULL || b == NULL) - return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE; - while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++; - return i == n ? GL_TRUE : GL_FALSE; -} - -static GLboolean _glewStrSame1 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) -{ - while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t')) - { - (*a)++; - (*na)--; - } - if(*na >= nb) - { - GLuint i=0; - while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; - if(i == nb) - { - *a = *a + nb; - *na = *na - nb; - return GL_TRUE; - } - } - return GL_FALSE; -} - -static GLboolean _glewStrSame2 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) -{ - if(*na >= nb) - { - GLuint i=0; - while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; - if(i == nb) - { - *a = *a + nb; - *na = *na - nb; - return GL_TRUE; - } - } - return GL_FALSE; -} - -static GLboolean _glewStrSame3 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) -{ - if(*na >= nb) - { - GLuint i=0; - while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; - if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t')) - { - *a = *a + nb; - *na = *na - nb; - return GL_TRUE; - } - } - return GL_FALSE; -} - -#if !defined(_WIN32) || !defined(GLEW_MX) - -PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL; -PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL; -PFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL; -PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL; - -PFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL; -PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL; -PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL; -PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL; -PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL; -PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL; -PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL; -PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL; -PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL; -PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL; -PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL; -PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL; -PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL; -PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL; -PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL; -PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL; -PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL; -PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL; -PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL; -PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL; -PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL; -PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL; -PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL; -PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL; -PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL; -PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL; -PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL; -PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL; -PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL; -PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL; -PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL; -PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL; -PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL; -PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL; -PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL; -PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL; -PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL; -PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL; -PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL; -PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL; -PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL; -PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL; -PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL; - -PFNGLBLENDCOLORPROC __glewBlendColor = NULL; -PFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL; -PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL; -PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL; -PFNGLFOGCOORDDPROC __glewFogCoordd = NULL; -PFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL; -PFNGLFOGCOORDFPROC __glewFogCoordf = NULL; -PFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL; -PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL; -PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL; -PFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL; -PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL; -PFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL; -PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL; -PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL; -PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL; -PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL; -PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL; -PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL; -PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL; -PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL; -PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL; -PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL; -PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL; -PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL; -PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL; -PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL; -PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL; -PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL; -PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL; -PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL; -PFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL; -PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL; -PFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL; -PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL; -PFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL; -PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL; -PFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL; -PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL; -PFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL; -PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL; -PFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL; -PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL; -PFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL; -PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL; -PFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL; -PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL; - -PFNGLBEGINQUERYPROC __glewBeginQuery = NULL; -PFNGLBINDBUFFERPROC __glewBindBuffer = NULL; -PFNGLBUFFERDATAPROC __glewBufferData = NULL; -PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL; -PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL; -PFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL; -PFNGLENDQUERYPROC __glewEndQuery = NULL; -PFNGLGENBUFFERSPROC __glewGenBuffers = NULL; -PFNGLGENQUERIESPROC __glewGenQueries = NULL; -PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL; -PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL; -PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL; -PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL; -PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL; -PFNGLGETQUERYIVPROC __glewGetQueryiv = NULL; -PFNGLISBUFFERPROC __glewIsBuffer = NULL; -PFNGLISQUERYPROC __glewIsQuery = NULL; -PFNGLMAPBUFFERPROC __glewMapBuffer = NULL; -PFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL; - -PFNGLATTACHSHADERPROC __glewAttachShader = NULL; -PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL; -PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL; -PFNGLCOMPILESHADERPROC __glewCompileShader = NULL; -PFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL; -PFNGLCREATESHADERPROC __glewCreateShader = NULL; -PFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL; -PFNGLDELETESHADERPROC __glewDeleteShader = NULL; -PFNGLDETACHSHADERPROC __glewDetachShader = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL; -PFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL; -PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL; -PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL; -PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL; -PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL; -PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL; -PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL; -PFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL; -PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL; -PFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL; -PFNGLGETSHADERIVPROC __glewGetShaderiv = NULL; -PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL; -PFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL; -PFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL; -PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL; -PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL; -PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL; -PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL; -PFNGLISPROGRAMPROC __glewIsProgram = NULL; -PFNGLISSHADERPROC __glewIsShader = NULL; -PFNGLLINKPROGRAMPROC __glewLinkProgram = NULL; -PFNGLSHADERSOURCEPROC __glewShaderSource = NULL; -PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL; -PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL; -PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL; -PFNGLUNIFORM1FPROC __glewUniform1f = NULL; -PFNGLUNIFORM1FVPROC __glewUniform1fv = NULL; -PFNGLUNIFORM1IPROC __glewUniform1i = NULL; -PFNGLUNIFORM1IVPROC __glewUniform1iv = NULL; -PFNGLUNIFORM2FPROC __glewUniform2f = NULL; -PFNGLUNIFORM2FVPROC __glewUniform2fv = NULL; -PFNGLUNIFORM2IPROC __glewUniform2i = NULL; -PFNGLUNIFORM2IVPROC __glewUniform2iv = NULL; -PFNGLUNIFORM3FPROC __glewUniform3f = NULL; -PFNGLUNIFORM3FVPROC __glewUniform3fv = NULL; -PFNGLUNIFORM3IPROC __glewUniform3i = NULL; -PFNGLUNIFORM3IVPROC __glewUniform3iv = NULL; -PFNGLUNIFORM4FPROC __glewUniform4f = NULL; -PFNGLUNIFORM4FVPROC __glewUniform4fv = NULL; -PFNGLUNIFORM4IPROC __glewUniform4i = NULL; -PFNGLUNIFORM4IVPROC __glewUniform4iv = NULL; -PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL; -PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL; -PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL; -PFNGLUSEPROGRAMPROC __glewUseProgram = NULL; -PFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL; -PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL; -PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL; -PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL; -PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL; -PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL; -PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL; -PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL; -PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL; -PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL; -PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL; -PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL; -PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL; -PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL; -PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL; -PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL; -PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL; -PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL; -PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL; -PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL; -PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL; -PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL; -PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL; -PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL; -PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL; -PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL; -PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL; -PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL; -PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL; -PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL; -PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL; -PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL; -PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL; -PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL; -PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL; -PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL; -PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL; -PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL; - -PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL; -PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL; -PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL; -PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL; -PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL; -PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL; - -PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL; -PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL; -PFNGLBINDBUFFERBASEPROC __glewBindBufferBase = NULL; -PFNGLBINDBUFFERRANGEPROC __glewBindBufferRange = NULL; -PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL; -PFNGLCLAMPCOLORPROC __glewClampColor = NULL; -PFNGLCLEARBUFFERFIPROC __glewClearBufferfi = NULL; -PFNGLCLEARBUFFERFVPROC __glewClearBufferfv = NULL; -PFNGLCLEARBUFFERIVPROC __glewClearBufferiv = NULL; -PFNGLCLEARBUFFERUIVPROC __glewClearBufferuiv = NULL; -PFNGLCOLORMASKIPROC __glewColorMaski = NULL; -PFNGLDISABLEIPROC __glewDisablei = NULL; -PFNGLENABLEIPROC __glewEnablei = NULL; -PFNGLENDCONDITIONALRENDERPROC __glewEndConditionalRender = NULL; -PFNGLENDTRANSFORMFEEDBACKPROC __glewEndTransformFeedback = NULL; -PFNGLGETBOOLEANI_VPROC __glewGetBooleani_v = NULL; -PFNGLGETFRAGDATALOCATIONPROC __glewGetFragDataLocation = NULL; -PFNGLGETINTEGERI_VPROC __glewGetIntegeri_v = NULL; -PFNGLGETSTRINGIPROC __glewGetStringi = NULL; -PFNGLGETTEXPARAMETERIIVPROC __glewGetTexParameterIiv = NULL; -PFNGLGETTEXPARAMETERIUIVPROC __glewGetTexParameterIuiv = NULL; -PFNGLGETTRANSFORMFEEDBACKVARYINGPROC __glewGetTransformFeedbackVarying = NULL; -PFNGLGETUNIFORMUIVPROC __glewGetUniformuiv = NULL; -PFNGLGETVERTEXATTRIBIIVPROC __glewGetVertexAttribIiv = NULL; -PFNGLGETVERTEXATTRIBIUIVPROC __glewGetVertexAttribIuiv = NULL; -PFNGLISENABLEDIPROC __glewIsEnabledi = NULL; -PFNGLTEXPARAMETERIIVPROC __glewTexParameterIiv = NULL; -PFNGLTEXPARAMETERIUIVPROC __glewTexParameterIuiv = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC __glewTransformFeedbackVaryings = NULL; -PFNGLUNIFORM1UIPROC __glewUniform1ui = NULL; -PFNGLUNIFORM1UIVPROC __glewUniform1uiv = NULL; -PFNGLUNIFORM2UIPROC __glewUniform2ui = NULL; -PFNGLUNIFORM2UIVPROC __glewUniform2uiv = NULL; -PFNGLUNIFORM3UIPROC __glewUniform3ui = NULL; -PFNGLUNIFORM3UIVPROC __glewUniform3uiv = NULL; -PFNGLUNIFORM4UIPROC __glewUniform4ui = NULL; -PFNGLUNIFORM4UIVPROC __glewUniform4uiv = NULL; -PFNGLVERTEXATTRIBI1IPROC __glewVertexAttribI1i = NULL; -PFNGLVERTEXATTRIBI1IVPROC __glewVertexAttribI1iv = NULL; -PFNGLVERTEXATTRIBI1UIPROC __glewVertexAttribI1ui = NULL; -PFNGLVERTEXATTRIBI1UIVPROC __glewVertexAttribI1uiv = NULL; -PFNGLVERTEXATTRIBI2IPROC __glewVertexAttribI2i = NULL; -PFNGLVERTEXATTRIBI2IVPROC __glewVertexAttribI2iv = NULL; -PFNGLVERTEXATTRIBI2UIPROC __glewVertexAttribI2ui = NULL; -PFNGLVERTEXATTRIBI2UIVPROC __glewVertexAttribI2uiv = NULL; -PFNGLVERTEXATTRIBI3IPROC __glewVertexAttribI3i = NULL; -PFNGLVERTEXATTRIBI3IVPROC __glewVertexAttribI3iv = NULL; -PFNGLVERTEXATTRIBI3UIPROC __glewVertexAttribI3ui = NULL; -PFNGLVERTEXATTRIBI3UIVPROC __glewVertexAttribI3uiv = NULL; -PFNGLVERTEXATTRIBI4BVPROC __glewVertexAttribI4bv = NULL; -PFNGLVERTEXATTRIBI4IPROC __glewVertexAttribI4i = NULL; -PFNGLVERTEXATTRIBI4IVPROC __glewVertexAttribI4iv = NULL; -PFNGLVERTEXATTRIBI4SVPROC __glewVertexAttribI4sv = NULL; -PFNGLVERTEXATTRIBI4UBVPROC __glewVertexAttribI4ubv = NULL; -PFNGLVERTEXATTRIBI4UIPROC __glewVertexAttribI4ui = NULL; -PFNGLVERTEXATTRIBI4UIVPROC __glewVertexAttribI4uiv = NULL; -PFNGLVERTEXATTRIBI4USVPROC __glewVertexAttribI4usv = NULL; -PFNGLVERTEXATTRIBIPOINTERPROC __glewVertexAttribIPointer = NULL; - -PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX = NULL; - -PFNGLDRAWELEMENTARRAYAPPLEPROC __glewDrawElementArrayAPPLE = NULL; -PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC __glewDrawRangeElementArrayAPPLE = NULL; -PFNGLELEMENTPOINTERAPPLEPROC __glewElementPointerAPPLE = NULL; -PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC __glewMultiDrawElementArrayAPPLE = NULL; -PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC __glewMultiDrawRangeElementArrayAPPLE = NULL; - -PFNGLDELETEFENCESAPPLEPROC __glewDeleteFencesAPPLE = NULL; -PFNGLFINISHFENCEAPPLEPROC __glewFinishFenceAPPLE = NULL; -PFNGLFINISHOBJECTAPPLEPROC __glewFinishObjectAPPLE = NULL; -PFNGLGENFENCESAPPLEPROC __glewGenFencesAPPLE = NULL; -PFNGLISFENCEAPPLEPROC __glewIsFenceAPPLE = NULL; -PFNGLSETFENCEAPPLEPROC __glewSetFenceAPPLE = NULL; -PFNGLTESTFENCEAPPLEPROC __glewTestFenceAPPLE = NULL; -PFNGLTESTOBJECTAPPLEPROC __glewTestObjectAPPLE = NULL; - -PFNGLBUFFERPARAMETERIAPPLEPROC __glewBufferParameteriAPPLE = NULL; -PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC __glewFlushMappedBufferRangeAPPLE = NULL; - -PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC __glewGetTexParameterPointervAPPLE = NULL; -PFNGLTEXTURERANGEAPPLEPROC __glewTextureRangeAPPLE = NULL; - -PFNGLBINDVERTEXARRAYAPPLEPROC __glewBindVertexArrayAPPLE = NULL; -PFNGLDELETEVERTEXARRAYSAPPLEPROC __glewDeleteVertexArraysAPPLE = NULL; -PFNGLGENVERTEXARRAYSAPPLEPROC __glewGenVertexArraysAPPLE = NULL; -PFNGLISVERTEXARRAYAPPLEPROC __glewIsVertexArrayAPPLE = NULL; - -PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC __glewFlushVertexArrayRangeAPPLE = NULL; -PFNGLVERTEXARRAYPARAMETERIAPPLEPROC __glewVertexArrayParameteriAPPLE = NULL; -PFNGLVERTEXARRAYRANGEAPPLEPROC __glewVertexArrayRangeAPPLE = NULL; - -PFNGLCLAMPCOLORARBPROC __glewClampColorARB = NULL; - -PFNGLDRAWBUFFERSARBPROC __glewDrawBuffersARB = NULL; - -PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB = NULL; -PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB = NULL; - -PFNGLBINDFRAMEBUFFERPROC __glewBindFramebuffer = NULL; -PFNGLBINDRENDERBUFFERPROC __glewBindRenderbuffer = NULL; -PFNGLBLITFRAMEBUFFERPROC __glewBlitFramebuffer = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSPROC __glewCheckFramebufferStatus = NULL; -PFNGLDELETEFRAMEBUFFERSPROC __glewDeleteFramebuffers = NULL; -PFNGLDELETERENDERBUFFERSPROC __glewDeleteRenderbuffers = NULL; -PFNGLFRAMEBUFFERRENDERBUFFERPROC __glewFramebufferRenderbuffer = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERPROC __glewFramebufferTextureLayer = NULL; -PFNGLFRAMEBUFFERTEXTURE1DPROC __glewFramebufferTexture1D = NULL; -PFNGLFRAMEBUFFERTEXTURE2DPROC __glewFramebufferTexture2D = NULL; -PFNGLFRAMEBUFFERTEXTURE3DPROC __glewFramebufferTexture3D = NULL; -PFNGLGENFRAMEBUFFERSPROC __glewGenFramebuffers = NULL; -PFNGLGENRENDERBUFFERSPROC __glewGenRenderbuffers = NULL; -PFNGLGENERATEMIPMAPPROC __glewGenerateMipmap = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC __glewGetFramebufferAttachmentParameteriv = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVPROC __glewGetRenderbufferParameteriv = NULL; -PFNGLISFRAMEBUFFERPROC __glewIsFramebuffer = NULL; -PFNGLISRENDERBUFFERPROC __glewIsRenderbuffer = NULL; -PFNGLRENDERBUFFERSTORAGEPROC __glewRenderbufferStorage = NULL; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC __glewRenderbufferStorageMultisample = NULL; - -PFNGLFRAMEBUFFERTEXTUREARBPROC __glewFramebufferTextureARB = NULL; -PFNGLFRAMEBUFFERTEXTUREFACEARBPROC __glewFramebufferTextureFaceARB = NULL; -PFNGLFRAMEBUFFERTEXTURELAYERARBPROC __glewFramebufferTextureLayerARB = NULL; -PFNGLPROGRAMPARAMETERIARBPROC __glewProgramParameteriARB = NULL; - -PFNGLCOLORSUBTABLEPROC __glewColorSubTable = NULL; -PFNGLCOLORTABLEPROC __glewColorTable = NULL; -PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv = NULL; -PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv = NULL; -PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D = NULL; -PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D = NULL; -PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf = NULL; -PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv = NULL; -PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri = NULL; -PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv = NULL; -PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable = NULL; -PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable = NULL; -PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D = NULL; -PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D = NULL; -PFNGLGETCOLORTABLEPROC __glewGetColorTable = NULL; -PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv = NULL; -PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv = NULL; -PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter = NULL; -PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv = NULL; -PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv = NULL; -PFNGLGETHISTOGRAMPROC __glewGetHistogram = NULL; -PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv = NULL; -PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv = NULL; -PFNGLGETMINMAXPROC __glewGetMinmax = NULL; -PFNGLGETMINMAXPARAMETERFVPROC __glewGetMinmaxParameterfv = NULL; -PFNGLGETMINMAXPARAMETERIVPROC __glewGetMinmaxParameteriv = NULL; -PFNGLGETSEPARABLEFILTERPROC __glewGetSeparableFilter = NULL; -PFNGLHISTOGRAMPROC __glewHistogram = NULL; -PFNGLMINMAXPROC __glewMinmax = NULL; -PFNGLRESETHISTOGRAMPROC __glewResetHistogram = NULL; -PFNGLRESETMINMAXPROC __glewResetMinmax = NULL; -PFNGLSEPARABLEFILTER2DPROC __glewSeparableFilter2D = NULL; - -PFNGLVERTEXATTRIBDIVISORARBPROC __glewVertexAttribDivisorARB = NULL; - -PFNGLFLUSHMAPPEDBUFFERRANGEPROC __glewFlushMappedBufferRange = NULL; -PFNGLMAPBUFFERRANGEPROC __glewMapBufferRange = NULL; - -PFNGLCURRENTPALETTEMATRIXARBPROC __glewCurrentPaletteMatrixARB = NULL; -PFNGLMATRIXINDEXPOINTERARBPROC __glewMatrixIndexPointerARB = NULL; -PFNGLMATRIXINDEXUBVARBPROC __glewMatrixIndexubvARB = NULL; -PFNGLMATRIXINDEXUIVARBPROC __glewMatrixIndexuivARB = NULL; -PFNGLMATRIXINDEXUSVARBPROC __glewMatrixIndexusvARB = NULL; - -PFNGLSAMPLECOVERAGEARBPROC __glewSampleCoverageARB = NULL; - -PFNGLACTIVETEXTUREARBPROC __glewActiveTextureARB = NULL; -PFNGLCLIENTACTIVETEXTUREARBPROC __glewClientActiveTextureARB = NULL; -PFNGLMULTITEXCOORD1DARBPROC __glewMultiTexCoord1dARB = NULL; -PFNGLMULTITEXCOORD1DVARBPROC __glewMultiTexCoord1dvARB = NULL; -PFNGLMULTITEXCOORD1FARBPROC __glewMultiTexCoord1fARB = NULL; -PFNGLMULTITEXCOORD1FVARBPROC __glewMultiTexCoord1fvARB = NULL; -PFNGLMULTITEXCOORD1IARBPROC __glewMultiTexCoord1iARB = NULL; -PFNGLMULTITEXCOORD1IVARBPROC __glewMultiTexCoord1ivARB = NULL; -PFNGLMULTITEXCOORD1SARBPROC __glewMultiTexCoord1sARB = NULL; -PFNGLMULTITEXCOORD1SVARBPROC __glewMultiTexCoord1svARB = NULL; -PFNGLMULTITEXCOORD2DARBPROC __glewMultiTexCoord2dARB = NULL; -PFNGLMULTITEXCOORD2DVARBPROC __glewMultiTexCoord2dvARB = NULL; -PFNGLMULTITEXCOORD2FARBPROC __glewMultiTexCoord2fARB = NULL; -PFNGLMULTITEXCOORD2FVARBPROC __glewMultiTexCoord2fvARB = NULL; -PFNGLMULTITEXCOORD2IARBPROC __glewMultiTexCoord2iARB = NULL; -PFNGLMULTITEXCOORD2IVARBPROC __glewMultiTexCoord2ivARB = NULL; -PFNGLMULTITEXCOORD2SARBPROC __glewMultiTexCoord2sARB = NULL; -PFNGLMULTITEXCOORD2SVARBPROC __glewMultiTexCoord2svARB = NULL; -PFNGLMULTITEXCOORD3DARBPROC __glewMultiTexCoord3dARB = NULL; -PFNGLMULTITEXCOORD3DVARBPROC __glewMultiTexCoord3dvARB = NULL; -PFNGLMULTITEXCOORD3FARBPROC __glewMultiTexCoord3fARB = NULL; -PFNGLMULTITEXCOORD3FVARBPROC __glewMultiTexCoord3fvARB = NULL; -PFNGLMULTITEXCOORD3IARBPROC __glewMultiTexCoord3iARB = NULL; -PFNGLMULTITEXCOORD3IVARBPROC __glewMultiTexCoord3ivARB = NULL; -PFNGLMULTITEXCOORD3SARBPROC __glewMultiTexCoord3sARB = NULL; -PFNGLMULTITEXCOORD3SVARBPROC __glewMultiTexCoord3svARB = NULL; -PFNGLMULTITEXCOORD4DARBPROC __glewMultiTexCoord4dARB = NULL; -PFNGLMULTITEXCOORD4DVARBPROC __glewMultiTexCoord4dvARB = NULL; -PFNGLMULTITEXCOORD4FARBPROC __glewMultiTexCoord4fARB = NULL; -PFNGLMULTITEXCOORD4FVARBPROC __glewMultiTexCoord4fvARB = NULL; -PFNGLMULTITEXCOORD4IARBPROC __glewMultiTexCoord4iARB = NULL; -PFNGLMULTITEXCOORD4IVARBPROC __glewMultiTexCoord4ivARB = NULL; -PFNGLMULTITEXCOORD4SARBPROC __glewMultiTexCoord4sARB = NULL; -PFNGLMULTITEXCOORD4SVARBPROC __glewMultiTexCoord4svARB = NULL; - -PFNGLBEGINQUERYARBPROC __glewBeginQueryARB = NULL; -PFNGLDELETEQUERIESARBPROC __glewDeleteQueriesARB = NULL; -PFNGLENDQUERYARBPROC __glewEndQueryARB = NULL; -PFNGLGENQUERIESARBPROC __glewGenQueriesARB = NULL; -PFNGLGETQUERYOBJECTIVARBPROC __glewGetQueryObjectivARB = NULL; -PFNGLGETQUERYOBJECTUIVARBPROC __glewGetQueryObjectuivARB = NULL; -PFNGLGETQUERYIVARBPROC __glewGetQueryivARB = NULL; -PFNGLISQUERYARBPROC __glewIsQueryARB = NULL; - -PFNGLPOINTPARAMETERFARBPROC __glewPointParameterfARB = NULL; -PFNGLPOINTPARAMETERFVARBPROC __glewPointParameterfvARB = NULL; - -PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB = NULL; -PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB = NULL; -PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB = NULL; -PFNGLCREATESHADEROBJECTARBPROC __glewCreateShaderObjectARB = NULL; -PFNGLDELETEOBJECTARBPROC __glewDeleteObjectARB = NULL; -PFNGLDETACHOBJECTARBPROC __glewDetachObjectARB = NULL; -PFNGLGETACTIVEUNIFORMARBPROC __glewGetActiveUniformARB = NULL; -PFNGLGETATTACHEDOBJECTSARBPROC __glewGetAttachedObjectsARB = NULL; -PFNGLGETHANDLEARBPROC __glewGetHandleARB = NULL; -PFNGLGETINFOLOGARBPROC __glewGetInfoLogARB = NULL; -PFNGLGETOBJECTPARAMETERFVARBPROC __glewGetObjectParameterfvARB = NULL; -PFNGLGETOBJECTPARAMETERIVARBPROC __glewGetObjectParameterivARB = NULL; -PFNGLGETSHADERSOURCEARBPROC __glewGetShaderSourceARB = NULL; -PFNGLGETUNIFORMLOCATIONARBPROC __glewGetUniformLocationARB = NULL; -PFNGLGETUNIFORMFVARBPROC __glewGetUniformfvARB = NULL; -PFNGLGETUNIFORMIVARBPROC __glewGetUniformivARB = NULL; -PFNGLLINKPROGRAMARBPROC __glewLinkProgramARB = NULL; -PFNGLSHADERSOURCEARBPROC __glewShaderSourceARB = NULL; -PFNGLUNIFORM1FARBPROC __glewUniform1fARB = NULL; -PFNGLUNIFORM1FVARBPROC __glewUniform1fvARB = NULL; -PFNGLUNIFORM1IARBPROC __glewUniform1iARB = NULL; -PFNGLUNIFORM1IVARBPROC __glewUniform1ivARB = NULL; -PFNGLUNIFORM2FARBPROC __glewUniform2fARB = NULL; -PFNGLUNIFORM2FVARBPROC __glewUniform2fvARB = NULL; -PFNGLUNIFORM2IARBPROC __glewUniform2iARB = NULL; -PFNGLUNIFORM2IVARBPROC __glewUniform2ivARB = NULL; -PFNGLUNIFORM3FARBPROC __glewUniform3fARB = NULL; -PFNGLUNIFORM3FVARBPROC __glewUniform3fvARB = NULL; -PFNGLUNIFORM3IARBPROC __glewUniform3iARB = NULL; -PFNGLUNIFORM3IVARBPROC __glewUniform3ivARB = NULL; -PFNGLUNIFORM4FARBPROC __glewUniform4fARB = NULL; -PFNGLUNIFORM4FVARBPROC __glewUniform4fvARB = NULL; -PFNGLUNIFORM4IARBPROC __glewUniform4iARB = NULL; -PFNGLUNIFORM4IVARBPROC __glewUniform4ivARB = NULL; -PFNGLUNIFORMMATRIX2FVARBPROC __glewUniformMatrix2fvARB = NULL; -PFNGLUNIFORMMATRIX3FVARBPROC __glewUniformMatrix3fvARB = NULL; -PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB = NULL; -PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB = NULL; -PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB = NULL; - -PFNGLTEXBUFFERARBPROC __glewTexBufferARB = NULL; - -PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB = NULL; -PFNGLCOMPRESSEDTEXIMAGE2DARBPROC __glewCompressedTexImage2DARB = NULL; -PFNGLCOMPRESSEDTEXIMAGE3DARBPROC __glewCompressedTexImage3DARB = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC __glewCompressedTexSubImage1DARB = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC __glewCompressedTexSubImage2DARB = NULL; -PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC __glewCompressedTexSubImage3DARB = NULL; -PFNGLGETCOMPRESSEDTEXIMAGEARBPROC __glewGetCompressedTexImageARB = NULL; - -PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB = NULL; -PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB = NULL; -PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB = NULL; -PFNGLMULTTRANSPOSEMATRIXFARBPROC __glewMultTransposeMatrixfARB = NULL; - -PFNGLBINDVERTEXARRAYPROC __glewBindVertexArray = NULL; -PFNGLDELETEVERTEXARRAYSPROC __glewDeleteVertexArrays = NULL; -PFNGLGENVERTEXARRAYSPROC __glewGenVertexArrays = NULL; -PFNGLISVERTEXARRAYPROC __glewIsVertexArray = NULL; - -PFNGLVERTEXBLENDARBPROC __glewVertexBlendARB = NULL; -PFNGLWEIGHTPOINTERARBPROC __glewWeightPointerARB = NULL; -PFNGLWEIGHTBVARBPROC __glewWeightbvARB = NULL; -PFNGLWEIGHTDVARBPROC __glewWeightdvARB = NULL; -PFNGLWEIGHTFVARBPROC __glewWeightfvARB = NULL; -PFNGLWEIGHTIVARBPROC __glewWeightivARB = NULL; -PFNGLWEIGHTSVARBPROC __glewWeightsvARB = NULL; -PFNGLWEIGHTUBVARBPROC __glewWeightubvARB = NULL; -PFNGLWEIGHTUIVARBPROC __glewWeightuivARB = NULL; -PFNGLWEIGHTUSVARBPROC __glewWeightusvARB = NULL; - -PFNGLBINDBUFFERARBPROC __glewBindBufferARB = NULL; -PFNGLBUFFERDATAARBPROC __glewBufferDataARB = NULL; -PFNGLBUFFERSUBDATAARBPROC __glewBufferSubDataARB = NULL; -PFNGLDELETEBUFFERSARBPROC __glewDeleteBuffersARB = NULL; -PFNGLGENBUFFERSARBPROC __glewGenBuffersARB = NULL; -PFNGLGETBUFFERPARAMETERIVARBPROC __glewGetBufferParameterivARB = NULL; -PFNGLGETBUFFERPOINTERVARBPROC __glewGetBufferPointervARB = NULL; -PFNGLGETBUFFERSUBDATAARBPROC __glewGetBufferSubDataARB = NULL; -PFNGLISBUFFERARBPROC __glewIsBufferARB = NULL; -PFNGLMAPBUFFERARBPROC __glewMapBufferARB = NULL; -PFNGLUNMAPBUFFERARBPROC __glewUnmapBufferARB = NULL; - -PFNGLBINDPROGRAMARBPROC __glewBindProgramARB = NULL; -PFNGLDELETEPROGRAMSARBPROC __glewDeleteProgramsARB = NULL; -PFNGLDISABLEVERTEXATTRIBARRAYARBPROC __glewDisableVertexAttribArrayARB = NULL; -PFNGLENABLEVERTEXATTRIBARRAYARBPROC __glewEnableVertexAttribArrayARB = NULL; -PFNGLGENPROGRAMSARBPROC __glewGenProgramsARB = NULL; -PFNGLGETPROGRAMENVPARAMETERDVARBPROC __glewGetProgramEnvParameterdvARB = NULL; -PFNGLGETPROGRAMENVPARAMETERFVARBPROC __glewGetProgramEnvParameterfvARB = NULL; -PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC __glewGetProgramLocalParameterdvARB = NULL; -PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC __glewGetProgramLocalParameterfvARB = NULL; -PFNGLGETPROGRAMSTRINGARBPROC __glewGetProgramStringARB = NULL; -PFNGLGETPROGRAMIVARBPROC __glewGetProgramivARB = NULL; -PFNGLGETVERTEXATTRIBPOINTERVARBPROC __glewGetVertexAttribPointervARB = NULL; -PFNGLGETVERTEXATTRIBDVARBPROC __glewGetVertexAttribdvARB = NULL; -PFNGLGETVERTEXATTRIBFVARBPROC __glewGetVertexAttribfvARB = NULL; -PFNGLGETVERTEXATTRIBIVARBPROC __glewGetVertexAttribivARB = NULL; -PFNGLISPROGRAMARBPROC __glewIsProgramARB = NULL; -PFNGLPROGRAMENVPARAMETER4DARBPROC __glewProgramEnvParameter4dARB = NULL; -PFNGLPROGRAMENVPARAMETER4DVARBPROC __glewProgramEnvParameter4dvARB = NULL; -PFNGLPROGRAMENVPARAMETER4FARBPROC __glewProgramEnvParameter4fARB = NULL; -PFNGLPROGRAMENVPARAMETER4FVARBPROC __glewProgramEnvParameter4fvARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4DARBPROC __glewProgramLocalParameter4dARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4DVARBPROC __glewProgramLocalParameter4dvARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4FARBPROC __glewProgramLocalParameter4fARB = NULL; -PFNGLPROGRAMLOCALPARAMETER4FVARBPROC __glewProgramLocalParameter4fvARB = NULL; -PFNGLPROGRAMSTRINGARBPROC __glewProgramStringARB = NULL; -PFNGLVERTEXATTRIB1DARBPROC __glewVertexAttrib1dARB = NULL; -PFNGLVERTEXATTRIB1DVARBPROC __glewVertexAttrib1dvARB = NULL; -PFNGLVERTEXATTRIB1FARBPROC __glewVertexAttrib1fARB = NULL; -PFNGLVERTEXATTRIB1FVARBPROC __glewVertexAttrib1fvARB = NULL; -PFNGLVERTEXATTRIB1SARBPROC __glewVertexAttrib1sARB = NULL; -PFNGLVERTEXATTRIB1SVARBPROC __glewVertexAttrib1svARB = NULL; -PFNGLVERTEXATTRIB2DARBPROC __glewVertexAttrib2dARB = NULL; -PFNGLVERTEXATTRIB2DVARBPROC __glewVertexAttrib2dvARB = NULL; -PFNGLVERTEXATTRIB2FARBPROC __glewVertexAttrib2fARB = NULL; -PFNGLVERTEXATTRIB2FVARBPROC __glewVertexAttrib2fvARB = NULL; -PFNGLVERTEXATTRIB2SARBPROC __glewVertexAttrib2sARB = NULL; -PFNGLVERTEXATTRIB2SVARBPROC __glewVertexAttrib2svARB = NULL; -PFNGLVERTEXATTRIB3DARBPROC __glewVertexAttrib3dARB = NULL; -PFNGLVERTEXATTRIB3DVARBPROC __glewVertexAttrib3dvARB = NULL; -PFNGLVERTEXATTRIB3FARBPROC __glewVertexAttrib3fARB = NULL; -PFNGLVERTEXATTRIB3FVARBPROC __glewVertexAttrib3fvARB = NULL; -PFNGLVERTEXATTRIB3SARBPROC __glewVertexAttrib3sARB = NULL; -PFNGLVERTEXATTRIB3SVARBPROC __glewVertexAttrib3svARB = NULL; -PFNGLVERTEXATTRIB4NBVARBPROC __glewVertexAttrib4NbvARB = NULL; -PFNGLVERTEXATTRIB4NIVARBPROC __glewVertexAttrib4NivARB = NULL; -PFNGLVERTEXATTRIB4NSVARBPROC __glewVertexAttrib4NsvARB = NULL; -PFNGLVERTEXATTRIB4NUBARBPROC __glewVertexAttrib4NubARB = NULL; -PFNGLVERTEXATTRIB4NUBVARBPROC __glewVertexAttrib4NubvARB = NULL; -PFNGLVERTEXATTRIB4NUIVARBPROC __glewVertexAttrib4NuivARB = NULL; -PFNGLVERTEXATTRIB4NUSVARBPROC __glewVertexAttrib4NusvARB = NULL; -PFNGLVERTEXATTRIB4BVARBPROC __glewVertexAttrib4bvARB = NULL; -PFNGLVERTEXATTRIB4DARBPROC __glewVertexAttrib4dARB = NULL; -PFNGLVERTEXATTRIB4DVARBPROC __glewVertexAttrib4dvARB = NULL; -PFNGLVERTEXATTRIB4FARBPROC __glewVertexAttrib4fARB = NULL; -PFNGLVERTEXATTRIB4FVARBPROC __glewVertexAttrib4fvARB = NULL; -PFNGLVERTEXATTRIB4IVARBPROC __glewVertexAttrib4ivARB = NULL; -PFNGLVERTEXATTRIB4SARBPROC __glewVertexAttrib4sARB = NULL; -PFNGLVERTEXATTRIB4SVARBPROC __glewVertexAttrib4svARB = NULL; -PFNGLVERTEXATTRIB4UBVARBPROC __glewVertexAttrib4ubvARB = NULL; -PFNGLVERTEXATTRIB4UIVARBPROC __glewVertexAttrib4uivARB = NULL; -PFNGLVERTEXATTRIB4USVARBPROC __glewVertexAttrib4usvARB = NULL; -PFNGLVERTEXATTRIBPOINTERARBPROC __glewVertexAttribPointerARB = NULL; - -PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB = NULL; -PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB = NULL; -PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB = NULL; - -PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB = NULL; -PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB = NULL; -PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB = NULL; -PFNGLWINDOWPOS2FVARBPROC __glewWindowPos2fvARB = NULL; -PFNGLWINDOWPOS2IARBPROC __glewWindowPos2iARB = NULL; -PFNGLWINDOWPOS2IVARBPROC __glewWindowPos2ivARB = NULL; -PFNGLWINDOWPOS2SARBPROC __glewWindowPos2sARB = NULL; -PFNGLWINDOWPOS2SVARBPROC __glewWindowPos2svARB = NULL; -PFNGLWINDOWPOS3DARBPROC __glewWindowPos3dARB = NULL; -PFNGLWINDOWPOS3DVARBPROC __glewWindowPos3dvARB = NULL; -PFNGLWINDOWPOS3FARBPROC __glewWindowPos3fARB = NULL; -PFNGLWINDOWPOS3FVARBPROC __glewWindowPos3fvARB = NULL; -PFNGLWINDOWPOS3IARBPROC __glewWindowPos3iARB = NULL; -PFNGLWINDOWPOS3IVARBPROC __glewWindowPos3ivARB = NULL; -PFNGLWINDOWPOS3SARBPROC __glewWindowPos3sARB = NULL; -PFNGLWINDOWPOS3SVARBPROC __glewWindowPos3svARB = NULL; - -PFNGLDRAWBUFFERSATIPROC __glewDrawBuffersATI = NULL; - -PFNGLDRAWELEMENTARRAYATIPROC __glewDrawElementArrayATI = NULL; -PFNGLDRAWRANGEELEMENTARRAYATIPROC __glewDrawRangeElementArrayATI = NULL; -PFNGLELEMENTPOINTERATIPROC __glewElementPointerATI = NULL; - -PFNGLGETTEXBUMPPARAMETERFVATIPROC __glewGetTexBumpParameterfvATI = NULL; -PFNGLGETTEXBUMPPARAMETERIVATIPROC __glewGetTexBumpParameterivATI = NULL; -PFNGLTEXBUMPPARAMETERFVATIPROC __glewTexBumpParameterfvATI = NULL; -PFNGLTEXBUMPPARAMETERIVATIPROC __glewTexBumpParameterivATI = NULL; - -PFNGLALPHAFRAGMENTOP1ATIPROC __glewAlphaFragmentOp1ATI = NULL; -PFNGLALPHAFRAGMENTOP2ATIPROC __glewAlphaFragmentOp2ATI = NULL; -PFNGLALPHAFRAGMENTOP3ATIPROC __glewAlphaFragmentOp3ATI = NULL; -PFNGLBEGINFRAGMENTSHADERATIPROC __glewBeginFragmentShaderATI = NULL; -PFNGLBINDFRAGMENTSHADERATIPROC __glewBindFragmentShaderATI = NULL; -PFNGLCOLORFRAGMENTOP1ATIPROC __glewColorFragmentOp1ATI = NULL; -PFNGLCOLORFRAGMENTOP2ATIPROC __glewColorFragmentOp2ATI = NULL; -PFNGLCOLORFRAGMENTOP3ATIPROC __glewColorFragmentOp3ATI = NULL; -PFNGLDELETEFRAGMENTSHADERATIPROC __glewDeleteFragmentShaderATI = NULL; -PFNGLENDFRAGMENTSHADERATIPROC __glewEndFragmentShaderATI = NULL; -PFNGLGENFRAGMENTSHADERSATIPROC __glewGenFragmentShadersATI = NULL; -PFNGLPASSTEXCOORDATIPROC __glewPassTexCoordATI = NULL; -PFNGLSAMPLEMAPATIPROC __glewSampleMapATI = NULL; -PFNGLSETFRAGMENTSHADERCONSTANTATIPROC __glewSetFragmentShaderConstantATI = NULL; - -PFNGLMAPOBJECTBUFFERATIPROC __glewMapObjectBufferATI = NULL; -PFNGLUNMAPOBJECTBUFFERATIPROC __glewUnmapObjectBufferATI = NULL; - -PFNGLPNTRIANGLESFATIPROC __glPNTrianglewesfATI = NULL; -PFNGLPNTRIANGLESIATIPROC __glPNTrianglewesiATI = NULL; - -PFNGLSTENCILFUNCSEPARATEATIPROC __glewStencilFuncSeparateATI = NULL; -PFNGLSTENCILOPSEPARATEATIPROC __glewStencilOpSeparateATI = NULL; - -PFNGLARRAYOBJECTATIPROC __glewArrayObjectATI = NULL; -PFNGLFREEOBJECTBUFFERATIPROC __glewFreeObjectBufferATI = NULL; -PFNGLGETARRAYOBJECTFVATIPROC __glewGetArrayObjectfvATI = NULL; -PFNGLGETARRAYOBJECTIVATIPROC __glewGetArrayObjectivATI = NULL; -PFNGLGETOBJECTBUFFERFVATIPROC __glewGetObjectBufferfvATI = NULL; -PFNGLGETOBJECTBUFFERIVATIPROC __glewGetObjectBufferivATI = NULL; -PFNGLGETVARIANTARRAYOBJECTFVATIPROC __glewGetVariantArrayObjectfvATI = NULL; -PFNGLGETVARIANTARRAYOBJECTIVATIPROC __glewGetVariantArrayObjectivATI = NULL; -PFNGLISOBJECTBUFFERATIPROC __glewIsObjectBufferATI = NULL; -PFNGLNEWOBJECTBUFFERATIPROC __glewNewObjectBufferATI = NULL; -PFNGLUPDATEOBJECTBUFFERATIPROC __glewUpdateObjectBufferATI = NULL; -PFNGLVARIANTARRAYOBJECTATIPROC __glewVariantArrayObjectATI = NULL; - -PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC __glewGetVertexAttribArrayObjectfvATI = NULL; -PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC __glewGetVertexAttribArrayObjectivATI = NULL; -PFNGLVERTEXATTRIBARRAYOBJECTATIPROC __glewVertexAttribArrayObjectATI = NULL; - -PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC __glewClientActiveVertexStreamATI = NULL; -PFNGLNORMALSTREAM3BATIPROC __glewNormalStream3bATI = NULL; -PFNGLNORMALSTREAM3BVATIPROC __glewNormalStream3bvATI = NULL; -PFNGLNORMALSTREAM3DATIPROC __glewNormalStream3dATI = NULL; -PFNGLNORMALSTREAM3DVATIPROC __glewNormalStream3dvATI = NULL; -PFNGLNORMALSTREAM3FATIPROC __glewNormalStream3fATI = NULL; -PFNGLNORMALSTREAM3FVATIPROC __glewNormalStream3fvATI = NULL; -PFNGLNORMALSTREAM3IATIPROC __glewNormalStream3iATI = NULL; -PFNGLNORMALSTREAM3IVATIPROC __glewNormalStream3ivATI = NULL; -PFNGLNORMALSTREAM3SATIPROC __glewNormalStream3sATI = NULL; -PFNGLNORMALSTREAM3SVATIPROC __glewNormalStream3svATI = NULL; -PFNGLVERTEXBLENDENVFATIPROC __glewVertexBlendEnvfATI = NULL; -PFNGLVERTEXBLENDENVIATIPROC __glewVertexBlendEnviATI = NULL; -PFNGLVERTEXSTREAM2DATIPROC __glewVertexStream2dATI = NULL; -PFNGLVERTEXSTREAM2DVATIPROC __glewVertexStream2dvATI = NULL; -PFNGLVERTEXSTREAM2FATIPROC __glewVertexStream2fATI = NULL; -PFNGLVERTEXSTREAM2FVATIPROC __glewVertexStream2fvATI = NULL; -PFNGLVERTEXSTREAM2IATIPROC __glewVertexStream2iATI = NULL; -PFNGLVERTEXSTREAM2IVATIPROC __glewVertexStream2ivATI = NULL; -PFNGLVERTEXSTREAM2SATIPROC __glewVertexStream2sATI = NULL; -PFNGLVERTEXSTREAM2SVATIPROC __glewVertexStream2svATI = NULL; -PFNGLVERTEXSTREAM3DATIPROC __glewVertexStream3dATI = NULL; -PFNGLVERTEXSTREAM3DVATIPROC __glewVertexStream3dvATI = NULL; -PFNGLVERTEXSTREAM3FATIPROC __glewVertexStream3fATI = NULL; -PFNGLVERTEXSTREAM3FVATIPROC __glewVertexStream3fvATI = NULL; -PFNGLVERTEXSTREAM3IATIPROC __glewVertexStream3iATI = NULL; -PFNGLVERTEXSTREAM3IVATIPROC __glewVertexStream3ivATI = NULL; -PFNGLVERTEXSTREAM3SATIPROC __glewVertexStream3sATI = NULL; -PFNGLVERTEXSTREAM3SVATIPROC __glewVertexStream3svATI = NULL; -PFNGLVERTEXSTREAM4DATIPROC __glewVertexStream4dATI = NULL; -PFNGLVERTEXSTREAM4DVATIPROC __glewVertexStream4dvATI = NULL; -PFNGLVERTEXSTREAM4FATIPROC __glewVertexStream4fATI = NULL; -PFNGLVERTEXSTREAM4FVATIPROC __glewVertexStream4fvATI = NULL; -PFNGLVERTEXSTREAM4IATIPROC __glewVertexStream4iATI = NULL; -PFNGLVERTEXSTREAM4IVATIPROC __glewVertexStream4ivATI = NULL; -PFNGLVERTEXSTREAM4SATIPROC __glewVertexStream4sATI = NULL; -PFNGLVERTEXSTREAM4SVATIPROC __glewVertexStream4svATI = NULL; - -PFNGLGETUNIFORMBUFFERSIZEEXTPROC __glewGetUniformBufferSizeEXT = NULL; -PFNGLGETUNIFORMOFFSETEXTPROC __glewGetUniformOffsetEXT = NULL; -PFNGLUNIFORMBUFFEREXTPROC __glewUniformBufferEXT = NULL; - -PFNGLBLENDCOLOREXTPROC __glewBlendColorEXT = NULL; - -PFNGLBLENDEQUATIONSEPARATEEXTPROC __glewBlendEquationSeparateEXT = NULL; - -PFNGLBLENDFUNCSEPARATEEXTPROC __glewBlendFuncSeparateEXT = NULL; - -PFNGLBLENDEQUATIONEXTPROC __glewBlendEquationEXT = NULL; - -PFNGLCOLORSUBTABLEEXTPROC __glewColorSubTableEXT = NULL; -PFNGLCOPYCOLORSUBTABLEEXTPROC __glewCopyColorSubTableEXT = NULL; - -PFNGLLOCKARRAYSEXTPROC __glewLockArraysEXT = NULL; -PFNGLUNLOCKARRAYSEXTPROC __glewUnlockArraysEXT = NULL; - -PFNGLCONVOLUTIONFILTER1DEXTPROC __glewConvolutionFilter1DEXT = NULL; -PFNGLCONVOLUTIONFILTER2DEXTPROC __glewConvolutionFilter2DEXT = NULL; -PFNGLCONVOLUTIONPARAMETERFEXTPROC __glewConvolutionParameterfEXT = NULL; -PFNGLCONVOLUTIONPARAMETERFVEXTPROC __glewConvolutionParameterfvEXT = NULL; -PFNGLCONVOLUTIONPARAMETERIEXTPROC __glewConvolutionParameteriEXT = NULL; -PFNGLCONVOLUTIONPARAMETERIVEXTPROC __glewConvolutionParameterivEXT = NULL; -PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC __glewCopyConvolutionFilter1DEXT = NULL; -PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC __glewCopyConvolutionFilter2DEXT = NULL; -PFNGLGETCONVOLUTIONFILTEREXTPROC __glewGetConvolutionFilterEXT = NULL; -PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC __glewGetConvolutionParameterfvEXT = NULL; -PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC __glewGetConvolutionParameterivEXT = NULL; -PFNGLGETSEPARABLEFILTEREXTPROC __glewGetSeparableFilterEXT = NULL; -PFNGLSEPARABLEFILTER2DEXTPROC __glewSeparableFilter2DEXT = NULL; - -PFNGLBINORMALPOINTEREXTPROC __glewBinormalPointerEXT = NULL; -PFNGLTANGENTPOINTEREXTPROC __glewTangentPointerEXT = NULL; - -PFNGLCOPYTEXIMAGE1DEXTPROC __glewCopyTexImage1DEXT = NULL; -PFNGLCOPYTEXIMAGE2DEXTPROC __glewCopyTexImage2DEXT = NULL; -PFNGLCOPYTEXSUBIMAGE1DEXTPROC __glewCopyTexSubImage1DEXT = NULL; -PFNGLCOPYTEXSUBIMAGE2DEXTPROC __glewCopyTexSubImage2DEXT = NULL; -PFNGLCOPYTEXSUBIMAGE3DEXTPROC __glewCopyTexSubImage3DEXT = NULL; - -PFNGLCULLPARAMETERDVEXTPROC __glewCullParameterdvEXT = NULL; -PFNGLCULLPARAMETERFVEXTPROC __glewCullParameterfvEXT = NULL; - -PFNGLDEPTHBOUNDSEXTPROC __glewDepthBoundsEXT = NULL; - -PFNGLBINDMULTITEXTUREEXTPROC __glewBindMultiTextureEXT = NULL; -PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC __glewCheckNamedFramebufferStatusEXT = NULL; -PFNGLCLIENTATTRIBDEFAULTEXTPROC __glewClientAttribDefaultEXT = NULL; -PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC __glewCompressedMultiTexImage1DEXT = NULL; -PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC __glewCompressedMultiTexImage2DEXT = NULL; -PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC __glewCompressedMultiTexImage3DEXT = NULL; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC __glewCompressedMultiTexSubImage1DEXT = NULL; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC __glewCompressedMultiTexSubImage2DEXT = NULL; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC __glewCompressedMultiTexSubImage3DEXT = NULL; -PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC __glewCompressedTextureImage1DEXT = NULL; -PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC __glewCompressedTextureImage2DEXT = NULL; -PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC __glewCompressedTextureImage3DEXT = NULL; -PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC __glewCompressedTextureSubImage1DEXT = NULL; -PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC __glewCompressedTextureSubImage2DEXT = NULL; -PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC __glewCompressedTextureSubImage3DEXT = NULL; -PFNGLCOPYMULTITEXIMAGE1DEXTPROC __glewCopyMultiTexImage1DEXT = NULL; -PFNGLCOPYMULTITEXIMAGE2DEXTPROC __glewCopyMultiTexImage2DEXT = NULL; -PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC __glewCopyMultiTexSubImage1DEXT = NULL; -PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC __glewCopyMultiTexSubImage2DEXT = NULL; -PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC __glewCopyMultiTexSubImage3DEXT = NULL; -PFNGLCOPYTEXTUREIMAGE1DEXTPROC __glewCopyTextureImage1DEXT = NULL; -PFNGLCOPYTEXTUREIMAGE2DEXTPROC __glewCopyTextureImage2DEXT = NULL; -PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC __glewCopyTextureSubImage1DEXT = NULL; -PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC __glewCopyTextureSubImage2DEXT = NULL; -PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC __glewCopyTextureSubImage3DEXT = NULL; -PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC __glewDisableClientStateIndexedEXT = NULL; -PFNGLENABLECLIENTSTATEINDEXEDEXTPROC __glewEnableClientStateIndexedEXT = NULL; -PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC __glewFramebufferDrawBufferEXT = NULL; -PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC __glewFramebufferDrawBuffersEXT = NULL; -PFNGLFRAMEBUFFERREADBUFFEREXTPROC __glewFramebufferReadBufferEXT = NULL; -PFNGLGENERATEMULTITEXMIPMAPEXTPROC __glewGenerateMultiTexMipmapEXT = NULL; -PFNGLGENERATETEXTUREMIPMAPEXTPROC __glewGenerateTextureMipmapEXT = NULL; -PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC __glewGetCompressedMultiTexImageEXT = NULL; -PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC __glewGetCompressedTextureImageEXT = NULL; -PFNGLGETDOUBLEINDEXEDVEXTPROC __glewGetDoubleIndexedvEXT = NULL; -PFNGLGETFLOATINDEXEDVEXTPROC __glewGetFloatIndexedvEXT = NULL; -PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC __glewGetFramebufferParameterivEXT = NULL; -PFNGLGETMULTITEXENVFVEXTPROC __glewGetMultiTexEnvfvEXT = NULL; -PFNGLGETMULTITEXENVIVEXTPROC __glewGetMultiTexEnvivEXT = NULL; -PFNGLGETMULTITEXGENDVEXTPROC __glewGetMultiTexGendvEXT = NULL; -PFNGLGETMULTITEXGENFVEXTPROC __glewGetMultiTexGenfvEXT = NULL; -PFNGLGETMULTITEXGENIVEXTPROC __glewGetMultiTexGenivEXT = NULL; -PFNGLGETMULTITEXIMAGEEXTPROC __glewGetMultiTexImageEXT = NULL; -PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC __glewGetMultiTexLevelParameterfvEXT = NULL; -PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC __glewGetMultiTexLevelParameterivEXT = NULL; -PFNGLGETMULTITEXPARAMETERIIVEXTPROC __glewGetMultiTexParameterIivEXT = NULL; -PFNGLGETMULTITEXPARAMETERIUIVEXTPROC __glewGetMultiTexParameterIuivEXT = NULL; -PFNGLGETMULTITEXPARAMETERFVEXTPROC __glewGetMultiTexParameterfvEXT = NULL; -PFNGLGETMULTITEXPARAMETERIVEXTPROC __glewGetMultiTexParameterivEXT = NULL; -PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC __glewGetNamedBufferParameterivEXT = NULL; -PFNGLGETNAMEDBUFFERPOINTERVEXTPROC __glewGetNamedBufferPointervEXT = NULL; -PFNGLGETNAMEDBUFFERSUBDATAEXTPROC __glewGetNamedBufferSubDataEXT = NULL; -PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetNamedFramebufferAttachmentParameterivEXT = NULL; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC __glewGetNamedProgramLocalParameterIivEXT = NULL; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC __glewGetNamedProgramLocalParameterIuivEXT = NULL; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC __glewGetNamedProgramLocalParameterdvEXT = NULL; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC __glewGetNamedProgramLocalParameterfvEXT = NULL; -PFNGLGETNAMEDPROGRAMSTRINGEXTPROC __glewGetNamedProgramStringEXT = NULL; -PFNGLGETNAMEDPROGRAMIVEXTPROC __glewGetNamedProgramivEXT = NULL; -PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC __glewGetNamedRenderbufferParameterivEXT = NULL; -PFNGLGETPOINTERINDEXEDVEXTPROC __glewGetPointerIndexedvEXT = NULL; -PFNGLGETTEXTUREIMAGEEXTPROC __glewGetTextureImageEXT = NULL; -PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC __glewGetTextureLevelParameterfvEXT = NULL; -PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC __glewGetTextureLevelParameterivEXT = NULL; -PFNGLGETTEXTUREPARAMETERIIVEXTPROC __glewGetTextureParameterIivEXT = NULL; -PFNGLGETTEXTUREPARAMETERIUIVEXTPROC __glewGetTextureParameterIuivEXT = NULL; -PFNGLGETTEXTUREPARAMETERFVEXTPROC __glewGetTextureParameterfvEXT = NULL; -PFNGLGETTEXTUREPARAMETERIVEXTPROC __glewGetTextureParameterivEXT = NULL; -PFNGLMAPNAMEDBUFFEREXTPROC __glewMapNamedBufferEXT = NULL; -PFNGLMATRIXFRUSTUMEXTPROC __glewMatrixFrustumEXT = NULL; -PFNGLMATRIXLOADIDENTITYEXTPROC __glewMatrixLoadIdentityEXT = NULL; -PFNGLMATRIXLOADTRANSPOSEDEXTPROC __glewMatrixLoadTransposedEXT = NULL; -PFNGLMATRIXLOADTRANSPOSEFEXTPROC __glewMatrixLoadTransposefEXT = NULL; -PFNGLMATRIXLOADDEXTPROC __glewMatrixLoaddEXT = NULL; -PFNGLMATRIXLOADFEXTPROC __glewMatrixLoadfEXT = NULL; -PFNGLMATRIXMULTTRANSPOSEDEXTPROC __glewMatrixMultTransposedEXT = NULL; -PFNGLMATRIXMULTTRANSPOSEFEXTPROC __glewMatrixMultTransposefEXT = NULL; -PFNGLMATRIXMULTDEXTPROC __glewMatrixMultdEXT = NULL; -PFNGLMATRIXMULTFEXTPROC __glewMatrixMultfEXT = NULL; -PFNGLMATRIXORTHOEXTPROC __glewMatrixOrthoEXT = NULL; -PFNGLMATRIXPOPEXTPROC __glewMatrixPopEXT = NULL; -PFNGLMATRIXPUSHEXTPROC __glewMatrixPushEXT = NULL; -PFNGLMATRIXROTATEDEXTPROC __glewMatrixRotatedEXT = NULL; -PFNGLMATRIXROTATEFEXTPROC __glewMatrixRotatefEXT = NULL; -PFNGLMATRIXSCALEDEXTPROC __glewMatrixScaledEXT = NULL; -PFNGLMATRIXSCALEFEXTPROC __glewMatrixScalefEXT = NULL; -PFNGLMATRIXTRANSLATEDEXTPROC __glewMatrixTranslatedEXT = NULL; -PFNGLMATRIXTRANSLATEFEXTPROC __glewMatrixTranslatefEXT = NULL; -PFNGLMULTITEXBUFFEREXTPROC __glewMultiTexBufferEXT = NULL; -PFNGLMULTITEXCOORDPOINTEREXTPROC __glewMultiTexCoordPointerEXT = NULL; -PFNGLMULTITEXENVFEXTPROC __glewMultiTexEnvfEXT = NULL; -PFNGLMULTITEXENVFVEXTPROC __glewMultiTexEnvfvEXT = NULL; -PFNGLMULTITEXENVIEXTPROC __glewMultiTexEnviEXT = NULL; -PFNGLMULTITEXENVIVEXTPROC __glewMultiTexEnvivEXT = NULL; -PFNGLMULTITEXGENDEXTPROC __glewMultiTexGendEXT = NULL; -PFNGLMULTITEXGENDVEXTPROC __glewMultiTexGendvEXT = NULL; -PFNGLMULTITEXGENFEXTPROC __glewMultiTexGenfEXT = NULL; -PFNGLMULTITEXGENFVEXTPROC __glewMultiTexGenfvEXT = NULL; -PFNGLMULTITEXGENIEXTPROC __glewMultiTexGeniEXT = NULL; -PFNGLMULTITEXGENIVEXTPROC __glewMultiTexGenivEXT = NULL; -PFNGLMULTITEXIMAGE1DEXTPROC __glewMultiTexImage1DEXT = NULL; -PFNGLMULTITEXIMAGE2DEXTPROC __glewMultiTexImage2DEXT = NULL; -PFNGLMULTITEXIMAGE3DEXTPROC __glewMultiTexImage3DEXT = NULL; -PFNGLMULTITEXPARAMETERIIVEXTPROC __glewMultiTexParameterIivEXT = NULL; -PFNGLMULTITEXPARAMETERIUIVEXTPROC __glewMultiTexParameterIuivEXT = NULL; -PFNGLMULTITEXPARAMETERFEXTPROC __glewMultiTexParameterfEXT = NULL; -PFNGLMULTITEXPARAMETERFVEXTPROC __glewMultiTexParameterfvEXT = NULL; -PFNGLMULTITEXPARAMETERIEXTPROC __glewMultiTexParameteriEXT = NULL; -PFNGLMULTITEXPARAMETERIVEXTPROC __glewMultiTexParameterivEXT = NULL; -PFNGLMULTITEXRENDERBUFFEREXTPROC __glewMultiTexRenderbufferEXT = NULL; -PFNGLMULTITEXSUBIMAGE1DEXTPROC __glewMultiTexSubImage1DEXT = NULL; -PFNGLMULTITEXSUBIMAGE2DEXTPROC __glewMultiTexSubImage2DEXT = NULL; -PFNGLMULTITEXSUBIMAGE3DEXTPROC __glewMultiTexSubImage3DEXT = NULL; -PFNGLNAMEDBUFFERDATAEXTPROC __glewNamedBufferDataEXT = NULL; -PFNGLNAMEDBUFFERSUBDATAEXTPROC __glewNamedBufferSubDataEXT = NULL; -PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC __glewNamedFramebufferRenderbufferEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC __glewNamedFramebufferTexture1DEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC __glewNamedFramebufferTexture2DEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC __glewNamedFramebufferTexture3DEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC __glewNamedFramebufferTextureEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC __glewNamedFramebufferTextureFaceEXT = NULL; -PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC __glewNamedFramebufferTextureLayerEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC __glewNamedProgramLocalParameter4dEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC __glewNamedProgramLocalParameter4dvEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC __glewNamedProgramLocalParameter4fEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC __glewNamedProgramLocalParameter4fvEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC __glewNamedProgramLocalParameterI4iEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC __glewNamedProgramLocalParameterI4ivEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC __glewNamedProgramLocalParameterI4uiEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC __glewNamedProgramLocalParameterI4uivEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC __glewNamedProgramLocalParameters4fvEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC __glewNamedProgramLocalParametersI4ivEXT = NULL; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC __glewNamedProgramLocalParametersI4uivEXT = NULL; -PFNGLNAMEDPROGRAMSTRINGEXTPROC __glewNamedProgramStringEXT = NULL; -PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC __glewNamedRenderbufferStorageEXT = NULL; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC __glewNamedRenderbufferStorageMultisampleCoverageEXT = NULL; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewNamedRenderbufferStorageMultisampleEXT = NULL; -PFNGLPROGRAMUNIFORM1FEXTPROC __glewProgramUniform1fEXT = NULL; -PFNGLPROGRAMUNIFORM1FVEXTPROC __glewProgramUniform1fvEXT = NULL; -PFNGLPROGRAMUNIFORM1IEXTPROC __glewProgramUniform1iEXT = NULL; -PFNGLPROGRAMUNIFORM1IVEXTPROC __glewProgramUniform1ivEXT = NULL; -PFNGLPROGRAMUNIFORM1UIEXTPROC __glewProgramUniform1uiEXT = NULL; -PFNGLPROGRAMUNIFORM1UIVEXTPROC __glewProgramUniform1uivEXT = NULL; -PFNGLPROGRAMUNIFORM2FEXTPROC __glewProgramUniform2fEXT = NULL; -PFNGLPROGRAMUNIFORM2FVEXTPROC __glewProgramUniform2fvEXT = NULL; -PFNGLPROGRAMUNIFORM2IEXTPROC __glewProgramUniform2iEXT = NULL; -PFNGLPROGRAMUNIFORM2IVEXTPROC __glewProgramUniform2ivEXT = NULL; -PFNGLPROGRAMUNIFORM2UIEXTPROC __glewProgramUniform2uiEXT = NULL; -PFNGLPROGRAMUNIFORM2UIVEXTPROC __glewProgramUniform2uivEXT = NULL; -PFNGLPROGRAMUNIFORM3FEXTPROC __glewProgramUniform3fEXT = NULL; -PFNGLPROGRAMUNIFORM3FVEXTPROC __glewProgramUniform3fvEXT = NULL; -PFNGLPROGRAMUNIFORM3IEXTPROC __glewProgramUniform3iEXT = NULL; -PFNGLPROGRAMUNIFORM3IVEXTPROC __glewProgramUniform3ivEXT = NULL; -PFNGLPROGRAMUNIFORM3UIEXTPROC __glewProgramUniform3uiEXT = NULL; -PFNGLPROGRAMUNIFORM3UIVEXTPROC __glewProgramUniform3uivEXT = NULL; -PFNGLPROGRAMUNIFORM4FEXTPROC __glewProgramUniform4fEXT = NULL; -PFNGLPROGRAMUNIFORM4FVEXTPROC __glewProgramUniform4fvEXT = NULL; -PFNGLPROGRAMUNIFORM4IEXTPROC __glewProgramUniform4iEXT = NULL; -PFNGLPROGRAMUNIFORM4IVEXTPROC __glewProgramUniform4ivEXT = NULL; -PFNGLPROGRAMUNIFORM4UIEXTPROC __glewProgramUniform4uiEXT = NULL; -PFNGLPROGRAMUNIFORM4UIVEXTPROC __glewProgramUniform4uivEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC __glewProgramUniformMatrix2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC __glewProgramUniformMatrix2x3fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC __glewProgramUniformMatrix2x4fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC __glewProgramUniformMatrix3fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC __glewProgramUniformMatrix3x2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC __glewProgramUniformMatrix3x4fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC __glewProgramUniformMatrix4fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC __glewProgramUniformMatrix4x2fvEXT = NULL; -PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC __glewProgramUniformMatrix4x3fvEXT = NULL; -PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC __glewPushClientAttribDefaultEXT = NULL; -PFNGLTEXTUREBUFFEREXTPROC __glewTextureBufferEXT = NULL; -PFNGLTEXTUREIMAGE1DEXTPROC __glewTextureImage1DEXT = NULL; -PFNGLTEXTUREIMAGE2DEXTPROC __glewTextureImage2DEXT = NULL; -PFNGLTEXTUREIMAGE3DEXTPROC __glewTextureImage3DEXT = NULL; -PFNGLTEXTUREPARAMETERIIVEXTPROC __glewTextureParameterIivEXT = NULL; -PFNGLTEXTUREPARAMETERIUIVEXTPROC __glewTextureParameterIuivEXT = NULL; -PFNGLTEXTUREPARAMETERFEXTPROC __glewTextureParameterfEXT = NULL; -PFNGLTEXTUREPARAMETERFVEXTPROC __glewTextureParameterfvEXT = NULL; -PFNGLTEXTUREPARAMETERIEXTPROC __glewTextureParameteriEXT = NULL; -PFNGLTEXTUREPARAMETERIVEXTPROC __glewTextureParameterivEXT = NULL; -PFNGLTEXTURERENDERBUFFEREXTPROC __glewTextureRenderbufferEXT = NULL; -PFNGLTEXTURESUBIMAGE1DEXTPROC __glewTextureSubImage1DEXT = NULL; -PFNGLTEXTURESUBIMAGE2DEXTPROC __glewTextureSubImage2DEXT = NULL; -PFNGLTEXTURESUBIMAGE3DEXTPROC __glewTextureSubImage3DEXT = NULL; -PFNGLUNMAPNAMEDBUFFEREXTPROC __glewUnmapNamedBufferEXT = NULL; - -PFNGLCOLORMASKINDEXEDEXTPROC __glewColorMaskIndexedEXT = NULL; -PFNGLDISABLEINDEXEDEXTPROC __glewDisableIndexedEXT = NULL; -PFNGLENABLEINDEXEDEXTPROC __glewEnableIndexedEXT = NULL; -PFNGLGETBOOLEANINDEXEDVEXTPROC __glewGetBooleanIndexedvEXT = NULL; -PFNGLGETINTEGERINDEXEDVEXTPROC __glewGetIntegerIndexedvEXT = NULL; -PFNGLISENABLEDINDEXEDEXTPROC __glewIsEnabledIndexedEXT = NULL; - -PFNGLDRAWARRAYSINSTANCEDEXTPROC __glewDrawArraysInstancedEXT = NULL; -PFNGLDRAWELEMENTSINSTANCEDEXTPROC __glewDrawElementsInstancedEXT = NULL; - -PFNGLDRAWRANGEELEMENTSEXTPROC __glewDrawRangeElementsEXT = NULL; - -PFNGLFOGCOORDPOINTEREXTPROC __glewFogCoordPointerEXT = NULL; -PFNGLFOGCOORDDEXTPROC __glewFogCoorddEXT = NULL; -PFNGLFOGCOORDDVEXTPROC __glewFogCoorddvEXT = NULL; -PFNGLFOGCOORDFEXTPROC __glewFogCoordfEXT = NULL; -PFNGLFOGCOORDFVEXTPROC __glewFogCoordfvEXT = NULL; - -PFNGLFRAGMENTCOLORMATERIALEXTPROC __glewFragmentColorMaterialEXT = NULL; -PFNGLFRAGMENTLIGHTMODELFEXTPROC __glewFragmentLightModelfEXT = NULL; -PFNGLFRAGMENTLIGHTMODELFVEXTPROC __glewFragmentLightModelfvEXT = NULL; -PFNGLFRAGMENTLIGHTMODELIEXTPROC __glewFragmentLightModeliEXT = NULL; -PFNGLFRAGMENTLIGHTMODELIVEXTPROC __glewFragmentLightModelivEXT = NULL; -PFNGLFRAGMENTLIGHTFEXTPROC __glewFragmentLightfEXT = NULL; -PFNGLFRAGMENTLIGHTFVEXTPROC __glewFragmentLightfvEXT = NULL; -PFNGLFRAGMENTLIGHTIEXTPROC __glewFragmentLightiEXT = NULL; -PFNGLFRAGMENTLIGHTIVEXTPROC __glewFragmentLightivEXT = NULL; -PFNGLFRAGMENTMATERIALFEXTPROC __glewFragmentMaterialfEXT = NULL; -PFNGLFRAGMENTMATERIALFVEXTPROC __glewFragmentMaterialfvEXT = NULL; -PFNGLFRAGMENTMATERIALIEXTPROC __glewFragmentMaterialiEXT = NULL; -PFNGLFRAGMENTMATERIALIVEXTPROC __glewFragmentMaterialivEXT = NULL; -PFNGLGETFRAGMENTLIGHTFVEXTPROC __glewGetFragmentLightfvEXT = NULL; -PFNGLGETFRAGMENTLIGHTIVEXTPROC __glewGetFragmentLightivEXT = NULL; -PFNGLGETFRAGMENTMATERIALFVEXTPROC __glewGetFragmentMaterialfvEXT = NULL; -PFNGLGETFRAGMENTMATERIALIVEXTPROC __glewGetFragmentMaterialivEXT = NULL; -PFNGLLIGHTENVIEXTPROC __glewLightEnviEXT = NULL; - -PFNGLBLITFRAMEBUFFEREXTPROC __glewBlitFramebufferEXT = NULL; - -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC __glewRenderbufferStorageMultisampleEXT = NULL; - -PFNGLBINDFRAMEBUFFEREXTPROC __glewBindFramebufferEXT = NULL; -PFNGLBINDRENDERBUFFEREXTPROC __glewBindRenderbufferEXT = NULL; -PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC __glewCheckFramebufferStatusEXT = NULL; -PFNGLDELETEFRAMEBUFFERSEXTPROC __glewDeleteFramebuffersEXT = NULL; -PFNGLDELETERENDERBUFFERSEXTPROC __glewDeleteRenderbuffersEXT = NULL; -PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC __glewFramebufferRenderbufferEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE1DEXTPROC __glewFramebufferTexture1DEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE2DEXTPROC __glewFramebufferTexture2DEXT = NULL; -PFNGLFRAMEBUFFERTEXTURE3DEXTPROC __glewFramebufferTexture3DEXT = NULL; -PFNGLGENFRAMEBUFFERSEXTPROC __glewGenFramebuffersEXT = NULL; -PFNGLGENRENDERBUFFERSEXTPROC __glewGenRenderbuffersEXT = NULL; -PFNGLGENERATEMIPMAPEXTPROC __glewGenerateMipmapEXT = NULL; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC __glewGetFramebufferAttachmentParameterivEXT = NULL; -PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC __glewGetRenderbufferParameterivEXT = NULL; -PFNGLISFRAMEBUFFEREXTPROC __glewIsFramebufferEXT = NULL; -PFNGLISRENDERBUFFEREXTPROC __glewIsRenderbufferEXT = NULL; -PFNGLRENDERBUFFERSTORAGEEXTPROC __glewRenderbufferStorageEXT = NULL; - -PFNGLFRAMEBUFFERTEXTUREEXTPROC __glewFramebufferTextureEXT = NULL; -PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC __glewFramebufferTextureFaceEXT = NULL; -PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC __glewFramebufferTextureLayerEXT = NULL; -PFNGLPROGRAMPARAMETERIEXTPROC __glewProgramParameteriEXT = NULL; - -PFNGLPROGRAMENVPARAMETERS4FVEXTPROC __glewProgramEnvParameters4fvEXT = NULL; -PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC __glewProgramLocalParameters4fvEXT = NULL; - -PFNGLBINDFRAGDATALOCATIONEXTPROC __glewBindFragDataLocationEXT = NULL; -PFNGLGETFRAGDATALOCATIONEXTPROC __glewGetFragDataLocationEXT = NULL; -PFNGLGETUNIFORMUIVEXTPROC __glewGetUniformuivEXT = NULL; -PFNGLGETVERTEXATTRIBIIVEXTPROC __glewGetVertexAttribIivEXT = NULL; -PFNGLGETVERTEXATTRIBIUIVEXTPROC __glewGetVertexAttribIuivEXT = NULL; -PFNGLUNIFORM1UIEXTPROC __glewUniform1uiEXT = NULL; -PFNGLUNIFORM1UIVEXTPROC __glewUniform1uivEXT = NULL; -PFNGLUNIFORM2UIEXTPROC __glewUniform2uiEXT = NULL; -PFNGLUNIFORM2UIVEXTPROC __glewUniform2uivEXT = NULL; -PFNGLUNIFORM3UIEXTPROC __glewUniform3uiEXT = NULL; -PFNGLUNIFORM3UIVEXTPROC __glewUniform3uivEXT = NULL; -PFNGLUNIFORM4UIEXTPROC __glewUniform4uiEXT = NULL; -PFNGLUNIFORM4UIVEXTPROC __glewUniform4uivEXT = NULL; -PFNGLVERTEXATTRIBI1IEXTPROC __glewVertexAttribI1iEXT = NULL; -PFNGLVERTEXATTRIBI1IVEXTPROC __glewVertexAttribI1ivEXT = NULL; -PFNGLVERTEXATTRIBI1UIEXTPROC __glewVertexAttribI1uiEXT = NULL; -PFNGLVERTEXATTRIBI1UIVEXTPROC __glewVertexAttribI1uivEXT = NULL; -PFNGLVERTEXATTRIBI2IEXTPROC __glewVertexAttribI2iEXT = NULL; -PFNGLVERTEXATTRIBI2IVEXTPROC __glewVertexAttribI2ivEXT = NULL; -PFNGLVERTEXATTRIBI2UIEXTPROC __glewVertexAttribI2uiEXT = NULL; -PFNGLVERTEXATTRIBI2UIVEXTPROC __glewVertexAttribI2uivEXT = NULL; -PFNGLVERTEXATTRIBI3IEXTPROC __glewVertexAttribI3iEXT = NULL; -PFNGLVERTEXATTRIBI3IVEXTPROC __glewVertexAttribI3ivEXT = NULL; -PFNGLVERTEXATTRIBI3UIEXTPROC __glewVertexAttribI3uiEXT = NULL; -PFNGLVERTEXATTRIBI3UIVEXTPROC __glewVertexAttribI3uivEXT = NULL; -PFNGLVERTEXATTRIBI4BVEXTPROC __glewVertexAttribI4bvEXT = NULL; -PFNGLVERTEXATTRIBI4IEXTPROC __glewVertexAttribI4iEXT = NULL; -PFNGLVERTEXATTRIBI4IVEXTPROC __glewVertexAttribI4ivEXT = NULL; -PFNGLVERTEXATTRIBI4SVEXTPROC __glewVertexAttribI4svEXT = NULL; -PFNGLVERTEXATTRIBI4UBVEXTPROC __glewVertexAttribI4ubvEXT = NULL; -PFNGLVERTEXATTRIBI4UIEXTPROC __glewVertexAttribI4uiEXT = NULL; -PFNGLVERTEXATTRIBI4UIVEXTPROC __glewVertexAttribI4uivEXT = NULL; -PFNGLVERTEXATTRIBI4USVEXTPROC __glewVertexAttribI4usvEXT = NULL; -PFNGLVERTEXATTRIBIPOINTEREXTPROC __glewVertexAttribIPointerEXT = NULL; - -PFNGLGETHISTOGRAMEXTPROC __glewGetHistogramEXT = NULL; -PFNGLGETHISTOGRAMPARAMETERFVEXTPROC __glewGetHistogramParameterfvEXT = NULL; -PFNGLGETHISTOGRAMPARAMETERIVEXTPROC __glewGetHistogramParameterivEXT = NULL; -PFNGLGETMINMAXEXTPROC __glewGetMinmaxEXT = NULL; -PFNGLGETMINMAXPARAMETERFVEXTPROC __glewGetMinmaxParameterfvEXT = NULL; -PFNGLGETMINMAXPARAMETERIVEXTPROC __glewGetMinmaxParameterivEXT = NULL; -PFNGLHISTOGRAMEXTPROC __glewHistogramEXT = NULL; -PFNGLMINMAXEXTPROC __glewMinmaxEXT = NULL; -PFNGLRESETHISTOGRAMEXTPROC __glewResetHistogramEXT = NULL; -PFNGLRESETMINMAXEXTPROC __glewResetMinmaxEXT = NULL; - -PFNGLINDEXFUNCEXTPROC __glewIndexFuncEXT = NULL; - -PFNGLINDEXMATERIALEXTPROC __glewIndexMaterialEXT = NULL; - -PFNGLAPPLYTEXTUREEXTPROC __glewApplyTextureEXT = NULL; -PFNGLTEXTURELIGHTEXTPROC __glewTextureLightEXT = NULL; -PFNGLTEXTUREMATERIALEXTPROC __glewTextureMaterialEXT = NULL; - -PFNGLMULTIDRAWARRAYSEXTPROC __glewMultiDrawArraysEXT = NULL; -PFNGLMULTIDRAWELEMENTSEXTPROC __glewMultiDrawElementsEXT = NULL; - -PFNGLSAMPLEMASKEXTPROC __glewSampleMaskEXT = NULL; -PFNGLSAMPLEPATTERNEXTPROC __glewSamplePatternEXT = NULL; - -PFNGLCOLORTABLEEXTPROC __glewColorTableEXT = NULL; -PFNGLGETCOLORTABLEEXTPROC __glewGetColorTableEXT = NULL; -PFNGLGETCOLORTABLEPARAMETERFVEXTPROC __glewGetColorTableParameterfvEXT = NULL; -PFNGLGETCOLORTABLEPARAMETERIVEXTPROC __glewGetColorTableParameterivEXT = NULL; - -PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC __glewGetPixelTransformParameterfvEXT = NULL; -PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC __glewGetPixelTransformParameterivEXT = NULL; -PFNGLPIXELTRANSFORMPARAMETERFEXTPROC __glewPixelTransformParameterfEXT = NULL; -PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC __glewPixelTransformParameterfvEXT = NULL; -PFNGLPIXELTRANSFORMPARAMETERIEXTPROC __glewPixelTransformParameteriEXT = NULL; -PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC __glewPixelTransformParameterivEXT = NULL; - -PFNGLPOINTPARAMETERFEXTPROC __glewPointParameterfEXT = NULL; -PFNGLPOINTPARAMETERFVEXTPROC __glewPointParameterfvEXT = NULL; - -PFNGLPOLYGONOFFSETEXTPROC __glewPolygonOffsetEXT = NULL; - -PFNGLBEGINSCENEEXTPROC __glewBeginSceneEXT = NULL; -PFNGLENDSCENEEXTPROC __glewEndSceneEXT = NULL; - -PFNGLSECONDARYCOLOR3BEXTPROC __glewSecondaryColor3bEXT = NULL; -PFNGLSECONDARYCOLOR3BVEXTPROC __glewSecondaryColor3bvEXT = NULL; -PFNGLSECONDARYCOLOR3DEXTPROC __glewSecondaryColor3dEXT = NULL; -PFNGLSECONDARYCOLOR3DVEXTPROC __glewSecondaryColor3dvEXT = NULL; -PFNGLSECONDARYCOLOR3FEXTPROC __glewSecondaryColor3fEXT = NULL; -PFNGLSECONDARYCOLOR3FVEXTPROC __glewSecondaryColor3fvEXT = NULL; -PFNGLSECONDARYCOLOR3IEXTPROC __glewSecondaryColor3iEXT = NULL; -PFNGLSECONDARYCOLOR3IVEXTPROC __glewSecondaryColor3ivEXT = NULL; -PFNGLSECONDARYCOLOR3SEXTPROC __glewSecondaryColor3sEXT = NULL; -PFNGLSECONDARYCOLOR3SVEXTPROC __glewSecondaryColor3svEXT = NULL; -PFNGLSECONDARYCOLOR3UBEXTPROC __glewSecondaryColor3ubEXT = NULL; -PFNGLSECONDARYCOLOR3UBVEXTPROC __glewSecondaryColor3ubvEXT = NULL; -PFNGLSECONDARYCOLOR3UIEXTPROC __glewSecondaryColor3uiEXT = NULL; -PFNGLSECONDARYCOLOR3UIVEXTPROC __glewSecondaryColor3uivEXT = NULL; -PFNGLSECONDARYCOLOR3USEXTPROC __glewSecondaryColor3usEXT = NULL; -PFNGLSECONDARYCOLOR3USVEXTPROC __glewSecondaryColor3usvEXT = NULL; -PFNGLSECONDARYCOLORPOINTEREXTPROC __glewSecondaryColorPointerEXT = NULL; - -PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT = NULL; - -PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT = NULL; -PFNGLTEXSUBIMAGE2DEXTPROC __glewTexSubImage2DEXT = NULL; -PFNGLTEXSUBIMAGE3DEXTPROC __glewTexSubImage3DEXT = NULL; - -PFNGLTEXIMAGE3DEXTPROC __glewTexImage3DEXT = NULL; - -PFNGLTEXBUFFEREXTPROC __glewTexBufferEXT = NULL; - -PFNGLCLEARCOLORIIEXTPROC __glewClearColorIiEXT = NULL; -PFNGLCLEARCOLORIUIEXTPROC __glewClearColorIuiEXT = NULL; -PFNGLGETTEXPARAMETERIIVEXTPROC __glewGetTexParameterIivEXT = NULL; -PFNGLGETTEXPARAMETERIUIVEXTPROC __glewGetTexParameterIuivEXT = NULL; -PFNGLTEXPARAMETERIIVEXTPROC __glewTexParameterIivEXT = NULL; -PFNGLTEXPARAMETERIUIVEXTPROC __glewTexParameterIuivEXT = NULL; - -PFNGLARETEXTURESRESIDENTEXTPROC __glewAreTexturesResidentEXT = NULL; -PFNGLBINDTEXTUREEXTPROC __glewBindTextureEXT = NULL; -PFNGLDELETETEXTURESEXTPROC __glewDeleteTexturesEXT = NULL; -PFNGLGENTEXTURESEXTPROC __glewGenTexturesEXT = NULL; -PFNGLISTEXTUREEXTPROC __glewIsTextureEXT = NULL; -PFNGLPRIORITIZETEXTURESEXTPROC __glewPrioritizeTexturesEXT = NULL; - -PFNGLTEXTURENORMALEXTPROC __glewTextureNormalEXT = NULL; - -PFNGLGETQUERYOBJECTI64VEXTPROC __glewGetQueryObjecti64vEXT = NULL; -PFNGLGETQUERYOBJECTUI64VEXTPROC __glewGetQueryObjectui64vEXT = NULL; - -PFNGLBEGINTRANSFORMFEEDBACKEXTPROC __glewBeginTransformFeedbackEXT = NULL; -PFNGLBINDBUFFERBASEEXTPROC __glewBindBufferBaseEXT = NULL; -PFNGLBINDBUFFEROFFSETEXTPROC __glewBindBufferOffsetEXT = NULL; -PFNGLBINDBUFFERRANGEEXTPROC __glewBindBufferRangeEXT = NULL; -PFNGLENDTRANSFORMFEEDBACKEXTPROC __glewEndTransformFeedbackEXT = NULL; -PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC __glewGetTransformFeedbackVaryingEXT = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC __glewTransformFeedbackVaryingsEXT = NULL; - -PFNGLARRAYELEMENTEXTPROC __glewArrayElementEXT = NULL; -PFNGLCOLORPOINTEREXTPROC __glewColorPointerEXT = NULL; -PFNGLDRAWARRAYSEXTPROC __glewDrawArraysEXT = NULL; -PFNGLEDGEFLAGPOINTEREXTPROC __glewEdgeFlagPointerEXT = NULL; -PFNGLGETPOINTERVEXTPROC __glewGetPointervEXT = NULL; -PFNGLINDEXPOINTEREXTPROC __glewIndexPointerEXT = NULL; -PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT = NULL; -PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT = NULL; -PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT = NULL; - -PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT = NULL; -PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT = NULL; -PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT = NULL; -PFNGLBINDPARAMETEREXTPROC __glewBindParameterEXT = NULL; -PFNGLBINDTEXGENPARAMETEREXTPROC __glewBindTexGenParameterEXT = NULL; -PFNGLBINDTEXTUREUNITPARAMETEREXTPROC __glewBindTextureUnitParameterEXT = NULL; -PFNGLBINDVERTEXSHADEREXTPROC __glewBindVertexShaderEXT = NULL; -PFNGLDELETEVERTEXSHADEREXTPROC __glewDeleteVertexShaderEXT = NULL; -PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC __glewDisableVariantClientStateEXT = NULL; -PFNGLENABLEVARIANTCLIENTSTATEEXTPROC __glewEnableVariantClientStateEXT = NULL; -PFNGLENDVERTEXSHADEREXTPROC __glewEndVertexShaderEXT = NULL; -PFNGLEXTRACTCOMPONENTEXTPROC __glewExtractComponentEXT = NULL; -PFNGLGENSYMBOLSEXTPROC __glewGenSymbolsEXT = NULL; -PFNGLGENVERTEXSHADERSEXTPROC __glewGenVertexShadersEXT = NULL; -PFNGLGETINVARIANTBOOLEANVEXTPROC __glewGetInvariantBooleanvEXT = NULL; -PFNGLGETINVARIANTFLOATVEXTPROC __glewGetInvariantFloatvEXT = NULL; -PFNGLGETINVARIANTINTEGERVEXTPROC __glewGetInvariantIntegervEXT = NULL; -PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC __glewGetLocalConstantBooleanvEXT = NULL; -PFNGLGETLOCALCONSTANTFLOATVEXTPROC __glewGetLocalConstantFloatvEXT = NULL; -PFNGLGETLOCALCONSTANTINTEGERVEXTPROC __glewGetLocalConstantIntegervEXT = NULL; -PFNGLGETVARIANTBOOLEANVEXTPROC __glewGetVariantBooleanvEXT = NULL; -PFNGLGETVARIANTFLOATVEXTPROC __glewGetVariantFloatvEXT = NULL; -PFNGLGETVARIANTINTEGERVEXTPROC __glewGetVariantIntegervEXT = NULL; -PFNGLGETVARIANTPOINTERVEXTPROC __glewGetVariantPointervEXT = NULL; -PFNGLINSERTCOMPONENTEXTPROC __glewInsertComponentEXT = NULL; -PFNGLISVARIANTENABLEDEXTPROC __glewIsVariantEnabledEXT = NULL; -PFNGLSETINVARIANTEXTPROC __glewSetInvariantEXT = NULL; -PFNGLSETLOCALCONSTANTEXTPROC __glewSetLocalConstantEXT = NULL; -PFNGLSHADEROP1EXTPROC __glewShaderOp1EXT = NULL; -PFNGLSHADEROP2EXTPROC __glewShaderOp2EXT = NULL; -PFNGLSHADEROP3EXTPROC __glewShaderOp3EXT = NULL; -PFNGLSWIZZLEEXTPROC __glewSwizzleEXT = NULL; -PFNGLVARIANTPOINTEREXTPROC __glewVariantPointerEXT = NULL; -PFNGLVARIANTBVEXTPROC __glewVariantbvEXT = NULL; -PFNGLVARIANTDVEXTPROC __glewVariantdvEXT = NULL; -PFNGLVARIANTFVEXTPROC __glewVariantfvEXT = NULL; -PFNGLVARIANTIVEXTPROC __glewVariantivEXT = NULL; -PFNGLVARIANTSVEXTPROC __glewVariantsvEXT = NULL; -PFNGLVARIANTUBVEXTPROC __glewVariantubvEXT = NULL; -PFNGLVARIANTUIVEXTPROC __glewVariantuivEXT = NULL; -PFNGLVARIANTUSVEXTPROC __glewVariantusvEXT = NULL; -PFNGLWRITEMASKEXTPROC __glewWriteMaskEXT = NULL; - -PFNGLVERTEXWEIGHTPOINTEREXTPROC __glewVertexWeightPointerEXT = NULL; -PFNGLVERTEXWEIGHTFEXTPROC __glewVertexWeightfEXT = NULL; -PFNGLVERTEXWEIGHTFVEXTPROC __glewVertexWeightfvEXT = NULL; - -PFNGLFRAMETERMINATORGREMEDYPROC __glewFrameTerminatorGREMEDY = NULL; - -PFNGLSTRINGMARKERGREMEDYPROC __glewStringMarkerGREMEDY = NULL; - -PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC __glewGetImageTransformParameterfvHP = NULL; -PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC __glewGetImageTransformParameterivHP = NULL; -PFNGLIMAGETRANSFORMPARAMETERFHPPROC __glewImageTransformParameterfHP = NULL; -PFNGLIMAGETRANSFORMPARAMETERFVHPPROC __glewImageTransformParameterfvHP = NULL; -PFNGLIMAGETRANSFORMPARAMETERIHPPROC __glewImageTransformParameteriHP = NULL; -PFNGLIMAGETRANSFORMPARAMETERIVHPPROC __glewImageTransformParameterivHP = NULL; - -PFNGLMULTIMODEDRAWARRAYSIBMPROC __glewMultiModeDrawArraysIBM = NULL; -PFNGLMULTIMODEDRAWELEMENTSIBMPROC __glewMultiModeDrawElementsIBM = NULL; - -PFNGLCOLORPOINTERLISTIBMPROC __glewColorPointerListIBM = NULL; -PFNGLEDGEFLAGPOINTERLISTIBMPROC __glewEdgeFlagPointerListIBM = NULL; -PFNGLFOGCOORDPOINTERLISTIBMPROC __glewFogCoordPointerListIBM = NULL; -PFNGLINDEXPOINTERLISTIBMPROC __glewIndexPointerListIBM = NULL; -PFNGLNORMALPOINTERLISTIBMPROC __glewNormalPointerListIBM = NULL; -PFNGLSECONDARYCOLORPOINTERLISTIBMPROC __glewSecondaryColorPointerListIBM = NULL; -PFNGLTEXCOORDPOINTERLISTIBMPROC __glewTexCoordPointerListIBM = NULL; -PFNGLVERTEXPOINTERLISTIBMPROC __glewVertexPointerListIBM = NULL; - -PFNGLCOLORPOINTERVINTELPROC __glewColorPointervINTEL = NULL; -PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL = NULL; -PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL = NULL; -PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL = NULL; - -PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL = NULL; -PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL = NULL; - -PFNGLBUFFERREGIONENABLEDEXTPROC __glewBufferRegionEnabledEXT = NULL; -PFNGLDELETEBUFFERREGIONEXTPROC __glewDeleteBufferRegionEXT = NULL; -PFNGLDRAWBUFFERREGIONEXTPROC __glewDrawBufferRegionEXT = NULL; -PFNGLNEWBUFFERREGIONEXTPROC __glewNewBufferRegionEXT = NULL; -PFNGLREADBUFFERREGIONEXTPROC __glewReadBufferRegionEXT = NULL; - -PFNGLRESIZEBUFFERSMESAPROC __glewResizeBuffersMESA = NULL; - -PFNGLWINDOWPOS2DMESAPROC __glewWindowPos2dMESA = NULL; -PFNGLWINDOWPOS2DVMESAPROC __glewWindowPos2dvMESA = NULL; -PFNGLWINDOWPOS2FMESAPROC __glewWindowPos2fMESA = NULL; -PFNGLWINDOWPOS2FVMESAPROC __glewWindowPos2fvMESA = NULL; -PFNGLWINDOWPOS2IMESAPROC __glewWindowPos2iMESA = NULL; -PFNGLWINDOWPOS2IVMESAPROC __glewWindowPos2ivMESA = NULL; -PFNGLWINDOWPOS2SMESAPROC __glewWindowPos2sMESA = NULL; -PFNGLWINDOWPOS2SVMESAPROC __glewWindowPos2svMESA = NULL; -PFNGLWINDOWPOS3DMESAPROC __glewWindowPos3dMESA = NULL; -PFNGLWINDOWPOS3DVMESAPROC __glewWindowPos3dvMESA = NULL; -PFNGLWINDOWPOS3FMESAPROC __glewWindowPos3fMESA = NULL; -PFNGLWINDOWPOS3FVMESAPROC __glewWindowPos3fvMESA = NULL; -PFNGLWINDOWPOS3IMESAPROC __glewWindowPos3iMESA = NULL; -PFNGLWINDOWPOS3IVMESAPROC __glewWindowPos3ivMESA = NULL; -PFNGLWINDOWPOS3SMESAPROC __glewWindowPos3sMESA = NULL; -PFNGLWINDOWPOS3SVMESAPROC __glewWindowPos3svMESA = NULL; -PFNGLWINDOWPOS4DMESAPROC __glewWindowPos4dMESA = NULL; -PFNGLWINDOWPOS4DVMESAPROC __glewWindowPos4dvMESA = NULL; -PFNGLWINDOWPOS4FMESAPROC __glewWindowPos4fMESA = NULL; -PFNGLWINDOWPOS4FVMESAPROC __glewWindowPos4fvMESA = NULL; -PFNGLWINDOWPOS4IMESAPROC __glewWindowPos4iMESA = NULL; -PFNGLWINDOWPOS4IVMESAPROC __glewWindowPos4ivMESA = NULL; -PFNGLWINDOWPOS4SMESAPROC __glewWindowPos4sMESA = NULL; -PFNGLWINDOWPOS4SVMESAPROC __glewWindowPos4svMESA = NULL; - -PFNGLBEGINCONDITIONALRENDERNVPROC __glewBeginConditionalRenderNV = NULL; -PFNGLENDCONDITIONALRENDERNVPROC __glewEndConditionalRenderNV = NULL; - -PFNGLCLEARDEPTHDNVPROC __glewClearDepthdNV = NULL; -PFNGLDEPTHBOUNDSDNVPROC __glewDepthBoundsdNV = NULL; -PFNGLDEPTHRANGEDNVPROC __glewDepthRangedNV = NULL; - -PFNGLEVALMAPSNVPROC __glewEvalMapsNV = NULL; -PFNGLGETMAPATTRIBPARAMETERFVNVPROC __glewGetMapAttribParameterfvNV = NULL; -PFNGLGETMAPATTRIBPARAMETERIVNVPROC __glewGetMapAttribParameterivNV = NULL; -PFNGLGETMAPCONTROLPOINTSNVPROC __glewGetMapControlPointsNV = NULL; -PFNGLGETMAPPARAMETERFVNVPROC __glewGetMapParameterfvNV = NULL; -PFNGLGETMAPPARAMETERIVNVPROC __glewGetMapParameterivNV = NULL; -PFNGLMAPCONTROLPOINTSNVPROC __glewMapControlPointsNV = NULL; -PFNGLMAPPARAMETERFVNVPROC __glewMapParameterfvNV = NULL; -PFNGLMAPPARAMETERIVNVPROC __glewMapParameterivNV = NULL; - -PFNGLGETMULTISAMPLEFVNVPROC __glewGetMultisamplefvNV = NULL; -PFNGLSAMPLEMASKINDEXEDNVPROC __glewSampleMaskIndexedNV = NULL; -PFNGLTEXRENDERBUFFERNVPROC __glewTexRenderbufferNV = NULL; - -PFNGLDELETEFENCESNVPROC __glewDeleteFencesNV = NULL; -PFNGLFINISHFENCENVPROC __glewFinishFenceNV = NULL; -PFNGLGENFENCESNVPROC __glewGenFencesNV = NULL; -PFNGLGETFENCEIVNVPROC __glewGetFenceivNV = NULL; -PFNGLISFENCENVPROC __glewIsFenceNV = NULL; -PFNGLSETFENCENVPROC __glewSetFenceNV = NULL; -PFNGLTESTFENCENVPROC __glewTestFenceNV = NULL; - -PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC __glewGetProgramNamedParameterdvNV = NULL; -PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC __glewGetProgramNamedParameterfvNV = NULL; -PFNGLPROGRAMNAMEDPARAMETER4DNVPROC __glewProgramNamedParameter4dNV = NULL; -PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC __glewProgramNamedParameter4dvNV = NULL; -PFNGLPROGRAMNAMEDPARAMETER4FNVPROC __glewProgramNamedParameter4fNV = NULL; -PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC __glewProgramNamedParameter4fvNV = NULL; - -PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC __glewRenderbufferStorageMultisampleCoverageNV = NULL; - -PFNGLPROGRAMVERTEXLIMITNVPROC __glewProgramVertexLimitNV = NULL; - -PFNGLPROGRAMENVPARAMETERI4INVPROC __glewProgramEnvParameterI4iNV = NULL; -PFNGLPROGRAMENVPARAMETERI4IVNVPROC __glewProgramEnvParameterI4ivNV = NULL; -PFNGLPROGRAMENVPARAMETERI4UINVPROC __glewProgramEnvParameterI4uiNV = NULL; -PFNGLPROGRAMENVPARAMETERI4UIVNVPROC __glewProgramEnvParameterI4uivNV = NULL; -PFNGLPROGRAMENVPARAMETERSI4IVNVPROC __glewProgramEnvParametersI4ivNV = NULL; -PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC __glewProgramEnvParametersI4uivNV = NULL; -PFNGLPROGRAMLOCALPARAMETERI4INVPROC __glewProgramLocalParameterI4iNV = NULL; -PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC __glewProgramLocalParameterI4ivNV = NULL; -PFNGLPROGRAMLOCALPARAMETERI4UINVPROC __glewProgramLocalParameterI4uiNV = NULL; -PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV = NULL; -PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV = NULL; -PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV = NULL; - -PFNGLCOLOR3HNVPROC __glewColor3hNV = NULL; -PFNGLCOLOR3HVNVPROC __glewColor3hvNV = NULL; -PFNGLCOLOR4HNVPROC __glewColor4hNV = NULL; -PFNGLCOLOR4HVNVPROC __glewColor4hvNV = NULL; -PFNGLFOGCOORDHNVPROC __glewFogCoordhNV = NULL; -PFNGLFOGCOORDHVNVPROC __glewFogCoordhvNV = NULL; -PFNGLMULTITEXCOORD1HNVPROC __glewMultiTexCoord1hNV = NULL; -PFNGLMULTITEXCOORD1HVNVPROC __glewMultiTexCoord1hvNV = NULL; -PFNGLMULTITEXCOORD2HNVPROC __glewMultiTexCoord2hNV = NULL; -PFNGLMULTITEXCOORD2HVNVPROC __glewMultiTexCoord2hvNV = NULL; -PFNGLMULTITEXCOORD3HNVPROC __glewMultiTexCoord3hNV = NULL; -PFNGLMULTITEXCOORD3HVNVPROC __glewMultiTexCoord3hvNV = NULL; -PFNGLMULTITEXCOORD4HNVPROC __glewMultiTexCoord4hNV = NULL; -PFNGLMULTITEXCOORD4HVNVPROC __glewMultiTexCoord4hvNV = NULL; -PFNGLNORMAL3HNVPROC __glewNormal3hNV = NULL; -PFNGLNORMAL3HVNVPROC __glewNormal3hvNV = NULL; -PFNGLSECONDARYCOLOR3HNVPROC __glewSecondaryColor3hNV = NULL; -PFNGLSECONDARYCOLOR3HVNVPROC __glewSecondaryColor3hvNV = NULL; -PFNGLTEXCOORD1HNVPROC __glewTexCoord1hNV = NULL; -PFNGLTEXCOORD1HVNVPROC __glewTexCoord1hvNV = NULL; -PFNGLTEXCOORD2HNVPROC __glewTexCoord2hNV = NULL; -PFNGLTEXCOORD2HVNVPROC __glewTexCoord2hvNV = NULL; -PFNGLTEXCOORD3HNVPROC __glewTexCoord3hNV = NULL; -PFNGLTEXCOORD3HVNVPROC __glewTexCoord3hvNV = NULL; -PFNGLTEXCOORD4HNVPROC __glewTexCoord4hNV = NULL; -PFNGLTEXCOORD4HVNVPROC __glewTexCoord4hvNV = NULL; -PFNGLVERTEX2HNVPROC __glewVertex2hNV = NULL; -PFNGLVERTEX2HVNVPROC __glewVertex2hvNV = NULL; -PFNGLVERTEX3HNVPROC __glewVertex3hNV = NULL; -PFNGLVERTEX3HVNVPROC __glewVertex3hvNV = NULL; -PFNGLVERTEX4HNVPROC __glewVertex4hNV = NULL; -PFNGLVERTEX4HVNVPROC __glewVertex4hvNV = NULL; -PFNGLVERTEXATTRIB1HNVPROC __glewVertexAttrib1hNV = NULL; -PFNGLVERTEXATTRIB1HVNVPROC __glewVertexAttrib1hvNV = NULL; -PFNGLVERTEXATTRIB2HNVPROC __glewVertexAttrib2hNV = NULL; -PFNGLVERTEXATTRIB2HVNVPROC __glewVertexAttrib2hvNV = NULL; -PFNGLVERTEXATTRIB3HNVPROC __glewVertexAttrib3hNV = NULL; -PFNGLVERTEXATTRIB3HVNVPROC __glewVertexAttrib3hvNV = NULL; -PFNGLVERTEXATTRIB4HNVPROC __glewVertexAttrib4hNV = NULL; -PFNGLVERTEXATTRIB4HVNVPROC __glewVertexAttrib4hvNV = NULL; -PFNGLVERTEXATTRIBS1HVNVPROC __glewVertexAttribs1hvNV = NULL; -PFNGLVERTEXATTRIBS2HVNVPROC __glewVertexAttribs2hvNV = NULL; -PFNGLVERTEXATTRIBS3HVNVPROC __glewVertexAttribs3hvNV = NULL; -PFNGLVERTEXATTRIBS4HVNVPROC __glewVertexAttribs4hvNV = NULL; -PFNGLVERTEXWEIGHTHNVPROC __glewVertexWeighthNV = NULL; -PFNGLVERTEXWEIGHTHVNVPROC __glewVertexWeighthvNV = NULL; - -PFNGLBEGINOCCLUSIONQUERYNVPROC __glewBeginOcclusionQueryNV = NULL; -PFNGLDELETEOCCLUSIONQUERIESNVPROC __glewDeleteOcclusionQueriesNV = NULL; -PFNGLENDOCCLUSIONQUERYNVPROC __glewEndOcclusionQueryNV = NULL; -PFNGLGENOCCLUSIONQUERIESNVPROC __glewGenOcclusionQueriesNV = NULL; -PFNGLGETOCCLUSIONQUERYIVNVPROC __glewGetOcclusionQueryivNV = NULL; -PFNGLGETOCCLUSIONQUERYUIVNVPROC __glewGetOcclusionQueryuivNV = NULL; -PFNGLISOCCLUSIONQUERYNVPROC __glewIsOcclusionQueryNV = NULL; - -PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC __glewProgramBufferParametersIivNV = NULL; -PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC __glewProgramBufferParametersIuivNV = NULL; -PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC __glewProgramBufferParametersfvNV = NULL; - -PFNGLFLUSHPIXELDATARANGENVPROC __glewFlushPixelDataRangeNV = NULL; -PFNGLPIXELDATARANGENVPROC __glewPixelDataRangeNV = NULL; - -PFNGLPOINTPARAMETERINVPROC __glewPointParameteriNV = NULL; -PFNGLPOINTPARAMETERIVNVPROC __glewPointParameterivNV = NULL; - -PFNGLGETVIDEOI64VNVPROC __glewGetVideoi64vNV = NULL; -PFNGLGETVIDEOIVNVPROC __glewGetVideoivNV = NULL; -PFNGLGETVIDEOUI64VNVPROC __glewGetVideoui64vNV = NULL; -PFNGLGETVIDEOUIVNVPROC __glewGetVideouivNV = NULL; -PFNGLPRESENTFRAMEDUALFILLNVPROC __glewPresentFrameDualFillNV = NULL; -PFNGLPRESENTFRAMEKEYEDNVPROC __glewPresentFrameKeyedNV = NULL; -PFNGLVIDEOPARAMETERIVNVPROC __glewVideoParameterivNV = NULL; - -PFNGLPRIMITIVERESTARTINDEXNVPROC __glewPrimitiveRestartIndexNV = NULL; -PFNGLPRIMITIVERESTARTNVPROC __glewPrimitiveRestartNV = NULL; - -PFNGLCOMBINERINPUTNVPROC __glewCombinerInputNV = NULL; -PFNGLCOMBINEROUTPUTNVPROC __glewCombinerOutputNV = NULL; -PFNGLCOMBINERPARAMETERFNVPROC __glewCombinerParameterfNV = NULL; -PFNGLCOMBINERPARAMETERFVNVPROC __glewCombinerParameterfvNV = NULL; -PFNGLCOMBINERPARAMETERINVPROC __glewCombinerParameteriNV = NULL; -PFNGLCOMBINERPARAMETERIVNVPROC __glewCombinerParameterivNV = NULL; -PFNGLFINALCOMBINERINPUTNVPROC __glewFinalCombinerInputNV = NULL; -PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC __glewGetCombinerInputParameterfvNV = NULL; -PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC __glewGetCombinerInputParameterivNV = NULL; -PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC __glewGetCombinerOutputParameterfvNV = NULL; -PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC __glewGetCombinerOutputParameterivNV = NULL; -PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC __glewGetFinalCombinerInputParameterfvNV = NULL; -PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC __glewGetFinalCombinerInputParameterivNV = NULL; - -PFNGLCOMBINERSTAGEPARAMETERFVNVPROC __glewCombinerStageParameterfvNV = NULL; -PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV = NULL; - -PFNGLACTIVEVARYINGNVPROC __glewActiveVaryingNV = NULL; -PFNGLBEGINTRANSFORMFEEDBACKNVPROC __glewBeginTransformFeedbackNV = NULL; -PFNGLBINDBUFFERBASENVPROC __glewBindBufferBaseNV = NULL; -PFNGLBINDBUFFEROFFSETNVPROC __glewBindBufferOffsetNV = NULL; -PFNGLBINDBUFFERRANGENVPROC __glewBindBufferRangeNV = NULL; -PFNGLENDTRANSFORMFEEDBACKNVPROC __glewEndTransformFeedbackNV = NULL; -PFNGLGETACTIVEVARYINGNVPROC __glewGetActiveVaryingNV = NULL; -PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC __glewGetTransformFeedbackVaryingNV = NULL; -PFNGLGETVARYINGLOCATIONNVPROC __glewGetVaryingLocationNV = NULL; -PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC __glewTransformFeedbackAttribsNV = NULL; -PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC __glewTransformFeedbackVaryingsNV = NULL; - -PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV = NULL; -PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV = NULL; - -PFNGLAREPROGRAMSRESIDENTNVPROC __glewAreProgramsResidentNV = NULL; -PFNGLBINDPROGRAMNVPROC __glewBindProgramNV = NULL; -PFNGLDELETEPROGRAMSNVPROC __glewDeleteProgramsNV = NULL; -PFNGLEXECUTEPROGRAMNVPROC __glewExecuteProgramNV = NULL; -PFNGLGENPROGRAMSNVPROC __glewGenProgramsNV = NULL; -PFNGLGETPROGRAMPARAMETERDVNVPROC __glewGetProgramParameterdvNV = NULL; -PFNGLGETPROGRAMPARAMETERFVNVPROC __glewGetProgramParameterfvNV = NULL; -PFNGLGETPROGRAMSTRINGNVPROC __glewGetProgramStringNV = NULL; -PFNGLGETPROGRAMIVNVPROC __glewGetProgramivNV = NULL; -PFNGLGETTRACKMATRIXIVNVPROC __glewGetTrackMatrixivNV = NULL; -PFNGLGETVERTEXATTRIBPOINTERVNVPROC __glewGetVertexAttribPointervNV = NULL; -PFNGLGETVERTEXATTRIBDVNVPROC __glewGetVertexAttribdvNV = NULL; -PFNGLGETVERTEXATTRIBFVNVPROC __glewGetVertexAttribfvNV = NULL; -PFNGLGETVERTEXATTRIBIVNVPROC __glewGetVertexAttribivNV = NULL; -PFNGLISPROGRAMNVPROC __glewIsProgramNV = NULL; -PFNGLLOADPROGRAMNVPROC __glewLoadProgramNV = NULL; -PFNGLPROGRAMPARAMETER4DNVPROC __glewProgramParameter4dNV = NULL; -PFNGLPROGRAMPARAMETER4DVNVPROC __glewProgramParameter4dvNV = NULL; -PFNGLPROGRAMPARAMETER4FNVPROC __glewProgramParameter4fNV = NULL; -PFNGLPROGRAMPARAMETER4FVNVPROC __glewProgramParameter4fvNV = NULL; -PFNGLPROGRAMPARAMETERS4DVNVPROC __glewProgramParameters4dvNV = NULL; -PFNGLPROGRAMPARAMETERS4FVNVPROC __glewProgramParameters4fvNV = NULL; -PFNGLREQUESTRESIDENTPROGRAMSNVPROC __glewRequestResidentProgramsNV = NULL; -PFNGLTRACKMATRIXNVPROC __glewTrackMatrixNV = NULL; -PFNGLVERTEXATTRIB1DNVPROC __glewVertexAttrib1dNV = NULL; -PFNGLVERTEXATTRIB1DVNVPROC __glewVertexAttrib1dvNV = NULL; -PFNGLVERTEXATTRIB1FNVPROC __glewVertexAttrib1fNV = NULL; -PFNGLVERTEXATTRIB1FVNVPROC __glewVertexAttrib1fvNV = NULL; -PFNGLVERTEXATTRIB1SNVPROC __glewVertexAttrib1sNV = NULL; -PFNGLVERTEXATTRIB1SVNVPROC __glewVertexAttrib1svNV = NULL; -PFNGLVERTEXATTRIB2DNVPROC __glewVertexAttrib2dNV = NULL; -PFNGLVERTEXATTRIB2DVNVPROC __glewVertexAttrib2dvNV = NULL; -PFNGLVERTEXATTRIB2FNVPROC __glewVertexAttrib2fNV = NULL; -PFNGLVERTEXATTRIB2FVNVPROC __glewVertexAttrib2fvNV = NULL; -PFNGLVERTEXATTRIB2SNVPROC __glewVertexAttrib2sNV = NULL; -PFNGLVERTEXATTRIB2SVNVPROC __glewVertexAttrib2svNV = NULL; -PFNGLVERTEXATTRIB3DNVPROC __glewVertexAttrib3dNV = NULL; -PFNGLVERTEXATTRIB3DVNVPROC __glewVertexAttrib3dvNV = NULL; -PFNGLVERTEXATTRIB3FNVPROC __glewVertexAttrib3fNV = NULL; -PFNGLVERTEXATTRIB3FVNVPROC __glewVertexAttrib3fvNV = NULL; -PFNGLVERTEXATTRIB3SNVPROC __glewVertexAttrib3sNV = NULL; -PFNGLVERTEXATTRIB3SVNVPROC __glewVertexAttrib3svNV = NULL; -PFNGLVERTEXATTRIB4DNVPROC __glewVertexAttrib4dNV = NULL; -PFNGLVERTEXATTRIB4DVNVPROC __glewVertexAttrib4dvNV = NULL; -PFNGLVERTEXATTRIB4FNVPROC __glewVertexAttrib4fNV = NULL; -PFNGLVERTEXATTRIB4FVNVPROC __glewVertexAttrib4fvNV = NULL; -PFNGLVERTEXATTRIB4SNVPROC __glewVertexAttrib4sNV = NULL; -PFNGLVERTEXATTRIB4SVNVPROC __glewVertexAttrib4svNV = NULL; -PFNGLVERTEXATTRIB4UBNVPROC __glewVertexAttrib4ubNV = NULL; -PFNGLVERTEXATTRIB4UBVNVPROC __glewVertexAttrib4ubvNV = NULL; -PFNGLVERTEXATTRIBPOINTERNVPROC __glewVertexAttribPointerNV = NULL; -PFNGLVERTEXATTRIBS1DVNVPROC __glewVertexAttribs1dvNV = NULL; -PFNGLVERTEXATTRIBS1FVNVPROC __glewVertexAttribs1fvNV = NULL; -PFNGLVERTEXATTRIBS1SVNVPROC __glewVertexAttribs1svNV = NULL; -PFNGLVERTEXATTRIBS2DVNVPROC __glewVertexAttribs2dvNV = NULL; -PFNGLVERTEXATTRIBS2FVNVPROC __glewVertexAttribs2fvNV = NULL; -PFNGLVERTEXATTRIBS2SVNVPROC __glewVertexAttribs2svNV = NULL; -PFNGLVERTEXATTRIBS3DVNVPROC __glewVertexAttribs3dvNV = NULL; -PFNGLVERTEXATTRIBS3FVNVPROC __glewVertexAttribs3fvNV = NULL; -PFNGLVERTEXATTRIBS3SVNVPROC __glewVertexAttribs3svNV = NULL; -PFNGLVERTEXATTRIBS4DVNVPROC __glewVertexAttribs4dvNV = NULL; -PFNGLVERTEXATTRIBS4FVNVPROC __glewVertexAttribs4fvNV = NULL; -PFNGLVERTEXATTRIBS4SVNVPROC __glewVertexAttribs4svNV = NULL; -PFNGLVERTEXATTRIBS4UBVNVPROC __glewVertexAttribs4ubvNV = NULL; - -PFNGLCLEARDEPTHFOESPROC __glewClearDepthfOES = NULL; -PFNGLCLIPPLANEFOESPROC __glewClipPlanefOES = NULL; -PFNGLDEPTHRANGEFOESPROC __glewDepthRangefOES = NULL; -PFNGLFRUSTUMFOESPROC __glewFrustumfOES = NULL; -PFNGLGETCLIPPLANEFOESPROC __glewGetClipPlanefOES = NULL; -PFNGLORTHOFOESPROC __glewOrthofOES = NULL; - -PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS = NULL; -PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS = NULL; - -PFNGLFOGFUNCSGISPROC __glewFogFuncSGIS = NULL; -PFNGLGETFOGFUNCSGISPROC __glewGetFogFuncSGIS = NULL; - -PFNGLSAMPLEMASKSGISPROC __glewSampleMaskSGIS = NULL; -PFNGLSAMPLEPATTERNSGISPROC __glewSamplePatternSGIS = NULL; - -PFNGLGETSHARPENTEXFUNCSGISPROC __glewGetSharpenTexFuncSGIS = NULL; -PFNGLSHARPENTEXFUNCSGISPROC __glewSharpenTexFuncSGIS = NULL; - -PFNGLTEXIMAGE4DSGISPROC __glewTexImage4DSGIS = NULL; -PFNGLTEXSUBIMAGE4DSGISPROC __glewTexSubImage4DSGIS = NULL; - -PFNGLGETTEXFILTERFUNCSGISPROC __glewGetTexFilterFuncSGIS = NULL; -PFNGLTEXFILTERFUNCSGISPROC __glewTexFilterFuncSGIS = NULL; - -PFNGLASYNCMARKERSGIXPROC __glewAsyncMarkerSGIX = NULL; -PFNGLDELETEASYNCMARKERSSGIXPROC __glewDeleteAsyncMarkersSGIX = NULL; -PFNGLFINISHASYNCSGIXPROC __glewFinishAsyncSGIX = NULL; -PFNGLGENASYNCMARKERSSGIXPROC __glewGenAsyncMarkersSGIX = NULL; -PFNGLISASYNCMARKERSGIXPROC __glewIsAsyncMarkerSGIX = NULL; -PFNGLPOLLASYNCSGIXPROC __glewPollAsyncSGIX = NULL; - -PFNGLFLUSHRASTERSGIXPROC __glewFlushRasterSGIX = NULL; - -PFNGLTEXTUREFOGSGIXPROC __glewTextureFogSGIX = NULL; - -PFNGLFRAGMENTCOLORMATERIALSGIXPROC __glewFragmentColorMaterialSGIX = NULL; -PFNGLFRAGMENTLIGHTMODELFSGIXPROC __glewFragmentLightModelfSGIX = NULL; -PFNGLFRAGMENTLIGHTMODELFVSGIXPROC __glewFragmentLightModelfvSGIX = NULL; -PFNGLFRAGMENTLIGHTMODELISGIXPROC __glewFragmentLightModeliSGIX = NULL; -PFNGLFRAGMENTLIGHTMODELIVSGIXPROC __glewFragmentLightModelivSGIX = NULL; -PFNGLFRAGMENTLIGHTFSGIXPROC __glewFragmentLightfSGIX = NULL; -PFNGLFRAGMENTLIGHTFVSGIXPROC __glewFragmentLightfvSGIX = NULL; -PFNGLFRAGMENTLIGHTISGIXPROC __glewFragmentLightiSGIX = NULL; -PFNGLFRAGMENTLIGHTIVSGIXPROC __glewFragmentLightivSGIX = NULL; -PFNGLFRAGMENTMATERIALFSGIXPROC __glewFragmentMaterialfSGIX = NULL; -PFNGLFRAGMENTMATERIALFVSGIXPROC __glewFragmentMaterialfvSGIX = NULL; -PFNGLFRAGMENTMATERIALISGIXPROC __glewFragmentMaterialiSGIX = NULL; -PFNGLFRAGMENTMATERIALIVSGIXPROC __glewFragmentMaterialivSGIX = NULL; -PFNGLGETFRAGMENTLIGHTFVSGIXPROC __glewGetFragmentLightfvSGIX = NULL; -PFNGLGETFRAGMENTLIGHTIVSGIXPROC __glewGetFragmentLightivSGIX = NULL; -PFNGLGETFRAGMENTMATERIALFVSGIXPROC __glewGetFragmentMaterialfvSGIX = NULL; -PFNGLGETFRAGMENTMATERIALIVSGIXPROC __glewGetFragmentMaterialivSGIX = NULL; - -PFNGLFRAMEZOOMSGIXPROC __glewFrameZoomSGIX = NULL; - -PFNGLPIXELTEXGENSGIXPROC __glewPixelTexGenSGIX = NULL; - -PFNGLREFERENCEPLANESGIXPROC __glewReferencePlaneSGIX = NULL; - -PFNGLSPRITEPARAMETERFSGIXPROC __glewSpriteParameterfSGIX = NULL; -PFNGLSPRITEPARAMETERFVSGIXPROC __glewSpriteParameterfvSGIX = NULL; -PFNGLSPRITEPARAMETERISGIXPROC __glewSpriteParameteriSGIX = NULL; -PFNGLSPRITEPARAMETERIVSGIXPROC __glewSpriteParameterivSGIX = NULL; - -PFNGLTAGSAMPLEBUFFERSGIXPROC __glewTagSampleBufferSGIX = NULL; - -PFNGLCOLORTABLEPARAMETERFVSGIPROC __glewColorTableParameterfvSGI = NULL; -PFNGLCOLORTABLEPARAMETERIVSGIPROC __glewColorTableParameterivSGI = NULL; -PFNGLCOLORTABLESGIPROC __glewColorTableSGI = NULL; -PFNGLCOPYCOLORTABLESGIPROC __glewCopyColorTableSGI = NULL; -PFNGLGETCOLORTABLEPARAMETERFVSGIPROC __glewGetColorTableParameterfvSGI = NULL; -PFNGLGETCOLORTABLEPARAMETERIVSGIPROC __glewGetColorTableParameterivSGI = NULL; -PFNGLGETCOLORTABLESGIPROC __glewGetColorTableSGI = NULL; - -PFNGLFINISHTEXTURESUNXPROC __glewFinishTextureSUNX = NULL; - -PFNGLGLOBALALPHAFACTORBSUNPROC __glewGlobalAlphaFactorbSUN = NULL; -PFNGLGLOBALALPHAFACTORDSUNPROC __glewGlobalAlphaFactordSUN = NULL; -PFNGLGLOBALALPHAFACTORFSUNPROC __glewGlobalAlphaFactorfSUN = NULL; -PFNGLGLOBALALPHAFACTORISUNPROC __glewGlobalAlphaFactoriSUN = NULL; -PFNGLGLOBALALPHAFACTORSSUNPROC __glewGlobalAlphaFactorsSUN = NULL; -PFNGLGLOBALALPHAFACTORUBSUNPROC __glewGlobalAlphaFactorubSUN = NULL; -PFNGLGLOBALALPHAFACTORUISUNPROC __glewGlobalAlphaFactoruiSUN = NULL; -PFNGLGLOBALALPHAFACTORUSSUNPROC __glewGlobalAlphaFactorusSUN = NULL; - -PFNGLREADVIDEOPIXELSSUNPROC __glewReadVideoPixelsSUN = NULL; - -PFNGLREPLACEMENTCODEPOINTERSUNPROC __glewReplacementCodePointerSUN = NULL; -PFNGLREPLACEMENTCODEUBSUNPROC __glewReplacementCodeubSUN = NULL; -PFNGLREPLACEMENTCODEUBVSUNPROC __glewReplacementCodeubvSUN = NULL; -PFNGLREPLACEMENTCODEUISUNPROC __glewReplacementCodeuiSUN = NULL; -PFNGLREPLACEMENTCODEUIVSUNPROC __glewReplacementCodeuivSUN = NULL; -PFNGLREPLACEMENTCODEUSSUNPROC __glewReplacementCodeusSUN = NULL; -PFNGLREPLACEMENTCODEUSVSUNPROC __glewReplacementCodeusvSUN = NULL; - -PFNGLCOLOR3FVERTEX3FSUNPROC __glewColor3fVertex3fSUN = NULL; -PFNGLCOLOR3FVERTEX3FVSUNPROC __glewColor3fVertex3fvSUN = NULL; -PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewColor4fNormal3fVertex3fSUN = NULL; -PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewColor4fNormal3fVertex3fvSUN = NULL; -PFNGLCOLOR4UBVERTEX2FSUNPROC __glewColor4ubVertex2fSUN = NULL; -PFNGLCOLOR4UBVERTEX2FVSUNPROC __glewColor4ubVertex2fvSUN = NULL; -PFNGLCOLOR4UBVERTEX3FSUNPROC __glewColor4ubVertex3fSUN = NULL; -PFNGLCOLOR4UBVERTEX3FVSUNPROC __glewColor4ubVertex3fvSUN = NULL; -PFNGLNORMAL3FVERTEX3FSUNPROC __glewNormal3fVertex3fSUN = NULL; -PFNGLNORMAL3FVERTEX3FVSUNPROC __glewNormal3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC __glewReplacementCodeuiColor3fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiColor4fNormal3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC __glewReplacementCodeuiColor4ubVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC __glewReplacementCodeuiColor4ubVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiNormal3fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiNormal3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC __glewReplacementCodeuiTexCoord2fVertex3fvSUN = NULL; -PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC __glewReplacementCodeuiVertex3fSUN = NULL; -PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC __glewReplacementCodeuiVertex3fvSUN = NULL; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC __glewTexCoord2fColor3fVertex3fSUN = NULL; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC __glewTexCoord2fColor3fVertex3fvSUN = NULL; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fSUN = NULL; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fColor4fNormal3fVertex3fvSUN = NULL; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC __glewTexCoord2fColor4ubVertex3fSUN = NULL; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC __glewTexCoord2fColor4ubVertex3fvSUN = NULL; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC __glewTexCoord2fNormal3fVertex3fSUN = NULL; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC __glewTexCoord2fNormal3fVertex3fvSUN = NULL; -PFNGLTEXCOORD2FVERTEX3FSUNPROC __glewTexCoord2fVertex3fSUN = NULL; -PFNGLTEXCOORD2FVERTEX3FVSUNPROC __glewTexCoord2fVertex3fvSUN = NULL; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fSUN = NULL; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC __glewTexCoord4fColor4fNormal3fVertex4fvSUN = NULL; -PFNGLTEXCOORD4FVERTEX4FSUNPROC __glewTexCoord4fVertex4fSUN = NULL; -PFNGLTEXCOORD4FVERTEX4FVSUNPROC __glewTexCoord4fVertex4fvSUN = NULL; - -PFNGLADDSWAPHINTRECTWINPROC __glewAddSwapHintRectWIN = NULL; - -#endif /* !WIN32 || !GLEW_MX */ - -#if !defined(GLEW_MX) - -GLboolean __GLEW_VERSION_1_1 = GL_FALSE; -GLboolean __GLEW_VERSION_1_2 = GL_FALSE; -GLboolean __GLEW_VERSION_1_3 = GL_FALSE; -GLboolean __GLEW_VERSION_1_4 = GL_FALSE; -GLboolean __GLEW_VERSION_1_5 = GL_FALSE; -GLboolean __GLEW_VERSION_2_0 = GL_FALSE; -GLboolean __GLEW_VERSION_2_1 = GL_FALSE; -GLboolean __GLEW_VERSION_3_0 = GL_FALSE; -GLboolean __GLEW_3DFX_multisample = GL_FALSE; -GLboolean __GLEW_3DFX_tbuffer = GL_FALSE; -GLboolean __GLEW_3DFX_texture_compression_FXT1 = GL_FALSE; -GLboolean __GLEW_APPLE_client_storage = GL_FALSE; -GLboolean __GLEW_APPLE_element_array = GL_FALSE; -GLboolean __GLEW_APPLE_fence = GL_FALSE; -GLboolean __GLEW_APPLE_float_pixels = GL_FALSE; -GLboolean __GLEW_APPLE_flush_buffer_range = GL_FALSE; -GLboolean __GLEW_APPLE_pixel_buffer = GL_FALSE; -GLboolean __GLEW_APPLE_specular_vector = GL_FALSE; -GLboolean __GLEW_APPLE_texture_range = GL_FALSE; -GLboolean __GLEW_APPLE_transform_hint = GL_FALSE; -GLboolean __GLEW_APPLE_vertex_array_object = GL_FALSE; -GLboolean __GLEW_APPLE_vertex_array_range = GL_FALSE; -GLboolean __GLEW_APPLE_ycbcr_422 = GL_FALSE; -GLboolean __GLEW_ARB_color_buffer_float = GL_FALSE; -GLboolean __GLEW_ARB_depth_buffer_float = GL_FALSE; -GLboolean __GLEW_ARB_depth_texture = GL_FALSE; -GLboolean __GLEW_ARB_draw_buffers = GL_FALSE; -GLboolean __GLEW_ARB_draw_instanced = GL_FALSE; -GLboolean __GLEW_ARB_fragment_program = GL_FALSE; -GLboolean __GLEW_ARB_fragment_program_shadow = GL_FALSE; -GLboolean __GLEW_ARB_fragment_shader = GL_FALSE; -GLboolean __GLEW_ARB_framebuffer_object = GL_FALSE; -GLboolean __GLEW_ARB_framebuffer_sRGB = GL_FALSE; -GLboolean __GLEW_ARB_geometry_shader4 = GL_FALSE; -GLboolean __GLEW_ARB_half_float_pixel = GL_FALSE; -GLboolean __GLEW_ARB_half_float_vertex = GL_FALSE; -GLboolean __GLEW_ARB_imaging = GL_FALSE; -GLboolean __GLEW_ARB_instanced_arrays = GL_FALSE; -GLboolean __GLEW_ARB_map_buffer_range = GL_FALSE; -GLboolean __GLEW_ARB_matrix_palette = GL_FALSE; -GLboolean __GLEW_ARB_multisample = GL_FALSE; -GLboolean __GLEW_ARB_multitexture = GL_FALSE; -GLboolean __GLEW_ARB_occlusion_query = GL_FALSE; -GLboolean __GLEW_ARB_pixel_buffer_object = GL_FALSE; -GLboolean __GLEW_ARB_point_parameters = GL_FALSE; -GLboolean __GLEW_ARB_point_sprite = GL_FALSE; -GLboolean __GLEW_ARB_shader_objects = GL_FALSE; -GLboolean __GLEW_ARB_shading_language_100 = GL_FALSE; -GLboolean __GLEW_ARB_shadow = GL_FALSE; -GLboolean __GLEW_ARB_shadow_ambient = GL_FALSE; -GLboolean __GLEW_ARB_texture_border_clamp = GL_FALSE; -GLboolean __GLEW_ARB_texture_buffer_object = GL_FALSE; -GLboolean __GLEW_ARB_texture_compression = GL_FALSE; -GLboolean __GLEW_ARB_texture_compression_rgtc = GL_FALSE; -GLboolean __GLEW_ARB_texture_cube_map = GL_FALSE; -GLboolean __GLEW_ARB_texture_env_add = GL_FALSE; -GLboolean __GLEW_ARB_texture_env_combine = GL_FALSE; -GLboolean __GLEW_ARB_texture_env_crossbar = GL_FALSE; -GLboolean __GLEW_ARB_texture_env_dot3 = GL_FALSE; -GLboolean __GLEW_ARB_texture_float = GL_FALSE; -GLboolean __GLEW_ARB_texture_mirrored_repeat = GL_FALSE; -GLboolean __GLEW_ARB_texture_non_power_of_two = GL_FALSE; -GLboolean __GLEW_ARB_texture_rectangle = GL_FALSE; -GLboolean __GLEW_ARB_texture_rg = GL_FALSE; -GLboolean __GLEW_ARB_transpose_matrix = GL_FALSE; -GLboolean __GLEW_ARB_vertex_array_object = GL_FALSE; -GLboolean __GLEW_ARB_vertex_blend = GL_FALSE; -GLboolean __GLEW_ARB_vertex_buffer_object = GL_FALSE; -GLboolean __GLEW_ARB_vertex_program = GL_FALSE; -GLboolean __GLEW_ARB_vertex_shader = GL_FALSE; -GLboolean __GLEW_ARB_window_pos = GL_FALSE; -GLboolean __GLEW_ATIX_point_sprites = GL_FALSE; -GLboolean __GLEW_ATIX_texture_env_combine3 = GL_FALSE; -GLboolean __GLEW_ATIX_texture_env_route = GL_FALSE; -GLboolean __GLEW_ATIX_vertex_shader_output_point_size = GL_FALSE; -GLboolean __GLEW_ATI_draw_buffers = GL_FALSE; -GLboolean __GLEW_ATI_element_array = GL_FALSE; -GLboolean __GLEW_ATI_envmap_bumpmap = GL_FALSE; -GLboolean __GLEW_ATI_fragment_shader = GL_FALSE; -GLboolean __GLEW_ATI_map_object_buffer = GL_FALSE; -GLboolean __GLEW_ATI_pn_triangles = GL_FALSE; -GLboolean __GLEW_ATI_separate_stencil = GL_FALSE; -GLboolean __GLEW_ATI_shader_texture_lod = GL_FALSE; -GLboolean __GLEW_ATI_text_fragment_shader = GL_FALSE; -GLboolean __GLEW_ATI_texture_compression_3dc = GL_FALSE; -GLboolean __GLEW_ATI_texture_env_combine3 = GL_FALSE; -GLboolean __GLEW_ATI_texture_float = GL_FALSE; -GLboolean __GLEW_ATI_texture_mirror_once = GL_FALSE; -GLboolean __GLEW_ATI_vertex_array_object = GL_FALSE; -GLboolean __GLEW_ATI_vertex_attrib_array_object = GL_FALSE; -GLboolean __GLEW_ATI_vertex_streams = GL_FALSE; -GLboolean __GLEW_EXT_422_pixels = GL_FALSE; -GLboolean __GLEW_EXT_Cg_shader = GL_FALSE; -GLboolean __GLEW_EXT_abgr = GL_FALSE; -GLboolean __GLEW_EXT_bgra = GL_FALSE; -GLboolean __GLEW_EXT_bindable_uniform = GL_FALSE; -GLboolean __GLEW_EXT_blend_color = GL_FALSE; -GLboolean __GLEW_EXT_blend_equation_separate = GL_FALSE; -GLboolean __GLEW_EXT_blend_func_separate = GL_FALSE; -GLboolean __GLEW_EXT_blend_logic_op = GL_FALSE; -GLboolean __GLEW_EXT_blend_minmax = GL_FALSE; -GLboolean __GLEW_EXT_blend_subtract = GL_FALSE; -GLboolean __GLEW_EXT_clip_volume_hint = GL_FALSE; -GLboolean __GLEW_EXT_cmyka = GL_FALSE; -GLboolean __GLEW_EXT_color_subtable = GL_FALSE; -GLboolean __GLEW_EXT_compiled_vertex_array = GL_FALSE; -GLboolean __GLEW_EXT_convolution = GL_FALSE; -GLboolean __GLEW_EXT_coordinate_frame = GL_FALSE; -GLboolean __GLEW_EXT_copy_texture = GL_FALSE; -GLboolean __GLEW_EXT_cull_vertex = GL_FALSE; -GLboolean __GLEW_EXT_depth_bounds_test = GL_FALSE; -GLboolean __GLEW_EXT_direct_state_access = GL_FALSE; -GLboolean __GLEW_EXT_draw_buffers2 = GL_FALSE; -GLboolean __GLEW_EXT_draw_instanced = GL_FALSE; -GLboolean __GLEW_EXT_draw_range_elements = GL_FALSE; -GLboolean __GLEW_EXT_fog_coord = GL_FALSE; -GLboolean __GLEW_EXT_fragment_lighting = GL_FALSE; -GLboolean __GLEW_EXT_framebuffer_blit = GL_FALSE; -GLboolean __GLEW_EXT_framebuffer_multisample = GL_FALSE; -GLboolean __GLEW_EXT_framebuffer_object = GL_FALSE; -GLboolean __GLEW_EXT_framebuffer_sRGB = GL_FALSE; -GLboolean __GLEW_EXT_geometry_shader4 = GL_FALSE; -GLboolean __GLEW_EXT_gpu_program_parameters = GL_FALSE; -GLboolean __GLEW_EXT_gpu_shader4 = GL_FALSE; -GLboolean __GLEW_EXT_histogram = GL_FALSE; -GLboolean __GLEW_EXT_index_array_formats = GL_FALSE; -GLboolean __GLEW_EXT_index_func = GL_FALSE; -GLboolean __GLEW_EXT_index_material = GL_FALSE; -GLboolean __GLEW_EXT_index_texture = GL_FALSE; -GLboolean __GLEW_EXT_light_texture = GL_FALSE; -GLboolean __GLEW_EXT_misc_attribute = GL_FALSE; -GLboolean __GLEW_EXT_multi_draw_arrays = GL_FALSE; -GLboolean __GLEW_EXT_multisample = GL_FALSE; -GLboolean __GLEW_EXT_packed_depth_stencil = GL_FALSE; -GLboolean __GLEW_EXT_packed_float = GL_FALSE; -GLboolean __GLEW_EXT_packed_pixels = GL_FALSE; -GLboolean __GLEW_EXT_paletted_texture = GL_FALSE; -GLboolean __GLEW_EXT_pixel_buffer_object = GL_FALSE; -GLboolean __GLEW_EXT_pixel_transform = GL_FALSE; -GLboolean __GLEW_EXT_pixel_transform_color_table = GL_FALSE; -GLboolean __GLEW_EXT_point_parameters = GL_FALSE; -GLboolean __GLEW_EXT_polygon_offset = GL_FALSE; -GLboolean __GLEW_EXT_rescale_normal = GL_FALSE; -GLboolean __GLEW_EXT_scene_marker = GL_FALSE; -GLboolean __GLEW_EXT_secondary_color = GL_FALSE; -GLboolean __GLEW_EXT_separate_specular_color = GL_FALSE; -GLboolean __GLEW_EXT_shadow_funcs = GL_FALSE; -GLboolean __GLEW_EXT_shared_texture_palette = GL_FALSE; -GLboolean __GLEW_EXT_stencil_clear_tag = GL_FALSE; -GLboolean __GLEW_EXT_stencil_two_side = GL_FALSE; -GLboolean __GLEW_EXT_stencil_wrap = GL_FALSE; -GLboolean __GLEW_EXT_subtexture = GL_FALSE; -GLboolean __GLEW_EXT_texture = GL_FALSE; -GLboolean __GLEW_EXT_texture3D = GL_FALSE; -GLboolean __GLEW_EXT_texture_array = GL_FALSE; -GLboolean __GLEW_EXT_texture_buffer_object = GL_FALSE; -GLboolean __GLEW_EXT_texture_compression_dxt1 = GL_FALSE; -GLboolean __GLEW_EXT_texture_compression_latc = GL_FALSE; -GLboolean __GLEW_EXT_texture_compression_rgtc = GL_FALSE; -GLboolean __GLEW_EXT_texture_compression_s3tc = GL_FALSE; -GLboolean __GLEW_EXT_texture_cube_map = GL_FALSE; -GLboolean __GLEW_EXT_texture_edge_clamp = GL_FALSE; -GLboolean __GLEW_EXT_texture_env = GL_FALSE; -GLboolean __GLEW_EXT_texture_env_add = GL_FALSE; -GLboolean __GLEW_EXT_texture_env_combine = GL_FALSE; -GLboolean __GLEW_EXT_texture_env_dot3 = GL_FALSE; -GLboolean __GLEW_EXT_texture_filter_anisotropic = GL_FALSE; -GLboolean __GLEW_EXT_texture_integer = GL_FALSE; -GLboolean __GLEW_EXT_texture_lod_bias = GL_FALSE; -GLboolean __GLEW_EXT_texture_mirror_clamp = GL_FALSE; -GLboolean __GLEW_EXT_texture_object = GL_FALSE; -GLboolean __GLEW_EXT_texture_perturb_normal = GL_FALSE; -GLboolean __GLEW_EXT_texture_rectangle = GL_FALSE; -GLboolean __GLEW_EXT_texture_sRGB = GL_FALSE; -GLboolean __GLEW_EXT_texture_shared_exponent = GL_FALSE; -GLboolean __GLEW_EXT_texture_swizzle = GL_FALSE; -GLboolean __GLEW_EXT_timer_query = GL_FALSE; -GLboolean __GLEW_EXT_transform_feedback = GL_FALSE; -GLboolean __GLEW_EXT_vertex_array = GL_FALSE; -GLboolean __GLEW_EXT_vertex_array_bgra = GL_FALSE; -GLboolean __GLEW_EXT_vertex_shader = GL_FALSE; -GLboolean __GLEW_EXT_vertex_weighting = GL_FALSE; -GLboolean __GLEW_GREMEDY_frame_terminator = GL_FALSE; -GLboolean __GLEW_GREMEDY_string_marker = GL_FALSE; -GLboolean __GLEW_HP_convolution_border_modes = GL_FALSE; -GLboolean __GLEW_HP_image_transform = GL_FALSE; -GLboolean __GLEW_HP_occlusion_test = GL_FALSE; -GLboolean __GLEW_HP_texture_lighting = GL_FALSE; -GLboolean __GLEW_IBM_cull_vertex = GL_FALSE; -GLboolean __GLEW_IBM_multimode_draw_arrays = GL_FALSE; -GLboolean __GLEW_IBM_rasterpos_clip = GL_FALSE; -GLboolean __GLEW_IBM_static_data = GL_FALSE; -GLboolean __GLEW_IBM_texture_mirrored_repeat = GL_FALSE; -GLboolean __GLEW_IBM_vertex_array_lists = GL_FALSE; -GLboolean __GLEW_INGR_color_clamp = GL_FALSE; -GLboolean __GLEW_INGR_interlace_read = GL_FALSE; -GLboolean __GLEW_INTEL_parallel_arrays = GL_FALSE; -GLboolean __GLEW_INTEL_texture_scissor = GL_FALSE; -GLboolean __GLEW_KTX_buffer_region = GL_FALSE; -GLboolean __GLEW_MESAX_texture_stack = GL_FALSE; -GLboolean __GLEW_MESA_pack_invert = GL_FALSE; -GLboolean __GLEW_MESA_resize_buffers = GL_FALSE; -GLboolean __GLEW_MESA_window_pos = GL_FALSE; -GLboolean __GLEW_MESA_ycbcr_texture = GL_FALSE; -GLboolean __GLEW_NV_blend_square = GL_FALSE; -GLboolean __GLEW_NV_conditional_render = GL_FALSE; -GLboolean __GLEW_NV_copy_depth_to_color = GL_FALSE; -GLboolean __GLEW_NV_depth_buffer_float = GL_FALSE; -GLboolean __GLEW_NV_depth_clamp = GL_FALSE; -GLboolean __GLEW_NV_depth_range_unclamped = GL_FALSE; -GLboolean __GLEW_NV_evaluators = GL_FALSE; -GLboolean __GLEW_NV_explicit_multisample = GL_FALSE; -GLboolean __GLEW_NV_fence = GL_FALSE; -GLboolean __GLEW_NV_float_buffer = GL_FALSE; -GLboolean __GLEW_NV_fog_distance = GL_FALSE; -GLboolean __GLEW_NV_fragment_program = GL_FALSE; -GLboolean __GLEW_NV_fragment_program2 = GL_FALSE; -GLboolean __GLEW_NV_fragment_program4 = GL_FALSE; -GLboolean __GLEW_NV_fragment_program_option = GL_FALSE; -GLboolean __GLEW_NV_framebuffer_multisample_coverage = GL_FALSE; -GLboolean __GLEW_NV_geometry_program4 = GL_FALSE; -GLboolean __GLEW_NV_geometry_shader4 = GL_FALSE; -GLboolean __GLEW_NV_gpu_program4 = GL_FALSE; -GLboolean __GLEW_NV_half_float = GL_FALSE; -GLboolean __GLEW_NV_light_max_exponent = GL_FALSE; -GLboolean __GLEW_NV_multisample_filter_hint = GL_FALSE; -GLboolean __GLEW_NV_occlusion_query = GL_FALSE; -GLboolean __GLEW_NV_packed_depth_stencil = GL_FALSE; -GLboolean __GLEW_NV_parameter_buffer_object = GL_FALSE; -GLboolean __GLEW_NV_pixel_data_range = GL_FALSE; -GLboolean __GLEW_NV_point_sprite = GL_FALSE; -GLboolean __GLEW_NV_present_video = GL_FALSE; -GLboolean __GLEW_NV_primitive_restart = GL_FALSE; -GLboolean __GLEW_NV_register_combiners = GL_FALSE; -GLboolean __GLEW_NV_register_combiners2 = GL_FALSE; -GLboolean __GLEW_NV_texgen_emboss = GL_FALSE; -GLboolean __GLEW_NV_texgen_reflection = GL_FALSE; -GLboolean __GLEW_NV_texture_compression_vtc = GL_FALSE; -GLboolean __GLEW_NV_texture_env_combine4 = GL_FALSE; -GLboolean __GLEW_NV_texture_expand_normal = GL_FALSE; -GLboolean __GLEW_NV_texture_rectangle = GL_FALSE; -GLboolean __GLEW_NV_texture_shader = GL_FALSE; -GLboolean __GLEW_NV_texture_shader2 = GL_FALSE; -GLboolean __GLEW_NV_texture_shader3 = GL_FALSE; -GLboolean __GLEW_NV_transform_feedback = GL_FALSE; -GLboolean __GLEW_NV_vertex_array_range = GL_FALSE; -GLboolean __GLEW_NV_vertex_array_range2 = GL_FALSE; -GLboolean __GLEW_NV_vertex_program = GL_FALSE; -GLboolean __GLEW_NV_vertex_program1_1 = GL_FALSE; -GLboolean __GLEW_NV_vertex_program2 = GL_FALSE; -GLboolean __GLEW_NV_vertex_program2_option = GL_FALSE; -GLboolean __GLEW_NV_vertex_program3 = GL_FALSE; -GLboolean __GLEW_NV_vertex_program4 = GL_FALSE; -GLboolean __GLEW_OES_byte_coordinates = GL_FALSE; -GLboolean __GLEW_OES_compressed_paletted_texture = GL_FALSE; -GLboolean __GLEW_OES_read_format = GL_FALSE; -GLboolean __GLEW_OES_single_precision = GL_FALSE; -GLboolean __GLEW_OML_interlace = GL_FALSE; -GLboolean __GLEW_OML_resample = GL_FALSE; -GLboolean __GLEW_OML_subsample = GL_FALSE; -GLboolean __GLEW_PGI_misc_hints = GL_FALSE; -GLboolean __GLEW_PGI_vertex_hints = GL_FALSE; -GLboolean __GLEW_REND_screen_coordinates = GL_FALSE; -GLboolean __GLEW_S3_s3tc = GL_FALSE; -GLboolean __GLEW_SGIS_color_range = GL_FALSE; -GLboolean __GLEW_SGIS_detail_texture = GL_FALSE; -GLboolean __GLEW_SGIS_fog_function = GL_FALSE; -GLboolean __GLEW_SGIS_generate_mipmap = GL_FALSE; -GLboolean __GLEW_SGIS_multisample = GL_FALSE; -GLboolean __GLEW_SGIS_pixel_texture = GL_FALSE; -GLboolean __GLEW_SGIS_point_line_texgen = GL_FALSE; -GLboolean __GLEW_SGIS_sharpen_texture = GL_FALSE; -GLboolean __GLEW_SGIS_texture4D = GL_FALSE; -GLboolean __GLEW_SGIS_texture_border_clamp = GL_FALSE; -GLboolean __GLEW_SGIS_texture_edge_clamp = GL_FALSE; -GLboolean __GLEW_SGIS_texture_filter4 = GL_FALSE; -GLboolean __GLEW_SGIS_texture_lod = GL_FALSE; -GLboolean __GLEW_SGIS_texture_select = GL_FALSE; -GLboolean __GLEW_SGIX_async = GL_FALSE; -GLboolean __GLEW_SGIX_async_histogram = GL_FALSE; -GLboolean __GLEW_SGIX_async_pixel = GL_FALSE; -GLboolean __GLEW_SGIX_blend_alpha_minmax = GL_FALSE; -GLboolean __GLEW_SGIX_clipmap = GL_FALSE; -GLboolean __GLEW_SGIX_convolution_accuracy = GL_FALSE; -GLboolean __GLEW_SGIX_depth_texture = GL_FALSE; -GLboolean __GLEW_SGIX_flush_raster = GL_FALSE; -GLboolean __GLEW_SGIX_fog_offset = GL_FALSE; -GLboolean __GLEW_SGIX_fog_texture = GL_FALSE; -GLboolean __GLEW_SGIX_fragment_specular_lighting = GL_FALSE; -GLboolean __GLEW_SGIX_framezoom = GL_FALSE; -GLboolean __GLEW_SGIX_interlace = GL_FALSE; -GLboolean __GLEW_SGIX_ir_instrument1 = GL_FALSE; -GLboolean __GLEW_SGIX_list_priority = GL_FALSE; -GLboolean __GLEW_SGIX_pixel_texture = GL_FALSE; -GLboolean __GLEW_SGIX_pixel_texture_bits = GL_FALSE; -GLboolean __GLEW_SGIX_reference_plane = GL_FALSE; -GLboolean __GLEW_SGIX_resample = GL_FALSE; -GLboolean __GLEW_SGIX_shadow = GL_FALSE; -GLboolean __GLEW_SGIX_shadow_ambient = GL_FALSE; -GLboolean __GLEW_SGIX_sprite = GL_FALSE; -GLboolean __GLEW_SGIX_tag_sample_buffer = GL_FALSE; -GLboolean __GLEW_SGIX_texture_add_env = GL_FALSE; -GLboolean __GLEW_SGIX_texture_coordinate_clamp = GL_FALSE; -GLboolean __GLEW_SGIX_texture_lod_bias = GL_FALSE; -GLboolean __GLEW_SGIX_texture_multi_buffer = GL_FALSE; -GLboolean __GLEW_SGIX_texture_range = GL_FALSE; -GLboolean __GLEW_SGIX_texture_scale_bias = GL_FALSE; -GLboolean __GLEW_SGIX_vertex_preclip = GL_FALSE; -GLboolean __GLEW_SGIX_vertex_preclip_hint = GL_FALSE; -GLboolean __GLEW_SGIX_ycrcb = GL_FALSE; -GLboolean __GLEW_SGI_color_matrix = GL_FALSE; -GLboolean __GLEW_SGI_color_table = GL_FALSE; -GLboolean __GLEW_SGI_texture_color_table = GL_FALSE; -GLboolean __GLEW_SUNX_constant_data = GL_FALSE; -GLboolean __GLEW_SUN_convolution_border_modes = GL_FALSE; -GLboolean __GLEW_SUN_global_alpha = GL_FALSE; -GLboolean __GLEW_SUN_mesh_array = GL_FALSE; -GLboolean __GLEW_SUN_read_video_pixels = GL_FALSE; -GLboolean __GLEW_SUN_slice_accum = GL_FALSE; -GLboolean __GLEW_SUN_triangle_list = GL_FALSE; -GLboolean __GLEW_SUN_vertex = GL_FALSE; -GLboolean __GLEW_WIN_phong_shading = GL_FALSE; -GLboolean __GLEW_WIN_specular_fog = GL_FALSE; -GLboolean __GLEW_WIN_swap_hint = GL_FALSE; - -#endif /* !GLEW_MX */ - -#ifdef GL_VERSION_1_2 - -static GLboolean _glewInit_GL_VERSION_1_2 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3D")) == NULL) || r; - r = ((glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElements")) == NULL) || r; - r = ((glTexImage3D = (PFNGLTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexImage3D")) == NULL) || r; - r = ((glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3D")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_1_2 */ - -#ifdef GL_VERSION_1_3 - -static GLboolean _glewInit_GL_VERSION_1_3 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glActiveTexture = (PFNGLACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glActiveTexture")) == NULL) || r; - r = ((glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTexture")) == NULL) || r; - r = ((glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1D")) == NULL) || r; - r = ((glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2D")) == NULL) || r; - r = ((glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3D")) == NULL) || r; - r = ((glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1D")) == NULL) || r; - r = ((glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2D")) == NULL) || r; - r = ((glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3D")) == NULL) || r; - r = ((glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImage")) == NULL) || r; - r = ((glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixd")) == NULL) || r; - r = ((glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixf")) == NULL) || r; - r = ((glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixd")) == NULL) || r; - r = ((glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixf")) == NULL) || r; - r = ((glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1d")) == NULL) || r; - r = ((glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dv")) == NULL) || r; - r = ((glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1f")) == NULL) || r; - r = ((glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fv")) == NULL) || r; - r = ((glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1i")) == NULL) || r; - r = ((glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iv")) == NULL) || r; - r = ((glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1s")) == NULL) || r; - r = ((glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sv")) == NULL) || r; - r = ((glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2d")) == NULL) || r; - r = ((glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dv")) == NULL) || r; - r = ((glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2f")) == NULL) || r; - r = ((glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fv")) == NULL) || r; - r = ((glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2i")) == NULL) || r; - r = ((glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iv")) == NULL) || r; - r = ((glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2s")) == NULL) || r; - r = ((glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sv")) == NULL) || r; - r = ((glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3d")) == NULL) || r; - r = ((glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dv")) == NULL) || r; - r = ((glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3f")) == NULL) || r; - r = ((glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fv")) == NULL) || r; - r = ((glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3i")) == NULL) || r; - r = ((glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iv")) == NULL) || r; - r = ((glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3s")) == NULL) || r; - r = ((glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sv")) == NULL) || r; - r = ((glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4d")) == NULL) || r; - r = ((glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dv")) == NULL) || r; - r = ((glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4f")) == NULL) || r; - r = ((glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fv")) == NULL) || r; - r = ((glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4i")) == NULL) || r; - r = ((glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iv")) == NULL) || r; - r = ((glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4s")) == NULL) || r; - r = ((glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sv")) == NULL) || r; - r = ((glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverage")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_1_3 */ - -#ifdef GL_VERSION_1_4 - -static GLboolean _glewInit_GL_VERSION_1_4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendColor = (PFNGLBLENDCOLORPROC)glewGetProcAddress((const GLubyte*)"glBlendColor")) == NULL) || r; - r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r; - r = ((glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparate")) == NULL) || r; - r = ((glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointer")) == NULL) || r; - r = ((glFogCoordd = (PFNGLFOGCOORDDPROC)glewGetProcAddress((const GLubyte*)"glFogCoordd")) == NULL) || r; - r = ((glFogCoorddv = (PFNGLFOGCOORDDVPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddv")) == NULL) || r; - r = ((glFogCoordf = (PFNGLFOGCOORDFPROC)glewGetProcAddress((const GLubyte*)"glFogCoordf")) == NULL) || r; - r = ((glFogCoordfv = (PFNGLFOGCOORDFVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfv")) == NULL) || r; - r = ((glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArrays")) == NULL) || r; - r = ((glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElements")) == NULL) || r; - r = ((glPointParameterf = (PFNGLPOINTPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glPointParameterf")) == NULL) || r; - r = ((glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfv")) == NULL) || r; - r = ((glPointParameteri = (PFNGLPOINTPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPointParameteri")) == NULL) || r; - r = ((glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriv")) == NULL) || r; - r = ((glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3b")) == NULL) || r; - r = ((glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bv")) == NULL) || r; - r = ((glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3d")) == NULL) || r; - r = ((glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dv")) == NULL) || r; - r = ((glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3f")) == NULL) || r; - r = ((glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fv")) == NULL) || r; - r = ((glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3i")) == NULL) || r; - r = ((glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iv")) == NULL) || r; - r = ((glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3s")) == NULL) || r; - r = ((glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sv")) == NULL) || r; - r = ((glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ub")) == NULL) || r; - r = ((glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubv")) == NULL) || r; - r = ((glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ui")) == NULL) || r; - r = ((glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiv")) == NULL) || r; - r = ((glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3us")) == NULL) || r; - r = ((glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usv")) == NULL) || r; - r = ((glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointer")) == NULL) || r; - r = ((glWindowPos2d = (PFNGLWINDOWPOS2DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2d")) == NULL) || r; - r = ((glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dv")) == NULL) || r; - r = ((glWindowPos2f = (PFNGLWINDOWPOS2FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2f")) == NULL) || r; - r = ((glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fv")) == NULL) || r; - r = ((glWindowPos2i = (PFNGLWINDOWPOS2IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2i")) == NULL) || r; - r = ((glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iv")) == NULL) || r; - r = ((glWindowPos2s = (PFNGLWINDOWPOS2SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2s")) == NULL) || r; - r = ((glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sv")) == NULL) || r; - r = ((glWindowPos3d = (PFNGLWINDOWPOS3DPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3d")) == NULL) || r; - r = ((glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dv")) == NULL) || r; - r = ((glWindowPos3f = (PFNGLWINDOWPOS3FPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3f")) == NULL) || r; - r = ((glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fv")) == NULL) || r; - r = ((glWindowPos3i = (PFNGLWINDOWPOS3IPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3i")) == NULL) || r; - r = ((glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iv")) == NULL) || r; - r = ((glWindowPos3s = (PFNGLWINDOWPOS3SPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3s")) == NULL) || r; - r = ((glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sv")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_1_4 */ - -#ifdef GL_VERSION_1_5 - -static GLboolean _glewInit_GL_VERSION_1_5 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginQuery = (PFNGLBEGINQUERYPROC)glewGetProcAddress((const GLubyte*)"glBeginQuery")) == NULL) || r; - r = ((glBindBuffer = (PFNGLBINDBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindBuffer")) == NULL) || r; - r = ((glBufferData = (PFNGLBUFFERDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferData")) == NULL) || r; - r = ((glBufferSubData = (PFNGLBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glBufferSubData")) == NULL) || r; - r = ((glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffers")) == NULL) || r; - r = ((glDeleteQueries = (PFNGLDELETEQUERIESPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueries")) == NULL) || r; - r = ((glEndQuery = (PFNGLENDQUERYPROC)glewGetProcAddress((const GLubyte*)"glEndQuery")) == NULL) || r; - r = ((glGenBuffers = (PFNGLGENBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenBuffers")) == NULL) || r; - r = ((glGenQueries = (PFNGLGENQUERIESPROC)glewGetProcAddress((const GLubyte*)"glGenQueries")) == NULL) || r; - r = ((glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameteriv")) == NULL) || r; - r = ((glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointerv")) == NULL) || r; - r = ((glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubData")) == NULL) || r; - r = ((glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectiv")) == NULL) || r; - r = ((glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuiv")) == NULL) || r; - r = ((glGetQueryiv = (PFNGLGETQUERYIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryiv")) == NULL) || r; - r = ((glIsBuffer = (PFNGLISBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsBuffer")) == NULL) || r; - r = ((glIsQuery = (PFNGLISQUERYPROC)glewGetProcAddress((const GLubyte*)"glIsQuery")) == NULL) || r; - r = ((glMapBuffer = (PFNGLMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glMapBuffer")) == NULL) || r; - r = ((glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glUnmapBuffer")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_1_5 */ - -#ifdef GL_VERSION_2_0 - -static GLboolean _glewInit_GL_VERSION_2_0 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAttachShader = (PFNGLATTACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glAttachShader")) == NULL) || r; - r = ((glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocation")) == NULL) || r; - r = ((glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparate")) == NULL) || r; - r = ((glCompileShader = (PFNGLCOMPILESHADERPROC)glewGetProcAddress((const GLubyte*)"glCompileShader")) == NULL) || r; - r = ((glCreateProgram = (PFNGLCREATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glCreateProgram")) == NULL) || r; - r = ((glCreateShader = (PFNGLCREATESHADERPROC)glewGetProcAddress((const GLubyte*)"glCreateShader")) == NULL) || r; - r = ((glDeleteProgram = (PFNGLDELETEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgram")) == NULL) || r; - r = ((glDeleteShader = (PFNGLDELETESHADERPROC)glewGetProcAddress((const GLubyte*)"glDeleteShader")) == NULL) || r; - r = ((glDetachShader = (PFNGLDETACHSHADERPROC)glewGetProcAddress((const GLubyte*)"glDetachShader")) == NULL) || r; - r = ((glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArray")) == NULL) || r; - r = ((glDrawBuffers = (PFNGLDRAWBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffers")) == NULL) || r; - r = ((glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArray")) == NULL) || r; - r = ((glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttrib")) == NULL) || r; - r = ((glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniform")) == NULL) || r; - r = ((glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedShaders")) == NULL) || r; - r = ((glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocation")) == NULL) || r; - r = ((glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetProgramInfoLog")) == NULL) || r; - r = ((glGetProgramiv = (PFNGLGETPROGRAMIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramiv")) == NULL) || r; - r = ((glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)glewGetProcAddress((const GLubyte*)"glGetShaderInfoLog")) == NULL) || r; - r = ((glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSource")) == NULL) || r; - r = ((glGetShaderiv = (PFNGLGETSHADERIVPROC)glewGetProcAddress((const GLubyte*)"glGetShaderiv")) == NULL) || r; - r = ((glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocation")) == NULL) || r; - r = ((glGetUniformfv = (PFNGLGETUNIFORMFVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfv")) == NULL) || r; - r = ((glGetUniformiv = (PFNGLGETUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformiv")) == NULL) || r; - r = ((glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointerv")) == NULL) || r; - r = ((glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdv")) == NULL) || r; - r = ((glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfv")) == NULL) || r; - r = ((glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribiv")) == NULL) || r; - r = ((glIsProgram = (PFNGLISPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glIsProgram")) == NULL) || r; - r = ((glIsShader = (PFNGLISSHADERPROC)glewGetProcAddress((const GLubyte*)"glIsShader")) == NULL) || r; - r = ((glLinkProgram = (PFNGLLINKPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glLinkProgram")) == NULL) || r; - r = ((glShaderSource = (PFNGLSHADERSOURCEPROC)glewGetProcAddress((const GLubyte*)"glShaderSource")) == NULL) || r; - r = ((glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparate")) == NULL) || r; - r = ((glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilMaskSeparate")) == NULL) || r; - r = ((glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparate")) == NULL) || r; - r = ((glUniform1f = (PFNGLUNIFORM1FPROC)glewGetProcAddress((const GLubyte*)"glUniform1f")) == NULL) || r; - r = ((glUniform1fv = (PFNGLUNIFORM1FVPROC)glewGetProcAddress((const GLubyte*)"glUniform1fv")) == NULL) || r; - r = ((glUniform1i = (PFNGLUNIFORM1IPROC)glewGetProcAddress((const GLubyte*)"glUniform1i")) == NULL) || r; - r = ((glUniform1iv = (PFNGLUNIFORM1IVPROC)glewGetProcAddress((const GLubyte*)"glUniform1iv")) == NULL) || r; - r = ((glUniform2f = (PFNGLUNIFORM2FPROC)glewGetProcAddress((const GLubyte*)"glUniform2f")) == NULL) || r; - r = ((glUniform2fv = (PFNGLUNIFORM2FVPROC)glewGetProcAddress((const GLubyte*)"glUniform2fv")) == NULL) || r; - r = ((glUniform2i = (PFNGLUNIFORM2IPROC)glewGetProcAddress((const GLubyte*)"glUniform2i")) == NULL) || r; - r = ((glUniform2iv = (PFNGLUNIFORM2IVPROC)glewGetProcAddress((const GLubyte*)"glUniform2iv")) == NULL) || r; - r = ((glUniform3f = (PFNGLUNIFORM3FPROC)glewGetProcAddress((const GLubyte*)"glUniform3f")) == NULL) || r; - r = ((glUniform3fv = (PFNGLUNIFORM3FVPROC)glewGetProcAddress((const GLubyte*)"glUniform3fv")) == NULL) || r; - r = ((glUniform3i = (PFNGLUNIFORM3IPROC)glewGetProcAddress((const GLubyte*)"glUniform3i")) == NULL) || r; - r = ((glUniform3iv = (PFNGLUNIFORM3IVPROC)glewGetProcAddress((const GLubyte*)"glUniform3iv")) == NULL) || r; - r = ((glUniform4f = (PFNGLUNIFORM4FPROC)glewGetProcAddress((const GLubyte*)"glUniform4f")) == NULL) || r; - r = ((glUniform4fv = (PFNGLUNIFORM4FVPROC)glewGetProcAddress((const GLubyte*)"glUniform4fv")) == NULL) || r; - r = ((glUniform4i = (PFNGLUNIFORM4IPROC)glewGetProcAddress((const GLubyte*)"glUniform4i")) == NULL) || r; - r = ((glUniform4iv = (PFNGLUNIFORM4IVPROC)glewGetProcAddress((const GLubyte*)"glUniform4iv")) == NULL) || r; - r = ((glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fv")) == NULL) || r; - r = ((glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fv")) == NULL) || r; - r = ((glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fv")) == NULL) || r; - r = ((glUseProgram = (PFNGLUSEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glUseProgram")) == NULL) || r; - r = ((glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)glewGetProcAddress((const GLubyte*)"glValidateProgram")) == NULL) || r; - r = ((glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1d")) == NULL) || r; - r = ((glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dv")) == NULL) || r; - r = ((glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1f")) == NULL) || r; - r = ((glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fv")) == NULL) || r; - r = ((glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1s")) == NULL) || r; - r = ((glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sv")) == NULL) || r; - r = ((glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2d")) == NULL) || r; - r = ((glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dv")) == NULL) || r; - r = ((glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2f")) == NULL) || r; - r = ((glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fv")) == NULL) || r; - r = ((glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2s")) == NULL) || r; - r = ((glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sv")) == NULL) || r; - r = ((glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3d")) == NULL) || r; - r = ((glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dv")) == NULL) || r; - r = ((glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3f")) == NULL) || r; - r = ((glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fv")) == NULL) || r; - r = ((glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3s")) == NULL) || r; - r = ((glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sv")) == NULL) || r; - r = ((glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nbv")) == NULL) || r; - r = ((glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Niv")) == NULL) || r; - r = ((glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nsv")) == NULL) || r; - r = ((glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nub")) == NULL) || r; - r = ((glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nubv")) == NULL) || r; - r = ((glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nuiv")) == NULL) || r; - r = ((glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4Nusv")) == NULL) || r; - r = ((glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bv")) == NULL) || r; - r = ((glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4d")) == NULL) || r; - r = ((glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dv")) == NULL) || r; - r = ((glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4f")) == NULL) || r; - r = ((glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fv")) == NULL) || r; - r = ((glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4iv")) == NULL) || r; - r = ((glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4s")) == NULL) || r; - r = ((glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sv")) == NULL) || r; - r = ((glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubv")) == NULL) || r; - r = ((glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uiv")) == NULL) || r; - r = ((glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usv")) == NULL) || r; - r = ((glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointer")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_2_0 */ - -#ifdef GL_VERSION_2_1 - -static GLboolean _glewInit_GL_VERSION_2_1 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x3fv")) == NULL) || r; - r = ((glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2x4fv")) == NULL) || r; - r = ((glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x2fv")) == NULL) || r; - r = ((glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3x4fv")) == NULL) || r; - r = ((glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x2fv")) == NULL) || r; - r = ((glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4x3fv")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_2_1 */ - -#ifdef GL_VERSION_3_0 - -static GLboolean _glewInit_GL_VERSION_3_0 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRender")) == NULL) || r; - r = ((glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedback")) == NULL) || r; - r = ((glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBase")) == NULL) || r; - r = ((glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRange")) == NULL) || r; - r = ((glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocation")) == NULL) || r; - r = ((glClampColor = (PFNGLCLAMPCOLORPROC)glewGetProcAddress((const GLubyte*)"glClampColor")) == NULL) || r; - r = ((glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfi")) == NULL) || r; - r = ((glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferfv")) == NULL) || r; - r = ((glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferiv")) == NULL) || r; - r = ((glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)glewGetProcAddress((const GLubyte*)"glClearBufferuiv")) == NULL) || r; - r = ((glColorMaski = (PFNGLCOLORMASKIPROC)glewGetProcAddress((const GLubyte*)"glColorMaski")) == NULL) || r; - r = ((glDisablei = (PFNGLDISABLEIPROC)glewGetProcAddress((const GLubyte*)"glDisablei")) == NULL) || r; - r = ((glEnablei = (PFNGLENABLEIPROC)glewGetProcAddress((const GLubyte*)"glEnablei")) == NULL) || r; - r = ((glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRender")) == NULL) || r; - r = ((glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedback")) == NULL) || r; - r = ((glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)glewGetProcAddress((const GLubyte*)"glGetBooleani_v")) == NULL) || r; - r = ((glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocation")) == NULL) || r; - r = ((glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)glewGetProcAddress((const GLubyte*)"glGetIntegeri_v")) == NULL) || r; - r = ((glGetStringi = (PFNGLGETSTRINGIPROC)glewGetProcAddress((const GLubyte*)"glGetStringi")) == NULL) || r; - r = ((glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIiv")) == NULL) || r; - r = ((glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuiv")) == NULL) || r; - r = ((glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVarying")) == NULL) || r; - r = ((glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuiv")) == NULL) || r; - r = ((glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIiv")) == NULL) || r; - r = ((glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuiv")) == NULL) || r; - r = ((glIsEnabledi = (PFNGLISENABLEDIPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledi")) == NULL) || r; - r = ((glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIiv")) == NULL) || r; - r = ((glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuiv")) == NULL) || r; - r = ((glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryings")) == NULL) || r; - r = ((glUniform1ui = (PFNGLUNIFORM1UIPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui")) == NULL) || r; - r = ((glUniform1uiv = (PFNGLUNIFORM1UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiv")) == NULL) || r; - r = ((glUniform2ui = (PFNGLUNIFORM2UIPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui")) == NULL) || r; - r = ((glUniform2uiv = (PFNGLUNIFORM2UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiv")) == NULL) || r; - r = ((glUniform3ui = (PFNGLUNIFORM3UIPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui")) == NULL) || r; - r = ((glUniform3uiv = (PFNGLUNIFORM3UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiv")) == NULL) || r; - r = ((glUniform4ui = (PFNGLUNIFORM4UIPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui")) == NULL) || r; - r = ((glUniform4uiv = (PFNGLUNIFORM4UIVPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiv")) == NULL) || r; - r = ((glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1i")) == NULL) || r; - r = ((glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iv")) == NULL) || r; - r = ((glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ui")) == NULL) || r; - r = ((glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiv")) == NULL) || r; - r = ((glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2i")) == NULL) || r; - r = ((glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iv")) == NULL) || r; - r = ((glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ui")) == NULL) || r; - r = ((glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiv")) == NULL) || r; - r = ((glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3i")) == NULL) || r; - r = ((glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iv")) == NULL) || r; - r = ((glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ui")) == NULL) || r; - r = ((glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiv")) == NULL) || r; - r = ((glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bv")) == NULL) || r; - r = ((glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4i")) == NULL) || r; - r = ((glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iv")) == NULL) || r; - r = ((glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4sv")) == NULL) || r; - r = ((glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubv")) == NULL) || r; - r = ((glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ui")) == NULL) || r; - r = ((glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiv")) == NULL) || r; - r = ((glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usv")) == NULL) || r; - r = ((glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointer")) == NULL) || r; - - return r; -} - -#endif /* GL_VERSION_3_0 */ - -#ifdef GL_3DFX_multisample - -#endif /* GL_3DFX_multisample */ - -#ifdef GL_3DFX_tbuffer - -static GLboolean _glewInit_GL_3DFX_tbuffer (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)glewGetProcAddress((const GLubyte*)"glTbufferMask3DFX")) == NULL) || r; - - return r; -} - -#endif /* GL_3DFX_tbuffer */ - -#ifdef GL_3DFX_texture_compression_FXT1 - -#endif /* GL_3DFX_texture_compression_FXT1 */ - -#ifdef GL_APPLE_client_storage - -#endif /* GL_APPLE_client_storage */ - -#ifdef GL_APPLE_element_array - -static GLboolean _glewInit_GL_APPLE_element_array (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayAPPLE")) == NULL) || r; - r = ((glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayAPPLE")) == NULL) || r; - r = ((glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)glewGetProcAddress((const GLubyte*)"glElementPointerAPPLE")) == NULL) || r; - r = ((glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementArrayAPPLE")) == NULL) || r; - r = ((glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawRangeElementArrayAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_element_array */ - -#ifdef GL_APPLE_fence - -static GLboolean _glewInit_GL_APPLE_fence (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesAPPLE")) == NULL) || r; - r = ((glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceAPPLE")) == NULL) || r; - r = ((glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFinishObjectAPPLE")) == NULL) || r; - r = ((glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenFencesAPPLE")) == NULL) || r; - r = ((glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsFenceAPPLE")) == NULL) || r; - r = ((glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glSetFenceAPPLE")) == NULL) || r; - r = ((glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestFenceAPPLE")) == NULL) || r; - r = ((glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTestObjectAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_fence */ - -#ifdef GL_APPLE_float_pixels - -#endif /* GL_APPLE_float_pixels */ - -#ifdef GL_APPLE_flush_buffer_range - -static GLboolean _glewInit_GL_APPLE_flush_buffer_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBufferParameteriAPPLE")) == NULL) || r; - r = ((glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRangeAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_flush_buffer_range */ - -#ifdef GL_APPLE_pixel_buffer - -#endif /* GL_APPLE_pixel_buffer */ - -#ifdef GL_APPLE_specular_vector - -#endif /* GL_APPLE_specular_vector */ - -#ifdef GL_APPLE_texture_range - -static GLboolean _glewInit_GL_APPLE_texture_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterPointervAPPLE")) == NULL) || r; - r = ((glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glTextureRangeAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_texture_range */ - -#ifdef GL_APPLE_transform_hint - -#endif /* GL_APPLE_transform_hint */ - -#ifdef GL_APPLE_vertex_array_object - -static GLboolean _glewInit_GL_APPLE_vertex_array_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArrayAPPLE")) == NULL) || r; - r = ((glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArraysAPPLE")) == NULL) || r; - r = ((glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArraysAPPLE")) == NULL) || r; - r = ((glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArrayAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_vertex_array_object */ - -#ifdef GL_APPLE_vertex_array_range - -static GLboolean _glewInit_GL_APPLE_vertex_array_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeAPPLE")) == NULL) || r; - r = ((glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayParameteriAPPLE")) == NULL) || r; - r = ((glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeAPPLE")) == NULL) || r; - - return r; -} - -#endif /* GL_APPLE_vertex_array_range */ - -#ifdef GL_APPLE_ycbcr_422 - -#endif /* GL_APPLE_ycbcr_422 */ - -#ifdef GL_ARB_color_buffer_float - -static GLboolean _glewInit_GL_ARB_color_buffer_float (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glClampColorARB = (PFNGLCLAMPCOLORARBPROC)glewGetProcAddress((const GLubyte*)"glClampColorARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_color_buffer_float */ - -#ifdef GL_ARB_depth_buffer_float - -#endif /* GL_ARB_depth_buffer_float */ - -#ifdef GL_ARB_depth_texture - -#endif /* GL_ARB_depth_texture */ - -#ifdef GL_ARB_draw_buffers - -static GLboolean _glewInit_GL_ARB_draw_buffers (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_draw_buffers */ - -#ifdef GL_ARB_draw_instanced - -static GLboolean _glewInit_GL_ARB_draw_instanced (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedARB")) == NULL) || r; - r = ((glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_draw_instanced */ - -#ifdef GL_ARB_fragment_program - -#endif /* GL_ARB_fragment_program */ - -#ifdef GL_ARB_fragment_program_shadow - -#endif /* GL_ARB_fragment_program_shadow */ - -#ifdef GL_ARB_fragment_shader - -#endif /* GL_ARB_fragment_shader */ - -#ifdef GL_ARB_framebuffer_object - -static GLboolean _glewInit_GL_ARB_framebuffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindFramebuffer")) == NULL) || r; - r = ((glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbuffer")) == NULL) || r; - r = ((glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebuffer")) == NULL) || r; - r = ((glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatus")) == NULL) || r; - r = ((glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffers")) == NULL) || r; - r = ((glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffers")) == NULL) || r; - r = ((glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbuffer")) == NULL) || r; - r = ((glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayer")) == NULL) || r; - r = ((glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1D")) == NULL) || r; - r = ((glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2D")) == NULL) || r; - r = ((glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3D")) == NULL) || r; - r = ((glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffers")) == NULL) || r; - r = ((glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffers")) == NULL) || r; - r = ((glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmap")) == NULL) || r; - r = ((glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameteriv")) == NULL) || r; - r = ((glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameteriv")) == NULL) || r; - r = ((glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsFramebuffer")) == NULL) || r; - r = ((glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbuffer")) == NULL) || r; - r = ((glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorage")) == NULL) || r; - r = ((glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisample")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_framebuffer_object */ - -#ifdef GL_ARB_framebuffer_sRGB - -#endif /* GL_ARB_framebuffer_sRGB */ - -#ifdef GL_ARB_geometry_shader4 - -static GLboolean _glewInit_GL_ARB_geometry_shader4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureARB")) == NULL) || r; - r = ((glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceARB")) == NULL) || r; - r = ((glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerARB")) == NULL) || r; - r = ((glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_geometry_shader4 */ - -#ifdef GL_ARB_half_float_pixel - -#endif /* GL_ARB_half_float_pixel */ - -#ifdef GL_ARB_half_float_vertex - -#endif /* GL_ARB_half_float_vertex */ - -#ifdef GL_ARB_imaging - -static GLboolean _glewInit_GL_ARB_imaging (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)"glBlendEquation")) == NULL) || r; - r = ((glColorSubTable = (PFNGLCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorSubTable")) == NULL) || r; - r = ((glColorTable = (PFNGLCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glColorTable")) == NULL) || r; - r = ((glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfv")) == NULL) || r; - r = ((glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameteriv")) == NULL) || r; - r = ((glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1D")) == NULL) || r; - r = ((glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2D")) == NULL) || r; - r = ((glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterf")) == NULL) || r; - r = ((glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfv")) == NULL) || r; - r = ((glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteri")) == NULL) || r; - r = ((glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriv")) == NULL) || r; - r = ((glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTable")) == NULL) || r; - r = ((glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTable")) == NULL) || r; - r = ((glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1D")) == NULL) || r; - r = ((glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2D")) == NULL) || r; - r = ((glGetColorTable = (PFNGLGETCOLORTABLEPROC)glewGetProcAddress((const GLubyte*)"glGetColorTable")) == NULL) || r; - r = ((glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfv")) == NULL) || r; - r = ((glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameteriv")) == NULL) || r; - r = ((glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilter")) == NULL) || r; - r = ((glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfv")) == NULL) || r; - r = ((glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameteriv")) == NULL) || r; - r = ((glGetHistogram = (PFNGLGETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glGetHistogram")) == NULL) || r; - r = ((glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfv")) == NULL) || r; - r = ((glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameteriv")) == NULL) || r; - r = ((glGetMinmax = (PFNGLGETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glGetMinmax")) == NULL) || r; - r = ((glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfv")) == NULL) || r; - r = ((glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameteriv")) == NULL) || r; - r = ((glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilter")) == NULL) || r; - r = ((glHistogram = (PFNGLHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glHistogram")) == NULL) || r; - r = ((glMinmax = (PFNGLMINMAXPROC)glewGetProcAddress((const GLubyte*)"glMinmax")) == NULL) || r; - r = ((glResetHistogram = (PFNGLRESETHISTOGRAMPROC)glewGetProcAddress((const GLubyte*)"glResetHistogram")) == NULL) || r; - r = ((glResetMinmax = (PFNGLRESETMINMAXPROC)glewGetProcAddress((const GLubyte*)"glResetMinmax")) == NULL) || r; - r = ((glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2D")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_imaging */ - -#ifdef GL_ARB_instanced_arrays - -static GLboolean _glewInit_GL_ARB_instanced_arrays (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribDivisorARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_instanced_arrays */ - -#ifdef GL_ARB_map_buffer_range - -static GLboolean _glewInit_GL_ARB_map_buffer_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glFlushMappedBufferRange")) == NULL) || r; - r = ((glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)glewGetProcAddress((const GLubyte*)"glMapBufferRange")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_map_buffer_range */ - -#ifdef GL_ARB_matrix_palette - -static GLboolean _glewInit_GL_ARB_matrix_palette (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)glewGetProcAddress((const GLubyte*)"glCurrentPaletteMatrixARB")) == NULL) || r; - r = ((glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexPointerARB")) == NULL) || r; - r = ((glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexubvARB")) == NULL) || r; - r = ((glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexuivARB")) == NULL) || r; - r = ((glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)glewGetProcAddress((const GLubyte*)"glMatrixIndexusvARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_matrix_palette */ - -#ifdef GL_ARB_multisample - -static GLboolean _glewInit_GL_ARB_multisample (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)glewGetProcAddress((const GLubyte*)"glSampleCoverageARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_multisample */ - -#ifdef GL_ARB_multitexture - -static GLboolean _glewInit_GL_ARB_multitexture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glActiveTextureARB")) == NULL) || r; - r = ((glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)glewGetProcAddress((const GLubyte*)"glClientActiveTextureARB")) == NULL) || r; - r = ((glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dARB")) == NULL) || r; - r = ((glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1dvARB")) == NULL) || r; - r = ((glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fARB")) == NULL) || r; - r = ((glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1fvARB")) == NULL) || r; - r = ((glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1iARB")) == NULL) || r; - r = ((glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1ivARB")) == NULL) || r; - r = ((glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1sARB")) == NULL) || r; - r = ((glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1svARB")) == NULL) || r; - r = ((glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dARB")) == NULL) || r; - r = ((glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2dvARB")) == NULL) || r; - r = ((glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fARB")) == NULL) || r; - r = ((glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2fvARB")) == NULL) || r; - r = ((glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2iARB")) == NULL) || r; - r = ((glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2ivARB")) == NULL) || r; - r = ((glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2sARB")) == NULL) || r; - r = ((glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2svARB")) == NULL) || r; - r = ((glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dARB")) == NULL) || r; - r = ((glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3dvARB")) == NULL) || r; - r = ((glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fARB")) == NULL) || r; - r = ((glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3fvARB")) == NULL) || r; - r = ((glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3iARB")) == NULL) || r; - r = ((glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3ivARB")) == NULL) || r; - r = ((glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3sARB")) == NULL) || r; - r = ((glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3svARB")) == NULL) || r; - r = ((glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dARB")) == NULL) || r; - r = ((glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4dvARB")) == NULL) || r; - r = ((glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fARB")) == NULL) || r; - r = ((glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4fvARB")) == NULL) || r; - r = ((glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4iARB")) == NULL) || r; - r = ((glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4ivARB")) == NULL) || r; - r = ((glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4sARB")) == NULL) || r; - r = ((glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4svARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_multitexture */ - -#ifdef GL_ARB_occlusion_query - -static GLboolean _glewInit_GL_ARB_occlusion_query (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryARB")) == NULL) || r; - r = ((glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteQueriesARB")) == NULL) || r; - r = ((glEndQueryARB = (PFNGLENDQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glEndQueryARB")) == NULL) || r; - r = ((glGenQueriesARB = (PFNGLGENQUERIESARBPROC)glewGetProcAddress((const GLubyte*)"glGenQueriesARB")) == NULL) || r; - r = ((glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectivARB")) == NULL) || r; - r = ((glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectuivARB")) == NULL) || r; - r = ((glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetQueryivARB")) == NULL) || r; - r = ((glIsQueryARB = (PFNGLISQUERYARBPROC)glewGetProcAddress((const GLubyte*)"glIsQueryARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_occlusion_query */ - -#ifdef GL_ARB_pixel_buffer_object - -#endif /* GL_ARB_pixel_buffer_object */ - -#ifdef GL_ARB_point_parameters - -static GLboolean _glewInit_GL_ARB_point_parameters (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfARB")) == NULL) || r; - r = ((glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_point_parameters */ - -#ifdef GL_ARB_point_sprite - -#endif /* GL_ARB_point_sprite */ - -#ifdef GL_ARB_shader_objects - -static GLboolean _glewInit_GL_ARB_shader_objects (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glAttachObjectARB")) == NULL) || r; - r = ((glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderARB")) == NULL) || r; - r = ((glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateProgramObjectARB")) == NULL) || r; - r = ((glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glCreateShaderObjectARB")) == NULL) || r; - r = ((glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteObjectARB")) == NULL) || r; - r = ((glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glDetachObjectARB")) == NULL) || r; - r = ((glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveUniformARB")) == NULL) || r; - r = ((glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttachedObjectsARB")) == NULL) || r; - r = ((glGetHandleARB = (PFNGLGETHANDLEARBPROC)glewGetProcAddress((const GLubyte*)"glGetHandleARB")) == NULL) || r; - r = ((glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)glewGetProcAddress((const GLubyte*)"glGetInfoLogARB")) == NULL) || r; - r = ((glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterfvARB")) == NULL) || r; - r = ((glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetObjectParameterivARB")) == NULL) || r; - r = ((glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glGetShaderSourceARB")) == NULL) || r; - r = ((glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformLocationARB")) == NULL) || r; - r = ((glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformfvARB")) == NULL) || r; - r = ((glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetUniformivARB")) == NULL) || r; - r = ((glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glLinkProgramARB")) == NULL) || r; - r = ((glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)glewGetProcAddress((const GLubyte*)"glShaderSourceARB")) == NULL) || r; - r = ((glUniform1fARB = (PFNGLUNIFORM1FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fARB")) == NULL) || r; - r = ((glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1fvARB")) == NULL) || r; - r = ((glUniform1iARB = (PFNGLUNIFORM1IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1iARB")) == NULL) || r; - r = ((glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform1ivARB")) == NULL) || r; - r = ((glUniform2fARB = (PFNGLUNIFORM2FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fARB")) == NULL) || r; - r = ((glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2fvARB")) == NULL) || r; - r = ((glUniform2iARB = (PFNGLUNIFORM2IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2iARB")) == NULL) || r; - r = ((glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform2ivARB")) == NULL) || r; - r = ((glUniform3fARB = (PFNGLUNIFORM3FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fARB")) == NULL) || r; - r = ((glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3fvARB")) == NULL) || r; - r = ((glUniform3iARB = (PFNGLUNIFORM3IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3iARB")) == NULL) || r; - r = ((glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform3ivARB")) == NULL) || r; - r = ((glUniform4fARB = (PFNGLUNIFORM4FARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fARB")) == NULL) || r; - r = ((glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4fvARB")) == NULL) || r; - r = ((glUniform4iARB = (PFNGLUNIFORM4IARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4iARB")) == NULL) || r; - r = ((glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)glewGetProcAddress((const GLubyte*)"glUniform4ivARB")) == NULL) || r; - r = ((glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix2fvARB")) == NULL) || r; - r = ((glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix3fvARB")) == NULL) || r; - r = ((glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)glewGetProcAddress((const GLubyte*)"glUniformMatrix4fvARB")) == NULL) || r; - r = ((glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)glewGetProcAddress((const GLubyte*)"glUseProgramObjectARB")) == NULL) || r; - r = ((glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glValidateProgramARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_shader_objects */ - -#ifdef GL_ARB_shading_language_100 - -#endif /* GL_ARB_shading_language_100 */ - -#ifdef GL_ARB_shadow - -#endif /* GL_ARB_shadow */ - -#ifdef GL_ARB_shadow_ambient - -#endif /* GL_ARB_shadow_ambient */ - -#ifdef GL_ARB_texture_border_clamp - -#endif /* GL_ARB_texture_border_clamp */ - -#ifdef GL_ARB_texture_buffer_object - -static GLboolean _glewInit_GL_ARB_texture_buffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexBufferARB = (PFNGLTEXBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glTexBufferARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_texture_buffer_object */ - -#ifdef GL_ARB_texture_compression - -static GLboolean _glewInit_GL_ARB_texture_compression (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage1DARB")) == NULL) || r; - r = ((glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage2DARB")) == NULL) || r; - r = ((glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexImage3DARB")) == NULL) || r; - r = ((glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage1DARB")) == NULL) || r; - r = ((glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage2DARB")) == NULL) || r; - r = ((glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)glewGetProcAddress((const GLubyte*)"glCompressedTexSubImage3DARB")) == NULL) || r; - r = ((glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTexImageARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_texture_compression */ - -#ifdef GL_ARB_texture_compression_rgtc - -#endif /* GL_ARB_texture_compression_rgtc */ - -#ifdef GL_ARB_texture_cube_map - -#endif /* GL_ARB_texture_cube_map */ - -#ifdef GL_ARB_texture_env_add - -#endif /* GL_ARB_texture_env_add */ - -#ifdef GL_ARB_texture_env_combine - -#endif /* GL_ARB_texture_env_combine */ - -#ifdef GL_ARB_texture_env_crossbar - -#endif /* GL_ARB_texture_env_crossbar */ - -#ifdef GL_ARB_texture_env_dot3 - -#endif /* GL_ARB_texture_env_dot3 */ - -#ifdef GL_ARB_texture_float - -#endif /* GL_ARB_texture_float */ - -#ifdef GL_ARB_texture_mirrored_repeat - -#endif /* GL_ARB_texture_mirrored_repeat */ - -#ifdef GL_ARB_texture_non_power_of_two - -#endif /* GL_ARB_texture_non_power_of_two */ - -#ifdef GL_ARB_texture_rectangle - -#endif /* GL_ARB_texture_rectangle */ - -#ifdef GL_ARB_texture_rg - -#endif /* GL_ARB_texture_rg */ - -#ifdef GL_ARB_transpose_matrix - -static GLboolean _glewInit_GL_ARB_transpose_matrix (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixdARB")) == NULL) || r; - r = ((glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glLoadTransposeMatrixfARB")) == NULL) || r; - r = ((glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixdARB")) == NULL) || r; - r = ((glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)glewGetProcAddress((const GLubyte*)"glMultTransposeMatrixfARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_transpose_matrix */ - -#ifdef GL_ARB_vertex_array_object - -static GLboolean _glewInit_GL_ARB_vertex_array_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glBindVertexArray")) == NULL) || r; - r = ((glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexArrays")) == NULL) || r; - r = ((glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)glewGetProcAddress((const GLubyte*)"glGenVertexArrays")) == NULL) || r; - r = ((glIsVertexArray = (PFNGLISVERTEXARRAYPROC)glewGetProcAddress((const GLubyte*)"glIsVertexArray")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_vertex_array_object */ - -#ifdef GL_ARB_vertex_blend - -static GLboolean _glewInit_GL_ARB_vertex_blend (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendARB")) == NULL) || r; - r = ((glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glWeightPointerARB")) == NULL) || r; - r = ((glWeightbvARB = (PFNGLWEIGHTBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightbvARB")) == NULL) || r; - r = ((glWeightdvARB = (PFNGLWEIGHTDVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightdvARB")) == NULL) || r; - r = ((glWeightfvARB = (PFNGLWEIGHTFVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightfvARB")) == NULL) || r; - r = ((glWeightivARB = (PFNGLWEIGHTIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightivARB")) == NULL) || r; - r = ((glWeightsvARB = (PFNGLWEIGHTSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightsvARB")) == NULL) || r; - r = ((glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightubvARB")) == NULL) || r; - r = ((glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightuivARB")) == NULL) || r; - r = ((glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)glewGetProcAddress((const GLubyte*)"glWeightusvARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_vertex_blend */ - -#ifdef GL_ARB_vertex_buffer_object - -static GLboolean _glewInit_GL_ARB_vertex_buffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindBufferARB = (PFNGLBINDBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glBindBufferARB")) == NULL) || r; - r = ((glBufferDataARB = (PFNGLBUFFERDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferDataARB")) == NULL) || r; - r = ((glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glBufferSubDataARB")) == NULL) || r; - r = ((glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteBuffersARB")) == NULL) || r; - r = ((glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)glewGetProcAddress((const GLubyte*)"glGenBuffersARB")) == NULL) || r; - r = ((glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterivARB")) == NULL) || r; - r = ((glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferPointervARB")) == NULL) || r; - r = ((glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)glewGetProcAddress((const GLubyte*)"glGetBufferSubDataARB")) == NULL) || r; - r = ((glIsBufferARB = (PFNGLISBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glIsBufferARB")) == NULL) || r; - r = ((glMapBufferARB = (PFNGLMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glMapBufferARB")) == NULL) || r; - r = ((glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"glUnmapBufferARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_vertex_buffer_object */ - -#ifdef GL_ARB_vertex_program - -static GLboolean _glewInit_GL_ARB_vertex_program (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glBindProgramARB")) == NULL) || r; - r = ((glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsARB")) == NULL) || r; - r = ((glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glDisableVertexAttribArrayARB")) == NULL) || r; - r = ((glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)glewGetProcAddress((const GLubyte*)"glEnableVertexAttribArrayARB")) == NULL) || r; - r = ((glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsARB")) == NULL) || r; - r = ((glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterdvARB")) == NULL) || r; - r = ((glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramEnvParameterfvARB")) == NULL) || r; - r = ((glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterdvARB")) == NULL) || r; - r = ((glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramLocalParameterfvARB")) == NULL) || r; - r = ((glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringARB")) == NULL) || r; - r = ((glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivARB")) == NULL) || r; - r = ((glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervARB")) == NULL) || r; - r = ((glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvARB")) == NULL) || r; - r = ((glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvARB")) == NULL) || r; - r = ((glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivARB")) == NULL) || r; - r = ((glIsProgramARB = (PFNGLISPROGRAMARBPROC)glewGetProcAddress((const GLubyte*)"glIsProgramARB")) == NULL) || r; - r = ((glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dARB")) == NULL) || r; - r = ((glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4dvARB")) == NULL) || r; - r = ((glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fARB")) == NULL) || r; - r = ((glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameter4fvARB")) == NULL) || r; - r = ((glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dARB")) == NULL) || r; - r = ((glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4dvARB")) == NULL) || r; - r = ((glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fARB")) == NULL) || r; - r = ((glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameter4fvARB")) == NULL) || r; - r = ((glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glProgramStringARB")) == NULL) || r; - r = ((glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dARB")) == NULL) || r; - r = ((glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvARB")) == NULL) || r; - r = ((glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fARB")) == NULL) || r; - r = ((glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvARB")) == NULL) || r; - r = ((glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sARB")) == NULL) || r; - r = ((glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svARB")) == NULL) || r; - r = ((glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dARB")) == NULL) || r; - r = ((glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvARB")) == NULL) || r; - r = ((glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fARB")) == NULL) || r; - r = ((glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvARB")) == NULL) || r; - r = ((glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sARB")) == NULL) || r; - r = ((glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svARB")) == NULL) || r; - r = ((glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dARB")) == NULL) || r; - r = ((glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvARB")) == NULL) || r; - r = ((glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fARB")) == NULL) || r; - r = ((glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvARB")) == NULL) || r; - r = ((glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sARB")) == NULL) || r; - r = ((glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svARB")) == NULL) || r; - r = ((glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NbvARB")) == NULL) || r; - r = ((glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NivARB")) == NULL) || r; - r = ((glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NsvARB")) == NULL) || r; - r = ((glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubARB")) == NULL) || r; - r = ((glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NubvARB")) == NULL) || r; - r = ((glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NuivARB")) == NULL) || r; - r = ((glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4NusvARB")) == NULL) || r; - r = ((glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4bvARB")) == NULL) || r; - r = ((glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dARB")) == NULL) || r; - r = ((glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvARB")) == NULL) || r; - r = ((glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fARB")) == NULL) || r; - r = ((glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvARB")) == NULL) || r; - r = ((glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ivARB")) == NULL) || r; - r = ((glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sARB")) == NULL) || r; - r = ((glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svARB")) == NULL) || r; - r = ((glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvARB")) == NULL) || r; - r = ((glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4uivARB")) == NULL) || r; - r = ((glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4usvARB")) == NULL) || r; - r = ((glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_vertex_program */ - -#ifdef GL_ARB_vertex_shader - -static GLboolean _glewInit_GL_ARB_vertex_shader (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glBindAttribLocationARB")) == NULL) || r; - r = ((glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"glGetActiveAttribARB")) == NULL) || r; - r = ((glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)glewGetProcAddress((const GLubyte*)"glGetAttribLocationARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_vertex_shader */ - -#ifdef GL_ARB_window_pos - -static GLboolean _glewInit_GL_ARB_window_pos (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dARB")) == NULL) || r; - r = ((glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvARB")) == NULL) || r; - r = ((glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fARB")) == NULL) || r; - r = ((glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvARB")) == NULL) || r; - r = ((glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iARB")) == NULL) || r; - r = ((glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivARB")) == NULL) || r; - r = ((glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sARB")) == NULL) || r; - r = ((glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svARB")) == NULL) || r; - r = ((glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dARB")) == NULL) || r; - r = ((glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvARB")) == NULL) || r; - r = ((glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fARB")) == NULL) || r; - r = ((glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvARB")) == NULL) || r; - r = ((glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iARB")) == NULL) || r; - r = ((glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivARB")) == NULL) || r; - r = ((glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sARB")) == NULL) || r; - r = ((glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svARB")) == NULL) || r; - - return r; -} - -#endif /* GL_ARB_window_pos */ - -#ifdef GL_ATIX_point_sprites - -#endif /* GL_ATIX_point_sprites */ - -#ifdef GL_ATIX_texture_env_combine3 - -#endif /* GL_ATIX_texture_env_combine3 */ - -#ifdef GL_ATIX_texture_env_route - -#endif /* GL_ATIX_texture_env_route */ - -#ifdef GL_ATIX_vertex_shader_output_point_size - -#endif /* GL_ATIX_vertex_shader_output_point_size */ - -#ifdef GL_ATI_draw_buffers - -static GLboolean _glewInit_GL_ATI_draw_buffers (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)glewGetProcAddress((const GLubyte*)"glDrawBuffersATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_draw_buffers */ - -#ifdef GL_ATI_element_array - -static GLboolean _glewInit_GL_ATI_element_array (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawElementArrayATI")) == NULL) || r; - r = ((glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementArrayATI")) == NULL) || r; - r = ((glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)glewGetProcAddress((const GLubyte*)"glElementPointerATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_element_array */ - -#ifdef GL_ATI_envmap_bumpmap - -static GLboolean _glewInit_GL_ATI_envmap_bumpmap (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterfvATI")) == NULL) || r; - r = ((glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetTexBumpParameterivATI")) == NULL) || r; - r = ((glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterfvATI")) == NULL) || r; - r = ((glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)glewGetProcAddress((const GLubyte*)"glTexBumpParameterivATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_envmap_bumpmap */ - -#ifdef GL_ATI_fragment_shader - -static GLboolean _glewInit_GL_ATI_fragment_shader (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp1ATI")) == NULL) || r; - r = ((glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp2ATI")) == NULL) || r; - r = ((glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glAlphaFragmentOp3ATI")) == NULL) || r; - r = ((glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBeginFragmentShaderATI")) == NULL) || r; - r = ((glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glBindFragmentShaderATI")) == NULL) || r; - r = ((glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp1ATI")) == NULL) || r; - r = ((glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp2ATI")) == NULL) || r; - r = ((glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)glewGetProcAddress((const GLubyte*)"glColorFragmentOp3ATI")) == NULL) || r; - r = ((glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glDeleteFragmentShaderATI")) == NULL) || r; - r = ((glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)glewGetProcAddress((const GLubyte*)"glEndFragmentShaderATI")) == NULL) || r; - r = ((glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)glewGetProcAddress((const GLubyte*)"glGenFragmentShadersATI")) == NULL) || r; - r = ((glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)glewGetProcAddress((const GLubyte*)"glPassTexCoordATI")) == NULL) || r; - r = ((glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)glewGetProcAddress((const GLubyte*)"glSampleMapATI")) == NULL) || r; - r = ((glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)glewGetProcAddress((const GLubyte*)"glSetFragmentShaderConstantATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_fragment_shader */ - -#ifdef GL_ATI_map_object_buffer - -static GLboolean _glewInit_GL_ATI_map_object_buffer (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glMapObjectBufferATI")) == NULL) || r; - r = ((glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUnmapObjectBufferATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_map_object_buffer */ - -#ifdef GL_ATI_pn_triangles - -static GLboolean _glewInit_GL_ATI_pn_triangles (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesfATI")) == NULL) || r; - r = ((glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)glewGetProcAddress((const GLubyte*)"glPNTrianglesiATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_pn_triangles */ - -#ifdef GL_ATI_separate_stencil - -static GLboolean _glewInit_GL_ATI_separate_stencil (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilFuncSeparateATI")) == NULL) || r; - r = ((glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)glewGetProcAddress((const GLubyte*)"glStencilOpSeparateATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_separate_stencil */ - -#ifdef GL_ATI_shader_texture_lod - -#endif /* GL_ATI_shader_texture_lod */ - -#ifdef GL_ATI_text_fragment_shader - -#endif /* GL_ATI_text_fragment_shader */ - -#ifdef GL_ATI_texture_compression_3dc - -#endif /* GL_ATI_texture_compression_3dc */ - -#ifdef GL_ATI_texture_env_combine3 - -#endif /* GL_ATI_texture_env_combine3 */ - -#ifdef GL_ATI_texture_float - -#endif /* GL_ATI_texture_float */ - -#ifdef GL_ATI_texture_mirror_once - -#endif /* GL_ATI_texture_mirror_once */ - -#ifdef GL_ATI_vertex_array_object - -static GLboolean _glewInit_GL_ATI_vertex_array_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glArrayObjectATI")) == NULL) || r; - r = ((glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glFreeObjectBufferATI")) == NULL) || r; - r = ((glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectfvATI")) == NULL) || r; - r = ((glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetArrayObjectivATI")) == NULL) || r; - r = ((glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferfvATI")) == NULL) || r; - r = ((glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetObjectBufferivATI")) == NULL) || r; - r = ((glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectfvATI")) == NULL) || r; - r = ((glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVariantArrayObjectivATI")) == NULL) || r; - r = ((glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glIsObjectBufferATI")) == NULL) || r; - r = ((glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glNewObjectBufferATI")) == NULL) || r; - r = ((glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)glewGetProcAddress((const GLubyte*)"glUpdateObjectBufferATI")) == NULL) || r; - r = ((glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVariantArrayObjectATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_vertex_array_object */ - -#ifdef GL_ATI_vertex_attrib_array_object - -static GLboolean _glewInit_GL_ATI_vertex_attrib_array_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectfvATI")) == NULL) || r; - r = ((glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribArrayObjectivATI")) == NULL) || r; - r = ((glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribArrayObjectATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_vertex_attrib_array_object */ - -#ifdef GL_ATI_vertex_streams - -static GLboolean _glewInit_GL_ATI_vertex_streams (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)glewGetProcAddress((const GLubyte*)"glClientActiveVertexStreamATI")) == NULL) || r; - r = ((glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bATI")) == NULL) || r; - r = ((glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3bvATI")) == NULL) || r; - r = ((glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dATI")) == NULL) || r; - r = ((glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3dvATI")) == NULL) || r; - r = ((glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fATI")) == NULL) || r; - r = ((glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3fvATI")) == NULL) || r; - r = ((glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3iATI")) == NULL) || r; - r = ((glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3ivATI")) == NULL) || r; - r = ((glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3sATI")) == NULL) || r; - r = ((glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glNormalStream3svATI")) == NULL) || r; - r = ((glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnvfATI")) == NULL) || r; - r = ((glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)glewGetProcAddress((const GLubyte*)"glVertexBlendEnviATI")) == NULL) || r; - r = ((glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dATI")) == NULL) || r; - r = ((glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2dvATI")) == NULL) || r; - r = ((glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fATI")) == NULL) || r; - r = ((glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2fvATI")) == NULL) || r; - r = ((glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2iATI")) == NULL) || r; - r = ((glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2ivATI")) == NULL) || r; - r = ((glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2sATI")) == NULL) || r; - r = ((glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream2svATI")) == NULL) || r; - r = ((glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dATI")) == NULL) || r; - r = ((glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3dvATI")) == NULL) || r; - r = ((glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fATI")) == NULL) || r; - r = ((glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3fvATI")) == NULL) || r; - r = ((glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3iATI")) == NULL) || r; - r = ((glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3ivATI")) == NULL) || r; - r = ((glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3sATI")) == NULL) || r; - r = ((glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream3svATI")) == NULL) || r; - r = ((glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dATI")) == NULL) || r; - r = ((glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4dvATI")) == NULL) || r; - r = ((glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fATI")) == NULL) || r; - r = ((glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4fvATI")) == NULL) || r; - r = ((glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4iATI")) == NULL) || r; - r = ((glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4ivATI")) == NULL) || r; - r = ((glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4sATI")) == NULL) || r; - r = ((glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)glewGetProcAddress((const GLubyte*)"glVertexStream4svATI")) == NULL) || r; - - return r; -} - -#endif /* GL_ATI_vertex_streams */ - -#ifdef GL_EXT_422_pixels - -#endif /* GL_EXT_422_pixels */ - -#ifdef GL_EXT_Cg_shader - -#endif /* GL_EXT_Cg_shader */ - -#ifdef GL_EXT_abgr - -#endif /* GL_EXT_abgr */ - -#ifdef GL_EXT_bgra - -#endif /* GL_EXT_bgra */ - -#ifdef GL_EXT_bindable_uniform - -static GLboolean _glewInit_GL_EXT_bindable_uniform (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformBufferSizeEXT")) == NULL) || r; - r = ((glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformOffsetEXT")) == NULL) || r; - r = ((glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUniformBufferEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_bindable_uniform */ - -#ifdef GL_EXT_blend_color - -static GLboolean _glewInit_GL_EXT_blend_color (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)glewGetProcAddress((const GLubyte*)"glBlendColorEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_blend_color */ - -#ifdef GL_EXT_blend_equation_separate - -static GLboolean _glewInit_GL_EXT_blend_equation_separate (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparateEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_blend_equation_separate */ - -#ifdef GL_EXT_blend_func_separate - -static GLboolean _glewInit_GL_EXT_blend_func_separate (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparateEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_blend_func_separate */ - -#ifdef GL_EXT_blend_logic_op - -#endif /* GL_EXT_blend_logic_op */ - -#ifdef GL_EXT_blend_minmax - -static GLboolean _glewInit_GL_EXT_blend_minmax (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_blend_minmax */ - -#ifdef GL_EXT_blend_subtract - -#endif /* GL_EXT_blend_subtract */ - -#ifdef GL_EXT_clip_volume_hint - -#endif /* GL_EXT_clip_volume_hint */ - -#ifdef GL_EXT_cmyka - -#endif /* GL_EXT_cmyka */ - -#ifdef GL_EXT_color_subtable - -static GLboolean _glewInit_GL_EXT_color_subtable (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorSubTableEXT")) == NULL) || r; - r = ((glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyColorSubTableEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_color_subtable */ - -#ifdef GL_EXT_compiled_vertex_array - -static GLboolean _glewInit_GL_EXT_compiled_vertex_array (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glLockArraysEXT")) == NULL) || r; - r = ((glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glUnlockArraysEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_compiled_vertex_array */ - -#ifdef GL_EXT_convolution - -static GLboolean _glewInit_GL_EXT_convolution (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter1DEXT")) == NULL) || r; - r = ((glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionFilter2DEXT")) == NULL) || r; - r = ((glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfEXT")) == NULL) || r; - r = ((glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterfvEXT")) == NULL) || r; - r = ((glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameteriEXT")) == NULL) || r; - r = ((glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glConvolutionParameterivEXT")) == NULL) || r; - r = ((glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter1DEXT")) == NULL) || r; - r = ((glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyConvolutionFilter2DEXT")) == NULL) || r; - r = ((glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionFilterEXT")) == NULL) || r; - r = ((glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterfvEXT")) == NULL) || r; - r = ((glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetConvolutionParameterivEXT")) == NULL) || r; - r = ((glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)glewGetProcAddress((const GLubyte*)"glGetSeparableFilterEXT")) == NULL) || r; - r = ((glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)glewGetProcAddress((const GLubyte*)"glSeparableFilter2DEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_convolution */ - -#ifdef GL_EXT_coordinate_frame - -static GLboolean _glewInit_GL_EXT_coordinate_frame (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glBinormalPointerEXT")) == NULL) || r; - r = ((glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTangentPointerEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_coordinate_frame */ - -#ifdef GL_EXT_copy_texture - -static GLboolean _glewInit_GL_EXT_copy_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage1DEXT")) == NULL) || r; - r = ((glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexImage2DEXT")) == NULL) || r; - r = ((glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage1DEXT")) == NULL) || r; - r = ((glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage2DEXT")) == NULL) || r; - r = ((glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTexSubImage3DEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_copy_texture */ - -#ifdef GL_EXT_cull_vertex - -static GLboolean _glewInit_GL_EXT_cull_vertex (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterdvEXT")) == NULL) || r; - r = ((glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glCullParameterfvEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_cull_vertex */ - -#ifdef GL_EXT_depth_bounds_test - -static GLboolean _glewInit_GL_EXT_depth_bounds_test (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_depth_bounds_test */ - -#ifdef GL_EXT_direct_state_access - -static GLboolean _glewInit_GL_EXT_direct_state_access (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindMultiTextureEXT")) == NULL) || r; - r = ((glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckNamedFramebufferStatusEXT")) == NULL) || r; - r = ((glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glClientAttribDefaultEXT")) == NULL) || r; - r = ((glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage1DEXT")) == NULL) || r; - r = ((glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage2DEXT")) == NULL) || r; - r = ((glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexImage3DEXT")) == NULL) || r; - r = ((glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage1DEXT")) == NULL) || r; - r = ((glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage2DEXT")) == NULL) || r; - r = ((glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedMultiTexSubImage3DEXT")) == NULL) || r; - r = ((glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage1DEXT")) == NULL) || r; - r = ((glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage2DEXT")) == NULL) || r; - r = ((glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureImage3DEXT")) == NULL) || r; - r = ((glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage1DEXT")) == NULL) || r; - r = ((glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage2DEXT")) == NULL) || r; - r = ((glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCompressedTextureSubImage3DEXT")) == NULL) || r; - r = ((glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage1DEXT")) == NULL) || r; - r = ((glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexImage2DEXT")) == NULL) || r; - r = ((glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage1DEXT")) == NULL) || r; - r = ((glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage2DEXT")) == NULL) || r; - r = ((glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyMultiTexSubImage3DEXT")) == NULL) || r; - r = ((glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage1DEXT")) == NULL) || r; - r = ((glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureImage2DEXT")) == NULL) || r; - r = ((glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage1DEXT")) == NULL) || r; - r = ((glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage2DEXT")) == NULL) || r; - r = ((glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glCopyTextureSubImage3DEXT")) == NULL) || r; - r = ((glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableClientStateIndexedEXT")) == NULL) || r; - r = ((glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableClientStateIndexedEXT")) == NULL) || r; - r = ((glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBufferEXT")) == NULL) || r; - r = ((glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferDrawBuffersEXT")) == NULL) || r; - r = ((glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferReadBufferEXT")) == NULL) || r; - r = ((glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMultiTexMipmapEXT")) == NULL) || r; - r = ((glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateTextureMipmapEXT")) == NULL) || r; - r = ((glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedMultiTexImageEXT")) == NULL) || r; - r = ((glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetCompressedTextureImageEXT")) == NULL) || r; - r = ((glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetDoubleIndexedvEXT")) == NULL) || r; - r = ((glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFloatIndexedvEXT")) == NULL) || r; - r = ((glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferParameterivEXT")) == NULL) || r; - r = ((glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvfvEXT")) == NULL) || r; - r = ((glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexEnvivEXT")) == NULL) || r; - r = ((glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGendvEXT")) == NULL) || r; - r = ((glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenfvEXT")) == NULL) || r; - r = ((glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexGenivEXT")) == NULL) || r; - r = ((glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexImageEXT")) == NULL) || r; - r = ((glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterfvEXT")) == NULL) || r; - r = ((glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexLevelParameterivEXT")) == NULL) || r; - r = ((glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIivEXT")) == NULL) || r; - r = ((glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterIuivEXT")) == NULL) || r; - r = ((glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterfvEXT")) == NULL) || r; - r = ((glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMultiTexParameterivEXT")) == NULL) || r; - r = ((glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterivEXT")) == NULL) || r; - r = ((glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferPointervEXT")) == NULL) || r; - r = ((glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferSubDataEXT")) == NULL) || r; - r = ((glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedFramebufferAttachmentParameterivEXT")) == NULL) || r; - r = ((glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIivEXT")) == NULL) || r; - r = ((glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterIuivEXT")) == NULL) || r; - r = ((glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterdvEXT")) == NULL) || r; - r = ((glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramLocalParameterfvEXT")) == NULL) || r; - r = ((glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramStringEXT")) == NULL) || r; - r = ((glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedProgramivEXT")) == NULL) || r; - r = ((glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetNamedRenderbufferParameterivEXT")) == NULL) || r; - r = ((glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointerIndexedvEXT")) == NULL) || r; - r = ((glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureImageEXT")) == NULL) || r; - r = ((glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterfvEXT")) == NULL) || r; - r = ((glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureLevelParameterivEXT")) == NULL) || r; - r = ((glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIivEXT")) == NULL) || r; - r = ((glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterIuivEXT")) == NULL) || r; - r = ((glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterfvEXT")) == NULL) || r; - r = ((glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTextureParameterivEXT")) == NULL) || r; - r = ((glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMapNamedBufferEXT")) == NULL) || r; - r = ((glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixFrustumEXT")) == NULL) || r; - r = ((glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadIdentityEXT")) == NULL) || r; - r = ((glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposedEXT")) == NULL) || r; - r = ((glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadTransposefEXT")) == NULL) || r; - r = ((glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoaddEXT")) == NULL) || r; - r = ((glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixLoadfEXT")) == NULL) || r; - r = ((glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposedEXT")) == NULL) || r; - r = ((glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultTransposefEXT")) == NULL) || r; - r = ((glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultdEXT")) == NULL) || r; - r = ((glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixMultfEXT")) == NULL) || r; - r = ((glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixOrthoEXT")) == NULL) || r; - r = ((glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPopEXT")) == NULL) || r; - r = ((glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixPushEXT")) == NULL) || r; - r = ((glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatedEXT")) == NULL) || r; - r = ((glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixRotatefEXT")) == NULL) || r; - r = ((glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScaledEXT")) == NULL) || r; - r = ((glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixScalefEXT")) == NULL) || r; - r = ((glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatedEXT")) == NULL) || r; - r = ((glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)glewGetProcAddress((const GLubyte*)"glMatrixTranslatefEXT")) == NULL) || r; - r = ((glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexBufferEXT")) == NULL) || r; - r = ((glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordPointerEXT")) == NULL) || r; - r = ((glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfEXT")) == NULL) || r; - r = ((glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvfvEXT")) == NULL) || r; - r = ((glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnviEXT")) == NULL) || r; - r = ((glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexEnvivEXT")) == NULL) || r; - r = ((glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendEXT")) == NULL) || r; - r = ((glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGendvEXT")) == NULL) || r; - r = ((glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfEXT")) == NULL) || r; - r = ((glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenfvEXT")) == NULL) || r; - r = ((glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGeniEXT")) == NULL) || r; - r = ((glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexGenivEXT")) == NULL) || r; - r = ((glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage1DEXT")) == NULL) || r; - r = ((glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage2DEXT")) == NULL) || r; - r = ((glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexImage3DEXT")) == NULL) || r; - r = ((glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIivEXT")) == NULL) || r; - r = ((glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterIuivEXT")) == NULL) || r; - r = ((glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfEXT")) == NULL) || r; - r = ((glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterfvEXT")) == NULL) || r; - r = ((glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameteriEXT")) == NULL) || r; - r = ((glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexParameterivEXT")) == NULL) || r; - r = ((glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexRenderbufferEXT")) == NULL) || r; - r = ((glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage1DEXT")) == NULL) || r; - r = ((glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage2DEXT")) == NULL) || r; - r = ((glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiTexSubImage3DEXT")) == NULL) || r; - r = ((glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferDataEXT")) == NULL) || r; - r = ((glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedBufferSubDataEXT")) == NULL) || r; - r = ((glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferRenderbufferEXT")) == NULL) || r; - r = ((glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture1DEXT")) == NULL) || r; - r = ((glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture2DEXT")) == NULL) || r; - r = ((glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTexture3DEXT")) == NULL) || r; - r = ((glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureEXT")) == NULL) || r; - r = ((glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureFaceEXT")) == NULL) || r; - r = ((glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glNamedFramebufferTextureLayerEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4dvEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameter4fvEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4iEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4ivEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uiEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameterI4uivEXT")) == NULL) || r; - r = ((glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParameters4fvEXT")) == NULL) || r; - r = ((glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4ivEXT")) == NULL) || r; - r = ((glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramLocalParametersI4uivEXT")) == NULL) || r; - r = ((glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedProgramStringEXT")) == NULL) || r; - r = ((glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageEXT")) == NULL) || r; - r = ((glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleCoverageEXT")) == NULL) || r; - r = ((glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glNamedRenderbufferStorageMultisampleEXT")) == NULL) || r; - r = ((glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fEXT")) == NULL) || r; - r = ((glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1fvEXT")) == NULL) || r; - r = ((glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1iEXT")) == NULL) || r; - r = ((glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ivEXT")) == NULL) || r; - r = ((glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uiEXT")) == NULL) || r; - r = ((glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1uivEXT")) == NULL) || r; - r = ((glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fEXT")) == NULL) || r; - r = ((glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2fvEXT")) == NULL) || r; - r = ((glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2iEXT")) == NULL) || r; - r = ((glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ivEXT")) == NULL) || r; - r = ((glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uiEXT")) == NULL) || r; - r = ((glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2uivEXT")) == NULL) || r; - r = ((glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fEXT")) == NULL) || r; - r = ((glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3fvEXT")) == NULL) || r; - r = ((glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3iEXT")) == NULL) || r; - r = ((glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ivEXT")) == NULL) || r; - r = ((glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uiEXT")) == NULL) || r; - r = ((glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3uivEXT")) == NULL) || r; - r = ((glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fEXT")) == NULL) || r; - r = ((glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4fvEXT")) == NULL) || r; - r = ((glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4iEXT")) == NULL) || r; - r = ((glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ivEXT")) == NULL) || r; - r = ((glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uiEXT")) == NULL) || r; - r = ((glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4uivEXT")) == NULL) || r; - r = ((glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x3fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix2x4fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x2fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix3x4fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x2fvEXT")) == NULL) || r; - r = ((glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramUniformMatrix4x3fvEXT")) == NULL) || r; - r = ((glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)glewGetProcAddress((const GLubyte*)"glPushClientAttribDefaultEXT")) == NULL) || r; - r = ((glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureBufferEXT")) == NULL) || r; - r = ((glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage1DEXT")) == NULL) || r; - r = ((glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage2DEXT")) == NULL) || r; - r = ((glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureImage3DEXT")) == NULL) || r; - r = ((glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIivEXT")) == NULL) || r; - r = ((glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterIuivEXT")) == NULL) || r; - r = ((glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfEXT")) == NULL) || r; - r = ((glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterfvEXT")) == NULL) || r; - r = ((glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameteriEXT")) == NULL) || r; - r = ((glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureParameterivEXT")) == NULL) || r; - r = ((glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTextureRenderbufferEXT")) == NULL) || r; - r = ((glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage1DEXT")) == NULL) || r; - r = ((glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage2DEXT")) == NULL) || r; - r = ((glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureSubImage3DEXT")) == NULL) || r; - r = ((glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glUnmapNamedBufferEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_direct_state_access */ - -#ifdef GL_EXT_draw_buffers2 - -static GLboolean _glewInit_GL_EXT_draw_buffers2 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glColorMaskIndexedEXT")) == NULL) || r; - r = ((glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableIndexedEXT")) == NULL) || r; - r = ((glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableIndexedEXT")) == NULL) || r; - r = ((glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetBooleanIndexedvEXT")) == NULL) || r; - r = ((glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerIndexedvEXT")) == NULL) || r; - r = ((glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsEnabledIndexedEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_draw_buffers2 */ - -#ifdef GL_EXT_draw_instanced - -static GLboolean _glewInit_GL_EXT_draw_instanced (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysInstancedEXT")) == NULL) || r; - r = ((glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsInstancedEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_draw_instanced */ - -#ifdef GL_EXT_draw_range_elements - -static GLboolean _glewInit_GL_EXT_draw_range_elements (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawRangeElementsEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_draw_range_elements */ - -#ifdef GL_EXT_fog_coord - -static GLboolean _glewInit_GL_EXT_fog_coord (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerEXT")) == NULL) || r; - r = ((glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddEXT")) == NULL) || r; - r = ((glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoorddvEXT")) == NULL) || r; - r = ((glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfEXT")) == NULL) || r; - r = ((glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFogCoordfvEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_fog_coord */ - -#ifdef GL_EXT_fragment_lighting - -static GLboolean _glewInit_GL_EXT_fragment_lighting (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFragmentColorMaterialEXT = (PFNGLFRAGMENTCOLORMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialEXT")) == NULL) || r; - r = ((glFragmentLightModelfEXT = (PFNGLFRAGMENTLIGHTMODELFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfEXT")) == NULL) || r; - r = ((glFragmentLightModelfvEXT = (PFNGLFRAGMENTLIGHTMODELFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvEXT")) == NULL) || r; - r = ((glFragmentLightModeliEXT = (PFNGLFRAGMENTLIGHTMODELIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliEXT")) == NULL) || r; - r = ((glFragmentLightModelivEXT = (PFNGLFRAGMENTLIGHTMODELIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivEXT")) == NULL) || r; - r = ((glFragmentLightfEXT = (PFNGLFRAGMENTLIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfEXT")) == NULL) || r; - r = ((glFragmentLightfvEXT = (PFNGLFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvEXT")) == NULL) || r; - r = ((glFragmentLightiEXT = (PFNGLFRAGMENTLIGHTIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiEXT")) == NULL) || r; - r = ((glFragmentLightivEXT = (PFNGLFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivEXT")) == NULL) || r; - r = ((glFragmentMaterialfEXT = (PFNGLFRAGMENTMATERIALFEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfEXT")) == NULL) || r; - r = ((glFragmentMaterialfvEXT = (PFNGLFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvEXT")) == NULL) || r; - r = ((glFragmentMaterialiEXT = (PFNGLFRAGMENTMATERIALIEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiEXT")) == NULL) || r; - r = ((glFragmentMaterialivEXT = (PFNGLFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivEXT")) == NULL) || r; - r = ((glGetFragmentLightfvEXT = (PFNGLGETFRAGMENTLIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvEXT")) == NULL) || r; - r = ((glGetFragmentLightivEXT = (PFNGLGETFRAGMENTLIGHTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivEXT")) == NULL) || r; - r = ((glGetFragmentMaterialfvEXT = (PFNGLGETFRAGMENTMATERIALFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvEXT")) == NULL) || r; - r = ((glGetFragmentMaterialivEXT = (PFNGLGETFRAGMENTMATERIALIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivEXT")) == NULL) || r; - r = ((glLightEnviEXT = (PFNGLLIGHTENVIEXTPROC)glewGetProcAddress((const GLubyte*)"glLightEnviEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_fragment_lighting */ - -#ifdef GL_EXT_framebuffer_blit - -static GLboolean _glewInit_GL_EXT_framebuffer_blit (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBlitFramebufferEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_framebuffer_blit */ - -#ifdef GL_EXT_framebuffer_multisample - -static GLboolean _glewInit_GL_EXT_framebuffer_multisample (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_framebuffer_multisample */ - -#ifdef GL_EXT_framebuffer_object - -static GLboolean _glewInit_GL_EXT_framebuffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindFramebufferEXT")) == NULL) || r; - r = ((glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindRenderbufferEXT")) == NULL) || r; - r = ((glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)glewGetProcAddress((const GLubyte*)"glCheckFramebufferStatusEXT")) == NULL) || r; - r = ((glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteFramebuffersEXT")) == NULL) || r; - r = ((glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteRenderbuffersEXT")) == NULL) || r; - r = ((glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferRenderbufferEXT")) == NULL) || r; - r = ((glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture1DEXT")) == NULL) || r; - r = ((glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture2DEXT")) == NULL) || r; - r = ((glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTexture3DEXT")) == NULL) || r; - r = ((glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenFramebuffersEXT")) == NULL) || r; - r = ((glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenRenderbuffersEXT")) == NULL) || r; - r = ((glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)glewGetProcAddress((const GLubyte*)"glGenerateMipmapEXT")) == NULL) || r; - r = ((glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFramebufferAttachmentParameterivEXT")) == NULL) || r; - r = ((glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetRenderbufferParameterivEXT")) == NULL) || r; - r = ((glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsFramebufferEXT")) == NULL) || r; - r = ((glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glIsRenderbufferEXT")) == NULL) || r; - r = ((glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_framebuffer_object */ - -#ifdef GL_EXT_framebuffer_sRGB - -#endif /* GL_EXT_framebuffer_sRGB */ - -#ifdef GL_EXT_geometry_shader4 - -static GLboolean _glewInit_GL_EXT_geometry_shader4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureEXT")) == NULL) || r; - r = ((glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureFaceEXT")) == NULL) || r; - r = ((glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)glewGetProcAddress((const GLubyte*)"glFramebufferTextureLayerEXT")) == NULL) || r; - r = ((glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramParameteriEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_geometry_shader4 */ - -#ifdef GL_EXT_gpu_program_parameters - -static GLboolean _glewInit_GL_EXT_gpu_program_parameters (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameters4fvEXT")) == NULL) || r; - r = ((glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameters4fvEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_gpu_program_parameters */ - -#ifdef GL_EXT_gpu_shader4 - -static GLboolean _glewInit_GL_EXT_gpu_shader4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationEXT")) == NULL) || r; - r = ((glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataLocationEXT")) == NULL) || r; - r = ((glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetUniformuivEXT")) == NULL) || r; - r = ((glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIivEXT")) == NULL) || r; - r = ((glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribIuivEXT")) == NULL) || r; - r = ((glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uiEXT")) == NULL) || r; - r = ((glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform1uivEXT")) == NULL) || r; - r = ((glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uiEXT")) == NULL) || r; - r = ((glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform2uivEXT")) == NULL) || r; - r = ((glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uiEXT")) == NULL) || r; - r = ((glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform3uivEXT")) == NULL) || r; - r = ((glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uiEXT")) == NULL) || r; - r = ((glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glUniform4uivEXT")) == NULL) || r; - r = ((glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1iEXT")) == NULL) || r; - r = ((glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1ivEXT")) == NULL) || r; - r = ((glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uiEXT")) == NULL) || r; - r = ((glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI1uivEXT")) == NULL) || r; - r = ((glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2iEXT")) == NULL) || r; - r = ((glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2ivEXT")) == NULL) || r; - r = ((glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uiEXT")) == NULL) || r; - r = ((glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI2uivEXT")) == NULL) || r; - r = ((glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3iEXT")) == NULL) || r; - r = ((glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3ivEXT")) == NULL) || r; - r = ((glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uiEXT")) == NULL) || r; - r = ((glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI3uivEXT")) == NULL) || r; - r = ((glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4bvEXT")) == NULL) || r; - r = ((glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4iEXT")) == NULL) || r; - r = ((glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ivEXT")) == NULL) || r; - r = ((glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4svEXT")) == NULL) || r; - r = ((glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4ubvEXT")) == NULL) || r; - r = ((glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uiEXT")) == NULL) || r; - r = ((glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4uivEXT")) == NULL) || r; - r = ((glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribI4usvEXT")) == NULL) || r; - r = ((glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribIPointerEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_gpu_shader4 */ - -#ifdef GL_EXT_histogram - -static GLboolean _glewInit_GL_EXT_histogram (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramEXT")) == NULL) || r; - r = ((glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterfvEXT")) == NULL) || r; - r = ((glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetHistogramParameterivEXT")) == NULL) || r; - r = ((glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxEXT")) == NULL) || r; - r = ((glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterfvEXT")) == NULL) || r; - r = ((glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetMinmaxParameterivEXT")) == NULL) || r; - r = ((glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glHistogramEXT")) == NULL) || r; - r = ((glMinmaxEXT = (PFNGLMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glMinmaxEXT")) == NULL) || r; - r = ((glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)glewGetProcAddress((const GLubyte*)"glResetHistogramEXT")) == NULL) || r; - r = ((glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)glewGetProcAddress((const GLubyte*)"glResetMinmaxEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_histogram */ - -#ifdef GL_EXT_index_array_formats - -#endif /* GL_EXT_index_array_formats */ - -#ifdef GL_EXT_index_func - -static GLboolean _glewInit_GL_EXT_index_func (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexFuncEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_index_func */ - -#ifdef GL_EXT_index_material - -static GLboolean _glewInit_GL_EXT_index_material (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glIndexMaterialEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_index_material */ - -#ifdef GL_EXT_index_texture - -#endif /* GL_EXT_index_texture */ - -#ifdef GL_EXT_light_texture - -static GLboolean _glewInit_GL_EXT_light_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glApplyTextureEXT")) == NULL) || r; - r = ((glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureLightEXT")) == NULL) || r; - r = ((glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureMaterialEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_light_texture */ - -#ifdef GL_EXT_misc_attribute - -#endif /* GL_EXT_misc_attribute */ - -#ifdef GL_EXT_multi_draw_arrays - -static GLboolean _glewInit_GL_EXT_multi_draw_arrays (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawArraysEXT")) == NULL) || r; - r = ((glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)glewGetProcAddress((const GLubyte*)"glMultiDrawElementsEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_multi_draw_arrays */ - -#ifdef GL_EXT_multisample - -static GLboolean _glewInit_GL_EXT_multisample (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskEXT")) == NULL) || r; - r = ((glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_multisample */ - -#ifdef GL_EXT_packed_depth_stencil - -#endif /* GL_EXT_packed_depth_stencil */ - -#ifdef GL_EXT_packed_float - -#endif /* GL_EXT_packed_float */ - -#ifdef GL_EXT_packed_pixels - -#endif /* GL_EXT_packed_pixels */ - -#ifdef GL_EXT_paletted_texture - -static GLboolean _glewInit_GL_EXT_paletted_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glColorTableEXT")) == NULL) || r; - r = ((glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableEXT")) == NULL) || r; - r = ((glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvEXT")) == NULL) || r; - r = ((glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_paletted_texture */ - -#ifdef GL_EXT_pixel_buffer_object - -#endif /* GL_EXT_pixel_buffer_object */ - -#ifdef GL_EXT_pixel_transform - -static GLboolean _glewInit_GL_EXT_pixel_transform (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterfvEXT")) == NULL) || r; - r = ((glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPixelTransformParameterivEXT")) == NULL) || r; - r = ((glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfEXT")) == NULL) || r; - r = ((glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterfvEXT")) == NULL) || r; - r = ((glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameteriEXT")) == NULL) || r; - r = ((glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)glewGetProcAddress((const GLubyte*)"glPixelTransformParameterivEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_pixel_transform */ - -#ifdef GL_EXT_pixel_transform_color_table - -#endif /* GL_EXT_pixel_transform_color_table */ - -#ifdef GL_EXT_point_parameters - -static GLboolean _glewInit_GL_EXT_point_parameters (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfEXT")) == NULL) || r; - r = ((glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)glewGetProcAddress((const GLubyte*)"glPointParameterfvEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_point_parameters */ - -#ifdef GL_EXT_polygon_offset - -static GLboolean _glewInit_GL_EXT_polygon_offset (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glPolygonOffsetEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_polygon_offset */ - -#ifdef GL_EXT_rescale_normal - -#endif /* GL_EXT_rescale_normal */ - -#ifdef GL_EXT_scene_marker - -static GLboolean _glewInit_GL_EXT_scene_marker (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginSceneEXT = (PFNGLBEGINSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginSceneEXT")) == NULL) || r; - r = ((glEndSceneEXT = (PFNGLENDSCENEEXTPROC)glewGetProcAddress((const GLubyte*)"glEndSceneEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_scene_marker */ - -#ifdef GL_EXT_secondary_color - -static GLboolean _glewInit_GL_EXT_secondary_color (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bEXT")) == NULL) || r; - r = ((glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3bvEXT")) == NULL) || r; - r = ((glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dEXT")) == NULL) || r; - r = ((glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3dvEXT")) == NULL) || r; - r = ((glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fEXT")) == NULL) || r; - r = ((glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3fvEXT")) == NULL) || r; - r = ((glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3iEXT")) == NULL) || r; - r = ((glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ivEXT")) == NULL) || r; - r = ((glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3sEXT")) == NULL) || r; - r = ((glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3svEXT")) == NULL) || r; - r = ((glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubEXT")) == NULL) || r; - r = ((glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3ubvEXT")) == NULL) || r; - r = ((glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uiEXT")) == NULL) || r; - r = ((glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3uivEXT")) == NULL) || r; - r = ((glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usEXT")) == NULL) || r; - r = ((glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3usvEXT")) == NULL) || r; - r = ((glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_secondary_color */ - -#ifdef GL_EXT_separate_specular_color - -#endif /* GL_EXT_separate_specular_color */ - -#ifdef GL_EXT_shadow_funcs - -#endif /* GL_EXT_shadow_funcs */ - -#ifdef GL_EXT_shared_texture_palette - -#endif /* GL_EXT_shared_texture_palette */ - -#ifdef GL_EXT_stencil_clear_tag - -#endif /* GL_EXT_stencil_clear_tag */ - -#ifdef GL_EXT_stencil_two_side - -static GLboolean _glewInit_GL_EXT_stencil_two_side (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)glewGetProcAddress((const GLubyte*)"glActiveStencilFaceEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_stencil_two_side */ - -#ifdef GL_EXT_stencil_wrap - -#endif /* GL_EXT_stencil_wrap */ - -#ifdef GL_EXT_subtexture - -static GLboolean _glewInit_GL_EXT_subtexture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage1DEXT")) == NULL) || r; - r = ((glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage2DEXT")) == NULL) || r; - r = ((glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage3DEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_subtexture */ - -#ifdef GL_EXT_texture - -#endif /* GL_EXT_texture */ - -#ifdef GL_EXT_texture3D - -static GLboolean _glewInit_GL_EXT_texture3D (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)glewGetProcAddress((const GLubyte*)"glTexImage3DEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_texture3D */ - -#ifdef GL_EXT_texture_array - -#endif /* GL_EXT_texture_array */ - -#ifdef GL_EXT_texture_buffer_object - -static GLboolean _glewInit_GL_EXT_texture_buffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexBufferEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_texture_buffer_object */ - -#ifdef GL_EXT_texture_compression_dxt1 - -#endif /* GL_EXT_texture_compression_dxt1 */ - -#ifdef GL_EXT_texture_compression_latc - -#endif /* GL_EXT_texture_compression_latc */ - -#ifdef GL_EXT_texture_compression_rgtc - -#endif /* GL_EXT_texture_compression_rgtc */ - -#ifdef GL_EXT_texture_compression_s3tc - -#endif /* GL_EXT_texture_compression_s3tc */ - -#ifdef GL_EXT_texture_cube_map - -#endif /* GL_EXT_texture_cube_map */ - -#ifdef GL_EXT_texture_edge_clamp - -#endif /* GL_EXT_texture_edge_clamp */ - -#ifdef GL_EXT_texture_env - -#endif /* GL_EXT_texture_env */ - -#ifdef GL_EXT_texture_env_add - -#endif /* GL_EXT_texture_env_add */ - -#ifdef GL_EXT_texture_env_combine - -#endif /* GL_EXT_texture_env_combine */ - -#ifdef GL_EXT_texture_env_dot3 - -#endif /* GL_EXT_texture_env_dot3 */ - -#ifdef GL_EXT_texture_filter_anisotropic - -#endif /* GL_EXT_texture_filter_anisotropic */ - -#ifdef GL_EXT_texture_integer - -static GLboolean _glewInit_GL_EXT_texture_integer (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIiEXT")) == NULL) || r; - r = ((glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)glewGetProcAddress((const GLubyte*)"glClearColorIuiEXT")) == NULL) || r; - r = ((glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIivEXT")) == NULL) || r; - r = ((glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTexParameterIuivEXT")) == NULL) || r; - r = ((glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIivEXT")) == NULL) || r; - r = ((glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glTexParameterIuivEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_texture_integer */ - -#ifdef GL_EXT_texture_lod_bias - -#endif /* GL_EXT_texture_lod_bias */ - -#ifdef GL_EXT_texture_mirror_clamp - -#endif /* GL_EXT_texture_mirror_clamp */ - -#ifdef GL_EXT_texture_object - -static GLboolean _glewInit_GL_EXT_texture_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)glewGetProcAddress((const GLubyte*)"glAreTexturesResidentEXT")) == NULL) || r; - r = ((glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureEXT")) == NULL) || r; - r = ((glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteTexturesEXT")) == NULL) || r; - r = ((glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glGenTexturesEXT")) == NULL) || r; - r = ((glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glIsTextureEXT")) == NULL) || r; - r = ((glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)glewGetProcAddress((const GLubyte*)"glPrioritizeTexturesEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_texture_object */ - -#ifdef GL_EXT_texture_perturb_normal - -static GLboolean _glewInit_GL_EXT_texture_perturb_normal (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)glewGetProcAddress((const GLubyte*)"glTextureNormalEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_texture_perturb_normal */ - -#ifdef GL_EXT_texture_rectangle - -#endif /* GL_EXT_texture_rectangle */ - -#ifdef GL_EXT_texture_sRGB - -#endif /* GL_EXT_texture_sRGB */ - -#ifdef GL_EXT_texture_shared_exponent - -#endif /* GL_EXT_texture_shared_exponent */ - -#ifdef GL_EXT_texture_swizzle - -#endif /* GL_EXT_texture_swizzle */ - -#ifdef GL_EXT_timer_query - -static GLboolean _glewInit_GL_EXT_timer_query (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64vEXT")) == NULL) || r; - r = ((glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64vEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_timer_query */ - -#ifdef GL_EXT_transform_feedback - -static GLboolean _glewInit_GL_EXT_transform_feedback (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackEXT")) == NULL) || r; - r = ((glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseEXT")) == NULL) || r; - r = ((glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetEXT")) == NULL) || r; - r = ((glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeEXT")) == NULL) || r; - r = ((glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackEXT")) == NULL) || r; - r = ((glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingEXT")) == NULL) || r; - r = ((glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_transform_feedback */ - -#ifdef GL_EXT_vertex_array - -static GLboolean _glewInit_GL_EXT_vertex_array (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)glewGetProcAddress((const GLubyte*)"glArrayElementEXT")) == NULL) || r; - r = ((glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glColorPointerEXT")) == NULL) || r; - r = ((glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysEXT")) == NULL) || r; - r = ((glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerEXT")) == NULL) || r; - r = ((glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetPointervEXT")) == NULL) || r; - r = ((glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerEXT")) == NULL) || r; - r = ((glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerEXT")) == NULL) || r; - r = ((glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerEXT")) == NULL) || r; - r = ((glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_vertex_array */ - -#ifdef GL_EXT_vertex_array_bgra - -#endif /* GL_EXT_vertex_array_bgra */ - -#ifdef GL_EXT_vertex_shader - -static GLboolean _glewInit_GL_EXT_vertex_shader (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBeginVertexShaderEXT")) == NULL) || r; - r = ((glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindLightParameterEXT")) == NULL) || r; - r = ((glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindMaterialParameterEXT")) == NULL) || r; - r = ((glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindParameterEXT")) == NULL) || r; - r = ((glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTexGenParameterEXT")) == NULL) || r; - r = ((glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindTextureUnitParameterEXT")) == NULL) || r; - r = ((glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glBindVertexShaderEXT")) == NULL) || r; - r = ((glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteVertexShaderEXT")) == NULL) || r; - r = ((glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glDisableVariantClientStateEXT")) == NULL) || r; - r = ((glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)glewGetProcAddress((const GLubyte*)"glEnableVariantClientStateEXT")) == NULL) || r; - r = ((glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)glewGetProcAddress((const GLubyte*)"glEndVertexShaderEXT")) == NULL) || r; - r = ((glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glExtractComponentEXT")) == NULL) || r; - r = ((glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenSymbolsEXT")) == NULL) || r; - r = ((glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)glewGetProcAddress((const GLubyte*)"glGenVertexShadersEXT")) == NULL) || r; - r = ((glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantBooleanvEXT")) == NULL) || r; - r = ((glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantFloatvEXT")) == NULL) || r; - r = ((glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetInvariantIntegervEXT")) == NULL) || r; - r = ((glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantBooleanvEXT")) == NULL) || r; - r = ((glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantFloatvEXT")) == NULL) || r; - r = ((glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetLocalConstantIntegervEXT")) == NULL) || r; - r = ((glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantBooleanvEXT")) == NULL) || r; - r = ((glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantFloatvEXT")) == NULL) || r; - r = ((glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantIntegervEXT")) == NULL) || r; - r = ((glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVariantPointervEXT")) == NULL) || r; - r = ((glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)glewGetProcAddress((const GLubyte*)"glInsertComponentEXT")) == NULL) || r; - r = ((glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)glewGetProcAddress((const GLubyte*)"glIsVariantEnabledEXT")) == NULL) || r; - r = ((glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetInvariantEXT")) == NULL) || r; - r = ((glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)glewGetProcAddress((const GLubyte*)"glSetLocalConstantEXT")) == NULL) || r; - r = ((glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp1EXT")) == NULL) || r; - r = ((glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp2EXT")) == NULL) || r; - r = ((glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)glewGetProcAddress((const GLubyte*)"glShaderOp3EXT")) == NULL) || r; - r = ((glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)glewGetProcAddress((const GLubyte*)"glSwizzleEXT")) == NULL) || r; - r = ((glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVariantPointerEXT")) == NULL) || r; - r = ((glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantbvEXT")) == NULL) || r; - r = ((glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantdvEXT")) == NULL) || r; - r = ((glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantfvEXT")) == NULL) || r; - r = ((glVariantivEXT = (PFNGLVARIANTIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantivEXT")) == NULL) || r; - r = ((glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantsvEXT")) == NULL) || r; - r = ((glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantubvEXT")) == NULL) || r; - r = ((glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantuivEXT")) == NULL) || r; - r = ((glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)glewGetProcAddress((const GLubyte*)"glVariantusvEXT")) == NULL) || r; - r = ((glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)glewGetProcAddress((const GLubyte*)"glWriteMaskEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_vertex_shader */ - -#ifdef GL_EXT_vertex_weighting - -static GLboolean _glewInit_GL_EXT_vertex_weighting (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightPointerEXT")) == NULL) || r; - r = ((glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfEXT")) == NULL) || r; - r = ((glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexWeightfvEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_EXT_vertex_weighting */ - -#ifdef GL_GREMEDY_frame_terminator - -static GLboolean _glewInit_GL_GREMEDY_frame_terminator (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glFrameTerminatorGREMEDY")) == NULL) || r; - - return r; -} - -#endif /* GL_GREMEDY_frame_terminator */ - -#ifdef GL_GREMEDY_string_marker - -static GLboolean _glewInit_GL_GREMEDY_string_marker (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)glewGetProcAddress((const GLubyte*)"glStringMarkerGREMEDY")) == NULL) || r; - - return r; -} - -#endif /* GL_GREMEDY_string_marker */ - -#ifdef GL_HP_convolution_border_modes - -#endif /* GL_HP_convolution_border_modes */ - -#ifdef GL_HP_image_transform - -static GLboolean _glewInit_GL_HP_image_transform (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterfvHP")) == NULL) || r; - r = ((glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glGetImageTransformParameterivHP")) == NULL) || r; - r = ((glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfHP")) == NULL) || r; - r = ((glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterfvHP")) == NULL) || r; - r = ((glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameteriHP")) == NULL) || r; - r = ((glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)glewGetProcAddress((const GLubyte*)"glImageTransformParameterivHP")) == NULL) || r; - - return r; -} - -#endif /* GL_HP_image_transform */ - -#ifdef GL_HP_occlusion_test - -#endif /* GL_HP_occlusion_test */ - -#ifdef GL_HP_texture_lighting - -#endif /* GL_HP_texture_lighting */ - -#ifdef GL_IBM_cull_vertex - -#endif /* GL_IBM_cull_vertex */ - -#ifdef GL_IBM_multimode_draw_arrays - -static GLboolean _glewInit_GL_IBM_multimode_draw_arrays (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawArraysIBM")) == NULL) || r; - r = ((glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)glewGetProcAddress((const GLubyte*)"glMultiModeDrawElementsIBM")) == NULL) || r; - - return r; -} - -#endif /* GL_IBM_multimode_draw_arrays */ - -#ifdef GL_IBM_rasterpos_clip - -#endif /* GL_IBM_rasterpos_clip */ - -#ifdef GL_IBM_static_data - -#endif /* GL_IBM_static_data */ - -#ifdef GL_IBM_texture_mirrored_repeat - -#endif /* GL_IBM_texture_mirrored_repeat */ - -#ifdef GL_IBM_vertex_array_lists - -static GLboolean _glewInit_GL_IBM_vertex_array_lists (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glColorPointerListIBM")) == NULL) || r; - r = ((glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glEdgeFlagPointerListIBM")) == NULL) || r; - r = ((glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glFogCoordPointerListIBM")) == NULL) || r; - r = ((glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glIndexPointerListIBM")) == NULL) || r; - r = ((glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glNormalPointerListIBM")) == NULL) || r; - r = ((glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorPointerListIBM")) == NULL) || r; - r = ((glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointerListIBM")) == NULL) || r; - r = ((glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)glewGetProcAddress((const GLubyte*)"glVertexPointerListIBM")) == NULL) || r; - - return r; -} - -#endif /* GL_IBM_vertex_array_lists */ - -#ifdef GL_INGR_color_clamp - -#endif /* GL_INGR_color_clamp */ - -#ifdef GL_INGR_interlace_read - -#endif /* GL_INGR_interlace_read */ - -#ifdef GL_INTEL_parallel_arrays - -static GLboolean _glewInit_GL_INTEL_parallel_arrays (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glColorPointervINTEL")) == NULL) || r; - r = ((glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glNormalPointervINTEL")) == NULL) || r; - r = ((glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glTexCoordPointervINTEL")) == NULL) || r; - r = ((glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)glewGetProcAddress((const GLubyte*)"glVertexPointervINTEL")) == NULL) || r; - - return r; -} - -#endif /* GL_INTEL_parallel_arrays */ - -#ifdef GL_INTEL_texture_scissor - -static GLboolean _glewInit_GL_INTEL_texture_scissor (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexScissorFuncINTEL = (PFNGLTEXSCISSORFUNCINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorFuncINTEL")) == NULL) || r; - r = ((glTexScissorINTEL = (PFNGLTEXSCISSORINTELPROC)glewGetProcAddress((const GLubyte*)"glTexScissorINTEL")) == NULL) || r; - - return r; -} - -#endif /* GL_INTEL_texture_scissor */ - -#ifdef GL_KTX_buffer_region - -static GLboolean _glewInit_GL_KTX_buffer_region (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBufferRegionEnabledEXT = (PFNGLBUFFERREGIONENABLEDEXTPROC)glewGetProcAddress((const GLubyte*)"glBufferRegionEnabledEXT")) == NULL) || r; - r = ((glDeleteBufferRegionEXT = (PFNGLDELETEBUFFERREGIONEXTPROC)glewGetProcAddress((const GLubyte*)"glDeleteBufferRegionEXT")) == NULL) || r; - r = ((glDrawBufferRegionEXT = (PFNGLDRAWBUFFERREGIONEXTPROC)glewGetProcAddress((const GLubyte*)"glDrawBufferRegionEXT")) == NULL) || r; - r = ((glNewBufferRegionEXT = (PFNGLNEWBUFFERREGIONEXTPROC)glewGetProcAddress((const GLubyte*)"glNewBufferRegionEXT")) == NULL) || r; - r = ((glReadBufferRegionEXT = (PFNGLREADBUFFERREGIONEXTPROC)glewGetProcAddress((const GLubyte*)"glReadBufferRegionEXT")) == NULL) || r; - - return r; -} - -#endif /* GL_KTX_buffer_region */ - -#ifdef GL_MESAX_texture_stack - -#endif /* GL_MESAX_texture_stack */ - -#ifdef GL_MESA_pack_invert - -#endif /* GL_MESA_pack_invert */ - -#ifdef GL_MESA_resize_buffers - -static GLboolean _glewInit_GL_MESA_resize_buffers (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glResizeBuffersMESA")) == NULL) || r; - - return r; -} - -#endif /* GL_MESA_resize_buffers */ - -#ifdef GL_MESA_window_pos - -static GLboolean _glewInit_GL_MESA_window_pos (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dMESA")) == NULL) || r; - r = ((glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2dvMESA")) == NULL) || r; - r = ((glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fMESA")) == NULL) || r; - r = ((glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2fvMESA")) == NULL) || r; - r = ((glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2iMESA")) == NULL) || r; - r = ((glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2ivMESA")) == NULL) || r; - r = ((glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2sMESA")) == NULL) || r; - r = ((glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos2svMESA")) == NULL) || r; - r = ((glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dMESA")) == NULL) || r; - r = ((glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3dvMESA")) == NULL) || r; - r = ((glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fMESA")) == NULL) || r; - r = ((glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3fvMESA")) == NULL) || r; - r = ((glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3iMESA")) == NULL) || r; - r = ((glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3ivMESA")) == NULL) || r; - r = ((glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3sMESA")) == NULL) || r; - r = ((glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos3svMESA")) == NULL) || r; - r = ((glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dMESA")) == NULL) || r; - r = ((glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4dvMESA")) == NULL) || r; - r = ((glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fMESA")) == NULL) || r; - r = ((glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4fvMESA")) == NULL) || r; - r = ((glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4iMESA")) == NULL) || r; - r = ((glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4ivMESA")) == NULL) || r; - r = ((glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4sMESA")) == NULL) || r; - r = ((glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)glewGetProcAddress((const GLubyte*)"glWindowPos4svMESA")) == NULL) || r; - - return r; -} - -#endif /* GL_MESA_window_pos */ - -#ifdef GL_MESA_ycbcr_texture - -#endif /* GL_MESA_ycbcr_texture */ - -#ifdef GL_NV_blend_square - -#endif /* GL_NV_blend_square */ - -#ifdef GL_NV_conditional_render - -static GLboolean _glewInit_GL_NV_conditional_render (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glBeginConditionalRenderNV")) == NULL) || r; - r = ((glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)glewGetProcAddress((const GLubyte*)"glEndConditionalRenderNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_conditional_render */ - -#ifdef GL_NV_copy_depth_to_color - -#endif /* GL_NV_copy_depth_to_color */ - -#ifdef GL_NV_depth_buffer_float - -static GLboolean _glewInit_GL_NV_depth_buffer_float (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)glewGetProcAddress((const GLubyte*)"glClearDepthdNV")) == NULL) || r; - r = ((glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthBoundsdNV")) == NULL) || r; - r = ((glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)glewGetProcAddress((const GLubyte*)"glDepthRangedNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_depth_buffer_float */ - -#ifdef GL_NV_depth_clamp - -#endif /* GL_NV_depth_clamp */ - -#ifdef GL_NV_depth_range_unclamped - -#endif /* GL_NV_depth_range_unclamped */ - -#ifdef GL_NV_evaluators - -static GLboolean _glewInit_GL_NV_evaluators (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glEvalMapsNV = (PFNGLEVALMAPSNVPROC)glewGetProcAddress((const GLubyte*)"glEvalMapsNV")) == NULL) || r; - r = ((glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterfvNV")) == NULL) || r; - r = ((glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapAttribParameterivNV")) == NULL) || r; - r = ((glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapControlPointsNV")) == NULL) || r; - r = ((glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterfvNV")) == NULL) || r; - r = ((glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMapParameterivNV")) == NULL) || r; - r = ((glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)glewGetProcAddress((const GLubyte*)"glMapControlPointsNV")) == NULL) || r; - r = ((glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterfvNV")) == NULL) || r; - r = ((glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glMapParameterivNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_evaluators */ - -#ifdef GL_NV_explicit_multisample - -static GLboolean _glewInit_GL_NV_explicit_multisample (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetMultisamplefvNV")) == NULL) || r; - r = ((glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskIndexedNV")) == NULL) || r; - r = ((glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)glewGetProcAddress((const GLubyte*)"glTexRenderbufferNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_explicit_multisample */ - -#ifdef GL_NV_fence - -static GLboolean _glewInit_GL_NV_fence (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteFencesNV")) == NULL) || r; - r = ((glFinishFenceNV = (PFNGLFINISHFENCENVPROC)glewGetProcAddress((const GLubyte*)"glFinishFenceNV")) == NULL) || r; - r = ((glGenFencesNV = (PFNGLGENFENCESNVPROC)glewGetProcAddress((const GLubyte*)"glGenFencesNV")) == NULL) || r; - r = ((glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFenceivNV")) == NULL) || r; - r = ((glIsFenceNV = (PFNGLISFENCENVPROC)glewGetProcAddress((const GLubyte*)"glIsFenceNV")) == NULL) || r; - r = ((glSetFenceNV = (PFNGLSETFENCENVPROC)glewGetProcAddress((const GLubyte*)"glSetFenceNV")) == NULL) || r; - r = ((glTestFenceNV = (PFNGLTESTFENCENVPROC)glewGetProcAddress((const GLubyte*)"glTestFenceNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_fence */ - -#ifdef GL_NV_float_buffer - -#endif /* GL_NV_float_buffer */ - -#ifdef GL_NV_fog_distance - -#endif /* GL_NV_fog_distance */ - -#ifdef GL_NV_fragment_program - -static GLboolean _glewInit_GL_NV_fragment_program (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterdvNV")) == NULL) || r; - r = ((glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramNamedParameterfvNV")) == NULL) || r; - r = ((glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dNV")) == NULL) || r; - r = ((glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4dvNV")) == NULL) || r; - r = ((glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fNV")) == NULL) || r; - r = ((glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramNamedParameter4fvNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_fragment_program */ - -#ifdef GL_NV_fragment_program2 - -#endif /* GL_NV_fragment_program2 */ - -#ifdef GL_NV_fragment_program4 - -#endif /* GL_NV_fragment_program4 */ - -#ifdef GL_NV_fragment_program_option - -#endif /* GL_NV_fragment_program_option */ - -#ifdef GL_NV_framebuffer_multisample_coverage - -static GLboolean _glewInit_GL_NV_framebuffer_multisample_coverage (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)glewGetProcAddress((const GLubyte*)"glRenderbufferStorageMultisampleCoverageNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_framebuffer_multisample_coverage */ - -#ifdef GL_NV_geometry_program4 - -static GLboolean _glewInit_GL_NV_geometry_program4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)glewGetProcAddress((const GLubyte*)"glProgramVertexLimitNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_geometry_program4 */ - -#ifdef GL_NV_geometry_shader4 - -#endif /* GL_NV_geometry_shader4 */ - -#ifdef GL_NV_gpu_program4 - -static GLboolean _glewInit_GL_NV_gpu_program4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4iNV")) == NULL) || r; - r = ((glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4ivNV")) == NULL) || r; - r = ((glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uiNV")) == NULL) || r; - r = ((glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParameterI4uivNV")) == NULL) || r; - r = ((glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4ivNV")) == NULL) || r; - r = ((glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramEnvParametersI4uivNV")) == NULL) || r; - r = ((glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4iNV")) == NULL) || r; - r = ((glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4ivNV")) == NULL) || r; - r = ((glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uiNV")) == NULL) || r; - r = ((glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParameterI4uivNV")) == NULL) || r; - r = ((glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4ivNV")) == NULL) || r; - r = ((glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramLocalParametersI4uivNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_gpu_program4 */ - -#ifdef GL_NV_half_float - -static GLboolean _glewInit_GL_NV_half_float (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColor3hNV = (PFNGLCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hNV")) == NULL) || r; - r = ((glColor3hvNV = (PFNGLCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor3hvNV")) == NULL) || r; - r = ((glColor4hNV = (PFNGLCOLOR4HNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hNV")) == NULL) || r; - r = ((glColor4hvNV = (PFNGLCOLOR4HVNVPROC)glewGetProcAddress((const GLubyte*)"glColor4hvNV")) == NULL) || r; - r = ((glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhNV")) == NULL) || r; - r = ((glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)glewGetProcAddress((const GLubyte*)"glFogCoordhvNV")) == NULL) || r; - r = ((glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hNV")) == NULL) || r; - r = ((glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord1hvNV")) == NULL) || r; - r = ((glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hNV")) == NULL) || r; - r = ((glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord2hvNV")) == NULL) || r; - r = ((glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hNV")) == NULL) || r; - r = ((glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord3hvNV")) == NULL) || r; - r = ((glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hNV")) == NULL) || r; - r = ((glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoord4hvNV")) == NULL) || r; - r = ((glNormal3hNV = (PFNGLNORMAL3HNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hNV")) == NULL) || r; - r = ((glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)glewGetProcAddress((const GLubyte*)"glNormal3hvNV")) == NULL) || r; - r = ((glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hNV")) == NULL) || r; - r = ((glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColor3hvNV")) == NULL) || r; - r = ((glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hNV")) == NULL) || r; - r = ((glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord1hvNV")) == NULL) || r; - r = ((glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hNV")) == NULL) || r; - r = ((glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2hvNV")) == NULL) || r; - r = ((glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hNV")) == NULL) || r; - r = ((glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord3hvNV")) == NULL) || r; - r = ((glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hNV")) == NULL) || r; - r = ((glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4hvNV")) == NULL) || r; - r = ((glVertex2hNV = (PFNGLVERTEX2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hNV")) == NULL) || r; - r = ((glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex2hvNV")) == NULL) || r; - r = ((glVertex3hNV = (PFNGLVERTEX3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hNV")) == NULL) || r; - r = ((glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex3hvNV")) == NULL) || r; - r = ((glVertex4hNV = (PFNGLVERTEX4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hNV")) == NULL) || r; - r = ((glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertex4hvNV")) == NULL) || r; - r = ((glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hNV")) == NULL) || r; - r = ((glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1hvNV")) == NULL) || r; - r = ((glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hNV")) == NULL) || r; - r = ((glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2hvNV")) == NULL) || r; - r = ((glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hNV")) == NULL) || r; - r = ((glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3hvNV")) == NULL) || r; - r = ((glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hNV")) == NULL) || r; - r = ((glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4hvNV")) == NULL) || r; - r = ((glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1hvNV")) == NULL) || r; - r = ((glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2hvNV")) == NULL) || r; - r = ((glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3hvNV")) == NULL) || r; - r = ((glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4hvNV")) == NULL) || r; - r = ((glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthNV")) == NULL) || r; - r = ((glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexWeighthvNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_half_float */ - -#ifdef GL_NV_light_max_exponent - -#endif /* GL_NV_light_max_exponent */ - -#ifdef GL_NV_multisample_filter_hint - -#endif /* GL_NV_multisample_filter_hint */ - -#ifdef GL_NV_occlusion_query - -static GLboolean _glewInit_GL_NV_occlusion_query (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glBeginOcclusionQueryNV")) == NULL) || r; - r = ((glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteOcclusionQueriesNV")) == NULL) || r; - r = ((glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glEndOcclusionQueryNV")) == NULL) || r; - r = ((glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)glewGetProcAddress((const GLubyte*)"glGenOcclusionQueriesNV")) == NULL) || r; - r = ((glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryivNV")) == NULL) || r; - r = ((glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetOcclusionQueryuivNV")) == NULL) || r; - r = ((glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)glewGetProcAddress((const GLubyte*)"glIsOcclusionQueryNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_occlusion_query */ - -#ifdef GL_NV_packed_depth_stencil - -#endif /* GL_NV_packed_depth_stencil */ - -#ifdef GL_NV_parameter_buffer_object - -static GLboolean _glewInit_GL_NV_parameter_buffer_object (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIivNV")) == NULL) || r; - r = ((glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersIuivNV")) == NULL) || r; - r = ((glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramBufferParametersfvNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_parameter_buffer_object */ - -#ifdef GL_NV_pixel_data_range - -static GLboolean _glewInit_GL_NV_pixel_data_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushPixelDataRangeNV")) == NULL) || r; - r = ((glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)glewGetProcAddress((const GLubyte*)"glPixelDataRangeNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_pixel_data_range */ - -#ifdef GL_NV_point_sprite - -static GLboolean _glewInit_GL_NV_point_sprite (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glPointParameteriNV")) == NULL) || r; - r = ((glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glPointParameterivNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_point_sprite */ - -#ifdef GL_NV_present_video - -static GLboolean _glewInit_GL_NV_present_video (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoi64vNV")) == NULL) || r; - r = ((glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoivNV")) == NULL) || r; - r = ((glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideoui64vNV")) == NULL) || r; - r = ((glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVideouivNV")) == NULL) || r; - r = ((glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameDualFillNV")) == NULL) || r; - r = ((glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)glewGetProcAddress((const GLubyte*)"glPresentFrameKeyedNV")) == NULL) || r; - r = ((glVideoParameterivNV = (PFNGLVIDEOPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glVideoParameterivNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_present_video */ - -#ifdef GL_NV_primitive_restart - -static GLboolean _glewInit_GL_NV_primitive_restart (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartIndexNV")) == NULL) || r; - r = ((glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)glewGetProcAddress((const GLubyte*)"glPrimitiveRestartNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_primitive_restart */ - -#ifdef GL_NV_register_combiners - -static GLboolean _glewInit_GL_NV_register_combiners (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerInputNV")) == NULL) || r; - r = ((glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerOutputNV")) == NULL) || r; - r = ((glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfNV")) == NULL) || r; - r = ((glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterfvNV")) == NULL) || r; - r = ((glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameteriNV")) == NULL) || r; - r = ((glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerParameterivNV")) == NULL) || r; - r = ((glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)glewGetProcAddress((const GLubyte*)"glFinalCombinerInputNV")) == NULL) || r; - r = ((glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterfvNV")) == NULL) || r; - r = ((glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerInputParameterivNV")) == NULL) || r; - r = ((glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterfvNV")) == NULL) || r; - r = ((glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerOutputParameterivNV")) == NULL) || r; - r = ((glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterfvNV")) == NULL) || r; - r = ((glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetFinalCombinerInputParameterivNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_register_combiners */ - -#ifdef GL_NV_register_combiners2 - -static GLboolean _glewInit_GL_NV_register_combiners2 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glCombinerStageParameterfvNV")) == NULL) || r; - r = ((glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetCombinerStageParameterfvNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_register_combiners2 */ - -#ifdef GL_NV_texgen_emboss - -#endif /* GL_NV_texgen_emboss */ - -#ifdef GL_NV_texgen_reflection - -#endif /* GL_NV_texgen_reflection */ - -#ifdef GL_NV_texture_compression_vtc - -#endif /* GL_NV_texture_compression_vtc */ - -#ifdef GL_NV_texture_env_combine4 - -#endif /* GL_NV_texture_env_combine4 */ - -#ifdef GL_NV_texture_expand_normal - -#endif /* GL_NV_texture_expand_normal */ - -#ifdef GL_NV_texture_rectangle - -#endif /* GL_NV_texture_rectangle */ - -#ifdef GL_NV_texture_shader - -#endif /* GL_NV_texture_shader */ - -#ifdef GL_NV_texture_shader2 - -#endif /* GL_NV_texture_shader2 */ - -#ifdef GL_NV_texture_shader3 - -#endif /* GL_NV_texture_shader3 */ - -#ifdef GL_NV_transform_feedback - -static GLboolean _glewInit_GL_NV_transform_feedback (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glActiveVaryingNV")) == NULL) || r; - r = ((glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glBeginTransformFeedbackNV")) == NULL) || r; - r = ((glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferBaseNV")) == NULL) || r; - r = ((glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferOffsetNV")) == NULL) || r; - r = ((glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)glewGetProcAddress((const GLubyte*)"glBindBufferRangeNV")) == NULL) || r; - r = ((glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)glewGetProcAddress((const GLubyte*)"glEndTransformFeedbackNV")) == NULL) || r; - r = ((glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveVaryingNV")) == NULL) || r; - r = ((glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetTransformFeedbackVaryingNV")) == NULL) || r; - r = ((glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)glewGetProcAddress((const GLubyte*)"glGetVaryingLocationNV")) == NULL) || r; - r = ((glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackAttribsNV")) == NULL) || r; - r = ((glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)glewGetProcAddress((const GLubyte*)"glTransformFeedbackVaryingsNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_transform_feedback */ - -#ifdef GL_NV_vertex_array_range - -static GLboolean _glewInit_GL_NV_vertex_array_range (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glFlushVertexArrayRangeNV")) == NULL) || r; - r = ((glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayRangeNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_vertex_array_range */ - -#ifdef GL_NV_vertex_array_range2 - -#endif /* GL_NV_vertex_array_range2 */ - -#ifdef GL_NV_vertex_program - -static GLboolean _glewInit_GL_NV_vertex_program (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glAreProgramsResidentNV")) == NULL) || r; - r = ((glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glBindProgramNV")) == NULL) || r; - r = ((glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glDeleteProgramsNV")) == NULL) || r; - r = ((glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glExecuteProgramNV")) == NULL) || r; - r = ((glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glGenProgramsNV")) == NULL) || r; - r = ((glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterdvNV")) == NULL) || r; - r = ((glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramParameterfvNV")) == NULL) || r; - r = ((glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStringNV")) == NULL) || r; - r = ((glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramivNV")) == NULL) || r; - r = ((glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetTrackMatrixivNV")) == NULL) || r; - r = ((glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribPointervNV")) == NULL) || r; - r = ((glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribdvNV")) == NULL) || r; - r = ((glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribfvNV")) == NULL) || r; - r = ((glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribivNV")) == NULL) || r; - r = ((glIsProgramNV = (PFNGLISPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glIsProgramNV")) == NULL) || r; - r = ((glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)glewGetProcAddress((const GLubyte*)"glLoadProgramNV")) == NULL) || r; - r = ((glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dNV")) == NULL) || r; - r = ((glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4dvNV")) == NULL) || r; - r = ((glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fNV")) == NULL) || r; - r = ((glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameter4fvNV")) == NULL) || r; - r = ((glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4dvNV")) == NULL) || r; - r = ((glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glProgramParameters4fvNV")) == NULL) || r; - r = ((glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)glewGetProcAddress((const GLubyte*)"glRequestResidentProgramsNV")) == NULL) || r; - r = ((glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)glewGetProcAddress((const GLubyte*)"glTrackMatrixNV")) == NULL) || r; - r = ((glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dNV")) == NULL) || r; - r = ((glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1dvNV")) == NULL) || r; - r = ((glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fNV")) == NULL) || r; - r = ((glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1fvNV")) == NULL) || r; - r = ((glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1sNV")) == NULL) || r; - r = ((glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib1svNV")) == NULL) || r; - r = ((glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dNV")) == NULL) || r; - r = ((glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2dvNV")) == NULL) || r; - r = ((glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fNV")) == NULL) || r; - r = ((glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2fvNV")) == NULL) || r; - r = ((glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2sNV")) == NULL) || r; - r = ((glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib2svNV")) == NULL) || r; - r = ((glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dNV")) == NULL) || r; - r = ((glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3dvNV")) == NULL) || r; - r = ((glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fNV")) == NULL) || r; - r = ((glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3fvNV")) == NULL) || r; - r = ((glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3sNV")) == NULL) || r; - r = ((glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib3svNV")) == NULL) || r; - r = ((glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dNV")) == NULL) || r; - r = ((glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4dvNV")) == NULL) || r; - r = ((glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fNV")) == NULL) || r; - r = ((glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4fvNV")) == NULL) || r; - r = ((glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4sNV")) == NULL) || r; - r = ((glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4svNV")) == NULL) || r; - r = ((glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubNV")) == NULL) || r; - r = ((glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttrib4ubvNV")) == NULL) || r; - r = ((glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribPointerNV")) == NULL) || r; - r = ((glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1dvNV")) == NULL) || r; - r = ((glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1fvNV")) == NULL) || r; - r = ((glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs1svNV")) == NULL) || r; - r = ((glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2dvNV")) == NULL) || r; - r = ((glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2fvNV")) == NULL) || r; - r = ((glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs2svNV")) == NULL) || r; - r = ((glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3dvNV")) == NULL) || r; - r = ((glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3fvNV")) == NULL) || r; - r = ((glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs3svNV")) == NULL) || r; - r = ((glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4dvNV")) == NULL) || r; - r = ((glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4fvNV")) == NULL) || r; - r = ((glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4svNV")) == NULL) || r; - r = ((glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribs4ubvNV")) == NULL) || r; - - return r; -} - -#endif /* GL_NV_vertex_program */ - -#ifdef GL_NV_vertex_program1_1 - -#endif /* GL_NV_vertex_program1_1 */ - -#ifdef GL_NV_vertex_program2 - -#endif /* GL_NV_vertex_program2 */ - -#ifdef GL_NV_vertex_program2_option - -#endif /* GL_NV_vertex_program2_option */ - -#ifdef GL_NV_vertex_program3 - -#endif /* GL_NV_vertex_program3 */ - -#ifdef GL_NV_vertex_program4 - -#endif /* GL_NV_vertex_program4 */ - -#ifdef GL_OES_byte_coordinates - -#endif /* GL_OES_byte_coordinates */ - -#ifdef GL_OES_compressed_paletted_texture - -#endif /* GL_OES_compressed_paletted_texture */ - -#ifdef GL_OES_read_format - -#endif /* GL_OES_read_format */ - -#ifdef GL_OES_single_precision - -static GLboolean _glewInit_GL_OES_single_precision (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)glewGetProcAddress((const GLubyte*)"glClearDepthfOES")) == NULL) || r; - r = ((glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glClipPlanefOES")) == NULL) || r; - r = ((glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)glewGetProcAddress((const GLubyte*)"glDepthRangefOES")) == NULL) || r; - r = ((glFrustumfOES = (PFNGLFRUSTUMFOESPROC)glewGetProcAddress((const GLubyte*)"glFrustumfOES")) == NULL) || r; - r = ((glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)glewGetProcAddress((const GLubyte*)"glGetClipPlanefOES")) == NULL) || r; - r = ((glOrthofOES = (PFNGLORTHOFOESPROC)glewGetProcAddress((const GLubyte*)"glOrthofOES")) == NULL) || r; - - return r; -} - -#endif /* GL_OES_single_precision */ - -#ifdef GL_OML_interlace - -#endif /* GL_OML_interlace */ - -#ifdef GL_OML_resample - -#endif /* GL_OML_resample */ - -#ifdef GL_OML_subsample - -#endif /* GL_OML_subsample */ - -#ifdef GL_PGI_misc_hints - -#endif /* GL_PGI_misc_hints */ - -#ifdef GL_PGI_vertex_hints - -#endif /* GL_PGI_vertex_hints */ - -#ifdef GL_REND_screen_coordinates - -#endif /* GL_REND_screen_coordinates */ - -#ifdef GL_S3_s3tc - -#endif /* GL_S3_s3tc */ - -#ifdef GL_SGIS_color_range - -#endif /* GL_SGIS_color_range */ - -#ifdef GL_SGIS_detail_texture - -static GLboolean _glewInit_GL_SGIS_detail_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glDetailTexFuncSGIS")) == NULL) || r; - r = ((glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetDetailTexFuncSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_detail_texture */ - -#ifdef GL_SGIS_fog_function - -static GLboolean _glewInit_GL_SGIS_fog_function (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glFogFuncSGIS")) == NULL) || r; - r = ((glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetFogFuncSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_fog_function */ - -#ifdef GL_SGIS_generate_mipmap - -#endif /* GL_SGIS_generate_mipmap */ - -#ifdef GL_SGIS_multisample - -static GLboolean _glewInit_GL_SGIS_multisample (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)glewGetProcAddress((const GLubyte*)"glSampleMaskSGIS")) == NULL) || r; - r = ((glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)glewGetProcAddress((const GLubyte*)"glSamplePatternSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_multisample */ - -#ifdef GL_SGIS_pixel_texture - -#endif /* GL_SGIS_pixel_texture */ - -#ifdef GL_SGIS_point_line_texgen - -#endif /* GL_SGIS_point_line_texgen */ - -#ifdef GL_SGIS_sharpen_texture - -static GLboolean _glewInit_GL_SGIS_sharpen_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetSharpenTexFuncSGIS")) == NULL) || r; - r = ((glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glSharpenTexFuncSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_sharpen_texture */ - -#ifdef GL_SGIS_texture4D - -static GLboolean _glewInit_GL_SGIS_texture4D (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexImage4DSGIS")) == NULL) || r; - r = ((glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)glewGetProcAddress((const GLubyte*)"glTexSubImage4DSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_texture4D */ - -#ifdef GL_SGIS_texture_border_clamp - -#endif /* GL_SGIS_texture_border_clamp */ - -#ifdef GL_SGIS_texture_edge_clamp - -#endif /* GL_SGIS_texture_edge_clamp */ - -#ifdef GL_SGIS_texture_filter4 - -static GLboolean _glewInit_GL_SGIS_texture_filter4 (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glGetTexFilterFuncSGIS")) == NULL) || r; - r = ((glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)glewGetProcAddress((const GLubyte*)"glTexFilterFuncSGIS")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIS_texture_filter4 */ - -#ifdef GL_SGIS_texture_lod - -#endif /* GL_SGIS_texture_lod */ - -#ifdef GL_SGIS_texture_select - -#endif /* GL_SGIS_texture_select */ - -#ifdef GL_SGIX_async - -static GLboolean _glewInit_GL_SGIX_async (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glAsyncMarkerSGIX")) == NULL) || r; - r = ((glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glDeleteAsyncMarkersSGIX")) == NULL) || r; - r = ((glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glFinishAsyncSGIX")) == NULL) || r; - r = ((glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glGenAsyncMarkersSGIX")) == NULL) || r; - r = ((glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)glewGetProcAddress((const GLubyte*)"glIsAsyncMarkerSGIX")) == NULL) || r; - r = ((glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glPollAsyncSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_async */ - -#ifdef GL_SGIX_async_histogram - -#endif /* GL_SGIX_async_histogram */ - -#ifdef GL_SGIX_async_pixel - -#endif /* GL_SGIX_async_pixel */ - -#ifdef GL_SGIX_blend_alpha_minmax - -#endif /* GL_SGIX_blend_alpha_minmax */ - -#ifdef GL_SGIX_clipmap - -#endif /* GL_SGIX_clipmap */ - -#ifdef GL_SGIX_convolution_accuracy - -#endif /* GL_SGIX_convolution_accuracy */ - -#ifdef GL_SGIX_depth_texture - -#endif /* GL_SGIX_depth_texture */ - -#ifdef GL_SGIX_flush_raster - -static GLboolean _glewInit_GL_SGIX_flush_raster (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)glewGetProcAddress((const GLubyte*)"glFlushRasterSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_flush_raster */ - -#ifdef GL_SGIX_fog_offset - -#endif /* GL_SGIX_fog_offset */ - -#ifdef GL_SGIX_fog_texture - -static GLboolean _glewInit_GL_SGIX_fog_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTextureFogSGIX = (PFNGLTEXTUREFOGSGIXPROC)glewGetProcAddress((const GLubyte*)"glTextureFogSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_fog_texture */ - -#ifdef GL_SGIX_fragment_specular_lighting - -static GLboolean _glewInit_GL_SGIX_fragment_specular_lighting (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentColorMaterialSGIX")) == NULL) || r; - r = ((glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfSGIX")) == NULL) || r; - r = ((glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelfvSGIX")) == NULL) || r; - r = ((glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModeliSGIX")) == NULL) || r; - r = ((glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightModelivSGIX")) == NULL) || r; - r = ((glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfSGIX")) == NULL) || r; - r = ((glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightfvSGIX")) == NULL) || r; - r = ((glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightiSGIX")) == NULL) || r; - r = ((glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentLightivSGIX")) == NULL) || r; - r = ((glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfSGIX")) == NULL) || r; - r = ((glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialfvSGIX")) == NULL) || r; - r = ((glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialiSGIX")) == NULL) || r; - r = ((glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glFragmentMaterialivSGIX")) == NULL) || r; - r = ((glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightfvSGIX")) == NULL) || r; - r = ((glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentLightivSGIX")) == NULL) || r; - r = ((glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialfvSGIX")) == NULL) || r; - r = ((glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glGetFragmentMaterialivSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_fragment_specular_lighting */ - -#ifdef GL_SGIX_framezoom - -static GLboolean _glewInit_GL_SGIX_framezoom (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)glewGetProcAddress((const GLubyte*)"glFrameZoomSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_framezoom */ - -#ifdef GL_SGIX_interlace - -#endif /* GL_SGIX_interlace */ - -#ifdef GL_SGIX_ir_instrument1 - -#endif /* GL_SGIX_ir_instrument1 */ - -#ifdef GL_SGIX_list_priority - -#endif /* GL_SGIX_list_priority */ - -#ifdef GL_SGIX_pixel_texture - -static GLboolean _glewInit_GL_SGIX_pixel_texture (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)glewGetProcAddress((const GLubyte*)"glPixelTexGenSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_pixel_texture */ - -#ifdef GL_SGIX_pixel_texture_bits - -#endif /* GL_SGIX_pixel_texture_bits */ - -#ifdef GL_SGIX_reference_plane - -static GLboolean _glewInit_GL_SGIX_reference_plane (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)glewGetProcAddress((const GLubyte*)"glReferencePlaneSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_reference_plane */ - -#ifdef GL_SGIX_resample - -#endif /* GL_SGIX_resample */ - -#ifdef GL_SGIX_shadow - -#endif /* GL_SGIX_shadow */ - -#ifdef GL_SGIX_shadow_ambient - -#endif /* GL_SGIX_shadow_ambient */ - -#ifdef GL_SGIX_sprite - -static GLboolean _glewInit_GL_SGIX_sprite (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfSGIX")) == NULL) || r; - r = ((glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterfvSGIX")) == NULL) || r; - r = ((glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameteriSGIX")) == NULL) || r; - r = ((glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)glewGetProcAddress((const GLubyte*)"glSpriteParameterivSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_sprite */ - -#ifdef GL_SGIX_tag_sample_buffer - -static GLboolean _glewInit_GL_SGIX_tag_sample_buffer (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glTagSampleBufferSGIX")) == NULL) || r; - - return r; -} - -#endif /* GL_SGIX_tag_sample_buffer */ - -#ifdef GL_SGIX_texture_add_env - -#endif /* GL_SGIX_texture_add_env */ - -#ifdef GL_SGIX_texture_coordinate_clamp - -#endif /* GL_SGIX_texture_coordinate_clamp */ - -#ifdef GL_SGIX_texture_lod_bias - -#endif /* GL_SGIX_texture_lod_bias */ - -#ifdef GL_SGIX_texture_multi_buffer - -#endif /* GL_SGIX_texture_multi_buffer */ - -#ifdef GL_SGIX_texture_range - -#endif /* GL_SGIX_texture_range */ - -#ifdef GL_SGIX_texture_scale_bias - -#endif /* GL_SGIX_texture_scale_bias */ - -#ifdef GL_SGIX_vertex_preclip - -#endif /* GL_SGIX_vertex_preclip */ - -#ifdef GL_SGIX_vertex_preclip_hint - -#endif /* GL_SGIX_vertex_preclip_hint */ - -#ifdef GL_SGIX_ycrcb - -#endif /* GL_SGIX_ycrcb */ - -#ifdef GL_SGI_color_matrix - -#endif /* GL_SGI_color_matrix */ - -#ifdef GL_SGI_color_table - -static GLboolean _glewInit_GL_SGI_color_table (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterfvSGI")) == NULL) || r; - r = ((glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableParameterivSGI")) == NULL) || r; - r = ((glColorTableSGI = (PFNGLCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glColorTableSGI")) == NULL) || r; - r = ((glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glCopyColorTableSGI")) == NULL) || r; - r = ((glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterfvSGI")) == NULL) || r; - r = ((glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableParameterivSGI")) == NULL) || r; - r = ((glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)glewGetProcAddress((const GLubyte*)"glGetColorTableSGI")) == NULL) || r; - - return r; -} - -#endif /* GL_SGI_color_table */ - -#ifdef GL_SGI_texture_color_table - -#endif /* GL_SGI_texture_color_table */ - -#ifdef GL_SUNX_constant_data - -static GLboolean _glewInit_GL_SUNX_constant_data (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)glewGetProcAddress((const GLubyte*)"glFinishTextureSUNX")) == NULL) || r; - - return r; -} - -#endif /* GL_SUNX_constant_data */ - -#ifdef GL_SUN_convolution_border_modes - -#endif /* GL_SUN_convolution_border_modes */ - -#ifdef GL_SUN_global_alpha - -static GLboolean _glewInit_GL_SUN_global_alpha (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorbSUN")) == NULL) || r; - r = ((glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactordSUN")) == NULL) || r; - r = ((glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorfSUN")) == NULL) || r; - r = ((glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoriSUN")) == NULL) || r; - r = ((glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorsSUN")) == NULL) || r; - r = ((glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorubSUN")) == NULL) || r; - r = ((glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactoruiSUN")) == NULL) || r; - r = ((glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)glewGetProcAddress((const GLubyte*)"glGlobalAlphaFactorusSUN")) == NULL) || r; - - return r; -} - -#endif /* GL_SUN_global_alpha */ - -#ifdef GL_SUN_mesh_array - -#endif /* GL_SUN_mesh_array */ - -#ifdef GL_SUN_read_video_pixels - -static GLboolean _glewInit_GL_SUN_read_video_pixels (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glReadVideoPixelsSUN = (PFNGLREADVIDEOPIXELSSUNPROC)glewGetProcAddress((const GLubyte*)"glReadVideoPixelsSUN")) == NULL) || r; - - return r; -} - -#endif /* GL_SUN_read_video_pixels */ - -#ifdef GL_SUN_slice_accum - -#endif /* GL_SUN_slice_accum */ - -#ifdef GL_SUN_triangle_list - -static GLboolean _glewInit_GL_SUN_triangle_list (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodePointerSUN")) == NULL) || r; - r = ((glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubSUN")) == NULL) || r; - r = ((glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeubvSUN")) == NULL) || r; - r = ((glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiSUN")) == NULL) || r; - r = ((glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuivSUN")) == NULL) || r; - r = ((glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusSUN")) == NULL) || r; - r = ((glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeusvSUN")) == NULL) || r; - - return r; -} - -#endif /* GL_SUN_triangle_list */ - -#ifdef GL_SUN_vertex - -static GLboolean _glewInit_GL_SUN_vertex (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fSUN")) == NULL) || r; - r = ((glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor3fVertex3fvSUN")) == NULL) || r; - r = ((glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fSUN")) == NULL) || r; - r = ((glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex2fvSUN")) == NULL) || r; - r = ((glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fSUN")) == NULL) || r; - r = ((glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glColor4ubVertex3fvSUN")) == NULL) || r; - r = ((glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fSUN")) == NULL) || r; - r = ((glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiColor4ubVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiTexCoord2fVertex3fvSUN")) == NULL) || r; - r = ((glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fSUN")) == NULL) || r; - r = ((glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glReplacementCodeuiVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fSUN")) == NULL) || r; - r = ((glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor3fVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fSUN")) == NULL) || r; - r = ((glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fColor4ubVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fSUN")) == NULL) || r; - r = ((glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fNormal3fVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fSUN")) == NULL) || r; - r = ((glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord2fVertex3fvSUN")) == NULL) || r; - r = ((glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fSUN")) == NULL) || r; - r = ((glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fColor4fNormal3fVertex4fvSUN")) == NULL) || r; - r = ((glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fSUN")) == NULL) || r; - r = ((glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)glewGetProcAddress((const GLubyte*)"glTexCoord4fVertex4fvSUN")) == NULL) || r; - - return r; -} - -#endif /* GL_SUN_vertex */ - -#ifdef GL_WIN_phong_shading - -#endif /* GL_WIN_phong_shading */ - -#ifdef GL_WIN_specular_fog - -#endif /* GL_WIN_specular_fog */ - -#ifdef GL_WIN_swap_hint - -static GLboolean _glewInit_GL_WIN_swap_hint (GLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glAddSwapHintRectWIN = (PFNGLADDSWAPHINTRECTWINPROC)glewGetProcAddress((const GLubyte*)"glAddSwapHintRectWIN")) == NULL) || r; - - return r; -} - -#endif /* GL_WIN_swap_hint */ - -/* ------------------------------------------------------------------------- */ - -/* - * Search for name in the extensions string. Use of strstr() - * is not sufficient because extension names can be prefixes of - * other extension names. Could use strtok() but the constant - * string returned by glGetString might be in read-only memory. - */ -GLboolean glewGetExtension (const char* name) -{ - GLubyte* p; - GLubyte* end; - GLuint len = _glewStrLen((const GLubyte*)name); - p = (GLubyte*)glGetString(GL_EXTENSIONS); - if (0 == p) return GL_FALSE; - end = p + _glewStrLen(p); - while (p < end) - { - GLuint n = _glewStrCLen(p, ' '); - if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; - p += n+1; - } - return GL_FALSE; -} - -/* ------------------------------------------------------------------------- */ - -#ifndef GLEW_MX -static -#endif -GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST) -{ - const GLubyte* s; - GLuint dot, major, minor; - /* query opengl version */ - s = glGetString(GL_VERSION); - dot = _glewStrCLen(s, '.'); - major = dot-1; - minor = dot+1; - if (dot == 0 || s[minor] == '\0') - return GLEW_ERROR_NO_GL_VERSION; - if (s[major] == '1' && s[minor] == '0') - { - return GLEW_ERROR_GL_VERSION_10_ONLY; - } - else - { - CONST_CAST(GLEW_VERSION_1_1) = GL_TRUE; - if (s[major] >= '2') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_5) = GL_TRUE; - CONST_CAST(GLEW_VERSION_2_0) = GL_TRUE; - if (s[minor] >= '1') - { - CONST_CAST(GLEW_VERSION_2_1) = GL_TRUE; - } - } - else - { - if (s[minor] >= '5') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_5) = GL_TRUE; - CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE; - } - if (s[minor] == '4') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_4) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE; - } - if (s[minor] == '3') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_3) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE; - } - if (s[minor] == '2') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLEW_VERSION_1_3) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE; - } - if (s[minor] < '2') - { - CONST_CAST(GLEW_VERSION_1_2) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_3) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_4) = GL_FALSE; - CONST_CAST(GLEW_VERSION_1_5) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_0) = GL_FALSE; - CONST_CAST(GLEW_VERSION_2_1) = GL_FALSE; - } - } - } - /* initialize extensions */ -#ifdef GL_VERSION_1_2 - if (glewExperimental || GLEW_VERSION_1_2) CONST_CAST(GLEW_VERSION_1_2) = !_glewInit_GL_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_1_2 */ -#ifdef GL_VERSION_1_3 - if (glewExperimental || GLEW_VERSION_1_3) CONST_CAST(GLEW_VERSION_1_3) = !_glewInit_GL_VERSION_1_3(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_1_3 */ -#ifdef GL_VERSION_1_4 - if (glewExperimental || GLEW_VERSION_1_4) CONST_CAST(GLEW_VERSION_1_4) = !_glewInit_GL_VERSION_1_4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_1_4 */ -#ifdef GL_VERSION_1_5 - if (glewExperimental || GLEW_VERSION_1_5) CONST_CAST(GLEW_VERSION_1_5) = !_glewInit_GL_VERSION_1_5(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_1_5 */ -#ifdef GL_VERSION_2_0 - if (glewExperimental || GLEW_VERSION_2_0) CONST_CAST(GLEW_VERSION_2_0) = !_glewInit_GL_VERSION_2_0(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_2_0 */ -#ifdef GL_VERSION_2_1 - if (glewExperimental || GLEW_VERSION_2_1) CONST_CAST(GLEW_VERSION_2_1) = !_glewInit_GL_VERSION_2_1(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_2_1 */ -#ifdef GL_VERSION_3_0 - if (glewExperimental || GLEW_VERSION_3_0) CONST_CAST(GLEW_VERSION_3_0) = !_glewInit_GL_VERSION_3_0(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_VERSION_3_0 */ -#ifdef GL_3DFX_multisample - CONST_CAST(GLEW_3DFX_multisample) = glewGetExtension("GL_3DFX_multisample"); -#endif /* GL_3DFX_multisample */ -#ifdef GL_3DFX_tbuffer - CONST_CAST(GLEW_3DFX_tbuffer) = glewGetExtension("GL_3DFX_tbuffer"); - if (glewExperimental || GLEW_3DFX_tbuffer) CONST_CAST(GLEW_3DFX_tbuffer) = !_glewInit_GL_3DFX_tbuffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_3DFX_tbuffer */ -#ifdef GL_3DFX_texture_compression_FXT1 - CONST_CAST(GLEW_3DFX_texture_compression_FXT1) = glewGetExtension("GL_3DFX_texture_compression_FXT1"); -#endif /* GL_3DFX_texture_compression_FXT1 */ -#ifdef GL_APPLE_client_storage - CONST_CAST(GLEW_APPLE_client_storage) = glewGetExtension("GL_APPLE_client_storage"); -#endif /* GL_APPLE_client_storage */ -#ifdef GL_APPLE_element_array - CONST_CAST(GLEW_APPLE_element_array) = glewGetExtension("GL_APPLE_element_array"); - if (glewExperimental || GLEW_APPLE_element_array) CONST_CAST(GLEW_APPLE_element_array) = !_glewInit_GL_APPLE_element_array(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_element_array */ -#ifdef GL_APPLE_fence - CONST_CAST(GLEW_APPLE_fence) = glewGetExtension("GL_APPLE_fence"); - if (glewExperimental || GLEW_APPLE_fence) CONST_CAST(GLEW_APPLE_fence) = !_glewInit_GL_APPLE_fence(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_fence */ -#ifdef GL_APPLE_float_pixels - CONST_CAST(GLEW_APPLE_float_pixels) = glewGetExtension("GL_APPLE_float_pixels"); -#endif /* GL_APPLE_float_pixels */ -#ifdef GL_APPLE_flush_buffer_range - CONST_CAST(GLEW_APPLE_flush_buffer_range) = glewGetExtension("GL_APPLE_flush_buffer_range"); - if (glewExperimental || GLEW_APPLE_flush_buffer_range) CONST_CAST(GLEW_APPLE_flush_buffer_range) = !_glewInit_GL_APPLE_flush_buffer_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_flush_buffer_range */ -#ifdef GL_APPLE_pixel_buffer - CONST_CAST(GLEW_APPLE_pixel_buffer) = glewGetExtension("GL_APPLE_pixel_buffer"); -#endif /* GL_APPLE_pixel_buffer */ -#ifdef GL_APPLE_specular_vector - CONST_CAST(GLEW_APPLE_specular_vector) = glewGetExtension("GL_APPLE_specular_vector"); -#endif /* GL_APPLE_specular_vector */ -#ifdef GL_APPLE_texture_range - CONST_CAST(GLEW_APPLE_texture_range) = glewGetExtension("GL_APPLE_texture_range"); - if (glewExperimental || GLEW_APPLE_texture_range) CONST_CAST(GLEW_APPLE_texture_range) = !_glewInit_GL_APPLE_texture_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_texture_range */ -#ifdef GL_APPLE_transform_hint - CONST_CAST(GLEW_APPLE_transform_hint) = glewGetExtension("GL_APPLE_transform_hint"); -#endif /* GL_APPLE_transform_hint */ -#ifdef GL_APPLE_vertex_array_object - CONST_CAST(GLEW_APPLE_vertex_array_object) = glewGetExtension("GL_APPLE_vertex_array_object"); - if (glewExperimental || GLEW_APPLE_vertex_array_object) CONST_CAST(GLEW_APPLE_vertex_array_object) = !_glewInit_GL_APPLE_vertex_array_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_vertex_array_object */ -#ifdef GL_APPLE_vertex_array_range - CONST_CAST(GLEW_APPLE_vertex_array_range) = glewGetExtension("GL_APPLE_vertex_array_range"); - if (glewExperimental || GLEW_APPLE_vertex_array_range) CONST_CAST(GLEW_APPLE_vertex_array_range) = !_glewInit_GL_APPLE_vertex_array_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_APPLE_vertex_array_range */ -#ifdef GL_APPLE_ycbcr_422 - CONST_CAST(GLEW_APPLE_ycbcr_422) = glewGetExtension("GL_APPLE_ycbcr_422"); -#endif /* GL_APPLE_ycbcr_422 */ -#ifdef GL_ARB_color_buffer_float - CONST_CAST(GLEW_ARB_color_buffer_float) = glewGetExtension("GL_ARB_color_buffer_float"); - if (glewExperimental || GLEW_ARB_color_buffer_float) CONST_CAST(GLEW_ARB_color_buffer_float) = !_glewInit_GL_ARB_color_buffer_float(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_color_buffer_float */ -#ifdef GL_ARB_depth_buffer_float - CONST_CAST(GLEW_ARB_depth_buffer_float) = glewGetExtension("GL_ARB_depth_buffer_float"); -#endif /* GL_ARB_depth_buffer_float */ -#ifdef GL_ARB_depth_texture - CONST_CAST(GLEW_ARB_depth_texture) = glewGetExtension("GL_ARB_depth_texture"); -#endif /* GL_ARB_depth_texture */ -#ifdef GL_ARB_draw_buffers - CONST_CAST(GLEW_ARB_draw_buffers) = glewGetExtension("GL_ARB_draw_buffers"); - if (glewExperimental || GLEW_ARB_draw_buffers) CONST_CAST(GLEW_ARB_draw_buffers) = !_glewInit_GL_ARB_draw_buffers(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_draw_buffers */ -#ifdef GL_ARB_draw_instanced - CONST_CAST(GLEW_ARB_draw_instanced) = glewGetExtension("GL_ARB_draw_instanced"); - if (glewExperimental || GLEW_ARB_draw_instanced) CONST_CAST(GLEW_ARB_draw_instanced) = !_glewInit_GL_ARB_draw_instanced(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_draw_instanced */ -#ifdef GL_ARB_fragment_program - CONST_CAST(GLEW_ARB_fragment_program) = glewGetExtension("GL_ARB_fragment_program"); -#endif /* GL_ARB_fragment_program */ -#ifdef GL_ARB_fragment_program_shadow - CONST_CAST(GLEW_ARB_fragment_program_shadow) = glewGetExtension("GL_ARB_fragment_program_shadow"); -#endif /* GL_ARB_fragment_program_shadow */ -#ifdef GL_ARB_fragment_shader - CONST_CAST(GLEW_ARB_fragment_shader) = glewGetExtension("GL_ARB_fragment_shader"); -#endif /* GL_ARB_fragment_shader */ -#ifdef GL_ARB_framebuffer_object - CONST_CAST(GLEW_ARB_framebuffer_object) = glewGetExtension("GL_ARB_framebuffer_object"); - if (glewExperimental || GLEW_ARB_framebuffer_object) CONST_CAST(GLEW_ARB_framebuffer_object) = !_glewInit_GL_ARB_framebuffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_framebuffer_object */ -#ifdef GL_ARB_framebuffer_sRGB - CONST_CAST(GLEW_ARB_framebuffer_sRGB) = glewGetExtension("GL_ARB_framebuffer_sRGB"); -#endif /* GL_ARB_framebuffer_sRGB */ -#ifdef GL_ARB_geometry_shader4 - CONST_CAST(GLEW_ARB_geometry_shader4) = glewGetExtension("GL_ARB_geometry_shader4"); - if (glewExperimental || GLEW_ARB_geometry_shader4) CONST_CAST(GLEW_ARB_geometry_shader4) = !_glewInit_GL_ARB_geometry_shader4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_geometry_shader4 */ -#ifdef GL_ARB_half_float_pixel - CONST_CAST(GLEW_ARB_half_float_pixel) = glewGetExtension("GL_ARB_half_float_pixel"); -#endif /* GL_ARB_half_float_pixel */ -#ifdef GL_ARB_half_float_vertex - CONST_CAST(GLEW_ARB_half_float_vertex) = glewGetExtension("GL_ARB_half_float_vertex"); -#endif /* GL_ARB_half_float_vertex */ -#ifdef GL_ARB_imaging - CONST_CAST(GLEW_ARB_imaging) = glewGetExtension("GL_ARB_imaging"); - if (glewExperimental || GLEW_ARB_imaging) CONST_CAST(GLEW_ARB_imaging) = !_glewInit_GL_ARB_imaging(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_imaging */ -#ifdef GL_ARB_instanced_arrays - CONST_CAST(GLEW_ARB_instanced_arrays) = glewGetExtension("GL_ARB_instanced_arrays"); - if (glewExperimental || GLEW_ARB_instanced_arrays) CONST_CAST(GLEW_ARB_instanced_arrays) = !_glewInit_GL_ARB_instanced_arrays(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_instanced_arrays */ -#ifdef GL_ARB_map_buffer_range - CONST_CAST(GLEW_ARB_map_buffer_range) = glewGetExtension("GL_ARB_map_buffer_range"); - if (glewExperimental || GLEW_ARB_map_buffer_range) CONST_CAST(GLEW_ARB_map_buffer_range) = !_glewInit_GL_ARB_map_buffer_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_map_buffer_range */ -#ifdef GL_ARB_matrix_palette - CONST_CAST(GLEW_ARB_matrix_palette) = glewGetExtension("GL_ARB_matrix_palette"); - if (glewExperimental || GLEW_ARB_matrix_palette) CONST_CAST(GLEW_ARB_matrix_palette) = !_glewInit_GL_ARB_matrix_palette(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_matrix_palette */ -#ifdef GL_ARB_multisample - CONST_CAST(GLEW_ARB_multisample) = glewGetExtension("GL_ARB_multisample"); - if (glewExperimental || GLEW_ARB_multisample) CONST_CAST(GLEW_ARB_multisample) = !_glewInit_GL_ARB_multisample(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_multisample */ -#ifdef GL_ARB_multitexture - CONST_CAST(GLEW_ARB_multitexture) = glewGetExtension("GL_ARB_multitexture"); - if (glewExperimental || GLEW_ARB_multitexture) CONST_CAST(GLEW_ARB_multitexture) = !_glewInit_GL_ARB_multitexture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_multitexture */ -#ifdef GL_ARB_occlusion_query - CONST_CAST(GLEW_ARB_occlusion_query) = glewGetExtension("GL_ARB_occlusion_query"); - if (glewExperimental || GLEW_ARB_occlusion_query) CONST_CAST(GLEW_ARB_occlusion_query) = !_glewInit_GL_ARB_occlusion_query(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_occlusion_query */ -#ifdef GL_ARB_pixel_buffer_object - CONST_CAST(GLEW_ARB_pixel_buffer_object) = glewGetExtension("GL_ARB_pixel_buffer_object"); -#endif /* GL_ARB_pixel_buffer_object */ -#ifdef GL_ARB_point_parameters - CONST_CAST(GLEW_ARB_point_parameters) = glewGetExtension("GL_ARB_point_parameters"); - if (glewExperimental || GLEW_ARB_point_parameters) CONST_CAST(GLEW_ARB_point_parameters) = !_glewInit_GL_ARB_point_parameters(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_point_parameters */ -#ifdef GL_ARB_point_sprite - CONST_CAST(GLEW_ARB_point_sprite) = glewGetExtension("GL_ARB_point_sprite"); -#endif /* GL_ARB_point_sprite */ -#ifdef GL_ARB_shader_objects - CONST_CAST(GLEW_ARB_shader_objects) = glewGetExtension("GL_ARB_shader_objects"); - if (glewExperimental || GLEW_ARB_shader_objects) CONST_CAST(GLEW_ARB_shader_objects) = !_glewInit_GL_ARB_shader_objects(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_shader_objects */ -#ifdef GL_ARB_shading_language_100 - CONST_CAST(GLEW_ARB_shading_language_100) = glewGetExtension("GL_ARB_shading_language_100"); -#endif /* GL_ARB_shading_language_100 */ -#ifdef GL_ARB_shadow - CONST_CAST(GLEW_ARB_shadow) = glewGetExtension("GL_ARB_shadow"); -#endif /* GL_ARB_shadow */ -#ifdef GL_ARB_shadow_ambient - CONST_CAST(GLEW_ARB_shadow_ambient) = glewGetExtension("GL_ARB_shadow_ambient"); -#endif /* GL_ARB_shadow_ambient */ -#ifdef GL_ARB_texture_border_clamp - CONST_CAST(GLEW_ARB_texture_border_clamp) = glewGetExtension("GL_ARB_texture_border_clamp"); -#endif /* GL_ARB_texture_border_clamp */ -#ifdef GL_ARB_texture_buffer_object - CONST_CAST(GLEW_ARB_texture_buffer_object) = glewGetExtension("GL_ARB_texture_buffer_object"); - if (glewExperimental || GLEW_ARB_texture_buffer_object) CONST_CAST(GLEW_ARB_texture_buffer_object) = !_glewInit_GL_ARB_texture_buffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_texture_buffer_object */ -#ifdef GL_ARB_texture_compression - CONST_CAST(GLEW_ARB_texture_compression) = glewGetExtension("GL_ARB_texture_compression"); - if (glewExperimental || GLEW_ARB_texture_compression) CONST_CAST(GLEW_ARB_texture_compression) = !_glewInit_GL_ARB_texture_compression(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_texture_compression */ -#ifdef GL_ARB_texture_compression_rgtc - CONST_CAST(GLEW_ARB_texture_compression_rgtc) = glewGetExtension("GL_ARB_texture_compression_rgtc"); -#endif /* GL_ARB_texture_compression_rgtc */ -#ifdef GL_ARB_texture_cube_map - CONST_CAST(GLEW_ARB_texture_cube_map) = glewGetExtension("GL_ARB_texture_cube_map"); -#endif /* GL_ARB_texture_cube_map */ -#ifdef GL_ARB_texture_env_add - CONST_CAST(GLEW_ARB_texture_env_add) = glewGetExtension("GL_ARB_texture_env_add"); -#endif /* GL_ARB_texture_env_add */ -#ifdef GL_ARB_texture_env_combine - CONST_CAST(GLEW_ARB_texture_env_combine) = glewGetExtension("GL_ARB_texture_env_combine"); -#endif /* GL_ARB_texture_env_combine */ -#ifdef GL_ARB_texture_env_crossbar - CONST_CAST(GLEW_ARB_texture_env_crossbar) = glewGetExtension("GL_ARB_texture_env_crossbar"); -#endif /* GL_ARB_texture_env_crossbar */ -#ifdef GL_ARB_texture_env_dot3 - CONST_CAST(GLEW_ARB_texture_env_dot3) = glewGetExtension("GL_ARB_texture_env_dot3"); -#endif /* GL_ARB_texture_env_dot3 */ -#ifdef GL_ARB_texture_float - CONST_CAST(GLEW_ARB_texture_float) = glewGetExtension("GL_ARB_texture_float"); -#endif /* GL_ARB_texture_float */ -#ifdef GL_ARB_texture_mirrored_repeat - CONST_CAST(GLEW_ARB_texture_mirrored_repeat) = glewGetExtension("GL_ARB_texture_mirrored_repeat"); -#endif /* GL_ARB_texture_mirrored_repeat */ -#ifdef GL_ARB_texture_non_power_of_two - CONST_CAST(GLEW_ARB_texture_non_power_of_two) = glewGetExtension("GL_ARB_texture_non_power_of_two"); -#endif /* GL_ARB_texture_non_power_of_two */ -#ifdef GL_ARB_texture_rectangle - CONST_CAST(GLEW_ARB_texture_rectangle) = glewGetExtension("GL_ARB_texture_rectangle"); -#endif /* GL_ARB_texture_rectangle */ -#ifdef GL_ARB_texture_rg - CONST_CAST(GLEW_ARB_texture_rg) = glewGetExtension("GL_ARB_texture_rg"); -#endif /* GL_ARB_texture_rg */ -#ifdef GL_ARB_transpose_matrix - CONST_CAST(GLEW_ARB_transpose_matrix) = glewGetExtension("GL_ARB_transpose_matrix"); - if (glewExperimental || GLEW_ARB_transpose_matrix) CONST_CAST(GLEW_ARB_transpose_matrix) = !_glewInit_GL_ARB_transpose_matrix(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_transpose_matrix */ -#ifdef GL_ARB_vertex_array_object - CONST_CAST(GLEW_ARB_vertex_array_object) = glewGetExtension("GL_ARB_vertex_array_object"); - if (glewExperimental || GLEW_ARB_vertex_array_object) CONST_CAST(GLEW_ARB_vertex_array_object) = !_glewInit_GL_ARB_vertex_array_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_vertex_array_object */ -#ifdef GL_ARB_vertex_blend - CONST_CAST(GLEW_ARB_vertex_blend) = glewGetExtension("GL_ARB_vertex_blend"); - if (glewExperimental || GLEW_ARB_vertex_blend) CONST_CAST(GLEW_ARB_vertex_blend) = !_glewInit_GL_ARB_vertex_blend(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_vertex_blend */ -#ifdef GL_ARB_vertex_buffer_object - CONST_CAST(GLEW_ARB_vertex_buffer_object) = glewGetExtension("GL_ARB_vertex_buffer_object"); - if (glewExperimental || GLEW_ARB_vertex_buffer_object) CONST_CAST(GLEW_ARB_vertex_buffer_object) = !_glewInit_GL_ARB_vertex_buffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_vertex_buffer_object */ -#ifdef GL_ARB_vertex_program - CONST_CAST(GLEW_ARB_vertex_program) = glewGetExtension("GL_ARB_vertex_program"); - if (glewExperimental || GLEW_ARB_vertex_program) CONST_CAST(GLEW_ARB_vertex_program) = !_glewInit_GL_ARB_vertex_program(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_vertex_program */ -#ifdef GL_ARB_vertex_shader - CONST_CAST(GLEW_ARB_vertex_shader) = glewGetExtension("GL_ARB_vertex_shader"); - if (glewExperimental || GLEW_ARB_vertex_shader) CONST_CAST(GLEW_ARB_vertex_shader) = !_glewInit_GL_ARB_vertex_shader(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_vertex_shader */ -#ifdef GL_ARB_window_pos - CONST_CAST(GLEW_ARB_window_pos) = glewGetExtension("GL_ARB_window_pos"); - if (glewExperimental || GLEW_ARB_window_pos) CONST_CAST(GLEW_ARB_window_pos) = !_glewInit_GL_ARB_window_pos(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ARB_window_pos */ -#ifdef GL_ATIX_point_sprites - CONST_CAST(GLEW_ATIX_point_sprites) = glewGetExtension("GL_ATIX_point_sprites"); -#endif /* GL_ATIX_point_sprites */ -#ifdef GL_ATIX_texture_env_combine3 - CONST_CAST(GLEW_ATIX_texture_env_combine3) = glewGetExtension("GL_ATIX_texture_env_combine3"); -#endif /* GL_ATIX_texture_env_combine3 */ -#ifdef GL_ATIX_texture_env_route - CONST_CAST(GLEW_ATIX_texture_env_route) = glewGetExtension("GL_ATIX_texture_env_route"); -#endif /* GL_ATIX_texture_env_route */ -#ifdef GL_ATIX_vertex_shader_output_point_size - CONST_CAST(GLEW_ATIX_vertex_shader_output_point_size) = glewGetExtension("GL_ATIX_vertex_shader_output_point_size"); -#endif /* GL_ATIX_vertex_shader_output_point_size */ -#ifdef GL_ATI_draw_buffers - CONST_CAST(GLEW_ATI_draw_buffers) = glewGetExtension("GL_ATI_draw_buffers"); - if (glewExperimental || GLEW_ATI_draw_buffers) CONST_CAST(GLEW_ATI_draw_buffers) = !_glewInit_GL_ATI_draw_buffers(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_draw_buffers */ -#ifdef GL_ATI_element_array - CONST_CAST(GLEW_ATI_element_array) = glewGetExtension("GL_ATI_element_array"); - if (glewExperimental || GLEW_ATI_element_array) CONST_CAST(GLEW_ATI_element_array) = !_glewInit_GL_ATI_element_array(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_element_array */ -#ifdef GL_ATI_envmap_bumpmap - CONST_CAST(GLEW_ATI_envmap_bumpmap) = glewGetExtension("GL_ATI_envmap_bumpmap"); - if (glewExperimental || GLEW_ATI_envmap_bumpmap) CONST_CAST(GLEW_ATI_envmap_bumpmap) = !_glewInit_GL_ATI_envmap_bumpmap(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_envmap_bumpmap */ -#ifdef GL_ATI_fragment_shader - CONST_CAST(GLEW_ATI_fragment_shader) = glewGetExtension("GL_ATI_fragment_shader"); - if (glewExperimental || GLEW_ATI_fragment_shader) CONST_CAST(GLEW_ATI_fragment_shader) = !_glewInit_GL_ATI_fragment_shader(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_fragment_shader */ -#ifdef GL_ATI_map_object_buffer - CONST_CAST(GLEW_ATI_map_object_buffer) = glewGetExtension("GL_ATI_map_object_buffer"); - if (glewExperimental || GLEW_ATI_map_object_buffer) CONST_CAST(GLEW_ATI_map_object_buffer) = !_glewInit_GL_ATI_map_object_buffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_map_object_buffer */ -#ifdef GL_ATI_pn_triangles - CONST_CAST(GLEW_ATI_pn_triangles) = glewGetExtension("GL_ATI_pn_triangles"); - if (glewExperimental || GLEW_ATI_pn_triangles) CONST_CAST(GLEW_ATI_pn_triangles) = !_glewInit_GL_ATI_pn_triangles(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_pn_triangles */ -#ifdef GL_ATI_separate_stencil - CONST_CAST(GLEW_ATI_separate_stencil) = glewGetExtension("GL_ATI_separate_stencil"); - if (glewExperimental || GLEW_ATI_separate_stencil) CONST_CAST(GLEW_ATI_separate_stencil) = !_glewInit_GL_ATI_separate_stencil(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_separate_stencil */ -#ifdef GL_ATI_shader_texture_lod - CONST_CAST(GLEW_ATI_shader_texture_lod) = glewGetExtension("GL_ATI_shader_texture_lod"); -#endif /* GL_ATI_shader_texture_lod */ -#ifdef GL_ATI_text_fragment_shader - CONST_CAST(GLEW_ATI_text_fragment_shader) = glewGetExtension("GL_ATI_text_fragment_shader"); -#endif /* GL_ATI_text_fragment_shader */ -#ifdef GL_ATI_texture_compression_3dc - CONST_CAST(GLEW_ATI_texture_compression_3dc) = glewGetExtension("GL_ATI_texture_compression_3dc"); -#endif /* GL_ATI_texture_compression_3dc */ -#ifdef GL_ATI_texture_env_combine3 - CONST_CAST(GLEW_ATI_texture_env_combine3) = glewGetExtension("GL_ATI_texture_env_combine3"); -#endif /* GL_ATI_texture_env_combine3 */ -#ifdef GL_ATI_texture_float - CONST_CAST(GLEW_ATI_texture_float) = glewGetExtension("GL_ATI_texture_float"); -#endif /* GL_ATI_texture_float */ -#ifdef GL_ATI_texture_mirror_once - CONST_CAST(GLEW_ATI_texture_mirror_once) = glewGetExtension("GL_ATI_texture_mirror_once"); -#endif /* GL_ATI_texture_mirror_once */ -#ifdef GL_ATI_vertex_array_object - CONST_CAST(GLEW_ATI_vertex_array_object) = glewGetExtension("GL_ATI_vertex_array_object"); - if (glewExperimental || GLEW_ATI_vertex_array_object) CONST_CAST(GLEW_ATI_vertex_array_object) = !_glewInit_GL_ATI_vertex_array_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_vertex_array_object */ -#ifdef GL_ATI_vertex_attrib_array_object - CONST_CAST(GLEW_ATI_vertex_attrib_array_object) = glewGetExtension("GL_ATI_vertex_attrib_array_object"); - if (glewExperimental || GLEW_ATI_vertex_attrib_array_object) CONST_CAST(GLEW_ATI_vertex_attrib_array_object) = !_glewInit_GL_ATI_vertex_attrib_array_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_vertex_attrib_array_object */ -#ifdef GL_ATI_vertex_streams - CONST_CAST(GLEW_ATI_vertex_streams) = glewGetExtension("GL_ATI_vertex_streams"); - if (glewExperimental || GLEW_ATI_vertex_streams) CONST_CAST(GLEW_ATI_vertex_streams) = !_glewInit_GL_ATI_vertex_streams(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_ATI_vertex_streams */ -#ifdef GL_EXT_422_pixels - CONST_CAST(GLEW_EXT_422_pixels) = glewGetExtension("GL_EXT_422_pixels"); -#endif /* GL_EXT_422_pixels */ -#ifdef GL_EXT_Cg_shader - CONST_CAST(GLEW_EXT_Cg_shader) = glewGetExtension("GL_EXT_Cg_shader"); -#endif /* GL_EXT_Cg_shader */ -#ifdef GL_EXT_abgr - CONST_CAST(GLEW_EXT_abgr) = glewGetExtension("GL_EXT_abgr"); -#endif /* GL_EXT_abgr */ -#ifdef GL_EXT_bgra - CONST_CAST(GLEW_EXT_bgra) = glewGetExtension("GL_EXT_bgra"); -#endif /* GL_EXT_bgra */ -#ifdef GL_EXT_bindable_uniform - CONST_CAST(GLEW_EXT_bindable_uniform) = glewGetExtension("GL_EXT_bindable_uniform"); - if (glewExperimental || GLEW_EXT_bindable_uniform) CONST_CAST(GLEW_EXT_bindable_uniform) = !_glewInit_GL_EXT_bindable_uniform(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_bindable_uniform */ -#ifdef GL_EXT_blend_color - CONST_CAST(GLEW_EXT_blend_color) = glewGetExtension("GL_EXT_blend_color"); - if (glewExperimental || GLEW_EXT_blend_color) CONST_CAST(GLEW_EXT_blend_color) = !_glewInit_GL_EXT_blend_color(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_blend_color */ -#ifdef GL_EXT_blend_equation_separate - CONST_CAST(GLEW_EXT_blend_equation_separate) = glewGetExtension("GL_EXT_blend_equation_separate"); - if (glewExperimental || GLEW_EXT_blend_equation_separate) CONST_CAST(GLEW_EXT_blend_equation_separate) = !_glewInit_GL_EXT_blend_equation_separate(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_blend_equation_separate */ -#ifdef GL_EXT_blend_func_separate - CONST_CAST(GLEW_EXT_blend_func_separate) = glewGetExtension("GL_EXT_blend_func_separate"); - if (glewExperimental || GLEW_EXT_blend_func_separate) CONST_CAST(GLEW_EXT_blend_func_separate) = !_glewInit_GL_EXT_blend_func_separate(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_blend_func_separate */ -#ifdef GL_EXT_blend_logic_op - CONST_CAST(GLEW_EXT_blend_logic_op) = glewGetExtension("GL_EXT_blend_logic_op"); -#endif /* GL_EXT_blend_logic_op */ -#ifdef GL_EXT_blend_minmax - CONST_CAST(GLEW_EXT_blend_minmax) = glewGetExtension("GL_EXT_blend_minmax"); - if (glewExperimental || GLEW_EXT_blend_minmax) CONST_CAST(GLEW_EXT_blend_minmax) = !_glewInit_GL_EXT_blend_minmax(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_blend_minmax */ -#ifdef GL_EXT_blend_subtract - CONST_CAST(GLEW_EXT_blend_subtract) = glewGetExtension("GL_EXT_blend_subtract"); -#endif /* GL_EXT_blend_subtract */ -#ifdef GL_EXT_clip_volume_hint - CONST_CAST(GLEW_EXT_clip_volume_hint) = glewGetExtension("GL_EXT_clip_volume_hint"); -#endif /* GL_EXT_clip_volume_hint */ -#ifdef GL_EXT_cmyka - CONST_CAST(GLEW_EXT_cmyka) = glewGetExtension("GL_EXT_cmyka"); -#endif /* GL_EXT_cmyka */ -#ifdef GL_EXT_color_subtable - CONST_CAST(GLEW_EXT_color_subtable) = glewGetExtension("GL_EXT_color_subtable"); - if (glewExperimental || GLEW_EXT_color_subtable) CONST_CAST(GLEW_EXT_color_subtable) = !_glewInit_GL_EXT_color_subtable(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_color_subtable */ -#ifdef GL_EXT_compiled_vertex_array - CONST_CAST(GLEW_EXT_compiled_vertex_array) = glewGetExtension("GL_EXT_compiled_vertex_array"); - if (glewExperimental || GLEW_EXT_compiled_vertex_array) CONST_CAST(GLEW_EXT_compiled_vertex_array) = !_glewInit_GL_EXT_compiled_vertex_array(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_compiled_vertex_array */ -#ifdef GL_EXT_convolution - CONST_CAST(GLEW_EXT_convolution) = glewGetExtension("GL_EXT_convolution"); - if (glewExperimental || GLEW_EXT_convolution) CONST_CAST(GLEW_EXT_convolution) = !_glewInit_GL_EXT_convolution(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_convolution */ -#ifdef GL_EXT_coordinate_frame - CONST_CAST(GLEW_EXT_coordinate_frame) = glewGetExtension("GL_EXT_coordinate_frame"); - if (glewExperimental || GLEW_EXT_coordinate_frame) CONST_CAST(GLEW_EXT_coordinate_frame) = !_glewInit_GL_EXT_coordinate_frame(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_coordinate_frame */ -#ifdef GL_EXT_copy_texture - CONST_CAST(GLEW_EXT_copy_texture) = glewGetExtension("GL_EXT_copy_texture"); - if (glewExperimental || GLEW_EXT_copy_texture) CONST_CAST(GLEW_EXT_copy_texture) = !_glewInit_GL_EXT_copy_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_copy_texture */ -#ifdef GL_EXT_cull_vertex - CONST_CAST(GLEW_EXT_cull_vertex) = glewGetExtension("GL_EXT_cull_vertex"); - if (glewExperimental || GLEW_EXT_cull_vertex) CONST_CAST(GLEW_EXT_cull_vertex) = !_glewInit_GL_EXT_cull_vertex(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_cull_vertex */ -#ifdef GL_EXT_depth_bounds_test - CONST_CAST(GLEW_EXT_depth_bounds_test) = glewGetExtension("GL_EXT_depth_bounds_test"); - if (glewExperimental || GLEW_EXT_depth_bounds_test) CONST_CAST(GLEW_EXT_depth_bounds_test) = !_glewInit_GL_EXT_depth_bounds_test(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_depth_bounds_test */ -#ifdef GL_EXT_direct_state_access - CONST_CAST(GLEW_EXT_direct_state_access) = glewGetExtension("GL_EXT_direct_state_access"); - if (glewExperimental || GLEW_EXT_direct_state_access) CONST_CAST(GLEW_EXT_direct_state_access) = !_glewInit_GL_EXT_direct_state_access(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_direct_state_access */ -#ifdef GL_EXT_draw_buffers2 - CONST_CAST(GLEW_EXT_draw_buffers2) = glewGetExtension("GL_EXT_draw_buffers2"); - if (glewExperimental || GLEW_EXT_draw_buffers2) CONST_CAST(GLEW_EXT_draw_buffers2) = !_glewInit_GL_EXT_draw_buffers2(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_draw_buffers2 */ -#ifdef GL_EXT_draw_instanced - CONST_CAST(GLEW_EXT_draw_instanced) = glewGetExtension("GL_EXT_draw_instanced"); - if (glewExperimental || GLEW_EXT_draw_instanced) CONST_CAST(GLEW_EXT_draw_instanced) = !_glewInit_GL_EXT_draw_instanced(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_draw_instanced */ -#ifdef GL_EXT_draw_range_elements - CONST_CAST(GLEW_EXT_draw_range_elements) = glewGetExtension("GL_EXT_draw_range_elements"); - if (glewExperimental || GLEW_EXT_draw_range_elements) CONST_CAST(GLEW_EXT_draw_range_elements) = !_glewInit_GL_EXT_draw_range_elements(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_draw_range_elements */ -#ifdef GL_EXT_fog_coord - CONST_CAST(GLEW_EXT_fog_coord) = glewGetExtension("GL_EXT_fog_coord"); - if (glewExperimental || GLEW_EXT_fog_coord) CONST_CAST(GLEW_EXT_fog_coord) = !_glewInit_GL_EXT_fog_coord(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_fog_coord */ -#ifdef GL_EXT_fragment_lighting - CONST_CAST(GLEW_EXT_fragment_lighting) = glewGetExtension("GL_EXT_fragment_lighting"); - if (glewExperimental || GLEW_EXT_fragment_lighting) CONST_CAST(GLEW_EXT_fragment_lighting) = !_glewInit_GL_EXT_fragment_lighting(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_fragment_lighting */ -#ifdef GL_EXT_framebuffer_blit - CONST_CAST(GLEW_EXT_framebuffer_blit) = glewGetExtension("GL_EXT_framebuffer_blit"); - if (glewExperimental || GLEW_EXT_framebuffer_blit) CONST_CAST(GLEW_EXT_framebuffer_blit) = !_glewInit_GL_EXT_framebuffer_blit(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_framebuffer_blit */ -#ifdef GL_EXT_framebuffer_multisample - CONST_CAST(GLEW_EXT_framebuffer_multisample) = glewGetExtension("GL_EXT_framebuffer_multisample"); - if (glewExperimental || GLEW_EXT_framebuffer_multisample) CONST_CAST(GLEW_EXT_framebuffer_multisample) = !_glewInit_GL_EXT_framebuffer_multisample(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_framebuffer_multisample */ -#ifdef GL_EXT_framebuffer_object - CONST_CAST(GLEW_EXT_framebuffer_object) = glewGetExtension("GL_EXT_framebuffer_object"); - if (glewExperimental || GLEW_EXT_framebuffer_object) CONST_CAST(GLEW_EXT_framebuffer_object) = !_glewInit_GL_EXT_framebuffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_framebuffer_object */ -#ifdef GL_EXT_framebuffer_sRGB - CONST_CAST(GLEW_EXT_framebuffer_sRGB) = glewGetExtension("GL_EXT_framebuffer_sRGB"); -#endif /* GL_EXT_framebuffer_sRGB */ -#ifdef GL_EXT_geometry_shader4 - CONST_CAST(GLEW_EXT_geometry_shader4) = glewGetExtension("GL_EXT_geometry_shader4"); - if (glewExperimental || GLEW_EXT_geometry_shader4) CONST_CAST(GLEW_EXT_geometry_shader4) = !_glewInit_GL_EXT_geometry_shader4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_geometry_shader4 */ -#ifdef GL_EXT_gpu_program_parameters - CONST_CAST(GLEW_EXT_gpu_program_parameters) = glewGetExtension("GL_EXT_gpu_program_parameters"); - if (glewExperimental || GLEW_EXT_gpu_program_parameters) CONST_CAST(GLEW_EXT_gpu_program_parameters) = !_glewInit_GL_EXT_gpu_program_parameters(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_gpu_program_parameters */ -#ifdef GL_EXT_gpu_shader4 - CONST_CAST(GLEW_EXT_gpu_shader4) = glewGetExtension("GL_EXT_gpu_shader4"); - if (glewExperimental || GLEW_EXT_gpu_shader4) CONST_CAST(GLEW_EXT_gpu_shader4) = !_glewInit_GL_EXT_gpu_shader4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_gpu_shader4 */ -#ifdef GL_EXT_histogram - CONST_CAST(GLEW_EXT_histogram) = glewGetExtension("GL_EXT_histogram"); - if (glewExperimental || GLEW_EXT_histogram) CONST_CAST(GLEW_EXT_histogram) = !_glewInit_GL_EXT_histogram(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_histogram */ -#ifdef GL_EXT_index_array_formats - CONST_CAST(GLEW_EXT_index_array_formats) = glewGetExtension("GL_EXT_index_array_formats"); -#endif /* GL_EXT_index_array_formats */ -#ifdef GL_EXT_index_func - CONST_CAST(GLEW_EXT_index_func) = glewGetExtension("GL_EXT_index_func"); - if (glewExperimental || GLEW_EXT_index_func) CONST_CAST(GLEW_EXT_index_func) = !_glewInit_GL_EXT_index_func(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_index_func */ -#ifdef GL_EXT_index_material - CONST_CAST(GLEW_EXT_index_material) = glewGetExtension("GL_EXT_index_material"); - if (glewExperimental || GLEW_EXT_index_material) CONST_CAST(GLEW_EXT_index_material) = !_glewInit_GL_EXT_index_material(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_index_material */ -#ifdef GL_EXT_index_texture - CONST_CAST(GLEW_EXT_index_texture) = glewGetExtension("GL_EXT_index_texture"); -#endif /* GL_EXT_index_texture */ -#ifdef GL_EXT_light_texture - CONST_CAST(GLEW_EXT_light_texture) = glewGetExtension("GL_EXT_light_texture"); - if (glewExperimental || GLEW_EXT_light_texture) CONST_CAST(GLEW_EXT_light_texture) = !_glewInit_GL_EXT_light_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_light_texture */ -#ifdef GL_EXT_misc_attribute - CONST_CAST(GLEW_EXT_misc_attribute) = glewGetExtension("GL_EXT_misc_attribute"); -#endif /* GL_EXT_misc_attribute */ -#ifdef GL_EXT_multi_draw_arrays - CONST_CAST(GLEW_EXT_multi_draw_arrays) = glewGetExtension("GL_EXT_multi_draw_arrays"); - if (glewExperimental || GLEW_EXT_multi_draw_arrays) CONST_CAST(GLEW_EXT_multi_draw_arrays) = !_glewInit_GL_EXT_multi_draw_arrays(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_multi_draw_arrays */ -#ifdef GL_EXT_multisample - CONST_CAST(GLEW_EXT_multisample) = glewGetExtension("GL_EXT_multisample"); - if (glewExperimental || GLEW_EXT_multisample) CONST_CAST(GLEW_EXT_multisample) = !_glewInit_GL_EXT_multisample(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_multisample */ -#ifdef GL_EXT_packed_depth_stencil - CONST_CAST(GLEW_EXT_packed_depth_stencil) = glewGetExtension("GL_EXT_packed_depth_stencil"); -#endif /* GL_EXT_packed_depth_stencil */ -#ifdef GL_EXT_packed_float - CONST_CAST(GLEW_EXT_packed_float) = glewGetExtension("GL_EXT_packed_float"); -#endif /* GL_EXT_packed_float */ -#ifdef GL_EXT_packed_pixels - CONST_CAST(GLEW_EXT_packed_pixels) = glewGetExtension("GL_EXT_packed_pixels"); -#endif /* GL_EXT_packed_pixels */ -#ifdef GL_EXT_paletted_texture - CONST_CAST(GLEW_EXT_paletted_texture) = glewGetExtension("GL_EXT_paletted_texture"); - if (glewExperimental || GLEW_EXT_paletted_texture) CONST_CAST(GLEW_EXT_paletted_texture) = !_glewInit_GL_EXT_paletted_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_paletted_texture */ -#ifdef GL_EXT_pixel_buffer_object - CONST_CAST(GLEW_EXT_pixel_buffer_object) = glewGetExtension("GL_EXT_pixel_buffer_object"); -#endif /* GL_EXT_pixel_buffer_object */ -#ifdef GL_EXT_pixel_transform - CONST_CAST(GLEW_EXT_pixel_transform) = glewGetExtension("GL_EXT_pixel_transform"); - if (glewExperimental || GLEW_EXT_pixel_transform) CONST_CAST(GLEW_EXT_pixel_transform) = !_glewInit_GL_EXT_pixel_transform(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_pixel_transform */ -#ifdef GL_EXT_pixel_transform_color_table - CONST_CAST(GLEW_EXT_pixel_transform_color_table) = glewGetExtension("GL_EXT_pixel_transform_color_table"); -#endif /* GL_EXT_pixel_transform_color_table */ -#ifdef GL_EXT_point_parameters - CONST_CAST(GLEW_EXT_point_parameters) = glewGetExtension("GL_EXT_point_parameters"); - if (glewExperimental || GLEW_EXT_point_parameters) CONST_CAST(GLEW_EXT_point_parameters) = !_glewInit_GL_EXT_point_parameters(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_point_parameters */ -#ifdef GL_EXT_polygon_offset - CONST_CAST(GLEW_EXT_polygon_offset) = glewGetExtension("GL_EXT_polygon_offset"); - if (glewExperimental || GLEW_EXT_polygon_offset) CONST_CAST(GLEW_EXT_polygon_offset) = !_glewInit_GL_EXT_polygon_offset(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_polygon_offset */ -#ifdef GL_EXT_rescale_normal - CONST_CAST(GLEW_EXT_rescale_normal) = glewGetExtension("GL_EXT_rescale_normal"); -#endif /* GL_EXT_rescale_normal */ -#ifdef GL_EXT_scene_marker - CONST_CAST(GLEW_EXT_scene_marker) = glewGetExtension("GL_EXT_scene_marker"); - if (glewExperimental || GLEW_EXT_scene_marker) CONST_CAST(GLEW_EXT_scene_marker) = !_glewInit_GL_EXT_scene_marker(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_scene_marker */ -#ifdef GL_EXT_secondary_color - CONST_CAST(GLEW_EXT_secondary_color) = glewGetExtension("GL_EXT_secondary_color"); - if (glewExperimental || GLEW_EXT_secondary_color) CONST_CAST(GLEW_EXT_secondary_color) = !_glewInit_GL_EXT_secondary_color(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_secondary_color */ -#ifdef GL_EXT_separate_specular_color - CONST_CAST(GLEW_EXT_separate_specular_color) = glewGetExtension("GL_EXT_separate_specular_color"); -#endif /* GL_EXT_separate_specular_color */ -#ifdef GL_EXT_shadow_funcs - CONST_CAST(GLEW_EXT_shadow_funcs) = glewGetExtension("GL_EXT_shadow_funcs"); -#endif /* GL_EXT_shadow_funcs */ -#ifdef GL_EXT_shared_texture_palette - CONST_CAST(GLEW_EXT_shared_texture_palette) = glewGetExtension("GL_EXT_shared_texture_palette"); -#endif /* GL_EXT_shared_texture_palette */ -#ifdef GL_EXT_stencil_clear_tag - CONST_CAST(GLEW_EXT_stencil_clear_tag) = glewGetExtension("GL_EXT_stencil_clear_tag"); -#endif /* GL_EXT_stencil_clear_tag */ -#ifdef GL_EXT_stencil_two_side - CONST_CAST(GLEW_EXT_stencil_two_side) = glewGetExtension("GL_EXT_stencil_two_side"); - if (glewExperimental || GLEW_EXT_stencil_two_side) CONST_CAST(GLEW_EXT_stencil_two_side) = !_glewInit_GL_EXT_stencil_two_side(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_stencil_two_side */ -#ifdef GL_EXT_stencil_wrap - CONST_CAST(GLEW_EXT_stencil_wrap) = glewGetExtension("GL_EXT_stencil_wrap"); -#endif /* GL_EXT_stencil_wrap */ -#ifdef GL_EXT_subtexture - CONST_CAST(GLEW_EXT_subtexture) = glewGetExtension("GL_EXT_subtexture"); - if (glewExperimental || GLEW_EXT_subtexture) CONST_CAST(GLEW_EXT_subtexture) = !_glewInit_GL_EXT_subtexture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_subtexture */ -#ifdef GL_EXT_texture - CONST_CAST(GLEW_EXT_texture) = glewGetExtension("GL_EXT_texture"); -#endif /* GL_EXT_texture */ -#ifdef GL_EXT_texture3D - CONST_CAST(GLEW_EXT_texture3D) = glewGetExtension("GL_EXT_texture3D"); - if (glewExperimental || GLEW_EXT_texture3D) CONST_CAST(GLEW_EXT_texture3D) = !_glewInit_GL_EXT_texture3D(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_texture3D */ -#ifdef GL_EXT_texture_array - CONST_CAST(GLEW_EXT_texture_array) = glewGetExtension("GL_EXT_texture_array"); -#endif /* GL_EXT_texture_array */ -#ifdef GL_EXT_texture_buffer_object - CONST_CAST(GLEW_EXT_texture_buffer_object) = glewGetExtension("GL_EXT_texture_buffer_object"); - if (glewExperimental || GLEW_EXT_texture_buffer_object) CONST_CAST(GLEW_EXT_texture_buffer_object) = !_glewInit_GL_EXT_texture_buffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_texture_buffer_object */ -#ifdef GL_EXT_texture_compression_dxt1 - CONST_CAST(GLEW_EXT_texture_compression_dxt1) = glewGetExtension("GL_EXT_texture_compression_dxt1"); -#endif /* GL_EXT_texture_compression_dxt1 */ -#ifdef GL_EXT_texture_compression_latc - CONST_CAST(GLEW_EXT_texture_compression_latc) = glewGetExtension("GL_EXT_texture_compression_latc"); -#endif /* GL_EXT_texture_compression_latc */ -#ifdef GL_EXT_texture_compression_rgtc - CONST_CAST(GLEW_EXT_texture_compression_rgtc) = glewGetExtension("GL_EXT_texture_compression_rgtc"); -#endif /* GL_EXT_texture_compression_rgtc */ -#ifdef GL_EXT_texture_compression_s3tc - CONST_CAST(GLEW_EXT_texture_compression_s3tc) = glewGetExtension("GL_EXT_texture_compression_s3tc"); -#endif /* GL_EXT_texture_compression_s3tc */ -#ifdef GL_EXT_texture_cube_map - CONST_CAST(GLEW_EXT_texture_cube_map) = glewGetExtension("GL_EXT_texture_cube_map"); -#endif /* GL_EXT_texture_cube_map */ -#ifdef GL_EXT_texture_edge_clamp - CONST_CAST(GLEW_EXT_texture_edge_clamp) = glewGetExtension("GL_EXT_texture_edge_clamp"); -#endif /* GL_EXT_texture_edge_clamp */ -#ifdef GL_EXT_texture_env - CONST_CAST(GLEW_EXT_texture_env) = glewGetExtension("GL_EXT_texture_env"); -#endif /* GL_EXT_texture_env */ -#ifdef GL_EXT_texture_env_add - CONST_CAST(GLEW_EXT_texture_env_add) = glewGetExtension("GL_EXT_texture_env_add"); -#endif /* GL_EXT_texture_env_add */ -#ifdef GL_EXT_texture_env_combine - CONST_CAST(GLEW_EXT_texture_env_combine) = glewGetExtension("GL_EXT_texture_env_combine"); -#endif /* GL_EXT_texture_env_combine */ -#ifdef GL_EXT_texture_env_dot3 - CONST_CAST(GLEW_EXT_texture_env_dot3) = glewGetExtension("GL_EXT_texture_env_dot3"); -#endif /* GL_EXT_texture_env_dot3 */ -#ifdef GL_EXT_texture_filter_anisotropic - CONST_CAST(GLEW_EXT_texture_filter_anisotropic) = glewGetExtension("GL_EXT_texture_filter_anisotropic"); -#endif /* GL_EXT_texture_filter_anisotropic */ -#ifdef GL_EXT_texture_integer - CONST_CAST(GLEW_EXT_texture_integer) = glewGetExtension("GL_EXT_texture_integer"); - if (glewExperimental || GLEW_EXT_texture_integer) CONST_CAST(GLEW_EXT_texture_integer) = !_glewInit_GL_EXT_texture_integer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_texture_integer */ -#ifdef GL_EXT_texture_lod_bias - CONST_CAST(GLEW_EXT_texture_lod_bias) = glewGetExtension("GL_EXT_texture_lod_bias"); -#endif /* GL_EXT_texture_lod_bias */ -#ifdef GL_EXT_texture_mirror_clamp - CONST_CAST(GLEW_EXT_texture_mirror_clamp) = glewGetExtension("GL_EXT_texture_mirror_clamp"); -#endif /* GL_EXT_texture_mirror_clamp */ -#ifdef GL_EXT_texture_object - CONST_CAST(GLEW_EXT_texture_object) = glewGetExtension("GL_EXT_texture_object"); - if (glewExperimental || GLEW_EXT_texture_object) CONST_CAST(GLEW_EXT_texture_object) = !_glewInit_GL_EXT_texture_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_texture_object */ -#ifdef GL_EXT_texture_perturb_normal - CONST_CAST(GLEW_EXT_texture_perturb_normal) = glewGetExtension("GL_EXT_texture_perturb_normal"); - if (glewExperimental || GLEW_EXT_texture_perturb_normal) CONST_CAST(GLEW_EXT_texture_perturb_normal) = !_glewInit_GL_EXT_texture_perturb_normal(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_texture_perturb_normal */ -#ifdef GL_EXT_texture_rectangle - CONST_CAST(GLEW_EXT_texture_rectangle) = glewGetExtension("GL_EXT_texture_rectangle"); -#endif /* GL_EXT_texture_rectangle */ -#ifdef GL_EXT_texture_sRGB - CONST_CAST(GLEW_EXT_texture_sRGB) = glewGetExtension("GL_EXT_texture_sRGB"); -#endif /* GL_EXT_texture_sRGB */ -#ifdef GL_EXT_texture_shared_exponent - CONST_CAST(GLEW_EXT_texture_shared_exponent) = glewGetExtension("GL_EXT_texture_shared_exponent"); -#endif /* GL_EXT_texture_shared_exponent */ -#ifdef GL_EXT_texture_swizzle - CONST_CAST(GLEW_EXT_texture_swizzle) = glewGetExtension("GL_EXT_texture_swizzle"); -#endif /* GL_EXT_texture_swizzle */ -#ifdef GL_EXT_timer_query - CONST_CAST(GLEW_EXT_timer_query) = glewGetExtension("GL_EXT_timer_query"); - if (glewExperimental || GLEW_EXT_timer_query) CONST_CAST(GLEW_EXT_timer_query) = !_glewInit_GL_EXT_timer_query(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_timer_query */ -#ifdef GL_EXT_transform_feedback - CONST_CAST(GLEW_EXT_transform_feedback) = glewGetExtension("GL_EXT_transform_feedback"); - if (glewExperimental || GLEW_EXT_transform_feedback) CONST_CAST(GLEW_EXT_transform_feedback) = !_glewInit_GL_EXT_transform_feedback(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_transform_feedback */ -#ifdef GL_EXT_vertex_array - CONST_CAST(GLEW_EXT_vertex_array) = glewGetExtension("GL_EXT_vertex_array"); - if (glewExperimental || GLEW_EXT_vertex_array) CONST_CAST(GLEW_EXT_vertex_array) = !_glewInit_GL_EXT_vertex_array(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_vertex_array */ -#ifdef GL_EXT_vertex_array_bgra - CONST_CAST(GLEW_EXT_vertex_array_bgra) = glewGetExtension("GL_EXT_vertex_array_bgra"); -#endif /* GL_EXT_vertex_array_bgra */ -#ifdef GL_EXT_vertex_shader - CONST_CAST(GLEW_EXT_vertex_shader) = glewGetExtension("GL_EXT_vertex_shader"); - if (glewExperimental || GLEW_EXT_vertex_shader) CONST_CAST(GLEW_EXT_vertex_shader) = !_glewInit_GL_EXT_vertex_shader(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_vertex_shader */ -#ifdef GL_EXT_vertex_weighting - CONST_CAST(GLEW_EXT_vertex_weighting) = glewGetExtension("GL_EXT_vertex_weighting"); - if (glewExperimental || GLEW_EXT_vertex_weighting) CONST_CAST(GLEW_EXT_vertex_weighting) = !_glewInit_GL_EXT_vertex_weighting(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_EXT_vertex_weighting */ -#ifdef GL_GREMEDY_frame_terminator - CONST_CAST(GLEW_GREMEDY_frame_terminator) = glewGetExtension("GL_GREMEDY_frame_terminator"); - if (glewExperimental || GLEW_GREMEDY_frame_terminator) CONST_CAST(GLEW_GREMEDY_frame_terminator) = !_glewInit_GL_GREMEDY_frame_terminator(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_GREMEDY_frame_terminator */ -#ifdef GL_GREMEDY_string_marker - CONST_CAST(GLEW_GREMEDY_string_marker) = glewGetExtension("GL_GREMEDY_string_marker"); - if (glewExperimental || GLEW_GREMEDY_string_marker) CONST_CAST(GLEW_GREMEDY_string_marker) = !_glewInit_GL_GREMEDY_string_marker(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_GREMEDY_string_marker */ -#ifdef GL_HP_convolution_border_modes - CONST_CAST(GLEW_HP_convolution_border_modes) = glewGetExtension("GL_HP_convolution_border_modes"); -#endif /* GL_HP_convolution_border_modes */ -#ifdef GL_HP_image_transform - CONST_CAST(GLEW_HP_image_transform) = glewGetExtension("GL_HP_image_transform"); - if (glewExperimental || GLEW_HP_image_transform) CONST_CAST(GLEW_HP_image_transform) = !_glewInit_GL_HP_image_transform(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_HP_image_transform */ -#ifdef GL_HP_occlusion_test - CONST_CAST(GLEW_HP_occlusion_test) = glewGetExtension("GL_HP_occlusion_test"); -#endif /* GL_HP_occlusion_test */ -#ifdef GL_HP_texture_lighting - CONST_CAST(GLEW_HP_texture_lighting) = glewGetExtension("GL_HP_texture_lighting"); -#endif /* GL_HP_texture_lighting */ -#ifdef GL_IBM_cull_vertex - CONST_CAST(GLEW_IBM_cull_vertex) = glewGetExtension("GL_IBM_cull_vertex"); -#endif /* GL_IBM_cull_vertex */ -#ifdef GL_IBM_multimode_draw_arrays - CONST_CAST(GLEW_IBM_multimode_draw_arrays) = glewGetExtension("GL_IBM_multimode_draw_arrays"); - if (glewExperimental || GLEW_IBM_multimode_draw_arrays) CONST_CAST(GLEW_IBM_multimode_draw_arrays) = !_glewInit_GL_IBM_multimode_draw_arrays(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_IBM_multimode_draw_arrays */ -#ifdef GL_IBM_rasterpos_clip - CONST_CAST(GLEW_IBM_rasterpos_clip) = glewGetExtension("GL_IBM_rasterpos_clip"); -#endif /* GL_IBM_rasterpos_clip */ -#ifdef GL_IBM_static_data - CONST_CAST(GLEW_IBM_static_data) = glewGetExtension("GL_IBM_static_data"); -#endif /* GL_IBM_static_data */ -#ifdef GL_IBM_texture_mirrored_repeat - CONST_CAST(GLEW_IBM_texture_mirrored_repeat) = glewGetExtension("GL_IBM_texture_mirrored_repeat"); -#endif /* GL_IBM_texture_mirrored_repeat */ -#ifdef GL_IBM_vertex_array_lists - CONST_CAST(GLEW_IBM_vertex_array_lists) = glewGetExtension("GL_IBM_vertex_array_lists"); - if (glewExperimental || GLEW_IBM_vertex_array_lists) CONST_CAST(GLEW_IBM_vertex_array_lists) = !_glewInit_GL_IBM_vertex_array_lists(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_IBM_vertex_array_lists */ -#ifdef GL_INGR_color_clamp - CONST_CAST(GLEW_INGR_color_clamp) = glewGetExtension("GL_INGR_color_clamp"); -#endif /* GL_INGR_color_clamp */ -#ifdef GL_INGR_interlace_read - CONST_CAST(GLEW_INGR_interlace_read) = glewGetExtension("GL_INGR_interlace_read"); -#endif /* GL_INGR_interlace_read */ -#ifdef GL_INTEL_parallel_arrays - CONST_CAST(GLEW_INTEL_parallel_arrays) = glewGetExtension("GL_INTEL_parallel_arrays"); - if (glewExperimental || GLEW_INTEL_parallel_arrays) CONST_CAST(GLEW_INTEL_parallel_arrays) = !_glewInit_GL_INTEL_parallel_arrays(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_INTEL_parallel_arrays */ -#ifdef GL_INTEL_texture_scissor - CONST_CAST(GLEW_INTEL_texture_scissor) = glewGetExtension("GL_INTEL_texture_scissor"); - if (glewExperimental || GLEW_INTEL_texture_scissor) CONST_CAST(GLEW_INTEL_texture_scissor) = !_glewInit_GL_INTEL_texture_scissor(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_INTEL_texture_scissor */ -#ifdef GL_KTX_buffer_region - CONST_CAST(GLEW_KTX_buffer_region) = glewGetExtension("GL_KTX_buffer_region"); - if (glewExperimental || GLEW_KTX_buffer_region) CONST_CAST(GLEW_KTX_buffer_region) = !_glewInit_GL_KTX_buffer_region(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_KTX_buffer_region */ -#ifdef GL_MESAX_texture_stack - CONST_CAST(GLEW_MESAX_texture_stack) = glewGetExtension("GL_MESAX_texture_stack"); -#endif /* GL_MESAX_texture_stack */ -#ifdef GL_MESA_pack_invert - CONST_CAST(GLEW_MESA_pack_invert) = glewGetExtension("GL_MESA_pack_invert"); -#endif /* GL_MESA_pack_invert */ -#ifdef GL_MESA_resize_buffers - CONST_CAST(GLEW_MESA_resize_buffers) = glewGetExtension("GL_MESA_resize_buffers"); - if (glewExperimental || GLEW_MESA_resize_buffers) CONST_CAST(GLEW_MESA_resize_buffers) = !_glewInit_GL_MESA_resize_buffers(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_MESA_resize_buffers */ -#ifdef GL_MESA_window_pos - CONST_CAST(GLEW_MESA_window_pos) = glewGetExtension("GL_MESA_window_pos"); - if (glewExperimental || GLEW_MESA_window_pos) CONST_CAST(GLEW_MESA_window_pos) = !_glewInit_GL_MESA_window_pos(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_MESA_window_pos */ -#ifdef GL_MESA_ycbcr_texture - CONST_CAST(GLEW_MESA_ycbcr_texture) = glewGetExtension("GL_MESA_ycbcr_texture"); -#endif /* GL_MESA_ycbcr_texture */ -#ifdef GL_NV_blend_square - CONST_CAST(GLEW_NV_blend_square) = glewGetExtension("GL_NV_blend_square"); -#endif /* GL_NV_blend_square */ -#ifdef GL_NV_conditional_render - CONST_CAST(GLEW_NV_conditional_render) = glewGetExtension("GL_NV_conditional_render"); - if (glewExperimental || GLEW_NV_conditional_render) CONST_CAST(GLEW_NV_conditional_render) = !_glewInit_GL_NV_conditional_render(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_conditional_render */ -#ifdef GL_NV_copy_depth_to_color - CONST_CAST(GLEW_NV_copy_depth_to_color) = glewGetExtension("GL_NV_copy_depth_to_color"); -#endif /* GL_NV_copy_depth_to_color */ -#ifdef GL_NV_depth_buffer_float - CONST_CAST(GLEW_NV_depth_buffer_float) = glewGetExtension("GL_NV_depth_buffer_float"); - if (glewExperimental || GLEW_NV_depth_buffer_float) CONST_CAST(GLEW_NV_depth_buffer_float) = !_glewInit_GL_NV_depth_buffer_float(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_depth_buffer_float */ -#ifdef GL_NV_depth_clamp - CONST_CAST(GLEW_NV_depth_clamp) = glewGetExtension("GL_NV_depth_clamp"); -#endif /* GL_NV_depth_clamp */ -#ifdef GL_NV_depth_range_unclamped - CONST_CAST(GLEW_NV_depth_range_unclamped) = glewGetExtension("GL_NV_depth_range_unclamped"); -#endif /* GL_NV_depth_range_unclamped */ -#ifdef GL_NV_evaluators - CONST_CAST(GLEW_NV_evaluators) = glewGetExtension("GL_NV_evaluators"); - if (glewExperimental || GLEW_NV_evaluators) CONST_CAST(GLEW_NV_evaluators) = !_glewInit_GL_NV_evaluators(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_evaluators */ -#ifdef GL_NV_explicit_multisample - CONST_CAST(GLEW_NV_explicit_multisample) = glewGetExtension("GL_NV_explicit_multisample"); - if (glewExperimental || GLEW_NV_explicit_multisample) CONST_CAST(GLEW_NV_explicit_multisample) = !_glewInit_GL_NV_explicit_multisample(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_explicit_multisample */ -#ifdef GL_NV_fence - CONST_CAST(GLEW_NV_fence) = glewGetExtension("GL_NV_fence"); - if (glewExperimental || GLEW_NV_fence) CONST_CAST(GLEW_NV_fence) = !_glewInit_GL_NV_fence(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_fence */ -#ifdef GL_NV_float_buffer - CONST_CAST(GLEW_NV_float_buffer) = glewGetExtension("GL_NV_float_buffer"); -#endif /* GL_NV_float_buffer */ -#ifdef GL_NV_fog_distance - CONST_CAST(GLEW_NV_fog_distance) = glewGetExtension("GL_NV_fog_distance"); -#endif /* GL_NV_fog_distance */ -#ifdef GL_NV_fragment_program - CONST_CAST(GLEW_NV_fragment_program) = glewGetExtension("GL_NV_fragment_program"); - if (glewExperimental || GLEW_NV_fragment_program) CONST_CAST(GLEW_NV_fragment_program) = !_glewInit_GL_NV_fragment_program(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_fragment_program */ -#ifdef GL_NV_fragment_program2 - CONST_CAST(GLEW_NV_fragment_program2) = glewGetExtension("GL_NV_fragment_program2"); -#endif /* GL_NV_fragment_program2 */ -#ifdef GL_NV_fragment_program4 - CONST_CAST(GLEW_NV_fragment_program4) = glewGetExtension("GL_NV_fragment_program4"); -#endif /* GL_NV_fragment_program4 */ -#ifdef GL_NV_fragment_program_option - CONST_CAST(GLEW_NV_fragment_program_option) = glewGetExtension("GL_NV_fragment_program_option"); -#endif /* GL_NV_fragment_program_option */ -#ifdef GL_NV_framebuffer_multisample_coverage - CONST_CAST(GLEW_NV_framebuffer_multisample_coverage) = glewGetExtension("GL_NV_framebuffer_multisample_coverage"); - if (glewExperimental || GLEW_NV_framebuffer_multisample_coverage) CONST_CAST(GLEW_NV_framebuffer_multisample_coverage) = !_glewInit_GL_NV_framebuffer_multisample_coverage(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_framebuffer_multisample_coverage */ -#ifdef GL_NV_geometry_program4 - CONST_CAST(GLEW_NV_geometry_program4) = glewGetExtension("GL_NV_geometry_program4"); - if (glewExperimental || GLEW_NV_geometry_program4) CONST_CAST(GLEW_NV_geometry_program4) = !_glewInit_GL_NV_geometry_program4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_geometry_program4 */ -#ifdef GL_NV_geometry_shader4 - CONST_CAST(GLEW_NV_geometry_shader4) = glewGetExtension("GL_NV_geometry_shader4"); -#endif /* GL_NV_geometry_shader4 */ -#ifdef GL_NV_gpu_program4 - CONST_CAST(GLEW_NV_gpu_program4) = glewGetExtension("GL_NV_gpu_program4"); - if (glewExperimental || GLEW_NV_gpu_program4) CONST_CAST(GLEW_NV_gpu_program4) = !_glewInit_GL_NV_gpu_program4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_gpu_program4 */ -#ifdef GL_NV_half_float - CONST_CAST(GLEW_NV_half_float) = glewGetExtension("GL_NV_half_float"); - if (glewExperimental || GLEW_NV_half_float) CONST_CAST(GLEW_NV_half_float) = !_glewInit_GL_NV_half_float(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_half_float */ -#ifdef GL_NV_light_max_exponent - CONST_CAST(GLEW_NV_light_max_exponent) = glewGetExtension("GL_NV_light_max_exponent"); -#endif /* GL_NV_light_max_exponent */ -#ifdef GL_NV_multisample_filter_hint - CONST_CAST(GLEW_NV_multisample_filter_hint) = glewGetExtension("GL_NV_multisample_filter_hint"); -#endif /* GL_NV_multisample_filter_hint */ -#ifdef GL_NV_occlusion_query - CONST_CAST(GLEW_NV_occlusion_query) = glewGetExtension("GL_NV_occlusion_query"); - if (glewExperimental || GLEW_NV_occlusion_query) CONST_CAST(GLEW_NV_occlusion_query) = !_glewInit_GL_NV_occlusion_query(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_occlusion_query */ -#ifdef GL_NV_packed_depth_stencil - CONST_CAST(GLEW_NV_packed_depth_stencil) = glewGetExtension("GL_NV_packed_depth_stencil"); -#endif /* GL_NV_packed_depth_stencil */ -#ifdef GL_NV_parameter_buffer_object - CONST_CAST(GLEW_NV_parameter_buffer_object) = glewGetExtension("GL_NV_parameter_buffer_object"); - if (glewExperimental || GLEW_NV_parameter_buffer_object) CONST_CAST(GLEW_NV_parameter_buffer_object) = !_glewInit_GL_NV_parameter_buffer_object(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_parameter_buffer_object */ -#ifdef GL_NV_pixel_data_range - CONST_CAST(GLEW_NV_pixel_data_range) = glewGetExtension("GL_NV_pixel_data_range"); - if (glewExperimental || GLEW_NV_pixel_data_range) CONST_CAST(GLEW_NV_pixel_data_range) = !_glewInit_GL_NV_pixel_data_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_pixel_data_range */ -#ifdef GL_NV_point_sprite - CONST_CAST(GLEW_NV_point_sprite) = glewGetExtension("GL_NV_point_sprite"); - if (glewExperimental || GLEW_NV_point_sprite) CONST_CAST(GLEW_NV_point_sprite) = !_glewInit_GL_NV_point_sprite(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_point_sprite */ -#ifdef GL_NV_present_video - CONST_CAST(GLEW_NV_present_video) = glewGetExtension("GL_NV_present_video"); - if (glewExperimental || GLEW_NV_present_video) CONST_CAST(GLEW_NV_present_video) = !_glewInit_GL_NV_present_video(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_present_video */ -#ifdef GL_NV_primitive_restart - CONST_CAST(GLEW_NV_primitive_restart) = glewGetExtension("GL_NV_primitive_restart"); - if (glewExperimental || GLEW_NV_primitive_restart) CONST_CAST(GLEW_NV_primitive_restart) = !_glewInit_GL_NV_primitive_restart(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_primitive_restart */ -#ifdef GL_NV_register_combiners - CONST_CAST(GLEW_NV_register_combiners) = glewGetExtension("GL_NV_register_combiners"); - if (glewExperimental || GLEW_NV_register_combiners) CONST_CAST(GLEW_NV_register_combiners) = !_glewInit_GL_NV_register_combiners(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_register_combiners */ -#ifdef GL_NV_register_combiners2 - CONST_CAST(GLEW_NV_register_combiners2) = glewGetExtension("GL_NV_register_combiners2"); - if (glewExperimental || GLEW_NV_register_combiners2) CONST_CAST(GLEW_NV_register_combiners2) = !_glewInit_GL_NV_register_combiners2(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_register_combiners2 */ -#ifdef GL_NV_texgen_emboss - CONST_CAST(GLEW_NV_texgen_emboss) = glewGetExtension("GL_NV_texgen_emboss"); -#endif /* GL_NV_texgen_emboss */ -#ifdef GL_NV_texgen_reflection - CONST_CAST(GLEW_NV_texgen_reflection) = glewGetExtension("GL_NV_texgen_reflection"); -#endif /* GL_NV_texgen_reflection */ -#ifdef GL_NV_texture_compression_vtc - CONST_CAST(GLEW_NV_texture_compression_vtc) = glewGetExtension("GL_NV_texture_compression_vtc"); -#endif /* GL_NV_texture_compression_vtc */ -#ifdef GL_NV_texture_env_combine4 - CONST_CAST(GLEW_NV_texture_env_combine4) = glewGetExtension("GL_NV_texture_env_combine4"); -#endif /* GL_NV_texture_env_combine4 */ -#ifdef GL_NV_texture_expand_normal - CONST_CAST(GLEW_NV_texture_expand_normal) = glewGetExtension("GL_NV_texture_expand_normal"); -#endif /* GL_NV_texture_expand_normal */ -#ifdef GL_NV_texture_rectangle - CONST_CAST(GLEW_NV_texture_rectangle) = glewGetExtension("GL_NV_texture_rectangle"); -#endif /* GL_NV_texture_rectangle */ -#ifdef GL_NV_texture_shader - CONST_CAST(GLEW_NV_texture_shader) = glewGetExtension("GL_NV_texture_shader"); -#endif /* GL_NV_texture_shader */ -#ifdef GL_NV_texture_shader2 - CONST_CAST(GLEW_NV_texture_shader2) = glewGetExtension("GL_NV_texture_shader2"); -#endif /* GL_NV_texture_shader2 */ -#ifdef GL_NV_texture_shader3 - CONST_CAST(GLEW_NV_texture_shader3) = glewGetExtension("GL_NV_texture_shader3"); -#endif /* GL_NV_texture_shader3 */ -#ifdef GL_NV_transform_feedback - CONST_CAST(GLEW_NV_transform_feedback) = glewGetExtension("GL_NV_transform_feedback"); - if (glewExperimental || GLEW_NV_transform_feedback) CONST_CAST(GLEW_NV_transform_feedback) = !_glewInit_GL_NV_transform_feedback(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_transform_feedback */ -#ifdef GL_NV_vertex_array_range - CONST_CAST(GLEW_NV_vertex_array_range) = glewGetExtension("GL_NV_vertex_array_range"); - if (glewExperimental || GLEW_NV_vertex_array_range) CONST_CAST(GLEW_NV_vertex_array_range) = !_glewInit_GL_NV_vertex_array_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_vertex_array_range */ -#ifdef GL_NV_vertex_array_range2 - CONST_CAST(GLEW_NV_vertex_array_range2) = glewGetExtension("GL_NV_vertex_array_range2"); -#endif /* GL_NV_vertex_array_range2 */ -#ifdef GL_NV_vertex_program - CONST_CAST(GLEW_NV_vertex_program) = glewGetExtension("GL_NV_vertex_program"); - if (glewExperimental || GLEW_NV_vertex_program) CONST_CAST(GLEW_NV_vertex_program) = !_glewInit_GL_NV_vertex_program(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_NV_vertex_program */ -#ifdef GL_NV_vertex_program1_1 - CONST_CAST(GLEW_NV_vertex_program1_1) = glewGetExtension("GL_NV_vertex_program1_1"); -#endif /* GL_NV_vertex_program1_1 */ -#ifdef GL_NV_vertex_program2 - CONST_CAST(GLEW_NV_vertex_program2) = glewGetExtension("GL_NV_vertex_program2"); -#endif /* GL_NV_vertex_program2 */ -#ifdef GL_NV_vertex_program2_option - CONST_CAST(GLEW_NV_vertex_program2_option) = glewGetExtension("GL_NV_vertex_program2_option"); -#endif /* GL_NV_vertex_program2_option */ -#ifdef GL_NV_vertex_program3 - CONST_CAST(GLEW_NV_vertex_program3) = glewGetExtension("GL_NV_vertex_program3"); -#endif /* GL_NV_vertex_program3 */ -#ifdef GL_NV_vertex_program4 - CONST_CAST(GLEW_NV_vertex_program4) = glewGetExtension("GL_NV_vertex_program4"); -#endif /* GL_NV_vertex_program4 */ -#ifdef GL_OES_byte_coordinates - CONST_CAST(GLEW_OES_byte_coordinates) = glewGetExtension("GL_OES_byte_coordinates"); -#endif /* GL_OES_byte_coordinates */ -#ifdef GL_OES_compressed_paletted_texture - CONST_CAST(GLEW_OES_compressed_paletted_texture) = glewGetExtension("GL_OES_compressed_paletted_texture"); -#endif /* GL_OES_compressed_paletted_texture */ -#ifdef GL_OES_read_format - CONST_CAST(GLEW_OES_read_format) = glewGetExtension("GL_OES_read_format"); -#endif /* GL_OES_read_format */ -#ifdef GL_OES_single_precision - CONST_CAST(GLEW_OES_single_precision) = glewGetExtension("GL_OES_single_precision"); - if (glewExperimental || GLEW_OES_single_precision) CONST_CAST(GLEW_OES_single_precision) = !_glewInit_GL_OES_single_precision(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_OES_single_precision */ -#ifdef GL_OML_interlace - CONST_CAST(GLEW_OML_interlace) = glewGetExtension("GL_OML_interlace"); -#endif /* GL_OML_interlace */ -#ifdef GL_OML_resample - CONST_CAST(GLEW_OML_resample) = glewGetExtension("GL_OML_resample"); -#endif /* GL_OML_resample */ -#ifdef GL_OML_subsample - CONST_CAST(GLEW_OML_subsample) = glewGetExtension("GL_OML_subsample"); -#endif /* GL_OML_subsample */ -#ifdef GL_PGI_misc_hints - CONST_CAST(GLEW_PGI_misc_hints) = glewGetExtension("GL_PGI_misc_hints"); -#endif /* GL_PGI_misc_hints */ -#ifdef GL_PGI_vertex_hints - CONST_CAST(GLEW_PGI_vertex_hints) = glewGetExtension("GL_PGI_vertex_hints"); -#endif /* GL_PGI_vertex_hints */ -#ifdef GL_REND_screen_coordinates - CONST_CAST(GLEW_REND_screen_coordinates) = glewGetExtension("GL_REND_screen_coordinates"); -#endif /* GL_REND_screen_coordinates */ -#ifdef GL_S3_s3tc - CONST_CAST(GLEW_S3_s3tc) = glewGetExtension("GL_S3_s3tc"); -#endif /* GL_S3_s3tc */ -#ifdef GL_SGIS_color_range - CONST_CAST(GLEW_SGIS_color_range) = glewGetExtension("GL_SGIS_color_range"); -#endif /* GL_SGIS_color_range */ -#ifdef GL_SGIS_detail_texture - CONST_CAST(GLEW_SGIS_detail_texture) = glewGetExtension("GL_SGIS_detail_texture"); - if (glewExperimental || GLEW_SGIS_detail_texture) CONST_CAST(GLEW_SGIS_detail_texture) = !_glewInit_GL_SGIS_detail_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_detail_texture */ -#ifdef GL_SGIS_fog_function - CONST_CAST(GLEW_SGIS_fog_function) = glewGetExtension("GL_SGIS_fog_function"); - if (glewExperimental || GLEW_SGIS_fog_function) CONST_CAST(GLEW_SGIS_fog_function) = !_glewInit_GL_SGIS_fog_function(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_fog_function */ -#ifdef GL_SGIS_generate_mipmap - CONST_CAST(GLEW_SGIS_generate_mipmap) = glewGetExtension("GL_SGIS_generate_mipmap"); -#endif /* GL_SGIS_generate_mipmap */ -#ifdef GL_SGIS_multisample - CONST_CAST(GLEW_SGIS_multisample) = glewGetExtension("GL_SGIS_multisample"); - if (glewExperimental || GLEW_SGIS_multisample) CONST_CAST(GLEW_SGIS_multisample) = !_glewInit_GL_SGIS_multisample(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_multisample */ -#ifdef GL_SGIS_pixel_texture - CONST_CAST(GLEW_SGIS_pixel_texture) = glewGetExtension("GL_SGIS_pixel_texture"); -#endif /* GL_SGIS_pixel_texture */ -#ifdef GL_SGIS_point_line_texgen - CONST_CAST(GLEW_SGIS_point_line_texgen) = glewGetExtension("GL_SGIS_point_line_texgen"); -#endif /* GL_SGIS_point_line_texgen */ -#ifdef GL_SGIS_sharpen_texture - CONST_CAST(GLEW_SGIS_sharpen_texture) = glewGetExtension("GL_SGIS_sharpen_texture"); - if (glewExperimental || GLEW_SGIS_sharpen_texture) CONST_CAST(GLEW_SGIS_sharpen_texture) = !_glewInit_GL_SGIS_sharpen_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_sharpen_texture */ -#ifdef GL_SGIS_texture4D - CONST_CAST(GLEW_SGIS_texture4D) = glewGetExtension("GL_SGIS_texture4D"); - if (glewExperimental || GLEW_SGIS_texture4D) CONST_CAST(GLEW_SGIS_texture4D) = !_glewInit_GL_SGIS_texture4D(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_texture4D */ -#ifdef GL_SGIS_texture_border_clamp - CONST_CAST(GLEW_SGIS_texture_border_clamp) = glewGetExtension("GL_SGIS_texture_border_clamp"); -#endif /* GL_SGIS_texture_border_clamp */ -#ifdef GL_SGIS_texture_edge_clamp - CONST_CAST(GLEW_SGIS_texture_edge_clamp) = glewGetExtension("GL_SGIS_texture_edge_clamp"); -#endif /* GL_SGIS_texture_edge_clamp */ -#ifdef GL_SGIS_texture_filter4 - CONST_CAST(GLEW_SGIS_texture_filter4) = glewGetExtension("GL_SGIS_texture_filter4"); - if (glewExperimental || GLEW_SGIS_texture_filter4) CONST_CAST(GLEW_SGIS_texture_filter4) = !_glewInit_GL_SGIS_texture_filter4(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIS_texture_filter4 */ -#ifdef GL_SGIS_texture_lod - CONST_CAST(GLEW_SGIS_texture_lod) = glewGetExtension("GL_SGIS_texture_lod"); -#endif /* GL_SGIS_texture_lod */ -#ifdef GL_SGIS_texture_select - CONST_CAST(GLEW_SGIS_texture_select) = glewGetExtension("GL_SGIS_texture_select"); -#endif /* GL_SGIS_texture_select */ -#ifdef GL_SGIX_async - CONST_CAST(GLEW_SGIX_async) = glewGetExtension("GL_SGIX_async"); - if (glewExperimental || GLEW_SGIX_async) CONST_CAST(GLEW_SGIX_async) = !_glewInit_GL_SGIX_async(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_async */ -#ifdef GL_SGIX_async_histogram - CONST_CAST(GLEW_SGIX_async_histogram) = glewGetExtension("GL_SGIX_async_histogram"); -#endif /* GL_SGIX_async_histogram */ -#ifdef GL_SGIX_async_pixel - CONST_CAST(GLEW_SGIX_async_pixel) = glewGetExtension("GL_SGIX_async_pixel"); -#endif /* GL_SGIX_async_pixel */ -#ifdef GL_SGIX_blend_alpha_minmax - CONST_CAST(GLEW_SGIX_blend_alpha_minmax) = glewGetExtension("GL_SGIX_blend_alpha_minmax"); -#endif /* GL_SGIX_blend_alpha_minmax */ -#ifdef GL_SGIX_clipmap - CONST_CAST(GLEW_SGIX_clipmap) = glewGetExtension("GL_SGIX_clipmap"); -#endif /* GL_SGIX_clipmap */ -#ifdef GL_SGIX_convolution_accuracy - CONST_CAST(GLEW_SGIX_convolution_accuracy) = glewGetExtension("GL_SGIX_convolution_accuracy"); -#endif /* GL_SGIX_convolution_accuracy */ -#ifdef GL_SGIX_depth_texture - CONST_CAST(GLEW_SGIX_depth_texture) = glewGetExtension("GL_SGIX_depth_texture"); -#endif /* GL_SGIX_depth_texture */ -#ifdef GL_SGIX_flush_raster - CONST_CAST(GLEW_SGIX_flush_raster) = glewGetExtension("GL_SGIX_flush_raster"); - if (glewExperimental || GLEW_SGIX_flush_raster) CONST_CAST(GLEW_SGIX_flush_raster) = !_glewInit_GL_SGIX_flush_raster(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_flush_raster */ -#ifdef GL_SGIX_fog_offset - CONST_CAST(GLEW_SGIX_fog_offset) = glewGetExtension("GL_SGIX_fog_offset"); -#endif /* GL_SGIX_fog_offset */ -#ifdef GL_SGIX_fog_texture - CONST_CAST(GLEW_SGIX_fog_texture) = glewGetExtension("GL_SGIX_fog_texture"); - if (glewExperimental || GLEW_SGIX_fog_texture) CONST_CAST(GLEW_SGIX_fog_texture) = !_glewInit_GL_SGIX_fog_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_fog_texture */ -#ifdef GL_SGIX_fragment_specular_lighting - CONST_CAST(GLEW_SGIX_fragment_specular_lighting) = glewGetExtension("GL_SGIX_fragment_specular_lighting"); - if (glewExperimental || GLEW_SGIX_fragment_specular_lighting) CONST_CAST(GLEW_SGIX_fragment_specular_lighting) = !_glewInit_GL_SGIX_fragment_specular_lighting(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_fragment_specular_lighting */ -#ifdef GL_SGIX_framezoom - CONST_CAST(GLEW_SGIX_framezoom) = glewGetExtension("GL_SGIX_framezoom"); - if (glewExperimental || GLEW_SGIX_framezoom) CONST_CAST(GLEW_SGIX_framezoom) = !_glewInit_GL_SGIX_framezoom(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_framezoom */ -#ifdef GL_SGIX_interlace - CONST_CAST(GLEW_SGIX_interlace) = glewGetExtension("GL_SGIX_interlace"); -#endif /* GL_SGIX_interlace */ -#ifdef GL_SGIX_ir_instrument1 - CONST_CAST(GLEW_SGIX_ir_instrument1) = glewGetExtension("GL_SGIX_ir_instrument1"); -#endif /* GL_SGIX_ir_instrument1 */ -#ifdef GL_SGIX_list_priority - CONST_CAST(GLEW_SGIX_list_priority) = glewGetExtension("GL_SGIX_list_priority"); -#endif /* GL_SGIX_list_priority */ -#ifdef GL_SGIX_pixel_texture - CONST_CAST(GLEW_SGIX_pixel_texture) = glewGetExtension("GL_SGIX_pixel_texture"); - if (glewExperimental || GLEW_SGIX_pixel_texture) CONST_CAST(GLEW_SGIX_pixel_texture) = !_glewInit_GL_SGIX_pixel_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_pixel_texture */ -#ifdef GL_SGIX_pixel_texture_bits - CONST_CAST(GLEW_SGIX_pixel_texture_bits) = glewGetExtension("GL_SGIX_pixel_texture_bits"); -#endif /* GL_SGIX_pixel_texture_bits */ -#ifdef GL_SGIX_reference_plane - CONST_CAST(GLEW_SGIX_reference_plane) = glewGetExtension("GL_SGIX_reference_plane"); - if (glewExperimental || GLEW_SGIX_reference_plane) CONST_CAST(GLEW_SGIX_reference_plane) = !_glewInit_GL_SGIX_reference_plane(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_reference_plane */ -#ifdef GL_SGIX_resample - CONST_CAST(GLEW_SGIX_resample) = glewGetExtension("GL_SGIX_resample"); -#endif /* GL_SGIX_resample */ -#ifdef GL_SGIX_shadow - CONST_CAST(GLEW_SGIX_shadow) = glewGetExtension("GL_SGIX_shadow"); -#endif /* GL_SGIX_shadow */ -#ifdef GL_SGIX_shadow_ambient - CONST_CAST(GLEW_SGIX_shadow_ambient) = glewGetExtension("GL_SGIX_shadow_ambient"); -#endif /* GL_SGIX_shadow_ambient */ -#ifdef GL_SGIX_sprite - CONST_CAST(GLEW_SGIX_sprite) = glewGetExtension("GL_SGIX_sprite"); - if (glewExperimental || GLEW_SGIX_sprite) CONST_CAST(GLEW_SGIX_sprite) = !_glewInit_GL_SGIX_sprite(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_sprite */ -#ifdef GL_SGIX_tag_sample_buffer - CONST_CAST(GLEW_SGIX_tag_sample_buffer) = glewGetExtension("GL_SGIX_tag_sample_buffer"); - if (glewExperimental || GLEW_SGIX_tag_sample_buffer) CONST_CAST(GLEW_SGIX_tag_sample_buffer) = !_glewInit_GL_SGIX_tag_sample_buffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGIX_tag_sample_buffer */ -#ifdef GL_SGIX_texture_add_env - CONST_CAST(GLEW_SGIX_texture_add_env) = glewGetExtension("GL_SGIX_texture_add_env"); -#endif /* GL_SGIX_texture_add_env */ -#ifdef GL_SGIX_texture_coordinate_clamp - CONST_CAST(GLEW_SGIX_texture_coordinate_clamp) = glewGetExtension("GL_SGIX_texture_coordinate_clamp"); -#endif /* GL_SGIX_texture_coordinate_clamp */ -#ifdef GL_SGIX_texture_lod_bias - CONST_CAST(GLEW_SGIX_texture_lod_bias) = glewGetExtension("GL_SGIX_texture_lod_bias"); -#endif /* GL_SGIX_texture_lod_bias */ -#ifdef GL_SGIX_texture_multi_buffer - CONST_CAST(GLEW_SGIX_texture_multi_buffer) = glewGetExtension("GL_SGIX_texture_multi_buffer"); -#endif /* GL_SGIX_texture_multi_buffer */ -#ifdef GL_SGIX_texture_range - CONST_CAST(GLEW_SGIX_texture_range) = glewGetExtension("GL_SGIX_texture_range"); -#endif /* GL_SGIX_texture_range */ -#ifdef GL_SGIX_texture_scale_bias - CONST_CAST(GLEW_SGIX_texture_scale_bias) = glewGetExtension("GL_SGIX_texture_scale_bias"); -#endif /* GL_SGIX_texture_scale_bias */ -#ifdef GL_SGIX_vertex_preclip - CONST_CAST(GLEW_SGIX_vertex_preclip) = glewGetExtension("GL_SGIX_vertex_preclip"); -#endif /* GL_SGIX_vertex_preclip */ -#ifdef GL_SGIX_vertex_preclip_hint - CONST_CAST(GLEW_SGIX_vertex_preclip_hint) = glewGetExtension("GL_SGIX_vertex_preclip_hint"); -#endif /* GL_SGIX_vertex_preclip_hint */ -#ifdef GL_SGIX_ycrcb - CONST_CAST(GLEW_SGIX_ycrcb) = glewGetExtension("GL_SGIX_ycrcb"); -#endif /* GL_SGIX_ycrcb */ -#ifdef GL_SGI_color_matrix - CONST_CAST(GLEW_SGI_color_matrix) = glewGetExtension("GL_SGI_color_matrix"); -#endif /* GL_SGI_color_matrix */ -#ifdef GL_SGI_color_table - CONST_CAST(GLEW_SGI_color_table) = glewGetExtension("GL_SGI_color_table"); - if (glewExperimental || GLEW_SGI_color_table) CONST_CAST(GLEW_SGI_color_table) = !_glewInit_GL_SGI_color_table(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SGI_color_table */ -#ifdef GL_SGI_texture_color_table - CONST_CAST(GLEW_SGI_texture_color_table) = glewGetExtension("GL_SGI_texture_color_table"); -#endif /* GL_SGI_texture_color_table */ -#ifdef GL_SUNX_constant_data - CONST_CAST(GLEW_SUNX_constant_data) = glewGetExtension("GL_SUNX_constant_data"); - if (glewExperimental || GLEW_SUNX_constant_data) CONST_CAST(GLEW_SUNX_constant_data) = !_glewInit_GL_SUNX_constant_data(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SUNX_constant_data */ -#ifdef GL_SUN_convolution_border_modes - CONST_CAST(GLEW_SUN_convolution_border_modes) = glewGetExtension("GL_SUN_convolution_border_modes"); -#endif /* GL_SUN_convolution_border_modes */ -#ifdef GL_SUN_global_alpha - CONST_CAST(GLEW_SUN_global_alpha) = glewGetExtension("GL_SUN_global_alpha"); - if (glewExperimental || GLEW_SUN_global_alpha) CONST_CAST(GLEW_SUN_global_alpha) = !_glewInit_GL_SUN_global_alpha(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SUN_global_alpha */ -#ifdef GL_SUN_mesh_array - CONST_CAST(GLEW_SUN_mesh_array) = glewGetExtension("GL_SUN_mesh_array"); -#endif /* GL_SUN_mesh_array */ -#ifdef GL_SUN_read_video_pixels - CONST_CAST(GLEW_SUN_read_video_pixels) = glewGetExtension("GL_SUN_read_video_pixels"); - if (glewExperimental || GLEW_SUN_read_video_pixels) CONST_CAST(GLEW_SUN_read_video_pixels) = !_glewInit_GL_SUN_read_video_pixels(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SUN_read_video_pixels */ -#ifdef GL_SUN_slice_accum - CONST_CAST(GLEW_SUN_slice_accum) = glewGetExtension("GL_SUN_slice_accum"); -#endif /* GL_SUN_slice_accum */ -#ifdef GL_SUN_triangle_list - CONST_CAST(GLEW_SUN_triangle_list) = glewGetExtension("GL_SUN_triangle_list"); - if (glewExperimental || GLEW_SUN_triangle_list) CONST_CAST(GLEW_SUN_triangle_list) = !_glewInit_GL_SUN_triangle_list(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SUN_triangle_list */ -#ifdef GL_SUN_vertex - CONST_CAST(GLEW_SUN_vertex) = glewGetExtension("GL_SUN_vertex"); - if (glewExperimental || GLEW_SUN_vertex) CONST_CAST(GLEW_SUN_vertex) = !_glewInit_GL_SUN_vertex(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_SUN_vertex */ -#ifdef GL_WIN_phong_shading - CONST_CAST(GLEW_WIN_phong_shading) = glewGetExtension("GL_WIN_phong_shading"); -#endif /* GL_WIN_phong_shading */ -#ifdef GL_WIN_specular_fog - CONST_CAST(GLEW_WIN_specular_fog) = glewGetExtension("GL_WIN_specular_fog"); -#endif /* GL_WIN_specular_fog */ -#ifdef GL_WIN_swap_hint - CONST_CAST(GLEW_WIN_swap_hint) = glewGetExtension("GL_WIN_swap_hint"); - if (glewExperimental || GLEW_WIN_swap_hint) CONST_CAST(GLEW_WIN_swap_hint) = !_glewInit_GL_WIN_swap_hint(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GL_WIN_swap_hint */ - - return GLEW_OK; -} - - -#if defined(_WIN32) - -#if !defined(GLEW_MX) - -PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL; - -PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL; -PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL; -PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL; -PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL; - -PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL; - -PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL; - -PFNWGLGETCURRENTREADDCARBPROC __wglewGetCurrentReadDCARB = NULL; -PFNWGLMAKECONTEXTCURRENTARBPROC __wglewMakeContextCurrentARB = NULL; - -PFNWGLCREATEPBUFFERARBPROC __wglewCreatePbufferARB = NULL; -PFNWGLDESTROYPBUFFERARBPROC __wglewDestroyPbufferARB = NULL; -PFNWGLGETPBUFFERDCARBPROC __wglewGetPbufferDCARB = NULL; -PFNWGLQUERYPBUFFERARBPROC __wglewQueryPbufferARB = NULL; -PFNWGLRELEASEPBUFFERDCARBPROC __wglewReleasePbufferDCARB = NULL; - -PFNWGLCHOOSEPIXELFORMATARBPROC __wglewChoosePixelFormatARB = NULL; -PFNWGLGETPIXELFORMATATTRIBFVARBPROC __wglewGetPixelFormatAttribfvARB = NULL; -PFNWGLGETPIXELFORMATATTRIBIVARBPROC __wglewGetPixelFormatAttribivARB = NULL; - -PFNWGLBINDTEXIMAGEARBPROC __wglewBindTexImageARB = NULL; -PFNWGLRELEASETEXIMAGEARBPROC __wglewReleaseTexImageARB = NULL; -PFNWGLSETPBUFFERATTRIBARBPROC __wglewSetPbufferAttribARB = NULL; - -PFNWGLBINDDISPLAYCOLORTABLEEXTPROC __wglewBindDisplayColorTableEXT = NULL; -PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC __wglewCreateDisplayColorTableEXT = NULL; -PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC __wglewDestroyDisplayColorTableEXT = NULL; -PFNWGLLOADDISPLAYCOLORTABLEEXTPROC __wglewLoadDisplayColorTableEXT = NULL; - -PFNWGLGETEXTENSIONSSTRINGEXTPROC __wglewGetExtensionsStringEXT = NULL; - -PFNWGLGETCURRENTREADDCEXTPROC __wglewGetCurrentReadDCEXT = NULL; -PFNWGLMAKECONTEXTCURRENTEXTPROC __wglewMakeContextCurrentEXT = NULL; - -PFNWGLCREATEPBUFFEREXTPROC __wglewCreatePbufferEXT = NULL; -PFNWGLDESTROYPBUFFEREXTPROC __wglewDestroyPbufferEXT = NULL; -PFNWGLGETPBUFFERDCEXTPROC __wglewGetPbufferDCEXT = NULL; -PFNWGLQUERYPBUFFEREXTPROC __wglewQueryPbufferEXT = NULL; -PFNWGLRELEASEPBUFFERDCEXTPROC __wglewReleasePbufferDCEXT = NULL; - -PFNWGLCHOOSEPIXELFORMATEXTPROC __wglewChoosePixelFormatEXT = NULL; -PFNWGLGETPIXELFORMATATTRIBFVEXTPROC __wglewGetPixelFormatAttribfvEXT = NULL; -PFNWGLGETPIXELFORMATATTRIBIVEXTPROC __wglewGetPixelFormatAttribivEXT = NULL; - -PFNWGLGETSWAPINTERVALEXTPROC __wglewGetSwapIntervalEXT = NULL; -PFNWGLSWAPINTERVALEXTPROC __wglewSwapIntervalEXT = NULL; - -PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC __wglewGetDigitalVideoParametersI3D = NULL; -PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC __wglewSetDigitalVideoParametersI3D = NULL; - -PFNWGLGETGAMMATABLEI3DPROC __wglewGetGammaTableI3D = NULL; -PFNWGLGETGAMMATABLEPARAMETERSI3DPROC __wglewGetGammaTableParametersI3D = NULL; -PFNWGLSETGAMMATABLEI3DPROC __wglewSetGammaTableI3D = NULL; -PFNWGLSETGAMMATABLEPARAMETERSI3DPROC __wglewSetGammaTableParametersI3D = NULL; - -PFNWGLDISABLEGENLOCKI3DPROC __wglewDisableGenlockI3D = NULL; -PFNWGLENABLEGENLOCKI3DPROC __wglewEnableGenlockI3D = NULL; -PFNWGLGENLOCKSAMPLERATEI3DPROC __wglewGenlockSampleRateI3D = NULL; -PFNWGLGENLOCKSOURCEDELAYI3DPROC __wglewGenlockSourceDelayI3D = NULL; -PFNWGLGENLOCKSOURCEEDGEI3DPROC __wglewGenlockSourceEdgeI3D = NULL; -PFNWGLGENLOCKSOURCEI3DPROC __wglewGenlockSourceI3D = NULL; -PFNWGLGETGENLOCKSAMPLERATEI3DPROC __wglewGetGenlockSampleRateI3D = NULL; -PFNWGLGETGENLOCKSOURCEDELAYI3DPROC __wglewGetGenlockSourceDelayI3D = NULL; -PFNWGLGETGENLOCKSOURCEEDGEI3DPROC __wglewGetGenlockSourceEdgeI3D = NULL; -PFNWGLGETGENLOCKSOURCEI3DPROC __wglewGetGenlockSourceI3D = NULL; -PFNWGLISENABLEDGENLOCKI3DPROC __wglewIsEnabledGenlockI3D = NULL; -PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC __wglewQueryGenlockMaxSourceDelayI3D = NULL; - -PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC __wglewAssociateImageBufferEventsI3D = NULL; -PFNWGLCREATEIMAGEBUFFERI3DPROC __wglewCreateImageBufferI3D = NULL; -PFNWGLDESTROYIMAGEBUFFERI3DPROC __wglewDestroyImageBufferI3D = NULL; -PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC __wglewReleaseImageBufferEventsI3D = NULL; - -PFNWGLDISABLEFRAMELOCKI3DPROC __wglewDisableFrameLockI3D = NULL; -PFNWGLENABLEFRAMELOCKI3DPROC __wglewEnableFrameLockI3D = NULL; -PFNWGLISENABLEDFRAMELOCKI3DPROC __wglewIsEnabledFrameLockI3D = NULL; -PFNWGLQUERYFRAMELOCKMASTERI3DPROC __wglewQueryFrameLockMasterI3D = NULL; - -PFNWGLBEGINFRAMETRACKINGI3DPROC __wglewBeginFrameTrackingI3D = NULL; -PFNWGLENDFRAMETRACKINGI3DPROC __wglewEndFrameTrackingI3D = NULL; -PFNWGLGETFRAMEUSAGEI3DPROC __wglewGetFrameUsageI3D = NULL; -PFNWGLQUERYFRAMETRACKINGI3DPROC __wglewQueryFrameTrackingI3D = NULL; - -PFNWGLCREATEAFFINITYDCNVPROC __wglewCreateAffinityDCNV = NULL; -PFNWGLDELETEDCNVPROC __wglewDeleteDCNV = NULL; -PFNWGLENUMGPUDEVICESNVPROC __wglewEnumGpuDevicesNV = NULL; -PFNWGLENUMGPUSFROMAFFINITYDCNVPROC __wglewEnumGpusFromAffinityDCNV = NULL; -PFNWGLENUMGPUSNVPROC __wglewEnumGpusNV = NULL; - -PFNWGLBINDVIDEODEVICENVPROC __wglewBindVideoDeviceNV = NULL; -PFNWGLENUMERATEVIDEODEVICESNVPROC __wglewEnumerateVideoDevicesNV = NULL; -PFNWGLQUERYCURRENTCONTEXTNVPROC __wglewQueryCurrentContextNV = NULL; - -PFNWGLBINDSWAPBARRIERNVPROC __wglewBindSwapBarrierNV = NULL; -PFNWGLJOINSWAPGROUPNVPROC __wglewJoinSwapGroupNV = NULL; -PFNWGLQUERYFRAMECOUNTNVPROC __wglewQueryFrameCountNV = NULL; -PFNWGLQUERYMAXSWAPGROUPSNVPROC __wglewQueryMaxSwapGroupsNV = NULL; -PFNWGLQUERYSWAPGROUPNVPROC __wglewQuerySwapGroupNV = NULL; -PFNWGLRESETFRAMECOUNTNVPROC __wglewResetFrameCountNV = NULL; - -PFNWGLALLOCATEMEMORYNVPROC __wglewAllocateMemoryNV = NULL; -PFNWGLFREEMEMORYNVPROC __wglewFreeMemoryNV = NULL; - -PFNWGLBINDVIDEOIMAGENVPROC __wglewBindVideoImageNV = NULL; -PFNWGLGETVIDEODEVICENVPROC __wglewGetVideoDeviceNV = NULL; -PFNWGLGETVIDEOINFONVPROC __wglewGetVideoInfoNV = NULL; -PFNWGLRELEASEVIDEODEVICENVPROC __wglewReleaseVideoDeviceNV = NULL; -PFNWGLRELEASEVIDEOIMAGENVPROC __wglewReleaseVideoImageNV = NULL; -PFNWGLSENDPBUFFERTOVIDEONVPROC __wglewSendPbufferToVideoNV = NULL; - -PFNWGLGETMSCRATEOMLPROC __wglewGetMscRateOML = NULL; -PFNWGLGETSYNCVALUESOMLPROC __wglewGetSyncValuesOML = NULL; -PFNWGLSWAPBUFFERSMSCOMLPROC __wglewSwapBuffersMscOML = NULL; -PFNWGLSWAPLAYERBUFFERSMSCOMLPROC __wglewSwapLayerBuffersMscOML = NULL; -PFNWGLWAITFORMSCOMLPROC __wglewWaitForMscOML = NULL; -PFNWGLWAITFORSBCOMLPROC __wglewWaitForSbcOML = NULL; -GLboolean __WGLEW_3DFX_multisample = GL_FALSE; -GLboolean __WGLEW_3DL_stereo_control = GL_FALSE; -GLboolean __WGLEW_ARB_buffer_region = GL_FALSE; -GLboolean __WGLEW_ARB_create_context = GL_FALSE; -GLboolean __WGLEW_ARB_extensions_string = GL_FALSE; -GLboolean __WGLEW_ARB_framebuffer_sRGB = GL_FALSE; -GLboolean __WGLEW_ARB_make_current_read = GL_FALSE; -GLboolean __WGLEW_ARB_multisample = GL_FALSE; -GLboolean __WGLEW_ARB_pbuffer = GL_FALSE; -GLboolean __WGLEW_ARB_pixel_format = GL_FALSE; -GLboolean __WGLEW_ARB_pixel_format_float = GL_FALSE; -GLboolean __WGLEW_ARB_render_texture = GL_FALSE; -GLboolean __WGLEW_ATI_pixel_format_float = GL_FALSE; -GLboolean __WGLEW_ATI_render_texture_rectangle = GL_FALSE; -GLboolean __WGLEW_EXT_depth_float = GL_FALSE; -GLboolean __WGLEW_EXT_display_color_table = GL_FALSE; -GLboolean __WGLEW_EXT_extensions_string = GL_FALSE; -GLboolean __WGLEW_EXT_framebuffer_sRGB = GL_FALSE; -GLboolean __WGLEW_EXT_make_current_read = GL_FALSE; -GLboolean __WGLEW_EXT_multisample = GL_FALSE; -GLboolean __WGLEW_EXT_pbuffer = GL_FALSE; -GLboolean __WGLEW_EXT_pixel_format = GL_FALSE; -GLboolean __WGLEW_EXT_pixel_format_packed_float = GL_FALSE; -GLboolean __WGLEW_EXT_swap_control = GL_FALSE; -GLboolean __WGLEW_I3D_digital_video_control = GL_FALSE; -GLboolean __WGLEW_I3D_gamma = GL_FALSE; -GLboolean __WGLEW_I3D_genlock = GL_FALSE; -GLboolean __WGLEW_I3D_image_buffer = GL_FALSE; -GLboolean __WGLEW_I3D_swap_frame_lock = GL_FALSE; -GLboolean __WGLEW_I3D_swap_frame_usage = GL_FALSE; -GLboolean __WGLEW_NV_float_buffer = GL_FALSE; -GLboolean __WGLEW_NV_gpu_affinity = GL_FALSE; -GLboolean __WGLEW_NV_present_video = GL_FALSE; -GLboolean __WGLEW_NV_render_depth_texture = GL_FALSE; -GLboolean __WGLEW_NV_render_texture_rectangle = GL_FALSE; -GLboolean __WGLEW_NV_swap_group = GL_FALSE; -GLboolean __WGLEW_NV_vertex_array_range = GL_FALSE; -GLboolean __WGLEW_NV_video_output = GL_FALSE; -GLboolean __WGLEW_OML_sync_control = GL_FALSE; - -#endif /* !GLEW_MX */ - -#ifdef WGL_3DFX_multisample - -#endif /* WGL_3DFX_multisample */ - -#ifdef WGL_3DL_stereo_control - -static GLboolean _glewInit_WGL_3DL_stereo_control (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglSetStereoEmitterState3DL = (PFNWGLSETSTEREOEMITTERSTATE3DLPROC)glewGetProcAddress((const GLubyte*)"wglSetStereoEmitterState3DL")) == NULL) || r; - - return r; -} - -#endif /* WGL_3DL_stereo_control */ - -#ifdef WGL_ARB_buffer_region - -static GLboolean _glewInit_WGL_ARB_buffer_region (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglCreateBufferRegionARB = (PFNWGLCREATEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateBufferRegionARB")) == NULL) || r; - r = ((wglDeleteBufferRegionARB = (PFNWGLDELETEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglDeleteBufferRegionARB")) == NULL) || r; - r = ((wglRestoreBufferRegionARB = (PFNWGLRESTOREBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglRestoreBufferRegionARB")) == NULL) || r; - r = ((wglSaveBufferRegionARB = (PFNWGLSAVEBUFFERREGIONARBPROC)glewGetProcAddress((const GLubyte*)"wglSaveBufferRegionARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_buffer_region */ - -#ifdef WGL_ARB_create_context - -static GLboolean _glewInit_WGL_ARB_create_context (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"wglCreateContextAttribsARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_create_context */ - -#ifdef WGL_ARB_extensions_string - -static GLboolean _glewInit_WGL_ARB_extensions_string (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_extensions_string */ - -#ifdef WGL_ARB_framebuffer_sRGB - -#endif /* WGL_ARB_framebuffer_sRGB */ - -#ifdef WGL_ARB_make_current_read - -static GLboolean _glewInit_WGL_ARB_make_current_read (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetCurrentReadDCARB = (PFNWGLGETCURRENTREADDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCARB")) == NULL) || r; - r = ((wglMakeContextCurrentARB = (PFNWGLMAKECONTEXTCURRENTARBPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_make_current_read */ - -#ifdef WGL_ARB_multisample - -#endif /* WGL_ARB_multisample */ - -#ifdef WGL_ARB_pbuffer - -static GLboolean _glewInit_WGL_ARB_pbuffer (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglCreatePbufferARB = (PFNWGLCREATEPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferARB")) == NULL) || r; - r = ((wglDestroyPbufferARB = (PFNWGLDESTROYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferARB")) == NULL) || r; - r = ((wglGetPbufferDCARB = (PFNWGLGETPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCARB")) == NULL) || r; - r = ((wglQueryPbufferARB = (PFNWGLQUERYPBUFFERARBPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferARB")) == NULL) || r; - r = ((wglReleasePbufferDCARB = (PFNWGLRELEASEPBUFFERDCARBPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_pbuffer */ - -#ifdef WGL_ARB_pixel_format - -static GLboolean _glewInit_WGL_ARB_pixel_format (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatARB")) == NULL) || r; - r = ((wglGetPixelFormatAttribfvARB = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvARB")) == NULL) || r; - r = ((wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_pixel_format */ - -#ifdef WGL_ARB_pixel_format_float - -#endif /* WGL_ARB_pixel_format_float */ - -#ifdef WGL_ARB_render_texture - -static GLboolean _glewInit_WGL_ARB_render_texture (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBindTexImageARB = (PFNWGLBINDTEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglBindTexImageARB")) == NULL) || r; - r = ((wglReleaseTexImageARB = (PFNWGLRELEASETEXIMAGEARBPROC)glewGetProcAddress((const GLubyte*)"wglReleaseTexImageARB")) == NULL) || r; - r = ((wglSetPbufferAttribARB = (PFNWGLSETPBUFFERATTRIBARBPROC)glewGetProcAddress((const GLubyte*)"wglSetPbufferAttribARB")) == NULL) || r; - - return r; -} - -#endif /* WGL_ARB_render_texture */ - -#ifdef WGL_ATI_pixel_format_float - -#endif /* WGL_ATI_pixel_format_float */ - -#ifdef WGL_ATI_render_texture_rectangle - -#endif /* WGL_ATI_render_texture_rectangle */ - -#ifdef WGL_EXT_depth_float - -#endif /* WGL_EXT_depth_float */ - -#ifdef WGL_EXT_display_color_table - -static GLboolean _glewInit_WGL_EXT_display_color_table (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBindDisplayColorTableEXT = (PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglBindDisplayColorTableEXT")) == NULL) || r; - r = ((wglCreateDisplayColorTableEXT = (PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglCreateDisplayColorTableEXT")) == NULL) || r; - r = ((wglDestroyDisplayColorTableEXT = (PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyDisplayColorTableEXT")) == NULL) || r; - r = ((wglLoadDisplayColorTableEXT = (PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)glewGetProcAddress((const GLubyte*)"wglLoadDisplayColorTableEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_display_color_table */ - -#ifdef WGL_EXT_extensions_string - -static GLboolean _glewInit_WGL_EXT_extensions_string (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_extensions_string */ - -#ifdef WGL_EXT_framebuffer_sRGB - -#endif /* WGL_EXT_framebuffer_sRGB */ - -#ifdef WGL_EXT_make_current_read - -static GLboolean _glewInit_WGL_EXT_make_current_read (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetCurrentReadDCEXT = (PFNWGLGETCURRENTREADDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetCurrentReadDCEXT")) == NULL) || r; - r = ((wglMakeContextCurrentEXT = (PFNWGLMAKECONTEXTCURRENTEXTPROC)glewGetProcAddress((const GLubyte*)"wglMakeContextCurrentEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_make_current_read */ - -#ifdef WGL_EXT_multisample - -#endif /* WGL_EXT_multisample */ - -#ifdef WGL_EXT_pbuffer - -static GLboolean _glewInit_WGL_EXT_pbuffer (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglCreatePbufferEXT = (PFNWGLCREATEPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglCreatePbufferEXT")) == NULL) || r; - r = ((wglDestroyPbufferEXT = (PFNWGLDESTROYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglDestroyPbufferEXT")) == NULL) || r; - r = ((wglGetPbufferDCEXT = (PFNWGLGETPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPbufferDCEXT")) == NULL) || r; - r = ((wglQueryPbufferEXT = (PFNWGLQUERYPBUFFEREXTPROC)glewGetProcAddress((const GLubyte*)"wglQueryPbufferEXT")) == NULL) || r; - r = ((wglReleasePbufferDCEXT = (PFNWGLRELEASEPBUFFERDCEXTPROC)glewGetProcAddress((const GLubyte*)"wglReleasePbufferDCEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_pbuffer */ - -#ifdef WGL_EXT_pixel_format - -static GLboolean _glewInit_WGL_EXT_pixel_format (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglChoosePixelFormatEXT = (PFNWGLCHOOSEPIXELFORMATEXTPROC)glewGetProcAddress((const GLubyte*)"wglChoosePixelFormatEXT")) == NULL) || r; - r = ((wglGetPixelFormatAttribfvEXT = (PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribfvEXT")) == NULL) || r; - r = ((wglGetPixelFormatAttribivEXT = (PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetPixelFormatAttribivEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_pixel_format */ - -#ifdef WGL_EXT_pixel_format_packed_float - -#endif /* WGL_EXT_pixel_format_packed_float */ - -#ifdef WGL_EXT_swap_control - -static GLboolean _glewInit_WGL_EXT_swap_control (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetSwapIntervalEXT")) == NULL) || r; - r = ((wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)glewGetProcAddress((const GLubyte*)"wglSwapIntervalEXT")) == NULL) || r; - - return r; -} - -#endif /* WGL_EXT_swap_control */ - -#ifdef WGL_I3D_digital_video_control - -static GLboolean _glewInit_WGL_I3D_digital_video_control (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetDigitalVideoParametersI3D = (PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetDigitalVideoParametersI3D")) == NULL) || r; - r = ((wglSetDigitalVideoParametersI3D = (PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetDigitalVideoParametersI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_digital_video_control */ - -#ifdef WGL_I3D_gamma - -static GLboolean _glewInit_WGL_I3D_gamma (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetGammaTableI3D = (PFNWGLGETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableI3D")) == NULL) || r; - r = ((wglGetGammaTableParametersI3D = (PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGammaTableParametersI3D")) == NULL) || r; - r = ((wglSetGammaTableI3D = (PFNWGLSETGAMMATABLEI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableI3D")) == NULL) || r; - r = ((wglSetGammaTableParametersI3D = (PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)glewGetProcAddress((const GLubyte*)"wglSetGammaTableParametersI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_gamma */ - -#ifdef WGL_I3D_genlock - -static GLboolean _glewInit_WGL_I3D_genlock (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglDisableGenlockI3D = (PFNWGLDISABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableGenlockI3D")) == NULL) || r; - r = ((wglEnableGenlockI3D = (PFNWGLENABLEGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableGenlockI3D")) == NULL) || r; - r = ((wglGenlockSampleRateI3D = (PFNWGLGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSampleRateI3D")) == NULL) || r; - r = ((wglGenlockSourceDelayI3D = (PFNWGLGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceDelayI3D")) == NULL) || r; - r = ((wglGenlockSourceEdgeI3D = (PFNWGLGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceEdgeI3D")) == NULL) || r; - r = ((wglGenlockSourceI3D = (PFNWGLGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGenlockSourceI3D")) == NULL) || r; - r = ((wglGetGenlockSampleRateI3D = (PFNWGLGETGENLOCKSAMPLERATEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSampleRateI3D")) == NULL) || r; - r = ((wglGetGenlockSourceDelayI3D = (PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceDelayI3D")) == NULL) || r; - r = ((wglGetGenlockSourceEdgeI3D = (PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceEdgeI3D")) == NULL) || r; - r = ((wglGetGenlockSourceI3D = (PFNWGLGETGENLOCKSOURCEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetGenlockSourceI3D")) == NULL) || r; - r = ((wglIsEnabledGenlockI3D = (PFNWGLISENABLEDGENLOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledGenlockI3D")) == NULL) || r; - r = ((wglQueryGenlockMaxSourceDelayI3D = (PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryGenlockMaxSourceDelayI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_genlock */ - -#ifdef WGL_I3D_image_buffer - -static GLboolean _glewInit_WGL_I3D_image_buffer (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglAssociateImageBufferEventsI3D = (PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglAssociateImageBufferEventsI3D")) == NULL) || r; - r = ((wglCreateImageBufferI3D = (PFNWGLCREATEIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglCreateImageBufferI3D")) == NULL) || r; - r = ((wglDestroyImageBufferI3D = (PFNWGLDESTROYIMAGEBUFFERI3DPROC)glewGetProcAddress((const GLubyte*)"wglDestroyImageBufferI3D")) == NULL) || r; - r = ((wglReleaseImageBufferEventsI3D = (PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)glewGetProcAddress((const GLubyte*)"wglReleaseImageBufferEventsI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_image_buffer */ - -#ifdef WGL_I3D_swap_frame_lock - -static GLboolean _glewInit_WGL_I3D_swap_frame_lock (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglDisableFrameLockI3D = (PFNWGLDISABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglDisableFrameLockI3D")) == NULL) || r; - r = ((wglEnableFrameLockI3D = (PFNWGLENABLEFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglEnableFrameLockI3D")) == NULL) || r; - r = ((wglIsEnabledFrameLockI3D = (PFNWGLISENABLEDFRAMELOCKI3DPROC)glewGetProcAddress((const GLubyte*)"wglIsEnabledFrameLockI3D")) == NULL) || r; - r = ((wglQueryFrameLockMasterI3D = (PFNWGLQUERYFRAMELOCKMASTERI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameLockMasterI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_swap_frame_lock */ - -#ifdef WGL_I3D_swap_frame_usage - -static GLboolean _glewInit_WGL_I3D_swap_frame_usage (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBeginFrameTrackingI3D = (PFNWGLBEGINFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglBeginFrameTrackingI3D")) == NULL) || r; - r = ((wglEndFrameTrackingI3D = (PFNWGLENDFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglEndFrameTrackingI3D")) == NULL) || r; - r = ((wglGetFrameUsageI3D = (PFNWGLGETFRAMEUSAGEI3DPROC)glewGetProcAddress((const GLubyte*)"wglGetFrameUsageI3D")) == NULL) || r; - r = ((wglQueryFrameTrackingI3D = (PFNWGLQUERYFRAMETRACKINGI3DPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameTrackingI3D")) == NULL) || r; - - return r; -} - -#endif /* WGL_I3D_swap_frame_usage */ - -#ifdef WGL_NV_float_buffer - -#endif /* WGL_NV_float_buffer */ - -#ifdef WGL_NV_gpu_affinity - -static GLboolean _glewInit_WGL_NV_gpu_affinity (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglCreateAffinityDCNV = (PFNWGLCREATEAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglCreateAffinityDCNV")) == NULL) || r; - r = ((wglDeleteDCNV = (PFNWGLDELETEDCNVPROC)glewGetProcAddress((const GLubyte*)"wglDeleteDCNV")) == NULL) || r; - r = ((wglEnumGpuDevicesNV = (PFNWGLENUMGPUDEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpuDevicesNV")) == NULL) || r; - r = ((wglEnumGpusFromAffinityDCNV = (PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusFromAffinityDCNV")) == NULL) || r; - r = ((wglEnumGpusNV = (PFNWGLENUMGPUSNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumGpusNV")) == NULL) || r; - - return r; -} - -#endif /* WGL_NV_gpu_affinity */ - -#ifdef WGL_NV_present_video - -static GLboolean _glewInit_WGL_NV_present_video (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBindVideoDeviceNV = (PFNWGLBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoDeviceNV")) == NULL) || r; - r = ((wglEnumerateVideoDevicesNV = (PFNWGLENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"wglEnumerateVideoDevicesNV")) == NULL) || r; - r = ((wglQueryCurrentContextNV = (PFNWGLQUERYCURRENTCONTEXTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryCurrentContextNV")) == NULL) || r; - - return r; -} - -#endif /* WGL_NV_present_video */ - -#ifdef WGL_NV_render_depth_texture - -#endif /* WGL_NV_render_depth_texture */ - -#ifdef WGL_NV_render_texture_rectangle - -#endif /* WGL_NV_render_texture_rectangle */ - -#ifdef WGL_NV_swap_group - -static GLboolean _glewInit_WGL_NV_swap_group (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBindSwapBarrierNV = (PFNWGLBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"wglBindSwapBarrierNV")) == NULL) || r; - r = ((wglJoinSwapGroupNV = (PFNWGLJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglJoinSwapGroupNV")) == NULL) || r; - r = ((wglQueryFrameCountNV = (PFNWGLQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryFrameCountNV")) == NULL) || r; - r = ((wglQueryMaxSwapGroupsNV = (PFNWGLQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"wglQueryMaxSwapGroupsNV")) == NULL) || r; - r = ((wglQuerySwapGroupNV = (PFNWGLQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"wglQuerySwapGroupNV")) == NULL) || r; - r = ((wglResetFrameCountNV = (PFNWGLRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"wglResetFrameCountNV")) == NULL) || r; - - return r; -} - -#endif /* WGL_NV_swap_group */ - -#ifdef WGL_NV_vertex_array_range - -static GLboolean _glewInit_WGL_NV_vertex_array_range (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglAllocateMemoryNV")) == NULL) || r; - r = ((wglFreeMemoryNV = (PFNWGLFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"wglFreeMemoryNV")) == NULL) || r; - - return r; -} - -#endif /* WGL_NV_vertex_array_range */ - -#ifdef WGL_NV_video_output - -static GLboolean _glewInit_WGL_NV_video_output (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglBindVideoImageNV = (PFNWGLBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglBindVideoImageNV")) == NULL) || r; - r = ((wglGetVideoDeviceNV = (PFNWGLGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoDeviceNV")) == NULL) || r; - r = ((wglGetVideoInfoNV = (PFNWGLGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"wglGetVideoInfoNV")) == NULL) || r; - r = ((wglReleaseVideoDeviceNV = (PFNWGLRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoDeviceNV")) == NULL) || r; - r = ((wglReleaseVideoImageNV = (PFNWGLRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"wglReleaseVideoImageNV")) == NULL) || r; - r = ((wglSendPbufferToVideoNV = (PFNWGLSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"wglSendPbufferToVideoNV")) == NULL) || r; - - return r; -} - -#endif /* WGL_NV_video_output */ - -#ifdef WGL_OML_sync_control - -static GLboolean _glewInit_WGL_OML_sync_control (WGLEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((wglGetMscRateOML = (PFNWGLGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetMscRateOML")) == NULL) || r; - r = ((wglGetSyncValuesOML = (PFNWGLGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"wglGetSyncValuesOML")) == NULL) || r; - r = ((wglSwapBuffersMscOML = (PFNWGLSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapBuffersMscOML")) == NULL) || r; - r = ((wglSwapLayerBuffersMscOML = (PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglSwapLayerBuffersMscOML")) == NULL) || r; - r = ((wglWaitForMscOML = (PFNWGLWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForMscOML")) == NULL) || r; - r = ((wglWaitForSbcOML = (PFNWGLWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"wglWaitForSbcOML")) == NULL) || r; - - return r; -} - -#endif /* WGL_OML_sync_control */ - -/* ------------------------------------------------------------------------- */ - -static PFNWGLGETEXTENSIONSSTRINGARBPROC _wglewGetExtensionsStringARB = NULL; -static PFNWGLGETEXTENSIONSSTRINGEXTPROC _wglewGetExtensionsStringEXT = NULL; - -GLboolean wglewGetExtension (const char* name) -{ - GLubyte* p; - GLubyte* end; - GLuint len = _glewStrLen((const GLubyte*)name); - if (_wglewGetExtensionsStringARB == NULL) - if (_wglewGetExtensionsStringEXT == NULL) - return GL_FALSE; - else - p = (GLubyte*)_wglewGetExtensionsStringEXT(); - else - p = (GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC()); - if (0 == p) return GL_FALSE; - end = p + _glewStrLen(p); - while (p < end) - { - GLuint n = _glewStrCLen(p, ' '); - if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; - p += n+1; - } - return GL_FALSE; -} - -GLenum wglewContextInit (WGLEW_CONTEXT_ARG_DEF_LIST) -{ - GLboolean crippled; - /* find wgl extension string query functions */ - _wglewGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringARB"); - _wglewGetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)glewGetProcAddress((const GLubyte*)"wglGetExtensionsStringEXT"); - /* initialize extensions */ - crippled = _wglewGetExtensionsStringARB == NULL && _wglewGetExtensionsStringEXT == NULL; -#ifdef WGL_3DFX_multisample - CONST_CAST(WGLEW_3DFX_multisample) = wglewGetExtension("WGL_3DFX_multisample"); -#endif /* WGL_3DFX_multisample */ -#ifdef WGL_3DL_stereo_control - CONST_CAST(WGLEW_3DL_stereo_control) = wglewGetExtension("WGL_3DL_stereo_control"); - if (glewExperimental || WGLEW_3DL_stereo_control|| crippled) CONST_CAST(WGLEW_3DL_stereo_control)= !_glewInit_WGL_3DL_stereo_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_3DL_stereo_control */ -#ifdef WGL_ARB_buffer_region - CONST_CAST(WGLEW_ARB_buffer_region) = wglewGetExtension("WGL_ARB_buffer_region"); - if (glewExperimental || WGLEW_ARB_buffer_region|| crippled) CONST_CAST(WGLEW_ARB_buffer_region)= !_glewInit_WGL_ARB_buffer_region(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_buffer_region */ -#ifdef WGL_ARB_create_context - CONST_CAST(WGLEW_ARB_create_context) = wglewGetExtension("WGL_ARB_create_context"); - if (glewExperimental || WGLEW_ARB_create_context|| crippled) CONST_CAST(WGLEW_ARB_create_context)= !_glewInit_WGL_ARB_create_context(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_create_context */ -#ifdef WGL_ARB_extensions_string - CONST_CAST(WGLEW_ARB_extensions_string) = wglewGetExtension("WGL_ARB_extensions_string"); - if (glewExperimental || WGLEW_ARB_extensions_string|| crippled) CONST_CAST(WGLEW_ARB_extensions_string)= !_glewInit_WGL_ARB_extensions_string(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_extensions_string */ -#ifdef WGL_ARB_framebuffer_sRGB - CONST_CAST(WGLEW_ARB_framebuffer_sRGB) = wglewGetExtension("WGL_ARB_framebuffer_sRGB"); -#endif /* WGL_ARB_framebuffer_sRGB */ -#ifdef WGL_ARB_make_current_read - CONST_CAST(WGLEW_ARB_make_current_read) = wglewGetExtension("WGL_ARB_make_current_read"); - if (glewExperimental || WGLEW_ARB_make_current_read|| crippled) CONST_CAST(WGLEW_ARB_make_current_read)= !_glewInit_WGL_ARB_make_current_read(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_make_current_read */ -#ifdef WGL_ARB_multisample - CONST_CAST(WGLEW_ARB_multisample) = wglewGetExtension("WGL_ARB_multisample"); -#endif /* WGL_ARB_multisample */ -#ifdef WGL_ARB_pbuffer - CONST_CAST(WGLEW_ARB_pbuffer) = wglewGetExtension("WGL_ARB_pbuffer"); - if (glewExperimental || WGLEW_ARB_pbuffer|| crippled) CONST_CAST(WGLEW_ARB_pbuffer)= !_glewInit_WGL_ARB_pbuffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_pbuffer */ -#ifdef WGL_ARB_pixel_format - CONST_CAST(WGLEW_ARB_pixel_format) = wglewGetExtension("WGL_ARB_pixel_format"); - if (glewExperimental || WGLEW_ARB_pixel_format|| crippled) CONST_CAST(WGLEW_ARB_pixel_format)= !_glewInit_WGL_ARB_pixel_format(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_pixel_format */ -#ifdef WGL_ARB_pixel_format_float - CONST_CAST(WGLEW_ARB_pixel_format_float) = wglewGetExtension("WGL_ARB_pixel_format_float"); -#endif /* WGL_ARB_pixel_format_float */ -#ifdef WGL_ARB_render_texture - CONST_CAST(WGLEW_ARB_render_texture) = wglewGetExtension("WGL_ARB_render_texture"); - if (glewExperimental || WGLEW_ARB_render_texture|| crippled) CONST_CAST(WGLEW_ARB_render_texture)= !_glewInit_WGL_ARB_render_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_ARB_render_texture */ -#ifdef WGL_ATI_pixel_format_float - CONST_CAST(WGLEW_ATI_pixel_format_float) = wglewGetExtension("WGL_ATI_pixel_format_float"); -#endif /* WGL_ATI_pixel_format_float */ -#ifdef WGL_ATI_render_texture_rectangle - CONST_CAST(WGLEW_ATI_render_texture_rectangle) = wglewGetExtension("WGL_ATI_render_texture_rectangle"); -#endif /* WGL_ATI_render_texture_rectangle */ -#ifdef WGL_EXT_depth_float - CONST_CAST(WGLEW_EXT_depth_float) = wglewGetExtension("WGL_EXT_depth_float"); -#endif /* WGL_EXT_depth_float */ -#ifdef WGL_EXT_display_color_table - CONST_CAST(WGLEW_EXT_display_color_table) = wglewGetExtension("WGL_EXT_display_color_table"); - if (glewExperimental || WGLEW_EXT_display_color_table|| crippled) CONST_CAST(WGLEW_EXT_display_color_table)= !_glewInit_WGL_EXT_display_color_table(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_display_color_table */ -#ifdef WGL_EXT_extensions_string - CONST_CAST(WGLEW_EXT_extensions_string) = wglewGetExtension("WGL_EXT_extensions_string"); - if (glewExperimental || WGLEW_EXT_extensions_string|| crippled) CONST_CAST(WGLEW_EXT_extensions_string)= !_glewInit_WGL_EXT_extensions_string(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_extensions_string */ -#ifdef WGL_EXT_framebuffer_sRGB - CONST_CAST(WGLEW_EXT_framebuffer_sRGB) = wglewGetExtension("WGL_EXT_framebuffer_sRGB"); -#endif /* WGL_EXT_framebuffer_sRGB */ -#ifdef WGL_EXT_make_current_read - CONST_CAST(WGLEW_EXT_make_current_read) = wglewGetExtension("WGL_EXT_make_current_read"); - if (glewExperimental || WGLEW_EXT_make_current_read|| crippled) CONST_CAST(WGLEW_EXT_make_current_read)= !_glewInit_WGL_EXT_make_current_read(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_make_current_read */ -#ifdef WGL_EXT_multisample - CONST_CAST(WGLEW_EXT_multisample) = wglewGetExtension("WGL_EXT_multisample"); -#endif /* WGL_EXT_multisample */ -#ifdef WGL_EXT_pbuffer - CONST_CAST(WGLEW_EXT_pbuffer) = wglewGetExtension("WGL_EXT_pbuffer"); - if (glewExperimental || WGLEW_EXT_pbuffer|| crippled) CONST_CAST(WGLEW_EXT_pbuffer)= !_glewInit_WGL_EXT_pbuffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_pbuffer */ -#ifdef WGL_EXT_pixel_format - CONST_CAST(WGLEW_EXT_pixel_format) = wglewGetExtension("WGL_EXT_pixel_format"); - if (glewExperimental || WGLEW_EXT_pixel_format|| crippled) CONST_CAST(WGLEW_EXT_pixel_format)= !_glewInit_WGL_EXT_pixel_format(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_pixel_format */ -#ifdef WGL_EXT_pixel_format_packed_float - CONST_CAST(WGLEW_EXT_pixel_format_packed_float) = wglewGetExtension("WGL_EXT_pixel_format_packed_float"); -#endif /* WGL_EXT_pixel_format_packed_float */ -#ifdef WGL_EXT_swap_control - CONST_CAST(WGLEW_EXT_swap_control) = wglewGetExtension("WGL_EXT_swap_control"); - if (glewExperimental || WGLEW_EXT_swap_control|| crippled) CONST_CAST(WGLEW_EXT_swap_control)= !_glewInit_WGL_EXT_swap_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_EXT_swap_control */ -#ifdef WGL_I3D_digital_video_control - CONST_CAST(WGLEW_I3D_digital_video_control) = wglewGetExtension("WGL_I3D_digital_video_control"); - if (glewExperimental || WGLEW_I3D_digital_video_control|| crippled) CONST_CAST(WGLEW_I3D_digital_video_control)= !_glewInit_WGL_I3D_digital_video_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_digital_video_control */ -#ifdef WGL_I3D_gamma - CONST_CAST(WGLEW_I3D_gamma) = wglewGetExtension("WGL_I3D_gamma"); - if (glewExperimental || WGLEW_I3D_gamma|| crippled) CONST_CAST(WGLEW_I3D_gamma)= !_glewInit_WGL_I3D_gamma(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_gamma */ -#ifdef WGL_I3D_genlock - CONST_CAST(WGLEW_I3D_genlock) = wglewGetExtension("WGL_I3D_genlock"); - if (glewExperimental || WGLEW_I3D_genlock|| crippled) CONST_CAST(WGLEW_I3D_genlock)= !_glewInit_WGL_I3D_genlock(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_genlock */ -#ifdef WGL_I3D_image_buffer - CONST_CAST(WGLEW_I3D_image_buffer) = wglewGetExtension("WGL_I3D_image_buffer"); - if (glewExperimental || WGLEW_I3D_image_buffer|| crippled) CONST_CAST(WGLEW_I3D_image_buffer)= !_glewInit_WGL_I3D_image_buffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_image_buffer */ -#ifdef WGL_I3D_swap_frame_lock - CONST_CAST(WGLEW_I3D_swap_frame_lock) = wglewGetExtension("WGL_I3D_swap_frame_lock"); - if (glewExperimental || WGLEW_I3D_swap_frame_lock|| crippled) CONST_CAST(WGLEW_I3D_swap_frame_lock)= !_glewInit_WGL_I3D_swap_frame_lock(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_swap_frame_lock */ -#ifdef WGL_I3D_swap_frame_usage - CONST_CAST(WGLEW_I3D_swap_frame_usage) = wglewGetExtension("WGL_I3D_swap_frame_usage"); - if (glewExperimental || WGLEW_I3D_swap_frame_usage|| crippled) CONST_CAST(WGLEW_I3D_swap_frame_usage)= !_glewInit_WGL_I3D_swap_frame_usage(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_I3D_swap_frame_usage */ -#ifdef WGL_NV_float_buffer - CONST_CAST(WGLEW_NV_float_buffer) = wglewGetExtension("WGL_NV_float_buffer"); -#endif /* WGL_NV_float_buffer */ -#ifdef WGL_NV_gpu_affinity - CONST_CAST(WGLEW_NV_gpu_affinity) = wglewGetExtension("WGL_NV_gpu_affinity"); - if (glewExperimental || WGLEW_NV_gpu_affinity|| crippled) CONST_CAST(WGLEW_NV_gpu_affinity)= !_glewInit_WGL_NV_gpu_affinity(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_NV_gpu_affinity */ -#ifdef WGL_NV_present_video - CONST_CAST(WGLEW_NV_present_video) = wglewGetExtension("WGL_NV_present_video"); - if (glewExperimental || WGLEW_NV_present_video|| crippled) CONST_CAST(WGLEW_NV_present_video)= !_glewInit_WGL_NV_present_video(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_NV_present_video */ -#ifdef WGL_NV_render_depth_texture - CONST_CAST(WGLEW_NV_render_depth_texture) = wglewGetExtension("WGL_NV_render_depth_texture"); -#endif /* WGL_NV_render_depth_texture */ -#ifdef WGL_NV_render_texture_rectangle - CONST_CAST(WGLEW_NV_render_texture_rectangle) = wglewGetExtension("WGL_NV_render_texture_rectangle"); -#endif /* WGL_NV_render_texture_rectangle */ -#ifdef WGL_NV_swap_group - CONST_CAST(WGLEW_NV_swap_group) = wglewGetExtension("WGL_NV_swap_group"); - if (glewExperimental || WGLEW_NV_swap_group|| crippled) CONST_CAST(WGLEW_NV_swap_group)= !_glewInit_WGL_NV_swap_group(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_NV_swap_group */ -#ifdef WGL_NV_vertex_array_range - CONST_CAST(WGLEW_NV_vertex_array_range) = wglewGetExtension("WGL_NV_vertex_array_range"); - if (glewExperimental || WGLEW_NV_vertex_array_range|| crippled) CONST_CAST(WGLEW_NV_vertex_array_range)= !_glewInit_WGL_NV_vertex_array_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_NV_vertex_array_range */ -#ifdef WGL_NV_video_output - CONST_CAST(WGLEW_NV_video_output) = wglewGetExtension("WGL_NV_video_output"); - if (glewExperimental || WGLEW_NV_video_output|| crippled) CONST_CAST(WGLEW_NV_video_output)= !_glewInit_WGL_NV_video_output(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_NV_video_output */ -#ifdef WGL_OML_sync_control - CONST_CAST(WGLEW_OML_sync_control) = wglewGetExtension("WGL_OML_sync_control"); - if (glewExperimental || WGLEW_OML_sync_control|| crippled) CONST_CAST(WGLEW_OML_sync_control)= !_glewInit_WGL_OML_sync_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* WGL_OML_sync_control */ - - return GLEW_OK; -} - -#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) - -PFNGLXGETCURRENTDISPLAYPROC __glewXGetCurrentDisplay = NULL; - -PFNGLXCHOOSEFBCONFIGPROC __glewXChooseFBConfig = NULL; -PFNGLXCREATENEWCONTEXTPROC __glewXCreateNewContext = NULL; -PFNGLXCREATEPBUFFERPROC __glewXCreatePbuffer = NULL; -PFNGLXCREATEPIXMAPPROC __glewXCreatePixmap = NULL; -PFNGLXCREATEWINDOWPROC __glewXCreateWindow = NULL; -PFNGLXDESTROYPBUFFERPROC __glewXDestroyPbuffer = NULL; -PFNGLXDESTROYPIXMAPPROC __glewXDestroyPixmap = NULL; -PFNGLXDESTROYWINDOWPROC __glewXDestroyWindow = NULL; -PFNGLXGETCURRENTREADDRAWABLEPROC __glewXGetCurrentReadDrawable = NULL; -PFNGLXGETFBCONFIGATTRIBPROC __glewXGetFBConfigAttrib = NULL; -PFNGLXGETFBCONFIGSPROC __glewXGetFBConfigs = NULL; -PFNGLXGETSELECTEDEVENTPROC __glewXGetSelectedEvent = NULL; -PFNGLXGETVISUALFROMFBCONFIGPROC __glewXGetVisualFromFBConfig = NULL; -PFNGLXMAKECONTEXTCURRENTPROC __glewXMakeContextCurrent = NULL; -PFNGLXQUERYCONTEXTPROC __glewXQueryContext = NULL; -PFNGLXQUERYDRAWABLEPROC __glewXQueryDrawable = NULL; -PFNGLXSELECTEVENTPROC __glewXSelectEvent = NULL; - -PFNGLXCREATECONTEXTATTRIBSARBPROC __glewXCreateContextAttribsARB = NULL; - -PFNGLXBINDTEXIMAGEATIPROC __glewXBindTexImageATI = NULL; -PFNGLXDRAWABLEATTRIBATIPROC __glewXDrawableAttribATI = NULL; -PFNGLXRELEASETEXIMAGEATIPROC __glewXReleaseTexImageATI = NULL; - -PFNGLXFREECONTEXTEXTPROC __glewXFreeContextEXT = NULL; -PFNGLXGETCONTEXTIDEXTPROC __glewXGetContextIDEXT = NULL; -PFNGLXIMPORTCONTEXTEXTPROC __glewXImportContextEXT = NULL; -PFNGLXQUERYCONTEXTINFOEXTPROC __glewXQueryContextInfoEXT = NULL; - -PFNGLXBINDTEXIMAGEEXTPROC __glewXBindTexImageEXT = NULL; -PFNGLXRELEASETEXIMAGEEXTPROC __glewXReleaseTexImageEXT = NULL; - -PFNGLXGETAGPOFFSETMESAPROC __glewXGetAGPOffsetMESA = NULL; - -PFNGLXCOPYSUBBUFFERMESAPROC __glewXCopySubBufferMESA = NULL; - -PFNGLXCREATEGLXPIXMAPMESAPROC __glewXCreateGLXPixmapMESA = NULL; - -PFNGLXRELEASEBUFFERSMESAPROC __glewXReleaseBuffersMESA = NULL; - -PFNGLXSET3DFXMODEMESAPROC __glewXSet3DfxModeMESA = NULL; - -PFNGLXBINDVIDEODEVICENVPROC __glewXBindVideoDeviceNV = NULL; -PFNGLXENUMERATEVIDEODEVICESNVPROC __glewXEnumerateVideoDevicesNV = NULL; - -PFNGLXBINDSWAPBARRIERNVPROC __glewXBindSwapBarrierNV = NULL; -PFNGLXJOINSWAPGROUPNVPROC __glewXJoinSwapGroupNV = NULL; -PFNGLXQUERYFRAMECOUNTNVPROC __glewXQueryFrameCountNV = NULL; -PFNGLXQUERYMAXSWAPGROUPSNVPROC __glewXQueryMaxSwapGroupsNV = NULL; -PFNGLXQUERYSWAPGROUPNVPROC __glewXQuerySwapGroupNV = NULL; -PFNGLXRESETFRAMECOUNTNVPROC __glewXResetFrameCountNV = NULL; - -PFNGLXALLOCATEMEMORYNVPROC __glewXAllocateMemoryNV = NULL; -PFNGLXFREEMEMORYNVPROC __glewXFreeMemoryNV = NULL; - -PFNGLXBINDVIDEOIMAGENVPROC __glewXBindVideoImageNV = NULL; -PFNGLXGETVIDEODEVICENVPROC __glewXGetVideoDeviceNV = NULL; -PFNGLXGETVIDEOINFONVPROC __glewXGetVideoInfoNV = NULL; -PFNGLXRELEASEVIDEODEVICENVPROC __glewXReleaseVideoDeviceNV = NULL; -PFNGLXRELEASEVIDEOIMAGENVPROC __glewXReleaseVideoImageNV = NULL; -PFNGLXSENDPBUFFERTOVIDEONVPROC __glewXSendPbufferToVideoNV = NULL; - -#ifdef GLX_OML_sync_control -PFNGLXGETMSCRATEOMLPROC __glewXGetMscRateOML = NULL; -PFNGLXGETSYNCVALUESOMLPROC __glewXGetSyncValuesOML = NULL; -PFNGLXSWAPBUFFERSMSCOMLPROC __glewXSwapBuffersMscOML = NULL; -PFNGLXWAITFORMSCOMLPROC __glewXWaitForMscOML = NULL; -PFNGLXWAITFORSBCOMLPROC __glewXWaitForSbcOML = NULL; -#endif - -PFNGLXCHOOSEFBCONFIGSGIXPROC __glewXChooseFBConfigSGIX = NULL; -PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC __glewXCreateContextWithConfigSGIX = NULL; -PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC __glewXCreateGLXPixmapWithConfigSGIX = NULL; -PFNGLXGETFBCONFIGATTRIBSGIXPROC __glewXGetFBConfigAttribSGIX = NULL; -PFNGLXGETFBCONFIGFROMVISUALSGIXPROC __glewXGetFBConfigFromVisualSGIX = NULL; -PFNGLXGETVISUALFROMFBCONFIGSGIXPROC __glewXGetVisualFromFBConfigSGIX = NULL; - -PFNGLXBINDHYPERPIPESGIXPROC __glewXBindHyperpipeSGIX = NULL; -PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC __glewXDestroyHyperpipeConfigSGIX = NULL; -PFNGLXHYPERPIPEATTRIBSGIXPROC __glewXHyperpipeAttribSGIX = NULL; -PFNGLXHYPERPIPECONFIGSGIXPROC __glewXHyperpipeConfigSGIX = NULL; -PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC __glewXQueryHyperpipeAttribSGIX = NULL; -PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC __glewXQueryHyperpipeBestAttribSGIX = NULL; -PFNGLXQUERYHYPERPIPECONFIGSGIXPROC __glewXQueryHyperpipeConfigSGIX = NULL; -PFNGLXQUERYHYPERPIPENETWORKSGIXPROC __glewXQueryHyperpipeNetworkSGIX = NULL; - -PFNGLXCREATEGLXPBUFFERSGIXPROC __glewXCreateGLXPbufferSGIX = NULL; -PFNGLXDESTROYGLXPBUFFERSGIXPROC __glewXDestroyGLXPbufferSGIX = NULL; -PFNGLXGETSELECTEDEVENTSGIXPROC __glewXGetSelectedEventSGIX = NULL; -PFNGLXQUERYGLXPBUFFERSGIXPROC __glewXQueryGLXPbufferSGIX = NULL; -PFNGLXSELECTEVENTSGIXPROC __glewXSelectEventSGIX = NULL; - -PFNGLXBINDSWAPBARRIERSGIXPROC __glewXBindSwapBarrierSGIX = NULL; -PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC __glewXQueryMaxSwapBarriersSGIX = NULL; - -PFNGLXJOINSWAPGROUPSGIXPROC __glewXJoinSwapGroupSGIX = NULL; - -PFNGLXBINDCHANNELTOWINDOWSGIXPROC __glewXBindChannelToWindowSGIX = NULL; -PFNGLXCHANNELRECTSGIXPROC __glewXChannelRectSGIX = NULL; -PFNGLXCHANNELRECTSYNCSGIXPROC __glewXChannelRectSyncSGIX = NULL; -PFNGLXQUERYCHANNELDELTASSGIXPROC __glewXQueryChannelDeltasSGIX = NULL; -PFNGLXQUERYCHANNELRECTSGIXPROC __glewXQueryChannelRectSGIX = NULL; - -PFNGLXCUSHIONSGIPROC __glewXCushionSGI = NULL; - -PFNGLXGETCURRENTREADDRAWABLESGIPROC __glewXGetCurrentReadDrawableSGI = NULL; -PFNGLXMAKECURRENTREADSGIPROC __glewXMakeCurrentReadSGI = NULL; - -PFNGLXSWAPINTERVALSGIPROC __glewXSwapIntervalSGI = NULL; - -PFNGLXGETVIDEOSYNCSGIPROC __glewXGetVideoSyncSGI = NULL; -PFNGLXWAITVIDEOSYNCSGIPROC __glewXWaitVideoSyncSGI = NULL; - -PFNGLXGETTRANSPARENTINDEXSUNPROC __glewXGetTransparentIndexSUN = NULL; - -PFNGLXGETVIDEORESIZESUNPROC __glewXGetVideoResizeSUN = NULL; -PFNGLXVIDEORESIZESUNPROC __glewXVideoResizeSUN = NULL; - -#if !defined(GLEW_MX) - -GLboolean __GLXEW_VERSION_1_0 = GL_FALSE; -GLboolean __GLXEW_VERSION_1_1 = GL_FALSE; -GLboolean __GLXEW_VERSION_1_2 = GL_FALSE; -GLboolean __GLXEW_VERSION_1_3 = GL_FALSE; -GLboolean __GLXEW_VERSION_1_4 = GL_FALSE; -GLboolean __GLXEW_3DFX_multisample = GL_FALSE; -GLboolean __GLXEW_ARB_create_context = GL_FALSE; -GLboolean __GLXEW_ARB_fbconfig_float = GL_FALSE; -GLboolean __GLXEW_ARB_framebuffer_sRGB = GL_FALSE; -GLboolean __GLXEW_ARB_get_proc_address = GL_FALSE; -GLboolean __GLXEW_ARB_multisample = GL_FALSE; -GLboolean __GLXEW_ATI_pixel_format_float = GL_FALSE; -GLboolean __GLXEW_ATI_render_texture = GL_FALSE; -GLboolean __GLXEW_EXT_fbconfig_packed_float = GL_FALSE; -GLboolean __GLXEW_EXT_framebuffer_sRGB = GL_FALSE; -GLboolean __GLXEW_EXT_import_context = GL_FALSE; -GLboolean __GLXEW_EXT_scene_marker = GL_FALSE; -GLboolean __GLXEW_EXT_texture_from_pixmap = GL_FALSE; -GLboolean __GLXEW_EXT_visual_info = GL_FALSE; -GLboolean __GLXEW_EXT_visual_rating = GL_FALSE; -GLboolean __GLXEW_MESA_agp_offset = GL_FALSE; -GLboolean __GLXEW_MESA_copy_sub_buffer = GL_FALSE; -GLboolean __GLXEW_MESA_pixmap_colormap = GL_FALSE; -GLboolean __GLXEW_MESA_release_buffers = GL_FALSE; -GLboolean __GLXEW_MESA_set_3dfx_mode = GL_FALSE; -GLboolean __GLXEW_NV_float_buffer = GL_FALSE; -GLboolean __GLXEW_NV_present_video = GL_FALSE; -GLboolean __GLXEW_NV_swap_group = GL_FALSE; -GLboolean __GLXEW_NV_vertex_array_range = GL_FALSE; -GLboolean __GLXEW_NV_video_output = GL_FALSE; -GLboolean __GLXEW_OML_swap_method = GL_FALSE; -#ifdef GLX_OML_sync_control -GLboolean __GLXEW_OML_sync_control = GL_FALSE; -#endif -GLboolean __GLXEW_SGIS_blended_overlay = GL_FALSE; -GLboolean __GLXEW_SGIS_color_range = GL_FALSE; -GLboolean __GLXEW_SGIS_multisample = GL_FALSE; -GLboolean __GLXEW_SGIS_shared_multisample = GL_FALSE; -GLboolean __GLXEW_SGIX_fbconfig = GL_FALSE; -GLboolean __GLXEW_SGIX_hyperpipe = GL_FALSE; -GLboolean __GLXEW_SGIX_pbuffer = GL_FALSE; -GLboolean __GLXEW_SGIX_swap_barrier = GL_FALSE; -GLboolean __GLXEW_SGIX_swap_group = GL_FALSE; -GLboolean __GLXEW_SGIX_video_resize = GL_FALSE; -GLboolean __GLXEW_SGIX_visual_select_group = GL_FALSE; -GLboolean __GLXEW_SGI_cushion = GL_FALSE; -GLboolean __GLXEW_SGI_make_current_read = GL_FALSE; -GLboolean __GLXEW_SGI_swap_control = GL_FALSE; -GLboolean __GLXEW_SGI_video_sync = GL_FALSE; -GLboolean __GLXEW_SUN_get_transparent_index = GL_FALSE; -GLboolean __GLXEW_SUN_video_resize = GL_FALSE; - -#endif /* !GLEW_MX */ - -#ifdef GLX_VERSION_1_2 - -static GLboolean _glewInit_GLX_VERSION_1_2 (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetCurrentDisplay = (PFNGLXGETCURRENTDISPLAYPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentDisplay")) == NULL) || r; - - return r; -} - -#endif /* GLX_VERSION_1_2 */ - -#ifdef GLX_VERSION_1_3 - -static GLboolean _glewInit_GLX_VERSION_1_3 (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfig")) == NULL) || r; - r = ((glXCreateNewContext = (PFNGLXCREATENEWCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXCreateNewContext")) == NULL) || r; - r = ((glXCreatePbuffer = (PFNGLXCREATEPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXCreatePbuffer")) == NULL) || r; - r = ((glXCreatePixmap = (PFNGLXCREATEPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXCreatePixmap")) == NULL) || r; - r = ((glXCreateWindow = (PFNGLXCREATEWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXCreateWindow")) == NULL) || r; - r = ((glXDestroyPbuffer = (PFNGLXDESTROYPBUFFERPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPbuffer")) == NULL) || r; - r = ((glXDestroyPixmap = (PFNGLXDESTROYPIXMAPPROC)glewGetProcAddress((const GLubyte*)"glXDestroyPixmap")) == NULL) || r; - r = ((glXDestroyWindow = (PFNGLXDESTROYWINDOWPROC)glewGetProcAddress((const GLubyte*)"glXDestroyWindow")) == NULL) || r; - r = ((glXGetCurrentReadDrawable = (PFNGLXGETCURRENTREADDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawable")) == NULL) || r; - r = ((glXGetFBConfigAttrib = (PFNGLXGETFBCONFIGATTRIBPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttrib")) == NULL) || r; - r = ((glXGetFBConfigs = (PFNGLXGETFBCONFIGSPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigs")) == NULL) || r; - r = ((glXGetSelectedEvent = (PFNGLXGETSELECTEDEVENTPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEvent")) == NULL) || r; - r = ((glXGetVisualFromFBConfig = (PFNGLXGETVISUALFROMFBCONFIGPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfig")) == NULL) || r; - r = ((glXMakeContextCurrent = (PFNGLXMAKECONTEXTCURRENTPROC)glewGetProcAddress((const GLubyte*)"glXMakeContextCurrent")) == NULL) || r; - r = ((glXQueryContext = (PFNGLXQUERYCONTEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContext")) == NULL) || r; - r = ((glXQueryDrawable = (PFNGLXQUERYDRAWABLEPROC)glewGetProcAddress((const GLubyte*)"glXQueryDrawable")) == NULL) || r; - r = ((glXSelectEvent = (PFNGLXSELECTEVENTPROC)glewGetProcAddress((const GLubyte*)"glXSelectEvent")) == NULL) || r; - - return r; -} - -#endif /* GLX_VERSION_1_3 */ - -#ifdef GLX_VERSION_1_4 - -#endif /* GLX_VERSION_1_4 */ - -#ifdef GLX_3DFX_multisample - -#endif /* GLX_3DFX_multisample */ - -#ifdef GLX_ARB_create_context - -static GLboolean _glewInit_GLX_ARB_create_context (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXCreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB")) == NULL) || r; - - return r; -} - -#endif /* GLX_ARB_create_context */ - -#ifdef GLX_ARB_fbconfig_float - -#endif /* GLX_ARB_fbconfig_float */ - -#ifdef GLX_ARB_framebuffer_sRGB - -#endif /* GLX_ARB_framebuffer_sRGB */ - -#ifdef GLX_ARB_get_proc_address - -#endif /* GLX_ARB_get_proc_address */ - -#ifdef GLX_ARB_multisample - -#endif /* GLX_ARB_multisample */ - -#ifdef GLX_ATI_pixel_format_float - -#endif /* GLX_ATI_pixel_format_float */ - -#ifdef GLX_ATI_render_texture - -static GLboolean _glewInit_GLX_ATI_render_texture (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindTexImageATI = (PFNGLXBINDTEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageATI")) == NULL) || r; - r = ((glXDrawableAttribATI = (PFNGLXDRAWABLEATTRIBATIPROC)glewGetProcAddress((const GLubyte*)"glXDrawableAttribATI")) == NULL) || r; - r = ((glXReleaseTexImageATI = (PFNGLXRELEASETEXIMAGEATIPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageATI")) == NULL) || r; - - return r; -} - -#endif /* GLX_ATI_render_texture */ - -#ifdef GLX_EXT_fbconfig_packed_float - -#endif /* GLX_EXT_fbconfig_packed_float */ - -#ifdef GLX_EXT_framebuffer_sRGB - -#endif /* GLX_EXT_framebuffer_sRGB */ - -#ifdef GLX_EXT_import_context - -static GLboolean _glewInit_GLX_EXT_import_context (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXFreeContextEXT = (PFNGLXFREECONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXFreeContextEXT")) == NULL) || r; - r = ((glXGetContextIDEXT = (PFNGLXGETCONTEXTIDEXTPROC)glewGetProcAddress((const GLubyte*)"glXGetContextIDEXT")) == NULL) || r; - r = ((glXImportContextEXT = (PFNGLXIMPORTCONTEXTEXTPROC)glewGetProcAddress((const GLubyte*)"glXImportContextEXT")) == NULL) || r; - r = ((glXQueryContextInfoEXT = (PFNGLXQUERYCONTEXTINFOEXTPROC)glewGetProcAddress((const GLubyte*)"glXQueryContextInfoEXT")) == NULL) || r; - - return r; -} - -#endif /* GLX_EXT_import_context */ - -#ifdef GLX_EXT_scene_marker - -#endif /* GLX_EXT_scene_marker */ - -#ifdef GLX_EXT_texture_from_pixmap - -static GLboolean _glewInit_GLX_EXT_texture_from_pixmap (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXBindTexImageEXT")) == NULL) || r; - r = ((glXReleaseTexImageEXT = (PFNGLXRELEASETEXIMAGEEXTPROC)glewGetProcAddress((const GLubyte*)"glXReleaseTexImageEXT")) == NULL) || r; - - return r; -} - -#endif /* GLX_EXT_texture_from_pixmap */ - -#ifdef GLX_EXT_visual_info - -#endif /* GLX_EXT_visual_info */ - -#ifdef GLX_EXT_visual_rating - -#endif /* GLX_EXT_visual_rating */ - -#ifdef GLX_MESA_agp_offset - -static GLboolean _glewInit_GLX_MESA_agp_offset (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetAGPOffsetMESA = (PFNGLXGETAGPOFFSETMESAPROC)glewGetProcAddress((const GLubyte*)"glXGetAGPOffsetMESA")) == NULL) || r; - - return r; -} - -#endif /* GLX_MESA_agp_offset */ - -#ifdef GLX_MESA_copy_sub_buffer - -static GLboolean _glewInit_GLX_MESA_copy_sub_buffer (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXCopySubBufferMESA = (PFNGLXCOPYSUBBUFFERMESAPROC)glewGetProcAddress((const GLubyte*)"glXCopySubBufferMESA")) == NULL) || r; - - return r; -} - -#endif /* GLX_MESA_copy_sub_buffer */ - -#ifdef GLX_MESA_pixmap_colormap - -static GLboolean _glewInit_GLX_MESA_pixmap_colormap (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXCreateGLXPixmapMESA = (PFNGLXCREATEGLXPIXMAPMESAPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapMESA")) == NULL) || r; - - return r; -} - -#endif /* GLX_MESA_pixmap_colormap */ - -#ifdef GLX_MESA_release_buffers - -static GLboolean _glewInit_GLX_MESA_release_buffers (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXReleaseBuffersMESA = (PFNGLXRELEASEBUFFERSMESAPROC)glewGetProcAddress((const GLubyte*)"glXReleaseBuffersMESA")) == NULL) || r; - - return r; -} - -#endif /* GLX_MESA_release_buffers */ - -#ifdef GLX_MESA_set_3dfx_mode - -static GLboolean _glewInit_GLX_MESA_set_3dfx_mode (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXSet3DfxModeMESA = (PFNGLXSET3DFXMODEMESAPROC)glewGetProcAddress((const GLubyte*)"glXSet3DfxModeMESA")) == NULL) || r; - - return r; -} - -#endif /* GLX_MESA_set_3dfx_mode */ - -#ifdef GLX_NV_float_buffer - -#endif /* GLX_NV_float_buffer */ - -#ifdef GLX_NV_present_video - -static GLboolean _glewInit_GLX_NV_present_video (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindVideoDeviceNV = (PFNGLXBINDVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoDeviceNV")) == NULL) || r; - r = ((glXEnumerateVideoDevicesNV = (PFNGLXENUMERATEVIDEODEVICESNVPROC)glewGetProcAddress((const GLubyte*)"glXEnumerateVideoDevicesNV")) == NULL) || r; - - return r; -} - -#endif /* GLX_NV_present_video */ - -#ifdef GLX_NV_swap_group - -static GLboolean _glewInit_GLX_NV_swap_group (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindSwapBarrierNV = (PFNGLXBINDSWAPBARRIERNVPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierNV")) == NULL) || r; - r = ((glXJoinSwapGroupNV = (PFNGLXJOINSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupNV")) == NULL) || r; - r = ((glXQueryFrameCountNV = (PFNGLXQUERYFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryFrameCountNV")) == NULL) || r; - r = ((glXQueryMaxSwapGroupsNV = (PFNGLXQUERYMAXSWAPGROUPSNVPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapGroupsNV")) == NULL) || r; - r = ((glXQuerySwapGroupNV = (PFNGLXQUERYSWAPGROUPNVPROC)glewGetProcAddress((const GLubyte*)"glXQuerySwapGroupNV")) == NULL) || r; - r = ((glXResetFrameCountNV = (PFNGLXRESETFRAMECOUNTNVPROC)glewGetProcAddress((const GLubyte*)"glXResetFrameCountNV")) == NULL) || r; - - return r; -} - -#endif /* GLX_NV_swap_group */ - -#ifdef GLX_NV_vertex_array_range - -static GLboolean _glewInit_GLX_NV_vertex_array_range (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXAllocateMemoryNV = (PFNGLXALLOCATEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXAllocateMemoryNV")) == NULL) || r; - r = ((glXFreeMemoryNV = (PFNGLXFREEMEMORYNVPROC)glewGetProcAddress((const GLubyte*)"glXFreeMemoryNV")) == NULL) || r; - - return r; -} - -#endif /* GLX_NV_vertex_array_range */ - -#ifdef GLX_NV_video_output - -static GLboolean _glewInit_GLX_NV_video_output (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindVideoImageNV = (PFNGLXBINDVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXBindVideoImageNV")) == NULL) || r; - r = ((glXGetVideoDeviceNV = (PFNGLXGETVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoDeviceNV")) == NULL) || r; - r = ((glXGetVideoInfoNV = (PFNGLXGETVIDEOINFONVPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoInfoNV")) == NULL) || r; - r = ((glXReleaseVideoDeviceNV = (PFNGLXRELEASEVIDEODEVICENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoDeviceNV")) == NULL) || r; - r = ((glXReleaseVideoImageNV = (PFNGLXRELEASEVIDEOIMAGENVPROC)glewGetProcAddress((const GLubyte*)"glXReleaseVideoImageNV")) == NULL) || r; - r = ((glXSendPbufferToVideoNV = (PFNGLXSENDPBUFFERTOVIDEONVPROC)glewGetProcAddress((const GLubyte*)"glXSendPbufferToVideoNV")) == NULL) || r; - - return r; -} - -#endif /* GLX_NV_video_output */ - -#ifdef GLX_OML_swap_method - -#endif /* GLX_OML_swap_method */ - -#if defined(GLX_OML_sync_control) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -#include - -static GLboolean _glewInit_GLX_OML_sync_control (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetMscRateOML = (PFNGLXGETMSCRATEOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetMscRateOML")) == NULL) || r; - r = ((glXGetSyncValuesOML = (PFNGLXGETSYNCVALUESOMLPROC)glewGetProcAddress((const GLubyte*)"glXGetSyncValuesOML")) == NULL) || r; - r = ((glXSwapBuffersMscOML = (PFNGLXSWAPBUFFERSMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXSwapBuffersMscOML")) == NULL) || r; - r = ((glXWaitForMscOML = (PFNGLXWAITFORMSCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForMscOML")) == NULL) || r; - r = ((glXWaitForSbcOML = (PFNGLXWAITFORSBCOMLPROC)glewGetProcAddress((const GLubyte*)"glXWaitForSbcOML")) == NULL) || r; - - return r; -} - -#endif /* GLX_OML_sync_control */ - -#ifdef GLX_SGIS_blended_overlay - -#endif /* GLX_SGIS_blended_overlay */ - -#ifdef GLX_SGIS_color_range - -#endif /* GLX_SGIS_color_range */ - -#ifdef GLX_SGIS_multisample - -#endif /* GLX_SGIS_multisample */ - -#ifdef GLX_SGIS_shared_multisample - -#endif /* GLX_SGIS_shared_multisample */ - -#ifdef GLX_SGIX_fbconfig - -static GLboolean _glewInit_GLX_SGIX_fbconfig (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXChooseFBConfigSGIX = (PFNGLXCHOOSEFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChooseFBConfigSGIX")) == NULL) || r; - r = ((glXCreateContextWithConfigSGIX = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateContextWithConfigSGIX")) == NULL) || r; - r = ((glXCreateGLXPixmapWithConfigSGIX = (PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPixmapWithConfigSGIX")) == NULL) || r; - r = ((glXGetFBConfigAttribSGIX = (PFNGLXGETFBCONFIGATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigAttribSGIX")) == NULL) || r; - r = ((glXGetFBConfigFromVisualSGIX = (PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetFBConfigFromVisualSGIX")) == NULL) || r; - r = ((glXGetVisualFromFBConfigSGIX = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetVisualFromFBConfigSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_fbconfig */ - -#ifdef GLX_SGIX_hyperpipe - -static GLboolean _glewInit_GLX_SGIX_hyperpipe (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindHyperpipeSGIX = (PFNGLXBINDHYPERPIPESGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindHyperpipeSGIX")) == NULL) || r; - r = ((glXDestroyHyperpipeConfigSGIX = (PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyHyperpipeConfigSGIX")) == NULL) || r; - r = ((glXHyperpipeAttribSGIX = (PFNGLXHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeAttribSGIX")) == NULL) || r; - r = ((glXHyperpipeConfigSGIX = (PFNGLXHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXHyperpipeConfigSGIX")) == NULL) || r; - r = ((glXQueryHyperpipeAttribSGIX = (PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeAttribSGIX")) == NULL) || r; - r = ((glXQueryHyperpipeBestAttribSGIX = (PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeBestAttribSGIX")) == NULL) || r; - r = ((glXQueryHyperpipeConfigSGIX = (PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeConfigSGIX")) == NULL) || r; - r = ((glXQueryHyperpipeNetworkSGIX = (PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryHyperpipeNetworkSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_hyperpipe */ - -#ifdef GLX_SGIX_pbuffer - -static GLboolean _glewInit_GLX_SGIX_pbuffer (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXCreateGLXPbufferSGIX = (PFNGLXCREATEGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXCreateGLXPbufferSGIX")) == NULL) || r; - r = ((glXDestroyGLXPbufferSGIX = (PFNGLXDESTROYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXDestroyGLXPbufferSGIX")) == NULL) || r; - r = ((glXGetSelectedEventSGIX = (PFNGLXGETSELECTEDEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXGetSelectedEventSGIX")) == NULL) || r; - r = ((glXQueryGLXPbufferSGIX = (PFNGLXQUERYGLXPBUFFERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryGLXPbufferSGIX")) == NULL) || r; - r = ((glXSelectEventSGIX = (PFNGLXSELECTEVENTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXSelectEventSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_pbuffer */ - -#ifdef GLX_SGIX_swap_barrier - -static GLboolean _glewInit_GLX_SGIX_swap_barrier (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindSwapBarrierSGIX = (PFNGLXBINDSWAPBARRIERSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindSwapBarrierSGIX")) == NULL) || r; - r = ((glXQueryMaxSwapBarriersSGIX = (PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryMaxSwapBarriersSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_swap_barrier */ - -#ifdef GLX_SGIX_swap_group - -static GLboolean _glewInit_GLX_SGIX_swap_group (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXJoinSwapGroupSGIX = (PFNGLXJOINSWAPGROUPSGIXPROC)glewGetProcAddress((const GLubyte*)"glXJoinSwapGroupSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_swap_group */ - -#ifdef GLX_SGIX_video_resize - -static GLboolean _glewInit_GLX_SGIX_video_resize (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXBindChannelToWindowSGIX = (PFNGLXBINDCHANNELTOWINDOWSGIXPROC)glewGetProcAddress((const GLubyte*)"glXBindChannelToWindowSGIX")) == NULL) || r; - r = ((glXChannelRectSGIX = (PFNGLXCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSGIX")) == NULL) || r; - r = ((glXChannelRectSyncSGIX = (PFNGLXCHANNELRECTSYNCSGIXPROC)glewGetProcAddress((const GLubyte*)"glXChannelRectSyncSGIX")) == NULL) || r; - r = ((glXQueryChannelDeltasSGIX = (PFNGLXQUERYCHANNELDELTASSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelDeltasSGIX")) == NULL) || r; - r = ((glXQueryChannelRectSGIX = (PFNGLXQUERYCHANNELRECTSGIXPROC)glewGetProcAddress((const GLubyte*)"glXQueryChannelRectSGIX")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGIX_video_resize */ - -#ifdef GLX_SGIX_visual_select_group - -#endif /* GLX_SGIX_visual_select_group */ - -#ifdef GLX_SGI_cushion - -static GLboolean _glewInit_GLX_SGI_cushion (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXCushionSGI = (PFNGLXCUSHIONSGIPROC)glewGetProcAddress((const GLubyte*)"glXCushionSGI")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGI_cushion */ - -#ifdef GLX_SGI_make_current_read - -static GLboolean _glewInit_GLX_SGI_make_current_read (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetCurrentReadDrawableSGI = (PFNGLXGETCURRENTREADDRAWABLESGIPROC)glewGetProcAddress((const GLubyte*)"glXGetCurrentReadDrawableSGI")) == NULL) || r; - r = ((glXMakeCurrentReadSGI = (PFNGLXMAKECURRENTREADSGIPROC)glewGetProcAddress((const GLubyte*)"glXMakeCurrentReadSGI")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGI_make_current_read */ - -#ifdef GLX_SGI_swap_control - -static GLboolean _glewInit_GLX_SGI_swap_control (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)glewGetProcAddress((const GLubyte*)"glXSwapIntervalSGI")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGI_swap_control */ - -#ifdef GLX_SGI_video_sync - -static GLboolean _glewInit_GLX_SGI_video_sync (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetVideoSyncSGI = (PFNGLXGETVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoSyncSGI")) == NULL) || r; - r = ((glXWaitVideoSyncSGI = (PFNGLXWAITVIDEOSYNCSGIPROC)glewGetProcAddress((const GLubyte*)"glXWaitVideoSyncSGI")) == NULL) || r; - - return r; -} - -#endif /* GLX_SGI_video_sync */ - -#ifdef GLX_SUN_get_transparent_index - -static GLboolean _glewInit_GLX_SUN_get_transparent_index (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetTransparentIndexSUN = (PFNGLXGETTRANSPARENTINDEXSUNPROC)glewGetProcAddress((const GLubyte*)"glXGetTransparentIndexSUN")) == NULL) || r; - - return r; -} - -#endif /* GLX_SUN_get_transparent_index */ - -#ifdef GLX_SUN_video_resize - -static GLboolean _glewInit_GLX_SUN_video_resize (GLXEW_CONTEXT_ARG_DEF_INIT) -{ - GLboolean r = GL_FALSE; - - r = ((glXGetVideoResizeSUN = (PFNGLXGETVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXGetVideoResizeSUN")) == NULL) || r; - r = ((glXVideoResizeSUN = (PFNGLXVIDEORESIZESUNPROC)glewGetProcAddress((const GLubyte*)"glXVideoResizeSUN")) == NULL) || r; - - return r; -} - -#endif /* GLX_SUN_video_resize */ - -/* ------------------------------------------------------------------------ */ - -GLboolean glxewGetExtension (const char* name) -{ - GLubyte* p; - GLubyte* end; - GLuint len = _glewStrLen((const GLubyte*)name); -/* if (glXQueryExtensionsString == NULL || glXGetCurrentDisplay == NULL) return GL_FALSE; */ -/* p = (GLubyte*)glXQueryExtensionsString(glXGetCurrentDisplay(), DefaultScreen(glXGetCurrentDisplay())); */ - if (glXGetClientString == NULL || glXGetCurrentDisplay == NULL) return GL_FALSE; - p = (GLubyte*)glXGetClientString(glXGetCurrentDisplay(), GLX_EXTENSIONS); - if (0 == p) return GL_FALSE; - end = p + _glewStrLen(p); - while (p < end) - { - GLuint n = _glewStrCLen(p, ' '); - if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; - p += n+1; - } - return GL_FALSE; -} - -static GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST) -{ - int major, minor; - - /* initialize core GLX 1.2 */ - if (_glewInit_GLX_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT)) return GLEW_ERROR_GLX_VERSION_11_ONLY; - - if (glXGetCurrentDisplay() == NULL) - return GLEW_OK; - - /* initialize flags */ - CONST_CAST(GLXEW_VERSION_1_0) = GL_TRUE; - CONST_CAST(GLXEW_VERSION_1_1) = GL_TRUE; - CONST_CAST(GLXEW_VERSION_1_2) = GL_TRUE; - CONST_CAST(GLXEW_VERSION_1_3) = GL_TRUE; - CONST_CAST(GLXEW_VERSION_1_4) = GL_TRUE; - /* query GLX version */ - glXQueryVersion(glXGetCurrentDisplay(), &major, &minor); - if (major == 1 && minor <= 3) - { - switch (minor) - { - case 3: - CONST_CAST(GLXEW_VERSION_1_4) = GL_FALSE; - break; - case 2: - CONST_CAST(GLXEW_VERSION_1_4) = GL_FALSE; - CONST_CAST(GLXEW_VERSION_1_3) = GL_FALSE; - break; - default: - return GLEW_ERROR_GLX_VERSION_11_ONLY; - break; - } - } - /* initialize extensions */ -#ifdef GLX_VERSION_1_3 - if (glewExperimental || GLXEW_VERSION_1_3) CONST_CAST(GLXEW_VERSION_1_3) = !_glewInit_GLX_VERSION_1_3(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_VERSION_1_3 */ -#ifdef GLX_3DFX_multisample - CONST_CAST(GLXEW_3DFX_multisample) = glxewGetExtension("GLX_3DFX_multisample"); -#endif /* GLX_3DFX_multisample */ -#ifdef GLX_ARB_create_context - CONST_CAST(GLXEW_ARB_create_context) = glxewGetExtension("GLX_ARB_create_context"); - if (glewExperimental || GLXEW_ARB_create_context) CONST_CAST(GLXEW_ARB_create_context) = !_glewInit_GLX_ARB_create_context(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_ARB_create_context */ -#ifdef GLX_ARB_fbconfig_float - CONST_CAST(GLXEW_ARB_fbconfig_float) = glxewGetExtension("GLX_ARB_fbconfig_float"); -#endif /* GLX_ARB_fbconfig_float */ -#ifdef GLX_ARB_framebuffer_sRGB - CONST_CAST(GLXEW_ARB_framebuffer_sRGB) = glxewGetExtension("GLX_ARB_framebuffer_sRGB"); -#endif /* GLX_ARB_framebuffer_sRGB */ -#ifdef GLX_ARB_get_proc_address - CONST_CAST(GLXEW_ARB_get_proc_address) = glxewGetExtension("GLX_ARB_get_proc_address"); -#endif /* GLX_ARB_get_proc_address */ -#ifdef GLX_ARB_multisample - CONST_CAST(GLXEW_ARB_multisample) = glxewGetExtension("GLX_ARB_multisample"); -#endif /* GLX_ARB_multisample */ -#ifdef GLX_ATI_pixel_format_float - CONST_CAST(GLXEW_ATI_pixel_format_float) = glxewGetExtension("GLX_ATI_pixel_format_float"); -#endif /* GLX_ATI_pixel_format_float */ -#ifdef GLX_ATI_render_texture - CONST_CAST(GLXEW_ATI_render_texture) = glxewGetExtension("GLX_ATI_render_texture"); - if (glewExperimental || GLXEW_ATI_render_texture) CONST_CAST(GLXEW_ATI_render_texture) = !_glewInit_GLX_ATI_render_texture(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_ATI_render_texture */ -#ifdef GLX_EXT_fbconfig_packed_float - CONST_CAST(GLXEW_EXT_fbconfig_packed_float) = glxewGetExtension("GLX_EXT_fbconfig_packed_float"); -#endif /* GLX_EXT_fbconfig_packed_float */ -#ifdef GLX_EXT_framebuffer_sRGB - CONST_CAST(GLXEW_EXT_framebuffer_sRGB) = glxewGetExtension("GLX_EXT_framebuffer_sRGB"); -#endif /* GLX_EXT_framebuffer_sRGB */ -#ifdef GLX_EXT_import_context - CONST_CAST(GLXEW_EXT_import_context) = glxewGetExtension("GLX_EXT_import_context"); - if (glewExperimental || GLXEW_EXT_import_context) CONST_CAST(GLXEW_EXT_import_context) = !_glewInit_GLX_EXT_import_context(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_EXT_import_context */ -#ifdef GLX_EXT_scene_marker - CONST_CAST(GLXEW_EXT_scene_marker) = glxewGetExtension("GLX_EXT_scene_marker"); -#endif /* GLX_EXT_scene_marker */ -#ifdef GLX_EXT_texture_from_pixmap - CONST_CAST(GLXEW_EXT_texture_from_pixmap) = glxewGetExtension("GLX_EXT_texture_from_pixmap"); - if (glewExperimental || GLXEW_EXT_texture_from_pixmap) CONST_CAST(GLXEW_EXT_texture_from_pixmap) = !_glewInit_GLX_EXT_texture_from_pixmap(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_EXT_texture_from_pixmap */ -#ifdef GLX_EXT_visual_info - CONST_CAST(GLXEW_EXT_visual_info) = glxewGetExtension("GLX_EXT_visual_info"); -#endif /* GLX_EXT_visual_info */ -#ifdef GLX_EXT_visual_rating - CONST_CAST(GLXEW_EXT_visual_rating) = glxewGetExtension("GLX_EXT_visual_rating"); -#endif /* GLX_EXT_visual_rating */ -#ifdef GLX_MESA_agp_offset - CONST_CAST(GLXEW_MESA_agp_offset) = glxewGetExtension("GLX_MESA_agp_offset"); - if (glewExperimental || GLXEW_MESA_agp_offset) CONST_CAST(GLXEW_MESA_agp_offset) = !_glewInit_GLX_MESA_agp_offset(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_MESA_agp_offset */ -#ifdef GLX_MESA_copy_sub_buffer - CONST_CAST(GLXEW_MESA_copy_sub_buffer) = glxewGetExtension("GLX_MESA_copy_sub_buffer"); - if (glewExperimental || GLXEW_MESA_copy_sub_buffer) CONST_CAST(GLXEW_MESA_copy_sub_buffer) = !_glewInit_GLX_MESA_copy_sub_buffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_MESA_copy_sub_buffer */ -#ifdef GLX_MESA_pixmap_colormap - CONST_CAST(GLXEW_MESA_pixmap_colormap) = glxewGetExtension("GLX_MESA_pixmap_colormap"); - if (glewExperimental || GLXEW_MESA_pixmap_colormap) CONST_CAST(GLXEW_MESA_pixmap_colormap) = !_glewInit_GLX_MESA_pixmap_colormap(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_MESA_pixmap_colormap */ -#ifdef GLX_MESA_release_buffers - CONST_CAST(GLXEW_MESA_release_buffers) = glxewGetExtension("GLX_MESA_release_buffers"); - if (glewExperimental || GLXEW_MESA_release_buffers) CONST_CAST(GLXEW_MESA_release_buffers) = !_glewInit_GLX_MESA_release_buffers(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_MESA_release_buffers */ -#ifdef GLX_MESA_set_3dfx_mode - CONST_CAST(GLXEW_MESA_set_3dfx_mode) = glxewGetExtension("GLX_MESA_set_3dfx_mode"); - if (glewExperimental || GLXEW_MESA_set_3dfx_mode) CONST_CAST(GLXEW_MESA_set_3dfx_mode) = !_glewInit_GLX_MESA_set_3dfx_mode(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_MESA_set_3dfx_mode */ -#ifdef GLX_NV_float_buffer - CONST_CAST(GLXEW_NV_float_buffer) = glxewGetExtension("GLX_NV_float_buffer"); -#endif /* GLX_NV_float_buffer */ -#ifdef GLX_NV_present_video - CONST_CAST(GLXEW_NV_present_video) = glxewGetExtension("GLX_NV_present_video"); - if (glewExperimental || GLXEW_NV_present_video) CONST_CAST(GLXEW_NV_present_video) = !_glewInit_GLX_NV_present_video(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_NV_present_video */ -#ifdef GLX_NV_swap_group - CONST_CAST(GLXEW_NV_swap_group) = glxewGetExtension("GLX_NV_swap_group"); - if (glewExperimental || GLXEW_NV_swap_group) CONST_CAST(GLXEW_NV_swap_group) = !_glewInit_GLX_NV_swap_group(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_NV_swap_group */ -#ifdef GLX_NV_vertex_array_range - CONST_CAST(GLXEW_NV_vertex_array_range) = glxewGetExtension("GLX_NV_vertex_array_range"); - if (glewExperimental || GLXEW_NV_vertex_array_range) CONST_CAST(GLXEW_NV_vertex_array_range) = !_glewInit_GLX_NV_vertex_array_range(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_NV_vertex_array_range */ -#ifdef GLX_NV_video_output - CONST_CAST(GLXEW_NV_video_output) = glxewGetExtension("GLX_NV_video_output"); - if (glewExperimental || GLXEW_NV_video_output) CONST_CAST(GLXEW_NV_video_output) = !_glewInit_GLX_NV_video_output(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_NV_video_output */ -#ifdef GLX_OML_swap_method - CONST_CAST(GLXEW_OML_swap_method) = glxewGetExtension("GLX_OML_swap_method"); -#endif /* GLX_OML_swap_method */ -#if defined(GLX_OML_sync_control) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -#include - CONST_CAST(GLXEW_OML_sync_control) = glxewGetExtension("GLX_OML_sync_control"); - if (glewExperimental || GLXEW_OML_sync_control) CONST_CAST(GLXEW_OML_sync_control) = !_glewInit_GLX_OML_sync_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_OML_sync_control */ -#ifdef GLX_SGIS_blended_overlay - CONST_CAST(GLXEW_SGIS_blended_overlay) = glxewGetExtension("GLX_SGIS_blended_overlay"); -#endif /* GLX_SGIS_blended_overlay */ -#ifdef GLX_SGIS_color_range - CONST_CAST(GLXEW_SGIS_color_range) = glxewGetExtension("GLX_SGIS_color_range"); -#endif /* GLX_SGIS_color_range */ -#ifdef GLX_SGIS_multisample - CONST_CAST(GLXEW_SGIS_multisample) = glxewGetExtension("GLX_SGIS_multisample"); -#endif /* GLX_SGIS_multisample */ -#ifdef GLX_SGIS_shared_multisample - CONST_CAST(GLXEW_SGIS_shared_multisample) = glxewGetExtension("GLX_SGIS_shared_multisample"); -#endif /* GLX_SGIS_shared_multisample */ -#ifdef GLX_SGIX_fbconfig - CONST_CAST(GLXEW_SGIX_fbconfig) = glxewGetExtension("GLX_SGIX_fbconfig"); - if (glewExperimental || GLXEW_SGIX_fbconfig) CONST_CAST(GLXEW_SGIX_fbconfig) = !_glewInit_GLX_SGIX_fbconfig(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_fbconfig */ -#ifdef GLX_SGIX_hyperpipe - CONST_CAST(GLXEW_SGIX_hyperpipe) = glxewGetExtension("GLX_SGIX_hyperpipe"); - if (glewExperimental || GLXEW_SGIX_hyperpipe) CONST_CAST(GLXEW_SGIX_hyperpipe) = !_glewInit_GLX_SGIX_hyperpipe(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_hyperpipe */ -#ifdef GLX_SGIX_pbuffer - CONST_CAST(GLXEW_SGIX_pbuffer) = glxewGetExtension("GLX_SGIX_pbuffer"); - if (glewExperimental || GLXEW_SGIX_pbuffer) CONST_CAST(GLXEW_SGIX_pbuffer) = !_glewInit_GLX_SGIX_pbuffer(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_pbuffer */ -#ifdef GLX_SGIX_swap_barrier - CONST_CAST(GLXEW_SGIX_swap_barrier) = glxewGetExtension("GLX_SGIX_swap_barrier"); - if (glewExperimental || GLXEW_SGIX_swap_barrier) CONST_CAST(GLXEW_SGIX_swap_barrier) = !_glewInit_GLX_SGIX_swap_barrier(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_swap_barrier */ -#ifdef GLX_SGIX_swap_group - CONST_CAST(GLXEW_SGIX_swap_group) = glxewGetExtension("GLX_SGIX_swap_group"); - if (glewExperimental || GLXEW_SGIX_swap_group) CONST_CAST(GLXEW_SGIX_swap_group) = !_glewInit_GLX_SGIX_swap_group(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_swap_group */ -#ifdef GLX_SGIX_video_resize - CONST_CAST(GLXEW_SGIX_video_resize) = glxewGetExtension("GLX_SGIX_video_resize"); - if (glewExperimental || GLXEW_SGIX_video_resize) CONST_CAST(GLXEW_SGIX_video_resize) = !_glewInit_GLX_SGIX_video_resize(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGIX_video_resize */ -#ifdef GLX_SGIX_visual_select_group - CONST_CAST(GLXEW_SGIX_visual_select_group) = glxewGetExtension("GLX_SGIX_visual_select_group"); -#endif /* GLX_SGIX_visual_select_group */ -#ifdef GLX_SGI_cushion - CONST_CAST(GLXEW_SGI_cushion) = glxewGetExtension("GLX_SGI_cushion"); - if (glewExperimental || GLXEW_SGI_cushion) CONST_CAST(GLXEW_SGI_cushion) = !_glewInit_GLX_SGI_cushion(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGI_cushion */ -#ifdef GLX_SGI_make_current_read - CONST_CAST(GLXEW_SGI_make_current_read) = glxewGetExtension("GLX_SGI_make_current_read"); - if (glewExperimental || GLXEW_SGI_make_current_read) CONST_CAST(GLXEW_SGI_make_current_read) = !_glewInit_GLX_SGI_make_current_read(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGI_make_current_read */ -#ifdef GLX_SGI_swap_control - CONST_CAST(GLXEW_SGI_swap_control) = glxewGetExtension("GLX_SGI_swap_control"); - if (glewExperimental || GLXEW_SGI_swap_control) CONST_CAST(GLXEW_SGI_swap_control) = !_glewInit_GLX_SGI_swap_control(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGI_swap_control */ -#ifdef GLX_SGI_video_sync - CONST_CAST(GLXEW_SGI_video_sync) = glxewGetExtension("GLX_SGI_video_sync"); - if (glewExperimental || GLXEW_SGI_video_sync) CONST_CAST(GLXEW_SGI_video_sync) = !_glewInit_GLX_SGI_video_sync(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SGI_video_sync */ -#ifdef GLX_SUN_get_transparent_index - CONST_CAST(GLXEW_SUN_get_transparent_index) = glxewGetExtension("GLX_SUN_get_transparent_index"); - if (glewExperimental || GLXEW_SUN_get_transparent_index) CONST_CAST(GLXEW_SUN_get_transparent_index) = !_glewInit_GLX_SUN_get_transparent_index(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SUN_get_transparent_index */ -#ifdef GLX_SUN_video_resize - CONST_CAST(GLXEW_SUN_video_resize) = glxewGetExtension("GLX_SUN_video_resize"); - if (glewExperimental || GLXEW_SUN_video_resize) CONST_CAST(GLXEW_SUN_video_resize) = !_glewInit_GLX_SUN_video_resize(GLEW_CONTEXT_ARG_VAR_INIT); -#endif /* GLX_SUN_video_resize */ - - return GLEW_OK; -} - -#endif /* !__APPLE__ || GLEW_APPLE_GLX */ - -/* ------------------------------------------------------------------------ */ - -const GLubyte* glewGetErrorString (GLenum error) -{ - static const GLubyte* _glewErrorString[] = - { - (const GLubyte*)"No error", - (const GLubyte*)"Missing GL version", - (const GLubyte*)"GL 1.1 and up are not supported", - (const GLubyte*)"GLX 1.2 and up are not supported", - (const GLubyte*)"Unknown error" - }; - const int max_error = sizeof(_glewErrorString)/sizeof(*_glewErrorString) - 1; - return _glewErrorString[(int)error > max_error ? max_error : (int)error]; -} - -const GLubyte* glewGetString (GLenum name) -{ - static const GLubyte* _glewString[] = - { - (const GLubyte*)NULL, - (const GLubyte*)"1.5.1", - (const GLubyte*)"1", - (const GLubyte*)"5", - (const GLubyte*)"1" - }; - const int max_string = sizeof(_glewString)/sizeof(*_glewString) - 1; - return _glewString[(int)name > max_string ? 0 : (int)name]; -} - -/* ------------------------------------------------------------------------ */ - -GLboolean glewExperimental = GL_FALSE; - -#if !defined(GLEW_MX) - -#if defined(_WIN32) -extern GLenum wglewContextInit (void); -#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */ -extern GLenum glxewContextInit (void); -#endif /* _WIN32 */ - -GLenum glewInit (void) -{ - GLenum r; - if ( (r = glewContextInit()) ) return r; -#if defined(_WIN32) - return wglewContextInit(); -#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) /* _UNIX */ - return glxewContextInit(); -#else - return r; -#endif /* _WIN32 */ -} - -#endif /* !GLEW_MX */ -#ifdef GLEW_MX -GLboolean glewContextIsSupported (GLEWContext* ctx, const char* name) -#else -GLboolean glewIsSupported (const char* name) -#endif -{ - GLubyte* pos = (GLubyte*)name; - GLuint len = _glewStrLen(pos); - GLboolean ret = GL_TRUE; - while (ret && len > 0) - { - if (_glewStrSame1(&pos, &len, (const GLubyte*)"GL_", 3)) - { - if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8)) - { -#ifdef GL_VERSION_1_2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3)) - { - ret = GLEW_VERSION_1_2; - continue; - } -#endif -#ifdef GL_VERSION_1_3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3)) - { - ret = GLEW_VERSION_1_3; - continue; - } -#endif -#ifdef GL_VERSION_1_4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3)) - { - ret = GLEW_VERSION_1_4; - continue; - } -#endif -#ifdef GL_VERSION_1_5 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_5", 3)) - { - ret = GLEW_VERSION_1_5; - continue; - } -#endif -#ifdef GL_VERSION_2_0 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_0", 3)) - { - ret = GLEW_VERSION_2_0; - continue; - } -#endif -#ifdef GL_VERSION_2_1 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"2_1", 3)) - { - ret = GLEW_VERSION_2_1; - continue; - } -#endif -#ifdef GL_VERSION_3_0 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_0", 3)) - { - ret = GLEW_VERSION_3_0; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5)) - { -#ifdef GL_3DFX_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLEW_3DFX_multisample; - continue; - } -#endif -#ifdef GL_3DFX_tbuffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"tbuffer", 7)) - { - ret = GLEW_3DFX_tbuffer; - continue; - } -#endif -#ifdef GL_3DFX_texture_compression_FXT1 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_FXT1", 24)) - { - ret = GLEW_3DFX_texture_compression_FXT1; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"APPLE_", 6)) - { -#ifdef GL_APPLE_client_storage - if (_glewStrSame3(&pos, &len, (const GLubyte*)"client_storage", 14)) - { - ret = GLEW_APPLE_client_storage; - continue; - } -#endif -#ifdef GL_APPLE_element_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13)) - { - ret = GLEW_APPLE_element_array; - continue; - } -#endif -#ifdef GL_APPLE_fence - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5)) - { - ret = GLEW_APPLE_fence; - continue; - } -#endif -#ifdef GL_APPLE_float_pixels - if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_pixels", 12)) - { - ret = GLEW_APPLE_float_pixels; - continue; - } -#endif -#ifdef GL_APPLE_flush_buffer_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_buffer_range", 18)) - { - ret = GLEW_APPLE_flush_buffer_range; - continue; - } -#endif -#ifdef GL_APPLE_pixel_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer", 12)) - { - ret = GLEW_APPLE_pixel_buffer; - continue; - } -#endif -#ifdef GL_APPLE_specular_vector - if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_vector", 15)) - { - ret = GLEW_APPLE_specular_vector; - continue; - } -#endif -#ifdef GL_APPLE_texture_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13)) - { - ret = GLEW_APPLE_texture_range; - continue; - } -#endif -#ifdef GL_APPLE_transform_hint - if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_hint", 14)) - { - ret = GLEW_APPLE_transform_hint; - continue; - } -#endif -#ifdef GL_APPLE_vertex_array_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19)) - { - ret = GLEW_APPLE_vertex_array_object; - continue; - } -#endif -#ifdef GL_APPLE_vertex_array_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18)) - { - ret = GLEW_APPLE_vertex_array_range; - continue; - } -#endif -#ifdef GL_APPLE_ycbcr_422 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_422", 9)) - { - ret = GLEW_APPLE_ycbcr_422; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4)) - { -#ifdef GL_ARB_color_buffer_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18)) - { - ret = GLEW_ARB_color_buffer_float; - continue; - } -#endif -#ifdef GL_ARB_depth_buffer_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18)) - { - ret = GLEW_ARB_depth_buffer_float; - continue; - } -#endif -#ifdef GL_ARB_depth_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13)) - { - ret = GLEW_ARB_depth_texture; - continue; - } -#endif -#ifdef GL_ARB_draw_buffers - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12)) - { - ret = GLEW_ARB_draw_buffers; - continue; - } -#endif -#ifdef GL_ARB_draw_instanced - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14)) - { - ret = GLEW_ARB_draw_instanced; - continue; - } -#endif -#ifdef GL_ARB_fragment_program - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16)) - { - ret = GLEW_ARB_fragment_program; - continue; - } -#endif -#ifdef GL_ARB_fragment_program_shadow - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_shadow", 23)) - { - ret = GLEW_ARB_fragment_program_shadow; - continue; - } -#endif -#ifdef GL_ARB_fragment_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15)) - { - ret = GLEW_ARB_fragment_shader; - continue; - } -#endif -#ifdef GL_ARB_framebuffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18)) - { - ret = GLEW_ARB_framebuffer_object; - continue; - } -#endif -#ifdef GL_ARB_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = GLEW_ARB_framebuffer_sRGB; - continue; - } -#endif -#ifdef GL_ARB_geometry_shader4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16)) - { - ret = GLEW_ARB_geometry_shader4; - continue; - } -#endif -#ifdef GL_ARB_half_float_pixel - if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_pixel", 16)) - { - ret = GLEW_ARB_half_float_pixel; - continue; - } -#endif -#ifdef GL_ARB_half_float_vertex - if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_vertex", 17)) - { - ret = GLEW_ARB_half_float_vertex; - continue; - } -#endif -#ifdef GL_ARB_imaging - if (_glewStrSame3(&pos, &len, (const GLubyte*)"imaging", 7)) - { - ret = GLEW_ARB_imaging; - continue; - } -#endif -#ifdef GL_ARB_instanced_arrays - if (_glewStrSame3(&pos, &len, (const GLubyte*)"instanced_arrays", 16)) - { - ret = GLEW_ARB_instanced_arrays; - continue; - } -#endif -#ifdef GL_ARB_map_buffer_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_buffer_range", 16)) - { - ret = GLEW_ARB_map_buffer_range; - continue; - } -#endif -#ifdef GL_ARB_matrix_palette - if (_glewStrSame3(&pos, &len, (const GLubyte*)"matrix_palette", 14)) - { - ret = GLEW_ARB_matrix_palette; - continue; - } -#endif -#ifdef GL_ARB_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLEW_ARB_multisample; - continue; - } -#endif -#ifdef GL_ARB_multitexture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multitexture", 12)) - { - ret = GLEW_ARB_multitexture; - continue; - } -#endif -#ifdef GL_ARB_occlusion_query - if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15)) - { - ret = GLEW_ARB_occlusion_query; - continue; - } -#endif -#ifdef GL_ARB_pixel_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19)) - { - ret = GLEW_ARB_pixel_buffer_object; - continue; - } -#endif -#ifdef GL_ARB_point_parameters - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16)) - { - ret = GLEW_ARB_point_parameters; - continue; - } -#endif -#ifdef GL_ARB_point_sprite - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12)) - { - ret = GLEW_ARB_point_sprite; - continue; - } -#endif -#ifdef GL_ARB_shader_objects - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_objects", 14)) - { - ret = GLEW_ARB_shader_objects; - continue; - } -#endif -#ifdef GL_ARB_shading_language_100 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_100", 20)) - { - ret = GLEW_ARB_shading_language_100; - continue; - } -#endif -#ifdef GL_ARB_shadow - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6)) - { - ret = GLEW_ARB_shadow; - continue; - } -#endif -#ifdef GL_ARB_shadow_ambient - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14)) - { - ret = GLEW_ARB_shadow_ambient; - continue; - } -#endif -#ifdef GL_ARB_texture_border_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20)) - { - ret = GLEW_ARB_texture_border_clamp; - continue; - } -#endif -#ifdef GL_ARB_texture_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21)) - { - ret = GLEW_ARB_texture_buffer_object; - continue; - } -#endif -#ifdef GL_ARB_texture_compression - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression", 19)) - { - ret = GLEW_ARB_texture_compression; - continue; - } -#endif -#ifdef GL_ARB_texture_compression_rgtc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24)) - { - ret = GLEW_ARB_texture_compression_rgtc; - continue; - } -#endif -#ifdef GL_ARB_texture_cube_map - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16)) - { - ret = GLEW_ARB_texture_cube_map; - continue; - } -#endif -#ifdef GL_ARB_texture_env_add - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15)) - { - ret = GLEW_ARB_texture_env_add; - continue; - } -#endif -#ifdef GL_ARB_texture_env_combine - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19)) - { - ret = GLEW_ARB_texture_env_combine; - continue; - } -#endif -#ifdef GL_ARB_texture_env_crossbar - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_crossbar", 20)) - { - ret = GLEW_ARB_texture_env_crossbar; - continue; - } -#endif -#ifdef GL_ARB_texture_env_dot3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16)) - { - ret = GLEW_ARB_texture_env_dot3; - continue; - } -#endif -#ifdef GL_ARB_texture_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13)) - { - ret = GLEW_ARB_texture_float; - continue; - } -#endif -#ifdef GL_ARB_texture_mirrored_repeat - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23)) - { - ret = GLEW_ARB_texture_mirrored_repeat; - continue; - } -#endif -#ifdef GL_ARB_texture_non_power_of_two - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_non_power_of_two", 24)) - { - ret = GLEW_ARB_texture_non_power_of_two; - continue; - } -#endif -#ifdef GL_ARB_texture_rectangle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17)) - { - ret = GLEW_ARB_texture_rectangle; - continue; - } -#endif -#ifdef GL_ARB_texture_rg - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rg", 10)) - { - ret = GLEW_ARB_texture_rg; - continue; - } -#endif -#ifdef GL_ARB_transpose_matrix - if (_glewStrSame3(&pos, &len, (const GLubyte*)"transpose_matrix", 16)) - { - ret = GLEW_ARB_transpose_matrix; - continue; - } -#endif -#ifdef GL_ARB_vertex_array_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19)) - { - ret = GLEW_ARB_vertex_array_object; - continue; - } -#endif -#ifdef GL_ARB_vertex_blend - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_blend", 12)) - { - ret = GLEW_ARB_vertex_blend; - continue; - } -#endif -#ifdef GL_ARB_vertex_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20)) - { - ret = GLEW_ARB_vertex_buffer_object; - continue; - } -#endif -#ifdef GL_ARB_vertex_program - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14)) - { - ret = GLEW_ARB_vertex_program; - continue; - } -#endif -#ifdef GL_ARB_vertex_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13)) - { - ret = GLEW_ARB_vertex_shader; - continue; - } -#endif -#ifdef GL_ARB_window_pos - if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10)) - { - ret = GLEW_ARB_window_pos; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATIX_", 5)) - { -#ifdef GL_ATIX_point_sprites - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprites", 13)) - { - ret = GLEW_ATIX_point_sprites; - continue; - } -#endif -#ifdef GL_ATIX_texture_env_combine3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20)) - { - ret = GLEW_ATIX_texture_env_combine3; - continue; - } -#endif -#ifdef GL_ATIX_texture_env_route - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_route", 17)) - { - ret = GLEW_ATIX_texture_env_route; - continue; - } -#endif -#ifdef GL_ATIX_vertex_shader_output_point_size - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader_output_point_size", 31)) - { - ret = GLEW_ATIX_vertex_shader_output_point_size; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4)) - { -#ifdef GL_ATI_draw_buffers - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers", 12)) - { - ret = GLEW_ATI_draw_buffers; - continue; - } -#endif -#ifdef GL_ATI_element_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"element_array", 13)) - { - ret = GLEW_ATI_element_array; - continue; - } -#endif -#ifdef GL_ATI_envmap_bumpmap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"envmap_bumpmap", 14)) - { - ret = GLEW_ATI_envmap_bumpmap; - continue; - } -#endif -#ifdef GL_ATI_fragment_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_shader", 15)) - { - ret = GLEW_ATI_fragment_shader; - continue; - } -#endif -#ifdef GL_ATI_map_object_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"map_object_buffer", 17)) - { - ret = GLEW_ATI_map_object_buffer; - continue; - } -#endif -#ifdef GL_ATI_pn_triangles - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pn_triangles", 12)) - { - ret = GLEW_ATI_pn_triangles; - continue; - } -#endif -#ifdef GL_ATI_separate_stencil - if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_stencil", 16)) - { - ret = GLEW_ATI_separate_stencil; - continue; - } -#endif -#ifdef GL_ATI_shader_texture_lod - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18)) - { - ret = GLEW_ATI_shader_texture_lod; - continue; - } -#endif -#ifdef GL_ATI_text_fragment_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"text_fragment_shader", 20)) - { - ret = GLEW_ATI_text_fragment_shader; - continue; - } -#endif -#ifdef GL_ATI_texture_compression_3dc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_3dc", 23)) - { - ret = GLEW_ATI_texture_compression_3dc; - continue; - } -#endif -#ifdef GL_ATI_texture_env_combine3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine3", 20)) - { - ret = GLEW_ATI_texture_env_combine3; - continue; - } -#endif -#ifdef GL_ATI_texture_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_float", 13)) - { - ret = GLEW_ATI_texture_float; - continue; - } -#endif -#ifdef GL_ATI_texture_mirror_once - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_once", 19)) - { - ret = GLEW_ATI_texture_mirror_once; - continue; - } -#endif -#ifdef GL_ATI_vertex_array_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_object", 19)) - { - ret = GLEW_ATI_vertex_array_object; - continue; - } -#endif -#ifdef GL_ATI_vertex_attrib_array_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_array_object", 26)) - { - ret = GLEW_ATI_vertex_attrib_array_object; - continue; - } -#endif -#ifdef GL_ATI_vertex_streams - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_streams", 14)) - { - ret = GLEW_ATI_vertex_streams; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4)) - { -#ifdef GL_EXT_422_pixels - if (_glewStrSame3(&pos, &len, (const GLubyte*)"422_pixels", 10)) - { - ret = GLEW_EXT_422_pixels; - continue; - } -#endif -#ifdef GL_EXT_Cg_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"Cg_shader", 9)) - { - ret = GLEW_EXT_Cg_shader; - continue; - } -#endif -#ifdef GL_EXT_abgr - if (_glewStrSame3(&pos, &len, (const GLubyte*)"abgr", 4)) - { - ret = GLEW_EXT_abgr; - continue; - } -#endif -#ifdef GL_EXT_bgra - if (_glewStrSame3(&pos, &len, (const GLubyte*)"bgra", 4)) - { - ret = GLEW_EXT_bgra; - continue; - } -#endif -#ifdef GL_EXT_bindable_uniform - if (_glewStrSame3(&pos, &len, (const GLubyte*)"bindable_uniform", 16)) - { - ret = GLEW_EXT_bindable_uniform; - continue; - } -#endif -#ifdef GL_EXT_blend_color - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_color", 11)) - { - ret = GLEW_EXT_blend_color; - continue; - } -#endif -#ifdef GL_EXT_blend_equation_separate - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_equation_separate", 23)) - { - ret = GLEW_EXT_blend_equation_separate; - continue; - } -#endif -#ifdef GL_EXT_blend_func_separate - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_separate", 19)) - { - ret = GLEW_EXT_blend_func_separate; - continue; - } -#endif -#ifdef GL_EXT_blend_logic_op - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_logic_op", 14)) - { - ret = GLEW_EXT_blend_logic_op; - continue; - } -#endif -#ifdef GL_EXT_blend_minmax - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_minmax", 12)) - { - ret = GLEW_EXT_blend_minmax; - continue; - } -#endif -#ifdef GL_EXT_blend_subtract - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_subtract", 14)) - { - ret = GLEW_EXT_blend_subtract; - continue; - } -#endif -#ifdef GL_EXT_clip_volume_hint - if (_glewStrSame3(&pos, &len, (const GLubyte*)"clip_volume_hint", 16)) - { - ret = GLEW_EXT_clip_volume_hint; - continue; - } -#endif -#ifdef GL_EXT_cmyka - if (_glewStrSame3(&pos, &len, (const GLubyte*)"cmyka", 5)) - { - ret = GLEW_EXT_cmyka; - continue; - } -#endif -#ifdef GL_EXT_color_subtable - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_subtable", 14)) - { - ret = GLEW_EXT_color_subtable; - continue; - } -#endif -#ifdef GL_EXT_compiled_vertex_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"compiled_vertex_array", 21)) - { - ret = GLEW_EXT_compiled_vertex_array; - continue; - } -#endif -#ifdef GL_EXT_convolution - if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution", 11)) - { - ret = GLEW_EXT_convolution; - continue; - } -#endif -#ifdef GL_EXT_coordinate_frame - if (_glewStrSame3(&pos, &len, (const GLubyte*)"coordinate_frame", 16)) - { - ret = GLEW_EXT_coordinate_frame; - continue; - } -#endif -#ifdef GL_EXT_copy_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_texture", 12)) - { - ret = GLEW_EXT_copy_texture; - continue; - } -#endif -#ifdef GL_EXT_cull_vertex - if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11)) - { - ret = GLEW_EXT_cull_vertex; - continue; - } -#endif -#ifdef GL_EXT_depth_bounds_test - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_bounds_test", 17)) - { - ret = GLEW_EXT_depth_bounds_test; - continue; - } -#endif -#ifdef GL_EXT_direct_state_access - if (_glewStrSame3(&pos, &len, (const GLubyte*)"direct_state_access", 19)) - { - ret = GLEW_EXT_direct_state_access; - continue; - } -#endif -#ifdef GL_EXT_draw_buffers2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers2", 13)) - { - ret = GLEW_EXT_draw_buffers2; - continue; - } -#endif -#ifdef GL_EXT_draw_instanced - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14)) - { - ret = GLEW_EXT_draw_instanced; - continue; - } -#endif -#ifdef GL_EXT_draw_range_elements - if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_range_elements", 19)) - { - ret = GLEW_EXT_draw_range_elements; - continue; - } -#endif -#ifdef GL_EXT_fog_coord - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_coord", 9)) - { - ret = GLEW_EXT_fog_coord; - continue; - } -#endif -#ifdef GL_EXT_fragment_lighting - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_lighting", 17)) - { - ret = GLEW_EXT_fragment_lighting; - continue; - } -#endif -#ifdef GL_EXT_framebuffer_blit - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_blit", 16)) - { - ret = GLEW_EXT_framebuffer_blit; - continue; - } -#endif -#ifdef GL_EXT_framebuffer_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample", 23)) - { - ret = GLEW_EXT_framebuffer_multisample; - continue; - } -#endif -#ifdef GL_EXT_framebuffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_object", 18)) - { - ret = GLEW_EXT_framebuffer_object; - continue; - } -#endif -#ifdef GL_EXT_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = GLEW_EXT_framebuffer_sRGB; - continue; - } -#endif -#ifdef GL_EXT_geometry_shader4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16)) - { - ret = GLEW_EXT_geometry_shader4; - continue; - } -#endif -#ifdef GL_EXT_gpu_program_parameters - if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_parameters", 22)) - { - ret = GLEW_EXT_gpu_program_parameters; - continue; - } -#endif -#ifdef GL_EXT_gpu_shader4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader4", 11)) - { - ret = GLEW_EXT_gpu_shader4; - continue; - } -#endif -#ifdef GL_EXT_histogram - if (_glewStrSame3(&pos, &len, (const GLubyte*)"histogram", 9)) - { - ret = GLEW_EXT_histogram; - continue; - } -#endif -#ifdef GL_EXT_index_array_formats - if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_array_formats", 19)) - { - ret = GLEW_EXT_index_array_formats; - continue; - } -#endif -#ifdef GL_EXT_index_func - if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_func", 10)) - { - ret = GLEW_EXT_index_func; - continue; - } -#endif -#ifdef GL_EXT_index_material - if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_material", 14)) - { - ret = GLEW_EXT_index_material; - continue; - } -#endif -#ifdef GL_EXT_index_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"index_texture", 13)) - { - ret = GLEW_EXT_index_texture; - continue; - } -#endif -#ifdef GL_EXT_light_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_texture", 13)) - { - ret = GLEW_EXT_light_texture; - continue; - } -#endif -#ifdef GL_EXT_misc_attribute - if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_attribute", 14)) - { - ret = GLEW_EXT_misc_attribute; - continue; - } -#endif -#ifdef GL_EXT_multi_draw_arrays - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multi_draw_arrays", 17)) - { - ret = GLEW_EXT_multi_draw_arrays; - continue; - } -#endif -#ifdef GL_EXT_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLEW_EXT_multisample; - continue; - } -#endif -#ifdef GL_EXT_packed_depth_stencil - if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20)) - { - ret = GLEW_EXT_packed_depth_stencil; - continue; - } -#endif -#ifdef GL_EXT_packed_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_float", 12)) - { - ret = GLEW_EXT_packed_float; - continue; - } -#endif -#ifdef GL_EXT_packed_pixels - if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_pixels", 13)) - { - ret = GLEW_EXT_packed_pixels; - continue; - } -#endif -#ifdef GL_EXT_paletted_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"paletted_texture", 16)) - { - ret = GLEW_EXT_paletted_texture; - continue; - } -#endif -#ifdef GL_EXT_pixel_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19)) - { - ret = GLEW_EXT_pixel_buffer_object; - continue; - } -#endif -#ifdef GL_EXT_pixel_transform - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform", 15)) - { - ret = GLEW_EXT_pixel_transform; - continue; - } -#endif -#ifdef GL_EXT_pixel_transform_color_table - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_transform_color_table", 27)) - { - ret = GLEW_EXT_pixel_transform_color_table; - continue; - } -#endif -#ifdef GL_EXT_point_parameters - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_parameters", 16)) - { - ret = GLEW_EXT_point_parameters; - continue; - } -#endif -#ifdef GL_EXT_polygon_offset - if (_glewStrSame3(&pos, &len, (const GLubyte*)"polygon_offset", 14)) - { - ret = GLEW_EXT_polygon_offset; - continue; - } -#endif -#ifdef GL_EXT_rescale_normal - if (_glewStrSame3(&pos, &len, (const GLubyte*)"rescale_normal", 14)) - { - ret = GLEW_EXT_rescale_normal; - continue; - } -#endif -#ifdef GL_EXT_scene_marker - if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12)) - { - ret = GLEW_EXT_scene_marker; - continue; - } -#endif -#ifdef GL_EXT_secondary_color - if (_glewStrSame3(&pos, &len, (const GLubyte*)"secondary_color", 15)) - { - ret = GLEW_EXT_secondary_color; - continue; - } -#endif -#ifdef GL_EXT_separate_specular_color - if (_glewStrSame3(&pos, &len, (const GLubyte*)"separate_specular_color", 23)) - { - ret = GLEW_EXT_separate_specular_color; - continue; - } -#endif -#ifdef GL_EXT_shadow_funcs - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_funcs", 12)) - { - ret = GLEW_EXT_shadow_funcs; - continue; - } -#endif -#ifdef GL_EXT_shared_texture_palette - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_texture_palette", 22)) - { - ret = GLEW_EXT_shared_texture_palette; - continue; - } -#endif -#ifdef GL_EXT_stencil_clear_tag - if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_clear_tag", 17)) - { - ret = GLEW_EXT_stencil_clear_tag; - continue; - } -#endif -#ifdef GL_EXT_stencil_two_side - if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_two_side", 16)) - { - ret = GLEW_EXT_stencil_two_side; - continue; - } -#endif -#ifdef GL_EXT_stencil_wrap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"stencil_wrap", 12)) - { - ret = GLEW_EXT_stencil_wrap; - continue; - } -#endif -#ifdef GL_EXT_subtexture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"subtexture", 10)) - { - ret = GLEW_EXT_subtexture; - continue; - } -#endif -#ifdef GL_EXT_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture", 7)) - { - ret = GLEW_EXT_texture; - continue; - } -#endif -#ifdef GL_EXT_texture3D - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture3D", 9)) - { - ret = GLEW_EXT_texture3D; - continue; - } -#endif -#ifdef GL_EXT_texture_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_array", 13)) - { - ret = GLEW_EXT_texture_array; - continue; - } -#endif -#ifdef GL_EXT_texture_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object", 21)) - { - ret = GLEW_EXT_texture_buffer_object; - continue; - } -#endif -#ifdef GL_EXT_texture_compression_dxt1 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_dxt1", 24)) - { - ret = GLEW_EXT_texture_compression_dxt1; - continue; - } -#endif -#ifdef GL_EXT_texture_compression_latc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_latc", 24)) - { - ret = GLEW_EXT_texture_compression_latc; - continue; - } -#endif -#ifdef GL_EXT_texture_compression_rgtc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24)) - { - ret = GLEW_EXT_texture_compression_rgtc; - continue; - } -#endif -#ifdef GL_EXT_texture_compression_s3tc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_s3tc", 24)) - { - ret = GLEW_EXT_texture_compression_s3tc; - continue; - } -#endif -#ifdef GL_EXT_texture_cube_map - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_cube_map", 16)) - { - ret = GLEW_EXT_texture_cube_map; - continue; - } -#endif -#ifdef GL_EXT_texture_edge_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18)) - { - ret = GLEW_EXT_texture_edge_clamp; - continue; - } -#endif -#ifdef GL_EXT_texture_env - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env", 11)) - { - ret = GLEW_EXT_texture_env; - continue; - } -#endif -#ifdef GL_EXT_texture_env_add - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_add", 15)) - { - ret = GLEW_EXT_texture_env_add; - continue; - } -#endif -#ifdef GL_EXT_texture_env_combine - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine", 19)) - { - ret = GLEW_EXT_texture_env_combine; - continue; - } -#endif -#ifdef GL_EXT_texture_env_dot3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_dot3", 16)) - { - ret = GLEW_EXT_texture_env_dot3; - continue; - } -#endif -#ifdef GL_EXT_texture_filter_anisotropic - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter_anisotropic", 26)) - { - ret = GLEW_EXT_texture_filter_anisotropic; - continue; - } -#endif -#ifdef GL_EXT_texture_integer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_integer", 15)) - { - ret = GLEW_EXT_texture_integer; - continue; - } -#endif -#ifdef GL_EXT_texture_lod_bias - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16)) - { - ret = GLEW_EXT_texture_lod_bias; - continue; - } -#endif -#ifdef GL_EXT_texture_mirror_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirror_clamp", 20)) - { - ret = GLEW_EXT_texture_mirror_clamp; - continue; - } -#endif -#ifdef GL_EXT_texture_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_object", 14)) - { - ret = GLEW_EXT_texture_object; - continue; - } -#endif -#ifdef GL_EXT_texture_perturb_normal - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_perturb_normal", 22)) - { - ret = GLEW_EXT_texture_perturb_normal; - continue; - } -#endif -#ifdef GL_EXT_texture_rectangle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17)) - { - ret = GLEW_EXT_texture_rectangle; - continue; - } -#endif -#ifdef GL_EXT_texture_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_sRGB", 12)) - { - ret = GLEW_EXT_texture_sRGB; - continue; - } -#endif -#ifdef GL_EXT_texture_shared_exponent - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shared_exponent", 23)) - { - ret = GLEW_EXT_texture_shared_exponent; - continue; - } -#endif -#ifdef GL_EXT_texture_swizzle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15)) - { - ret = GLEW_EXT_texture_swizzle; - continue; - } -#endif -#ifdef GL_EXT_timer_query - if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11)) - { - ret = GLEW_EXT_timer_query; - continue; - } -#endif -#ifdef GL_EXT_transform_feedback - if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18)) - { - ret = GLEW_EXT_transform_feedback; - continue; - } -#endif -#ifdef GL_EXT_vertex_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array", 12)) - { - ret = GLEW_EXT_vertex_array; - continue; - } -#endif -#ifdef GL_EXT_vertex_array_bgra - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_bgra", 17)) - { - ret = GLEW_EXT_vertex_array_bgra; - continue; - } -#endif -#ifdef GL_EXT_vertex_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13)) - { - ret = GLEW_EXT_vertex_shader; - continue; - } -#endif -#ifdef GL_EXT_vertex_weighting - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_weighting", 16)) - { - ret = GLEW_EXT_vertex_weighting; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"GREMEDY_", 8)) - { -#ifdef GL_GREMEDY_frame_terminator - if (_glewStrSame3(&pos, &len, (const GLubyte*)"frame_terminator", 16)) - { - ret = GLEW_GREMEDY_frame_terminator; - continue; - } -#endif -#ifdef GL_GREMEDY_string_marker - if (_glewStrSame3(&pos, &len, (const GLubyte*)"string_marker", 13)) - { - ret = GLEW_GREMEDY_string_marker; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"HP_", 3)) - { -#ifdef GL_HP_convolution_border_modes - if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24)) - { - ret = GLEW_HP_convolution_border_modes; - continue; - } -#endif -#ifdef GL_HP_image_transform - if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_transform", 15)) - { - ret = GLEW_HP_image_transform; - continue; - } -#endif -#ifdef GL_HP_occlusion_test - if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_test", 14)) - { - ret = GLEW_HP_occlusion_test; - continue; - } -#endif -#ifdef GL_HP_texture_lighting - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lighting", 16)) - { - ret = GLEW_HP_texture_lighting; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"IBM_", 4)) - { -#ifdef GL_IBM_cull_vertex - if (_glewStrSame3(&pos, &len, (const GLubyte*)"cull_vertex", 11)) - { - ret = GLEW_IBM_cull_vertex; - continue; - } -#endif -#ifdef GL_IBM_multimode_draw_arrays - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multimode_draw_arrays", 21)) - { - ret = GLEW_IBM_multimode_draw_arrays; - continue; - } -#endif -#ifdef GL_IBM_rasterpos_clip - if (_glewStrSame3(&pos, &len, (const GLubyte*)"rasterpos_clip", 14)) - { - ret = GLEW_IBM_rasterpos_clip; - continue; - } -#endif -#ifdef GL_IBM_static_data - if (_glewStrSame3(&pos, &len, (const GLubyte*)"static_data", 11)) - { - ret = GLEW_IBM_static_data; - continue; - } -#endif -#ifdef GL_IBM_texture_mirrored_repeat - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_mirrored_repeat", 23)) - { - ret = GLEW_IBM_texture_mirrored_repeat; - continue; - } -#endif -#ifdef GL_IBM_vertex_array_lists - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_lists", 18)) - { - ret = GLEW_IBM_vertex_array_lists; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"INGR_", 5)) - { -#ifdef GL_INGR_color_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_clamp", 11)) - { - ret = GLEW_INGR_color_clamp; - continue; - } -#endif -#ifdef GL_INGR_interlace_read - if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace_read", 14)) - { - ret = GLEW_INGR_interlace_read; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6)) - { -#ifdef GL_INTEL_parallel_arrays - if (_glewStrSame3(&pos, &len, (const GLubyte*)"parallel_arrays", 15)) - { - ret = GLEW_INTEL_parallel_arrays; - continue; - } -#endif -#ifdef GL_INTEL_texture_scissor - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scissor", 15)) - { - ret = GLEW_INTEL_texture_scissor; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"KTX_", 4)) - { -#ifdef GL_KTX_buffer_region - if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13)) - { - ret = GLEW_KTX_buffer_region; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESAX_", 6)) - { -#ifdef GL_MESAX_texture_stack - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_stack", 13)) - { - ret = GLEW_MESAX_texture_stack; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5)) - { -#ifdef GL_MESA_pack_invert - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pack_invert", 11)) - { - ret = GLEW_MESA_pack_invert; - continue; - } -#endif -#ifdef GL_MESA_resize_buffers - if (_glewStrSame3(&pos, &len, (const GLubyte*)"resize_buffers", 14)) - { - ret = GLEW_MESA_resize_buffers; - continue; - } -#endif -#ifdef GL_MESA_window_pos - if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10)) - { - ret = GLEW_MESA_window_pos; - continue; - } -#endif -#ifdef GL_MESA_ycbcr_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycbcr_texture", 13)) - { - ret = GLEW_MESA_ycbcr_texture; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3)) - { -#ifdef GL_NV_blend_square - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_square", 12)) - { - ret = GLEW_NV_blend_square; - continue; - } -#endif -#ifdef GL_NV_conditional_render - if (_glewStrSame3(&pos, &len, (const GLubyte*)"conditional_render", 18)) - { - ret = GLEW_NV_conditional_render; - continue; - } -#endif -#ifdef GL_NV_copy_depth_to_color - if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_depth_to_color", 19)) - { - ret = GLEW_NV_copy_depth_to_color; - continue; - } -#endif -#ifdef GL_NV_depth_buffer_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_buffer_float", 18)) - { - ret = GLEW_NV_depth_buffer_float; - continue; - } -#endif -#ifdef GL_NV_depth_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_clamp", 11)) - { - ret = GLEW_NV_depth_clamp; - continue; - } -#endif -#ifdef GL_NV_depth_range_unclamped - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_range_unclamped", 21)) - { - ret = GLEW_NV_depth_range_unclamped; - continue; - } -#endif -#ifdef GL_NV_evaluators - if (_glewStrSame3(&pos, &len, (const GLubyte*)"evaluators", 10)) - { - ret = GLEW_NV_evaluators; - continue; - } -#endif -#ifdef GL_NV_explicit_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_multisample", 20)) - { - ret = GLEW_NV_explicit_multisample; - continue; - } -#endif -#ifdef GL_NV_fence - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fence", 5)) - { - ret = GLEW_NV_fence; - continue; - } -#endif -#ifdef GL_NV_float_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12)) - { - ret = GLEW_NV_float_buffer; - continue; - } -#endif -#ifdef GL_NV_fog_distance - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_distance", 12)) - { - ret = GLEW_NV_fog_distance; - continue; - } -#endif -#ifdef GL_NV_fragment_program - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program", 16)) - { - ret = GLEW_NV_fragment_program; - continue; - } -#endif -#ifdef GL_NV_fragment_program2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program2", 17)) - { - ret = GLEW_NV_fragment_program2; - continue; - } -#endif -#ifdef GL_NV_fragment_program4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program4", 17)) - { - ret = GLEW_NV_fragment_program4; - continue; - } -#endif -#ifdef GL_NV_fragment_program_option - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_program_option", 23)) - { - ret = GLEW_NV_fragment_program_option; - continue; - } -#endif -#ifdef GL_NV_framebuffer_multisample_coverage - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_multisample_coverage", 32)) - { - ret = GLEW_NV_framebuffer_multisample_coverage; - continue; - } -#endif -#ifdef GL_NV_geometry_program4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_program4", 17)) - { - ret = GLEW_NV_geometry_program4; - continue; - } -#endif -#ifdef GL_NV_geometry_shader4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"geometry_shader4", 16)) - { - ret = GLEW_NV_geometry_shader4; - continue; - } -#endif -#ifdef GL_NV_gpu_program4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program4", 12)) - { - ret = GLEW_NV_gpu_program4; - continue; - } -#endif -#ifdef GL_NV_half_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float", 10)) - { - ret = GLEW_NV_half_float; - continue; - } -#endif -#ifdef GL_NV_light_max_exponent - if (_glewStrSame3(&pos, &len, (const GLubyte*)"light_max_exponent", 18)) - { - ret = GLEW_NV_light_max_exponent; - continue; - } -#endif -#ifdef GL_NV_multisample_filter_hint - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample_filter_hint", 23)) - { - ret = GLEW_NV_multisample_filter_hint; - continue; - } -#endif -#ifdef GL_NV_occlusion_query - if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query", 15)) - { - ret = GLEW_NV_occlusion_query; - continue; - } -#endif -#ifdef GL_NV_packed_depth_stencil - if (_glewStrSame3(&pos, &len, (const GLubyte*)"packed_depth_stencil", 20)) - { - ret = GLEW_NV_packed_depth_stencil; - continue; - } -#endif -#ifdef GL_NV_parameter_buffer_object - if (_glewStrSame3(&pos, &len, (const GLubyte*)"parameter_buffer_object", 23)) - { - ret = GLEW_NV_parameter_buffer_object; - continue; - } -#endif -#ifdef GL_NV_pixel_data_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_data_range", 16)) - { - ret = GLEW_NV_pixel_data_range; - continue; - } -#endif -#ifdef GL_NV_point_sprite - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_sprite", 12)) - { - ret = GLEW_NV_point_sprite; - continue; - } -#endif -#ifdef GL_NV_present_video - if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13)) - { - ret = GLEW_NV_present_video; - continue; - } -#endif -#ifdef GL_NV_primitive_restart - if (_glewStrSame3(&pos, &len, (const GLubyte*)"primitive_restart", 17)) - { - ret = GLEW_NV_primitive_restart; - continue; - } -#endif -#ifdef GL_NV_register_combiners - if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners", 18)) - { - ret = GLEW_NV_register_combiners; - continue; - } -#endif -#ifdef GL_NV_register_combiners2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"register_combiners2", 19)) - { - ret = GLEW_NV_register_combiners2; - continue; - } -#endif -#ifdef GL_NV_texgen_emboss - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_emboss", 13)) - { - ret = GLEW_NV_texgen_emboss; - continue; - } -#endif -#ifdef GL_NV_texgen_reflection - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_reflection", 17)) - { - ret = GLEW_NV_texgen_reflection; - continue; - } -#endif -#ifdef GL_NV_texture_compression_vtc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_vtc", 23)) - { - ret = GLEW_NV_texture_compression_vtc; - continue; - } -#endif -#ifdef GL_NV_texture_env_combine4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_env_combine4", 20)) - { - ret = GLEW_NV_texture_env_combine4; - continue; - } -#endif -#ifdef GL_NV_texture_expand_normal - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_expand_normal", 21)) - { - ret = GLEW_NV_texture_expand_normal; - continue; - } -#endif -#ifdef GL_NV_texture_rectangle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rectangle", 17)) - { - ret = GLEW_NV_texture_rectangle; - continue; - } -#endif -#ifdef GL_NV_texture_shader - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader", 14)) - { - ret = GLEW_NV_texture_shader; - continue; - } -#endif -#ifdef GL_NV_texture_shader2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader2", 15)) - { - ret = GLEW_NV_texture_shader2; - continue; - } -#endif -#ifdef GL_NV_texture_shader3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_shader3", 15)) - { - ret = GLEW_NV_texture_shader3; - continue; - } -#endif -#ifdef GL_NV_transform_feedback - if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback", 18)) - { - ret = GLEW_NV_transform_feedback; - continue; - } -#endif -#ifdef GL_NV_vertex_array_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18)) - { - ret = GLEW_NV_vertex_array_range; - continue; - } -#endif -#ifdef GL_NV_vertex_array_range2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range2", 19)) - { - ret = GLEW_NV_vertex_array_range2; - continue; - } -#endif -#ifdef GL_NV_vertex_program - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program", 14)) - { - ret = GLEW_NV_vertex_program; - continue; - } -#endif -#ifdef GL_NV_vertex_program1_1 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program1_1", 17)) - { - ret = GLEW_NV_vertex_program1_1; - continue; - } -#endif -#ifdef GL_NV_vertex_program2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2", 15)) - { - ret = GLEW_NV_vertex_program2; - continue; - } -#endif -#ifdef GL_NV_vertex_program2_option - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program2_option", 22)) - { - ret = GLEW_NV_vertex_program2_option; - continue; - } -#endif -#ifdef GL_NV_vertex_program3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program3", 15)) - { - ret = GLEW_NV_vertex_program3; - continue; - } -#endif -#ifdef GL_NV_vertex_program4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_program4", 15)) - { - ret = GLEW_NV_vertex_program4; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"OES_", 4)) - { -#ifdef GL_OES_byte_coordinates - if (_glewStrSame3(&pos, &len, (const GLubyte*)"byte_coordinates", 16)) - { - ret = GLEW_OES_byte_coordinates; - continue; - } -#endif -#ifdef GL_OES_compressed_paletted_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"compressed_paletted_texture", 27)) - { - ret = GLEW_OES_compressed_paletted_texture; - continue; - } -#endif -#ifdef GL_OES_read_format - if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_format", 11)) - { - ret = GLEW_OES_read_format; - continue; - } -#endif -#ifdef GL_OES_single_precision - if (_glewStrSame3(&pos, &len, (const GLubyte*)"single_precision", 16)) - { - ret = GLEW_OES_single_precision; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4)) - { -#ifdef GL_OML_interlace - if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9)) - { - ret = GLEW_OML_interlace; - continue; - } -#endif -#ifdef GL_OML_resample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8)) - { - ret = GLEW_OML_resample; - continue; - } -#endif -#ifdef GL_OML_subsample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"subsample", 9)) - { - ret = GLEW_OML_subsample; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"PGI_", 4)) - { -#ifdef GL_PGI_misc_hints - if (_glewStrSame3(&pos, &len, (const GLubyte*)"misc_hints", 10)) - { - ret = GLEW_PGI_misc_hints; - continue; - } -#endif -#ifdef GL_PGI_vertex_hints - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_hints", 12)) - { - ret = GLEW_PGI_vertex_hints; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"REND_", 5)) - { -#ifdef GL_REND_screen_coordinates - if (_glewStrSame3(&pos, &len, (const GLubyte*)"screen_coordinates", 18)) - { - ret = GLEW_REND_screen_coordinates; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"S3_", 3)) - { -#ifdef GL_S3_s3tc - if (_glewStrSame3(&pos, &len, (const GLubyte*)"s3tc", 4)) - { - ret = GLEW_S3_s3tc; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5)) - { -#ifdef GL_SGIS_color_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11)) - { - ret = GLEW_SGIS_color_range; - continue; - } -#endif -#ifdef GL_SGIS_detail_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"detail_texture", 14)) - { - ret = GLEW_SGIS_detail_texture; - continue; - } -#endif -#ifdef GL_SGIS_fog_function - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_function", 12)) - { - ret = GLEW_SGIS_fog_function; - continue; - } -#endif -#ifdef GL_SGIS_generate_mipmap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"generate_mipmap", 15)) - { - ret = GLEW_SGIS_generate_mipmap; - continue; - } -#endif -#ifdef GL_SGIS_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLEW_SGIS_multisample; - continue; - } -#endif -#ifdef GL_SGIS_pixel_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13)) - { - ret = GLEW_SGIS_pixel_texture; - continue; - } -#endif -#ifdef GL_SGIS_point_line_texgen - if (_glewStrSame3(&pos, &len, (const GLubyte*)"point_line_texgen", 17)) - { - ret = GLEW_SGIS_point_line_texgen; - continue; - } -#endif -#ifdef GL_SGIS_sharpen_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"sharpen_texture", 15)) - { - ret = GLEW_SGIS_sharpen_texture; - continue; - } -#endif -#ifdef GL_SGIS_texture4D - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture4D", 9)) - { - ret = GLEW_SGIS_texture4D; - continue; - } -#endif -#ifdef GL_SGIS_texture_border_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20)) - { - ret = GLEW_SGIS_texture_border_clamp; - continue; - } -#endif -#ifdef GL_SGIS_texture_edge_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_edge_clamp", 18)) - { - ret = GLEW_SGIS_texture_edge_clamp; - continue; - } -#endif -#ifdef GL_SGIS_texture_filter4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_filter4", 15)) - { - ret = GLEW_SGIS_texture_filter4; - continue; - } -#endif -#ifdef GL_SGIS_texture_lod - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod", 11)) - { - ret = GLEW_SGIS_texture_lod; - continue; - } -#endif -#ifdef GL_SGIS_texture_select - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_select", 14)) - { - ret = GLEW_SGIS_texture_select; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5)) - { -#ifdef GL_SGIX_async - if (_glewStrSame3(&pos, &len, (const GLubyte*)"async", 5)) - { - ret = GLEW_SGIX_async; - continue; - } -#endif -#ifdef GL_SGIX_async_histogram - if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_histogram", 15)) - { - ret = GLEW_SGIX_async_histogram; - continue; - } -#endif -#ifdef GL_SGIX_async_pixel - if (_glewStrSame3(&pos, &len, (const GLubyte*)"async_pixel", 11)) - { - ret = GLEW_SGIX_async_pixel; - continue; - } -#endif -#ifdef GL_SGIX_blend_alpha_minmax - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_alpha_minmax", 18)) - { - ret = GLEW_SGIX_blend_alpha_minmax; - continue; - } -#endif -#ifdef GL_SGIX_clipmap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"clipmap", 7)) - { - ret = GLEW_SGIX_clipmap; - continue; - } -#endif -#ifdef GL_SGIX_convolution_accuracy - if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_accuracy", 20)) - { - ret = GLEW_SGIX_convolution_accuracy; - continue; - } -#endif -#ifdef GL_SGIX_depth_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_texture", 13)) - { - ret = GLEW_SGIX_depth_texture; - continue; - } -#endif -#ifdef GL_SGIX_flush_raster - if (_glewStrSame3(&pos, &len, (const GLubyte*)"flush_raster", 12)) - { - ret = GLEW_SGIX_flush_raster; - continue; - } -#endif -#ifdef GL_SGIX_fog_offset - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_offset", 10)) - { - ret = GLEW_SGIX_fog_offset; - continue; - } -#endif -#ifdef GL_SGIX_fog_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fog_texture", 11)) - { - ret = GLEW_SGIX_fog_texture; - continue; - } -#endif -#ifdef GL_SGIX_fragment_specular_lighting - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_specular_lighting", 26)) - { - ret = GLEW_SGIX_fragment_specular_lighting; - continue; - } -#endif -#ifdef GL_SGIX_framezoom - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framezoom", 9)) - { - ret = GLEW_SGIX_framezoom; - continue; - } -#endif -#ifdef GL_SGIX_interlace - if (_glewStrSame3(&pos, &len, (const GLubyte*)"interlace", 9)) - { - ret = GLEW_SGIX_interlace; - continue; - } -#endif -#ifdef GL_SGIX_ir_instrument1 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"ir_instrument1", 14)) - { - ret = GLEW_SGIX_ir_instrument1; - continue; - } -#endif -#ifdef GL_SGIX_list_priority - if (_glewStrSame3(&pos, &len, (const GLubyte*)"list_priority", 13)) - { - ret = GLEW_SGIX_list_priority; - continue; - } -#endif -#ifdef GL_SGIX_pixel_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture", 13)) - { - ret = GLEW_SGIX_pixel_texture; - continue; - } -#endif -#ifdef GL_SGIX_pixel_texture_bits - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_texture_bits", 18)) - { - ret = GLEW_SGIX_pixel_texture_bits; - continue; - } -#endif -#ifdef GL_SGIX_reference_plane - if (_glewStrSame3(&pos, &len, (const GLubyte*)"reference_plane", 15)) - { - ret = GLEW_SGIX_reference_plane; - continue; - } -#endif -#ifdef GL_SGIX_resample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"resample", 8)) - { - ret = GLEW_SGIX_resample; - continue; - } -#endif -#ifdef GL_SGIX_shadow - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6)) - { - ret = GLEW_SGIX_shadow; - continue; - } -#endif -#ifdef GL_SGIX_shadow_ambient - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_ambient", 14)) - { - ret = GLEW_SGIX_shadow_ambient; - continue; - } -#endif -#ifdef GL_SGIX_sprite - if (_glewStrSame3(&pos, &len, (const GLubyte*)"sprite", 6)) - { - ret = GLEW_SGIX_sprite; - continue; - } -#endif -#ifdef GL_SGIX_tag_sample_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"tag_sample_buffer", 17)) - { - ret = GLEW_SGIX_tag_sample_buffer; - continue; - } -#endif -#ifdef GL_SGIX_texture_add_env - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_add_env", 15)) - { - ret = GLEW_SGIX_texture_add_env; - continue; - } -#endif -#ifdef GL_SGIX_texture_coordinate_clamp - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_coordinate_clamp", 24)) - { - ret = GLEW_SGIX_texture_coordinate_clamp; - continue; - } -#endif -#ifdef GL_SGIX_texture_lod_bias - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_lod_bias", 16)) - { - ret = GLEW_SGIX_texture_lod_bias; - continue; - } -#endif -#ifdef GL_SGIX_texture_multi_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_multi_buffer", 20)) - { - ret = GLEW_SGIX_texture_multi_buffer; - continue; - } -#endif -#ifdef GL_SGIX_texture_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_range", 13)) - { - ret = GLEW_SGIX_texture_range; - continue; - } -#endif -#ifdef GL_SGIX_texture_scale_bias - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scale_bias", 18)) - { - ret = GLEW_SGIX_texture_scale_bias; - continue; - } -#endif -#ifdef GL_SGIX_vertex_preclip - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip", 14)) - { - ret = GLEW_SGIX_vertex_preclip; - continue; - } -#endif -#ifdef GL_SGIX_vertex_preclip_hint - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_preclip_hint", 19)) - { - ret = GLEW_SGIX_vertex_preclip_hint; - continue; - } -#endif -#ifdef GL_SGIX_ycrcb - if (_glewStrSame3(&pos, &len, (const GLubyte*)"ycrcb", 5)) - { - ret = GLEW_SGIX_ycrcb; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4)) - { -#ifdef GL_SGI_color_matrix - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_matrix", 12)) - { - ret = GLEW_SGI_color_matrix; - continue; - } -#endif -#ifdef GL_SGI_color_table - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_table", 11)) - { - ret = GLEW_SGI_color_table; - continue; - } -#endif -#ifdef GL_SGI_texture_color_table - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_color_table", 19)) - { - ret = GLEW_SGI_texture_color_table; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUNX_", 5)) - { -#ifdef GL_SUNX_constant_data - if (_glewStrSame3(&pos, &len, (const GLubyte*)"constant_data", 13)) - { - ret = GLEW_SUNX_constant_data; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4)) - { -#ifdef GL_SUN_convolution_border_modes - if (_glewStrSame3(&pos, &len, (const GLubyte*)"convolution_border_modes", 24)) - { - ret = GLEW_SUN_convolution_border_modes; - continue; - } -#endif -#ifdef GL_SUN_global_alpha - if (_glewStrSame3(&pos, &len, (const GLubyte*)"global_alpha", 12)) - { - ret = GLEW_SUN_global_alpha; - continue; - } -#endif -#ifdef GL_SUN_mesh_array - if (_glewStrSame3(&pos, &len, (const GLubyte*)"mesh_array", 10)) - { - ret = GLEW_SUN_mesh_array; - continue; - } -#endif -#ifdef GL_SUN_read_video_pixels - if (_glewStrSame3(&pos, &len, (const GLubyte*)"read_video_pixels", 17)) - { - ret = GLEW_SUN_read_video_pixels; - continue; - } -#endif -#ifdef GL_SUN_slice_accum - if (_glewStrSame3(&pos, &len, (const GLubyte*)"slice_accum", 11)) - { - ret = GLEW_SUN_slice_accum; - continue; - } -#endif -#ifdef GL_SUN_triangle_list - if (_glewStrSame3(&pos, &len, (const GLubyte*)"triangle_list", 13)) - { - ret = GLEW_SUN_triangle_list; - continue; - } -#endif -#ifdef GL_SUN_vertex - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex", 6)) - { - ret = GLEW_SUN_vertex; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"WIN_", 4)) - { -#ifdef GL_WIN_phong_shading - if (_glewStrSame3(&pos, &len, (const GLubyte*)"phong_shading", 13)) - { - ret = GLEW_WIN_phong_shading; - continue; - } -#endif -#ifdef GL_WIN_specular_fog - if (_glewStrSame3(&pos, &len, (const GLubyte*)"specular_fog", 12)) - { - ret = GLEW_WIN_specular_fog; - continue; - } -#endif -#ifdef GL_WIN_swap_hint - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_hint", 9)) - { - ret = GLEW_WIN_swap_hint; - continue; - } -#endif - } - } - ret = (len == 0); - } - return ret; -} - -#if defined(_WIN32) - -#if defined(GLEW_MX) -GLboolean wglewContextIsSupported (WGLEWContext* ctx, const char* name) -#else -GLboolean wglewIsSupported (const char* name) -#endif -{ - GLubyte* pos = (GLubyte*)name; - GLuint len = _glewStrLen(pos); - GLboolean ret = GL_TRUE; - while (ret && len > 0) - { - if (_glewStrSame1(&pos, &len, (const GLubyte*)"WGL_", 4)) - { - if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5)) - { -#ifdef WGL_3DFX_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = WGLEW_3DFX_multisample; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DL_", 4)) - { -#ifdef WGL_3DL_stereo_control - if (_glewStrSame3(&pos, &len, (const GLubyte*)"stereo_control", 14)) - { - ret = WGLEW_3DL_stereo_control; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4)) - { -#ifdef WGL_ARB_buffer_region - if (_glewStrSame3(&pos, &len, (const GLubyte*)"buffer_region", 13)) - { - ret = WGLEW_ARB_buffer_region; - continue; - } -#endif -#ifdef WGL_ARB_create_context - if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14)) - { - ret = WGLEW_ARB_create_context; - continue; - } -#endif -#ifdef WGL_ARB_extensions_string - if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17)) - { - ret = WGLEW_ARB_extensions_string; - continue; - } -#endif -#ifdef WGL_ARB_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = WGLEW_ARB_framebuffer_sRGB; - continue; - } -#endif -#ifdef WGL_ARB_make_current_read - if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17)) - { - ret = WGLEW_ARB_make_current_read; - continue; - } -#endif -#ifdef WGL_ARB_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = WGLEW_ARB_multisample; - continue; - } -#endif -#ifdef WGL_ARB_pbuffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7)) - { - ret = WGLEW_ARB_pbuffer; - continue; - } -#endif -#ifdef WGL_ARB_pixel_format - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12)) - { - ret = WGLEW_ARB_pixel_format; - continue; - } -#endif -#ifdef WGL_ARB_pixel_format_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18)) - { - ret = WGLEW_ARB_pixel_format_float; - continue; - } -#endif -#ifdef WGL_ARB_render_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14)) - { - ret = WGLEW_ARB_render_texture; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4)) - { -#ifdef WGL_ATI_pixel_format_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18)) - { - ret = WGLEW_ATI_pixel_format_float; - continue; - } -#endif -#ifdef WGL_ATI_render_texture_rectangle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24)) - { - ret = WGLEW_ATI_render_texture_rectangle; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4)) - { -#ifdef WGL_EXT_depth_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"depth_float", 11)) - { - ret = WGLEW_EXT_depth_float; - continue; - } -#endif -#ifdef WGL_EXT_display_color_table - if (_glewStrSame3(&pos, &len, (const GLubyte*)"display_color_table", 19)) - { - ret = WGLEW_EXT_display_color_table; - continue; - } -#endif -#ifdef WGL_EXT_extensions_string - if (_glewStrSame3(&pos, &len, (const GLubyte*)"extensions_string", 17)) - { - ret = WGLEW_EXT_extensions_string; - continue; - } -#endif -#ifdef WGL_EXT_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = WGLEW_EXT_framebuffer_sRGB; - continue; - } -#endif -#ifdef WGL_EXT_make_current_read - if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17)) - { - ret = WGLEW_EXT_make_current_read; - continue; - } -#endif -#ifdef WGL_EXT_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = WGLEW_EXT_multisample; - continue; - } -#endif -#ifdef WGL_EXT_pbuffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7)) - { - ret = WGLEW_EXT_pbuffer; - continue; - } -#endif -#ifdef WGL_EXT_pixel_format - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format", 12)) - { - ret = WGLEW_EXT_pixel_format; - continue; - } -#endif -#ifdef WGL_EXT_pixel_format_packed_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_packed_float", 25)) - { - ret = WGLEW_EXT_pixel_format_packed_float; - continue; - } -#endif -#ifdef WGL_EXT_swap_control - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12)) - { - ret = WGLEW_EXT_swap_control; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"I3D_", 4)) - { -#ifdef WGL_I3D_digital_video_control - if (_glewStrSame3(&pos, &len, (const GLubyte*)"digital_video_control", 21)) - { - ret = WGLEW_I3D_digital_video_control; - continue; - } -#endif -#ifdef WGL_I3D_gamma - if (_glewStrSame3(&pos, &len, (const GLubyte*)"gamma", 5)) - { - ret = WGLEW_I3D_gamma; - continue; - } -#endif -#ifdef WGL_I3D_genlock - if (_glewStrSame3(&pos, &len, (const GLubyte*)"genlock", 7)) - { - ret = WGLEW_I3D_genlock; - continue; - } -#endif -#ifdef WGL_I3D_image_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"image_buffer", 12)) - { - ret = WGLEW_I3D_image_buffer; - continue; - } -#endif -#ifdef WGL_I3D_swap_frame_lock - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_lock", 15)) - { - ret = WGLEW_I3D_swap_frame_lock; - continue; - } -#endif -#ifdef WGL_I3D_swap_frame_usage - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_frame_usage", 16)) - { - ret = WGLEW_I3D_swap_frame_usage; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3)) - { -#ifdef WGL_NV_float_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12)) - { - ret = WGLEW_NV_float_buffer; - continue; - } -#endif -#ifdef WGL_NV_gpu_affinity - if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_affinity", 12)) - { - ret = WGLEW_NV_gpu_affinity; - continue; - } -#endif -#ifdef WGL_NV_present_video - if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13)) - { - ret = WGLEW_NV_present_video; - continue; - } -#endif -#ifdef WGL_NV_render_depth_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_depth_texture", 20)) - { - ret = WGLEW_NV_render_depth_texture; - continue; - } -#endif -#ifdef WGL_NV_render_texture_rectangle - if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture_rectangle", 24)) - { - ret = WGLEW_NV_render_texture_rectangle; - continue; - } -#endif -#ifdef WGL_NV_swap_group - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10)) - { - ret = WGLEW_NV_swap_group; - continue; - } -#endif -#ifdef WGL_NV_vertex_array_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18)) - { - ret = WGLEW_NV_vertex_array_range; - continue; - } -#endif -#ifdef WGL_NV_video_output - if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_output", 12)) - { - ret = WGLEW_NV_video_output; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4)) - { -#ifdef WGL_OML_sync_control - if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12)) - { - ret = WGLEW_OML_sync_control; - continue; - } -#endif - } - } - ret = (len == 0); - } - return ret; -} - -#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) - -#if defined(GLEW_MX) -GLboolean glxewContextIsSupported (GLXEWContext* ctx, const char* name) -#else -GLboolean glxewIsSupported (const char* name) -#endif -{ - GLubyte* pos = (GLubyte*)name; - GLuint len = _glewStrLen(pos); - GLboolean ret = GL_TRUE; - while (ret && len > 0) - { - if(_glewStrSame1(&pos, &len, (const GLubyte*)"GLX_", 4)) - { - if (_glewStrSame2(&pos, &len, (const GLubyte*)"VERSION_", 8)) - { -#ifdef GLX_VERSION_1_2 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_2", 3)) - { - ret = GLXEW_VERSION_1_2; - continue; - } -#endif -#ifdef GLX_VERSION_1_3 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_3", 3)) - { - ret = GLXEW_VERSION_1_3; - continue; - } -#endif -#ifdef GLX_VERSION_1_4 - if (_glewStrSame3(&pos, &len, (const GLubyte*)"1_4", 3)) - { - ret = GLXEW_VERSION_1_4; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5)) - { -#ifdef GLX_3DFX_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLXEW_3DFX_multisample; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4)) - { -#ifdef GLX_ARB_create_context - if (_glewStrSame3(&pos, &len, (const GLubyte*)"create_context", 14)) - { - ret = GLXEW_ARB_create_context; - continue; - } -#endif -#ifdef GLX_ARB_fbconfig_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_float", 14)) - { - ret = GLXEW_ARB_fbconfig_float; - continue; - } -#endif -#ifdef GLX_ARB_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = GLXEW_ARB_framebuffer_sRGB; - continue; - } -#endif -#ifdef GLX_ARB_get_proc_address - if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_proc_address", 16)) - { - ret = GLXEW_ARB_get_proc_address; - continue; - } -#endif -#ifdef GLX_ARB_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLXEW_ARB_multisample; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4)) - { -#ifdef GLX_ATI_pixel_format_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_format_float", 18)) - { - ret = GLXEW_ATI_pixel_format_float; - continue; - } -#endif -#ifdef GLX_ATI_render_texture - if (_glewStrSame3(&pos, &len, (const GLubyte*)"render_texture", 14)) - { - ret = GLXEW_ATI_render_texture; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"EXT_", 4)) - { -#ifdef GLX_EXT_fbconfig_packed_float - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig_packed_float", 21)) - { - ret = GLXEW_EXT_fbconfig_packed_float; - continue; - } -#endif -#ifdef GLX_EXT_framebuffer_sRGB - if (_glewStrSame3(&pos, &len, (const GLubyte*)"framebuffer_sRGB", 16)) - { - ret = GLXEW_EXT_framebuffer_sRGB; - continue; - } -#endif -#ifdef GLX_EXT_import_context - if (_glewStrSame3(&pos, &len, (const GLubyte*)"import_context", 14)) - { - ret = GLXEW_EXT_import_context; - continue; - } -#endif -#ifdef GLX_EXT_scene_marker - if (_glewStrSame3(&pos, &len, (const GLubyte*)"scene_marker", 12)) - { - ret = GLXEW_EXT_scene_marker; - continue; - } -#endif -#ifdef GLX_EXT_texture_from_pixmap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_from_pixmap", 19)) - { - ret = GLXEW_EXT_texture_from_pixmap; - continue; - } -#endif -#ifdef GLX_EXT_visual_info - if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_info", 11)) - { - ret = GLXEW_EXT_visual_info; - continue; - } -#endif -#ifdef GLX_EXT_visual_rating - if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_rating", 13)) - { - ret = GLXEW_EXT_visual_rating; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5)) - { -#ifdef GLX_MESA_agp_offset - if (_glewStrSame3(&pos, &len, (const GLubyte*)"agp_offset", 10)) - { - ret = GLXEW_MESA_agp_offset; - continue; - } -#endif -#ifdef GLX_MESA_copy_sub_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"copy_sub_buffer", 15)) - { - ret = GLXEW_MESA_copy_sub_buffer; - continue; - } -#endif -#ifdef GLX_MESA_pixmap_colormap - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixmap_colormap", 15)) - { - ret = GLXEW_MESA_pixmap_colormap; - continue; - } -#endif -#ifdef GLX_MESA_release_buffers - if (_glewStrSame3(&pos, &len, (const GLubyte*)"release_buffers", 15)) - { - ret = GLXEW_MESA_release_buffers; - continue; - } -#endif -#ifdef GLX_MESA_set_3dfx_mode - if (_glewStrSame3(&pos, &len, (const GLubyte*)"set_3dfx_mode", 13)) - { - ret = GLXEW_MESA_set_3dfx_mode; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"NV_", 3)) - { -#ifdef GLX_NV_float_buffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"float_buffer", 12)) - { - ret = GLXEW_NV_float_buffer; - continue; - } -#endif -#ifdef GLX_NV_present_video - if (_glewStrSame3(&pos, &len, (const GLubyte*)"present_video", 13)) - { - ret = GLXEW_NV_present_video; - continue; - } -#endif -#ifdef GLX_NV_swap_group - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10)) - { - ret = GLXEW_NV_swap_group; - continue; - } -#endif -#ifdef GLX_NV_vertex_array_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_array_range", 18)) - { - ret = GLXEW_NV_vertex_array_range; - continue; - } -#endif -#ifdef GLX_NV_video_output - if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_output", 12)) - { - ret = GLXEW_NV_video_output; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"OML_", 4)) - { -#ifdef GLX_OML_swap_method - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_method", 11)) - { - ret = GLXEW_OML_swap_method; - continue; - } -#endif -#if defined(GLX_OML_sync_control) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -#include - if (_glewStrSame3(&pos, &len, (const GLubyte*)"sync_control", 12)) - { - ret = GLXEW_OML_sync_control; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIS_", 5)) - { -#ifdef GLX_SGIS_blended_overlay - if (_glewStrSame3(&pos, &len, (const GLubyte*)"blended_overlay", 15)) - { - ret = GLXEW_SGIS_blended_overlay; - continue; - } -#endif -#ifdef GLX_SGIS_color_range - if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_range", 11)) - { - ret = GLXEW_SGIS_color_range; - continue; - } -#endif -#ifdef GLX_SGIS_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"multisample", 11)) - { - ret = GLXEW_SGIS_multisample; - continue; - } -#endif -#ifdef GLX_SGIS_shared_multisample - if (_glewStrSame3(&pos, &len, (const GLubyte*)"shared_multisample", 18)) - { - ret = GLXEW_SGIS_shared_multisample; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGIX_", 5)) - { -#ifdef GLX_SGIX_fbconfig - if (_glewStrSame3(&pos, &len, (const GLubyte*)"fbconfig", 8)) - { - ret = GLXEW_SGIX_fbconfig; - continue; - } -#endif -#ifdef GLX_SGIX_hyperpipe - if (_glewStrSame3(&pos, &len, (const GLubyte*)"hyperpipe", 9)) - { - ret = GLXEW_SGIX_hyperpipe; - continue; - } -#endif -#ifdef GLX_SGIX_pbuffer - if (_glewStrSame3(&pos, &len, (const GLubyte*)"pbuffer", 7)) - { - ret = GLXEW_SGIX_pbuffer; - continue; - } -#endif -#ifdef GLX_SGIX_swap_barrier - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_barrier", 12)) - { - ret = GLXEW_SGIX_swap_barrier; - continue; - } -#endif -#ifdef GLX_SGIX_swap_group - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_group", 10)) - { - ret = GLXEW_SGIX_swap_group; - continue; - } -#endif -#ifdef GLX_SGIX_video_resize - if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12)) - { - ret = GLXEW_SGIX_video_resize; - continue; - } -#endif -#ifdef GLX_SGIX_visual_select_group - if (_glewStrSame3(&pos, &len, (const GLubyte*)"visual_select_group", 19)) - { - ret = GLXEW_SGIX_visual_select_group; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SGI_", 4)) - { -#ifdef GLX_SGI_cushion - if (_glewStrSame3(&pos, &len, (const GLubyte*)"cushion", 7)) - { - ret = GLXEW_SGI_cushion; - continue; - } -#endif -#ifdef GLX_SGI_make_current_read - if (_glewStrSame3(&pos, &len, (const GLubyte*)"make_current_read", 17)) - { - ret = GLXEW_SGI_make_current_read; - continue; - } -#endif -#ifdef GLX_SGI_swap_control - if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_control", 12)) - { - ret = GLXEW_SGI_swap_control; - continue; - } -#endif -#ifdef GLX_SGI_video_sync - if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_sync", 10)) - { - ret = GLXEW_SGI_video_sync; - continue; - } -#endif - } - if (_glewStrSame2(&pos, &len, (const GLubyte*)"SUN_", 4)) - { -#ifdef GLX_SUN_get_transparent_index - if (_glewStrSame3(&pos, &len, (const GLubyte*)"get_transparent_index", 21)) - { - ret = GLXEW_SUN_get_transparent_index; - continue; - } -#endif -#ifdef GLX_SUN_video_resize - if (_glewStrSame3(&pos, &len, (const GLubyte*)"video_resize", 12)) - { - ret = GLXEW_SUN_video_resize; - continue; - } -#endif - } - } - ret = (len == 0); - } - return ret; -} - -#endif /* _WIN32 */ diff --git a/test/Makefile.am b/test/Makefile.am index 9b673d2..1648dd8 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -127,21 +127,24 @@ CLEANFILES += $(BUILT_SOURCES) REFERENCE_IMAGES = \ a1-bug.ref.png \ a1-bug.image16.ref.png \ + a1-bug.quartz.xfail.png \ a1-bug.xlib.ref.png \ a1-image-sample.ref.png \ a1-image-sample.gl.xfail.png \ - a1-image-sample.quartz.xfail.png \ a1-mask.ref.png \ a1-mask-sample.ref.png \ - a1-mask-sample.quartz.xfail.png \ a1-rasterisation-rectangles.ref.png \ + a1-rasterisation-rectangles.quartz.xfail.png \ a1-rasterisation-triangles.ref.png \ + a1-rasterisation-triangles.quartz.xfail.png \ a1-traps-sample.ref.png \ a1-traps-sample.quartz.xfail.png \ a8-clear.ref.png \ + a8-clear.quartz.ref.png \ a8-mask.ref.png \ aliasing.ref.png \ aliasing.image16.ref.png \ + aliasing.quartz.ref.png \ aliasing.xlib.ref.png \ alpha-similar.gl.argb32.xfail.png \ alpha-similar.gl.rgb24.xfail.png \ @@ -154,6 +157,11 @@ REFERENCE_IMAGES = \ alpha-similar.svg.argb32.xfail.png \ alpha-similar.svg.rgb24.xfail.png \ api-special-cases.ref.png \ + arc-infinite-loop.ref.png \ + arc-looping-dash.image16.ref.png \ + arc-looping-dash.ps.ref.png \ + arc-looping-dash.quartz.ref.png \ + arc-looping-dash.ref.png \ big-line.ref.png \ big-line.image16.ref.png \ big-line.ps.ref.png \ @@ -478,11 +486,15 @@ REFERENCE_IMAGES = \ extended-blend.image16.ref.png \ extended-blend.argb32.ref.png \ extended-blend.rgb24.ref.png \ + extended-blend.quartz.argb32.ref.png \ + extended-blend.quartz.rgb24.ref.png \ extended-blend.svg12.argb32.xfail.png \ extended-blend.svg12.rgb24.xfail.png \ extended-blend-alpha.image16.ref.png \ extended-blend-alpha.argb32.ref.png \ extended-blend-alpha.rgb24.ref.png \ + extended-blend-alpha.quartz.argb32.ref.png \ + extended-blend-alpha.quartz.rgb24.ref.png \ extended-blend-alpha.svg12.argb32.xfail.png \ extended-blend-alpha.svg12.rgb24.xfail.png \ extend-pad-border.image16.ref.png \ @@ -513,22 +525,27 @@ REFERENCE_IMAGES = \ extend-repeat.ps2.ref.png \ extend-repeat.ps3.ref.png \ extend-repeat.ref.png \ - fallback-resolution.ppi150x150.ref.png \ - fallback-resolution.ppi150x72.ref.png \ - fallback-resolution.ppi300x300.ref.png \ - fallback-resolution.ppi300x72.ref.png \ - fallback-resolution.ppi37.5x37.5.ref.png \ - fallback-resolution.ppi37.5x72.ref.png \ - fallback-resolution.ppi600x600.ref.png \ - fallback-resolution.ppi600x72.ref.png \ - fallback-resolution.ppi72x150.ref.png \ - fallback-resolution.ppi72x300.ref.png \ - fallback-resolution.ppi72x37.5.ref.png \ - fallback-resolution.ppi72x600.ref.png \ + fallback-resolution.ppi144x144.ps.ref.png \ + fallback-resolution.ppi144x144.ref.png \ + fallback-resolution.ppi144x72.ps.ref.png \ + fallback-resolution.ppi144x72.ref.png \ + fallback-resolution.ppi288x288.pdf.ref.png \ + fallback-resolution.ppi288x288.ps.ref.png \ + fallback-resolution.ppi288x288.svg.ref.png \ + fallback-resolution.ppi288x72.ps.ref.png \ + fallback-resolution.ppi288x72.ref.png \ + fallback-resolution.ppi576x576.pdf.ref.png \ + fallback-resolution.ppi576x576.ps.ref.png \ + fallback-resolution.ppi576x576.svg.ref.png \ + fallback-resolution.ppi576x72.ps.ref.png \ + fallback-resolution.ppi576x72.ref.png \ + fallback-resolution.ppi72x144.ps.ref.png \ + fallback-resolution.ppi72x144.ref.png \ + fallback-resolution.ppi72x288.ps.ref.png \ + fallback-resolution.ppi72x288.ref.png \ + fallback-resolution.ppi72x576.ps.ref.png \ + fallback-resolution.ppi72x576.ref.png \ fallback-resolution.ppi72x72.ref.png \ - fallback-resolution.ppi72x75.ref.png \ - fallback-resolution.ppi75x72.ref.png \ - fallback-resolution.ppi75x75.ref.png \ fill-alpha-pattern.image16.ref.png \ fill-alpha-pattern.ps3.argb32.ref.png \ fill-alpha-pattern.ps3.ref.png \ @@ -600,7 +617,6 @@ REFERENCE_IMAGES = \ filter-nearest-offset.pdf.xfail.png \ filter-nearest-offset.ps2.ref.png \ filter-nearest-offset.ps3.ref.png \ - filter-nearest-offset.quartz.xfail.png \ filter-nearest-offset.ref.png \ filter-nearest-offset.svg.xfail.png \ filter-nearest-transformed.image16.ref.png \ @@ -712,6 +728,7 @@ REFERENCE_IMAGES = \ huge-linear.image16.ref.png \ huge-linear.pdf.ref.png \ huge-linear.ps3.ref.png \ + huge-linear.quartz.ref.png \ huge-linear.ref.png \ huge-radial.image16.ref.png \ huge-radial.pdf.argb32.ref.png \ @@ -785,6 +802,7 @@ REFERENCE_IMAGES = \ linear-gradient.quartz.ref.png \ linear-gradient.ref.png \ linear-gradient.xlib.ref.png \ + linear-gradient-large.quartz.ref.png \ linear-gradient-large.ref.png \ linear-gradient-one-stop.argb32.ref.png \ linear-gradient-one-stop.rgb24.ref.png \ @@ -837,20 +855,20 @@ REFERENCE_IMAGES = \ mask.svg.rgb24.xfail.png \ mask.xlib.ref.png \ mask.xlib.rgb24.ref.png \ - recording-surface-pattern.image16.ref.png \ - recording-surface-pattern.gl.argb32.ref.png \ - recording-surface-pattern.pdf.argb32.ref.png \ - recording-surface-pattern.pdf.rgb24.ref.png \ - recording-surface-pattern.ps.argb32.ref.png \ - recording-surface-pattern.ps.rgb24.ref.png \ - recording-surface-pattern.quartz.argb32.ref.png \ - recording-surface-pattern.quartz.rgb24.ref.png \ - recording-surface-pattern.ref.png \ - recording-surface-pattern.rgb24.ref.png \ - recording-surface-pattern.svg.argb32.ref.png \ - recording-surface-pattern.svg.rgb24.ref.png \ - recording-surface-pattern.xlib.argb32.ref.png \ - recording-surface-pattern.xlib.rgb24.ref.png \ + mesh-pattern.image16.ref.png \ + mesh-pattern.ref.png \ + mesh-pattern-accuracy.image16.ref.png \ + mesh-pattern-accuracy.ref.png \ + mesh-pattern-conical.image16.ref.png \ + mesh-pattern-conical.ref.png \ + mesh-pattern-control-points.image16.ref.png \ + mesh-pattern-control-points.ref.png \ + mesh-pattern-fold.image16.ref.png \ + mesh-pattern-fold.ref.png \ + mesh-pattern-overlap.image16.ref.png \ + mesh-pattern-overlap.ref.png \ + mesh-pattern-transformed.image16.ref.png \ + mesh-pattern-transformed.ref.png \ mime-data.pdf.ref.png \ mime-data.ps.ref.png \ mime-data.ref.png \ @@ -948,6 +966,8 @@ REFERENCE_IMAGES = \ overlapping-glyphs.rgb24.ref.png \ overlapping-glyphs.pdf.argb32.xfail.png \ overlapping-glyphs.pdf.rgb24.xfail.png \ + overlapping-glyphs.quartz.argb32.ref.png \ + overlapping-glyphs.quartz.rgb24.ref.png \ overlapping-glyphs.svg.rgb24.ref.png \ overlapping-glyphs.svg.argb32.ref.png \ paint-repeat.ref.png \ @@ -960,6 +980,7 @@ REFERENCE_IMAGES = \ paint.ref.png \ partial-clip-text.ref.png \ partial-clip-text.ps.ref.png \ + partial-clip-text.quartz.ref.png \ partial-clip-text.svg.ref.png \ partial-coverage-half-reference.ref.png \ partial-coverage-half-triangles.ref.png \ @@ -994,6 +1015,7 @@ REFERENCE_IMAGES = \ pixman-rotate.ref.png \ pixman-rotate.rgb24.ref.png \ pixman-rotate.ps.argb32.ref.png \ + ps-eps.ref.png \ pthread-same-source.image16.ref.png \ pthread-same-source.quartz.xfail.png \ pthread-same-source.ref.png \ @@ -1020,6 +1042,7 @@ REFERENCE_IMAGES = \ push-group-color.image16.ref.png \ push-group-color.quartz.ref.png \ push-group-color.ref.png \ + push-group-color.ps2.ref.png \ push-group-color.ps3.ref.png \ push-group-color.xlib.ref.png \ quartz-surface-source.rgb24.ref.png \ @@ -1027,22 +1050,27 @@ REFERENCE_IMAGES = \ quartz-surface-source.ps2.ref.png \ quartz-surface-source.ps3.ref.png \ radial-gradient.image16.ref.png \ - radial-gradient.pdf.ref.png \ radial-gradient.ref.png \ - radial-gradient.svg.xfail.png \ + radial-gradient.quartz.ref.png \ + radial-gradient-extend.ps3.ref.png \ radial-gradient-extend.ref.png \ radial-gradient-source.image16.ref.png \ radial-gradient-source.argb32.ref.png \ radial-gradient-source.rgb24.ref.png \ - radial-gradient-source.pdf.argb32.ref.png \ - radial-gradient-mask.argb32.ref.png \ - radial-gradient-mask.rgb24.ref.png \ + radial-gradient-source.quartz.argb32.ref.png \ + radial-gradient-source.quartz.rgb24.ref.png \ + radial-gradient-mask.ref.png \ radial-gradient-mask.image16.ref.png \ + radial-gradient-mask.quartz.ref.png \ radial-gradient-mask-source.argb32.ref.png \ radial-gradient-mask-source.rgb24.ref.png \ radial-gradient-mask-source.image16.ref.png \ - radial-gradient-one-stop.argb32.ref.png \ - radial-gradient-one-stop.rgb24.ref.png \ + radial-gradient-mask-source.quartz.argb32.ref.png \ + radial-gradient-mask-source.quartz.rgb24.ref.png \ + radial-gradient-mask-source.xlib.argb32.ref.png \ + radial-gradient-mask-source.xlib.rgb24.ref.png \ + radial-gradient-one-stop.ref.png \ + radial-gradient-one-stop.quartz.ref.png \ random-intersections-eo.image16.ref.png \ random-intersections-eo.ps.ref.png \ random-intersections-eo.quartz.ref.png \ @@ -1067,6 +1095,20 @@ REFERENCE_IMAGES = \ random-intersections-curves-nz.ref.png \ random-intersections-curves-nz.xlib.ref.png \ random-intersections-curves-nz.xlib-fallback.ref.png \ + recording-surface-pattern.image16.ref.png \ + recording-surface-pattern.gl.argb32.ref.png \ + recording-surface-pattern.pdf.argb32.ref.png \ + recording-surface-pattern.pdf.rgb24.ref.png \ + recording-surface-pattern.ps.argb32.ref.png \ + recording-surface-pattern.ps.rgb24.ref.png \ + recording-surface-pattern.quartz.argb32.ref.png \ + recording-surface-pattern.quartz.rgb24.ref.png \ + recording-surface-pattern.ref.png \ + recording-surface-pattern.rgb24.ref.png \ + recording-surface-pattern.svg.argb32.ref.png \ + recording-surface-pattern.svg.rgb24.ref.png \ + recording-surface-pattern.xlib.argb32.ref.png \ + recording-surface-pattern.xlib.rgb24.ref.png \ rectangle-rounding-error.ref.png \ rectilinear-dash.quartz.xfail.png \ rectilinear-dash.ref.png \ @@ -1255,8 +1297,8 @@ REFERENCE_IMAGES = \ surface-pattern-operator.xlib.rgb24.ref.png \ surface-pattern-operator.pdf.argb32.xfail.png \ surface-pattern-operator.pdf.rgb24.xfail.png \ - surface-pattern-operator.quartz.argb32.xfail.png \ - surface-pattern-operator.quartz.rgb24.xfail.png \ + surface-pattern-operator.quartz.argb32.ref.png \ + surface-pattern-operator.quartz.rgb24.ref.png \ surface-pattern-scale-down.image16.ref.png \ surface-pattern-scale-down.pdf.ref.png \ surface-pattern-scale-down.ps2.ref.png \ @@ -1367,6 +1409,8 @@ REFERENCE_IMAGES = \ unbounded-operator.pdf.argb32.ref.png \ unbounded-operator.ps2.argb32.ref.png \ unbounded-operator.ps3.argb32.ref.png \ + unbounded-operator.quartz.argb32.ref.png \ + unbounded-operator.quartz.rgb24.ref.png \ unbounded-operator.ref.png \ unbounded-operator.rgb24.ref.png \ unbounded-operator.svg12.argb32.ref.png \ @@ -1399,6 +1443,7 @@ REFERENCE_IMAGES = \ user-font.ref.png \ user-font.svg.ref.png \ user-font.xlib.ref.png \ + xcb-stress-cache.ref.png \ xcb-surface-source.rgb24.ref.png \ xcb-surface-source.argb32.ref.png \ xcomposite-projection.ref.png \ @@ -1414,20 +1459,22 @@ REFERENCE_IMAGES = \ xlib-surface-source.ps3.ref.png \ xlib-surface-source.svg12.argb32.xfail.png \ xlib-surface-source.svg12.rgb24.xfail.png \ + white-in-noop.ref.png \ zero-mask.ref.png \ zero-mask.rgb24.ref.png \ zero-alpha.ref.png EXTRA_DIST += \ 6x13.pcf \ -make-html.pl \ +index.html \ +jp2.jp2 \ jpeg.jpg \ png.png \ -jp2.jp2 \ romedalen.jpg \ romedalen.png \ scarab.jpg \ surface-source.c \ +testtable.js \ $(REFERENCE_IMAGES) # Any test for which the code committed to CVS is expected to fail @@ -1662,7 +1709,6 @@ VALGRIND_FLAGS = \ CLEANFILES += \ valgrind-log \ - index.html \ ref.hash \ png-test.png \ png.out.png \ @@ -1674,7 +1720,6 @@ CLEANFILES += \ ps-surface-source.out.ps \ pdf-features.pdf \ pdf-mime-data.out* \ - ps-eps.eps \ ps-features.ps \ svg-clip.svg \ svg-surface.svg \ @@ -1705,24 +1750,16 @@ recheck: @echo Re-checking failed tests @$(MAKE) $(AM_MAKEFLAGS) $(recheck) -# Checks tests and creates index.html. +# Checks tests. # Target doesn't fail if tests fail. test: - @$(MAKE) $(AM_MAKEFLAGS) check; \ - $(MAKE) $(AM_MAKEFLAGS) html + @$(MAKE) $(AM_MAKEFLAGS) check -# Re-checks tests and creates index.html. +# Re-checks tests. # Target doesn't fail if tests fail. retest: @CAIRO_TESTS="$(FAILED_TESTS)"; \ - $(MAKE) $(AM_MAKEFLAGS) check; \ - $(MAKE) $(AM_MAKEFLAGS) html - -html-local: index.html - -# Make index.html with no dependency tracking, containing only the failed tests. -rehtml: - @CAIRO_TESTS="$(FAILED_TESTS)" $(MAKE) $(AM_MAKEFLAGS) html + $(MAKE) $(AM_MAKEFLAGS) check # Run tests under a tool specified by TOOL. For example, make run TOOL=gdb run: @@ -1740,11 +1777,6 @@ NOLOG_TESTS_LOG = $(NOLOG_TESTS:=.log) $(NOLOG_TESTS_LOG): @echo dummy > $@ -index.html: $(srcdir)/make-html.pl - @echo Creating index.html - @perl $(srcdir)/make-html.pl > $@ - - # Identify identical reference images check-ref-dups: @LANG=C; \ @@ -1795,6 +1827,17 @@ check-ref-missing: release-verify-sane-tests: check-ref-missing -.PHONY: check-valgrind test recheck retest rehtml check-ref-dups check-ref-missing release-verify-sane-tests +results.tar: + @tar cf $@ index.html testtable.js *.log; \ + for i in output/*.fail.png ; do \ + testname=$${i#output/} ; \ + testname=$${testname%%.*} ; \ + tar uf $@ $${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ + done + +results.tar.gz: results.tar + gzip -c $< > $@ + +.PHONY: check-valgrind test recheck retest check-ref-dups check-ref-missing release-verify-sane-tests EXTRA_DIST += Makefile.win32 diff --git a/test/Makefile.in b/test/Makefile.in index 5bcb7b6..c9bfced 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -127,19 +127,19 @@ am__cairo_test_suite_SOURCES_DIST = buffer-diff.c cairo-test.c \ cairo-test-private.h a1-bug.c a1-image-sample.c a1-mask.c \ a1-mask-sample.c a1-traps-sample.c a1-rasterisation.c \ a8-clear.c a8-mask.c aliasing.c alpha-similar.c \ - api-special-cases.c big-line.c big-trap.c bilevel-image.c \ - bug-bo-rectangular.c bug-extents.c bug-seams.c caps.c \ - caps-joins.c caps-joins-alpha.c caps-joins-curve.c \ - caps-sub-paths.c clear.c clear-source.c clip-all.c \ - clip-contexts.c clip-disjoint.c clip-device-offset.c \ - clip-draw-unbounded.c clip-empty.c clip-empty-group.c \ - clip-empty-save.c clip-fill.c clip-fill-no-op.c \ - clip-fill-rule.c clip-fill-rule-pixel-aligned.c \ - clip-group-shapes.c clip-image.c clip-nesting.c \ - clip-operator.c clip-push-group.c clip-shape.c clip-stroke.c \ - clip-stroke-no-op.c clip-text.c clip-twice.c \ - clip-twice-rectangle.c clip-unbounded.c clip-zero.c \ - clipped-group.c clipped-surface.c close-path.c \ + arc-infinite-loop.c arc-looping-dash.c api-special-cases.c \ + big-line.c big-trap.c bilevel-image.c bug-bo-rectangular.c \ + bug-extents.c bug-seams.c caps.c caps-joins.c \ + caps-joins-alpha.c caps-joins-curve.c caps-sub-paths.c clear.c \ + clear-source.c clip-all.c clip-contexts.c clip-disjoint.c \ + clip-device-offset.c clip-draw-unbounded.c clip-empty.c \ + clip-empty-group.c clip-empty-save.c clip-fill.c \ + clip-fill-no-op.c clip-fill-rule.c \ + clip-fill-rule-pixel-aligned.c clip-group-shapes.c \ + clip-image.c clip-nesting.c clip-operator.c clip-push-group.c \ + clip-shape.c clip-stroke.c clip-stroke-no-op.c clip-text.c \ + clip-twice.c clip-twice-rectangle.c clip-unbounded.c \ + clip-zero.c clipped-group.c clipped-surface.c close-path.c \ close-path-current-point.c \ composite-integer-translate-source.c \ composite-integer-translate-over.c \ @@ -169,11 +169,11 @@ am__cairo_test_suite_SOURCES_DIST = buffer-diff.c cairo-test.c \ get-group-target.c get-path-extents.c gradient-alpha.c \ gradient-constant-alpha.c gradient-zero-stops.c \ gradient-zero-stops-mask.c group-clip.c group-paint.c \ - group-unaligned.c half-coverage.c halo.c huge-linear.c \ - huge-radial.c image-surface-source.c implicit-close.c \ - infinite-join.c in-fill-empty-trapezoid.c in-fill-trapezoid.c \ - invalid-matrix.c inverse-text.c joins.c large-clip.c \ - large-font.c large-source.c large-source-roi.c \ + group-state.c group-unaligned.c half-coverage.c halo.c \ + huge-linear.c huge-radial.c image-surface-source.c \ + implicit-close.c infinite-join.c in-fill-empty-trapezoid.c \ + in-fill-trapezoid.c invalid-matrix.c inverse-text.c joins.c \ + large-clip.c large-font.c large-source.c large-source-roi.c \ large-twin-antialias-mixed.c leaky-dash.c \ leaky-dashed-rectangle.c leaky-dashed-stroke.c leaky-polygon.c \ line-width.c line-width-scale.c line-width-zero.c \ @@ -183,9 +183,12 @@ am__cairo_test_suite_SOURCES_DIST = buffer-diff.c cairo-test.c \ linear-step-function.c linear-uniform.c long-dashed-lines.c \ long-lines.c mask.c mask-alpha.c mask-ctm.c mask-glyphs.c \ mask-surface-ctm.c mask-transformed-image.c \ - mask-transformed-similar.c recording-surface-pattern.c \ - mime-data.c miter-precision.c move-to-show-surface.c \ - new-sub-path.c nil-surface.c operator.c operator-alpha.c \ + mask-transformed-similar.c mesh-pattern.c \ + mesh-pattern-accuracy.c mesh-pattern-conical.c \ + mesh-pattern-control-points.c mesh-pattern-fold.c \ + mesh-pattern-overlap.c mesh-pattern-transformed.c mime-data.c \ + miter-precision.c move-to-show-surface.c new-sub-path.c \ + nil-surface.c operator.c operator-alpha.c \ operator-alpha-alpha.c operator-clear.c operator-source.c \ over-above-source.c over-around-source.c over-below-source.c \ over-between-source.c overlapping-glyphs.c paint.c \ @@ -194,16 +197,14 @@ am__cairo_test_suite_SOURCES_DIST = buffer-diff.c cairo-test.c \ path-stroke-twice.c path-precision.c pattern-get-type.c \ pattern-getters.c pixman-rotate.c png.c push-group.c \ push-group-color.c push-group-path-offset.c radial-gradient.c \ - radial-gradient-extend.c radial-gradient-mask.c \ - radial-gradient-mask-source.c radial-gradient-one-stop.c \ - radial-gradient-source.c random-intersections-eo.c \ + radial-gradient-extend.c random-intersections-eo.c \ random-intersections-nonzero.c \ random-intersections-curves-eo.c \ - random-intersections-curves-nz.c rectangle-rounding-error.c \ - rectilinear-fill.c rectilinear-grid.c \ - rectilinear-miter-limit.c rectilinear-dash.c \ - rectilinear-stroke.c reflected-stroke.c rel-path.c \ - rgb24-ignore-alpha.c rotate-image-surface-paint.c \ + random-intersections-curves-nz.c recording-surface-pattern.c \ + rectangle-rounding-error.c rectilinear-fill.c \ + rectilinear-grid.c rectilinear-miter-limit.c \ + rectilinear-dash.c rectilinear-stroke.c reflected-stroke.c \ + rel-path.c rgb24-ignore-alpha.c rotate-image-surface-paint.c \ rotated-clip.c rounded-rectangle-fill.c \ rounded-rectangle-stroke.c scale-down-source-surface-paint.c \ scale-offset-image.c scale-offset-similar.c \ @@ -232,10 +233,10 @@ am__cairo_test_suite_SOURCES_DIST = buffer-diff.c cairo-test.c \ twin-antialias-none.c twin-antialias-subpixel.c \ unantialiased-shapes.c unbounded-operator.c user-data.c \ user-font.c user-font-mask.c user-font-proxy.c \ - user-font-rescale.c xcomposite-projection.c \ - xlib-expose-event.c zero-alpha.c zero-mask.c \ - pthread-same-source.c pthread-show-text.c pthread-similar.c \ - bitmap-font.c ft-font-create-for-ft-face.c \ + user-font-rescale.c white-in-noop.c xcb-stress-cache.c \ + xcomposite-projection.c xlib-expose-event.c zero-alpha.c \ + zero-mask.c pthread-same-source.c pthread-show-text.c \ + pthread-similar.c bitmap-font.c ft-font-create-for-ft-face.c \ ft-show-glyphs-positioning.c ft-show-glyphs-table.c \ ft-text-vertical-layout-type1.c \ ft-text-vertical-layout-type3.c ft-text-antialias-none.c \ @@ -306,6 +307,8 @@ am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-a8-mask.$(OBJEXT) \ cairo_test_suite-aliasing.$(OBJEXT) \ cairo_test_suite-alpha-similar.$(OBJEXT) \ + cairo_test_suite-arc-infinite-loop.$(OBJEXT) \ + cairo_test_suite-arc-looping-dash.$(OBJEXT) \ cairo_test_suite-api-special-cases.$(OBJEXT) \ cairo_test_suite-big-line.$(OBJEXT) \ cairo_test_suite-big-trap.$(OBJEXT) \ @@ -419,6 +422,7 @@ am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-gradient-zero-stops-mask.$(OBJEXT) \ cairo_test_suite-group-clip.$(OBJEXT) \ cairo_test_suite-group-paint.$(OBJEXT) \ + cairo_test_suite-group-state.$(OBJEXT) \ cairo_test_suite-group-unaligned.$(OBJEXT) \ cairo_test_suite-half-coverage.$(OBJEXT) \ cairo_test_suite-halo.$(OBJEXT) \ @@ -461,7 +465,13 @@ am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-mask-surface-ctm.$(OBJEXT) \ cairo_test_suite-mask-transformed-image.$(OBJEXT) \ cairo_test_suite-mask-transformed-similar.$(OBJEXT) \ - cairo_test_suite-recording-surface-pattern.$(OBJEXT) \ + cairo_test_suite-mesh-pattern.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-accuracy.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-conical.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-control-points.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-fold.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-overlap.$(OBJEXT) \ + cairo_test_suite-mesh-pattern-transformed.$(OBJEXT) \ cairo_test_suite-mime-data.$(OBJEXT) \ cairo_test_suite-miter-precision.$(OBJEXT) \ cairo_test_suite-move-to-show-surface.$(OBJEXT) \ @@ -495,14 +505,11 @@ am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-push-group-path-offset.$(OBJEXT) \ cairo_test_suite-radial-gradient.$(OBJEXT) \ cairo_test_suite-radial-gradient-extend.$(OBJEXT) \ - cairo_test_suite-radial-gradient-mask.$(OBJEXT) \ - cairo_test_suite-radial-gradient-mask-source.$(OBJEXT) \ - cairo_test_suite-radial-gradient-one-stop.$(OBJEXT) \ - cairo_test_suite-radial-gradient-source.$(OBJEXT) \ cairo_test_suite-random-intersections-eo.$(OBJEXT) \ cairo_test_suite-random-intersections-nonzero.$(OBJEXT) \ cairo_test_suite-random-intersections-curves-eo.$(OBJEXT) \ cairo_test_suite-random-intersections-curves-nz.$(OBJEXT) \ + cairo_test_suite-recording-surface-pattern.$(OBJEXT) \ cairo_test_suite-rectangle-rounding-error.$(OBJEXT) \ cairo_test_suite-rectilinear-fill.$(OBJEXT) \ cairo_test_suite-rectilinear-grid.$(OBJEXT) \ @@ -585,6 +592,8 @@ am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-user-font-mask.$(OBJEXT) \ cairo_test_suite-user-font-proxy.$(OBJEXT) \ cairo_test_suite-user-font-rescale.$(OBJEXT) \ + cairo_test_suite-white-in-noop.$(OBJEXT) \ + cairo_test_suite-xcb-stress-cache.$(OBJEXT) \ cairo_test_suite-xcomposite-projection.$(OBJEXT) \ cairo_test_suite-xlib-expose-event.$(OBJEXT) \ cairo_test_suite-zero-alpha.$(OBJEXT) \ @@ -927,37 +936,38 @@ xlib_xrender_CFLAGS = @xlib_xrender_CFLAGS@ xlib_xrender_LIBS = @xlib_xrender_LIBS@ BUILT_SOURCES = cairo-test-constructors.c CLEANFILES = *.i *.s *.gch $(EXTRA_LTLIBRARIES) $(EXTRA_PROGRAMS) \ - $(check_PROGRAMS) $(BUILT_SOURCES) valgrind-log index.html \ - ref.hash png-test.png png.out.png create-for-stream.pdf \ + $(check_PROGRAMS) $(BUILT_SOURCES) valgrind-log ref.hash \ + png-test.png png.out.png create-for-stream.pdf \ create-for-stream.ps create-for-stream.svg \ svg-surface-source.out.svg pdf-surface-source.out.pdf \ ps-surface-source.out.ps pdf-features.pdf pdf-mime-data.out* \ - ps-eps.eps ps-features.ps svg-clip.svg svg-surface.svg \ - multi-page.pdf multi-page.ps $(NULL) + ps-features.ps svg-clip.svg svg-surface.svg multi-page.pdf \ + multi-page.ps $(NULL) DISTCLEANFILES = $(BUILT_SOURCES) EXTRA_DIST = $(BUILT_SOURCES) $(noinst_SCRIPTS) COPYING \ make-cairo-test-constructors.sh run-cairo-test-suite.sh \ - 6x13.pcf make-html.pl jpeg.jpg png.png jp2.jp2 romedalen.jpg \ - romedalen.png scarab.jpg surface-source.c $(REFERENCE_IMAGES) \ - Makefile.win32 + 6x13.pcf index.html jp2.jp2 jpeg.jpg png.png romedalen.jpg \ + romedalen.png scarab.jpg surface-source.c testtable.js \ + $(REFERENCE_IMAGES) Makefile.win32 EXTRA_LTLIBRARIES = MAINTAINERCLEANFILES = Makefile.in TESTS = cairo-test-suite$(EXEEXT) test_sources = a1-bug.c a1-image-sample.c a1-mask.c a1-mask-sample.c \ a1-traps-sample.c a1-rasterisation.c a8-clear.c a8-mask.c \ - aliasing.c alpha-similar.c api-special-cases.c big-line.c \ - big-trap.c bilevel-image.c bug-bo-rectangular.c bug-extents.c \ - bug-seams.c caps.c caps-joins.c caps-joins-alpha.c \ - caps-joins-curve.c caps-sub-paths.c clear.c clear-source.c \ - clip-all.c clip-contexts.c clip-disjoint.c \ - clip-device-offset.c clip-draw-unbounded.c clip-empty.c \ - clip-empty-group.c clip-empty-save.c clip-fill.c \ - clip-fill-no-op.c clip-fill-rule.c \ - clip-fill-rule-pixel-aligned.c clip-group-shapes.c \ - clip-image.c clip-nesting.c clip-operator.c clip-push-group.c \ - clip-shape.c clip-stroke.c clip-stroke-no-op.c clip-text.c \ - clip-twice.c clip-twice-rectangle.c clip-unbounded.c \ - clip-zero.c clipped-group.c clipped-surface.c close-path.c \ + aliasing.c alpha-similar.c arc-infinite-loop.c \ + arc-looping-dash.c api-special-cases.c big-line.c big-trap.c \ + bilevel-image.c bug-bo-rectangular.c bug-extents.c bug-seams.c \ + caps.c caps-joins.c caps-joins-alpha.c caps-joins-curve.c \ + caps-sub-paths.c clear.c clear-source.c clip-all.c \ + clip-contexts.c clip-disjoint.c clip-device-offset.c \ + clip-draw-unbounded.c clip-empty.c clip-empty-group.c \ + clip-empty-save.c clip-fill.c clip-fill-no-op.c \ + clip-fill-rule.c clip-fill-rule-pixel-aligned.c \ + clip-group-shapes.c clip-image.c clip-nesting.c \ + clip-operator.c clip-push-group.c clip-shape.c clip-stroke.c \ + clip-stroke-no-op.c clip-text.c clip-twice.c \ + clip-twice-rectangle.c clip-unbounded.c clip-zero.c \ + clipped-group.c clipped-surface.c close-path.c \ close-path-current-point.c \ composite-integer-translate-source.c \ composite-integer-translate-over.c \ @@ -987,11 +997,11 @@ test_sources = a1-bug.c a1-image-sample.c a1-mask.c a1-mask-sample.c \ get-group-target.c get-path-extents.c gradient-alpha.c \ gradient-constant-alpha.c gradient-zero-stops.c \ gradient-zero-stops-mask.c group-clip.c group-paint.c \ - group-unaligned.c half-coverage.c halo.c huge-linear.c \ - huge-radial.c image-surface-source.c implicit-close.c \ - infinite-join.c in-fill-empty-trapezoid.c in-fill-trapezoid.c \ - invalid-matrix.c inverse-text.c joins.c large-clip.c \ - large-font.c large-source.c large-source-roi.c \ + group-state.c group-unaligned.c half-coverage.c halo.c \ + huge-linear.c huge-radial.c image-surface-source.c \ + implicit-close.c infinite-join.c in-fill-empty-trapezoid.c \ + in-fill-trapezoid.c invalid-matrix.c inverse-text.c joins.c \ + large-clip.c large-font.c large-source.c large-source-roi.c \ large-twin-antialias-mixed.c leaky-dash.c \ leaky-dashed-rectangle.c leaky-dashed-stroke.c leaky-polygon.c \ line-width.c line-width-scale.c line-width-zero.c \ @@ -1001,9 +1011,12 @@ test_sources = a1-bug.c a1-image-sample.c a1-mask.c a1-mask-sample.c \ linear-step-function.c linear-uniform.c long-dashed-lines.c \ long-lines.c mask.c mask-alpha.c mask-ctm.c mask-glyphs.c \ mask-surface-ctm.c mask-transformed-image.c \ - mask-transformed-similar.c recording-surface-pattern.c \ - mime-data.c miter-precision.c move-to-show-surface.c \ - new-sub-path.c nil-surface.c operator.c operator-alpha.c \ + mask-transformed-similar.c mesh-pattern.c \ + mesh-pattern-accuracy.c mesh-pattern-conical.c \ + mesh-pattern-control-points.c mesh-pattern-fold.c \ + mesh-pattern-overlap.c mesh-pattern-transformed.c mime-data.c \ + miter-precision.c move-to-show-surface.c new-sub-path.c \ + nil-surface.c operator.c operator-alpha.c \ operator-alpha-alpha.c operator-clear.c operator-source.c \ over-above-source.c over-around-source.c over-below-source.c \ over-between-source.c overlapping-glyphs.c paint.c \ @@ -1012,16 +1025,14 @@ test_sources = a1-bug.c a1-image-sample.c a1-mask.c a1-mask-sample.c \ path-stroke-twice.c path-precision.c pattern-get-type.c \ pattern-getters.c pixman-rotate.c png.c push-group.c \ push-group-color.c push-group-path-offset.c radial-gradient.c \ - radial-gradient-extend.c radial-gradient-mask.c \ - radial-gradient-mask-source.c radial-gradient-one-stop.c \ - radial-gradient-source.c random-intersections-eo.c \ + radial-gradient-extend.c random-intersections-eo.c \ random-intersections-nonzero.c \ random-intersections-curves-eo.c \ - random-intersections-curves-nz.c rectangle-rounding-error.c \ - rectilinear-fill.c rectilinear-grid.c \ - rectilinear-miter-limit.c rectilinear-dash.c \ - rectilinear-stroke.c reflected-stroke.c rel-path.c \ - rgb24-ignore-alpha.c rotate-image-surface-paint.c \ + random-intersections-curves-nz.c recording-surface-pattern.c \ + rectangle-rounding-error.c rectilinear-fill.c \ + rectilinear-grid.c rectilinear-miter-limit.c \ + rectilinear-dash.c rectilinear-stroke.c reflected-stroke.c \ + rel-path.c rgb24-ignore-alpha.c rotate-image-surface-paint.c \ rotated-clip.c rounded-rectangle-fill.c \ rounded-rectangle-stroke.c scale-down-source-surface-paint.c \ scale-offset-image.c scale-offset-similar.c \ @@ -1050,12 +1061,12 @@ test_sources = a1-bug.c a1-image-sample.c a1-mask.c a1-mask-sample.c \ twin-antialias-none.c twin-antialias-subpixel.c \ unantialiased-shapes.c unbounded-operator.c user-data.c \ user-font.c user-font-mask.c user-font-proxy.c \ - user-font-rescale.c xcomposite-projection.c \ - xlib-expose-event.c zero-alpha.c zero-mask.c $(am__append_1) \ - $(am__append_2) $(am__append_3) $(am__append_4) \ - $(am__append_5) $(am__append_6) $(am__append_7) \ - $(am__append_8) $(am__append_9) $(am__append_10) \ - $(am__append_11) $(am__append_12) $(test) + user-font-rescale.c white-in-noop.c xcb-stress-cache.c \ + xcomposite-projection.c xlib-expose-event.c zero-alpha.c \ + zero-mask.c $(am__append_1) $(am__append_2) $(am__append_3) \ + $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_7) $(am__append_8) $(am__append_9) \ + $(am__append_10) $(am__append_11) $(am__append_12) $(test) pthread_test_sources = \ pthread-same-source.c \ pthread-show-text.c \ @@ -1163,21 +1174,24 @@ cairo_test_suite_DEPENDENCIES = \ REFERENCE_IMAGES = \ a1-bug.ref.png \ a1-bug.image16.ref.png \ + a1-bug.quartz.xfail.png \ a1-bug.xlib.ref.png \ a1-image-sample.ref.png \ a1-image-sample.gl.xfail.png \ - a1-image-sample.quartz.xfail.png \ a1-mask.ref.png \ a1-mask-sample.ref.png \ - a1-mask-sample.quartz.xfail.png \ a1-rasterisation-rectangles.ref.png \ + a1-rasterisation-rectangles.quartz.xfail.png \ a1-rasterisation-triangles.ref.png \ + a1-rasterisation-triangles.quartz.xfail.png \ a1-traps-sample.ref.png \ a1-traps-sample.quartz.xfail.png \ a8-clear.ref.png \ + a8-clear.quartz.ref.png \ a8-mask.ref.png \ aliasing.ref.png \ aliasing.image16.ref.png \ + aliasing.quartz.ref.png \ aliasing.xlib.ref.png \ alpha-similar.gl.argb32.xfail.png \ alpha-similar.gl.rgb24.xfail.png \ @@ -1190,6 +1204,11 @@ REFERENCE_IMAGES = \ alpha-similar.svg.argb32.xfail.png \ alpha-similar.svg.rgb24.xfail.png \ api-special-cases.ref.png \ + arc-infinite-loop.ref.png \ + arc-looping-dash.image16.ref.png \ + arc-looping-dash.ps.ref.png \ + arc-looping-dash.quartz.ref.png \ + arc-looping-dash.ref.png \ big-line.ref.png \ big-line.image16.ref.png \ big-line.ps.ref.png \ @@ -1514,11 +1533,15 @@ REFERENCE_IMAGES = \ extended-blend.image16.ref.png \ extended-blend.argb32.ref.png \ extended-blend.rgb24.ref.png \ + extended-blend.quartz.argb32.ref.png \ + extended-blend.quartz.rgb24.ref.png \ extended-blend.svg12.argb32.xfail.png \ extended-blend.svg12.rgb24.xfail.png \ extended-blend-alpha.image16.ref.png \ extended-blend-alpha.argb32.ref.png \ extended-blend-alpha.rgb24.ref.png \ + extended-blend-alpha.quartz.argb32.ref.png \ + extended-blend-alpha.quartz.rgb24.ref.png \ extended-blend-alpha.svg12.argb32.xfail.png \ extended-blend-alpha.svg12.rgb24.xfail.png \ extend-pad-border.image16.ref.png \ @@ -1549,22 +1572,27 @@ REFERENCE_IMAGES = \ extend-repeat.ps2.ref.png \ extend-repeat.ps3.ref.png \ extend-repeat.ref.png \ - fallback-resolution.ppi150x150.ref.png \ - fallback-resolution.ppi150x72.ref.png \ - fallback-resolution.ppi300x300.ref.png \ - fallback-resolution.ppi300x72.ref.png \ - fallback-resolution.ppi37.5x37.5.ref.png \ - fallback-resolution.ppi37.5x72.ref.png \ - fallback-resolution.ppi600x600.ref.png \ - fallback-resolution.ppi600x72.ref.png \ - fallback-resolution.ppi72x150.ref.png \ - fallback-resolution.ppi72x300.ref.png \ - fallback-resolution.ppi72x37.5.ref.png \ - fallback-resolution.ppi72x600.ref.png \ + fallback-resolution.ppi144x144.ps.ref.png \ + fallback-resolution.ppi144x144.ref.png \ + fallback-resolution.ppi144x72.ps.ref.png \ + fallback-resolution.ppi144x72.ref.png \ + fallback-resolution.ppi288x288.pdf.ref.png \ + fallback-resolution.ppi288x288.ps.ref.png \ + fallback-resolution.ppi288x288.svg.ref.png \ + fallback-resolution.ppi288x72.ps.ref.png \ + fallback-resolution.ppi288x72.ref.png \ + fallback-resolution.ppi576x576.pdf.ref.png \ + fallback-resolution.ppi576x576.ps.ref.png \ + fallback-resolution.ppi576x576.svg.ref.png \ + fallback-resolution.ppi576x72.ps.ref.png \ + fallback-resolution.ppi576x72.ref.png \ + fallback-resolution.ppi72x144.ps.ref.png \ + fallback-resolution.ppi72x144.ref.png \ + fallback-resolution.ppi72x288.ps.ref.png \ + fallback-resolution.ppi72x288.ref.png \ + fallback-resolution.ppi72x576.ps.ref.png \ + fallback-resolution.ppi72x576.ref.png \ fallback-resolution.ppi72x72.ref.png \ - fallback-resolution.ppi72x75.ref.png \ - fallback-resolution.ppi75x72.ref.png \ - fallback-resolution.ppi75x75.ref.png \ fill-alpha-pattern.image16.ref.png \ fill-alpha-pattern.ps3.argb32.ref.png \ fill-alpha-pattern.ps3.ref.png \ @@ -1636,7 +1664,6 @@ REFERENCE_IMAGES = \ filter-nearest-offset.pdf.xfail.png \ filter-nearest-offset.ps2.ref.png \ filter-nearest-offset.ps3.ref.png \ - filter-nearest-offset.quartz.xfail.png \ filter-nearest-offset.ref.png \ filter-nearest-offset.svg.xfail.png \ filter-nearest-transformed.image16.ref.png \ @@ -1748,6 +1775,7 @@ REFERENCE_IMAGES = \ huge-linear.image16.ref.png \ huge-linear.pdf.ref.png \ huge-linear.ps3.ref.png \ + huge-linear.quartz.ref.png \ huge-linear.ref.png \ huge-radial.image16.ref.png \ huge-radial.pdf.argb32.ref.png \ @@ -1821,6 +1849,7 @@ REFERENCE_IMAGES = \ linear-gradient.quartz.ref.png \ linear-gradient.ref.png \ linear-gradient.xlib.ref.png \ + linear-gradient-large.quartz.ref.png \ linear-gradient-large.ref.png \ linear-gradient-one-stop.argb32.ref.png \ linear-gradient-one-stop.rgb24.ref.png \ @@ -1873,20 +1902,20 @@ REFERENCE_IMAGES = \ mask.svg.rgb24.xfail.png \ mask.xlib.ref.png \ mask.xlib.rgb24.ref.png \ - recording-surface-pattern.image16.ref.png \ - recording-surface-pattern.gl.argb32.ref.png \ - recording-surface-pattern.pdf.argb32.ref.png \ - recording-surface-pattern.pdf.rgb24.ref.png \ - recording-surface-pattern.ps.argb32.ref.png \ - recording-surface-pattern.ps.rgb24.ref.png \ - recording-surface-pattern.quartz.argb32.ref.png \ - recording-surface-pattern.quartz.rgb24.ref.png \ - recording-surface-pattern.ref.png \ - recording-surface-pattern.rgb24.ref.png \ - recording-surface-pattern.svg.argb32.ref.png \ - recording-surface-pattern.svg.rgb24.ref.png \ - recording-surface-pattern.xlib.argb32.ref.png \ - recording-surface-pattern.xlib.rgb24.ref.png \ + mesh-pattern.image16.ref.png \ + mesh-pattern.ref.png \ + mesh-pattern-accuracy.image16.ref.png \ + mesh-pattern-accuracy.ref.png \ + mesh-pattern-conical.image16.ref.png \ + mesh-pattern-conical.ref.png \ + mesh-pattern-control-points.image16.ref.png \ + mesh-pattern-control-points.ref.png \ + mesh-pattern-fold.image16.ref.png \ + mesh-pattern-fold.ref.png \ + mesh-pattern-overlap.image16.ref.png \ + mesh-pattern-overlap.ref.png \ + mesh-pattern-transformed.image16.ref.png \ + mesh-pattern-transformed.ref.png \ mime-data.pdf.ref.png \ mime-data.ps.ref.png \ mime-data.ref.png \ @@ -1984,6 +2013,8 @@ REFERENCE_IMAGES = \ overlapping-glyphs.rgb24.ref.png \ overlapping-glyphs.pdf.argb32.xfail.png \ overlapping-glyphs.pdf.rgb24.xfail.png \ + overlapping-glyphs.quartz.argb32.ref.png \ + overlapping-glyphs.quartz.rgb24.ref.png \ overlapping-glyphs.svg.rgb24.ref.png \ overlapping-glyphs.svg.argb32.ref.png \ paint-repeat.ref.png \ @@ -1996,6 +2027,7 @@ REFERENCE_IMAGES = \ paint.ref.png \ partial-clip-text.ref.png \ partial-clip-text.ps.ref.png \ + partial-clip-text.quartz.ref.png \ partial-clip-text.svg.ref.png \ partial-coverage-half-reference.ref.png \ partial-coverage-half-triangles.ref.png \ @@ -2030,6 +2062,7 @@ REFERENCE_IMAGES = \ pixman-rotate.ref.png \ pixman-rotate.rgb24.ref.png \ pixman-rotate.ps.argb32.ref.png \ + ps-eps.ref.png \ pthread-same-source.image16.ref.png \ pthread-same-source.quartz.xfail.png \ pthread-same-source.ref.png \ @@ -2056,6 +2089,7 @@ REFERENCE_IMAGES = \ push-group-color.image16.ref.png \ push-group-color.quartz.ref.png \ push-group-color.ref.png \ + push-group-color.ps2.ref.png \ push-group-color.ps3.ref.png \ push-group-color.xlib.ref.png \ quartz-surface-source.rgb24.ref.png \ @@ -2063,22 +2097,27 @@ REFERENCE_IMAGES = \ quartz-surface-source.ps2.ref.png \ quartz-surface-source.ps3.ref.png \ radial-gradient.image16.ref.png \ - radial-gradient.pdf.ref.png \ radial-gradient.ref.png \ - radial-gradient.svg.xfail.png \ + radial-gradient.quartz.ref.png \ + radial-gradient-extend.ps3.ref.png \ radial-gradient-extend.ref.png \ radial-gradient-source.image16.ref.png \ radial-gradient-source.argb32.ref.png \ radial-gradient-source.rgb24.ref.png \ - radial-gradient-source.pdf.argb32.ref.png \ - radial-gradient-mask.argb32.ref.png \ - radial-gradient-mask.rgb24.ref.png \ + radial-gradient-source.quartz.argb32.ref.png \ + radial-gradient-source.quartz.rgb24.ref.png \ + radial-gradient-mask.ref.png \ radial-gradient-mask.image16.ref.png \ + radial-gradient-mask.quartz.ref.png \ radial-gradient-mask-source.argb32.ref.png \ radial-gradient-mask-source.rgb24.ref.png \ radial-gradient-mask-source.image16.ref.png \ - radial-gradient-one-stop.argb32.ref.png \ - radial-gradient-one-stop.rgb24.ref.png \ + radial-gradient-mask-source.quartz.argb32.ref.png \ + radial-gradient-mask-source.quartz.rgb24.ref.png \ + radial-gradient-mask-source.xlib.argb32.ref.png \ + radial-gradient-mask-source.xlib.rgb24.ref.png \ + radial-gradient-one-stop.ref.png \ + radial-gradient-one-stop.quartz.ref.png \ random-intersections-eo.image16.ref.png \ random-intersections-eo.ps.ref.png \ random-intersections-eo.quartz.ref.png \ @@ -2103,6 +2142,20 @@ REFERENCE_IMAGES = \ random-intersections-curves-nz.ref.png \ random-intersections-curves-nz.xlib.ref.png \ random-intersections-curves-nz.xlib-fallback.ref.png \ + recording-surface-pattern.image16.ref.png \ + recording-surface-pattern.gl.argb32.ref.png \ + recording-surface-pattern.pdf.argb32.ref.png \ + recording-surface-pattern.pdf.rgb24.ref.png \ + recording-surface-pattern.ps.argb32.ref.png \ + recording-surface-pattern.ps.rgb24.ref.png \ + recording-surface-pattern.quartz.argb32.ref.png \ + recording-surface-pattern.quartz.rgb24.ref.png \ + recording-surface-pattern.ref.png \ + recording-surface-pattern.rgb24.ref.png \ + recording-surface-pattern.svg.argb32.ref.png \ + recording-surface-pattern.svg.rgb24.ref.png \ + recording-surface-pattern.xlib.argb32.ref.png \ + recording-surface-pattern.xlib.rgb24.ref.png \ rectangle-rounding-error.ref.png \ rectilinear-dash.quartz.xfail.png \ rectilinear-dash.ref.png \ @@ -2291,8 +2344,8 @@ REFERENCE_IMAGES = \ surface-pattern-operator.xlib.rgb24.ref.png \ surface-pattern-operator.pdf.argb32.xfail.png \ surface-pattern-operator.pdf.rgb24.xfail.png \ - surface-pattern-operator.quartz.argb32.xfail.png \ - surface-pattern-operator.quartz.rgb24.xfail.png \ + surface-pattern-operator.quartz.argb32.ref.png \ + surface-pattern-operator.quartz.rgb24.ref.png \ surface-pattern-scale-down.image16.ref.png \ surface-pattern-scale-down.pdf.ref.png \ surface-pattern-scale-down.ps2.ref.png \ @@ -2403,6 +2456,8 @@ REFERENCE_IMAGES = \ unbounded-operator.pdf.argb32.ref.png \ unbounded-operator.ps2.argb32.ref.png \ unbounded-operator.ps3.argb32.ref.png \ + unbounded-operator.quartz.argb32.ref.png \ + unbounded-operator.quartz.rgb24.ref.png \ unbounded-operator.ref.png \ unbounded-operator.rgb24.ref.png \ unbounded-operator.svg12.argb32.ref.png \ @@ -2435,6 +2490,7 @@ REFERENCE_IMAGES = \ user-font.ref.png \ user-font.svg.ref.png \ user-font.xlib.ref.png \ + xcb-stress-cache.ref.png \ xcb-surface-source.rgb24.ref.png \ xcb-surface-source.argb32.ref.png \ xcomposite-projection.ref.png \ @@ -2450,6 +2506,7 @@ REFERENCE_IMAGES = \ xlib-surface-source.ps3.ref.png \ xlib-surface-source.svg12.argb32.xfail.png \ xlib-surface-source.svg12.rgb24.xfail.png \ + white-in-noop.ref.png \ zero-mask.ref.png \ zero-mask.rgb24.ref.png \ zero-alpha.ref.png @@ -2638,6 +2695,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-aliasing.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-alpha-similar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-api-special-cases.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-arc-infinite-loop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-arc-looping-dash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-big-line.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-big-trap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bilevel-image.Po@am__quote@ @@ -2764,6 +2823,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-gradient-zero-stops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-group-clip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-group-paint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-group-state.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-group-unaligned.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-half-coverage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-halo.Po@am__quote@ @@ -2806,6 +2866,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mask-transformed-image.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mask-transformed-similar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mime-data.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-miter-precision.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-move-to-show-surface.Po@am__quote@ @@ -2849,10 +2916,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-push-group.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-quartz-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient-extend.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient-mask.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-radial-gradient.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-random-intersections-curves-eo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-random-intersections-curves-nz.Po@am__quote@ @@ -2945,6 +3008,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-user-font-proxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-user-font-rescale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-user-font.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-white-in-noop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-xcb-stress-cache.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-xcb-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-xcomposite-projection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-xlib-expose-event.Po@am__quote@ @@ -3208,6 +3273,38 @@ cairo_test_suite-alpha-similar.obj: alpha-similar.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-alpha-similar.obj `if test -f 'alpha-similar.c'; then $(CYGPATH_W) 'alpha-similar.c'; else $(CYGPATH_W) '$(srcdir)/alpha-similar.c'; fi` +cairo_test_suite-arc-infinite-loop.o: arc-infinite-loop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-arc-infinite-loop.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Tpo -c -o cairo_test_suite-arc-infinite-loop.o `test -f 'arc-infinite-loop.c' || echo '$(srcdir)/'`arc-infinite-loop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Tpo $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arc-infinite-loop.c' object='cairo_test_suite-arc-infinite-loop.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-arc-infinite-loop.o `test -f 'arc-infinite-loop.c' || echo '$(srcdir)/'`arc-infinite-loop.c + +cairo_test_suite-arc-infinite-loop.obj: arc-infinite-loop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-arc-infinite-loop.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Tpo -c -o cairo_test_suite-arc-infinite-loop.obj `if test -f 'arc-infinite-loop.c'; then $(CYGPATH_W) 'arc-infinite-loop.c'; else $(CYGPATH_W) '$(srcdir)/arc-infinite-loop.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Tpo $(DEPDIR)/cairo_test_suite-arc-infinite-loop.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arc-infinite-loop.c' object='cairo_test_suite-arc-infinite-loop.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-arc-infinite-loop.obj `if test -f 'arc-infinite-loop.c'; then $(CYGPATH_W) 'arc-infinite-loop.c'; else $(CYGPATH_W) '$(srcdir)/arc-infinite-loop.c'; fi` + +cairo_test_suite-arc-looping-dash.o: arc-looping-dash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-arc-looping-dash.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-arc-looping-dash.Tpo -c -o cairo_test_suite-arc-looping-dash.o `test -f 'arc-looping-dash.c' || echo '$(srcdir)/'`arc-looping-dash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-arc-looping-dash.Tpo $(DEPDIR)/cairo_test_suite-arc-looping-dash.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arc-looping-dash.c' object='cairo_test_suite-arc-looping-dash.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-arc-looping-dash.o `test -f 'arc-looping-dash.c' || echo '$(srcdir)/'`arc-looping-dash.c + +cairo_test_suite-arc-looping-dash.obj: arc-looping-dash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-arc-looping-dash.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-arc-looping-dash.Tpo -c -o cairo_test_suite-arc-looping-dash.obj `if test -f 'arc-looping-dash.c'; then $(CYGPATH_W) 'arc-looping-dash.c'; else $(CYGPATH_W) '$(srcdir)/arc-looping-dash.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-arc-looping-dash.Tpo $(DEPDIR)/cairo_test_suite-arc-looping-dash.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arc-looping-dash.c' object='cairo_test_suite-arc-looping-dash.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-arc-looping-dash.obj `if test -f 'arc-looping-dash.c'; then $(CYGPATH_W) 'arc-looping-dash.c'; else $(CYGPATH_W) '$(srcdir)/arc-looping-dash.c'; fi` + cairo_test_suite-api-special-cases.o: api-special-cases.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-api-special-cases.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-api-special-cases.Tpo -c -o cairo_test_suite-api-special-cases.o `test -f 'api-special-cases.c' || echo '$(srcdir)/'`api-special-cases.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-api-special-cases.Tpo $(DEPDIR)/cairo_test_suite-api-special-cases.Po @@ -5016,6 +5113,22 @@ cairo_test_suite-group-paint.obj: group-paint.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-group-paint.obj `if test -f 'group-paint.c'; then $(CYGPATH_W) 'group-paint.c'; else $(CYGPATH_W) '$(srcdir)/group-paint.c'; fi` +cairo_test_suite-group-state.o: group-state.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-group-state.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-group-state.Tpo -c -o cairo_test_suite-group-state.o `test -f 'group-state.c' || echo '$(srcdir)/'`group-state.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-group-state.Tpo $(DEPDIR)/cairo_test_suite-group-state.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='group-state.c' object='cairo_test_suite-group-state.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-group-state.o `test -f 'group-state.c' || echo '$(srcdir)/'`group-state.c + +cairo_test_suite-group-state.obj: group-state.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-group-state.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-group-state.Tpo -c -o cairo_test_suite-group-state.obj `if test -f 'group-state.c'; then $(CYGPATH_W) 'group-state.c'; else $(CYGPATH_W) '$(srcdir)/group-state.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-group-state.Tpo $(DEPDIR)/cairo_test_suite-group-state.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='group-state.c' object='cairo_test_suite-group-state.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-group-state.obj `if test -f 'group-state.c'; then $(CYGPATH_W) 'group-state.c'; else $(CYGPATH_W) '$(srcdir)/group-state.c'; fi` + cairo_test_suite-group-unaligned.o: group-unaligned.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-group-unaligned.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-group-unaligned.Tpo -c -o cairo_test_suite-group-unaligned.o `test -f 'group-unaligned.c' || echo '$(srcdir)/'`group-unaligned.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-group-unaligned.Tpo $(DEPDIR)/cairo_test_suite-group-unaligned.Po @@ -5688,21 +5801,117 @@ cairo_test_suite-mask-transformed-similar.obj: mask-transformed-similar.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mask-transformed-similar.obj `if test -f 'mask-transformed-similar.c'; then $(CYGPATH_W) 'mask-transformed-similar.c'; else $(CYGPATH_W) '$(srcdir)/mask-transformed-similar.c'; fi` -cairo_test_suite-recording-surface-pattern.o: recording-surface-pattern.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-surface-pattern.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo -c -o cairo_test_suite-recording-surface-pattern.o `test -f 'recording-surface-pattern.c' || echo '$(srcdir)/'`recording-surface-pattern.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po +cairo_test_suite-mesh-pattern.o: mesh-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern.Tpo -c -o cairo_test_suite-mesh-pattern.o `test -f 'mesh-pattern.c' || echo '$(srcdir)/'`mesh-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='recording-surface-pattern.c' object='cairo_test_suite-recording-surface-pattern.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern.c' object='cairo_test_suite-mesh-pattern.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-recording-surface-pattern.o `test -f 'recording-surface-pattern.c' || echo '$(srcdir)/'`recording-surface-pattern.c +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern.o `test -f 'mesh-pattern.c' || echo '$(srcdir)/'`mesh-pattern.c -cairo_test_suite-recording-surface-pattern.obj: recording-surface-pattern.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-surface-pattern.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo -c -o cairo_test_suite-recording-surface-pattern.obj `if test -f 'recording-surface-pattern.c'; then $(CYGPATH_W) 'recording-surface-pattern.c'; else $(CYGPATH_W) '$(srcdir)/recording-surface-pattern.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po +cairo_test_suite-mesh-pattern.obj: mesh-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern.Tpo -c -o cairo_test_suite-mesh-pattern.obj `if test -f 'mesh-pattern.c'; then $(CYGPATH_W) 'mesh-pattern.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='recording-surface-pattern.c' object='cairo_test_suite-recording-surface-pattern.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern.c' object='cairo_test_suite-mesh-pattern.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-recording-surface-pattern.obj `if test -f 'recording-surface-pattern.c'; then $(CYGPATH_W) 'recording-surface-pattern.c'; else $(CYGPATH_W) '$(srcdir)/recording-surface-pattern.c'; fi` +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern.obj `if test -f 'mesh-pattern.c'; then $(CYGPATH_W) 'mesh-pattern.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern.c'; fi` + +cairo_test_suite-mesh-pattern-accuracy.o: mesh-pattern-accuracy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-accuracy.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Tpo -c -o cairo_test_suite-mesh-pattern-accuracy.o `test -f 'mesh-pattern-accuracy.c' || echo '$(srcdir)/'`mesh-pattern-accuracy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-accuracy.c' object='cairo_test_suite-mesh-pattern-accuracy.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-accuracy.o `test -f 'mesh-pattern-accuracy.c' || echo '$(srcdir)/'`mesh-pattern-accuracy.c + +cairo_test_suite-mesh-pattern-accuracy.obj: mesh-pattern-accuracy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-accuracy.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Tpo -c -o cairo_test_suite-mesh-pattern-accuracy.obj `if test -f 'mesh-pattern-accuracy.c'; then $(CYGPATH_W) 'mesh-pattern-accuracy.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-accuracy.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-accuracy.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-accuracy.c' object='cairo_test_suite-mesh-pattern-accuracy.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-accuracy.obj `if test -f 'mesh-pattern-accuracy.c'; then $(CYGPATH_W) 'mesh-pattern-accuracy.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-accuracy.c'; fi` + +cairo_test_suite-mesh-pattern-conical.o: mesh-pattern-conical.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-conical.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Tpo -c -o cairo_test_suite-mesh-pattern-conical.o `test -f 'mesh-pattern-conical.c' || echo '$(srcdir)/'`mesh-pattern-conical.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-conical.c' object='cairo_test_suite-mesh-pattern-conical.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-conical.o `test -f 'mesh-pattern-conical.c' || echo '$(srcdir)/'`mesh-pattern-conical.c + +cairo_test_suite-mesh-pattern-conical.obj: mesh-pattern-conical.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-conical.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Tpo -c -o cairo_test_suite-mesh-pattern-conical.obj `if test -f 'mesh-pattern-conical.c'; then $(CYGPATH_W) 'mesh-pattern-conical.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-conical.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-conical.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-conical.c' object='cairo_test_suite-mesh-pattern-conical.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-conical.obj `if test -f 'mesh-pattern-conical.c'; then $(CYGPATH_W) 'mesh-pattern-conical.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-conical.c'; fi` + +cairo_test_suite-mesh-pattern-control-points.o: mesh-pattern-control-points.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-control-points.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Tpo -c -o cairo_test_suite-mesh-pattern-control-points.o `test -f 'mesh-pattern-control-points.c' || echo '$(srcdir)/'`mesh-pattern-control-points.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-control-points.c' object='cairo_test_suite-mesh-pattern-control-points.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-control-points.o `test -f 'mesh-pattern-control-points.c' || echo '$(srcdir)/'`mesh-pattern-control-points.c + +cairo_test_suite-mesh-pattern-control-points.obj: mesh-pattern-control-points.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-control-points.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Tpo -c -o cairo_test_suite-mesh-pattern-control-points.obj `if test -f 'mesh-pattern-control-points.c'; then $(CYGPATH_W) 'mesh-pattern-control-points.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-control-points.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-control-points.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-control-points.c' object='cairo_test_suite-mesh-pattern-control-points.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-control-points.obj `if test -f 'mesh-pattern-control-points.c'; then $(CYGPATH_W) 'mesh-pattern-control-points.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-control-points.c'; fi` + +cairo_test_suite-mesh-pattern-fold.o: mesh-pattern-fold.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-fold.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Tpo -c -o cairo_test_suite-mesh-pattern-fold.o `test -f 'mesh-pattern-fold.c' || echo '$(srcdir)/'`mesh-pattern-fold.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-fold.c' object='cairo_test_suite-mesh-pattern-fold.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-fold.o `test -f 'mesh-pattern-fold.c' || echo '$(srcdir)/'`mesh-pattern-fold.c + +cairo_test_suite-mesh-pattern-fold.obj: mesh-pattern-fold.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-fold.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Tpo -c -o cairo_test_suite-mesh-pattern-fold.obj `if test -f 'mesh-pattern-fold.c'; then $(CYGPATH_W) 'mesh-pattern-fold.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-fold.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-fold.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-fold.c' object='cairo_test_suite-mesh-pattern-fold.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-fold.obj `if test -f 'mesh-pattern-fold.c'; then $(CYGPATH_W) 'mesh-pattern-fold.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-fold.c'; fi` + +cairo_test_suite-mesh-pattern-overlap.o: mesh-pattern-overlap.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-overlap.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Tpo -c -o cairo_test_suite-mesh-pattern-overlap.o `test -f 'mesh-pattern-overlap.c' || echo '$(srcdir)/'`mesh-pattern-overlap.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-overlap.c' object='cairo_test_suite-mesh-pattern-overlap.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-overlap.o `test -f 'mesh-pattern-overlap.c' || echo '$(srcdir)/'`mesh-pattern-overlap.c + +cairo_test_suite-mesh-pattern-overlap.obj: mesh-pattern-overlap.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-overlap.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Tpo -c -o cairo_test_suite-mesh-pattern-overlap.obj `if test -f 'mesh-pattern-overlap.c'; then $(CYGPATH_W) 'mesh-pattern-overlap.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-overlap.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-overlap.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-overlap.c' object='cairo_test_suite-mesh-pattern-overlap.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-overlap.obj `if test -f 'mesh-pattern-overlap.c'; then $(CYGPATH_W) 'mesh-pattern-overlap.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-overlap.c'; fi` + +cairo_test_suite-mesh-pattern-transformed.o: mesh-pattern-transformed.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-transformed.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Tpo -c -o cairo_test_suite-mesh-pattern-transformed.o `test -f 'mesh-pattern-transformed.c' || echo '$(srcdir)/'`mesh-pattern-transformed.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-transformed.c' object='cairo_test_suite-mesh-pattern-transformed.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-transformed.o `test -f 'mesh-pattern-transformed.c' || echo '$(srcdir)/'`mesh-pattern-transformed.c + +cairo_test_suite-mesh-pattern-transformed.obj: mesh-pattern-transformed.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mesh-pattern-transformed.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Tpo -c -o cairo_test_suite-mesh-pattern-transformed.obj `if test -f 'mesh-pattern-transformed.c'; then $(CYGPATH_W) 'mesh-pattern-transformed.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-transformed.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Tpo $(DEPDIR)/cairo_test_suite-mesh-pattern-transformed.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mesh-pattern-transformed.c' object='cairo_test_suite-mesh-pattern-transformed.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-mesh-pattern-transformed.obj `if test -f 'mesh-pattern-transformed.c'; then $(CYGPATH_W) 'mesh-pattern-transformed.c'; else $(CYGPATH_W) '$(srcdir)/mesh-pattern-transformed.c'; fi` cairo_test_suite-mime-data.o: mime-data.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mime-data.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mime-data.Tpo -c -o cairo_test_suite-mime-data.o `test -f 'mime-data.c' || echo '$(srcdir)/'`mime-data.c @@ -6232,70 +6441,6 @@ cairo_test_suite-radial-gradient-extend.obj: radial-gradient-extend.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-extend.obj `if test -f 'radial-gradient-extend.c'; then $(CYGPATH_W) 'radial-gradient-extend.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-extend.c'; fi` -cairo_test_suite-radial-gradient-mask.o: radial-gradient-mask.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-mask.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Tpo -c -o cairo_test_suite-radial-gradient-mask.o `test -f 'radial-gradient-mask.c' || echo '$(srcdir)/'`radial-gradient-mask.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-mask.c' object='cairo_test_suite-radial-gradient-mask.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-mask.o `test -f 'radial-gradient-mask.c' || echo '$(srcdir)/'`radial-gradient-mask.c - -cairo_test_suite-radial-gradient-mask.obj: radial-gradient-mask.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-mask.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Tpo -c -o cairo_test_suite-radial-gradient-mask.obj `if test -f 'radial-gradient-mask.c'; then $(CYGPATH_W) 'radial-gradient-mask.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-mask.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-mask.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-mask.c' object='cairo_test_suite-radial-gradient-mask.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-mask.obj `if test -f 'radial-gradient-mask.c'; then $(CYGPATH_W) 'radial-gradient-mask.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-mask.c'; fi` - -cairo_test_suite-radial-gradient-mask-source.o: radial-gradient-mask-source.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-mask-source.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Tpo -c -o cairo_test_suite-radial-gradient-mask-source.o `test -f 'radial-gradient-mask-source.c' || echo '$(srcdir)/'`radial-gradient-mask-source.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-mask-source.c' object='cairo_test_suite-radial-gradient-mask-source.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-mask-source.o `test -f 'radial-gradient-mask-source.c' || echo '$(srcdir)/'`radial-gradient-mask-source.c - -cairo_test_suite-radial-gradient-mask-source.obj: radial-gradient-mask-source.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-mask-source.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Tpo -c -o cairo_test_suite-radial-gradient-mask-source.obj `if test -f 'radial-gradient-mask-source.c'; then $(CYGPATH_W) 'radial-gradient-mask-source.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-mask-source.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-mask-source.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-mask-source.c' object='cairo_test_suite-radial-gradient-mask-source.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-mask-source.obj `if test -f 'radial-gradient-mask-source.c'; then $(CYGPATH_W) 'radial-gradient-mask-source.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-mask-source.c'; fi` - -cairo_test_suite-radial-gradient-one-stop.o: radial-gradient-one-stop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-one-stop.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Tpo -c -o cairo_test_suite-radial-gradient-one-stop.o `test -f 'radial-gradient-one-stop.c' || echo '$(srcdir)/'`radial-gradient-one-stop.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-one-stop.c' object='cairo_test_suite-radial-gradient-one-stop.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-one-stop.o `test -f 'radial-gradient-one-stop.c' || echo '$(srcdir)/'`radial-gradient-one-stop.c - -cairo_test_suite-radial-gradient-one-stop.obj: radial-gradient-one-stop.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-one-stop.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Tpo -c -o cairo_test_suite-radial-gradient-one-stop.obj `if test -f 'radial-gradient-one-stop.c'; then $(CYGPATH_W) 'radial-gradient-one-stop.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-one-stop.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-one-stop.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-one-stop.c' object='cairo_test_suite-radial-gradient-one-stop.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-one-stop.obj `if test -f 'radial-gradient-one-stop.c'; then $(CYGPATH_W) 'radial-gradient-one-stop.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-one-stop.c'; fi` - -cairo_test_suite-radial-gradient-source.o: radial-gradient-source.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-source.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-source.Tpo -c -o cairo_test_suite-radial-gradient-source.o `test -f 'radial-gradient-source.c' || echo '$(srcdir)/'`radial-gradient-source.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-source.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-source.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-source.c' object='cairo_test_suite-radial-gradient-source.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-source.o `test -f 'radial-gradient-source.c' || echo '$(srcdir)/'`radial-gradient-source.c - -cairo_test_suite-radial-gradient-source.obj: radial-gradient-source.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-radial-gradient-source.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-radial-gradient-source.Tpo -c -o cairo_test_suite-radial-gradient-source.obj `if test -f 'radial-gradient-source.c'; then $(CYGPATH_W) 'radial-gradient-source.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-source.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-radial-gradient-source.Tpo $(DEPDIR)/cairo_test_suite-radial-gradient-source.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='radial-gradient-source.c' object='cairo_test_suite-radial-gradient-source.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-radial-gradient-source.obj `if test -f 'radial-gradient-source.c'; then $(CYGPATH_W) 'radial-gradient-source.c'; else $(CYGPATH_W) '$(srcdir)/radial-gradient-source.c'; fi` - cairo_test_suite-random-intersections-eo.o: random-intersections-eo.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-random-intersections-eo.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-random-intersections-eo.Tpo -c -o cairo_test_suite-random-intersections-eo.o `test -f 'random-intersections-eo.c' || echo '$(srcdir)/'`random-intersections-eo.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-random-intersections-eo.Tpo $(DEPDIR)/cairo_test_suite-random-intersections-eo.Po @@ -6360,6 +6505,22 @@ cairo_test_suite-random-intersections-curves-nz.obj: random-intersections-curves @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-random-intersections-curves-nz.obj `if test -f 'random-intersections-curves-nz.c'; then $(CYGPATH_W) 'random-intersections-curves-nz.c'; else $(CYGPATH_W) '$(srcdir)/random-intersections-curves-nz.c'; fi` +cairo_test_suite-recording-surface-pattern.o: recording-surface-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-surface-pattern.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo -c -o cairo_test_suite-recording-surface-pattern.o `test -f 'recording-surface-pattern.c' || echo '$(srcdir)/'`recording-surface-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='recording-surface-pattern.c' object='cairo_test_suite-recording-surface-pattern.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-recording-surface-pattern.o `test -f 'recording-surface-pattern.c' || echo '$(srcdir)/'`recording-surface-pattern.c + +cairo_test_suite-recording-surface-pattern.obj: recording-surface-pattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-surface-pattern.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo -c -o cairo_test_suite-recording-surface-pattern.obj `if test -f 'recording-surface-pattern.c'; then $(CYGPATH_W) 'recording-surface-pattern.c'; else $(CYGPATH_W) '$(srcdir)/recording-surface-pattern.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='recording-surface-pattern.c' object='cairo_test_suite-recording-surface-pattern.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-recording-surface-pattern.obj `if test -f 'recording-surface-pattern.c'; then $(CYGPATH_W) 'recording-surface-pattern.c'; else $(CYGPATH_W) '$(srcdir)/recording-surface-pattern.c'; fi` + cairo_test_suite-rectangle-rounding-error.o: rectangle-rounding-error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-rectangle-rounding-error.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-rectangle-rounding-error.Tpo -c -o cairo_test_suite-rectangle-rounding-error.o `test -f 'rectangle-rounding-error.c' || echo '$(srcdir)/'`rectangle-rounding-error.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-rectangle-rounding-error.Tpo $(DEPDIR)/cairo_test_suite-rectangle-rounding-error.Po @@ -7672,6 +7833,38 @@ cairo_test_suite-user-font-rescale.obj: user-font-rescale.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-user-font-rescale.obj `if test -f 'user-font-rescale.c'; then $(CYGPATH_W) 'user-font-rescale.c'; else $(CYGPATH_W) '$(srcdir)/user-font-rescale.c'; fi` +cairo_test_suite-white-in-noop.o: white-in-noop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-white-in-noop.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-white-in-noop.Tpo -c -o cairo_test_suite-white-in-noop.o `test -f 'white-in-noop.c' || echo '$(srcdir)/'`white-in-noop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-white-in-noop.Tpo $(DEPDIR)/cairo_test_suite-white-in-noop.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='white-in-noop.c' object='cairo_test_suite-white-in-noop.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-white-in-noop.o `test -f 'white-in-noop.c' || echo '$(srcdir)/'`white-in-noop.c + +cairo_test_suite-white-in-noop.obj: white-in-noop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-white-in-noop.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-white-in-noop.Tpo -c -o cairo_test_suite-white-in-noop.obj `if test -f 'white-in-noop.c'; then $(CYGPATH_W) 'white-in-noop.c'; else $(CYGPATH_W) '$(srcdir)/white-in-noop.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-white-in-noop.Tpo $(DEPDIR)/cairo_test_suite-white-in-noop.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='white-in-noop.c' object='cairo_test_suite-white-in-noop.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-white-in-noop.obj `if test -f 'white-in-noop.c'; then $(CYGPATH_W) 'white-in-noop.c'; else $(CYGPATH_W) '$(srcdir)/white-in-noop.c'; fi` + +cairo_test_suite-xcb-stress-cache.o: xcb-stress-cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-xcb-stress-cache.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Tpo -c -o cairo_test_suite-xcb-stress-cache.o `test -f 'xcb-stress-cache.c' || echo '$(srcdir)/'`xcb-stress-cache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Tpo $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xcb-stress-cache.c' object='cairo_test_suite-xcb-stress-cache.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-xcb-stress-cache.o `test -f 'xcb-stress-cache.c' || echo '$(srcdir)/'`xcb-stress-cache.c + +cairo_test_suite-xcb-stress-cache.obj: xcb-stress-cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-xcb-stress-cache.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Tpo -c -o cairo_test_suite-xcb-stress-cache.obj `if test -f 'xcb-stress-cache.c'; then $(CYGPATH_W) 'xcb-stress-cache.c'; else $(CYGPATH_W) '$(srcdir)/xcb-stress-cache.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Tpo $(DEPDIR)/cairo_test_suite-xcb-stress-cache.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xcb-stress-cache.c' object='cairo_test_suite-xcb-stress-cache.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-xcb-stress-cache.obj `if test -f 'xcb-stress-cache.c'; then $(CYGPATH_W) 'xcb-stress-cache.c'; else $(CYGPATH_W) '$(srcdir)/xcb-stress-cache.c'; fi` + cairo_test_suite-xcomposite-projection.o: xcomposite-projection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-xcomposite-projection.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-xcomposite-projection.Tpo -c -o cairo_test_suite-xcomposite-projection.o `test -f 'xcomposite-projection.c' || echo '$(srcdir)/'`xcomposite-projection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-xcomposite-projection.Tpo $(DEPDIR)/cairo_test_suite-xcomposite-projection.Po @@ -8626,7 +8819,7 @@ dvi-am: html: html-recursive -html-am: html-local +html-am: info: info-recursive @@ -8689,7 +8882,7 @@ uninstall-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ ctags ctags-recursive distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am html-local info info-am install install-am \ + dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ @@ -8772,24 +8965,16 @@ recheck: @echo Re-checking failed tests @$(MAKE) $(AM_MAKEFLAGS) $(recheck) -# Checks tests and creates index.html. +# Checks tests. # Target doesn't fail if tests fail. test: - @$(MAKE) $(AM_MAKEFLAGS) check; \ - $(MAKE) $(AM_MAKEFLAGS) html + @$(MAKE) $(AM_MAKEFLAGS) check -# Re-checks tests and creates index.html. +# Re-checks tests. # Target doesn't fail if tests fail. retest: @CAIRO_TESTS="$(FAILED_TESTS)"; \ - $(MAKE) $(AM_MAKEFLAGS) check; \ - $(MAKE) $(AM_MAKEFLAGS) html - -html-local: index.html - -# Make index.html with no dependency tracking, containing only the failed tests. -rehtml: - @CAIRO_TESTS="$(FAILED_TESTS)" $(MAKE) $(AM_MAKEFLAGS) html + $(MAKE) $(AM_MAKEFLAGS) check # Run tests under a tool specified by TOOL. For example, make run TOOL=gdb run: @@ -8805,10 +8990,6 @@ check-valgrind: $(NOLOG_TESTS_LOG): @echo dummy > $@ -index.html: $(srcdir)/make-html.pl - @echo Creating index.html - @perl $(srcdir)/make-html.pl > $@ - # Identify identical reference images check-ref-dups: @LANG=C; \ @@ -8859,7 +9040,18 @@ check-ref-missing: release-verify-sane-tests: check-ref-missing -.PHONY: check-valgrind test recheck retest rehtml check-ref-dups check-ref-missing release-verify-sane-tests +results.tar: + @tar cf $@ index.html testtable.js *.log; \ + for i in output/*.fail.png ; do \ + testname=$${i#output/} ; \ + testname=$${testname%%.*} ; \ + tar uf $@ $${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ + done + +results.tar.gz: results.tar + gzip -c $< > $@ + +.PHONY: check-valgrind test recheck retest check-ref-dups check-ref-missing release-verify-sane-tests # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/test/Makefile.sources b/test/Makefile.sources index 487fedd..3210745 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -9,6 +9,8 @@ test_sources = \ a8-mask.c \ aliasing.c \ alpha-similar.c \ + arc-infinite-loop.c \ + arc-looping-dash.c \ api-special-cases.c \ big-line.c \ big-trap.c \ @@ -122,6 +124,7 @@ test_sources = \ gradient-zero-stops-mask.c \ group-clip.c \ group-paint.c \ + group-state.c \ group-unaligned.c \ half-coverage.c \ halo.c \ @@ -164,7 +167,13 @@ test_sources = \ mask-surface-ctm.c \ mask-transformed-image.c \ mask-transformed-similar.c \ - recording-surface-pattern.c \ + mesh-pattern.c \ + mesh-pattern-accuracy.c \ + mesh-pattern-conical.c \ + mesh-pattern-control-points.c \ + mesh-pattern-fold.c \ + mesh-pattern-overlap.c \ + mesh-pattern-transformed.c \ mime-data.c \ miter-precision.c \ move-to-show-surface.c \ @@ -198,14 +207,11 @@ test_sources = \ push-group-path-offset.c \ radial-gradient.c \ radial-gradient-extend.c \ - radial-gradient-mask.c \ - radial-gradient-mask-source.c \ - radial-gradient-one-stop.c \ - radial-gradient-source.c \ random-intersections-eo.c \ random-intersections-nonzero.c \ random-intersections-curves-eo.c \ random-intersections-curves-nz.c \ + recording-surface-pattern.c \ rectangle-rounding-error.c \ rectilinear-fill.c \ rectilinear-grid.c \ @@ -288,6 +294,8 @@ test_sources = \ user-font-mask.c \ user-font-proxy.c \ user-font-rescale.c \ + white-in-noop.c \ + xcb-stress-cache.c \ xcomposite-projection.c \ xlib-expose-event.c \ zero-alpha.c \ diff --git a/test/Makefile.win32 b/test/Makefile.win32 index b45617b..8d8f1f8 100644 --- a/test/Makefile.win32 +++ b/test/Makefile.win32 @@ -33,20 +33,9 @@ cairo-test-suite.exe: $(OBJECTS) ./pdiff/pdiff.lib ../boilerplate/$(CFG)/boiler. ../boilerplate/$(CFG)/boiler.lib: (cd ../boilerplate ; $(MAKE) -f Makefile.win32) -.PHONY: check test html +.PHONY: check test check: cairo-test-suite.exe ./cairo-test-suite.exe -# define gen-html so that both 'test' and 'html' targets -# can generate html while having different dependencies -define gen-html -@echo Creating index.html... -@perl make-html.pl > index.html -endef - test: check - $(gen-html) - -html: - $(gen-html) diff --git a/test/README b/test/README index 0cd3433..f753ccb 100644 --- a/test/README +++ b/test/README @@ -128,7 +128,7 @@ Here are some of the relevant details: X server that uses only software for all rendering. One such X server is Xvfb which can be started like this: - Xvfb -screen 0 1280x1024x24 -ac -nolisten tcp :2 + Xvfb -screen 0 1680x1024x24 -ac -nolisten tcp :2 after which the test suite can be run against it like so: diff --git a/test/a1-bug.quartz.xfail.png b/test/a1-bug.quartz.xfail.png new file mode 100644 index 0000000..4ed3793 Binary files /dev/null and b/test/a1-bug.quartz.xfail.png differ diff --git a/test/a1-image-sample.quartz.xfail.png b/test/a1-image-sample.quartz.xfail.png deleted file mode 100644 index ca24391..0000000 Binary files a/test/a1-image-sample.quartz.xfail.png and /dev/null differ diff --git a/test/a1-mask-sample.quartz.xfail.png b/test/a1-mask-sample.quartz.xfail.png deleted file mode 100644 index ca24391..0000000 Binary files a/test/a1-mask-sample.quartz.xfail.png and /dev/null differ diff --git a/test/a1-rasterisation-rectangles.quartz.xfail.png b/test/a1-rasterisation-rectangles.quartz.xfail.png new file mode 100644 index 0000000..f8f3bf8 Binary files /dev/null and b/test/a1-rasterisation-rectangles.quartz.xfail.png differ diff --git a/test/a1-rasterisation-triangles.quartz.xfail.png b/test/a1-rasterisation-triangles.quartz.xfail.png new file mode 100644 index 0000000..f8f3bf8 Binary files /dev/null and b/test/a1-rasterisation-triangles.quartz.xfail.png differ diff --git a/test/a8-clear.quartz.ref.png b/test/a8-clear.quartz.ref.png new file mode 100644 index 0000000..5b7c67f Binary files /dev/null and b/test/a8-clear.quartz.ref.png differ diff --git a/test/aliasing.quartz.ref.png b/test/aliasing.quartz.ref.png new file mode 100644 index 0000000..f4b6e22 Binary files /dev/null and b/test/aliasing.quartz.ref.png differ diff --git a/test/arc-infinite-loop.c b/test/arc-infinite-loop.c new file mode 100644 index 0000000..8b469ea --- /dev/null +++ b/test/arc-infinite-loop.c @@ -0,0 +1,61 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* + * Copyright 2010 Andrea Canciani + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Andrea Canciani + */ + +#include "cairo-test.h" +#include + +#define SIZE 8 + +/* + cairo_arc can hang in an infinite loop if given huge (so big that + adding/subtracting 4*M_PI to them doesn't change the value because + of floating point rounding). + + The purpose of this test is to check that cairo doesn't hang or crash. +*/ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + /* Check if the code that guarantees start <= end hangs */ + cairo_arc (cr, 0, 0, 1, 1024 / DBL_EPSILON * M_PI, 0); + + /* Check if the code that handles huge angles hangs */ + cairo_arc (cr, 0, 0, 1, 0, 1024 / DBL_EPSILON * M_PI); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (arc_infinite_loop, + "Test cairo_arc with huge angles", + "arc", /* keywords */ + NULL, /* requirements */ + SIZE, SIZE, + NULL, draw) diff --git a/test/arc-infinite-loop.ref.png b/test/arc-infinite-loop.ref.png new file mode 100644 index 0000000..82d645f Binary files /dev/null and b/test/arc-infinite-loop.ref.png differ diff --git a/test/arc-looping-dash.c b/test/arc-looping-dash.c new file mode 100644 index 0000000..2ad55f6 --- /dev/null +++ b/test/arc-looping-dash.c @@ -0,0 +1,77 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* + * Copyright 2010 Andrea Canciani + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Andrea Canciani + */ + +#include "cairo-test.h" + +#define SIZE 32 + +/* + When cairo_arc is used to draw an arc of more than 2pi radians + (i.e. a circle "looping over itself"), various different behaviors + are possible: + + - draw exactly a circle (an arc of 2pi radians) + + - draw an arc such that the current point is the expected one and + that does at least a complete circle (an arc of [2pi, 4pi) + radians) + + - draw an arc with the original number of loops + + This test produces different results for each of these three cases. +*/ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + double dashes[] = { 0.3, 7 }; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_save (cr); + + cairo_translate (cr, SIZE * .5, SIZE * .5); + cairo_scale (cr, SIZE * 3 / 8., SIZE * 3 / 8.); + + cairo_arc (cr, 0, 0, 1, 0, 11 * M_PI); + + cairo_set_line_width (cr, 8. / SIZE); + + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_set_dash (cr, dashes, 2, 0); + cairo_stroke (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (arc_looping_dash, + "Test cairo_arc for angles describing more than a complete circle", + "arc", /* keywords */ + NULL, /* requirements */ + SIZE, SIZE, + NULL, draw) diff --git a/test/arc-looping-dash.image16.ref.png b/test/arc-looping-dash.image16.ref.png new file mode 100644 index 0000000..addc93c Binary files /dev/null and b/test/arc-looping-dash.image16.ref.png differ diff --git a/test/arc-looping-dash.ps.ref.png b/test/arc-looping-dash.ps.ref.png new file mode 100644 index 0000000..ab19b19 Binary files /dev/null and b/test/arc-looping-dash.ps.ref.png differ diff --git a/test/arc-looping-dash.quartz.ref.png b/test/arc-looping-dash.quartz.ref.png new file mode 100644 index 0000000..70304ca Binary files /dev/null and b/test/arc-looping-dash.quartz.ref.png differ diff --git a/test/arc-looping-dash.ref.png b/test/arc-looping-dash.ref.png new file mode 100644 index 0000000..516e66c Binary files /dev/null and b/test/arc-looping-dash.ref.png differ diff --git a/test/cairo-test-constructors.c b/test/cairo-test-constructors.c index 7a608d9..a0c09d0 100644 --- a/test/cairo-test-constructors.c +++ b/test/cairo-test-constructors.c @@ -15,6 +15,8 @@ extern void _register_a8_clear (void); extern void _register_a8_mask (void); extern void _register_aliasing (void); extern void _register_alpha_similar (void); +extern void _register_arc_infinite_loop (void); +extern void _register_arc_looping_dash (void); extern void _register_api_special_cases (void); extern void _register_big_line (void); extern void _register_big_trap (void); @@ -137,6 +139,7 @@ extern void _register_gradient_zero_stops (void); extern void _register_gradient_zero_stops_mask (void); extern void _register_group_clip (void); extern void _register_group_paint (void); +extern void _register_group_state (void); extern void _register_group_unaligned (void); extern void _register_half_coverage_rectangles (void); extern void _register_half_coverage_triangles (void); @@ -181,7 +184,13 @@ extern void _register_mask_glyphs (void); extern void _register_mask_surface_ctm (void); extern void _register_mask_transformed_image (void); extern void _register_mask_transformed_similar (void); -extern void _register_recording_surface_pattern (void); +extern void _register_mesh_pattern (void); +extern void _register_mesh_pattern_accuracy (void); +extern void _register_mesh_pattern_conical (void); +extern void _register_mesh_pattern_control_points (void); +extern void _register_mesh_pattern_fold (void); +extern void _register_mesh_pattern_overlap (void); +extern void _register_mesh_pattern_transformed (void); extern void _register_mime_data (void); extern void _register_miter_precision (void); extern void _register_move_to_show_surface (void); @@ -224,15 +233,16 @@ extern void _register_push_group (void); extern void _register_push_group_color (void); extern void _register_push_group_path_offset (void); extern void _register_radial_gradient (void); -extern void _register_radial_gradient_extend (void); extern void _register_radial_gradient_mask (void); +extern void _register_radial_gradient_source (void); extern void _register_radial_gradient_mask_source (void); extern void _register_radial_gradient_one_stop (void); -extern void _register_radial_gradient_source (void); +extern void _register_radial_gradient_extend (void); extern void _register_random_intersections_eo (void); extern void _register_random_intersections_nonzero (void); extern void _register_random_intersections_curves_eo (void); extern void _register_random_intersections_curves_nz (void); +extern void _register_recording_surface_pattern (void); extern void _register_rectangle_rounding_error (void); extern void _register_rectilinear_fill (void); extern void _register_rectilinear_grid (void); @@ -318,6 +328,8 @@ extern void _register_user_font (void); extern void _register_user_font_mask (void); extern void _register_user_font_proxy (void); extern void _register_user_font_rescale (void); +extern void _register_white_in_noop (void); +extern void _register_xcb_stress_cache (void); extern void _register_xcomposite_projection (void); extern void _register_xlib_expose_event (void); extern void _register_zero_alpha (void); @@ -361,6 +373,8 @@ _cairo_test_runner_register_tests (void) _register_a8_mask (); _register_aliasing (); _register_alpha_similar (); + _register_arc_infinite_loop (); + _register_arc_looping_dash (); _register_api_special_cases (); _register_big_line (); _register_big_trap (); @@ -483,6 +497,7 @@ _cairo_test_runner_register_tests (void) _register_gradient_zero_stops_mask (); _register_group_clip (); _register_group_paint (); + _register_group_state (); _register_group_unaligned (); _register_half_coverage_rectangles (); _register_half_coverage_triangles (); @@ -527,7 +542,13 @@ _cairo_test_runner_register_tests (void) _register_mask_surface_ctm (); _register_mask_transformed_image (); _register_mask_transformed_similar (); - _register_recording_surface_pattern (); + _register_mesh_pattern (); + _register_mesh_pattern_accuracy (); + _register_mesh_pattern_conical (); + _register_mesh_pattern_control_points (); + _register_mesh_pattern_fold (); + _register_mesh_pattern_overlap (); + _register_mesh_pattern_transformed (); _register_mime_data (); _register_miter_precision (); _register_move_to_show_surface (); @@ -570,15 +591,16 @@ _cairo_test_runner_register_tests (void) _register_push_group_color (); _register_push_group_path_offset (); _register_radial_gradient (); - _register_radial_gradient_extend (); _register_radial_gradient_mask (); + _register_radial_gradient_source (); _register_radial_gradient_mask_source (); _register_radial_gradient_one_stop (); - _register_radial_gradient_source (); + _register_radial_gradient_extend (); _register_random_intersections_eo (); _register_random_intersections_nonzero (); _register_random_intersections_curves_eo (); _register_random_intersections_curves_nz (); + _register_recording_surface_pattern (); _register_rectangle_rounding_error (); _register_rectilinear_fill (); _register_rectilinear_grid (); @@ -664,6 +686,8 @@ _cairo_test_runner_register_tests (void) _register_user_font_mask (); _register_user_font_proxy (); _register_user_font_rescale (); + _register_white_in_noop (); + _register_xcb_stress_cache (); _register_xcomposite_projection (); _register_xlib_expose_event (); _register_zero_alpha (); diff --git a/test/cairo-test-runner.c b/test/cairo-test-runner.c index 5aea643..539817e 100644 --- a/test/cairo-test-runner.c +++ b/test/cairo-test-runner.c @@ -125,6 +125,18 @@ _log (cairo_test_context_t *ctx, va_end (ap); } +static void +_tests_reverse () +{ + cairo_test_t *list, *next; + + for (list = tests, tests = NULL; list != NULL; list = next) { + next = list->next; + list->next = tests; + tests = list; + } +} + static cairo_test_list_t * _list_prepend (cairo_test_list_t *head, const cairo_test_t *test) { @@ -705,6 +717,7 @@ main (int argc, char **argv) #endif _cairo_test_runner_register_tests (); + _tests_reverse (); memset (&runner, 0, sizeof (runner)); runner.num_device_offsets = 1; diff --git a/test/clip-fill-eo-unbounded.quartz.argb32.ref.png b/test/clip-fill-eo-unbounded.quartz.argb32.ref.png index 2ea24a3..3423000 100644 Binary files a/test/clip-fill-eo-unbounded.quartz.argb32.ref.png and b/test/clip-fill-eo-unbounded.quartz.argb32.ref.png differ diff --git a/test/clip-fill-eo-unbounded.quartz.rgb24.ref.png b/test/clip-fill-eo-unbounded.quartz.rgb24.ref.png index 2705008..1612801 100644 Binary files a/test/clip-fill-eo-unbounded.quartz.rgb24.ref.png and b/test/clip-fill-eo-unbounded.quartz.rgb24.ref.png differ diff --git a/test/clip-fill-nz-unbounded.quartz.argb32.ref.png b/test/clip-fill-nz-unbounded.quartz.argb32.ref.png index 2ea24a3..3423000 100644 Binary files a/test/clip-fill-nz-unbounded.quartz.argb32.ref.png and b/test/clip-fill-nz-unbounded.quartz.argb32.ref.png differ diff --git a/test/clip-fill-nz-unbounded.quartz.rgb24.ref.png b/test/clip-fill-nz-unbounded.quartz.rgb24.ref.png index 2705008..1612801 100644 Binary files a/test/clip-fill-nz-unbounded.quartz.rgb24.ref.png and b/test/clip-fill-nz-unbounded.quartz.rgb24.ref.png differ diff --git a/test/clip-operator.pdf.argb32.ref.png b/test/clip-operator.pdf.argb32.ref.png index 79600af..7f8c93e 100644 Binary files a/test/clip-operator.pdf.argb32.ref.png and b/test/clip-operator.pdf.argb32.ref.png differ diff --git a/test/clip-operator.pdf.rgb24.ref.png b/test/clip-operator.pdf.rgb24.ref.png index 163d54c..fc4f431 100644 Binary files a/test/clip-operator.pdf.rgb24.ref.png and b/test/clip-operator.pdf.rgb24.ref.png differ diff --git a/test/clip-operator.quartz.argb32.ref.png b/test/clip-operator.quartz.argb32.ref.png index bf71993..ecf6ee2 100644 Binary files a/test/clip-operator.quartz.argb32.ref.png and b/test/clip-operator.quartz.argb32.ref.png differ diff --git a/test/clip-operator.quartz.rgb24.ref.png b/test/clip-operator.quartz.rgb24.ref.png index 51a30b0..67c628f 100644 Binary files a/test/clip-operator.quartz.rgb24.ref.png and b/test/clip-operator.quartz.rgb24.ref.png differ diff --git a/test/clip-stroke-unbounded.quartz.argb32.ref.png b/test/clip-stroke-unbounded.quartz.argb32.ref.png index c6124dd..8bd5b36 100644 Binary files a/test/clip-stroke-unbounded.quartz.argb32.ref.png and b/test/clip-stroke-unbounded.quartz.argb32.ref.png differ diff --git a/test/clip-stroke-unbounded.quartz.rgb24.ref.png b/test/clip-stroke-unbounded.quartz.rgb24.ref.png index c6e0eb9..5349f84 100644 Binary files a/test/clip-stroke-unbounded.quartz.rgb24.ref.png and b/test/clip-stroke-unbounded.quartz.rgb24.ref.png differ diff --git a/test/extended-blend-alpha.quartz.argb32.ref.png b/test/extended-blend-alpha.quartz.argb32.ref.png new file mode 100644 index 0000000..e5701a6 Binary files /dev/null and b/test/extended-blend-alpha.quartz.argb32.ref.png differ diff --git a/test/extended-blend-alpha.quartz.rgb24.ref.png b/test/extended-blend-alpha.quartz.rgb24.ref.png new file mode 100644 index 0000000..477d346 Binary files /dev/null and b/test/extended-blend-alpha.quartz.rgb24.ref.png differ diff --git a/test/extended-blend.quartz.argb32.ref.png b/test/extended-blend.quartz.argb32.ref.png new file mode 100644 index 0000000..173c6e2 Binary files /dev/null and b/test/extended-blend.quartz.argb32.ref.png differ diff --git a/test/extended-blend.quartz.rgb24.ref.png b/test/extended-blend.quartz.rgb24.ref.png new file mode 100644 index 0000000..56a1214 Binary files /dev/null and b/test/extended-blend.quartz.rgb24.ref.png differ diff --git a/test/fallback-resolution.c b/test/fallback-resolution.c index 8ae952a..1d05973 100644 --- a/test/fallback-resolution.c +++ b/test/fallback-resolution.c @@ -328,27 +328,19 @@ preamble (cairo_test_context_t *ctx) struct { double x, y; } ppi[] = { - { 600, 600 }, - { 600, 72 }, + { 576, 576 }, + { 576, 72 }, - { 300, 300 }, - { 300, 72 }, + { 288, 288 }, + { 288, 72 }, - { 150, 150 }, - { 150, 72 }, + { 144, 144 }, + { 144, 72 }, - { 75, 75 }, - { 75, 72 }, - - { 72, 600 }, - { 72, 300 }, - { 72, 150 }, - { 72, 75 }, + { 72, 576 }, + { 72, 288 }, + { 72, 144 }, { 72, 72 }, - { 72, 37.5 }, - - { 37.5, 72 }, - { 37.5, 37.5 }, }; unsigned int i; int n, num_ppi; @@ -444,15 +436,13 @@ preamble (cairo_test_context_t *ctx) fflush (stdout); if (target->force_fallbacks != NULL) - target->force_fallbacks (surface, ~0U); + target->force_fallbacks (surface, ppi[n].x, ppi[n].y); cr = cairo_create (surface); #if SET_TOLERANCE cairo_set_tolerance (cr, 3.0); #endif cairo_surface_set_device_offset (surface, 25, 25); - cairo_surface_set_fallback_resolution (surface, - ppi[n].x, ppi[n].y); cairo_save (cr); { cairo_set_source_rgb (cr, 1, 1, 1); diff --git a/test/fallback-resolution.ppi144x144.ps.ref.png b/test/fallback-resolution.ppi144x144.ps.ref.png new file mode 100644 index 0000000..0922f03 Binary files /dev/null and b/test/fallback-resolution.ppi144x144.ps.ref.png differ diff --git a/test/fallback-resolution.ppi144x144.ref.png b/test/fallback-resolution.ppi144x144.ref.png new file mode 100644 index 0000000..cbe93ca Binary files /dev/null and b/test/fallback-resolution.ppi144x144.ref.png differ diff --git a/test/fallback-resolution.ppi144x72.ps.ref.png b/test/fallback-resolution.ppi144x72.ps.ref.png new file mode 100644 index 0000000..2f8d82d Binary files /dev/null and b/test/fallback-resolution.ppi144x72.ps.ref.png differ diff --git a/test/fallback-resolution.ppi144x72.ref.png b/test/fallback-resolution.ppi144x72.ref.png new file mode 100644 index 0000000..4c16ca1 Binary files /dev/null and b/test/fallback-resolution.ppi144x72.ref.png differ diff --git a/test/fallback-resolution.ppi150x150.ref.png b/test/fallback-resolution.ppi150x150.ref.png deleted file mode 100644 index 40e68a9..0000000 Binary files a/test/fallback-resolution.ppi150x150.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi150x72.ref.png b/test/fallback-resolution.ppi150x72.ref.png deleted file mode 100644 index 47e0c58..0000000 Binary files a/test/fallback-resolution.ppi150x72.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi288x288.pdf.ref.png b/test/fallback-resolution.ppi288x288.pdf.ref.png new file mode 100644 index 0000000..181e110 Binary files /dev/null and b/test/fallback-resolution.ppi288x288.pdf.ref.png differ diff --git a/test/fallback-resolution.ppi288x288.ps.ref.png b/test/fallback-resolution.ppi288x288.ps.ref.png new file mode 100644 index 0000000..99bccef Binary files /dev/null and b/test/fallback-resolution.ppi288x288.ps.ref.png differ diff --git a/test/fallback-resolution.ppi288x288.svg.ref.png b/test/fallback-resolution.ppi288x288.svg.ref.png new file mode 100644 index 0000000..e71ff81 Binary files /dev/null and b/test/fallback-resolution.ppi288x288.svg.ref.png differ diff --git a/test/fallback-resolution.ppi288x72.ps.ref.png b/test/fallback-resolution.ppi288x72.ps.ref.png new file mode 100644 index 0000000..89b9c51 Binary files /dev/null and b/test/fallback-resolution.ppi288x72.ps.ref.png differ diff --git a/test/fallback-resolution.ppi288x72.ref.png b/test/fallback-resolution.ppi288x72.ref.png new file mode 100644 index 0000000..b213587 Binary files /dev/null and b/test/fallback-resolution.ppi288x72.ref.png differ diff --git a/test/fallback-resolution.ppi300x300.ref.png b/test/fallback-resolution.ppi300x300.ref.png deleted file mode 100644 index 61af74c..0000000 Binary files a/test/fallback-resolution.ppi300x300.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi300x72.ref.png b/test/fallback-resolution.ppi300x72.ref.png deleted file mode 100644 index d790a38..0000000 Binary files a/test/fallback-resolution.ppi300x72.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi37.5x37.5.ref.png b/test/fallback-resolution.ppi37.5x37.5.ref.png deleted file mode 100644 index 172fbcd..0000000 Binary files a/test/fallback-resolution.ppi37.5x37.5.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi37.5x72.ref.png b/test/fallback-resolution.ppi37.5x72.ref.png deleted file mode 100644 index cac416a..0000000 Binary files a/test/fallback-resolution.ppi37.5x72.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi576x576.pdf.ref.png b/test/fallback-resolution.ppi576x576.pdf.ref.png new file mode 100644 index 0000000..5b37619 Binary files /dev/null and b/test/fallback-resolution.ppi576x576.pdf.ref.png differ diff --git a/test/fallback-resolution.ppi576x576.ps.ref.png b/test/fallback-resolution.ppi576x576.ps.ref.png new file mode 100644 index 0000000..9dc4735 Binary files /dev/null and b/test/fallback-resolution.ppi576x576.ps.ref.png differ diff --git a/test/fallback-resolution.ppi576x576.svg.ref.png b/test/fallback-resolution.ppi576x576.svg.ref.png new file mode 100644 index 0000000..b5a97e3 Binary files /dev/null and b/test/fallback-resolution.ppi576x576.svg.ref.png differ diff --git a/test/fallback-resolution.ppi576x72.ps.ref.png b/test/fallback-resolution.ppi576x72.ps.ref.png new file mode 100644 index 0000000..9ac6be4 Binary files /dev/null and b/test/fallback-resolution.ppi576x72.ps.ref.png differ diff --git a/test/fallback-resolution.ppi576x72.ref.png b/test/fallback-resolution.ppi576x72.ref.png new file mode 100644 index 0000000..b63e66e Binary files /dev/null and b/test/fallback-resolution.ppi576x72.ref.png differ diff --git a/test/fallback-resolution.ppi600x600.ref.png b/test/fallback-resolution.ppi600x600.ref.png deleted file mode 100644 index 34a2e56..0000000 Binary files a/test/fallback-resolution.ppi600x600.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi600x72.ref.png b/test/fallback-resolution.ppi600x72.ref.png deleted file mode 100644 index ed45777..0000000 Binary files a/test/fallback-resolution.ppi600x72.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi72x144.ps.ref.png b/test/fallback-resolution.ppi72x144.ps.ref.png new file mode 100644 index 0000000..50b5a99 Binary files /dev/null and b/test/fallback-resolution.ppi72x144.ps.ref.png differ diff --git a/test/fallback-resolution.ppi72x144.ref.png b/test/fallback-resolution.ppi72x144.ref.png new file mode 100644 index 0000000..9d232c0 Binary files /dev/null and b/test/fallback-resolution.ppi72x144.ref.png differ diff --git a/test/fallback-resolution.ppi72x150.ref.png b/test/fallback-resolution.ppi72x150.ref.png deleted file mode 100644 index db61cba..0000000 Binary files a/test/fallback-resolution.ppi72x150.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi72x288.ps.ref.png b/test/fallback-resolution.ppi72x288.ps.ref.png new file mode 100644 index 0000000..b4ff82d Binary files /dev/null and b/test/fallback-resolution.ppi72x288.ps.ref.png differ diff --git a/test/fallback-resolution.ppi72x288.ref.png b/test/fallback-resolution.ppi72x288.ref.png new file mode 100644 index 0000000..fdbc382 Binary files /dev/null and b/test/fallback-resolution.ppi72x288.ref.png differ diff --git a/test/fallback-resolution.ppi72x300.ref.png b/test/fallback-resolution.ppi72x300.ref.png deleted file mode 100644 index 76b5b0c..0000000 Binary files a/test/fallback-resolution.ppi72x300.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi72x37.5.ref.png b/test/fallback-resolution.ppi72x37.5.ref.png deleted file mode 100644 index a459d52..0000000 Binary files a/test/fallback-resolution.ppi72x37.5.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi72x576.ps.ref.png b/test/fallback-resolution.ppi72x576.ps.ref.png new file mode 100644 index 0000000..6a3ddcb Binary files /dev/null and b/test/fallback-resolution.ppi72x576.ps.ref.png differ diff --git a/test/fallback-resolution.ppi72x576.ref.png b/test/fallback-resolution.ppi72x576.ref.png new file mode 100644 index 0000000..c943f08 Binary files /dev/null and b/test/fallback-resolution.ppi72x576.ref.png differ diff --git a/test/fallback-resolution.ppi72x600.ref.png b/test/fallback-resolution.ppi72x600.ref.png deleted file mode 100644 index 38235a3..0000000 Binary files a/test/fallback-resolution.ppi72x600.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi72x72.ref.png b/test/fallback-resolution.ppi72x72.ref.png index b76fd94..5d1df2c 100644 Binary files a/test/fallback-resolution.ppi72x72.ref.png and b/test/fallback-resolution.ppi72x72.ref.png differ diff --git a/test/fallback-resolution.ppi72x75.ref.png b/test/fallback-resolution.ppi72x75.ref.png deleted file mode 100644 index 3c22cca..0000000 Binary files a/test/fallback-resolution.ppi72x75.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi75x72.ref.png b/test/fallback-resolution.ppi75x72.ref.png deleted file mode 100644 index 161edb0..0000000 Binary files a/test/fallback-resolution.ppi75x72.ref.png and /dev/null differ diff --git a/test/fallback-resolution.ppi75x75.ref.png b/test/fallback-resolution.ppi75x75.ref.png deleted file mode 100644 index 3769d09..0000000 Binary files a/test/fallback-resolution.ppi75x75.ref.png and /dev/null differ diff --git a/test/filter-nearest-offset.quartz.xfail.png b/test/filter-nearest-offset.quartz.xfail.png deleted file mode 100644 index ee69e36..0000000 Binary files a/test/filter-nearest-offset.quartz.xfail.png and /dev/null differ diff --git a/test/filter-nearest-transformed.quartz.xfail.png b/test/filter-nearest-transformed.quartz.xfail.png index c616d64..246cdf4 100644 Binary files a/test/filter-nearest-transformed.quartz.xfail.png and b/test/filter-nearest-transformed.quartz.xfail.png differ diff --git a/test/ft-show-glyphs-positioning.pdf.ref.png b/test/ft-show-glyphs-positioning.pdf.ref.png index 796d4eb..0d62fd3 100644 Binary files a/test/ft-show-glyphs-positioning.pdf.ref.png and b/test/ft-show-glyphs-positioning.pdf.ref.png differ diff --git a/test/get-path-extents.c b/test/get-path-extents.c index 3a05eff..a9a6ad1 100644 --- a/test/get-path-extents.c +++ b/test/get-path-extents.c @@ -156,8 +156,7 @@ draw (cairo_t *cr, int width, int height) phase = "Degenerate arc (Θ=0)"; errors += !check_extents (ctx, phase, cr2, FILL, EQUALS, 0, 0, 0, 0); errors += !check_extents (ctx, phase, cr2, STROKE, EQUALS, 0, 0, 0, 0); - /*XXX: I'd expect these extents to be oriented at 200, 400 */ - errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 0, 0, 0, 0); + errors += !check_extents (ctx, phase, cr2, PATH, EQUALS, 210, 400, 0, 0); cairo_new_path (cr2); cairo_restore (cr2); diff --git a/test/group-state.c b/test/group-state.c new file mode 100644 index 0000000..a96b2e3 --- /dev/null +++ b/test/group-state.c @@ -0,0 +1,96 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* + * Copyright 2011 Andrea Canciani + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Andrea Canciani + */ + +#include "cairo-test.h" + +#define CHECK_STATUS(status) \ + do { \ + if (cairo_status (cr) != (status)) { \ + cairo_test_log (ctx, "Expected status: %s\n", \ + cairo_status_to_string (status)); \ + cairo_test_log (ctx, "Actual status: %s\n", \ + cairo_status_to_string (cairo_status (cr))); \ + result = CAIRO_TEST_FAILURE; \ + } \ + } while (0) + +static void +reinit_cairo (cairo_t **cr) +{ + if (*cr) + cairo_destroy (*cr); + + *cr = cairo_create (cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1)); + cairo_surface_destroy (cairo_get_target (*cr)); +} + +static cairo_test_status_t +preamble (cairo_test_context_t *ctx) +{ + cairo_t *cr; + cairo_test_status_t result = CAIRO_TEST_SUCCESS; + + cr = NULL; + + reinit_cairo (&cr); + + /* cairo_restore() must fail with CAIRO_STATUS_INVALID_RESTORE if + * no matching cairo_save() call has been performed. */ + cairo_test_log (ctx, "Checking save(); push(); restore();\n"); + cairo_save (cr); + CHECK_STATUS (CAIRO_STATUS_SUCCESS); + cairo_push_group (cr); + CHECK_STATUS (CAIRO_STATUS_SUCCESS); + cairo_restore (cr); + CHECK_STATUS (CAIRO_STATUS_INVALID_RESTORE); + + + reinit_cairo (&cr); + + /* cairo_restore() must fail with CAIRO_STATUS_INVALID_RESTORE if + * no matching cairo_save() call has been performed. */ + cairo_test_log (ctx, "Checking push(); save(); pop();\n"); + cairo_push_group (cr); + CHECK_STATUS (CAIRO_STATUS_SUCCESS); + cairo_save (cr); + CHECK_STATUS (CAIRO_STATUS_SUCCESS); + cairo_pop_group_to_source (cr); + CHECK_STATUS (CAIRO_STATUS_INVALID_POP_GROUP); + + + cairo_destroy (cr); + + return result; +} + +CAIRO_TEST (group_state, + "Tests the interaction between state (cairo_save, cairo_restore) " + "and group (cairo_push_group/cairo_pop_group) API", + "api", /* keywords */ + NULL, /* requirements */ + 0, 0, + preamble, NULL) diff --git a/test/huge-linear.c b/test/huge-linear.c index e57d299..f84b4ea 100644 --- a/test/huge-linear.c +++ b/test/huge-linear.c @@ -27,7 +27,7 @@ #include "cairo-test.h" /* set this to 0.1 to make this test work */ -#define FACTOR 1 +#define FACTOR 1.e6 /* XXX poppler-cairo doesn't handle gradients very well... */ diff --git a/test/huge-linear.image16.ref.png b/test/huge-linear.image16.ref.png index 30297b9..56dc58a 100644 Binary files a/test/huge-linear.image16.ref.png and b/test/huge-linear.image16.ref.png differ diff --git a/test/huge-linear.pdf.ref.png b/test/huge-linear.pdf.ref.png index cf1f8fc..8313470 100644 Binary files a/test/huge-linear.pdf.ref.png and b/test/huge-linear.pdf.ref.png differ diff --git a/test/huge-linear.quartz.ref.png b/test/huge-linear.quartz.ref.png new file mode 100644 index 0000000..3d12f7b Binary files /dev/null and b/test/huge-linear.quartz.ref.png differ diff --git a/test/huge-radial.c b/test/huge-radial.c index 7356244..21524b7 100644 --- a/test/huge-radial.c +++ b/test/huge-radial.c @@ -29,7 +29,7 @@ #include "cairo-test.h" /* set this to 0.1 to make this test work */ -#define FACTOR 1 +#define FACTOR 1.e6 /* XXX poppler-cairo doesn't handle gradients very well... */ diff --git a/test/index.html b/test/index.html new file mode 100644 index 0000000..54c65cd --- /dev/null +++ b/test/index.html @@ -0,0 +1,42 @@ + +Cairo Test Results + + + + +
+ + diff --git a/test/large-source-roi.c b/test/large-source-roi.c index e429f98..dfd3554 100644 --- a/test/large-source-roi.c +++ b/test/large-source-roi.c @@ -47,7 +47,9 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { cairo_surface_t *source; - double source_width = 32767.0; + /* Since 1cc750ed92a936d84b47cac696aaffd226e1c02e pixman will not + * paint on the source surface if source_width > 30582. */ + double source_width = 30000.0; cairo_set_source_rgb (cr, 1,1,1); cairo_paint (cr); diff --git a/test/linear-gradient-large.quartz.ref.png b/test/linear-gradient-large.quartz.ref.png new file mode 100644 index 0000000..68f0829 Binary files /dev/null and b/test/linear-gradient-large.quartz.ref.png differ diff --git a/test/linear-gradient-large.ref.png b/test/linear-gradient-large.ref.png index 753fe2a..f1f37ab 100644 Binary files a/test/linear-gradient-large.ref.png and b/test/linear-gradient-large.ref.png differ diff --git a/test/linear-gradient-subset.quartz.ref.png b/test/linear-gradient-subset.quartz.ref.png index 8183411..85d80ad 100644 Binary files a/test/linear-gradient-subset.quartz.ref.png and b/test/linear-gradient-subset.quartz.ref.png differ diff --git a/test/linear-gradient.quartz.ref.png b/test/linear-gradient.quartz.ref.png index 47332d3..1c3e7c2 100644 Binary files a/test/linear-gradient.quartz.ref.png and b/test/linear-gradient.quartz.ref.png differ diff --git a/test/make-html.pl b/test/make-html.pl deleted file mode 100755 index 9c0626d..0000000 --- a/test/make-html.pl +++ /dev/null @@ -1,303 +0,0 @@ -#!/usr/bin/perl -# -# Copyright 2005 Mozilla Corporation -# -# Permission to use, copy, modify, distribute, and sell this software -# and its documentation for any purpose is hereby granted without -# fee, provided that the above copyright notice appear in all copies -# and that both that copyright notice and this permission notice -# appear in supporting documentation, and that the name of -# Mozilla Corporation not be used in advertising or publicity pertaining to -# distribution of the software without specific, written prior -# permission. Mozilla Corporation makes no representations about the -# suitability of this software for any purpose. It is provided "as -# is" without express or implied warranty. -# -# MOZILLA CORPORTAION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -# FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL, -# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -# IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# -# Author: Vladimir Vukicevic -# - -use MIME::Base64; - -## -## Takes all the *.log files in the current directory (or those provided -## on the command line) and spits out html to stdout that can be used to -## view all the test results at once. -## - -# show reference images -$config_show_ref = $ENV{'CAIRO_TEST_SHOW_REF'} || 0; - -# show fail images -$config_show_fail = $ENV{'CAIRO_TEST_SHOW_FAIL'} || 1; - -# show all results, even passes -$config_show_all = $ENV{'CAIRO_TEST_SHOW_ALL'} || 0; - -# include test results inline -$config_show_inline = $ENV{'CAIRO_TEST_SHOW_INLINE'} || 0; - -# end of config options - -$tests = {}; -$teststats = {}; -$logs = {}; - -if ($#ARGV >= 0) { @files = @ARGV; } else { @files = <*.log>; } - -foreach (<@files>) { - my $testname; - my $out_path, $diff_path, $ref_path; - my $fn = $_; - (open LOG, $fn) || next; - while () { - if (/^OUTPUT: (.*)$/) { - $out_path = $1; - next; - } - if (/^DIFFERENCE: (.*)$/) { - $diff_path = $1; - next; - } - if (/^REFERENCE: (.*)$/) { - $ref_path = $1; - next; - } - next unless /^TEST: (.*) TARGET: (.*) FORMAT: (.*) OFFSET: (.*) SIMILAR: (.*) RESULT: ([A-Z]*).*$/; - $testname = $1 if !defined($testname); - $tests->{$1} = {} unless $tests->{$1}; - $tests->{$1}->{$2} = {} unless $tests->{$1}->{$2}; - $tests->{$1}->{$2}->{$3} = {} unless $tests->{$1}->{$2}->{$3}; - $tests->{$1}->{$2}->{$3}->{$4} = {} unless $tests->{$1}->{$2}->{$3}->{$4}; - $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'out'} = $out_path; - $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'diff'} = $diff_path; - $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'ref'} = $ref_path; - $tests->{$1}->{$2}->{$3}->{$4}->{$5}->{'result'} = $6; - - $teststats->{$2} = {"PASS" => 0, "FAIL" => 0, "NEW" => 0, "XFAIL" => 0, "UNTESTED" => 0, "CRASHED" =>0} - unless $teststats->{$2}; - ($teststats->{$2}->{$6})++; - - undef $out_path; - undef $diff_path; - undef $ref_path; - } - close LOG; - - (open LOG, $fn) || die "I could open it earlier, but I can't now: $!"; - { - local $/; - $logs->{$testname} = ; - } - close LOG; -} - -my $targeth = {}; -my $formath = {}; -my $offseth = {}; -my $similarh = {}; - -foreach my $testname (sort(keys %$tests)) { - my $v0 = $tests->{$testname}; - foreach my $targetname (sort(keys %$v0)) { - my $v1 = $v0->{$targetname}; - - $targeth->{$targetname} = 1; - foreach my $formatname (sort(keys %$v1)) { - my $v2 = $v1->{$formatname}; - - $formath->{$formatname} = 1; - foreach my $offsetval (sort(keys %$v2)) { - my $v3 = $v2->{$offsetval}; - - $offseth->{$offsetval} = 1; - foreach my $similarval (sort(keys %$v3)) { - $similarh->{$similarval} = 1; - } - } - } - } -} - -my @targets = sort(keys %$targeth); -my @formats = sort(keys %$formath); -my @offsets = sort(keys %$offseth); -my @similars = sort(keys %$similarh); - -sub printl { - print @_, "\n"; -} - -# convert file into a data URI -sub file_to_data { - my ($ctype,$fname) = @_; - my $fdata; - open FILE, $fname || return "data:" . $ctype . ","; - { - local $/; - $fdata = encode_base64(); - } - close FILE; - return "data:" . $ctype . ";base64," . $fdata; -} - -# convert string into a data URI -sub string_to_data { - my ($ctype,$str) = @_; - $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; - return "data:" . $ctype . "," . $str; -} - -printl ''; -printl 'Cairo Test Results'; -printl ''; -printl ''; -printl ''; -printl ''; - -printl ''; -print ''; - -foreach my $target (@targets) { - print ''; -} -printl ''; - -print ''; - -foreach my $target (@targets) { - print ''; -} -printl ''; - -sub img_for { - my ($fn, $withlink) = @_; - - return "" unless defined $fn; - - if ($config_show_inline) { - $fn = file_to_data("image/png", $fn); - # never return links, people can just right-click view image, - # and we don't clutter the document - return ''; - } else { - if ($withlink) { - return ''; - } else { - return ''; - } - } -} - -foreach my $test (sort(keys %$tests)) { - foreach my $offset (@offsets) { - foreach my $similar (@similars) { - foreach my $format (@formats) { - my $testline = ""; - - foreach my $target (@targets) { - my $tgtdata = $tests->{$test}->{$target}; - if ($tgtdata) { - my $testres = $tgtdata->{$format}->{$offset}->{$similar}; - if ($testres) { - my %testfiles; - $testfiles{'out'} = $testres->{'out'}; - $testfiles{'diff'} = $testres->{'diff'}; - $testfiles{'ref'} = $testres->{'ref'}; - - $testline .= ""; - } else { - $testline .= ''; - } - } else { - $testline .= ''; - } - } - print ''; - - print $testline; - - print "\n"; - } - } - } -} - -print "
Test', $target, '
'; - print '', $teststats->{$target}->{"PASS"}, '/'; - print '', - $teststats->{$target}->{"FAIL"} + - $teststats->{$target}->{"NEW"} + - $teststats->{$target}->{"CRASHED"}, - '/'; - print '', $teststats->{$target}->{"XFAIL"}, '/'; - print '', $teststats->{$target}->{"UNTESTED"}, ''; - print '
{'result'}\">"; - $teststats{$target}{$testres}++; - if ($testres->{'result'} eq "PASS") { - if ($config_show_all) { - $testline .= img_for($testfiles{'out'},1); - } - } elsif ($testres->{'result'} eq "FAIL") { - if ($config_show_fail || $config_show_all) { - $testline .= img_for($testfiles{'out'},1); - $testline .= " "; - $testline .= img_for($testfiles{'diff'},1); - $testline .= " "; - $testline .= img_for($testfiles{'ref'},1); - } - } elsif ($testres->{'result'} eq "NEW") { - if ($config_show_fail || $config_show_all) { - $testline .= img_for($testfiles{'new'},1); - } - } elsif ($testres->{'result'} eq "CRASHED") { - $testline .= "!!!CRASHED!!!"; - } elsif ($testres->{'result'} eq "XFAIL") { - #nothing - if ($config_show_all) { - $testline .= img_for($testfiles{'out'},1); - #$testline .= "
"; - $testline .= " "; - $testline .= img_for($testfiles{'diff'},1); - $testline .= " "; - $testline .= img_for($testfiles{'ref'},1); - } - } elsif ($testres->{'result'} eq "UNTESTED") { - #nothing - } else { - $testline .= "UNSUPPORTED STATUS '$testres->{'result'}' (update make-html.pl)"; - } - - $testline .= "
'; - - if ($config_show_inline) { - print "$test ($format/$offset) "; - print "({$test}) . "\">log)"; - } else { - print $test, ' (', $format, '/', $offset, ($similar ? ' similar' : ''), ') '; - print "(log)"; - } - - print '
\n"; diff --git a/test/mask.quartz.argb32.ref.png b/test/mask.quartz.argb32.ref.png index 53d034a..c7ab76e 100644 Binary files a/test/mask.quartz.argb32.ref.png and b/test/mask.quartz.argb32.ref.png differ diff --git a/test/mesh-pattern-accuracy.c b/test/mesh-pattern-accuracy.c new file mode 100644 index 0000000..0f756c5 --- /dev/null +++ b/test/mesh-pattern-accuracy.c @@ -0,0 +1,99 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" +#include + +#define SIZE 256 + +/* This test is designed to test the accuracy of the rendering of mesh + * patterns. + * + * Color accuracy is tested by a square patch covering the whole + * surface with black and white corners. + * + * Extents accuracy is checked by a small red square patch at the + * center of the surface which should measure 2x2 pixels. + */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + double offset; + + cairo_test_paint_checkered (cr); + + pattern = cairo_pattern_create_mesh (); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 0, 0); + cairo_pattern_mesh_line_to (pattern, 1, 0); + cairo_pattern_mesh_line_to (pattern, 1, 1); + cairo_pattern_mesh_line_to (pattern, 0, 1); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 0, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 1, 1, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 1); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_pattern_mesh_begin_patch (pattern); + + /* A small 1x1 red patch, that should be rendered as a 2x2 red + * square in the center of the image */ + + offset = 0.5 / SIZE; + + cairo_pattern_mesh_move_to (pattern, 0.5 + offset, 0.5 + offset); + cairo_pattern_mesh_line_to (pattern, 0.5 + offset, 0.5 - offset); + cairo_pattern_mesh_line_to (pattern, 0.5 - offset, 0.5 - offset); + cairo_pattern_mesh_line_to (pattern, 0.5 - offset, 0.5 + offset); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 0, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_scale (cr, SIZE, SIZE); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern_accuracy, + "Paint mesh pattern", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + SIZE, SIZE, + NULL, draw) diff --git a/test/mesh-pattern-accuracy.image16.ref.png b/test/mesh-pattern-accuracy.image16.ref.png new file mode 100644 index 0000000..a82e4fb Binary files /dev/null and b/test/mesh-pattern-accuracy.image16.ref.png differ diff --git a/test/mesh-pattern-accuracy.ref.png b/test/mesh-pattern-accuracy.ref.png new file mode 100644 index 0000000..dfc19ff Binary files /dev/null and b/test/mesh-pattern-accuracy.ref.png differ diff --git a/test/mesh-pattern-conical.c b/test/mesh-pattern-conical.c new file mode 100644 index 0000000..aa3e182 --- /dev/null +++ b/test/mesh-pattern-conical.c @@ -0,0 +1,135 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" +#include + +#define PAT_WIDTH 100 +#define PAT_HEIGHT 100 +#define SIZE PAT_WIDTH +#define PAD 2 +#define WIDTH (PAD + SIZE + PAD) +#define HEIGHT WIDTH + + +/* + * This test is designed to paint a mesh pattern which contains 8 + * circular sectors approximating a conical gradient. + */ + +#define CENTER_X 50 +#define CENTER_Y 50 +#define RADIUS 50 + +static void +sector_patch (cairo_pattern_t *pattern, + double angle_A, + double A_r, double A_g, double A_b, + double angle_B, + double B_r, double B_g, double B_b) +{ + double r_sin_A, r_cos_A; + double r_sin_B, r_cos_B; + double h; + + r_sin_A = RADIUS * sin (angle_A); + r_cos_A = RADIUS * cos (angle_A); + r_sin_B = RADIUS * sin (angle_B); + r_cos_B = RADIUS * cos (angle_B); + + h = 4.0/3.0 * tan ((angle_B - angle_A) / 4.0); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, CENTER_X, CENTER_Y); + cairo_pattern_mesh_line_to (pattern, + CENTER_X + r_cos_A, + CENTER_Y + r_sin_A); + + cairo_pattern_mesh_curve_to (pattern, + CENTER_X + r_cos_A - h * r_sin_A, + CENTER_Y + r_sin_A + h * r_cos_A, + CENTER_X + r_cos_B + h * r_sin_B, + CENTER_Y + r_sin_B - h * r_cos_B, + CENTER_X + r_cos_B, + CENTER_Y + r_sin_B); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 1, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, A_r, A_g, A_b); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, B_r, B_g, B_b); + + cairo_pattern_mesh_end_patch (pattern); +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_translate (cr, PAD, PAD); + + pattern = cairo_pattern_create_mesh (); + sector_patch (pattern, + 0, 1, 0, 0, + M_PI/4, 1, 1, 0); + sector_patch (pattern, + M_PI/4, 0, 1, 0, + M_PI/2, 0, 1, 1); + sector_patch (pattern, + M_PI/2, 0, 0, 1, + 3*M_PI/4, 1, 0, 1); + sector_patch (pattern, + 3*M_PI/4, 1, 0, 0, + M_PI, 1, 1, 0); + sector_patch (pattern, + -M_PI, 1, 1, 0, + -3*M_PI/4, 0, 1, 0); + sector_patch (pattern, + -3*M_PI/4, 0, 1, 0, + -M_PI/2, 0, 1, 1); + sector_patch (pattern, + -M_PI/2, 0, 1, 1, + -M_PI/4, 0, 0, 1); + sector_patch (pattern, + -M_PI/4, 0, 0, 1, + 0, 1, 0, 0); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern_conical, + "Paint a conical pattern using a mesh pattern", + "conical,mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/mesh-pattern-conical.image16.ref.png b/test/mesh-pattern-conical.image16.ref.png new file mode 100644 index 0000000..b8f9416 Binary files /dev/null and b/test/mesh-pattern-conical.image16.ref.png differ diff --git a/test/mesh-pattern-conical.ref.png b/test/mesh-pattern-conical.ref.png new file mode 100644 index 0000000..f5dc21d Binary files /dev/null and b/test/mesh-pattern-conical.ref.png differ diff --git a/test/mesh-pattern-control-points.c b/test/mesh-pattern-control-points.c new file mode 100644 index 0000000..54ff850 --- /dev/null +++ b/test/mesh-pattern-control-points.c @@ -0,0 +1,114 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define SIZE 90 +#define PAD 10 +#define WIDTH (PAD + 2 * (SIZE + PAD)) +#define HEIGHT (PAD + SIZE + PAD) + + +/* + * This test is designed to paint a two mesh patches. One with default + * control points and one with a control point at a no default + * location. The control points of both of them are drawn as squares + * to make them visible. + */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + unsigned int i, j; + unsigned int num_patches; + double x, y; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_translate (cr, PAD, PAD); + + pattern = cairo_pattern_create_mesh (); + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 0, 0); + cairo_pattern_mesh_line_to (pattern, SIZE, 0); + cairo_pattern_mesh_line_to (pattern, SIZE, SIZE); + cairo_pattern_mesh_line_to (pattern, 0, SIZE); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_set_control_point (pattern, 0, SIZE * .7, SIZE * .7); + cairo_pattern_mesh_set_control_point (pattern, 1, SIZE * .9, SIZE * .7); + cairo_pattern_mesh_set_control_point (pattern, 2, SIZE * .9, SIZE * .9); + cairo_pattern_mesh_set_control_point (pattern, 3, SIZE * .7, SIZE * .9); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, SIZE + PAD, 0); + cairo_pattern_mesh_line_to (pattern, 2*SIZE + PAD, 0); + cairo_pattern_mesh_line_to (pattern, 2*SIZE + PAD, SIZE); + cairo_pattern_mesh_line_to (pattern, SIZE + PAD, SIZE); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + + /* mark the location of the control points */ + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_pattern_mesh_get_patch_count (pattern, &num_patches); + for (i = 0; i < num_patches; i++) { + for (j = 0; j < 4; j++) { + cairo_pattern_mesh_get_control_point (pattern, i, j, &x, &y); + cairo_rectangle (cr, x - 5, y - 5, 10, 10); + cairo_fill (cr); + } + } + + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + + +CAIRO_TEST (mesh_pattern_control_points, + "Paint mesh pattern with non default control points", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/mesh-pattern-control-points.image16.ref.png b/test/mesh-pattern-control-points.image16.ref.png new file mode 100644 index 0000000..b664ef9 Binary files /dev/null and b/test/mesh-pattern-control-points.image16.ref.png differ diff --git a/test/mesh-pattern-control-points.ref.png b/test/mesh-pattern-control-points.ref.png new file mode 100644 index 0000000..841fc3e Binary files /dev/null and b/test/mesh-pattern-control-points.ref.png differ diff --git a/test/mesh-pattern-fold.c b/test/mesh-pattern-fold.c new file mode 100644 index 0000000..586b0cd --- /dev/null +++ b/test/mesh-pattern-fold.c @@ -0,0 +1,82 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define SIZE 100 +#define PAD 15 +#define WIDTH (5*SIZE) +#define HEIGHT (5*SIZE) + + +/* This test is designed to paint a mesh pattern which folds along + * both parameters. */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_test_paint_checkered (cr); + + pattern = cairo_pattern_create_mesh (); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 1, 1); + + cairo_pattern_mesh_curve_to (pattern, 6, 0, -1, 0, 4, 1); + cairo_pattern_mesh_curve_to (pattern, 5, 6, 5, -1, 4, 4); + cairo_pattern_mesh_curve_to (pattern, -1, 3, 6, 3, 1, 4); + cairo_pattern_mesh_curve_to (pattern, 2, -1, 2, 6, 1, 1); + + cairo_pattern_mesh_set_control_point (pattern, 0, 2, 3); + cairo_pattern_mesh_set_control_point (pattern, 1, 3, 3); + cairo_pattern_mesh_set_control_point (pattern, 2, 3, 2); + cairo_pattern_mesh_set_control_point (pattern, 3, 2, 2); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 0, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_scale (cr, SIZE, SIZE); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern_fold, + "Paint a mesh pattern with complex folds", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/mesh-pattern-fold.image16.ref.png b/test/mesh-pattern-fold.image16.ref.png new file mode 100644 index 0000000..4264ad2 Binary files /dev/null and b/test/mesh-pattern-fold.image16.ref.png differ diff --git a/test/mesh-pattern-fold.ref.png b/test/mesh-pattern-fold.ref.png new file mode 100644 index 0000000..6275b82 Binary files /dev/null and b/test/mesh-pattern-fold.ref.png differ diff --git a/test/mesh-pattern-overlap.c b/test/mesh-pattern-overlap.c new file mode 100644 index 0000000..63cf024 --- /dev/null +++ b/test/mesh-pattern-overlap.c @@ -0,0 +1,76 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define SIZE 100 +#define PAD 15 +#define WIDTH (PAD + SIZE + PAD) +#define HEIGHT WIDTH + + +/* This test is designed to paint a mesh pattern with a simple + * fold. */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_test_paint_checkered (cr); + + cairo_translate (cr, PAD, PAD); + + pattern = cairo_pattern_create_mesh (); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 0, 0); + cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); + cairo_pattern_mesh_curve_to (pattern, 130, 140, 60, -40, 100, 100); + cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); + cairo_pattern_mesh_curve_to (pattern, -30, -40, 30, 140, 0, 0); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern_overlap, + "Paint a mesh pattern with a simple fold", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/mesh-pattern-overlap.image16.ref.png b/test/mesh-pattern-overlap.image16.ref.png new file mode 100644 index 0000000..a67f7dd Binary files /dev/null and b/test/mesh-pattern-overlap.image16.ref.png differ diff --git a/test/mesh-pattern-overlap.ref.png b/test/mesh-pattern-overlap.ref.png new file mode 100644 index 0000000..1394c9e Binary files /dev/null and b/test/mesh-pattern-overlap.ref.png differ diff --git a/test/mesh-pattern-transformed.c b/test/mesh-pattern-transformed.c new file mode 100644 index 0000000..278e4a8 --- /dev/null +++ b/test/mesh-pattern-transformed.c @@ -0,0 +1,107 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define PAT_WIDTH 170 +#define PAT_HEIGHT 170 +#define SIZE PAT_WIDTH +#define PAD 10 +#define WIDTH 190 +#define HEIGHT 140 + + +/* This test is designed to paint a mesh pattern containing two + * overlapping patches transformed in different ways. */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_test_paint_checkered (cr); + + cairo_translate (cr, PAD, PAD); + + pattern = cairo_pattern_create_mesh (); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 0, 0); + cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); + cairo_pattern_mesh_curve_to (pattern, 60, 30, 130, 60, 100, 100); + cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); + cairo_pattern_mesh_curve_to (pattern, 30, 70, -30, 30, 0, 0); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 50, 50); + cairo_pattern_mesh_curve_to (pattern, 80, 20, 110, 80, 150, 50); + + cairo_pattern_mesh_curve_to (pattern, 110, 80, 180, 110, 150, 150); + + cairo_pattern_mesh_curve_to (pattern, 110, 120, 80, 180, 50, 150); + + cairo_pattern_mesh_curve_to (pattern, 80, 120, 20, 80, 50, 50); + + cairo_pattern_mesh_set_corner_color_rgba (pattern, 0, 1, 0, 0, 0.3); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgba (pattern, 2, 0, 0, 1, 0.3); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_scale (cr, .5, .5); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + + cairo_translate (cr, PAT_WIDTH, PAT_HEIGHT); + cairo_translate (cr, PAT_WIDTH/2, PAT_HEIGHT/2); + cairo_rotate (cr, M_PI/4); + cairo_translate (cr, -PAT_WIDTH, -PAT_HEIGHT); + cairo_set_source (cr, pattern); + cairo_paint (cr); + + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern_transformed, + "Paint mesh pattern with a transformation", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) + diff --git a/test/mesh-pattern-transformed.image16.ref.png b/test/mesh-pattern-transformed.image16.ref.png new file mode 100644 index 0000000..0645b86 Binary files /dev/null and b/test/mesh-pattern-transformed.image16.ref.png differ diff --git a/test/mesh-pattern-transformed.ref.png b/test/mesh-pattern-transformed.ref.png new file mode 100644 index 0000000..9aa482f Binary files /dev/null and b/test/mesh-pattern-transformed.ref.png differ diff --git a/test/mesh-pattern.c b/test/mesh-pattern.c new file mode 100644 index 0000000..bcd49be --- /dev/null +++ b/test/mesh-pattern.c @@ -0,0 +1,94 @@ +/* + * Copyright © 2009 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define PAT_WIDTH 170 +#define PAT_HEIGHT 170 +#define SIZE PAT_WIDTH +#define PAD 2 +#define WIDTH (PAD + SIZE + PAD) +#define HEIGHT WIDTH + + +/* This test is designed to paint a mesh pattern. The mesh contains + * two overlapping patches */ + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_pattern_t *pattern; + + cairo_test_paint_checkered (cr); + + cairo_translate (cr, PAD, PAD); + cairo_translate (cr, 10, 10); + + pattern = cairo_pattern_create_mesh (); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 0, 0); + cairo_pattern_mesh_curve_to (pattern, 30, -30, 60, 30, 100, 0); + cairo_pattern_mesh_curve_to (pattern, 60, 30, 130, 60, 100, 100); + cairo_pattern_mesh_curve_to (pattern, 60, 70, 30, 130, 0, 100); + cairo_pattern_mesh_curve_to (pattern, 30, 70, -30, 30, 0, 0); + + cairo_pattern_mesh_set_corner_color_rgb (pattern, 0, 1, 0, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 2, 0, 0, 1); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_pattern_mesh_begin_patch (pattern); + + cairo_pattern_mesh_move_to (pattern, 50, 50); + cairo_pattern_mesh_curve_to (pattern, 80, 20, 110, 80, 150, 50); + cairo_pattern_mesh_curve_to (pattern, 110, 80, 180, 110, 150, 150); + cairo_pattern_mesh_curve_to (pattern, 110, 120, 80, 180, 50, 150); + cairo_pattern_mesh_curve_to (pattern, 80, 120, 20, 80, 50, 50); + + cairo_pattern_mesh_set_corner_color_rgba (pattern, 0, 1, 0, 0, 0.3); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 1, 0, 1, 0); + cairo_pattern_mesh_set_corner_color_rgba (pattern, 2, 0, 0, 1, 0.3); + cairo_pattern_mesh_set_corner_color_rgb (pattern, 3, 1, 1, 0); + + cairo_pattern_mesh_end_patch (pattern); + + cairo_set_source (cr, pattern); + cairo_paint (cr); + cairo_pattern_destroy (pattern); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (mesh_pattern, + "Paint mesh pattern", + "mesh,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/mesh-pattern.image16.ref.png b/test/mesh-pattern.image16.ref.png new file mode 100644 index 0000000..bd63538 Binary files /dev/null and b/test/mesh-pattern.image16.ref.png differ diff --git a/test/mesh-pattern.ref.png b/test/mesh-pattern.ref.png new file mode 100644 index 0000000..1f76639 Binary files /dev/null and b/test/mesh-pattern.ref.png differ diff --git a/test/operator-alpha-alpha.c b/test/operator-alpha-alpha.c index b76faf5..2cef858 100644 --- a/test/operator-alpha-alpha.c +++ b/test/operator-alpha-alpha.c @@ -93,9 +93,9 @@ subdraw (cairo_t *cr, int width, int height) cairo_surface_t *bg, *fg; bg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, SIZE * STEPS, SIZE * STEPS); + CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); fg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_COLOR_ALPHA, SIZE * STEPS, SIZE * STEPS); + CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); bgcr = cairo_create (bg); fgcr = cairo_create (fg); cairo_scale (bgcr, SIZE, SIZE); diff --git a/test/operator-source.quartz.argb32.ref.png b/test/operator-source.quartz.argb32.ref.png index 4e15991..83d788c 100644 Binary files a/test/operator-source.quartz.argb32.ref.png and b/test/operator-source.quartz.argb32.ref.png differ diff --git a/test/operator-source.quartz.rgb24.ref.png b/test/operator-source.quartz.rgb24.ref.png index c40c242..038662f 100644 Binary files a/test/operator-source.quartz.rgb24.ref.png and b/test/operator-source.quartz.rgb24.ref.png differ diff --git a/test/overlapping-glyphs.quartz.argb32.ref.png b/test/overlapping-glyphs.quartz.argb32.ref.png new file mode 100644 index 0000000..eaa0cb9 Binary files /dev/null and b/test/overlapping-glyphs.quartz.argb32.ref.png differ diff --git a/test/overlapping-glyphs.quartz.rgb24.ref.png b/test/overlapping-glyphs.quartz.rgb24.ref.png new file mode 100644 index 0000000..c2b5fc0 Binary files /dev/null and b/test/overlapping-glyphs.quartz.rgb24.ref.png differ diff --git a/test/partial-clip-text.quartz.ref.png b/test/partial-clip-text.quartz.ref.png new file mode 100644 index 0000000..33ac283 Binary files /dev/null and b/test/partial-clip-text.quartz.ref.png differ diff --git a/test/pattern-get-type.c b/test/pattern-get-type.c index d2ef5bf..c807b14 100644 --- a/test/pattern-get-type.c +++ b/test/pattern-get-type.c @@ -29,7 +29,7 @@ static cairo_test_status_t preamble (cairo_test_context_t *Ctx) { cairo_surface_t *surface; - cairo_pattern_t *solid_rgb, *solid_rgba, *surface_pattern, *linear, *radial; + cairo_pattern_t *solid_rgb, *solid_rgba, *surface_pattern, *linear, *radial, *mesh; cairo_test_status_t result = CAIRO_TEST_SUCCESS; solid_rgb = cairo_pattern_create_rgb (0.0, 0.1, 0.2); @@ -40,6 +40,7 @@ preamble (cairo_test_context_t *Ctx) linear = cairo_pattern_create_linear (0.0, 0.0, 10.0, 10.0); radial = cairo_pattern_create_radial (10.0, 10.0, 0.1, 10.0, 10.0, 1.0); + mesh = cairo_pattern_create_mesh (); if (cairo_pattern_get_type (solid_rgb) != CAIRO_PATTERN_TYPE_SOLID) result = CAIRO_TEST_FAILURE; @@ -56,12 +57,16 @@ preamble (cairo_test_context_t *Ctx) if (cairo_pattern_get_type (radial) != CAIRO_PATTERN_TYPE_RADIAL) result = CAIRO_TEST_FAILURE; + if (cairo_pattern_get_type (mesh) != CAIRO_PATTERN_TYPE_MESH) + result = CAIRO_TEST_FAILURE; + cairo_pattern_destroy (solid_rgb); cairo_pattern_destroy (solid_rgba); cairo_pattern_destroy (surface_pattern); cairo_surface_destroy (surface); cairo_pattern_destroy (linear); cairo_pattern_destroy (radial); + cairo_pattern_destroy (mesh); return result; } diff --git a/test/pattern-getters.c b/test/pattern-getters.c index 657159c..2d7d904 100644 --- a/test/pattern-getters.c +++ b/test/pattern-getters.c @@ -183,6 +183,88 @@ draw (cairo_t *cr, int width, int height) cairo_pattern_destroy (pat); } + /* Test mesh getters */ + { + unsigned int count; + int i; + pat = cairo_pattern_create_mesh (); + + status = cairo_pattern_mesh_get_patch_count (pat, &count); + CHECK_SUCCESS; + + if (count != 0) { + cairo_pattern_destroy (pat); + return CAIRO_TEST_FAILURE; + } + + cairo_pattern_mesh_begin_patch (pat); + cairo_pattern_mesh_move_to (pat, 0, 0); + cairo_pattern_mesh_line_to (pat, 0, 3); + cairo_pattern_mesh_line_to (pat, 3, 3); + cairo_pattern_mesh_line_to (pat, 3, 0); + + status = cairo_pattern_mesh_get_patch_count (pat, &count); + CHECK_SUCCESS; + + if (count != 0) { + cairo_pattern_destroy (pat); + return CAIRO_TEST_FAILURE; + } + + cairo_pattern_mesh_end_patch (pat); + + status = cairo_pattern_mesh_get_patch_count (pat, &count); + CHECK_SUCCESS; + + if (count != 1) { + cairo_pattern_destroy (pat); + return CAIRO_TEST_FAILURE; + } + + for (i = 0; i < 4; i++) { + double cp_x[4] = { 1, 1, 2, 2 }; + double cp_y[4] = { 1, 2, 2, 1 }; + double x, y; + + status = cairo_pattern_mesh_get_control_point (pat, 0, i, &x, &y); + CHECK_SUCCESS; + + if (!CAIRO_TEST_DOUBLE_EQUALS(x,cp_x[i]) || + !CAIRO_TEST_DOUBLE_EQUALS(y,cp_y[i])) + { + cairo_pattern_destroy (pat); + return CAIRO_TEST_FAILURE; + } + } + + cairo_pattern_mesh_begin_patch (pat); + cairo_pattern_mesh_move_to (pat, 0, 0); + cairo_pattern_mesh_line_to (pat, 1, 0); + cairo_pattern_mesh_line_to (pat, 1, 1); + cairo_pattern_mesh_set_corner_color_rgb (pat, 0, 1, 1, 1); + cairo_pattern_mesh_end_patch (pat); + + for (i = 0; i < 4; i++) { + double corner_color[4] = { 1, 0, 0, 1 }; + double a, r, g, b; + + status = cairo_pattern_mesh_get_corner_color_rgba (pat, 1, i, + &r, &g, &b, &a); + CHECK_SUCCESS; + + if (!CAIRO_TEST_DOUBLE_EQUALS(a,corner_color[i]) || + !CAIRO_TEST_DOUBLE_EQUALS(r,corner_color[i]) || + !CAIRO_TEST_DOUBLE_EQUALS(g,corner_color[i]) || + !CAIRO_TEST_DOUBLE_EQUALS(b,corner_color[i])) + { + cairo_pattern_destroy (pat); + return CAIRO_TEST_FAILURE; + } + } + + cairo_pattern_destroy (pat); + } + cairo_set_source_rgb (cr, 0, 1, 0); cairo_paint (cr); diff --git a/test/ps-eps.c b/test/ps-eps.c index 726cb46..33802f3 100644 --- a/test/ps-eps.c +++ b/test/ps-eps.c @@ -1,6 +1,7 @@ /* * Copyright © 2006 Red Hat, Inc. * Copyright © 2009 Adrian Johnson + * Copyright © 2008 Chris Wilson * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without @@ -22,59 +23,342 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Carl D. Worth - * Author: Adrian Johnson + * Adrian Johnson + * Chris Wilson */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include +#include #include #include #include +#ifdef HAVE_UNISTD_H +#include +#include +#endif +#if HAVE_SYS_STAT_H +#include +#endif + #include "cairo-test.h" +#include "buffer-diff.h" /* Test EPS output. */ -static cairo_test_status_t -preamble (cairo_test_context_t *ctx) +#define WIDTH 595 +#define HEIGHT 842 + +/* Reference Bounding Box */ +#define LLX 95 +#define LLY 687 +#define URX 155 +#define URY 747 + +static void +_xunlink (const cairo_test_context_t *ctx, const char *pathname) { - cairo_surface_t *surface; - cairo_t *cr; + if (unlink (pathname) < 0 && errno != ENOENT) { + cairo_test_log (ctx, "Error: Cannot remove %s: %s\n", + pathname, strerror (errno)); + exit (1); + } +} + +static cairo_bool_t +check_result (cairo_test_context_t *ctx, + const cairo_boilerplate_target_t *target, + const char *test_name, + const char *base_name, + cairo_surface_t *surface) +{ + const char *format; + char *ref_name; + char *png_name; + char *diff_name; + cairo_surface_t *test_image, *ref_image, *diff_image; + buffer_diff_result_t result; cairo_status_t status; - const char *filename; + cairo_bool_t ret; - if (! (cairo_test_is_target_enabled (ctx, "ps2") || - cairo_test_is_target_enabled (ctx, "ps3"))) - { - return CAIRO_TEST_UNTESTED; + /* XXX log target, OUTPUT, REFERENCE, DIFFERENCE for index.html */ + + if (target->finish_surface != NULL) { + status = target->finish_surface (surface); + if (status) { + cairo_test_log (ctx, "Error: Failed to finish surface: %s\n", + cairo_status_to_string (status)); + cairo_surface_destroy (surface); + return FALSE; + } } - filename = "ps-eps.out.eps"; + xasprintf (&png_name, "%s.out.png", base_name); + xasprintf (&diff_name, "%s.diff.png", base_name); - surface = cairo_ps_surface_create (filename, 595, 842); - cairo_ps_surface_set_eps (surface, TRUE); - cr = cairo_create (surface); + test_image = target->get_image_surface (surface, 0, WIDTH, HEIGHT); + if (cairo_surface_status (test_image)) { + cairo_test_log (ctx, "Error: Failed to extract page: %s\n", + cairo_status_to_string (cairo_surface_status (test_image))); + cairo_surface_destroy (test_image); + free (png_name); + free (diff_name); + return FALSE; + } - cairo_new_sub_path (cr); - cairo_arc (cr, 100, 100, 25, 0, 2*M_PI); - cairo_set_line_width (cr, 10); - cairo_stroke (cr); + _xunlink (ctx, png_name); + status = cairo_surface_write_to_png (test_image, png_name); + if (status) { + cairo_test_log (ctx, "Error: Failed to write output image: %s\n", + cairo_status_to_string (status)); + cairo_surface_destroy (test_image); + free (png_name); + free (diff_name); + return FALSE; + } - cairo_show_page (cr); + format = cairo_boilerplate_content_name (target->content); + ref_name = cairo_test_reference_filename (ctx, + base_name, + test_name, + target->name, + target->basename, + format, + CAIRO_TEST_REF_SUFFIX, + CAIRO_TEST_PNG_EXTENSION); + if (ref_name == NULL) { + cairo_test_log (ctx, "Error: Cannot find reference image for %s\n", + base_name); + cairo_surface_destroy (test_image); + free (png_name); + free (diff_name); + return FALSE; + } - status = cairo_status (cr); + ref_image = cairo_test_get_reference_image (ctx, ref_name, + target->content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED); + if (cairo_surface_status (ref_image)) { + cairo_test_log (ctx, "Error: Cannot open reference image for %s: %s\n", + ref_name, + cairo_status_to_string (cairo_surface_status (ref_image))); + cairo_surface_destroy (ref_image); + cairo_surface_destroy (test_image); + free (png_name); + free (diff_name); + free (ref_name); + return FALSE; + } - cairo_destroy (cr); - cairo_surface_destroy (surface); + diff_image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + WIDTH, HEIGHT); + ret = TRUE; + status = image_diff (ctx, + test_image, ref_image, diff_image, + &result); + _xunlink (ctx, diff_name); if (status) { - cairo_test_log (ctx, "Failed to create ps surface for file %s: %s\n", - filename, cairo_status_to_string (status)); - return CAIRO_TEST_FAILURE; + cairo_test_log (ctx, "Error: Failed to compare images: %s\n", + cairo_status_to_string (status)); + ret = FALSE; + } else if (image_diff_is_failure (&result, target->error_tolerance)) + { + ret = FALSE; + + status = cairo_surface_write_to_png (diff_image, diff_name); + if (status) { + cairo_test_log (ctx, "Error: Failed to write differences image: %s\n", + cairo_status_to_string (status)); + } + } + + cairo_surface_destroy (test_image); + cairo_surface_destroy (diff_image); + free (png_name); + free (diff_name); + free (ref_name); + + return ret; +} + + +#define DOCUMENT_BBOX "%%BoundingBox:" +#define PAGE_BBOX "%%PageBoundingBox:" + +static cairo_bool_t +check_bbox (cairo_test_context_t *ctx, + const char *base_name) +{ + char *filename; + FILE *f; + char buf[256]; + cairo_bool_t bbox_pass, page_bbox_pass; + int llx, lly, urx, ury; + int ret; + + xasprintf (&filename, "%s.out.ps", base_name); + f = fopen (filename, "r"); + if (!f) { + cairo_test_log (ctx, "Error: Cannot open EPS output: %s\n", + base_name); + free (filename); + return FALSE; + } + + bbox_pass = FALSE; + page_bbox_pass = FALSE; + while (!feof(f)) { + fgets (buf, sizeof(buf), f); + + if (strncmp (buf, DOCUMENT_BBOX, strlen (DOCUMENT_BBOX)) == 0) { + ret = sscanf (buf+strlen (DOCUMENT_BBOX), "%d %d %d %d", &llx, &lly, &urx, &ury); + if (ret == 4 && llx == LLX && lly == LLY && urx == URX && ury == URY) + bbox_pass = TRUE; + } + + if (strncmp (buf, PAGE_BBOX, strlen (PAGE_BBOX)) == 0) { + ret = sscanf (buf+strlen (PAGE_BBOX), "%d %d %d %d", &llx, &lly, &urx, &ury); + if (ret == 4 && llx == LLX && lly == LLY && urx == URX && ury == URY) + page_bbox_pass = TRUE; + } + } + fclose (f); + + if (!bbox_pass || !page_bbox_pass) { + cairo_test_log (ctx, "Error: EPS Bounding Box does not match reference Bounding Box\n"); + return FALSE; + } + + free (filename); + + return TRUE; +} + +static cairo_bool_t +_cairo_test_mkdir (const char *path) +{ +#if ! HAVE_MKDIR + return FALSE; +#elif HAVE_MKDIR == 1 + if (mkdir (path) == 0) + return TRUE; +#elif HAVE_MKDIR == 2 + if (mkdir (path, 0770) == 0) + return TRUE; +#else +#error Bad value for HAVE_MKDIR +#endif + + return errno == EEXIST; +} + +static cairo_test_status_t +preamble (cairo_test_context_t *ctx) +{ + cairo_t *cr; + cairo_test_status_t ret = CAIRO_TEST_UNTESTED; + const char *path = _cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; + unsigned int i; + + for (i = 0; i < ctx->num_targets; i++) { + const cairo_boilerplate_target_t *target = ctx->targets_to_test[i]; + cairo_surface_t *surface = NULL; + char *base_name; + void *closure; + const char *format; + cairo_status_t status; + cairo_bool_t pass; + char *test_name; + + if (! cairo_test_is_target_enabled (ctx, target->name)) + continue; + + format = cairo_boilerplate_content_name (target->content); + xasprintf (&test_name, "ps-eps"); + xasprintf (&base_name, "%s/ps-eps.%s.%s", + path, target->name, format); + + surface = (target->create_surface) (base_name, + target->content, + WIDTH, HEIGHT, + WIDTH, HEIGHT, + CAIRO_BOILERPLATE_MODE_TEST, + 0, + &closure); + + if (surface == NULL) { + free (base_name); + free (test_name); + continue; + } + + cairo_ps_surface_set_eps (surface, TRUE); + if (!cairo_ps_surface_get_eps (surface)) { + cairo_surface_destroy (surface); + if (target->cleanup) + target->cleanup (closure); + + free (base_name); + free (test_name); + continue; + } + + cairo_test_log (ctx, + "Testing ps-eps with %s target\n", + target->name); + printf ("%s:\t", base_name); + fflush (stdout); + + cairo_surface_set_device_offset (surface, 25, 25); + cr = cairo_create (surface); + + cairo_new_sub_path (cr); + cairo_arc (cr, 100, 100, 25, 0, 2*M_PI); + cairo_set_line_width (cr, 10); + cairo_stroke (cr); + + cairo_show_page (cr); + + status = cairo_status (cr); + cairo_destroy (cr); + + if (status) { + cairo_test_log (ctx, "Error: Failed to create target surface: %s\n", + cairo_status_to_string (status)); + pass = FALSE; + } else { + pass = TRUE; + /* extract the image and compare it to our reference */ + if (! check_result (ctx, target, test_name, base_name, surface)) + pass = FALSE; + + /* check the bounding box of the EPS file and compare it to our reference */ + if (! check_bbox (ctx, base_name)) + pass = FALSE; + } + cairo_surface_destroy (surface); + if (target->cleanup) + target->cleanup (closure); + + free (base_name); + free (test_name); + + if (pass) { + printf ("PASS\n"); + ret = CAIRO_TEST_SUCCESS; + } else { + printf ("FAIL\n"); + ret = CAIRO_TEST_FAILURE; + } + fflush (stdout); } - printf ("ps-eps: Please check that %s looks/prints the same as ps-eps.ref.eps.\n", filename); - return CAIRO_TEST_SUCCESS; + return ret; } CAIRO_TEST (ps_eps, diff --git a/test/ps-eps.ref.png b/test/ps-eps.ref.png new file mode 100644 index 0000000..9aadb08 Binary files /dev/null and b/test/ps-eps.ref.png differ diff --git a/test/pthread-same-source.quartz.xfail.png b/test/pthread-same-source.quartz.xfail.png index cc0998f..ffed619 100644 Binary files a/test/pthread-same-source.quartz.xfail.png and b/test/pthread-same-source.quartz.xfail.png differ diff --git a/test/pthread-show-text.quartz.ref.png b/test/pthread-show-text.quartz.ref.png index 9b6d774..cc9bb25 100644 Binary files a/test/pthread-show-text.quartz.ref.png and b/test/pthread-show-text.quartz.ref.png differ diff --git a/test/push-group-color.ps2.ref.png b/test/push-group-color.ps2.ref.png new file mode 100644 index 0000000..daf827e Binary files /dev/null and b/test/push-group-color.ps2.ref.png differ diff --git a/test/radial-gradient-extend.ps3.ref.png b/test/radial-gradient-extend.ps3.ref.png new file mode 100644 index 0000000..e84041e Binary files /dev/null and b/test/radial-gradient-extend.ps3.ref.png differ diff --git a/test/radial-gradient-mask-source.argb32.ref.png b/test/radial-gradient-mask-source.argb32.ref.png index e01459d..2bf65b3 100644 Binary files a/test/radial-gradient-mask-source.argb32.ref.png and b/test/radial-gradient-mask-source.argb32.ref.png differ diff --git a/test/radial-gradient-mask-source.c b/test/radial-gradient-mask-source.c deleted file mode 100644 index 27b5270..0000000 --- a/test/radial-gradient-mask-source.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define NUM_GRADIENTS 4 -#define NUM_EXTEND 4 -#define SIZE 60 -#define WIDTH (SIZE * NUM_GRADIENTS * NUM_GRADIENTS) -#define HEIGHT (SIZE * NUM_EXTEND) - -static void -draw_gradient (cairo_t *cr, - int x, - int y, - int size, - double r1_offset, - double r1_radius, - double r2_offset, - double r2_radius, - cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - - cairo_save (cr); - - pattern = cairo_pattern_create_radial (x + size/2.0 + r1_offset, - y + size/2.0 + r1_offset, - r1_radius, - x + size/2.0 + r2_offset, - y + size/2.0 + r2_offset, - r2_radius); - cairo_pattern_add_color_stop_rgba (pattern, 0.0, - 1.0, 0.0, 0.0, 1.0); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), - 0.0, 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 1.0, - 0.0, 0.0, 1.0, 0.5); - cairo_pattern_set_extend (pattern, extend); - - cairo_rectangle (cr, x, y, size, size); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - for (j = 0; j < NUM_EXTEND; j++) { - for (i = 0; i < NUM_GRADIENTS; i++) { - double r1_offset = i % 2 ? SIZE / 12.0 : 0.0; - double r1_radius = i >= NUM_GRADIENTS / 2 ? SIZE / 6.0 : 0.0; - for (k = 0; k < NUM_GRADIENTS; k++) { - double r2_offset = k % 2 ? SIZE / 12.0 : 0.0; - double r2_radius = k >= NUM_GRADIENTS / 2 ? SIZE / 3.0 : SIZE / 12.; - draw_gradient (cr, - i * SIZE * NUM_GRADIENTS + k * SIZE, j * SIZE, SIZE, - r1_offset, r1_radius, - r2_offset, r2_radius, - extend[j]); - } - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_gradient_mask_source, - "Simple test of radial gradients using a MASK with a SOURCE operator", - "gradient,mask,source", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/radial-gradient-mask-source.image16.ref.png b/test/radial-gradient-mask-source.image16.ref.png index 7c9072a..edb93a9 100644 Binary files a/test/radial-gradient-mask-source.image16.ref.png and b/test/radial-gradient-mask-source.image16.ref.png differ diff --git a/test/radial-gradient-mask-source.quartz.argb32.ref.png b/test/radial-gradient-mask-source.quartz.argb32.ref.png new file mode 100644 index 0000000..5f734f6 Binary files /dev/null and b/test/radial-gradient-mask-source.quartz.argb32.ref.png differ diff --git a/test/radial-gradient-mask-source.quartz.rgb24.ref.png b/test/radial-gradient-mask-source.quartz.rgb24.ref.png new file mode 100644 index 0000000..4ae71f7 Binary files /dev/null and b/test/radial-gradient-mask-source.quartz.rgb24.ref.png differ diff --git a/test/radial-gradient-mask-source.rgb24.ref.png b/test/radial-gradient-mask-source.rgb24.ref.png index 55959ab..5533519 100644 Binary files a/test/radial-gradient-mask-source.rgb24.ref.png and b/test/radial-gradient-mask-source.rgb24.ref.png differ diff --git a/test/radial-gradient-mask-source.xlib.argb32.ref.png b/test/radial-gradient-mask-source.xlib.argb32.ref.png new file mode 100644 index 0000000..1c901c9 Binary files /dev/null and b/test/radial-gradient-mask-source.xlib.argb32.ref.png differ diff --git a/test/radial-gradient-mask-source.xlib.rgb24.ref.png b/test/radial-gradient-mask-source.xlib.rgb24.ref.png new file mode 100644 index 0000000..e50fe8f Binary files /dev/null and b/test/radial-gradient-mask-source.xlib.rgb24.ref.png differ diff --git a/test/radial-gradient-mask.argb32.ref.png b/test/radial-gradient-mask.argb32.ref.png deleted file mode 100644 index e01459d..0000000 Binary files a/test/radial-gradient-mask.argb32.ref.png and /dev/null differ diff --git a/test/radial-gradient-mask.c b/test/radial-gradient-mask.c deleted file mode 100644 index ba03a12..0000000 --- a/test/radial-gradient-mask.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define NUM_GRADIENTS 4 -#define NUM_EXTEND 4 -#define SIZE 60 -#define WIDTH (SIZE * NUM_GRADIENTS * NUM_GRADIENTS) -#define HEIGHT (SIZE * NUM_EXTEND) - -static void -draw_gradient (cairo_t *cr, - int x, - int y, - int size, - double r1_offset, - double r1_radius, - double r2_offset, - double r2_radius, - cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - - cairo_save (cr); - - pattern = cairo_pattern_create_radial (x + size/2.0 + r1_offset, - y + size/2.0 + r1_offset, - r1_radius, - x + size/2.0 + r2_offset, - y + size/2.0 + r2_offset, - r2_radius); - cairo_pattern_add_color_stop_rgba (pattern, 0.0, - 1.0, 0.0, 0.0, 1.0); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), - 0.0, 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 1.0, - 0.0, 0.0, 1.0, 0.5); - cairo_pattern_set_extend (pattern, extend); - - cairo_rectangle (cr, x, y, size, size); - cairo_clip (cr); - - cairo_set_source_rgb (cr, 1, 0, 1); - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - for (j = 0; j < NUM_EXTEND; j++) { - for (i = 0; i < NUM_GRADIENTS; i++) { - double r1_offset = i % 2 ? SIZE / 12.0 : 0.0; - double r1_radius = i >= NUM_GRADIENTS / 2 ? SIZE / 6.0 : 0.0; - for (k = 0; k < NUM_GRADIENTS; k++) { - double r2_offset = k % 2 ? SIZE / 12.0 : 0.0; - double r2_radius = k >= NUM_GRADIENTS / 2 ? SIZE / 3.0 : SIZE / 12.; - draw_gradient (cr, - i * SIZE * NUM_GRADIENTS + k * SIZE, j * SIZE, SIZE, - r1_offset, r1_radius, - r2_offset, r2_radius, - extend[j]); - } - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_gradient_mask, - "Simple test of radial gradients using a MASK", - "gradient,mask", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/radial-gradient-mask.image16.ref.png b/test/radial-gradient-mask.image16.ref.png index 7c9072a..78712ca 100644 Binary files a/test/radial-gradient-mask.image16.ref.png and b/test/radial-gradient-mask.image16.ref.png differ diff --git a/test/radial-gradient-mask.quartz.ref.png b/test/radial-gradient-mask.quartz.ref.png new file mode 100644 index 0000000..c1bd506 Binary files /dev/null and b/test/radial-gradient-mask.quartz.ref.png differ diff --git a/test/radial-gradient-mask.ref.png b/test/radial-gradient-mask.ref.png new file mode 100644 index 0000000..4db39aa Binary files /dev/null and b/test/radial-gradient-mask.ref.png differ diff --git a/test/radial-gradient-mask.rgb24.ref.png b/test/radial-gradient-mask.rgb24.ref.png deleted file mode 100644 index 55959ab..0000000 Binary files a/test/radial-gradient-mask.rgb24.ref.png and /dev/null differ diff --git a/test/radial-gradient-one-stop.argb32.ref.png b/test/radial-gradient-one-stop.argb32.ref.png deleted file mode 100644 index bdc64dc..0000000 Binary files a/test/radial-gradient-one-stop.argb32.ref.png and /dev/null differ diff --git a/test/radial-gradient-one-stop.c b/test/radial-gradient-one-stop.c deleted file mode 100644 index 552de23..0000000 --- a/test/radial-gradient-one-stop.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#include "cairo-test.h" - -#define NUM_GRADIENTS 4 -#define NUM_EXTEND 4 -#define SIZE 60 -#define WIDTH (SIZE * NUM_GRADIENTS * NUM_GRADIENTS) -#define HEIGHT (SIZE * NUM_EXTEND) - -static void -draw_gradient (cairo_t *cr, - int x, - int y, - int size, - double r1_offset, - double r1_radius, - double r2_offset, - double r2_radius, - cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - - cairo_save (cr); - - pattern = cairo_pattern_create_radial (x + size/2.0 + r1_offset, - y + size/2.0 + r1_offset, - r1_radius, - x + size/2.0 + r2_offset, - y + size/2.0 + r2_offset, - r2_radius); - cairo_pattern_add_color_stop_rgb (pattern, 0.25, 1, 0, 0); - cairo_pattern_set_extend (pattern, extend); - - cairo_rectangle (cr, x, y, size, size); - cairo_clip (cr); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - - for (j = 0; j < NUM_EXTEND; j++) { - for (i = 0; i < NUM_GRADIENTS; i++) { - double r1_offset = i % 2 ? SIZE / 12.0 : 0.0; - double r1_radius = i >= NUM_GRADIENTS / 2 ? SIZE / 6.0 : 0.0; - for (k = 0; k < NUM_GRADIENTS; k++) { - double r2_offset = k % 2 ? SIZE / 12.0 : 0.0; - double r2_radius = k >= NUM_GRADIENTS / 2 ? SIZE / 3.0 : SIZE / 12.; - draw_gradient (cr, - i * SIZE * NUM_GRADIENTS + k * SIZE, j * SIZE, SIZE, - r1_offset, r1_radius, - r2_offset, r2_radius, - extend[j]); - } - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_gradient_one_stop, - "Tests radial gradients with a single stop", - "gradient,radial", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/radial-gradient-one-stop.quartz.ref.png b/test/radial-gradient-one-stop.quartz.ref.png new file mode 100644 index 0000000..da991b1 Binary files /dev/null and b/test/radial-gradient-one-stop.quartz.ref.png differ diff --git a/test/radial-gradient-one-stop.ref.png b/test/radial-gradient-one-stop.ref.png new file mode 100644 index 0000000..fb35be6 Binary files /dev/null and b/test/radial-gradient-one-stop.ref.png differ diff --git a/test/radial-gradient-one-stop.rgb24.ref.png b/test/radial-gradient-one-stop.rgb24.ref.png deleted file mode 100644 index d9f471b..0000000 Binary files a/test/radial-gradient-one-stop.rgb24.ref.png and /dev/null differ diff --git a/test/radial-gradient-source.argb32.ref.png b/test/radial-gradient-source.argb32.ref.png index 4733471..4ab4796 100644 Binary files a/test/radial-gradient-source.argb32.ref.png and b/test/radial-gradient-source.argb32.ref.png differ diff --git a/test/radial-gradient-source.c b/test/radial-gradient-source.c deleted file mode 100644 index b546157..0000000 --- a/test/radial-gradient-source.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright © 2005, 2007 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -/* 20091017: A simple variant on radial-gradient, using the SOURCE operator - * instead as a potential bug was found in pixman under those conditions. - */ - -#include "cairo-test.h" - -#define NUM_GRADIENTS 4 -#define NUM_EXTEND 4 -#define SIZE 60 -#define WIDTH (SIZE * NUM_GRADIENTS * NUM_GRADIENTS) -#define HEIGHT (SIZE * NUM_EXTEND) - -static void -draw_gradient (cairo_t *cr, - int x, - int y, - int size, - double r1_offset, - double r1_radius, - double r2_offset, - double r2_radius, - cairo_extend_t extend) -{ - cairo_pattern_t *pattern; - - cairo_save (cr); - - pattern = cairo_pattern_create_radial (x + size/2.0 + r1_offset, - y + size/2.0 + r1_offset, - r1_radius, - x + size/2.0 + r2_offset, - y + size/2.0 + r2_offset, - r2_radius); - cairo_pattern_add_color_stop_rgba (pattern, 0.0, - 1.0, 0.0, 0.0, 1.0); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), - 0.0, 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 1.0, - 0.0, 0.0, 1.0, 0.5); - cairo_pattern_set_extend (pattern, extend); - - cairo_rectangle (cr, x, y, size, size); - cairo_clip (cr); - - cairo_set_source (cr, pattern); - cairo_paint (cr); - - cairo_pattern_destroy (pattern); - - cairo_restore (cr); -} - -static cairo_test_status_t -draw (cairo_t *cr, int width, int height) -{ - int i, j, k; - cairo_extend_t extend[NUM_EXTEND] = { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD - }; - - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - for (j = 0; j < NUM_EXTEND; j++) { - for (i = 0; i < NUM_GRADIENTS; i++) { - double r1_offset = i % 2 ? SIZE / 12.0 : 0.0; - double r1_radius = i >= NUM_GRADIENTS / 2 ? SIZE / 6.0 : 0.0; - for (k = 0; k < NUM_GRADIENTS; k++) { - double r2_offset = k % 2 ? SIZE / 12.0 : 0.0; - double r2_radius = k >= NUM_GRADIENTS / 2 ? SIZE / 3.0 : SIZE / 12.; - draw_gradient (cr, - i * SIZE * NUM_GRADIENTS + k * SIZE, j * SIZE, SIZE, - r1_offset, r1_radius, - r2_offset, r2_radius, - extend[j]); - } - } - } - - return CAIRO_TEST_SUCCESS; -} - -CAIRO_TEST (radial_gradient_source, - "Simple test of radial gradients using the SOURCE operator", - "gradient,source", /* keywords */ - NULL, /* requirements */ - WIDTH, HEIGHT, - NULL, draw) diff --git a/test/radial-gradient-source.image16.ref.png b/test/radial-gradient-source.image16.ref.png index 2a78cc5..f992b6f 100644 Binary files a/test/radial-gradient-source.image16.ref.png and b/test/radial-gradient-source.image16.ref.png differ diff --git a/test/radial-gradient-source.pdf.argb32.ref.png b/test/radial-gradient-source.pdf.argb32.ref.png deleted file mode 100644 index 7c32d81..0000000 Binary files a/test/radial-gradient-source.pdf.argb32.ref.png and /dev/null differ diff --git a/test/radial-gradient-source.quartz.argb32.ref.png b/test/radial-gradient-source.quartz.argb32.ref.png new file mode 100644 index 0000000..421c0b9 Binary files /dev/null and b/test/radial-gradient-source.quartz.argb32.ref.png differ diff --git a/test/radial-gradient-source.quartz.rgb24.ref.png b/test/radial-gradient-source.quartz.rgb24.ref.png new file mode 100644 index 0000000..22f2b90 Binary files /dev/null and b/test/radial-gradient-source.quartz.rgb24.ref.png differ diff --git a/test/radial-gradient-source.rgb24.ref.png b/test/radial-gradient-source.rgb24.ref.png index 27e9927..afaa241 100644 Binary files a/test/radial-gradient-source.rgb24.ref.png and b/test/radial-gradient-source.rgb24.ref.png differ diff --git a/test/radial-gradient.c b/test/radial-gradient.c index a6d145c..3ad4bb9 100644 --- a/test/radial-gradient.c +++ b/test/radial-gradient.c @@ -26,56 +26,113 @@ #include "cairo-test.h" -#define NUM_GRADIENTS 4 +#define NUM_GRADIENTS 7 #define NUM_EXTEND 4 -#define SIZE 60 -#define WIDTH (SIZE * NUM_GRADIENTS * NUM_GRADIENTS) +#define SIZE 120 +#define WIDTH (SIZE * NUM_GRADIENTS) #define HEIGHT (SIZE * NUM_EXTEND) -static void -draw_gradient (cairo_t *cr, - int x, - int y, - int size, - double r1_offset, - double r1_radius, - double r2_offset, - double r2_radius, - cairo_extend_t extend) +typedef void (*composite_t)(cairo_t *cr, cairo_pattern_t *pattern); +typedef void (*add_stops_t)(cairo_pattern_t *pattern); + +/* + * We want to test all the possible relative positions of the start + * and end circle: + * + * - The start circle can be smaller/equal/bigger than the end + * circle. A radial gradient can be classified in one of these + * three cases depending on the sign of dr. + * + * - The smaller circle can be completely inside/internally + * tangent/outside (at least in part) of the bigger circle. This + * classification is the same as the one which can be computed by + * examining the sign of a = (dx^2 + dy^2 - dr^2). + * + * - If the two circles have the same size, neither can be inside or + * internally tangent + * + * This test draws radial gradients whose circles always have the same + * centers (0, 0) and (1, 0), but with different radiuses. From left + * to right: + * + * - Small start circle completely inside the end circle + * 0.25 -> 1.75; dr = 1.5 > 0; a = 1 - 1.50^2 < 0 + * + * - Small start circle internally tangent to the end circle + * 0.50 -> 1.50; dr = 1.0 > 0; a = 1 - 1.00^2 = 0 + * + * - Small start circle outside of the end circle + * 0.50 -> 1.00; dr = 0.5 > 0; a = 1 - 0.50^2 > 0 + * + * - Start circle with the same size as the end circle + * 1.00 -> 1.00; dr = 0.0 = 0; a = 1 - 0.00^2 > 0 + * + * - Small end circle outside of the start circle + * 1.00 -> 0.50; dr = -0.5 > 0; a = 1 - 0.50^2 > 0 + * + * - Small end circle internally tangent to the start circle + * 1.50 -> 0.50; dr = -1.0 > 0; a = 1 - 1.00^2 = 0 + * + * - Small end circle completely inside the start circle + * 1.75 -> 0.25; dr = -1.5 > 0; a = 1 - 1.50^2 < 0 + * + */ + +const static double radiuses[NUM_GRADIENTS] = { + 0.25, + 0.50, + 0.50, + 1.00, + 1.00, + 1.50, + 1.75 +}; + +static cairo_pattern_t * +create_pattern (int index) { - cairo_pattern_t *pattern; - - cairo_save (cr); - - pattern = cairo_pattern_create_radial (x + size/2.0 + r1_offset, - y + size/2.0 + r1_offset, - r1_radius, - x + size/2.0 + r2_offset, - y + size/2.0 + r2_offset, - r2_radius); - cairo_pattern_add_color_stop_rgba (pattern, 0.0, - 1.0, 0.0, 0.0, 1.0); - cairo_pattern_add_color_stop_rgba (pattern, sqrt (1.0 / 2.0), - 0.0, 1.0, 0.0, 0.0); - cairo_pattern_add_color_stop_rgba (pattern, 1.0, - 0.0, 0.0, 1.0, 0.5); - cairo_pattern_set_extend (pattern, extend); - - cairo_rectangle (cr, x, y, size, size); - cairo_clip (cr); + double x0, x1, radius0, radius1, left, right, center; - cairo_set_source (cr, pattern); - cairo_paint (cr); + x0 = 0; + x1 = 1; + radius0 = radiuses[index]; + radius1 = radiuses[NUM_GRADIENTS - index - 1]; + + /* center the gradient */ + left = fmin (x0 - radius0, x1 - radius1); + right = fmax (x0 + radius0, x1 + radius1); + center = (left + right) * 0.5; + x0 -= center; + x1 -= center; - cairo_pattern_destroy (pattern); + /* scale to make it fit within a 1x1 rect centered in (0,0) */ + x0 *= 0.25; + x1 *= 0.25; + radius0 *= 0.25; + radius1 *= 0.25; - cairo_restore (cr); + return cairo_pattern_create_radial (x0, 0, radius0, x1, 0, radius1); } +static void +pattern_add_stops (cairo_pattern_t *pattern) +{ + cairo_pattern_add_color_stop_rgba (pattern, 0.0, 1, 0, 0, 0.75); + cairo_pattern_add_color_stop_rgba (pattern, sqrt (0.5), 0, 1, 0, 0); + cairo_pattern_add_color_stop_rgba (pattern, 1.0, 0, 0, 1, 1); +} + +static void +pattern_add_single_stop (cairo_pattern_t *pattern) +{ + cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1, 0, 0, 1); +} + + static cairo_test_status_t -draw (cairo_t *cr, int width, int height) +draw (cairo_t *cr, add_stops_t add_stops, composite_t composite) { - int i, j, k; + int i, j; cairo_extend_t extend[NUM_EXTEND] = { CAIRO_EXTEND_NONE, CAIRO_EXTEND_REPEAT, @@ -83,30 +140,117 @@ draw (cairo_t *cr, int width, int height) CAIRO_EXTEND_PAD }; - cairo_test_paint_checkered (cr); + cairo_scale (cr, SIZE, SIZE); + cairo_translate (cr, 0.5, 0.5); for (j = 0; j < NUM_EXTEND; j++) { + cairo_save (cr); for (i = 0; i < NUM_GRADIENTS; i++) { - double r1_offset = i % 2 ? SIZE / 12.0 : 0.0; - double r1_radius = i >= NUM_GRADIENTS / 2 ? SIZE / 6.0 : 0.0; - for (k = 0; k < NUM_GRADIENTS; k++) { - double r2_offset = k % 2 ? SIZE / 12.0 : 0.0; - double r2_radius = k >= NUM_GRADIENTS / 2 ? SIZE / 3.0 : SIZE / 12.; - draw_gradient (cr, - i * SIZE * NUM_GRADIENTS + k * SIZE, j * SIZE, SIZE, - r1_offset, r1_radius, - r2_offset, r2_radius, - extend[j]); - } + cairo_pattern_t *pattern; + + pattern = create_pattern (i); + add_stops (pattern); + cairo_pattern_set_extend (pattern, extend[j]); + + cairo_save (cr); + cairo_rectangle (cr, -0.5, -0.5, 1, 1); + cairo_clip (cr); + composite (cr, pattern); + cairo_restore (cr); + cairo_pattern_destroy (pattern); + + cairo_translate (cr, 1, 0); } + cairo_restore (cr); + cairo_translate (cr, 0, 1); } return CAIRO_TEST_SUCCESS; } + +static void +composite_simple (cairo_t *cr, cairo_pattern_t *pattern) +{ + cairo_set_source (cr, pattern); + cairo_paint (cr); +} + +static void +composite_mask (cairo_t *cr, cairo_pattern_t *pattern) +{ + cairo_set_source_rgb (cr, 1, 0, 1); + cairo_mask (cr, pattern); +} + + +static cairo_test_status_t +draw_simple (cairo_t *cr, int width, int height) +{ + cairo_test_paint_checkered (cr); + return draw (cr, pattern_add_stops, composite_simple); +} + +static cairo_test_status_t +draw_mask (cairo_t *cr, int width, int height) +{ + cairo_test_paint_checkered (cr); + return draw (cr, pattern_add_stops, composite_mask); +} + +static cairo_test_status_t +draw_source (cairo_t *cr, int width, int height) +{ + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + return draw (cr, pattern_add_stops, composite_simple); +} + + +static cairo_test_status_t +draw_mask_source (cairo_t *cr, int width, int height) +{ + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + return draw (cr, pattern_add_stops, composite_mask); +} + +static cairo_test_status_t +draw_one_stop (cairo_t *cr, int width, int height) +{ + cairo_test_paint_checkered (cr); + return draw (cr, pattern_add_single_stop, composite_simple); +} + CAIRO_TEST (radial_gradient, "Simple test of radial gradients", "gradient", /* keywords */ NULL, /* requirements */ WIDTH, HEIGHT, - NULL, draw) + NULL, draw_simple) + +CAIRO_TEST (radial_gradient_mask, + "Simple test of radial gradients using a MASK", + "gradient,mask", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw_mask) + +CAIRO_TEST (radial_gradient_source, + "Simple test of radial gradients using the SOURCE operator", + "gradient,source", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw_source) + +CAIRO_TEST (radial_gradient_mask_source, + "Simple test of radial gradients using a MASK with a SOURCE operator", + "gradient,mask,source", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw_mask_source) + +CAIRO_TEST (radial_gradient_one_stop, + "Tests radial gradients with a single stop", + "gradient,radial", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw_one_stop) diff --git a/test/radial-gradient.image16.ref.png b/test/radial-gradient.image16.ref.png index 76a57fc..91202d3 100644 Binary files a/test/radial-gradient.image16.ref.png and b/test/radial-gradient.image16.ref.png differ diff --git a/test/radial-gradient.pdf.ref.png b/test/radial-gradient.pdf.ref.png deleted file mode 100644 index 1c288b4..0000000 Binary files a/test/radial-gradient.pdf.ref.png and /dev/null differ diff --git a/test/radial-gradient.quartz.ref.png b/test/radial-gradient.quartz.ref.png new file mode 100644 index 0000000..f01c6eb Binary files /dev/null and b/test/radial-gradient.quartz.ref.png differ diff --git a/test/radial-gradient.ref.png b/test/radial-gradient.ref.png index bec83b7..a2cbbc8 100644 Binary files a/test/radial-gradient.ref.png and b/test/radial-gradient.ref.png differ diff --git a/test/radial-gradient.svg.xfail.png b/test/radial-gradient.svg.xfail.png deleted file mode 100644 index ab54a3d..0000000 Binary files a/test/radial-gradient.svg.xfail.png and /dev/null differ diff --git a/test/rotate-image-surface-paint.quartz.ref.png b/test/rotate-image-surface-paint.quartz.ref.png index 1b317f9..a716b63 100644 Binary files a/test/rotate-image-surface-paint.quartz.ref.png and b/test/rotate-image-surface-paint.quartz.ref.png differ diff --git a/test/scale-offset-image.quartz.ref.png b/test/scale-offset-image.quartz.ref.png index 3d8e71a..f7a5e72 100644 Binary files a/test/scale-offset-image.quartz.ref.png and b/test/scale-offset-image.quartz.ref.png differ diff --git a/test/scale-offset-similar.quartz.ref.png b/test/scale-offset-similar.quartz.ref.png index 3d8e71a..f7a5e72 100644 Binary files a/test/scale-offset-similar.quartz.ref.png and b/test/scale-offset-similar.quartz.ref.png differ diff --git a/test/smask-mask.quartz.ref.png b/test/smask-mask.quartz.ref.png index 97359b4..98ba299 100644 Binary files a/test/smask-mask.quartz.ref.png and b/test/smask-mask.quartz.ref.png differ diff --git a/test/smask-paint.quartz.ref.png b/test/smask-paint.quartz.ref.png index 1d56558..4ee25fd 100644 Binary files a/test/smask-paint.quartz.ref.png and b/test/smask-paint.quartz.ref.png differ diff --git a/test/smask.quartz.ref.png b/test/smask.quartz.ref.png index b8dd1af..f9ab00f 100644 Binary files a/test/smask.quartz.ref.png and b/test/smask.quartz.ref.png differ diff --git a/test/surface-pattern-operator.quartz.argb32.ref.png b/test/surface-pattern-operator.quartz.argb32.ref.png new file mode 100644 index 0000000..5e934b2 Binary files /dev/null and b/test/surface-pattern-operator.quartz.argb32.ref.png differ diff --git a/test/surface-pattern-operator.quartz.argb32.xfail.png b/test/surface-pattern-operator.quartz.argb32.xfail.png deleted file mode 100644 index eb6e890..0000000 Binary files a/test/surface-pattern-operator.quartz.argb32.xfail.png and /dev/null differ diff --git a/test/surface-pattern-operator.quartz.rgb24.ref.png b/test/surface-pattern-operator.quartz.rgb24.ref.png new file mode 100644 index 0000000..30408c1 Binary files /dev/null and b/test/surface-pattern-operator.quartz.rgb24.ref.png differ diff --git a/test/surface-pattern-operator.quartz.rgb24.xfail.png b/test/surface-pattern-operator.quartz.rgb24.xfail.png deleted file mode 100644 index 6275a48..0000000 Binary files a/test/surface-pattern-operator.quartz.rgb24.xfail.png and /dev/null differ diff --git a/test/testtable.js b/test/testtable.js new file mode 100644 index 0000000..f51b0fd --- /dev/null +++ b/test/testtable.js @@ -0,0 +1,426 @@ +/* configuration */ +/* TODO: UNTESTED count can't be shown because it's not tracked explicitly */ +headerResults = [ "PASS", "NEW", "FAIL", "XFAIL", "CRASHED" ]; +logResults = [ "PASS", "NEW", "FAIL", "XFAIL", "CRASH!" ]; +resultToImgs = { + "PASS" : [], + "NEW" : [ "output" ], + "FAIL" : [ "output", "difference", "reference" ], + "XFAIL" : [], + "UNTESTED" : [], + "CRASHED" : [] +}; + +resultToString = { + "PASS" : "", + "NEW" : "", + "FAIL" : "", + "XFAIL" : "", + "UNTESTED" : "", + "CRASHED" : "CRASHED!" +}; + +resultField = "result"; +rowFields = [ "test", "offset", "similar" ]; +colFields = [ "target", "format" ]; +allFields = [ resultField ].concat (rowFields, colFields); + + +/* globals: */ +function resetGlobals () { + dragElement = undefined; + table = document.getElementById ("testTable"); + while (table.rows.length) + table.deleteRow (0); + colsArray = [ "HrowHeader" ]; + colsMap = undefined; + headerId = "HcolHeader"; + + fTrue = function (x) { return true; }; + + empty = new Row (); + header = new Row (); + header[colsArray[0]].toString = function () { return ""; }; + + untested = new Test (); + untested[resultField] = "UNTESTED"; +} + + +/* utility functions */ +function normalizeKey (key) { return key.toLowerCase ().replace (/[^a-z0-9]/, ""); } +function isVisible (x) { return x.style.display != "none"; } + +function link (html, url) { return "" + html + ""; } +function image (url) { return ""; } +function span (html, id, cls) { return "" + html + ""; } + +function fieldsToHTML (bColumns, values) { + var fields = bColumns ? colFields : rowFields; + var prefix = bColumns ? "c" : "r"; + var tmpRE = arrayApply (function (x) { return "[^/]*"; }, fields); + var r = Array (); + for (var i = 0; i < fields.length; i++) + if (fields[i] == "test") { + r.push (link (values[fields[i]], values[fields[i]] + ".log")); + } else { + tmpRE[i] = values[fields[i]]; + r.push (span (values[fields[i]], prefix + "/" + tmpRE.join ("/") + "/", fields[i])); + tmpRE[i] = "[^/]*"; + } + return r.join ("/"); +} + +function inArray (value, array) { + for (var i = 0; i < array.length; i++) + if (value == array[i]) + return true; + return false; +} + +function arrayApply (fun, array) { + var r = new Array (); + for (var i = 0; i < array.length; i++) + r.push (fun(array[i])); + return r; +} + +function arrayPred (pred, array) { + var r = new Array (); + for (var i = 0; i < array.length; i++) + if (pred (array[i])) + r.push (array[i]); + return r; +} + +function arrayMap (map, array) { return arrayApply (function (x) { return map[x]; }, array); } + +function binSearch (rows, newId){ + var min = 0; + var max = rows.length; + + while (max - min > 1) { + var mid = (max + min) >> 1; + if (rows[mid].id > newId) + max = mid; + else + min = mid; + } + + if (max == min) + return max; + else + return rows[min].id > newId ? min : max; +} + +/* dynamic table utils */ +function updateCurrent () { + for (var i = 0; i < table.rows.length; i++) { + var row = table.rows[i]; + if (isVisible (row)) { + /* j starts from 1 because we want to ignore _rowHeader */ + for (var j = 1; j < row.cells.length; j++) + if (row.id[0] == "H") + for (var k = 0; k < headerResults.length; k++) + header[row.cells[j].id].current[headerResults[k]] = 0; + else if (isVisible (row.cells[j])) + header[row.cells[j].id].current[row.cells[j].className]++; + } + } + + updateHeader (); +} + +function setVisible (array, subsetPred, visibilityPred, visibleFlag) { + var modified = false, somethingVisible = false; + for (var i = 0; i < array.length; i++) + if (array[i].id[0] != "H") { + if (subsetPred (array[i])) { + var wanted = visibilityPred (array[i]); + if (isVisible (array[i]) != wanted) { + modified = true; + array[i].style.display = wanted ? visibleFlag : "none"; + } + } + somethingVisible = somethingVisible || isVisible (array[i]); + } + return modified && somethingVisible; +} + +function setVisibleOnly (array, pred, visibleFlag) { + return setVisible (array, fTrue, pred, visibleFlag); +} + +function flipVisible (array, subsetPred, visibleFlag) { + return setVisible (array, subsetPred, function (x) { return !isVisible (x); }, visibleFlag); +} + + +/* event handling */ +function ignoreEvent (event) { + if (event.preventDefault) + event.preventDefault(); + else + event.returnValue= false; + return false; +} + +function mouseUp (event) { + var visFun; + if (event.button == 0) + visFun = setVisibleOnly; + else if (event.button == 2) + visFun = flipVisible; + else + return false; + + var structureFun; + if (event.target.id[0] == "r") /* rows */ + structureFun = function (f, p) { return f (table.rows, p, "table-row"); }; + else if (event.target.id[0] == "c") /* cols */ + structureFun = function (f, p) { return inArray (true, arrayApply (function (row) { return f (row.cells, p, "table-cell") }, table.rows)) }; + else + return false; + + var pred; + if (event.target.id[1] == "/") { /* regexp */ + var re = new RegExp (event.target.id); + pred = function (x) { return re.test (x.id); }; + } else if (event.target.id[1] == "#") { /* counters */ + var s = event.target.id.substr (2).split ("/"); + pred = function (row) { return row.cells[s[0]].className == s[1]; } + } else + return false; + + if (!structureFun (visFun, pred)) + if (!structureFun (flipVisible, fTrue)) + structureFun (flipVisible, fTrue); + + updateCurrent (); + + return false; +} + +function noDrag (event) { + dragElement = undefined; + return false; +} + +function startDrag (event) { + if (event.button == 0) + dragElement = event.target; + else + dragElement = undefined; + return false; +} + +function endDrag (event) { + if (!dragElement) + return false; + + if (event.currentTarget.id == colsArray[0] && + inArray (dragElement.className, colFields)) { + rowFields.push (dragElement.className); + colFields = arrayPred (function (x) { return x != dragElement.className; }, colFields); + } else if (event.currentTarget.id == headerId && + inArray (dragElement.className, rowFields)) { + colFields.push (dragElement.className); + rowFields = arrayPred (function (x) { return x != dragElement.className; }, rowFields); + } else + return true; + + reloadAll (); + return false; +} + + +/* table content */ +function Row (id, t) { + this[colsArray[0]] = new RowHeader (id, t); + + this.get = function (c) { return this[c] != undefined ? this[c] : untested; } + this.getHTML = function (c) { return this.get(c).toString (); }; + this.setStyle = function (c, element) { return this.get(c).setStyle (element); }; +} + +function ColumnHeader (id, values) { + this.id = id; + this.values = values; + this.total = new Object (); + this.current = new Object (); + + for (var i = 0; i < headerResults.length; i++) { + this.total[headerResults[i]] = 0; + this.current[headerResults[i]] = 0; + } + + this.toString = function () { + var counts = new Array (); + for (var i = 0; i < headerResults.length; i++) { + var hr = headerResults[i]; + var s = span (this.current[hr], "r#" + colsMap[this.id] + "/" + hr, hr); + if (this.current[hr] != this.total[hr]) + s += span ("[" + this.total[hr] + "]", "r#" + colsMap[this.id] + "/" + hr, hr); + counts.push (s); + } + + return fieldsToHTML (true, this.values) + "
" + counts.join ("/"); + } + + this.setStyle = function (element) { }; +} + +function RowHeader (id, values) { + this.id = id; + this.values = values; + this.toString = function () { return fieldsToHTML (false, this.values); } + this.setStyle = function (element) { element.onmouseup = endDrag; }; +} + +function Test () { + this.rowId = function () { return "r/" + arrayMap (this, rowFields).join("/") + "/"; }; + this.colId = function () { return "c/" + arrayMap (this, colFields).join("/") + "/"; }; + this.isComplete = function () { return !inArray (undefined, arrayMap (this, allFields)); } + this.toString = function () { + var images = arrayMap (this, resultToImgs[this[resultField]]); + images = arrayPred (function (x) { return x != undefined; }, images); + images = arrayApply (function (x) { return link (image (x), x); }, images); + images.push (resultToString[this[resultField]]); + return images.join (" "); + }; + + this.setStyle = function (element) { element.className = this[resultField]; }; + + this.addData = function (array) { + for (var i = 0; i < array.length - 1; i += 2) + this[normalizeKey (array[i])] = array[i+1]; + }; +} + + +/* table creation */ +function insertCell (domRow, nid, tests) { + var domCell = domRow.insertCell (nid); + domCell.id = colsArray[nid]; + domCell.innerHTML = tests.getHTML (colsArray[nid]); + tests.setStyle (colsArray[nid], domCell); +} + +function updateRow (row, tests) { + var domRow = document.getElementById (row); + if (!domRow) { + domRow = table.insertRow (binSearch (table.rows, row)); + domRow.id = row; + } + + for (var i = 0; i < colsArray.length; i++) + if (i >= domRow.cells.length || domRow.cells[i].id != colsArray[i]) + insertCell (domRow, i, tests); +} + +function updateHeader () { + var visibility; + var domRow = document.getElementById (headerId); + if (domRow) { + visibility = new Object (); + for (var i = 0; i < domRow.cells.length; i++) + visibility[domRow.cells[i].id] = domRow.cells[i].style.display; + table.deleteRow (domRow.rowIndex); + } + + updateRow (headerId, header); + table.rows[0].onmouseup = endDrag; + + if (visibility) + for (var i = 0; i < colsArray.length; i++) + if (visibility[colsArray[i]]) + table.rows[0].cells[colsMap[colsArray[i]]].style.display = visibility[colsArray[i]]; +} + +function updateTable () { + colsArray.sort (); + + colsMap = new Object (); + for (var i = 0; i < colsArray.length; i++) + colsMap[colsArray[i]] = i; + + updateHeader (); + for (var i = 0; i < table.rows.length; i++) + updateRow (table.rows[i].id, empty); +} + + +/* log file parsing */ +function parseTest (testData) { + var colsChanged = false; + var rows = new Array (); + var data = new Object (); + var t = new Test (); + var lines = testData.split ("\n"); + for (var i = 0; i < lines.length; i++) { + t.addData (lines[i].split (" ")); + if (t.isComplete ()) { + var c = t.colId (); + if (header[c] == undefined) { + colsArray.push (c); + header[c] = new ColumnHeader (c, t); + colsChanged = true; + } + + var r = t.rowId (); + if (!data[r]) { + rows.push (r); + data[r] = new Row (r, t); + } + + data[r][c] = t; + header[c].total[t[resultField]]++; + header[c].current[t[resultField]]++; + t = new Test (); + } + } + + if (colsChanged) + updateTable (); + else + updateHeader (); + + for (var i = 0; i < rows.length; i++) + updateRow (rows[i], data[rows[i]]); +} + +function parseFile (fileName, parser) { + var req = new XMLHttpRequest (); + req.onreadystatechange = function () { + if (req.readyState == 4) + parser (req.responseText); + } + + try { + req.open ("GET", fileName); + req.send (null); + } catch (e) {} +} + +function parseTestList (listData) { + var summaryRE = /\d+ Passed, \d+ Failed \x5b\d+ crashed, \d+ expected\x5d, \d+ Skipped/; + var lines = listData.split ("\n"); + for (var i = 0; i < lines.length; i++) { + if (summaryRE.test (lines[i])) + return; + + var words = lines[i].split (" "); + if (words.length >= 2 && + words[0][words[0].length-1] == ":" && + inArray (words[1], logResults)) + parseFile (words[0].substr (0, words[0].length-1) + ".log", parseTest); + } +} + +function reloadAll() { + resetGlobals (); + + parseFile ("cairo-test-suite.log", parseTestList); +} + +window.onload = reloadAll; \ No newline at end of file diff --git a/test/trap-clip.quartz.argb32.ref.png b/test/trap-clip.quartz.argb32.ref.png index 8ad99ce..e045ea4 100644 Binary files a/test/trap-clip.quartz.argb32.ref.png and b/test/trap-clip.quartz.argb32.ref.png differ diff --git a/test/trap-clip.quartz.rgb24.ref.png b/test/trap-clip.quartz.rgb24.ref.png index 110ac6e..1044d86 100644 Binary files a/test/trap-clip.quartz.rgb24.ref.png and b/test/trap-clip.quartz.rgb24.ref.png differ diff --git a/test/unbounded-operator.quartz.argb32.ref.png b/test/unbounded-operator.quartz.argb32.ref.png new file mode 100644 index 0000000..b2e9916 Binary files /dev/null and b/test/unbounded-operator.quartz.argb32.ref.png differ diff --git a/test/unbounded-operator.quartz.rgb24.ref.png b/test/unbounded-operator.quartz.rgb24.ref.png new file mode 100644 index 0000000..ea41dc8 Binary files /dev/null and b/test/unbounded-operator.quartz.rgb24.ref.png differ diff --git a/test/white-in-noop.c b/test/white-in-noop.c new file mode 100644 index 0000000..e6a93e8 --- /dev/null +++ b/test/white-in-noop.c @@ -0,0 +1,52 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* + * Copyright 2011 Andrea Canciani + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Andrea Canciani + */ + +#include "cairo-test.h" + +#define HEIGHT 4 +#define WIDTH 4 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + + cairo_set_operator (cr, CAIRO_OPERATOR_IN); + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (white_in_noop, + "Test an invalid optimization of the IN operator with white sources", + "operator", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff --git a/test/white-in-noop.ref.png b/test/white-in-noop.ref.png new file mode 100644 index 0000000..f42bb8d Binary files /dev/null and b/test/white-in-noop.ref.png differ diff --git a/test/xcb-stress-cache.c b/test/xcb-stress-cache.c new file mode 100644 index 0000000..3c7ee15 --- /dev/null +++ b/test/xcb-stress-cache.c @@ -0,0 +1,118 @@ +/* + * Copyright © 2011 Uli Schlachter + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Uli Schlachter + */ + +#include "cairo-test.h" + +#define WIDTH 512 +#define HEIGHT 512 + +/* This is a random pick. This results in 512 (width) * 512 (height) * + * 2 (surfaces per run) * 4 (ARGB32) * ITERATIONS = 200 MiB of image data. */ +#define ITERATIONS 100 + +/* This tries to trigger a bug in the xcb backend where a Picture is freed to + * early. It goes something like this: + * + * - _composite_mask calls _cairo_xcb_picture_for_pattern to get a xcb_picture_t + * for the source. + * - _cairo_xcb_picture_for_pattern calls _cairo_xcb_surface_picture which calls + * _cairo_xcb_screen_store_surface_picture which adds the picture to a cache. + * - _cairo_xcb_surface_picture also attached the picture as a snapshot to + * the source surface using cairo_surface_finish as detach_func. + * - _composite_mask calls _cairo_xcb_picture_for_pattern to get a xcb_picture_t + * for the mask. + * - The resulting picture surface is added to the cache again, but the cache is + * already full, so a random cache entry is picked and removed. + * - The surface that was added before is picked and gets fed to + * _surface_cache_entry_destroy. + * - This calls _cairo_surface_detach_snapshot which causes the + * detach_func from above to be called, so the surface is finished and the + * associated picture is FreePicture'd. + * - _composite_mask now uses a Picture that was already freed. + * + * So this depends on the screen's surface cache to be full which is why we do + * all this looping. + */ + +static cairo_surface_t * +create_image () +{ + cairo_surface_t *surface; + cairo_t *cr; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, WIDTH, HEIGHT); + /* Paint something random to the image */ + cr = cairo_create (surface); + cairo_paint (cr); + cairo_set_source_rgb (cr, 0, 1, 1); + cairo_rectangle (cr, 0, 0, WIDTH/2.0, HEIGHT/2.0); + cairo_fill (cr); + cairo_set_source_rgb (cr, 1, 0, 1); + cairo_rectangle (cr, WIDTH/2.0, HEIGHT/2.0, WIDTH/2.0, HEIGHT/2.0); + cairo_fill (cr); + cairo_destroy (cr); + + return surface; +} + +static cairo_surface_t * +dirty_cache (cairo_t *cr) +{ + cairo_surface_t *surface; + + /* Set a source surface... */ + surface = create_image (); + cairo_set_source_surface (cr, surface, 0, 0); + cairo_surface_destroy (surface); + /* ...and create a mask surface, so that we can hit the early FreePicture */ + surface = create_image (); + cairo_mask_surface (cr, surface, 0, 0); + + return surface; +} + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + int i; + cairo_surface_t *array[ITERATIONS]; + + /* We have to keep the associated cairo_surface_t alive so that they aren't + * removed from the cache */ + for (i = 0; i < ITERATIONS; i++) + array[i] = dirty_cache (cr); + for (i = 0; i < ITERATIONS; i++) + cairo_surface_destroy (array[i]); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (xcb_stress_cache, + "Stress test for a image surface cache in cairo-xcb", + "xcb, stress", /* keywords */ + NULL, /* requirements */ + 2, 2, + NULL, draw) diff --git a/test/xcb-stress-cache.ref.png b/test/xcb-stress-cache.ref.png new file mode 100644 index 0000000..850ce59 Binary files /dev/null and b/test/xcb-stress-cache.ref.png differ diff --git a/test/xcomposite-projection.quartz.ref.png b/test/xcomposite-projection.quartz.ref.png index c7b6f5c..0221607 100644 Binary files a/test/xcomposite-projection.quartz.ref.png and b/test/xcomposite-projection.quartz.ref.png differ diff --git a/util/cairo-gobject/cairo-gobject-enums.c b/util/cairo-gobject/cairo-gobject-enums.c index 1fcd3d0..152bfd7 100644 --- a/util/cairo-gobject/cairo-gobject-enums.c +++ b/util/cairo-gobject/cairo-gobject-enums.c @@ -49,6 +49,7 @@ cairo_gobject_status_get_type (void) { CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, "CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED", "user-font-not-implemented" }, { CAIRO_STATUS_DEVICE_TYPE_MISMATCH, "CAIRO_STATUS_DEVICE_TYPE_MISMATCH", "device-type-mismatch" }, { CAIRO_STATUS_DEVICE_ERROR, "CAIRO_STATUS_DEVICE_ERROR", "device-error" }, + { CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, "CAIRO_STATUS_INVALID_MESH_CONSTRUCTION", "invalid-mesh-construction" }, { CAIRO_STATUS_LAST_STATUS, "CAIRO_STATUS_LAST_STATUS", "last-status" }, { 0, NULL, NULL } }; @@ -431,6 +432,7 @@ cairo_gobject_pattern_type_get_type (void) { CAIRO_PATTERN_TYPE_SURFACE, "CAIRO_PATTERN_TYPE_SURFACE", "surface" }, { CAIRO_PATTERN_TYPE_LINEAR, "CAIRO_PATTERN_TYPE_LINEAR", "linear" }, { CAIRO_PATTERN_TYPE_RADIAL, "CAIRO_PATTERN_TYPE_RADIAL", "radial" }, + { CAIRO_PATTERN_TYPE_MESH, "CAIRO_PATTERN_TYPE_MESH", "mesh" }, { 0, NULL, NULL } }; GType type = g_enum_register_static (g_intern_static_string ("cairo_pattern_type_t"), values); diff --git a/util/cairo-script/cairo-script-operators.c b/util/cairo-script/cairo-script-operators.c index 7d8297c..e447b2e 100644 --- a/util/cairo-script/cairo-script-operators.c +++ b/util/cairo-script/cairo-script-operators.c @@ -3591,6 +3591,199 @@ _matrix (csi_t *ctx) return push (&matrix); } +static csi_status_t +_mesh (csi_t *ctx) +{ + csi_object_t obj; + + obj.type = CSI_OBJECT_TYPE_PATTERN; + obj.datum.pattern = cairo_pattern_create_mesh (); + return push (&obj); +} + +static csi_status_t +_mesh_begin_patch (csi_t *ctx) +{ + csi_status_t status; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (1); + + status = _csi_ostack_get_pattern (ctx, 0, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_begin_patch (pattern); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_curve_to (csi_t *ctx) +{ + csi_status_t status; + double x1, y1, x2, y2, x3, y3; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (7); + + status = _csi_ostack_get_number (ctx, 0, &y3); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 1, &x3); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 2, &y2); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 3, &x2); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 4, &y1); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 5, &x1); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_pattern (ctx, 6, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_curve_to (pattern, x1, y1, x2, y2, x3, y3); + + pop (6); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_end_patch (csi_t *ctx) +{ + csi_status_t status; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (1); + + status = _csi_ostack_get_pattern (ctx, 0, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_end_patch (pattern); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_line_to (csi_t *ctx) +{ + csi_status_t status; + double x, y; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (3); + + status = _csi_ostack_get_number (ctx, 0, &y); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 1, &x); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_pattern (ctx, 2, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_line_to (pattern, x, y); + + pop (2); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_move_to (csi_t *ctx) +{ + csi_status_t status; + double x, y; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (3); + + status = _csi_ostack_get_number (ctx, 0, &y); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 1, &x); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_pattern (ctx, 2, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_move_to (pattern, x, y); + + pop (2); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_set_control_point (csi_t *ctx) +{ + csi_status_t status; + double x, y; + csi_integer_t point; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (4); + + status = _csi_ostack_get_number (ctx, 0, &y); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 1, &x); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_integer (ctx, 2, &point); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_pattern (ctx, 3, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_set_control_point (pattern, point, x, y); + + pop (3); + return CSI_STATUS_SUCCESS; +} + +static csi_status_t +_mesh_set_corner_color (csi_t *ctx) +{ + csi_status_t status; + double r, g, b, a; + csi_integer_t corner; + cairo_pattern_t *pattern = NULL; /* silence the compiler */ + + check (6); + + status = _csi_ostack_get_number (ctx, 0, &a); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 1, &b); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 2, &g); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_number (ctx, 3, &r); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_integer (ctx, 4, &corner); + if (_csi_unlikely (status)) + return status; + status = _csi_ostack_get_pattern (ctx, 5, &pattern); + if (_csi_unlikely (status)) + return status; + + cairo_pattern_mesh_set_corner_color_rgba (pattern, corner, r, g, b, a); + + pop (5); + return CSI_STATUS_SUCCESS; +} + static csi_status_t _mod (csi_t *ctx) { @@ -6038,6 +6231,14 @@ _defs[] = { { "mark", _mark }, { "mask", _mask }, { "matrix", _matrix }, + { "mesh", _mesh }, + { "mesh-begin-patch", _mesh_begin_patch }, + { "mesh-curve-to", _mesh_curve_to }, + { "mesh-end-patch", _mesh_end_patch }, + { "mesh-line-to", _mesh_line_to }, + { "mesh-move-to", _mesh_move_to }, + { "mesh-set-control-point", _mesh_set_control_point }, + { "mesh-set-corner-color", _mesh_set_corner_color }, { "mod", _mod }, { "move-to", _move_to }, { "mul", _mul }, diff --git a/util/cairo-trace/trace.c b/util/cairo-trace/trace.c index acdde93..b930506 100644 --- a/util/cairo-trace/trace.c +++ b/util/cairo-trace/trace.c @@ -1501,6 +1501,7 @@ _status_to_string (cairo_status_t status) f(USER_FONT_NOT_IMPLEMENTED); f(DEVICE_TYPE_MISMATCH); f(DEVICE_ERROR); + f(INVALID_MESH_CONSTRUCTION); case CAIRO_STATUS_LAST_STATUS: break; } -- cgit v1.2.3