diff -Nru cairo-1.13.0~20140204/aclocal.m4 cairo-1.14.2/aclocal.m4 --- cairo-1.13.0~20140204/aclocal.m4 2014-02-04 09:46:51.000000000 +0000 +++ cairo-1.14.2/aclocal.m4 2015-03-11 01:43:10.000000000 +0000 @@ -56,6 +56,66 @@ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. diff -Nru cairo-1.13.0~20140204/AUTHORS cairo-1.14.2/AUTHORS --- cairo-1.13.0~20140204/AUTHORS 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/AUTHORS 2015-03-10 22:21:07.000000000 +0000 @@ -24,6 +24,7 @@ Michael Emmel DirectFB backend Miklós Erdélyi Fix typo leading to a crash Behdad Esfahbod Huge piles of bug fixes, improvements, and general maintenance +Gilles Espinasse Font related fixes Larry Ewing Test case for group-clip Brian Ewins ATSUI maintenance (first success at making it really work) Bertram Felgenhauer Fixes for subtle arithmetic errors @@ -32,6 +33,7 @@ Jens Granseuer Fixes to generate proper compiler flags Laxmi Harikumar Build fix J. Ali Harlow win32 backend updates +Bryce Harrington Test cases, bug/typo fixes Mathias Hasselmann Significant reduction of calls to malloc Richard Henderson "slim" macros for better shared libraries James Henstridge Build fixes related to freetype @@ -49,6 +51,7 @@ Mathieu Lacage several bug/typo fixes Dominic Lachowicz PDF conformance fix, fix image surface to zero out contents Alexander Larsson Profiling and performance fixes. +Sylvestre Ledru Static analysis fixes. Tor Lillqvist win32 build fixes, build scripts Jinghua Luo Add bitmap glyph transformation, many freetype and glitz fixes Luke-Jr Build fix for cross-compiling @@ -62,6 +65,7 @@ Tim Mooney Fix test suite to compile with Solaris compiler Jeff Muizelaar Patient, painful, pixman code merge. Many fixes for intricacies of dashing. Yevgen Muntyan win32 build fix +Ravi Nanjundappa Static analysis fixes, test cases, skia backend update/fixes Declan Naughton Fix documentation typos Peter Nilsson Glitz backend Henning Noren Fix memory leak @@ -88,7 +92,7 @@ Jason Dorje Short Build fixes and bug fixes Jeff Smith Fixes for intricacies of stroking code Travis Spencer XCB backend fix -Bill Spitzak Build fix to find Xrender.h without xrender.pc +Bill Spitzak Build fix to find Xrender.h without xrender.pc, downscaling support Zhe Su Add support for fontconfig's embeddedbitmap option Owen Taylor Font rewrite, documentation, win32 backend Pierre Tardy EGL support and testing, OpenVG backend diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate.c cairo-1.14.2/boilerplate/cairo-boilerplate.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate.c 2015-03-10 22:21:07.000000000 +0000 @@ -112,13 +112,19 @@ cairo_format_t format; switch (content) { - case CAIRO_CONTENT_COLOR: format = CAIRO_FORMAT_RGB24; break; - case CAIRO_CONTENT_COLOR_ALPHA: format = CAIRO_FORMAT_ARGB32; break; - case CAIRO_CONTENT_ALPHA: format = CAIRO_FORMAT_A8; break; - default: - assert (0); /* not reached */ - format = CAIRO_FORMAT_INVALID; - break; + case CAIRO_CONTENT_COLOR: + format = CAIRO_FORMAT_RGB24; + break; + case CAIRO_CONTENT_COLOR_ALPHA: + format = CAIRO_FORMAT_ARGB32; + break; + case CAIRO_CONTENT_ALPHA: + format = CAIRO_FORMAT_A8; + break; + default: + assert (0); /* not reached */ + format = CAIRO_FORMAT_INVALID; + break; } return format; @@ -163,10 +169,16 @@ void *ptr; switch (content) { - case CAIRO_CONTENT_ALPHA: format = CAIRO_FORMAT_A8; break; - case CAIRO_CONTENT_COLOR: format = CAIRO_FORMAT_RGB24; break; + case CAIRO_CONTENT_ALPHA: + format = CAIRO_FORMAT_A8; + break; + case CAIRO_CONTENT_COLOR: + format = CAIRO_FORMAT_RGB24; + break; + case CAIRO_CONTENT_COLOR_ALPHA: default: - case CAIRO_CONTENT_COLOR_ALPHA: format = CAIRO_FORMAT_ARGB32; break; + format = CAIRO_FORMAT_ARGB32; + break; } stride = cairo_format_stride_for_width(format, width); @@ -206,10 +218,16 @@ void *ptr; switch (content) { - case CAIRO_CONTENT_ALPHA: format = CAIRO_FORMAT_A8; break; - case CAIRO_CONTENT_COLOR: format = CAIRO_FORMAT_RGB16_565; break; + case CAIRO_CONTENT_ALPHA: + format = CAIRO_FORMAT_A8; + break; + case CAIRO_CONTENT_COLOR: + format = CAIRO_FORMAT_RGB16_565; + break; + case CAIRO_CONTENT_COLOR_ALPHA: default: - case CAIRO_CONTENT_COLOR_ALPHA: format = CAIRO_FORMAT_ARGB32; break; + format = CAIRO_FORMAT_ARGB32; + break; } stride = cairo_format_stride_for_width(format, width); @@ -504,6 +522,28 @@ } static cairo_bool_t +_cairo_boilerplate_target_format_matches_name (const cairo_boilerplate_target_t *target, + const char *tcontent_name, + const char *tcontent_end) +{ + char const *content_name; + const char *content_end = tcontent_end; + size_t content_len; + + content_name = _cairo_boilerplate_content_visible_name (target->content); + if (tcontent_end) + content_len = content_end - tcontent_name; + else + content_len = strlen(tcontent_name); + if (strlen(content_name) != content_len) + return FALSE; + if (0 == strncmp (content_name, tcontent_name, content_len)) + return TRUE; + + return FALSE; +} + +static cairo_bool_t _cairo_boilerplate_target_matches_name (const cairo_boilerplate_target_t *target, const char *tname, const char *end) @@ -579,13 +619,38 @@ list != NULL; list = list->next) { - const cairo_boilerplate_target_t *target = list->target; - if (_cairo_boilerplate_target_matches_name (target, tname, end)) { - /* realloc isn't exactly the best thing here, but meh. */ - targets_to_test = xrealloc (targets_to_test, sizeof(cairo_boilerplate_target_t *) * (num_targets+1)); - targets_to_test[num_targets++] = target; - found = 1; - } + const cairo_boilerplate_target_t *target = list->target; + const char *tcontent_name; + const char *tcontent_end; + if (_cairo_boilerplate_target_matches_name (target, tname, end)) { + if ((tcontent_name = getenv ("CAIRO_TEST_TARGET_FORMAT")) != NULL && *tcontent_name) { + while(tcontent_name) { + tcontent_end = strpbrk (tcontent_name, " \t\r\n;:,"); + if (tcontent_end == tcontent_name) { + tcontent_name = tcontent_end + 1; + continue; + } + if(_cairo_boilerplate_target_format_matches_name (target, + tcontent_name, tcontent_end)) { + /* realloc isn't exactly the best thing here, but meh. */ + targets_to_test = xrealloc (targets_to_test, + sizeof(cairo_boilerplate_target_t *) * (num_targets+1)); + targets_to_test[num_targets++] = target; + found = 1; + } + + if (tcontent_end) + tcontent_end++; + tcontent_name = tcontent_end; + } + } else { + /* realloc isn't exactly the best thing here, but meh. */ + targets_to_test = xrealloc (targets_to_test, + sizeof(cairo_boilerplate_target_t *) * (num_targets+1)); + targets_to_test[num_targets++] = target; + found = 1; + } + } } if (!found) { @@ -618,20 +683,62 @@ tname = end; } } else { - /* check all compiled in targets */ - num_targets = 0; - for (list = cairo_boilerplate_targets; list != NULL; list = list->next) - num_targets++; + int found = 0; + int not_found_targets = 0; + num_targets = 0; + targets_to_test = xmalloc (sizeof(cairo_boilerplate_target_t*) * num_targets); + for (list = cairo_boilerplate_targets; list != NULL; list = list->next) + { + const cairo_boilerplate_target_t *target = list->target; + const char *tcontent_name; + const char *tcontent_end; + if ((tcontent_name = getenv ("CAIRO_TEST_TARGET_FORMAT")) != NULL && *tcontent_name) { + while(tcontent_name) { + tcontent_end = strpbrk (tcontent_name, " \t\r\n;:,"); + if (tcontent_end == tcontent_name) { + tcontent_name = tcontent_end + 1; + continue; + } + if (_cairo_boilerplate_target_format_matches_name (target, + tcontent_name, tcontent_end)) { + /* realloc isn't exactly the best thing here, but meh. */ + targets_to_test = xrealloc (targets_to_test, + sizeof(cairo_boilerplate_target_t *) * (num_targets+1)); + targets_to_test[num_targets++] = target; + found =1; + } + else + { + not_found_targets++; + } + + if (tcontent_end) + tcontent_end++; + + tcontent_name = tcontent_end; + } + } + else + { + num_targets++; + } + } + if (!found) + { + /* check all compiled in targets */ + num_targets = num_targets + not_found_targets; + targets_to_test = xrealloc (targets_to_test, + sizeof(cairo_boilerplate_target_t*) * num_targets); + num_targets = 0; + for (list = cairo_boilerplate_targets; + list != NULL; + list = list->next) + { + const cairo_boilerplate_target_t *target = list->target; + targets_to_test[num_targets++] = target; + } + } - targets_to_test = xmalloc (sizeof(cairo_boilerplate_target_t*) * num_targets); - num_targets = 0; - for (list = cairo_boilerplate_targets; - list != NULL; - list = list->next) - { - const cairo_boilerplate_target_t *target = list->target; - targets_to_test[num_targets++] = target; - } } /* exclude targets as specified by the user */ @@ -681,10 +788,13 @@ _cairo_boilerplate_register_all (); switch (content) { + case CAIRO_CONTENT_COLOR: + return &builtin_targets[1]; + case CAIRO_CONTENT_COLOR_ALPHA: + return &builtin_targets[0]; + case CAIRO_CONTENT_ALPHA: default: - case CAIRO_CONTENT_ALPHA: return NULL; - case CAIRO_CONTENT_COLOR: return &builtin_targets[1]; - case CAIRO_CONTENT_COLOR_ALPHA: return &builtin_targets[0]; + return NULL; } } @@ -832,14 +942,14 @@ } *close_cb = fclose; - return fdopen (sk, "r"); + return fdopen (sk, "rb"); POPEN: #endif *close_cb = pclose; sprintf (command, "%s %s %d", any2ppm, filename, page); - return popen (command, "r"); + return popen (command, "rb"); } static cairo_bool_t diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-constructors.c cairo-1.14.2/boilerplate/cairo-boilerplate-constructors.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-constructors.c 2014-02-04 10:44:43.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-constructors.c 2015-03-11 01:43:32.000000000 +0000 @@ -11,6 +11,7 @@ extern void _register_ps (void); extern void _register_pdf (void); extern void _register_svg (void); +extern void _register_test (void); void _cairo_boilerplate_register_all (void) @@ -22,4 +23,5 @@ _register_ps (); _register_pdf (); _register_svg (); + _register_test (); } diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-drm.c cairo-1.14.2/boilerplate/cairo-boilerplate-drm.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-drm.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-drm.c 2015-03-10 22:21:07.000000000 +0000 @@ -52,10 +52,16 @@ return NULL; /* skip tests if no supported h/w found */ switch (content) { - case CAIRO_CONTENT_ALPHA: format = CAIRO_FORMAT_A8; break; - case CAIRO_CONTENT_COLOR: format = CAIRO_FORMAT_RGB24; break; + case CAIRO_CONTENT_ALPHA: + format = CAIRO_FORMAT_A8; + break; + case CAIRO_CONTENT_COLOR: + format = CAIRO_FORMAT_RGB24; + break; + case CAIRO_CONTENT_COLOR_ALPHA: default: - case CAIRO_CONTENT_COLOR_ALPHA: format = CAIRO_FORMAT_ARGB32; break; + format = CAIRO_FORMAT_ARGB32; + break; } return *closure = cairo_drm_surface_create (device, format, width, height); diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-glx.c cairo-1.14.2/boilerplate/cairo-boilerplate-glx.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-glx.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-glx.c 2015-03-10 22:21:07.000000000 +0000 @@ -82,13 +82,13 @@ GLX_BLUE_SIZE, 1, GLX_ALPHA_SIZE, 1, GLX_DOUBLEBUFFER, - None }; + GLX_NONE }; int rgb_attribs[] = { GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, - None }; + GLX_NONE }; XVisualInfo *visinfo; GLXContext ctx; gl_target_closure_t *gltc; @@ -236,7 +236,7 @@ GLX_BLUE_SIZE, 1, GLX_ALPHA_SIZE, 1, GLX_DOUBLEBUFFER, - None }; + GLX_NONE }; gltc = calloc (1, sizeof (gl_target_closure_t)); *closure = gltc; @@ -268,7 +268,7 @@ GLX_SAMPLES, 4, GLX_SAMPLE_BUFFERS, 1, GLX_DOUBLEBUFFER, - None }; + GLX_NONE }; gltc = calloc (1, sizeof (gl_target_closure_t)); *closure = gltc; @@ -299,7 +299,7 @@ GLX_BLUE_SIZE, 1, GLX_ALPHA_SIZE, 1, GLX_DOUBLEBUFFER, - None }; + GLX_NONE }; gltc = calloc (1, sizeof (gl_target_closure_t)); *closure = gltc; diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate.h cairo-1.14.2/boilerplate/cairo-boilerplate.h --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate.h 2015-03-10 22:21:07.000000000 +0000 @@ -94,6 +94,10 @@ #define M_PI 3.14159265358979323846 #endif +#ifndef ARRAY_LENGTH +#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) +#endif + CAIRO_BEGIN_DECLS /* A fake format we use for the flattened ARGB output of the PS and diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-pdf.c cairo-1.14.2/boilerplate/cairo-boilerplate-pdf.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-pdf.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-pdf.c 2015-03-10 22:21:07.000000000 +0000 @@ -54,8 +54,6 @@ cairo_surface_t *target; } pdf_target_closure_t; -#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) - static cairo_surface_t * _cairo_boilerplate_pdf_create_surface (const char *name, cairo_content_t content, diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-private.h cairo-1.14.2/boilerplate/cairo-boilerplate-private.h --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -41,7 +41,7 @@ void _register_##name__ (void); \ void _register_##name__ (void) { \ _cairo_boilerplate_register_backend (targets__, \ - sizeof (targets__) / sizeof (targets__[0])); \ + ARRAY_LENGTH(targets__)); \ } #define CAIRO_NO_BOILERPLATE(name__) \ diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-vg.c cairo-1.14.2/boilerplate/cairo-boilerplate-vg.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-vg.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-vg.c 2015-03-10 22:21:07.000000000 +0000 @@ -87,7 +87,7 @@ GLX_BLUE_SIZE, 1, GLX_ALPHA_SIZE, 1, GLX_DOUBLEBUFFER, - None + GLX_NONE }; int rgb_attribs[] = { GLX_RGBA, @@ -95,7 +95,7 @@ GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, - None + GLX_NONE }; XVisualInfo *vi; Display *dpy; @@ -215,7 +215,7 @@ EGL_ALPHA_SIZE, 8, EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, EGL_RENDERABLE_TYPE, EGL_OPENVG_BIT, - None + EGL_NONE }; int rgb_attribs[] = { EGL_RED_SIZE, 8, @@ -225,7 +225,7 @@ EGL_VG_ALPHA_FORMAT, EGL_VG_ALPHA_FORMAT_PRE_BIT, EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, EGL_RENDERABLE_TYPE, EGL_OPENVG_BIT, - None + EGL_NONE }; int dummy_attribs[] = { EGL_WIDTH, 8, EGL_HEIGHT, 8, diff -Nru cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-xlib.c cairo-1.14.2/boilerplate/cairo-boilerplate-xlib.c --- cairo-1.13.0~20140204/boilerplate/cairo-boilerplate-xlib.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/boilerplate/cairo-boilerplate-xlib.c 2015-03-10 22:21:07.000000000 +0000 @@ -248,10 +248,16 @@ similar->dpy = cairo_xlib_surface_get_display (other); switch (content) { + case CAIRO_CONTENT_COLOR: + format = PictStandardRGB24; + break; + case CAIRO_CONTENT_ALPHA: + format = PictStandardA8; + break; + case CAIRO_CONTENT_COLOR_ALPHA: default: - case CAIRO_CONTENT_COLOR_ALPHA: format = PictStandardARGB32; break; - case CAIRO_CONTENT_COLOR: format = PictStandardRGB24; break; - case CAIRO_CONTENT_ALPHA: format = PictStandardA8; break; + format = PictStandardARGB32; + break; } xrender_format = XRenderFindStandardFormat (similar->dpy, format); diff -Nru cairo-1.13.0~20140204/boilerplate/Makefile.in cairo-1.14.2/boilerplate/Makefile.in --- cairo-1.13.0~20140204/boilerplate/Makefile.in 2014-02-04 10:44:43.000000000 +0000 +++ cairo-1.14.2/boilerplate/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -756,6 +756,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/build/aclocal.float.m4 cairo-1.14.2/build/aclocal.float.m4 --- cairo-1.13.0~20140204/build/aclocal.float.m4 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/build/aclocal.float.m4 2015-03-10 22:21:07.000000000 +0000 @@ -24,16 +24,17 @@ # is found, the user is instructed to specify the ordering. ax_cv_c_float_words_bigendian=unknown -AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +AC_LINK_IFELSE([AC_LANG_SOURCE([[ -double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; +double d __attribute__((used)) = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; +int main() { return 0; } ]])], [ -if strings - conftest.$ac_objext | grep noonsees >/dev/null ; then +if strings - conftest$ac_exeext | grep noonsees >/dev/null ; then ax_cv_c_float_words_bigendian=yes fi -if strings - conftest.$ac_objext | grep seesnoon >/dev/null ; then +if strings - conftest$ac_exeext | grep seesnoon >/dev/null ; then if test "$ax_cv_c_float_words_bigendian" = unknown; then ax_cv_c_float_words_bigendian=no else diff -Nru cairo-1.13.0~20140204/build/ar-lib cairo-1.14.2/build/ar-lib --- cairo-1.13.0~20140204/build/ar-lib 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/build/ar-lib 2015-03-10 23:10:06.000000000 +0000 @@ -0,0 +1,270 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2012-03-01.08; # UTC + +# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <= $1],, - AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) - dnl don't check for glib if we build glib - if test "x$PACKAGE_NAME" != "xglib"; then - dnl don't fail if someone does not have glib - PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) - fi - fi - AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], @@ -63,6 +79,7 @@ fi AC_SUBST([AM_DEFAULT_VERBOSITY]) + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) diff -Nru cairo-1.13.0~20140204/build/ltmain.sh cairo-1.14.2/build/ltmain.sh --- cairo-1.13.0~20140204/build/ltmain.sh 2014-02-04 09:46:45.000000000 +0000 +++ cairo-1.14.2/build/ltmain.sh 2015-03-10 23:10:01.000000000 +0000 @@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.6ubuntu3 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.6ubuntu3" +VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" TIMESTAMP="" package_revision=1.3337 diff -Nru cairo-1.13.0~20140204/build/Makefile.win32.common cairo-1.14.2/build/Makefile.win32.common --- cairo-1.13.0~20140204/build/Makefile.win32.common 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/build/Makefile.win32.common 2015-03-10 22:21:07.000000000 +0000 @@ -23,18 +23,29 @@ CFG_LDFLAGS := endif -PIXMAN_CFLAGS := -I$(top_srcdir)/../pixman/pixman -PIXMAN_LIBS := $(top_builddir)/../pixman/pixman/$(CFG)/pixman-1.lib +ifeq ($(PIXMAN_PATH),) +PIXMAN_PATH := $(top_builddir)/../pixman +endif +PIXMAN_CFLAGS := -I$(PIXMAN_PATH)/pixman/ +PIXMAN_LIBS := $(PIXMAN_PATH)/pixman/$(CFG)/pixman-1.lib CAIRO_LIBS = gdi32.lib msimg32.lib user32.lib + ifeq ($(CAIRO_HAS_PNG_FUNCTIONS),1) -LIBPNG_CFLAGS += -I$(top_srcdir)/../libpng/ -CAIRO_LIBS += $(top_builddir)/../libpng/libpng.lib +ifeq ($(LIBPNG_PATH),) +LIBPNG_PATH := $(top_builddir)/../libpng +endif +LIBPNG_CFLAGS += -I$(LIBPNG_PATH)/ +CAIRO_LIBS += $(LIBPNG_PATH)/libpng.lib endif + ifeq ($(CAIRO_HAS_PS_SURFACE)$(CAIRO_HAS_PDF_SURFACE),00) else -ZLIB_CFLAGS += -I$(top_srcdir)/../zlib/ -CAIRO_LIBS += $(top_builddir)/../zlib/zdll.lib +ifeq ($(ZLIB_PATH),) +ZLIB_PATH := $(top_builddir)/../zlib +endif +ZLIB_CFLAGS += -I$(ZLIB_PATH)/ +CAIRO_LIBS += $(ZLIB_PATH)/zdll.lib endif DEFAULT_CFLAGS = -nologo $(CFG_CFLAGS) diff -Nru cairo-1.13.0~20140204/cairo-version.h cairo-1.14.2/cairo-version.h --- cairo-1.13.0~20140204/cairo-version.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/cairo-version.h 2015-03-11 01:41:53.000000000 +0000 @@ -2,7 +2,7 @@ #define CAIRO_VERSION_H #define CAIRO_VERSION_MAJOR 1 -#define CAIRO_VERSION_MINOR 13 -#define CAIRO_VERSION_MICRO 1 +#define CAIRO_VERSION_MINOR 14 +#define CAIRO_VERSION_MICRO 2 #endif diff -Nru cairo-1.13.0~20140204/ChangeLog cairo-1.14.2/ChangeLog --- cairo-1.13.0~20140204/ChangeLog 2014-02-04 10:45:37.000000000 +0000 +++ cairo-1.14.2/ChangeLog 2015-03-11 02:02:38.000000000 +0000 @@ -1,5 +1,4668 @@ # Generated by configure. Do not edit. +commit 93422b3cb5e0ef8104b8194c8873124ce2f5ea2d +Author: Bryce Harrington +Date: Tue Mar 10 18:42:50 2015 -0700 + + version: bump for cairo-1.14.2 release + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 061d54745a0c20b5da08ec4ff8b958d20fd6a143 +Author: Bryce Harrington +Date: Tue Mar 10 16:24:37 2015 -0700 + + KNOWN_ISSUES: Restore known issues file as a stub + + Apparently distcheck requires this file be present. + + KNOWN_ISSUES | 3 +++ + 1 file changed, 3 insertions(+) + +commit fb41ed34415dd58fe57490f93c6151a4bec483f1 +Author: Bryce Harrington +Date: Tue Mar 10 13:08:29 2015 -0700 + + NEWS: Note about the OS X support + + NEWS | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 845d2420e0cbfd338bab63764c4fe3c4273ab47e +Author: Andrea Canciani +Date: Tue Mar 10 12:10:35 2015 +0100 + + Update README with new minimum MacOSX requirements + + Since 70cc8f250b5669e757b4f044571ba0f71e3dea9e the quartz backend is + using some APIs that are not available on MacOSX 10.4 directly + (i.e. without detecting their availability through dynamic linking). + This means that the quartz backend does not work anymore on MacOSX + 10.4 and that the 10.5 SDK (or newer) is needed to build. + + README | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 86fad78fcd2bf987249890aea4eabcce02a58f45 +Author: Bryce Harrington +Date: Tue Mar 10 12:15:40 2015 -0700 + + On MacOSX, the sed utility errors out when parsing non-UTF8 + files. Because of this, the generated cairo-test-constructor only + contained a few tests and the test suite was thus incomplete. + + Original patch by Andrea Canciani + + test/composite-integer-translate-over.c | 2 +- + test/degenerate-dash.c | 2 +- + test/degenerate-path.c | 2 +- + test/long-dashed-lines.c | 2 +- + test/reflected-stroke.c | 2 +- + test/user-font-rescale.c | 4 ++-- + 6 files changed, 7 insertions(+), 7 deletions(-) + +commit f8407332214ba87bbd652f09ce3618a973f27878 +Author: Andrea Canciani +Date: Tue Mar 10 12:10:34 2015 +0100 + + Update KNOWN_ISSUES documentation + + The bug mentioned in KNOWN_ISSUES was fixed in + 2b3d8de11a536d668084ea6d2bf295da1d1cdc11, but the documentation was + not updated. Moreover, the header of KNOWN_ISSUES was 1.10-specific. + + Reviewed-by: Bryce Harrington + + KNOWN_ISSUES | 10 ---------- + 1 file changed, 10 deletions(-) + +commit c45e323555356da0b509c3bb380ccb08b4dea9db +Author: Bryce Harrington +Date: Tue Mar 10 04:45:18 2015 -0700 + + NEWS: Finish filling in changes + + NEWS | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) + +commit 79dbe1bad8089aa3e0b9a9a63443a74cd9e22f32 +Author: Bryce Harrington +Date: Sat Mar 7 00:30:40 2015 -0800 + + NEWS: Update for changes through Nov 2014 + + NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +commit 581f8137052db60d072ee5a4cefdf7292cddab05 +Author: Bryce Harrington +Date: Fri Mar 6 23:54:49 2015 -0800 + + HACKING: Add link to git tutorial and wordsmith a bit + + HACKING | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit c0458b456007f718747be7fd690e674df5026059 +Author: Bryce Harrington +Date: Fri Mar 6 23:31:25 2015 -0800 + + csi-trace: Add --version and --help args to utility + + util/cairo-script/csi-trace.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 3a7d411539975728f90b7d0bb55e3bee2e8600bb +Author: Bryce Harrington +Date: Fri Mar 6 22:26:22 2015 -0800 + + Revert "xlib: Remove queued event from _XReadEvents" + + This reverts commit e7fc8f405beeeb1048f69fe22923170a137b805e. + + src/cairo-xlib-surface-shm.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit c3605bd3adcae1f12731230a1ea599d15e3c8cad +Author: Bryce Harrington +Date: Fri Mar 6 23:29:53 2015 -0800 + + git-ignore: Add build's test-driver + + build/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 246d5c1d477cc246788f5695a08c4c414a36fbf5 +Author: Bryce Harrington +Date: Fri Mar 6 19:14:58 2015 -0800 + + doc: Drop extraneous para's + + These may have been required in the past, but just trip up distcheck + today. The generated docs still look fine. + + src/cairo-version.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit e4f6d07efbf37513b1f2341091839d66b94e3355 +Author: Bryce Harrington +Date: Fri Mar 6 18:34:07 2015 -0800 + + gitignore: logs, manuals + + .gitignore | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e7fc8f405beeeb1048f69fe22923170a137b805e +Author: Henry (Yu) Song +Date: Thu Mar 5 00:20:42 2015 +0000 + + xlib: Remove queued event from _XReadEvents + + Following patch fixes a memory leak in xlib surface. + + Reviewed-by: Bryce Harrington + + src/cairo-xlib-surface-shm.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 4e680ff4bb3a5089b2ec40a96f8e292aa3cfe5f4 +Author: Michael Haubenwallner +Date: Fri Feb 27 14:25:41 2015 +0100 + + headers: fix include order for AIX, bug#89354 + + also for cairo-xcb-private.h + + src/cairo-xcb-private.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 733de40e876f41ae390ae06fdf9789a48651a4e9 +Author: Michael Haubenwallner +Date: Fri Feb 27 11:22:04 2015 +0100 + + headers: fix include order for AIX, bug#89354 + + src/cairo-ft-private.h | 2 +- + src/cairo-xlib-private.h | 2 +- + src/cairo-xlib-surface-private.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 94d30d7160bc1dfabac22ffb9cc810ceb9a35ead +Author: Michael Haubenwallner +Date: Thu Feb 26 15:11:05 2015 +0100 + + perf: fix include order for AIX, bug#89354 + + perf/cairo-perf-report.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15c427bc771e8a7018718eca3855f7de39438457 +Author: Michael Haubenwallner +Date: Thu Feb 26 16:00:01 2015 +0100 + + perf/micro: fix include order for AIX, bug#89354 + + perf/micro/disjoint.c | 2 +- + perf/micro/hatching.c | 2 +- + perf/micro/pattern_create_radial.c | 2 +- + perf/micro/spiral.c | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 0916d580db94bccbf8d31cc58a8198a0c1f8b309 +Author: Michael Haubenwallner +Date: Thu Feb 26 15:03:43 2015 +0100 + + test: fix include order for AIX, bug#89354 + + test/clip-nesting.c | 2 +- + test/clip-operator.c | 2 +- + test/close-path.c | 2 +- + test/composite-integer-translate-over-repeat.c | 2 +- + test/composite-integer-translate-over.c | 2 +- + test/composite-integer-translate-source.c | 2 +- + test/copy-path.c | 2 +- + test/extend-pad-border.c | 2 +- + test/extend-pad-similar.c | 2 +- + test/extend-pad.c | 2 +- + test/extend-reflect.c | 2 +- + test/extended-blend.c | 2 +- + test/mask.c | 2 +- + test/multi-page.c | 4 ++-- + test/operator-clear.c | 2 +- + test/operator-source.c | 2 +- + test/path-append.c | 2 +- + test/pattern-getters.c | 2 +- + test/pdf-features.c | 4 ++-- + test/pixman-downscale.c | 4 ++-- + test/pixman-rotate.c | 4 ++-- + test/ps-features.c | 4 ++-- + test/record-extend.c | 2 +- + test/record-mesh.c | 2 +- + test/select-font-no-show-text.c | 2 +- + test/self-copy.c | 2 +- + test/source-clip-scale.c | 2 +- + test/source-clip.c | 2 +- + test/surface-pattern-scale-down.c | 2 +- + test/surface-pattern-scale-up.c | 2 +- + test/surface-pattern.c | 2 +- + test/svg-clip.c | 3 ++- + test/svg-surface.c | 3 ++- + test/trap-clip.c | 2 +- + test/unbounded-operator.c | 2 +- + test/user-font-mask.c | 4 ++-- + test/user-font-proxy.c | 4 ++-- + test/user-font.c | 4 ++-- + test/xcb-snapshot-assert.c | 2 +- + test/xlib-expose-event.c | 2 +- + test/xlib-surface.c | 3 ++- + 41 files changed, 52 insertions(+), 49 deletions(-) + +commit e9a615a2f94697c64a6702c1e3b24c59b156cc71 +Author: Michael Haubenwallner +Date: Thu Feb 26 16:24:55 2015 +0100 + + define _GETDELIM for getline() on AIX + + On AIX 6.1, getdelim() and getline() are not provided by default, + causing a gcc compilation error. With _GETDELIM defined, AIX's stdio.h + header provides definitions for these routines. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89356 + Reviewed-by: Bryce Harrington + + perf/cairo-perf-report.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit f72bd7c7574fc8fdc1f495f3a50111329851edc5 +Author: Michael Haubenwallner +Date: Thu Feb 26 15:23:01 2015 +0100 + + skip MAP_NORESERVE when unsupported + + Fixes a compilation on AIX ('MAP_NORESERVE' undeclared) + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89340 + Signed-off-by: Bryce Harrington + + test/cairo-test-trace.c | 4 ++++ + util/cairo-sphinx/sphinx.c | 4 ++++ + 2 files changed, 8 insertions(+) + +commit ac75ab9f30ef10ee5973d42223f4b51acca93333 +Author: Michael Haubenwallner +Date: Thu Feb 26 14:18:30 2015 +0100 + + fix conflicting types for 'sync' on AIX, bug#89338 + + src/cairo-surface-observer.c | 12 ++++++------ + src/cairo-xlib-surface-shm.c | 4 ++-- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 70cc8f250b5669e757b4f044571ba0f71e3dea9e +Author: Andrea Canciani +Date: Tue Dec 9 16:13:00 2014 +0100 + + quartz: Remove call to obsolete CGFontGetGlyphPath + + CGFontGetGlyphPath was not public and is not available anymore on + modern OSX/iOS systems. The same functionality is available through + the CoreText API since OSX 10.5. + + Based on a patch by Simon Cozens. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=84324 + + src/cairo-quartz-font.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 91f128bf7a1233a7fc2e164f95279987e32a3532 +Author: Massimo Valentini +Date: Wed Sep 11 18:10:38 2013 +0200 + + win32: Fix crash from win32 surface's image size too small + + Beginning in 1.12, a crash can occur when the win32 surface's image size + does not cover the entire surface (e.g. due to clipping regions). + + This patch enlarges the fallback surface created of the amount + necessary not to write past the end of the DIB. It assumes that + Clip applied to an HDC are clamped to (0,0,width,height) of the HDC. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53121 + Reviewed-by: Bryce Harrington + + src/win32/cairo-win32-display-surface.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit cca8b1960b0091c53235d9dc4cde8a33010c5bbf +Author: Emanuele Aina +Date: Tue Dec 16 14:58:55 2014 +0100 + + cairo-trace: Fix duplicated surface push on similar-image + + The current code results in trace lines with the source surface being + pushed on the stack two times instead of one: + + s1 s1 //ARGB32 48 48 similar-image % s2 + + Instead of: + + s1 //ARGB32 48 48 similar-image % s2 + + This greatly confuses later commands when the script was replayed, + causing traces for trivial GTK3 programs to be unplayable, usually + yielding the following error: + "invalid value (typically too big) for the size of the input (surface, pattern, etc.)" + + Drop the duplicated entry from the trace line printed by the + cairo_surface_create_similar_image() override. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73580 + Signed-off-by: Emanuele Aina + + util/cairo-trace/trace.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit ebd23accc8722db838f6db12f7489f16fe6016ce +Author: Uli Schlachter +Date: Sat Dec 6 17:04:07 2014 +0100 + + xlib-xcb: Don't be lazy and use the real xcb_screen_t + + Signed-off-by: Uli Schlachter + + src/cairo-xlib-xcb-surface.c | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +commit b47209a03feeed2172f35a6d79ba1176fedd5e17 +Author: Uli Schlachter +Date: Sat Dec 6 16:04:46 2014 +0100 + + xcb: Query the display's subpixel order via RENDER + + With commit e691d242, the xcb backend started parsing the resources, just like + cairo-xlib does. One behavior from cairo-xlib was missing: If no Xft.rgba + property was specified, cairo-xlib defaults to the screen's subpixel order. + This commit brings that last bit of functionality to cairo-xcb (but currently + disabled due to commit e0c0a673). + + This commits adds a new array to cairo_xcb_connection_t that contains the + subpixel order for each screen. There is also a new member in cairo_xcb_screen_t + which contains the subpixel order of that screen and which is initialized from + the array when the screen is constructed. With this in place, the + resource-parsing code can just pick the subpixel order from the screen if + needed. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-connection.c | 19 +++++++++++++++++++ + src/cairo-xcb-private.h | 4 +++- + src/cairo-xcb-resources.c | 33 +++++---------------------------- + src/cairo-xcb-screen.c | 16 ++++++++++++++++ + 4 files changed, 43 insertions(+), 29 deletions(-) + +commit 02e4efc961be40d266d4df0acaf3271219529017 +Author: Andrea Canciani +Date: Mon Dec 22 12:49:00 2014 +0100 + + font: Actually perform destruction of fonts + + Commit 337ab1f8d9e29086bfb4001508b28835b41c6390 introduced delayed + font destruction to overcome a race, but prevented the correct cleanup + of the font cache. + + This caused fonts to stay in the cache and caused a crash in the + api-special-cases (when running the test suite with -f). + + Fixes api-special-cases, + https://bugs.freedesktop.org/show_bug.cgi?id=87567 + + src/cairo-font-face.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 028d286e611d46755bb3d1e9932805de2ec35765 +Author: Chris Wilson +Date: Wed Dec 31 10:54:43 2014 +0000 + + xlib: Bump reference count for recording surface replays + + The snapshot takes a reference to the target recording surface in order + to enable it for use by multiple treads. In order to balance this, the + other two sources of recording surface must also take a reference and + for us to release that reference after the replay. + + Otherwise, we end up with a memory leak: + + ==1== 1,392 bytes in 3 blocks are definitely lost in loss record 1 of 7 + ==1== at 0x4A06BCF: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) + ==1== by 0x4C7042D: _cairo_recording_surface_snapshot (cairo/src/cairo-recording-surface.c:1427) + ==1== by 0x4C842BE: _cairo_surface_snapshot_copy_on_write (cairo/src/cairo-surface-snapshot.c:189) + ==1== by 0x4C7E7E0: _cairo_surface_detach_snapshot (cairo/src/cairo-surface.c:348) + ==1== by 0x4C7E55B: _cairo_surface_detach_snapshots (cairo/src/cairo-surface.c:333) + ==1== by 0x4C7E55B: _cairo_surface_flush (cairo/src/cairo-surface.c:1545) + ==1== by 0x4C7E6CC: _cairo_surface_finish_snapshots (cairo/src/cairo-surface.c:1017) + ==1== by 0x4C7E6CC: cairo_surface_destroy (cairo/src/cairo-surface.c:961) + ==1== by 0x4C625A7: cairo_pattern_destroy (cairo/src/cairo-pattern.c:1131) + ==1== by 0x4C3FAC6: _cairo_gstate_fini (cairo/src/cairo-gstate.c:225) + ==1== by 0x4C3C68C: _cairo_default_context_fini (cairo/src/cairo-default-context.c:75) + ==1== by 0x4C3C708: _cairo_default_context_destroy (cairo/src/cairo-default-context.c:93) + ==1== by 0x43E576: record_get (cairo/test/record-extend.c:158) + ==1== by 0x43E576: record_replay (cairo/test/record-extend.c:173) + ==1== by 0x40E22D: cairo_test_for_target (cairo/test/cairo-test.c:929) + ==1== by 0x40E22D: _cairo_test_context_run_for_target (cairo/test/cairo-test.c:1532) + ==1== by 0x40B6C0: _cairo_test_runner_draw (cairo/test/cairo-test-runner.c:255) + ==1== by 0x40B6C0: main (cairo/test/cairo-test-runner.c:937) + + Reported-by: Massimo Valentini + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87898 + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 4a225fca5f121c31ddaa0af80a13bf95a7f21a5b +Author: Andrea Canciani +Date: Thu Nov 20 17:22:30 2014 +0100 + + test: Free test list + + When running the cairo-test-suite, valgrind reports each of the + registered test as a leak, because they are _list_prepend()'ed, but + the tests list is never _list_free()'d. + + Fixes the following valgrind error: + + malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) + cairo_boilerplate_xmalloc (cairo-boilerplate-system.c:47) + cairo_test_register (cairo-test-runner.c:131) + _cairo_test_runner_register_tests (cairo-test-constructors.c:1112) + main (cairo-test-runner.c:714) + + Signed-off-by: Bryce Harrington + + test/cairo-test-runner.c | 1 + + 1 file changed, 1 insertion(+) + +commit 9806f437b42056124314976f35a2d32cefa508a8 +Author: Andrea Canciani +Date: Thu Nov 20 17:22:31 2014 +0100 + + test: Release owned pattern + + The pattern created by cairo_pattern_create_rgb() is owned by the + caller, hence it needs to be released. + + Fixes the following valgrind error: + + malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) + _cairo_pattern_create_solid (cairo-pattern.c:605) + _cairo_pattern_create_in_error (cairo-pattern.c:628) + cairo_pop_group (cairo.c:552) + test_cairo_push_group (api-special-cases.c:157) + preamble (api-special-cases.c:1766) + main (cairo-test-runner.c:228) + + Signed-off-by: Bryce Harrington + + test/api-special-cases.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 40201f4b1ab52c85922b2b7ae05dd862159a1aa0 +Author: Uli Schlachter +Date: Fri Dec 5 14:43:26 2014 +0100 + + tor-scan-converter: Correctly align 64bit types + + On 32bit SPARC the scan converter was causing a SIGBUS due to an unaligned + memory access while accessing an int64_t. This memory accessing was to struct + quorem's rem member. + + This crash occurred because the tor-scan-converter contains its own + implementation of a memory pool. This implementation only guarantees an + alignment of sizeof(void *), which is less than what a 64 bit type requires on + 32bit platforms. This 4 byte alignment is guaranteed, because struct _pool_chunk + (which is the struct that is used for managing free space) contains elements of + that size and so the size of that struct is a multiple of this size as well. + + This problem was introduced with commit 03c3d4b7c15. + + To fix this problem, this commit introduces a int64_t member to struct + _pool_chunk that marks the beginning of the free data space. Thanks to this, the + compiler ensures proper alignment and sizeof(struct _pool_chunk) becomes a + multiple of 8. + + However, previously the end of the struct marked the beginning of the data and + sizeof() was used for correctly calculating offsets to the data section. So, + just adding such a member would work, but would also waste some memory. To avoid + this, this commit also changes the rest of the pool implementation to + accommodate. + + Reported-by: Nicolas Setton + Signed-off-by: Uli Schlachter + Reviewed-by: Bryce Harrington + + src/cairo-tor-scan-converter.c | 38 +++++++++++++++++++++++--------------- + 1 file changed, 23 insertions(+), 15 deletions(-) + +commit 5c82d91a5e15d29b1489dcb413b24ee7fdf59934 +Author: Bryce Harrington +Date: Wed Dec 3 19:28:15 2014 -0800 + + image: Fix crash in _fill_xrgb32_lerp_opaque_spans + + If a span length is negative don't go out of bounds processing the fill + data. + + Patch thanks to Ilya Sakhnenko on mailing list. + + Signed-off-by: Bryce Harrington + + src/cairo-image-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 56da7adc3c85be0325481ecd23746dc49e60d239 +Author: Hans Breuer +Date: Thu Oct 16 20:51:07 2014 +0200 + + win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8 + + "The issue here is that Visual Studio 2005+ is quite strict on type + conversions (so it wants code to be clear enough on conversions)." + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84908 + + src/cairo-path-stroke-traps.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 2c5af590ddbb08e0a46b7e37c5f0230b1805cd37 +Author: Bryce Harrington +Date: Thu Nov 20 12:19:47 2014 -0800 + + Refactor ARRAY_LENGTH macro definitions in test code + + boilerplate/cairo-boilerplate-pdf.c | 2 -- + boilerplate/cairo-boilerplate-private.h | 2 +- + boilerplate/cairo-boilerplate.h | 4 ++++ + perf/cairo-perf.h | 4 ---- + test/any2ppm.c | 2 +- + test/cairo-test.c | 4 ---- + test/cairo-test.h | 4 ---- + 7 files changed, 6 insertions(+), 16 deletions(-) + +commit 7edc5a8844b96862b866901568eb83fa56f4755b +Author: Bryce Harrington +Date: Fri Nov 14 18:10:16 2014 -0800 + + test: Use ARRAY_LENGTH macro + + test/bug-spline.c | 3 +-- + test/caps-tails-curve.c | 2 +- + test/tiger.c | 2 +- + 3 files changed, 3 insertions(+), 4 deletions(-) + +commit ae608035c7b7133826a608d45e067c3875a1aceb +Author: Adrian Johnson +Date: Thu Nov 20 10:16:06 2014 +1030 + + pdf-operators: fix bug with RTL text + + bug 86461 + + src/cairo-pdf-operators.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 121f384c0e231c9c5d9c937b216d342bfc7810a6 +Author: Ravi Nanjundappa +Date: Tue Nov 11 15:07:57 2014 +0530 + + Fix one more warning from check-doc-syntax.sh + + $ ./check-doc-syntax.sh + Checking documentation for incorrect syntax + ./cairo-pattern.c (3342): ERROR: Will invalid doc id (should be 'cairo_...:') + + The proposed changes fixes the warning about the documentation style used in cairo. + + Signed-off-by: Ravi Nanjundappa + + src/cairo-pattern.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a03f2ff72054c9530f98738aac729354a3f56102 +Author: Adam Jackson +Date: Fri Oct 31 13:21:15 2014 -0400 + + xcb: Don't crash when swapping a 0-sized glyph + + malloc(0) needn't return NULL, and on glibc, doesn't. Then we encounter + a loop of the form do { ... } while (--c), which doesn't do quite what + you were hoping for when c is initially 0. + + Since there's nothing to swap in this case, just bomb out. + + Signed-off-by: Adam Jackson + + src/cairo-xcb-surface-render.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 3cf862f6d973755cd9824c2224fbe0a623c47ff1 +Author: Adam Jackson +Date: Fri Oct 31 13:21:14 2014 -0400 + + xlib: Don't crash when swapping a 0-sized glyph + + malloc(0) needn't return NULL, and on glibc, doesn't. Then we encounter + a loop of the form do { ... } while (--c), which doesn't do quite what + you were hoping for when c is initially 0. + + Since there's nothing to swap in this case, just bomb out. + + Signed-off-by: Adam Jackson + + src/cairo-xlib-render-compositor.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit adbeb3d53c6c6e8ddcc63988200da4c5c9627717 +Author: Adrian Johnson +Date: Fri Oct 31 22:43:32 2014 +1030 + + Improve performance of cpu_to_be32 and be32_to_cpu + + By switching to the more common form, gcc and clang emit a single + bswap instruction and truetype subsetting of large fonts runs about + 15% faster. + + src/cairoint.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e4b78424ac82588bcb9b855d5b6d5872050d33f9 +Author: Adrian Johnson +Date: Fri Oct 31 19:06:42 2014 +1030 + + pdf-operators: only wrap text strings for PS output + + since the PS Document Structing Conventions impose a 255 character + line limit. PDF does not require wrapping. + + pdf-operators is designed to emit the same output for PS and PDF. + Unfortunately some PDF interpreters don't like strings split with + '\\\n' and some PS interpreters don't like strings split with ')('. + So we are forced to make pdf-operators handling string wrapping + differently for PDF and PS. + + Bug 85662 + + src/cairo-pdf-operators-private.h | 4 +++- + src/cairo-pdf-operators.c | 16 ++++++++++------ + src/cairo-pdf-surface.c | 9 ++++++--- + src/cairo-ps-surface.c | 9 ++++++--- + src/cairo-type3-glyph-surface-private.h | 3 ++- + src/cairo-type3-glyph-surface.c | 6 ++++-- + 6 files changed, 31 insertions(+), 16 deletions(-) + +commit b4e218c3e8402e149115a59406796b751118237f +Author: Bryce Harrington +Date: Tue Oct 21 15:26:34 2014 -0700 + + Drop the target-specific huge-radial.pdf.*.ref.png images + + These two images are mis-rendered (clearly evident from visual + inspection). By removing them, the test will fall back to the more + general format-specific images, huge-radial.argb32.ref.png and + huge-radial.rgb24.ref.png. + + Note that the huge-radial.pdf tests still fail to pass, but the pdiff + looks more sensible. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66218 + + Signed-off-by: Bryce Harrington + + test/reference/huge-radial.pdf.argb32.ref.png | Bin 177382 -> 0 bytes + test/reference/huge-radial.pdf.rgb24.ref.png | Bin 225358 -> 0 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit f7d0f80d2d880bea6b2fdbff579b21100355c1be +Author: Bryce Harrington +Date: Wed Oct 29 15:27:19 2014 -0700 + + RELEASING: Be explicit as to which tag is pushed + + RELEASING | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit caa4c9fdeb3aecd9a4288114e75d24ec931cd01b +Author: Ravi Nanjundappa +Date: Mon Oct 27 10:54:13 2014 +0530 + + Fix warnings from check-doc-syntax.sh + + $ ./check-doc-syntax.sh + Checking documentation for incorrect syntax + ./cairo-pattern.c (3346): ERROR: Will bad line: ' */' + ./cairo-pattern.c (3346): ERROR: Will documentation comment not closed with **/ + ./cairo-pattern.c (3422): ERROR: _cairo_pattern_sampled_area invalid doc id (should be 'cairo_...:') + + The warnings are about the documentation style used in cairo + + Signed-off-by: Ravi Nanjundappa + + src/cairo-pattern.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f9b65ae1fc91bc558a01c2ad7be5a121c6f10818 +Author: Adrian Johnson +Date: Tue Oct 21 22:35:12 2014 +1030 + + build: fix regression on mingw + + 7cfebce1 removed the filename extension for executables. + + Patch from http://sourceforge.net/p/inkscape/mailman/message/32939144/ + + Bug 85120 + + build/aclocal.float.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2de69581c28bf115852037ca41eba13cb7335976 +Author: Massimo Valentini +Date: Sun Oct 19 09:19:10 2014 +0200 + + tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow + + the active edges list must be left sorted at the next possible use + and since full_row does not deal with intersections it is not usable + when there is an intersection in the top half of the next row first + subrow + + Reported-and-tested-by: Matthew Leach + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85151 + Reviewed-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 51892e91d40175d790541ac7f2e5706648649a5e +Author: Bryce Harrington +Date: Sat Oct 18 19:10:32 2014 -0700 + + Revert "Add execution bit for make-cairo-test-constructors.sh" + + This reverts commit 5c17bf1a33b8e76edeb23121342e0f163fe9d6ad. + + Script is sourced in the makefile, no need for +x. + + test/make-cairo-test-constructors.sh | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 1013d18a01aa10dadb8996b9a327eb39b219acbd +Author: Adrian Johnson +Date: Sun Oct 19 12:08:55 2014 +1030 + + pdf: fix compiler warning + + src/cairo-pdf-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99a35dd273f3deb4ae54310f1ed1746bfd9fae70 +Author: Adrian Johnson +Date: Sun Oct 19 11:34:34 2014 +1030 + + CFF: Fix unaligned access + + Debian bug 712836 reported bus errors in cff subsetting when + running on a sparc. This is because unlike truetype, all data + in the compact font format is not aligned. + + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712836 + + src/cairo-cff-subset.c | 35 +++++++++++++++++++---------------- + src/cairo-image-info.c | 32 +++++++++++++------------------- + src/cairoint.h | 26 ++++++++++++++++++++++++++ + 3 files changed, 58 insertions(+), 35 deletions(-) + +commit 5c17bf1a33b8e76edeb23121342e0f163fe9d6ad +Author: Bryce Harrington +Date: Fri Oct 17 12:04:56 2014 -0700 + + Add execution bit for make-cairo-test-constructors.sh + + This is referenced in the Makefile but not set as executable + + test/make-cairo-test-constructors.sh | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit f05e9332b389d33b5ae654e04576ccf2f389786f +Author: Adrian Johnson +Date: Fri Oct 17 22:04:39 2014 +1030 + + Update mime type documentation. + + src/cairo-surface.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) + +commit 9102c0b0af808e52908e4f03bd9db479339c7b7e +Author: Bryce Harrington +Date: Thu Oct 16 11:41:40 2014 -0700 + + RELEASING: Update tags push command + + I couldn't get the documented command to do diddly. Running + `git push --tags` achieved what I think was intended. + + RELEASING | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 92bc5376a82b618d11451c1ca088fbb0d37ca270 +Author: Bryce Harrington +Date: Mon Oct 13 19:57:09 2014 -0700 + + Start 1.14.1 development + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8 +Author: Bryce Harrington +Date: Mon Oct 13 18:54:12 2014 -0700 + + pattern: Restore dropped inclusion of cairoint.h + + Fixes failure in make release-check due by check-preprocessor-syntax.sh + due to requirement that cairoint.h be the first include for source files. + + src/cairo-pattern.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 60ca80b248c2a5ffd0744162af7a1f1df1b04398 +Author: Bryce Harrington +Date: Mon Oct 13 18:45:53 2014 -0700 + + 1.14.0 release + + cairo-version.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3e41f7b38169f7724ed737790a5c0ad68ff80a04 +Author: Bryce Harrington +Date: Mon Oct 13 18:30:23 2014 -0700 + + NEWS: Flesh out docs for new APIs + + NEWS | 13 +++++++++++-- + src/cairo-surface.c | 2 +- + 2 files changed, 12 insertions(+), 3 deletions(-) + +commit 41561c527c72d20f6f09f898f6390a578cfd4095 +Author: Bryce Harrington +Date: Mon Oct 13 18:20:45 2014 -0700 + + NEWS: Update with latest changes and finalize for release + + NEWS | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +commit ab2a7b61d59258b71e1c3256edf2f42ea6cc1eb2 +Author: Adrian Johnson +Date: Sun Oct 12 21:04:37 2014 +1030 + + pdf: don't use '\' to split strings across multiple lines + + The PDF interpreter in my printer does not handle this correctly. + So instead we add the string delimiters '(' and ')' to each line. + + src/cairo-pdf-operators.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 45934f69cd158b7bb5632f5e4334a156795147f4 +Author: Bill Spitzak +Date: Thu Oct 9 19:46:16 2014 -0700 + + image: Corrected extents calculations + + New implementations of _cairo_pattern_sampled_area and _cairo_pattern_get_extents + which produce a more accurate bounding box. These do not depend on side-effects + of analyze_filter, can handle different horizontal and vertical scales, filters + wider than 1 for down-scaling, and compute a somewhat tighter bounding box + in most cases. + + I removed the pad output of _cairo_pattern_analyze_filter as it is unused. + + Reviewed-by: Bryce Harrington + + src/cairo-composite-rectangles.c | 2 +- + src/cairo-pattern-private.h | 5 +- + src/cairo-pattern.c | 275 ++++++++++++++++++++++++--------------- + src/cairo-xlib-core-compositor.c | 4 +- + src/cairoint.h | 4 - + src/drm/cairo-drm-i915-shader.c | 39 +----- + 6 files changed, 176 insertions(+), 153 deletions(-) + +commit 3cd7ed1f320c3ce330da3d3153c39b613e4a5a15 +Author: Bill Spitzak +Date: Thu Oct 9 19:46:15 2014 -0700 + + xcb: Use image fallback for GOOD/BEST filters + + It will not use the fallback if the symbols in the previous patch + are turned on. + + Also some code rearrangement to make this resemble the xlib version + more and to remove some suspect bugs. In particular meshes should not + work just because the translation is an integer. + + Reviewed-by: Bryce Harrington + + src/cairo-xcb-surface-render.c | 34 ++++++++++++++++------------------ + 1 file changed, 16 insertions(+), 18 deletions(-) + +commit ca9aee4e62d914b3cd3d6747ff1a4961d9aff8ed +Author: Bill Spitzak +Date: Thu Oct 9 19:46:14 2014 -0700 + + xcb: Add switches for whether XRender supports GOOD/BEST filtering + + Currently these are always false, but if XRender use a pixman that + supports filtering these could be turned on for that version. + + Reviewed-by: Bryce Harrington + + src/cairo-xcb-connection.c | 10 ++++++++++ + src/cairo-xcb-private.h | 6 +++++- + 2 files changed, 15 insertions(+), 1 deletion(-) + +commit 58728da6eba4d89ba7c4328b22a552af633abb05 +Author: Bill Spitzak +Date: Thu Oct 9 19:46:13 2014 -0700 + + xlib: Use image fallback for GOOD/BEST filters + + Fallback is not used if the symbols defined in the previous patch to + indicate if XRender does GOOD/BEST are true. + + This patch also includes some changes to take advantage of the fact that + if there is an integer translation analyze_filter will already have set + the filter to NEAREST. + + Reviewed-by: Bryce Harrington + + src/cairo-xlib-source.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit c653dcd3e6ac1cef2440fa0db97a8e5ce30b2a47 +Author: Bill Spitzak +Date: Thu Oct 9 19:46:12 2014 -0700 + + xlib: Add symbols to indicate if XRender supports GOOD/BEST filtering + + Currently these are always false, but if some version of xlib uses + a pixman supporting filtering they could be changed to return true + for that version. + + Reviewed-by: Bryce Harrington + + src/cairo-xlib-private.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit c8b1bf55ad016de0675f4e924fdb8e17051a029c +Author: Bill Spitzak +Date: Thu Oct 9 19:46:11 2014 -0700 + + image: Move filter decision to _cairo_pattern_analyze_filter + + The analysis to deterimine if the GOOD filter can be replaced with + the BILINEAR filter is moved to this function so it can be used + by backends other than the image backend. + + Reviewed-by: Bryce Harrington + + src/cairo-image-source.c | 22 +++++++++------------- + src/cairo-pattern.c | 36 +++++++++++++++++++++++++++++++++++- + 2 files changed, 44 insertions(+), 14 deletions(-) + +commit 82cd66f8330da0521c29c003ef0a4bb773d6dbc6 +Author: Bryce Harrington +Date: Thu Oct 9 17:55:09 2014 -0700 + + test: Update pixman downscaling 95 reference images + + The pixman downscaling "95" tests attempt to rescale a 96x96 pixmap to + 95x95. Ideally the borders between color areas should be sharp, but for + this use case we allow for 1 pixel of blur between the areas as + acceptable. The choice of what color to use for this blurred region is + not important, and in fact varies from backend to backend. + + The old reference images were generated by Krzysztof Kosiński's + downscaling algorithm. These new images are against the algorithms + written by Bill Spitzak. + + Signed-off-by: Bryce Harrington + + .../pixman-downscale-best-95.image.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.image16.rgb24.ref.png | Bin 0 -> 648 bytes + test/reference/pixman-downscale-best-95.pdf.ref.png | Bin 0 -> 479 bytes + test/reference/pixman-downscale-best-95.ps2.ref.png | Bin 0 -> 460 bytes + test/reference/pixman-downscale-best-95.ps3.ref.png | Bin 0 -> 460 bytes + .../pixman-downscale-best-95.recording.rgb24.ref.png | Bin 0 -> 659 bytes + test/reference/pixman-downscale-best-95.ref.png | Bin 685 -> 771 bytes + test/reference/pixman-downscale-best-95.script.ref.png | Bin 0 -> 772 bytes + test/reference/pixman-downscale-best-95.svg11.ref.png | Bin 0 -> 474 bytes + test/reference/pixman-downscale-best-95.svg12.ref.png | Bin 0 -> 474 bytes + .../pixman-downscale-best-95.test-base.rgb24.ref.png | Bin 0 -> 659 bytes + ...pixman-downscale-best-95.test-fallback.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.test-mask.rgb24.ref.png | Bin 0 -> 659 bytes + ...ixman-downscale-best-95.test-paginated.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.test-spans.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.test-traps.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.xcb-fallback.rgb24.ref.png | Bin 0 -> 659 bytes + ...ixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.xcb-window&.rgb24.ref.png | Bin 0 -> 474 bytes + .../pixman-downscale-best-95.xcb-window.rgb24.ref.png | Bin 0 -> 474 bytes + test/reference/pixman-downscale-best-95.xcb.ref.png | Bin 0 -> 474 bytes + ...pixman-downscale-best-95.xlib-fallback.rgb24.ref.png | Bin 0 -> 659 bytes + ...xman-downscale-best-95.xlib-render-0_0.rgb24.ref.png | Bin 0 -> 659 bytes + .../pixman-downscale-best-95.xlib-window.rgb24.ref.png | Bin 0 -> 474 bytes + test/reference/pixman-downscale-best-95.xlib.ref.png | Bin 0 -> 474 bytes + .../pixman-downscale-bilinear-95.image16.rgb24.ref.png | Bin 0 -> 481 bytes + test/reference/pixman-downscale-bilinear-95.pdf.ref.png | Bin 0 -> 479 bytes + test/reference/pixman-downscale-bilinear-95.ps2.ref.png | Bin 0 -> 460 bytes + test/reference/pixman-downscale-bilinear-95.ps3.ref.png | Bin 0 -> 460 bytes + test/reference/pixman-downscale-bilinear-95.ref.png | Bin 685 -> 474 bytes + .../pixman-downscale-bilinear-95.script.ref.png | Bin 0 -> 481 bytes + .../pixman-downscale-fast-95.image16.rgb24.ref.png | Bin 0 -> 304 bytes + test/reference/pixman-downscale-fast-95.pdf.ref.png | Bin 0 -> 479 bytes + test/reference/pixman-downscale-fast-95.ps2.ref.png | Bin 0 -> 299 bytes + test/reference/pixman-downscale-fast-95.ps3.ref.png | Bin 0 -> 299 bytes + test/reference/pixman-downscale-fast-95.svg11.ref.png | Bin 0 -> 474 bytes + test/reference/pixman-downscale-fast-95.svg12.ref.png | Bin 0 -> 474 bytes + .../pixman-downscale-good-95.image16.rgb24.ref.png | Bin 0 -> 481 bytes + test/reference/pixman-downscale-good-95.pdf.ref.png | Bin 0 -> 479 bytes + test/reference/pixman-downscale-good-95.ps2.ref.png | Bin 0 -> 460 bytes + test/reference/pixman-downscale-good-95.ps3.ref.png | Bin 0 -> 460 bytes + test/reference/pixman-downscale-good-95.ref.png | Bin 685 -> 474 bytes + test/reference/pixman-downscale-good-95.script.ref.png | Bin 0 -> 481 bytes + .../pixman-downscale-nearest-95.image16.rgb24.ref.png | Bin 0 -> 304 bytes + test/reference/pixman-downscale-nearest-95.pdf.ref.png | Bin 0 -> 479 bytes + test/reference/pixman-downscale-nearest-95.ps2.ref.png | Bin 0 -> 299 bytes + test/reference/pixman-downscale-nearest-95.ps3.ref.png | Bin 0 -> 299 bytes + .../reference/pixman-downscale-nearest-95.svg11.ref.png | Bin 0 -> 474 bytes + .../reference/pixman-downscale-nearest-95.svg12.ref.png | Bin 0 -> 474 bytes + 49 files changed, 0 insertions(+), 0 deletions(-) + +commit 79b5a35f8387845a2fe46215776082a8abc3caba +Author: Bryce Harrington +Date: Thu Oct 9 17:47:10 2014 -0700 + + test: Add an update-refs.sh script to update reference images + + There are cases where the rendered output of a test can vary from + backend to backend in ways which are visually acceptable. This is why + we have reference images in the first place. In these cases, changes to + the rendering logic can result in slight differences in the output that + is also within acceptable visual limits. + + We see this in the pixman downscaling tests. This script is introduced + as a way to more easily update the reference images after a renderer + change. + + This script is intended to be expanded to handle updating of references + for other tests as we identify similar issues. The intent is that this + script then serves as a way to document these exceptional cases. + + Signed-off-by: Bryce Harrington + + test/update-refs.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 84 insertions(+) + +commit 1570fa23e8043204bd30b122d55a036da15b16e5 +Author: Bryce Harrington +Date: Wed Oct 8 20:08:47 2014 -0700 + + test: Fix error message to specify the executable that was missing + + Signed-off-by: Bryce Harrington + + test/check-refs.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a8abf3a48b588632e3f39028b0b978d73c362f46 +Author: Chris Wilson +Date: Thu Oct 9 10:43:15 2014 +0100 + + test: Fix conflation of different device scales in index.html + + Currently testtable.js does not recognise the difference between running + the same test with multiple scale factors and merges the results into + one. + + test/testtable.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8047179bfca65cad36c61daf5f88c97cc971848b +Author: Chris Wilson +Date: Thu Oct 9 10:54:58 2014 +0100 + + test: Teach check-preprocessor-syntax.sh about -inlines.h + + src/check-preprocessor-syntax.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7c1db82a2e9dc04fd652d6e6bb6f4eb976922368 +Author: Bryce Harrington +Date: Fri Oct 3 12:34:06 2014 -0700 + + Get make check back to a happy spot + + Fix header ordering for some recently added code so cairo internal + headers are included first. Quells two make check errors. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84638 + + src/cairo-gl-info.c | 4 ++-- + src/cairo-line-private.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit f57c0fd4656ef4fdbe13dbc69aa1ce4e130c37ce +Author: Bryce Harrington +Date: Fri Oct 3 12:20:13 2014 -0700 + + Declare as private the new cairo_lines_compare_at_y symbol + + Fixes a make check error. + + Checking that .libs/libcairo.so has the same symbol list as cairo.def + 126a127 + > cairo_lines_compare_at_y + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84638 + Signed-off-by: Bryce Harrington + + src/cairo-line-private.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit d9ba8337ab456ae0e232d3c603cb41cea984ebea +Author: Bryce Harrington +Date: Fri Oct 3 11:52:32 2014 -0700 + + quartz: Check for quartz surface type before conversion + + Fixes the following warning introduced in a recent commit reported by + ~suv: + + CC cairo-quartz-image-surface.lo + cairo-quartz-image-surface.c:382:37: warning: incompatible pointer types + passing 'cairo_quartz_image_surface_t *' + (aka 'struct cairo_quartz_image_surface *') to parameter of type + 'const cairo_surface_t *' (aka 'const struct _cairo_surface *') + [-Wincompatible-pointer-types] + if (! _cairo_surface_is_quartz (surface)) { + ^~~~~~~ + ./cairo-quartz-private.h:87:50: note: passing argument to parameter 'surface' here + _cairo_surface_is_quartz (const cairo_surface_t *surface); + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84569 + Signed-off-by: Bryce Harrington + + src/cairo-quartz-image-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 03756e042a2916e6c5334e2a00ec503a38e172d4 +Author: Andrea Canciani +Date: Fri Oct 3 09:56:24 2014 +0200 + + quartz-image: Fix build + + The quartz-image backend uses _cairo_surface_is_quartz(), which + therefore needs to be made available to it. Fixed as suggested by + Bryce in the referenced bugreport. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84569 + Signed-off-by: Andrea Canciani + + src/cairo-quartz-private.h | 3 +++ + src/cairo-quartz-surface.c | 5 +---- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 531da6fb915a6e9ea33216a90196ae962876acf4 +Author: Andrea Canciani +Date: Thu Oct 2 18:10:00 2014 +0200 + + quartz: Fix build + + Cairo cannot build with Quartz enabled since + 573ddfc3d5c08c37b95a21e0a1b34acecc646053, because of a double + definition of _cairo_surface_is_quartz(). + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84569 + Signed-off-by: Andrea Canciani + + src/cairo-quartz-surface.c | 22 ++++++++-------------- + 1 file changed, 8 insertions(+), 14 deletions(-) + +commit 14df211b9c12719f67412aedd6610eb623df7d7e +Author: Chris Wilson +Date: Thu Oct 2 13:08:50 2014 +0100 + + test: Add whole flipped replays + + When investing the symmetry of the raterisation, we want to have a + simple replay of all of the original geometry through a the flipped + recording surface. This reduces the worry about artifacts from the + clipped rendering. + + Signed-off-by: Chris Wilson + + test/recordflip.c | 188 +++++++++++++++++++++ + test/reference/recordflip-whole-fill-alpha.ref.png | Bin 0 -> 2803 bytes + .../recordflip-whole-paint-alpha-clip-mask.ref.png | Bin 0 -> 351 bytes + .../recordflip-whole-paint-alpha-clip.ref.png | Bin 0 -> 316 bytes + ...recordflip-whole-paint-alpha-solid-clip.ref.png | Bin 0 -> 291 bytes + .../reference/recordflip-whole-paint-alpha.ref.png | Bin 0 -> 257 bytes + test/reference/recordflip-whole-paint.ref.png | Bin 0 -> 93 bytes + .../recordflip-whole-select-font-face.ref.png | Bin 0 -> 2240 bytes + .../recordflip-whole-self-intersecting.ref.png | Bin 0 -> 168 bytes + .../recordflip-whole-text-transform.ref.png | Bin 0 -> 5609 bytes + 10 files changed, 188 insertions(+) + +commit 7f7ed4c04e49b64c15d60889a8cdc4075efd8236 +Author: Chris Wilson +Date: Thu Oct 2 09:16:04 2014 +0100 + + image: Eliminate self-intersections for the pixman traps compositor + + As pixman uses an accumulation mask, it oversamples neighbouring edges + within a cell. We can reduce the impact of this by eliminating + overlapping triangles/trapezoids from being passed into pixman. + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit 7aacd81befc5ad1aec26bcf7e65fa5bd36c6a9b4 +Author: Chris Wilson +Date: Thu Oct 2 08:17:14 2014 +0100 + + test: Refresh reference images for tor rendering changes + + (And include a git add missed from commit + + ccd48b346436a80629e4f9a07f2ba7ffbfd802f1 + Author: Chris Wilson + Date: Tue Sep 30 14:06:21 2014 +0100 + + test: Remove more duplicated reference images + + but were mostly invalidated by the rasteriser changes anyway). + + Signed-off-by: Chris Wilson + + test/reference/a8-clear.ref.png | Bin 0 -> 267 bytes + test/reference/aliasing.ref.png | Bin 0 -> 103877 bytes + test/reference/arc-direction.ref.png | Bin 0 -> 6073 bytes + test/reference/big-line.ref.png | Bin 0 -> 999 bytes + test/reference/big-little-triangle.argb32.ref.png | Bin 409 -> 399 bytes + test/reference/big-little-triangle.rgb24.ref.png | Bin 331 -> 320 bytes + test/reference/bilevel-xlib.ref.png | Bin 0 -> 105 bytes + test/reference/bug-40410.ref.png | Bin 0 -> 429 bytes + test/reference/bug-84115.ref.png | Bin 64233 -> 62964 bytes + test/reference/bug-bo-ricotz.ref.png | Bin 0 -> 2128 bytes + test/reference/bug-extents.ref.png | Bin 0 -> 9211 bytes + test/reference/bug-seams.ref.png | Bin 1364 -> 1638 bytes + test/reference/bug-spline.ref.png | Bin 0 -> 5405 bytes + test/reference/caps-joins-alpha.ref.png | Bin 0 -> 2420 bytes + test/reference/caps-joins-curve.ref.png | Bin 0 -> 5681 bytes + test/reference/caps-joins.ref.png | Bin 0 -> 2560 bytes + test/reference/caps-sub-paths.ref.png | Bin 0 -> 168 bytes + test/reference/caps-tails-curve.ref.png | Bin 0 -> 53182 bytes + test/reference/caps.ref.png | Bin 0 -> 2115 bytes + test/reference/clear-source.ref.png | Bin 0 -> 882 bytes + test/reference/clear.argb32.ref.png | Bin 692 -> 701 bytes + test/reference/clear.rgb24.ref.png | Bin 621 -> 624 bytes + test/reference/clip-disjoint-hatching.ref.png | Bin 0 -> 7918 bytes + test/reference/clip-disjoint-quad.ref.png | Bin 0 -> 1642 bytes + test/reference/clip-disjoint.ref.png | Bin 0 -> 5348 bytes + .../reference/clip-fill-eo-unbounded.argb32.ref.png | Bin 0 -> 4053 bytes + test/reference/clip-fill-eo-unbounded.ref.png | Bin 4076 -> 0 bytes + test/reference/clip-fill-eo-unbounded.rgb24.ref.png | Bin 0 -> 3408 bytes + .../reference/clip-fill-nz-unbounded.argb32.ref.png | Bin 0 -> 4053 bytes + test/reference/clip-fill-nz-unbounded.ref.png | Bin 4076 -> 0 bytes + test/reference/clip-fill-nz-unbounded.rgb24.ref.png | Bin 0 -> 3408 bytes + test/reference/clip-fill-rule.argb32.ref.png | Bin 437 -> 430 bytes + test/reference/clip-fill-rule.rgb24.ref.png | Bin 388 -> 376 bytes + test/reference/clip-fill.ref.png | Bin 0 -> 1046 bytes + test/reference/clip-group-shapes-circles.ref.png | Bin 0 -> 1504 bytes + test/reference/clip-image.ref.png | Bin 0 -> 2677 bytes + test/reference/clip-intersect.ref.png | Bin 0 -> 224 bytes + test/reference/clip-mixed-antialias.ref.png | Bin 0 -> 1084 bytes + test/reference/clip-nesting.argb32.ref.png | Bin 0 -> 1026 bytes + test/reference/clip-nesting.ref.png | Bin 1094 -> 0 bytes + test/reference/clip-nesting.rgb24.ref.png | Bin 0 -> 917 bytes + test/reference/clip-operator.argb32.ref.png | Bin 8685 -> 8514 bytes + test/reference/clip-operator.rgb24.ref.png | Bin 3458 -> 3417 bytes + test/reference/clip-polygons.ref.png | Bin 0 -> 1352 bytes + test/reference/clip-push-group.ref.png | Bin 0 -> 164 bytes + test/reference/clip-shape.ref.png | Bin 0 -> 2902 bytes + test/reference/clip-stroke-unbounded.argb32.ref.png | Bin 0 -> 4097 bytes + test/reference/clip-stroke-unbounded.ref.png | Bin 4104 -> 0 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 0 -> 3486 bytes + test/reference/clip-stroke.ref.png | Bin 0 -> 1571 bytes + test/reference/clip-text.ref.png | Bin 0 -> 912 bytes + test/reference/clip-twice.argb32.ref.png | Bin 0 -> 1333 bytes + test/reference/clip-twice.ref.png | Bin 1357 -> 0 bytes + test/reference/clip-twice.rgb24.ref.png | Bin 0 -> 1171 bytes + test/reference/clip-xlib.ref.png | Bin 0 -> 2686 bytes + test/reference/clipped-group.ref.png | Bin 0 -> 315 bytes + test/reference/close-path.ref.png | Bin 0 -> 294 bytes + test/reference/copy-path.ref.png | Bin 0 -> 616 bytes + test/reference/coverage-column-triangles.xfail.png | Bin 0 -> 7632 bytes + .../coverage-intersecting-triangles.xfail.png | Bin 0 -> 14444 bytes + test/reference/coverage-rhombus.xfail.png | Bin 0 -> 9898 bytes + test/reference/coverage-row-triangles.xfail.png | Bin 0 -> 512 bytes + test/reference/coverage-triangles.xfail.png | Bin 0 -> 14283 bytes + test/reference/create-from-png.ref.png | Bin 0 -> 96 bytes + test/reference/culled-glyphs.ref.png | Bin 0 -> 440 bytes + test/reference/dash-caps-joins.ref.png | Bin 5089 -> 4713 bytes + test/reference/dash-curve.ref.png | Bin 0 -> 41069 bytes + test/reference/dash-infinite-loop.ref.png | Bin 0 -> 877 bytes + test/reference/dash-offset-negative.ref.png | Bin 0 -> 129 bytes + test/reference/dash-scale.ref.png | Bin 8831 -> 7826 bytes + test/reference/dash-state.ref.png | Bin 0 -> 8027 bytes + test/reference/degenerate-arc.ref.png | Bin 0 -> 626 bytes + test/reference/degenerate-dash.ref.png | Bin 0 -> 1960 bytes + test/reference/degenerate-linear-gradient.ref.png | Bin 0 -> 336 bytes + test/reference/degenerate-pen.ref.png | Bin 0 -> 1019 bytes + test/reference/drunkard-tails.ref.png | Bin 6261 -> 6157 bytes + test/reference/extend-pad-border.ref.png | Bin 0 -> 495 bytes + .../extended-blend-alpha-mask.argb32.ref.png | Bin 0 -> 9221 bytes + test/reference/extended-blend-alpha-mask.ref.png | Bin 9221 -> 0 bytes + .../extended-blend-alpha-mask.rgb24.ref.png | Bin 0 -> 4597 bytes + test/reference/extended-blend-alpha.argb32.ref.png | Bin 0 -> 9406 bytes + test/reference/extended-blend-alpha.ref.png | Bin 9406 -> 0 bytes + test/reference/extended-blend-alpha.rgb24.ref.png | Bin 0 -> 5740 bytes + test/reference/extended-blend-mask.argb32.ref.png | Bin 0 -> 3959 bytes + test/reference/extended-blend-mask.ref.png | Bin 3971 -> 0 bytes + test/reference/extended-blend-mask.rgb24.ref.png | Bin 0 -> 3634 bytes + .../extended-blend-solid-alpha.argb32.ref.png | Bin 0 -> 9406 bytes + test/reference/extended-blend-solid-alpha.ref.png | Bin 9406 -> 0 bytes + .../extended-blend-solid-alpha.rgb24.ref.png | Bin 0 -> 5740 bytes + test/reference/extended-blend-solid.argb32.ref.png | Bin 0 -> 4072 bytes + test/reference/extended-blend-solid.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend-solid.rgb24.ref.png | Bin 0 -> 3784 bytes + test/reference/extended-blend.argb32.ref.png | Bin 0 -> 4072 bytes + test/reference/extended-blend.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend.rgb24.ref.png | Bin 0 -> 3784 bytes + test/reference/fallback.argb32.ref.png | Bin 0 -> 4133 bytes + test/reference/fallback.ref.png | Bin 4106 -> 0 bytes + test/reference/fallback.rgb24.ref.png | Bin 0 -> 3283 bytes + test/reference/fill-alpha-pattern.ref.png | Bin 0 -> 3500 bytes + test/reference/fill-alpha.ref.png | Bin 0 -> 2754 bytes + test/reference/fill-and-stroke-alpha-add.ref.png | Bin 0 -> 558 bytes + test/reference/fill-and-stroke-alpha.ref.png | Bin 0 -> 513 bytes + .../fill-degenerate-sort-order.argb32.ref.png | Bin 0 -> 2390 bytes + test/reference/fill-degenerate-sort-order.ref.png | Bin 2414 -> 0 bytes + .../fill-degenerate-sort-order.rgb24.ref.png | Bin 0 -> 2048 bytes + test/reference/fill-image.ref.png | Bin 0 -> 1457 bytes + test/reference/fill-rule.argb32.ref.png | Bin 2086 -> 2076 bytes + test/reference/fill-rule.rgb24.ref.png | Bin 1797 -> 1763 bytes + test/reference/fill-xlib.ref.png | Bin 0 -> 1458 bytes + test/reference/filter-bilinear-extents.ref.png | Bin 0 -> 1210 bytes + test/reference/font-matrix-translation.ref.png | Bin 0 -> 865 bytes + test/reference/ft-show-glyphs-positioning.ref.png | Bin 0 -> 3243 bytes + test/reference/ft-show-glyphs-table.ref.png | Bin 0 -> 9975 bytes + .../reference/ft-text-vertical-layout-type1.ref.png | Bin 0 -> 3052 bytes + .../reference/ft-text-vertical-layout-type3.ref.png | Bin 0 -> 3609 bytes + test/reference/glyph-cache-pressure.ref.png | Bin 0 -> 2858 bytes + test/reference/group-unaligned.ref.png | Bin 0 -> 475 bytes + test/reference/halo-transform.ref.png | Bin 0 -> 15265 bytes + test/reference/halo.ref.png | Bin 0 -> 8631 bytes + test/reference/hatchings.ref.png | Bin 0 -> 90698 bytes + test/reference/horizontal-clip.ref.png | Bin 0 -> 113 bytes + test/reference/huge-linear.ref.png | Bin 0 -> 1636 bytes + test/reference/infinite-join.ref.png | Bin 0 -> 164 bytes + test/reference/inverse-text.ref.png | Bin 0 -> 2162 bytes + test/reference/inverted-clip.argb32.ref.png | Bin 0 -> 1390 bytes + test/reference/inverted-clip.rgb24.ref.png | Bin 1323 -> 1274 bytes + test/reference/joins-loop.ref.png | Bin 0 -> 4333 bytes + test/reference/joins-retrace.ref.png | Bin 4900 -> 4687 bytes + test/reference/joins-star.ref.png | Bin 0 -> 4015 bytes + test/reference/large-twin-antialias-mixed.ref.png | Bin 0 -> 16494 bytes + test/reference/leaky-dashed-stroke.ref.png | Bin 0 -> 9286 bytes + test/reference/leaky-polygon.ref.png | Bin 0 -> 337 bytes + .../line-width-large-overlap-rotated.ref.png | Bin 0 -> 415 bytes + test/reference/line-width-overlap-rotated.ref.png | Bin 0 -> 688 bytes + test/reference/line-width-scale.ref.png | Bin 0 -> 5721 bytes + test/reference/line-width-tolerance.ref.png | Bin 0 -> 168 bytes + test/reference/line-width.ref.png | Bin 0 -> 178 bytes + test/reference/linear-gradient-reflect.ref.png | Bin 0 -> 185 bytes + test/reference/linear-gradient-subset.ref.png | Bin 0 -> 813 bytes + test/reference/linear-gradient.ref.png | Bin 0 -> 959 bytes + test/reference/long-dashed-lines.ref.png | Bin 0 -> 2548 bytes + test/reference/map-all-to-xlib.ref.png | Bin 0 -> 86 bytes + test/reference/map-bit-to-xlib.ref.png | Bin 0 -> 103 bytes + test/reference/mask-alpha.argb32.ref.png | Bin 0 -> 629 bytes + test/reference/mask-alpha.ref.png | Bin 642 -> 0 bytes + test/reference/mask-alpha.rgb24.ref.png | Bin 0 -> 595 bytes + test/reference/mask-transformed-image.ref.png | Bin 0 -> 3812 bytes + test/reference/mask-transformed-similar.ref.png | Bin 0 -> 3812 bytes + test/reference/mask-transformed-xlib.ref.png | Bin 0 -> 3809 bytes + test/reference/mask.argb32.ref.png | Bin 8681 -> 8530 bytes + test/reference/mask.rgb24.ref.png | Bin 7215 -> 7160 bytes + test/reference/miter-precision.ref.png | Bin 0 -> 824 bytes + test/reference/operator-clear.argb32.ref.png | Bin 1067 -> 1061 bytes + test/reference/operator-clear.rgb24.ref.png | Bin 940 -> 939 bytes + test/reference/operator-source.argb32.ref.png | Bin 5626 -> 5620 bytes + test/reference/operator-source.rgb24.ref.png | Bin 4026 -> 4006 bytes + test/reference/over-above-source.argb32.ref.png | Bin 557 -> 533 bytes + test/reference/over-above-source.rgb24.ref.png | Bin 459 -> 452 bytes + test/reference/over-around-source.argb32.ref.png | Bin 633 -> 604 bytes + test/reference/over-around-source.rgb24.ref.png | Bin 504 -> 489 bytes + test/reference/over-below-source.argb32.ref.png | Bin 447 -> 440 bytes + test/reference/over-below-source.rgb24.ref.png | Bin 389 -> 376 bytes + test/reference/over-between-source.argb32.ref.png | Bin 607 -> 572 bytes + test/reference/over-between-source.rgb24.ref.png | Bin 482 -> 457 bytes + test/reference/overlapping-dash-caps.ref.png | Bin 0 -> 3952 bytes + test/reference/paint-with-alpha-clip-mask.ref.png | Bin 0 -> 335 bytes + test/reference/partial-clip-text-bottom.ref.png | Bin 0 -> 261 bytes + test/reference/partial-clip-text-left.ref.png | Bin 0 -> 301 bytes + test/reference/partial-clip-text-right.ref.png | Bin 0 -> 155 bytes + test/reference/partial-clip-text-top.ref.png | Bin 0 -> 181 bytes + test/reference/path-append.ref.png | Bin 0 -> 6338 bytes + test/reference/path-stroke-twice.ref.png | Bin 0 -> 240 bytes + test/reference/pthread-show-text.ref.png | Bin 0 -> 30199 bytes + test/reference/push-group-color.ref.png | Bin 0 -> 3002 bytes + test/reference/push-group.argb32.ref.png | Bin 3116 -> 3123 bytes + test/reference/push-group.rgb24.ref.png | Bin 2929 -> 2951 bytes + test/reference/random-clip.ref.png | Bin 0 -> 525010 bytes + .../random-intersections-curves-eo.ref.png | Bin 0 -> 244632 bytes + .../random-intersections-curves-nz.ref.png | Bin 0 -> 264413 bytes + test/reference/random-intersections-eo.ref.png | Bin 0 -> 135555 bytes + test/reference/random-intersections-nonzero.ref.png | Bin 0 -> 141737 bytes + test/reference/record-fill-alpha.ref.png | Bin 0 -> 2754 bytes + test/reference/record-paint-alpha-clip-mask.ref.png | Bin 0 -> 335 bytes + test/reference/record-paint-alpha-clip.ref.png | Bin 0 -> 290 bytes + test/reference/record-select-font-face.ref.png | Bin 0 -> 2250 bytes + test/reference/record-text-transform.ref.png | Bin 5281 -> 5579 bytes + test/reference/record1414x-fill-alpha.ref.png | Bin 0 -> 4124 bytes + .../record1414x-paint-alpha-clip-mask.ref.png | Bin 0 -> 460 bytes + test/reference/record1414x-paint-alpha-clip.ref.png | Bin 0 -> 378 bytes + .../record1414x-paint-alpha-solid-clip.ref.png | Bin 0 -> 317 bytes + test/reference/record1414x-paint-alpha.ref.png | Bin 0 -> 265 bytes + test/reference/record1414x-paint.ref.png | Bin 0 -> 95 bytes + test/reference/record1414x-select-font-face.ref.png | Bin 0 -> 3177 bytes + .../reference/record1414x-self-intersecting.ref.png | Bin 0 -> 385 bytes + test/reference/record1414x-text-transform.ref.png | Bin 8365 -> 8713 bytes + test/reference/record2x-fill-alpha.ref.png | Bin 0 -> 5756 bytes + .../record2x-paint-alpha-clip-mask.ref.png | Bin 0 -> 483 bytes + test/reference/record2x-paint-alpha-clip.ref.png | Bin 0 -> 322 bytes + .../record2x-paint-alpha-solid-clip.ref.png | Bin 0 -> 281 bytes + test/reference/record2x-paint-alpha.ref.png | Bin 0 -> 291 bytes + test/reference/record2x-paint.ref.png | Bin 0 -> 98 bytes + test/reference/record2x-select-font-face.ref.png | Bin 0 -> 4407 bytes + test/reference/record2x-self-intersecting.ref.png | Bin 0 -> 171 bytes + test/reference/record2x-text-transform.ref.png | Bin 13072 -> 13476 bytes + test/reference/record90-fill-alpha.ref.png | Bin 0 -> 2656 bytes + .../record90-paint-alpha-clip-mask.ref.png | Bin 0 -> 317 bytes + test/reference/record90-paint-alpha-clip.ref.png | Bin 0 -> 306 bytes + .../record90-paint-alpha-solid-clip.ref.png | Bin 0 -> 293 bytes + test/reference/record90-paint-alpha.ref.png | Bin 0 -> 105 bytes + test/reference/record90-paint.ref.png | Bin 0 -> 93 bytes + test/reference/record90-select-font-face.ref.png | Bin 0 -> 2272 bytes + test/reference/record90-self-intersecting.ref.png | Bin 244 -> 240 bytes + test/reference/record90-text-transform.ref.png | Bin 5481 -> 5811 bytes + test/reference/recordflip-fill-alpha.ref.png | Bin 2864 -> 2803 bytes + .../recordflip-paint-alpha-clip-mask.ref.png | Bin 372 -> 351 bytes + .../recording-surface-extend-none.argb32.ref.png | Bin 0 -> 3670 bytes + .../reference/recording-surface-extend-none.ref.png | Bin 3153 -> 0 bytes + .../recording-surface-extend-none.rgb24.ref.png | Bin 0 -> 3741 bytes + .../recording-surface-extend-pad.argb32.ref.png | Bin 0 -> 12932 bytes + test/reference/recording-surface-extend-pad.ref.png | Bin 11200 -> 0 bytes + .../recording-surface-extend-pad.rgb24.ref.png | Bin 0 -> 13581 bytes + .../recording-surface-extend-reflect.argb32.ref.png | Bin 0 -> 28910 bytes + .../recording-surface-extend-reflect.ref.png | Bin 23967 -> 0 bytes + .../recording-surface-extend-reflect.rgb24.ref.png | Bin 0 -> 25588 bytes + .../recording-surface-extend-repeat.argb32.ref.png | Bin 0 -> 29648 bytes + .../recording-surface-extend-repeat.ref.png | Bin 24091 -> 0 bytes + .../recording-surface-extend-repeat.rgb24.ref.png | Bin 0 -> 25337 bytes + .../reference/recording-surface-over.argb32.ref.png | Bin 0 -> 3670 bytes + test/reference/recording-surface-over.ref.png | Bin 3153 -> 0 bytes + test/reference/recording-surface-over.rgb24.ref.png | Bin 0 -> 3741 bytes + .../recording-surface-source.argb32.ref.png | Bin 0 -> 3688 bytes + test/reference/recording-surface-source.ref.png | Bin 3153 -> 0 bytes + .../recording-surface-source.rgb24.ref.png | Bin 0 -> 3738 bytes + test/reference/rectilinear-miter-limit.ref.png | Bin 0 -> 145 bytes + .../rotate-clip-image-surface-paint.ref.png | Bin 0 -> 332 bytes + test/reference/rotated-clip.ref.png | Bin 0 -> 3834 bytes + test/reference/rounded-rectangle-fill.ref.png | Bin 0 -> 872 bytes + test/reference/rounded-rectangle-stroke.ref.png | Bin 833 -> 872 bytes + test/reference/scale-offset-image.ref.png | Bin 0 -> 9748 bytes + test/reference/scale-offset-similar.ref.png | Bin 0 -> 9779 bytes + test/reference/scale-offset-xlib.ref.png | Bin 0 -> 9120 bytes + test/reference/select-font-face.ref.png | Bin 0 -> 2250 bytes + test/reference/self-copy.ref.png | Bin 0 -> 257 bytes + test/reference/shape-general-convex.ref.png | Bin 0 -> 2539 bytes + test/reference/shape-sierpinski.ref.png | Bin 0 -> 54850 bytes + test/reference/show-glyphs-advance.ref.png | Bin 0 -> 1394 bytes + test/reference/show-text-current-point.ref.png | Bin 0 -> 2151 bytes + test/reference/simple-edge.xfail.png | Bin 0 -> 2124 bytes + test/reference/skew-extreme.ref.png | Bin 0 -> 944 bytes + test/reference/smask-fill.ref.png | Bin 0 -> 1185 bytes + test/reference/smask-image-mask.ref.png | Bin 0 -> 619 bytes + test/reference/smask-mask.ref.png | Bin 0 -> 2353 bytes + test/reference/smask-paint.ref.png | Bin 0 -> 2469 bytes + test/reference/smask-stroke.ref.png | Bin 0 -> 1701 bytes + test/reference/smask-text.ref.png | Bin 0 -> 1661 bytes + test/reference/smask.ref.png | Bin 0 -> 3422 bytes + test/reference/spline-decomposition.ref.png | Bin 0 -> 19578 bytes + test/reference/stride-12-xlib.ref.png | Bin 0 -> 81121 bytes + test/reference/stroke-clipped.ref.png | Bin 0 -> 5845 bytes + test/reference/stroke-image.ref.png | Bin 0 -> 1455 bytes + test/reference/stroke-pattern.ref.png | Bin 0 -> 1514 bytes + test/reference/stroke-xlib.ref.png | Bin 0 -> 1467 bytes + test/reference/subsurface-scale.ref.png | Bin 0 -> 5921 bytes + test/reference/subsurface.ref.png | Bin 0 -> 1811 bytes + .../surface-pattern-operator.argb32.ref.png | Bin 5107 -> 5087 bytes + .../surface-pattern-operator.rgb24.ref.png | Bin 1926 -> 1919 bytes + test/reference/surface-pattern-scale-down.ref.png | Bin 0 -> 1326 bytes + test/reference/surface-pattern-scale-up.ref.png | Bin 0 -> 4020 bytes + test/reference/surface-pattern.ref.png | Bin 0 -> 11088 bytes + test/reference/text-antialias-gray.ref.png | Bin 0 -> 966 bytes + test/reference/text-antialias-subpixel-bgr.ref.png | Bin 0 -> 1124 bytes + test/reference/text-antialias-subpixel-rgb.ref.png | Bin 0 -> 1109 bytes + test/reference/text-antialias-subpixel-vbgr.ref.png | Bin 0 -> 1205 bytes + test/reference/text-antialias-subpixel-vrgb.ref.png | Bin 0 -> 1180 bytes + test/reference/text-antialias-subpixel.ref.png | Bin 0 -> 1109 bytes + test/reference/text-glyph-range.ref.png | Bin 0 -> 1928 bytes + test/reference/text-rotate.ref.png | Bin 0 -> 16356 bytes + test/reference/tiger.ref.png | Bin 0 -> 94477 bytes + test/reference/tighten-bounds.argb32.ref.png | Bin 0 -> 8997 bytes + test/reference/tighten-bounds.ref.png | Bin 9443 -> 0 bytes + test/reference/tighten-bounds.rgb24.ref.png | Bin 0 -> 8450 bytes + test/reference/transforms.ref.png | Bin 0 -> 348 bytes + test/reference/trap-clip.argb32.ref.png | Bin 5972 -> 5822 bytes + test/reference/trap-clip.rgb24.ref.png | Bin 5462 -> 5422 bytes + test/reference/twin-antialias-gray.ref.png | Bin 0 -> 3536 bytes + test/reference/twin-antialias-mixed.ref.png | Bin 0 -> 2392 bytes + test/reference/twin-antialias-none.ref.png | Bin 0 -> 688 bytes + test/reference/twin-antialias-subpixel.ref.png | Bin 0 -> 3536 bytes + test/reference/twin.ref.png | Bin 0 -> 3536 bytes + test/reference/unbounded-operator.argb32.ref.png | Bin 2755 -> 2744 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 1328 -> 1303 bytes + test/reference/user-font-proxy.ref.png | Bin 0 -> 16981 bytes + test/reference/user-font-rescale.ref.png | Bin 0 -> 14883 bytes + test/reference/user-font.ref.png | Bin 0 -> 5875 bytes + test/reference/world-map-fill.ref.png | Bin 0 -> 57407 bytes + test/reference/world-map-stroke.ref.png | Bin 0 -> 65152 bytes + test/reference/world-map.ref.png | Bin 0 -> 70463 bytes + 297 files changed, 0 insertions(+), 0 deletions(-) + +commit 950f1e7103a3b4f3405fbb3ee2844ed24b902834 +Author: Chris Wilson +Date: Thu Oct 2 07:52:05 2014 +0100 + + tor: Enable analytic processing for starting rows + + If all the edges start at the very beginning of the whole row, we can + merge them and include check for intersections/endings during the row. + This allows us to enable fast analytic processing for even the very + first row on pixel aligned vertices. + + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 27 +++++++++++++++++---------- + 1 file changed, 17 insertions(+), 10 deletions(-) + +commit 1a32ce83e4c1f3ca22a3f137b0126003a0e3d6e7 +Author: Chris Wilson +Date: Wed Oct 1 12:59:29 2014 +0100 + + tor: Perform analytic coverage over the pixel not sample points + + We use two different methods within tor to compute the coverage. + The first is that we iterate over every sample point within the pixel + and see if it is covered. The second is that we look at a whole pixel + and analytically compute the coverage inside (if we have no + intersections within that row). + + One side effect of + + commit 03c3d4b7c159a3004071522bac2461e553fec211 + Author: Chris Wilson + Date: Tue Sep 30 08:44:43 2014 +0100 + + tor: Fix loss of precision from projection onto sample grid + + was to compute our X coordinates for the sample locations (offset by + half a subrow) and that in order to compute the analytical pixel + coverage correctly, we therefore need to backstep by half the subrow to + the pixel boundary. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 67 ++++++++++++++++++++++++++++++------------ + 1 file changed, 49 insertions(+), 18 deletions(-) + +commit 79c8b14b9fd8716d47fab4436b34d26b0135e9d7 +Author: Chris Wilson +Date: Thu Oct 2 00:20:52 2014 +0100 + + test/simple: Tighten sanity checks in reference image generator + + Signed-off-by: Chris Wilson + + test/simple.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 50b41e214533ea5fd3b64128306b6cb94d353145 +Author: Chris Wilson +Date: Wed Oct 1 22:50:10 2014 +0100 + + test: Add a simple rasteriser to check fidelity of edge rendering + + In order to check the behaviour of the analytic rasteriser inside tor, + let's compare it against a very simple rasteriser that uses a rectiliner + 256x256 sample grid. + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/reference/simple-edge.ref.png | Bin 0 -> 1922 bytes + test/simple.c | 347 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 348 insertions(+) + +commit 2144e7f48ba49d5bdb4a0dd1fb672be9d313fb65 +Author: Chris Wilson +Date: Tue Sep 30 16:18:34 2014 +0100 + + test: Fix coverage-abutting + + Using CAIRO_OPERATOR_OVER in case causes oversampling of the coincident + edges, to measure coverage we should only use ADD. :| + + Signed-off-by: Chris Wilson + + test/coverage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0c42d5c176b27725ac8ab293c3e941be64f51613 +Author: Chris Wilson +Date: Tue Sep 30 16:14:57 2014 +0100 + + test: Add another coverage example demonstrating the seams in tor + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 + Signed-off-by: Chris Wilson + + test/coverage.c | 53 +++++++++++++++++++++++++++++++ + test/reference/coverage-abutting.ref.png | Bin 0 -> 777 bytes + 2 files changed, 53 insertions(+) + +commit 95e147bfa05a122541645f32be52cf1902c3a4b2 +Author: Chris Wilson +Date: Tue Sep 30 14:30:45 2014 +0100 + + test: Explicitly flip the reference image for recordflip + + Signed-off-by: Chris Wilson + + test/recordflip.c | 58 +++++++++++++++++++-- + test/reference/recordflip-fill-alpha.ref.png | Bin 2790 -> 2864 bytes + .../recordflip-paint-alpha-clip-mask.ref.png | Bin 340 -> 372 bytes + test/reference/recordflip-paint-alpha-clip.ref.png | Bin 291 -> 316 bytes + .../recordflip-paint-alpha-solid-clip.ref.png | Bin 280 -> 291 bytes + test/reference/recordflip-paint-alpha.ref.png | Bin 242 -> 257 bytes + test/reference/recordflip-select-font-face.ref.png | Bin 2229 -> 2240 bytes + test/reference/recordflip-text-transform.ref.png | Bin 5606 -> 5609 bytes + 8 files changed, 55 insertions(+), 3 deletions(-) + +commit ccd48b346436a80629e4f9a07f2ba7ffbfd802f1 +Author: Chris Wilson +Date: Tue Sep 30 14:06:21 2014 +0100 + + test: Remove more duplicated reference images + + Signed-off-by: Chris Wilson + + test/reference/a8-clear.argb32.ref.png | Bin 269 -> 0 bytes + test/reference/a8-clear.rgb24.ref.png | Bin 269 -> 0 bytes + test/reference/aliasing.argb32.ref.png | Bin 104193 -> 0 bytes + test/reference/aliasing.rgb24.ref.png | Bin 104193 -> 0 bytes + test/reference/arc-direction.argb32.ref.png | Bin 6473 -> 0 bytes + test/reference/arc-direction.rgb24.ref.png | Bin 6473 -> 0 bytes + test/reference/big-line.argb32.ref.png | Bin 977 -> 0 bytes + test/reference/big-line.rgb24.ref.png | Bin 977 -> 0 bytes + test/reference/bilevel-xlib.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-xlib.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/bug-40410.argb32.ref.png | Bin 429 -> 0 bytes + test/reference/bug-40410.rgb24.ref.png | Bin 429 -> 0 bytes + test/reference/bug-bo-ricotz.argb32.ref.png | Bin 2128 -> 0 bytes + test/reference/bug-bo-ricotz.rgb24.ref.png | Bin 2128 -> 0 bytes + test/reference/bug-extents.argb32.ref.png | Bin 9264 -> 0 bytes + test/reference/bug-extents.rgb24.ref.png | Bin 9264 -> 0 bytes + test/reference/bug-spline.argb32.ref.png | Bin 5490 -> 0 bytes + test/reference/bug-spline.rgb24.ref.png | Bin 5490 -> 0 bytes + test/reference/caps-joins-alpha.argb32.ref.png | Bin 2482 -> 0 bytes + test/reference/caps-joins-alpha.rgb24.ref.png | Bin 2482 -> 0 bytes + test/reference/caps-joins-curve.argb32.ref.png | Bin 5972 -> 0 bytes + test/reference/caps-joins-curve.rgb24.ref.png | Bin 5972 -> 0 bytes + test/reference/caps-joins.argb32.ref.png | Bin 2893 -> 0 bytes + test/reference/caps-joins.rgb24.ref.png | Bin 2893 -> 0 bytes + test/reference/caps-sub-paths.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/caps-sub-paths.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/caps-tails-curve.argb32.ref.png | Bin 54409 -> 0 bytes + test/reference/caps-tails-curve.rgb24.ref.png | Bin 54409 -> 0 bytes + test/reference/caps.argb32.ref.png | Bin 2115 -> 0 bytes + test/reference/caps.rgb24.ref.png | Bin 2115 -> 0 bytes + test/reference/clear-source.argb32.ref.png | Bin 882 -> 0 bytes + test/reference/clear-source.rgb24.ref.png | Bin 882 -> 0 bytes + test/reference/clip-disjoint-hatching.argb32.ref.png | Bin 7918 -> 0 bytes + test/reference/clip-disjoint-hatching.rgb24.ref.png | Bin 7918 -> 0 bytes + test/reference/clip-disjoint-quad.argb32.ref.png | Bin 1642 -> 0 bytes + test/reference/clip-disjoint-quad.rgb24.ref.png | Bin 1642 -> 0 bytes + test/reference/clip-disjoint.argb32.ref.png | Bin 5464 -> 0 bytes + test/reference/clip-disjoint.rgb24.ref.png | Bin 5464 -> 0 bytes + test/reference/clip-fill.argb32.ref.png | Bin 1064 -> 0 bytes + test/reference/clip-fill.rgb24.ref.png | Bin 1064 -> 0 bytes + .../reference/clip-group-shapes-circles.argb32.ref.png | Bin 1533 -> 0 bytes + test/reference/clip-group-shapes-circles.rgb24.ref.png | Bin 1533 -> 0 bytes + test/reference/clip-image.argb32.ref.png | Bin 2677 -> 0 bytes + test/reference/clip-image.rgb24.ref.png | Bin 2677 -> 0 bytes + test/reference/clip-intersect.argb32.ref.png | Bin 223 -> 0 bytes + test/reference/clip-intersect.rgb24.ref.png | Bin 223 -> 0 bytes + test/reference/clip-mixed-antialias.argb32.ref.png | Bin 1084 -> 0 bytes + test/reference/clip-mixed-antialias.rgb24.ref.png | Bin 1084 -> 0 bytes + test/reference/clip-operator.ref.png | Bin 8257 -> 0 bytes + test/reference/clip-polygons.argb32.ref.png | Bin 1352 -> 0 bytes + test/reference/clip-polygons.rgb24.ref.png | Bin 1352 -> 0 bytes + test/reference/clip-push-group.argb32.ref.png | Bin 164 -> 0 bytes + test/reference/clip-push-group.rgb24.ref.png | Bin 164 -> 0 bytes + test/reference/clip-shape.argb32.ref.png | Bin 2923 -> 0 bytes + test/reference/clip-shape.rgb24.ref.png | Bin 2923 -> 0 bytes + test/reference/clip-stroke.argb32.ref.png | Bin 1551 -> 0 bytes + test/reference/clip-stroke.rgb24.ref.png | Bin 1551 -> 0 bytes + test/reference/clip-text.argb32.ref.png | Bin 918 -> 0 bytes + test/reference/clip-text.rgb24.ref.png | Bin 918 -> 0 bytes + test/reference/clip-xlib.argb32.ref.png | Bin 2686 -> 0 bytes + test/reference/clip-xlib.rgb24.ref.png | Bin 2686 -> 0 bytes + test/reference/clipped-group.argb32.ref.png | Bin 315 -> 0 bytes + test/reference/clipped-group.rgb24.ref.png | Bin 315 -> 0 bytes + test/reference/close-path.argb32.ref.png | Bin 294 -> 0 bytes + test/reference/close-path.rgb24.ref.png | Bin 294 -> 0 bytes + test/reference/copy-path.argb32.ref.png | Bin 616 -> 0 bytes + test/reference/copy-path.rgb24.ref.png | Bin 616 -> 0 bytes + test/reference/create-from-png.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/create-from-png.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/culled-glyphs.argb32.ref.png | Bin 440 -> 0 bytes + test/reference/culled-glyphs.rgb24.ref.png | Bin 440 -> 0 bytes + test/reference/dash-curve.argb32.ref.png | Bin 41069 -> 0 bytes + test/reference/dash-curve.rgb24.ref.png | Bin 41069 -> 0 bytes + test/reference/dash-infinite-loop.argb32.ref.png | Bin 877 -> 0 bytes + test/reference/dash-infinite-loop.rgb24.ref.png | Bin 877 -> 0 bytes + test/reference/dash-offset-negative.argb32.ref.png | Bin 129 -> 0 bytes + test/reference/dash-offset-negative.rgb24.ref.png | Bin 129 -> 0 bytes + test/reference/dash-state.argb32.ref.png | Bin 8027 -> 0 bytes + test/reference/dash-state.rgb24.ref.png | Bin 8027 -> 0 bytes + test/reference/degenerate-arc.argb32.ref.png | Bin 646 -> 0 bytes + test/reference/degenerate-arc.rgb24.ref.png | Bin 646 -> 0 bytes + test/reference/degenerate-dash.argb32.ref.png | Bin 1908 -> 0 bytes + test/reference/degenerate-dash.rgb24.ref.png | Bin 1908 -> 0 bytes + .../degenerate-linear-gradient.argb32.ref.png | Bin 336 -> 0 bytes + .../reference/degenerate-linear-gradient.rgb24.ref.png | Bin 336 -> 0 bytes + test/reference/degenerate-pen.argb32.ref.png | Bin 1019 -> 0 bytes + test/reference/degenerate-pen.rgb24.ref.png | Bin 1019 -> 0 bytes + test/reference/extend-pad-border.argb32.ref.png | Bin 495 -> 0 bytes + test/reference/extend-pad-border.rgb24.ref.png | Bin 495 -> 0 bytes + test/reference/fill-alpha-pattern.argb32.ref.png | Bin 3489 -> 0 bytes + test/reference/fill-alpha-pattern.rgb24.ref.png | Bin 3489 -> 0 bytes + test/reference/fill-alpha.argb32.ref.png | Bin 2815 -> 0 bytes + test/reference/fill-alpha.rgb24.ref.png | Bin 2815 -> 0 bytes + .../reference/fill-and-stroke-alpha-add.argb32.ref.png | Bin 558 -> 0 bytes + test/reference/fill-and-stroke-alpha-add.rgb24.ref.png | Bin 558 -> 0 bytes + test/reference/fill-and-stroke-alpha.argb32.ref.png | Bin 513 -> 0 bytes + test/reference/fill-and-stroke-alpha.rgb24.ref.png | Bin 513 -> 0 bytes + test/reference/fill-image.argb32.ref.png | Bin 1315 -> 0 bytes + test/reference/fill-image.rgb24.ref.png | Bin 1315 -> 0 bytes + test/reference/fill-xlib.argb32.ref.png | Bin 1458 -> 0 bytes + test/reference/fill-xlib.rgb24.ref.png | Bin 1458 -> 0 bytes + test/reference/filter-bilinear-extents.argb32.ref.png | Bin 1210 -> 0 bytes + test/reference/filter-bilinear-extents.rgb24.ref.png | Bin 1210 -> 0 bytes + test/reference/font-matrix-translation.argb32.ref.png | Bin 865 -> 0 bytes + test/reference/font-matrix-translation.rgb24.ref.png | Bin 865 -> 0 bytes + .../ft-show-glyphs-positioning.argb32.ref.png | Bin 3243 -> 0 bytes + .../reference/ft-show-glyphs-positioning.rgb24.ref.png | Bin 3243 -> 0 bytes + test/reference/ft-show-glyphs-table.argb32.ref.png | Bin 9975 -> 0 bytes + test/reference/ft-show-glyphs-table.rgb24.ref.png | Bin 9975 -> 0 bytes + .../ft-text-vertical-layout-type1.argb32.ref.png | Bin 3075 -> 0 bytes + .../ft-text-vertical-layout-type1.rgb24.ref.png | Bin 3075 -> 0 bytes + .../ft-text-vertical-layout-type3.argb32.ref.png | Bin 3609 -> 0 bytes + .../ft-text-vertical-layout-type3.rgb24.ref.png | Bin 3609 -> 0 bytes + test/reference/glyph-cache-pressure.argb32.ref.png | Bin 2858 -> 0 bytes + test/reference/glyph-cache-pressure.rgb24.ref.png | Bin 2858 -> 0 bytes + test/reference/group-unaligned.argb32.ref.png | Bin 494 -> 0 bytes + test/reference/group-unaligned.rgb24.ref.png | Bin 494 -> 0 bytes + test/reference/halo-transform.argb32.ref.png | Bin 15234 -> 0 bytes + test/reference/halo-transform.rgb24.ref.png | Bin 15234 -> 0 bytes + test/reference/halo.argb32.ref.png | Bin 8621 -> 0 bytes + test/reference/halo.rgb24.ref.png | Bin 8621 -> 0 bytes + test/reference/hatchings.argb32.ref.png | Bin 90640 -> 0 bytes + test/reference/hatchings.rgb24.ref.png | Bin 90640 -> 0 bytes + test/reference/horizontal-clip.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/horizontal-clip.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/huge-linear.argb32.ref.png | Bin 1600 -> 0 bytes + test/reference/huge-linear.rgb24.ref.png | Bin 1600 -> 0 bytes + test/reference/infinite-join.argb32.ref.png | Bin 164 -> 0 bytes + test/reference/infinite-join.rgb24.ref.png | Bin 164 -> 0 bytes + test/reference/joins-loop.argb32.ref.png | Bin 4492 -> 0 bytes + test/reference/joins-loop.rgb24.ref.png | Bin 4492 -> 0 bytes + test/reference/joins-star.argb32.ref.png | Bin 4914 -> 0 bytes + test/reference/joins-star.rgb24.ref.png | Bin 4914 -> 0 bytes + .../large-twin-antialias-mixed.argb32.ref.png | Bin 16442 -> 0 bytes + .../reference/large-twin-antialias-mixed.rgb24.ref.png | Bin 16442 -> 0 bytes + test/reference/leaky-dashed-stroke.argb32.ref.png | Bin 9286 -> 0 bytes + test/reference/leaky-dashed-stroke.rgb24.ref.png | Bin 9286 -> 0 bytes + test/reference/leaky-polygon.argb32.ref.png | Bin 337 -> 0 bytes + test/reference/leaky-polygon.rgb24.ref.png | Bin 337 -> 0 bytes + .../line-width-large-overlap-rotated.argb32.ref.png | Bin 439 -> 0 bytes + .../line-width-large-overlap-rotated.rgb24.ref.png | Bin 439 -> 0 bytes + .../line-width-overlap-rotated.argb32.ref.png | Bin 722 -> 0 bytes + .../reference/line-width-overlap-rotated.rgb24.ref.png | Bin 722 -> 0 bytes + test/reference/line-width-scale.argb32.ref.png | Bin 5721 -> 0 bytes + test/reference/line-width-scale.rgb24.ref.png | Bin 5721 -> 0 bytes + test/reference/line-width-tolerance.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/line-width-tolerance.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/line-width.argb32.ref.png | Bin 178 -> 0 bytes + test/reference/line-width.rgb24.ref.png | Bin 178 -> 0 bytes + test/reference/linear-gradient-reflect.argb32.ref.png | Bin 185 -> 0 bytes + test/reference/linear-gradient-reflect.rgb24.ref.png | Bin 185 -> 0 bytes + test/reference/linear-gradient-subset.argb32.ref.png | Bin 813 -> 0 bytes + test/reference/linear-gradient-subset.rgb24.ref.png | Bin 813 -> 0 bytes + test/reference/linear-gradient.argb32.ref.png | Bin 959 -> 0 bytes + test/reference/linear-gradient.rgb24.ref.png | Bin 959 -> 0 bytes + test/reference/long-dashed-lines.argb32.ref.png | Bin 2548 -> 0 bytes + test/reference/long-dashed-lines.rgb24.ref.png | Bin 2548 -> 0 bytes + test/reference/map-all-to-xlib.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-xlib.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/map-bit-to-xlib.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-xlib.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/mask-transformed-image.argb32.ref.png | Bin 3812 -> 0 bytes + test/reference/mask-transformed-image.rgb24.ref.png | Bin 3812 -> 0 bytes + test/reference/mask-transformed-similar.argb32.ref.png | Bin 3812 -> 0 bytes + test/reference/mask-transformed-similar.rgb24.ref.png | Bin 3812 -> 0 bytes + test/reference/mask-transformed-xlib.argb32.ref.png | Bin 3809 -> 0 bytes + test/reference/mask-transformed-xlib.rgb24.ref.png | Bin 3809 -> 0 bytes + test/reference/miter-precision.argb32.ref.png | Bin 1030 -> 0 bytes + test/reference/miter-precision.rgb24.ref.png | Bin 1030 -> 0 bytes + test/reference/overlapping-dash-caps.argb32.ref.png | Bin 3952 -> 0 bytes + test/reference/overlapping-dash-caps.rgb24.ref.png | Bin 3952 -> 0 bytes + .../paint-with-alpha-clip-mask.argb32.ref.png | Bin 351 -> 0 bytes + .../reference/paint-with-alpha-clip-mask.rgb24.ref.png | Bin 351 -> 0 bytes + test/reference/partial-clip-text-bottom.argb32.ref.png | Bin 261 -> 0 bytes + test/reference/partial-clip-text-bottom.rgb24.ref.png | Bin 261 -> 0 bytes + test/reference/partial-clip-text-left.argb32.ref.png | Bin 301 -> 0 bytes + test/reference/partial-clip-text-left.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/partial-clip-text-right.argb32.ref.png | Bin 155 -> 0 bytes + test/reference/partial-clip-text-right.rgb24.ref.png | Bin 155 -> 0 bytes + test/reference/partial-clip-text-top.argb32.ref.png | Bin 181 -> 0 bytes + test/reference/partial-clip-text-top.rgb24.ref.png | Bin 181 -> 0 bytes + test/reference/path-append.argb32.ref.png | Bin 6309 -> 0 bytes + test/reference/path-append.rgb24.ref.png | Bin 6309 -> 0 bytes + test/reference/path-stroke-twice.argb32.ref.png | Bin 240 -> 0 bytes + test/reference/path-stroke-twice.rgb24.ref.png | Bin 240 -> 0 bytes + test/reference/pthread-show-text.argb32.ref.png | Bin 30199 -> 0 bytes + test/reference/pthread-show-text.rgb24.ref.png | Bin 30199 -> 0 bytes + test/reference/push-group-color.argb32.ref.png | Bin 2976 -> 0 bytes + test/reference/push-group-color.rgb24.ref.png | Bin 2976 -> 0 bytes + test/reference/random-clip.argb32.ref.png | Bin 525469 -> 0 bytes + test/reference/random-clip.rgb24.ref.png | Bin 525469 -> 0 bytes + .../random-intersections-curves-eo.argb32.ref.png | Bin 244656 -> 0 bytes + .../random-intersections-curves-eo.rgb24.ref.png | Bin 244656 -> 0 bytes + .../random-intersections-curves-nz.argb32.ref.png | Bin 264449 -> 0 bytes + .../random-intersections-curves-nz.rgb24.ref.png | Bin 264449 -> 0 bytes + test/reference/random-intersections-eo.argb32.ref.png | Bin 135556 -> 0 bytes + test/reference/random-intersections-eo.rgb24.ref.png | Bin 135556 -> 0 bytes + .../random-intersections-nonzero.argb32.ref.png | Bin 141582 -> 0 bytes + .../random-intersections-nonzero.rgb24.ref.png | Bin 141582 -> 0 bytes + test/reference/record-fill-alpha.argb32.ref.png | Bin 2822 -> 0 bytes + test/reference/record-fill-alpha.rgb24.ref.png | Bin 2822 -> 0 bytes + .../record-paint-alpha-clip-mask.argb32.ref.png | Bin 321 -> 0 bytes + .../record-paint-alpha-clip-mask.rgb24.ref.png | Bin 321 -> 0 bytes + test/reference/record-paint-alpha-clip.argb32.ref.png | Bin 290 -> 0 bytes + test/reference/record-paint-alpha-clip.rgb24.ref.png | Bin 290 -> 0 bytes + test/reference/record-select-font-face.argb32.ref.png | Bin 2250 -> 0 bytes + test/reference/record-select-font-face.rgb24.ref.png | Bin 2250 -> 0 bytes + test/reference/record1414x-fill-alpha.argb32.ref.png | Bin 4244 -> 0 bytes + test/reference/record1414x-fill-alpha.rgb24.ref.png | Bin 4244 -> 0 bytes + .../record1414x-paint-alpha-clip-mask.argb32.ref.png | Bin 544 -> 0 bytes + .../record1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin 544 -> 0 bytes + .../record1414x-paint-alpha-clip.argb32.ref.png | Bin 378 -> 0 bytes + .../record1414x-paint-alpha-clip.rgb24.ref.png | Bin 378 -> 0 bytes + .../record1414x-paint-alpha-solid-clip.argb32.ref.png | Bin 317 -> 0 bytes + .../record1414x-paint-alpha-solid-clip.rgb24.ref.png | Bin 317 -> 0 bytes + test/reference/record1414x-paint-alpha.argb32.ref.png | Bin 265 -> 0 bytes + test/reference/record1414x-paint-alpha.rgb24.ref.png | Bin 265 -> 0 bytes + test/reference/record1414x-paint.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/record1414x-paint.rgb24.ref.png | Bin 95 -> 0 bytes + .../record1414x-select-font-face.argb32.ref.png | Bin 3177 -> 0 bytes + .../record1414x-select-font-face.rgb24.ref.png | Bin 3177 -> 0 bytes + .../record1414x-self-intersecting.argb32.ref.png | Bin 394 -> 0 bytes + .../record1414x-self-intersecting.rgb24.ref.png | Bin 394 -> 0 bytes + test/reference/record2x-fill-alpha.argb32.ref.png | Bin 6016 -> 0 bytes + test/reference/record2x-fill-alpha.rgb24.ref.png | Bin 6016 -> 0 bytes + .../record2x-paint-alpha-clip-mask.argb32.ref.png | Bin 543 -> 0 bytes + .../record2x-paint-alpha-clip-mask.rgb24.ref.png | Bin 543 -> 0 bytes + .../reference/record2x-paint-alpha-clip.argb32.ref.png | Bin 322 -> 0 bytes + test/reference/record2x-paint-alpha-clip.rgb24.ref.png | Bin 322 -> 0 bytes + .../record2x-paint-alpha-solid-clip.argb32.ref.png | Bin 281 -> 0 bytes + .../record2x-paint-alpha-solid-clip.rgb24.ref.png | Bin 281 -> 0 bytes + test/reference/record2x-paint-alpha.argb32.ref.png | Bin 291 -> 0 bytes + test/reference/record2x-paint-alpha.rgb24.ref.png | Bin 291 -> 0 bytes + test/reference/record2x-paint.argb32.ref.png | Bin 98 -> 0 bytes + test/reference/record2x-paint.rgb24.ref.png | Bin 98 -> 0 bytes + .../reference/record2x-select-font-face.argb32.ref.png | Bin 4407 -> 0 bytes + test/reference/record2x-select-font-face.rgb24.ref.png | Bin 4407 -> 0 bytes + .../record2x-self-intersecting.argb32.ref.png | Bin 171 -> 0 bytes + .../reference/record2x-self-intersecting.rgb24.ref.png | Bin 171 -> 0 bytes + test/reference/record90-fill-alpha.argb32.ref.png | Bin 2654 -> 0 bytes + test/reference/record90-fill-alpha.rgb24.ref.png | Bin 2654 -> 0 bytes + .../record90-paint-alpha-clip-mask.argb32.ref.png | Bin 317 -> 0 bytes + .../record90-paint-alpha-clip-mask.rgb24.ref.png | Bin 317 -> 0 bytes + .../reference/record90-paint-alpha-clip.argb32.ref.png | Bin 335 -> 0 bytes + test/reference/record90-paint-alpha-clip.rgb24.ref.png | Bin 335 -> 0 bytes + .../record90-paint-alpha-solid-clip.argb32.ref.png | Bin 293 -> 0 bytes + .../record90-paint-alpha-solid-clip.rgb24.ref.png | Bin 293 -> 0 bytes + test/reference/record90-paint-alpha.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/record90-paint-alpha.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/record90-paint.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/record90-paint.rgb24.ref.png | Bin 93 -> 0 bytes + .../reference/record90-select-font-face.argb32.ref.png | Bin 2272 -> 0 bytes + test/reference/record90-select-font-face.rgb24.ref.png | Bin 2272 -> 0 bytes + test/reference/rectilinear-miter-limit.argb32.ref.png | Bin 145 -> 0 bytes + test/reference/rectilinear-miter-limit.rgb24.ref.png | Bin 145 -> 0 bytes + .../rotate-clip-image-surface-paint.argb32.ref.png | Bin 331 -> 0 bytes + .../rotate-clip-image-surface-paint.rgb24.ref.png | Bin 331 -> 0 bytes + test/reference/rotated-clip.argb32.ref.png | Bin 3829 -> 0 bytes + test/reference/rotated-clip.rgb24.ref.png | Bin 3829 -> 0 bytes + test/reference/rounded-rectangle-fill.argb32.ref.png | Bin 787 -> 0 bytes + test/reference/rounded-rectangle-fill.rgb24.ref.png | Bin 787 -> 0 bytes + test/reference/scale-offset-image.argb32.ref.png | Bin 9748 -> 0 bytes + test/reference/scale-offset-image.rgb24.ref.png | Bin 9748 -> 0 bytes + test/reference/scale-offset-similar.argb32.ref.png | Bin 9779 -> 0 bytes + test/reference/scale-offset-similar.rgb24.ref.png | Bin 9779 -> 0 bytes + test/reference/scale-offset-xlib.argb32.ref.png | Bin 9120 -> 0 bytes + test/reference/scale-offset-xlib.rgb24.ref.png | Bin 9120 -> 0 bytes + test/reference/select-font-face.argb32.ref.png | Bin 2250 -> 0 bytes + test/reference/select-font-face.rgb24.ref.png | Bin 2250 -> 0 bytes + test/reference/self-copy.argb32.ref.png | Bin 257 -> 0 bytes + test/reference/self-copy.rgb24.ref.png | Bin 257 -> 0 bytes + test/reference/shape-general-convex.argb32.ref.png | Bin 2539 -> 0 bytes + test/reference/shape-general-convex.rgb24.ref.png | Bin 2539 -> 0 bytes + test/reference/shape-sierpinski.argb32.ref.png | Bin 54850 -> 0 bytes + test/reference/shape-sierpinski.rgb24.ref.png | Bin 54850 -> 0 bytes + test/reference/show-glyphs-advance.argb32.ref.png | Bin 1394 -> 0 bytes + test/reference/show-glyphs-advance.rgb24.ref.png | Bin 1394 -> 0 bytes + test/reference/show-text-current-point.argb32.ref.png | Bin 2151 -> 0 bytes + test/reference/show-text-current-point.rgb24.ref.png | Bin 2151 -> 0 bytes + test/reference/skew-extreme.argb32.ref.png | Bin 799 -> 0 bytes + test/reference/skew-extreme.rgb24.ref.png | Bin 799 -> 0 bytes + test/reference/smask-fill.argb32.ref.png | Bin 1196 -> 0 bytes + test/reference/smask-fill.rgb24.ref.png | Bin 1196 -> 0 bytes + test/reference/smask-image-mask.argb32.ref.png | Bin 619 -> 0 bytes + test/reference/smask-image-mask.rgb24.ref.png | Bin 619 -> 0 bytes + test/reference/smask-mask.argb32.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-mask.rgb24.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-paint.argb32.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-paint.rgb24.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-stroke.argb32.ref.png | Bin 1700 -> 0 bytes + test/reference/smask-stroke.rgb24.ref.png | Bin 1700 -> 0 bytes + test/reference/smask-text.argb32.ref.png | Bin 1661 -> 0 bytes + test/reference/smask-text.rgb24.ref.png | Bin 1661 -> 0 bytes + test/reference/smask.argb32.ref.png | Bin 3422 -> 0 bytes + test/reference/smask.rgb24.ref.png | Bin 3422 -> 0 bytes + test/reference/spline-decomposition.argb32.ref.png | Bin 19520 -> 0 bytes + test/reference/spline-decomposition.rgb24.ref.png | Bin 19520 -> 0 bytes + test/reference/stride-12-xlib.argb32.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-xlib.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/stroke-clipped.argb32.ref.png | Bin 5857 -> 0 bytes + test/reference/stroke-clipped.rgb24.ref.png | Bin 5857 -> 0 bytes + test/reference/stroke-image.argb32.ref.png | Bin 1424 -> 0 bytes + test/reference/stroke-image.rgb24.ref.png | Bin 1424 -> 0 bytes + test/reference/stroke-pattern.argb32.ref.png | Bin 1510 -> 0 bytes + test/reference/stroke-pattern.rgb24.ref.png | Bin 1510 -> 0 bytes + test/reference/stroke-xlib.argb32.ref.png | Bin 1467 -> 0 bytes + test/reference/stroke-xlib.rgb24.ref.png | Bin 1467 -> 0 bytes + test/reference/subsurface-scale.argb32.ref.png | Bin 5921 -> 0 bytes + test/reference/subsurface-scale.rgb24.ref.png | Bin 5921 -> 0 bytes + test/reference/subsurface.argb32.ref.png | Bin 1811 -> 0 bytes + test/reference/subsurface.rgb24.ref.png | Bin 1811 -> 0 bytes + .../surface-pattern-scale-down.argb32.ref.png | Bin 1326 -> 0 bytes + .../reference/surface-pattern-scale-down.rgb24.ref.png | Bin 1326 -> 0 bytes + test/reference/surface-pattern-scale-up.argb32.ref.png | Bin 4020 -> 0 bytes + test/reference/surface-pattern-scale-up.rgb24.ref.png | Bin 4020 -> 0 bytes + test/reference/surface-pattern.argb32.ref.png | Bin 11088 -> 0 bytes + test/reference/surface-pattern.rgb24.ref.png | Bin 11088 -> 0 bytes + test/reference/text-antialias-gray.argb32.ref.png | Bin 966 -> 0 bytes + test/reference/text-antialias-gray.rgb24.ref.png | Bin 966 -> 0 bytes + .../text-antialias-subpixel-bgr.argb32.ref.png | Bin 1005 -> 0 bytes + .../text-antialias-subpixel-bgr.rgb24.ref.png | Bin 1005 -> 0 bytes + .../text-antialias-subpixel-rgb.argb32.ref.png | Bin 1013 -> 0 bytes + .../text-antialias-subpixel-rgb.rgb24.ref.png | Bin 1013 -> 0 bytes + .../text-antialias-subpixel-vbgr.argb32.ref.png | Bin 985 -> 0 bytes + .../text-antialias-subpixel-vbgr.rgb24.ref.png | Bin 985 -> 0 bytes + .../text-antialias-subpixel-vrgb.argb32.ref.png | Bin 1009 -> 0 bytes + .../text-antialias-subpixel-vrgb.rgb24.ref.png | Bin 1009 -> 0 bytes + test/reference/text-antialias-subpixel.argb32.ref.png | Bin 1013 -> 0 bytes + test/reference/text-antialias-subpixel.rgb24.ref.png | Bin 1013 -> 0 bytes + test/reference/text-glyph-range.argb32.ref.png | Bin 1928 -> 0 bytes + test/reference/text-glyph-range.rgb24.ref.png | Bin 1928 -> 0 bytes + test/reference/text-rotate.argb32.ref.png | Bin 16307 -> 0 bytes + test/reference/text-rotate.rgb24.ref.png | Bin 16307 -> 0 bytes + test/reference/tiger.argb32.ref.png | Bin 94790 -> 0 bytes + test/reference/tiger.rgb24.ref.png | Bin 94790 -> 0 bytes + test/reference/transforms.argb32.ref.png | Bin 348 -> 0 bytes + test/reference/transforms.rgb24.ref.png | Bin 348 -> 0 bytes + test/reference/twin-antialias-gray.argb32.ref.png | Bin 3536 -> 0 bytes + test/reference/twin-antialias-gray.rgb24.ref.png | Bin 3536 -> 0 bytes + test/reference/twin-antialias-mixed.argb32.ref.png | Bin 2359 -> 0 bytes + test/reference/twin-antialias-mixed.rgb24.ref.png | Bin 2359 -> 0 bytes + test/reference/twin-antialias-none.argb32.ref.png | Bin 692 -> 0 bytes + test/reference/twin-antialias-none.rgb24.ref.png | Bin 692 -> 0 bytes + test/reference/twin-antialias-subpixel.argb32.ref.png | Bin 3536 -> 0 bytes + test/reference/twin-antialias-subpixel.rgb24.ref.png | Bin 3536 -> 0 bytes + test/reference/twin.argb32.ref.png | Bin 3536 -> 0 bytes + test/reference/twin.rgb24.ref.png | Bin 3536 -> 0 bytes + test/reference/user-font-proxy.argb32.ref.png | Bin 16981 -> 0 bytes + test/reference/user-font-proxy.rgb24.ref.png | Bin 16981 -> 0 bytes + test/reference/user-font-rescale.argb32.ref.png | Bin 14883 -> 0 bytes + test/reference/user-font-rescale.rgb24.ref.png | Bin 14883 -> 0 bytes + test/reference/user-font.argb32.ref.png | Bin 5889 -> 0 bytes + test/reference/user-font.rgb24.ref.png | Bin 5889 -> 0 bytes + test/reference/world-map-fill.argb32.ref.png | Bin 57407 -> 0 bytes + test/reference/world-map-fill.rgb24.ref.png | Bin 57407 -> 0 bytes + test/reference/world-map-stroke.argb32.ref.png | Bin 65152 -> 0 bytes + test/reference/world-map-stroke.rgb24.ref.png | Bin 65152 -> 0 bytes + test/reference/world-map.argb32.ref.png | Bin 70463 -> 0 bytes + test/reference/world-map.rgb24.ref.png | Bin 70463 -> 0 bytes + 359 files changed, 0 insertions(+), 0 deletions(-) + +commit 167561f2823767058e2be3a26131b5f820b35c35 +Author: Chris Wilson +Date: Tue Sep 30 10:22:41 2014 +0100 + + tor: Review full-row walker + + When updating the quorem between cells, we would lose the overflow + increment as it was only applied locally and not preserved by updating + the quorem. + + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 86 ++++++++------------- + test/reference/aliasing.argb32.ref.png | Bin 106073 -> 104193 bytes + test/reference/aliasing.rgb24.ref.png | Bin 106073 -> 104193 bytes + test/reference/arc-direction.argb32.ref.png | Bin 6491 -> 6473 bytes + test/reference/arc-direction.rgb24.ref.png | Bin 6491 -> 6473 bytes + test/reference/big-little-triangle.argb32.ref.png | Bin 0 -> 409 bytes + test/reference/big-little-triangle.ref.png | Bin 409 -> 0 bytes + test/reference/big-little-triangle.rgb24.ref.png | Bin 329 -> 331 bytes + test/reference/bug-extents.argb32.ref.png | Bin 9257 -> 9264 bytes + test/reference/bug-extents.rgb24.ref.png | Bin 9257 -> 9264 bytes + test/reference/bug-spline.argb32.ref.png | Bin 5462 -> 5490 bytes + test/reference/bug-spline.rgb24.ref.png | Bin 5462 -> 5490 bytes + test/reference/caps-joins-alpha.argb32.ref.png | Bin 2479 -> 2482 bytes + test/reference/caps-joins-alpha.rgb24.ref.png | Bin 2479 -> 2482 bytes + test/reference/clear.argb32.ref.png | Bin 0 -> 692 bytes + test/reference/clear.ref.png | Bin 692 -> 0 bytes + test/reference/clear.rgb24.ref.png | Bin 0 -> 621 bytes + test/reference/clip-disjoint-quad.argb32.ref.png | Bin 1643 -> 1642 bytes + test/reference/clip-disjoint-quad.rgb24.ref.png | Bin 1643 -> 1642 bytes + test/reference/clip-disjoint.argb32.ref.png | Bin 5465 -> 5464 bytes + test/reference/clip-disjoint.rgb24.ref.png | Bin 5465 -> 5464 bytes + test/reference/clip-fill-eo-unbounded.ref.png | Bin 4084 -> 4076 bytes + test/reference/clip-fill-nz-unbounded.ref.png | Bin 4084 -> 4076 bytes + test/reference/clip-fill-rule.argb32.ref.png | Bin 0 -> 437 bytes + test/reference/clip-fill-rule.ref.png | Bin 437 -> 0 bytes + test/reference/clip-fill-rule.rgb24.ref.png | Bin 0 -> 388 bytes + .../clip-group-shapes-circles.argb32.ref.png | Bin 1526 -> 1533 bytes + .../clip-group-shapes-circles.rgb24.ref.png | Bin 1526 -> 1533 bytes + test/reference/clip-intersect.argb32.ref.png | Bin 220 -> 223 bytes + test/reference/clip-intersect.rgb24.ref.png | Bin 220 -> 223 bytes + test/reference/clip-operator.argb32.ref.png | Bin 0 -> 8685 bytes + test/reference/clip-operator.rgb24.ref.png | Bin 0 -> 3458 bytes + test/reference/clip-shape.argb32.ref.png | Bin 2945 -> 2923 bytes + test/reference/clip-shape.rgb24.ref.png | Bin 2945 -> 2923 bytes + .../reference/clip-stroke-unbounded.argb32.ref.png | Bin 4105 -> 0 bytes + test/reference/clip-stroke-unbounded.ref.png | Bin 4127 -> 4104 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 3517 -> 0 bytes + test/reference/clip-twice.ref.png | Bin 1344 -> 1357 bytes + test/reference/degenerate-arc.argb32.ref.png | Bin 639 -> 646 bytes + test/reference/degenerate-arc.rgb24.ref.png | Bin 639 -> 646 bytes + test/reference/fill-alpha-pattern.argb32.ref.png | Bin 3381 -> 3489 bytes + test/reference/fill-alpha-pattern.rgb24.ref.png | Bin 3381 -> 3489 bytes + test/reference/fill-alpha.argb32.ref.png | Bin 2815 -> 2815 bytes + test/reference/fill-alpha.rgb24.ref.png | Bin 2815 -> 2815 bytes + test/reference/fill-degenerate-sort-order.ref.png | Bin 2410 -> 2414 bytes + test/reference/fill-rule.argb32.ref.png | Bin 0 -> 2086 bytes + test/reference/fill-rule.ref.png | Bin 2086 -> 0 bytes + test/reference/fill-rule.rgb24.ref.png | Bin 0 -> 1797 bytes + .../ft-text-vertical-layout-type1.argb32.ref.png | Bin 3084 -> 3075 bytes + .../ft-text-vertical-layout-type1.rgb24.ref.png | Bin 3084 -> 3075 bytes + .../ft-text-vertical-layout-type3.argb32.ref.png | Bin 3610 -> 3609 bytes + .../ft-text-vertical-layout-type3.rgb24.ref.png | Bin 3610 -> 3609 bytes + test/reference/halo-transform.argb32.ref.png | Bin 15231 -> 15234 bytes + test/reference/halo-transform.rgb24.ref.png | Bin 15231 -> 15234 bytes + test/reference/halo.argb32.ref.png | Bin 8666 -> 8621 bytes + test/reference/halo.rgb24.ref.png | Bin 8666 -> 8621 bytes + test/reference/hatchings.argb32.ref.png | Bin 91041 -> 90640 bytes + test/reference/hatchings.rgb24.ref.png | Bin 91041 -> 90640 bytes + test/reference/inverted-clip.rgb24.ref.png | Bin 1333 -> 1323 bytes + test/reference/leaky-dashed-stroke.argb32.ref.png | Bin 9286 -> 9286 bytes + test/reference/leaky-dashed-stroke.rgb24.ref.png | Bin 9286 -> 9286 bytes + ...line-width-large-overlap-rotated.argb32.ref.png | Bin 436 -> 439 bytes + .../line-width-large-overlap-rotated.rgb24.ref.png | Bin 436 -> 439 bytes + .../line-width-overlap-rotated.argb32.ref.png | Bin 716 -> 722 bytes + .../line-width-overlap-rotated.rgb24.ref.png | Bin 716 -> 722 bytes + .../linear-gradient-subset.argb32.ref.png | Bin 812 -> 813 bytes + .../reference/linear-gradient-subset.rgb24.ref.png | Bin 812 -> 813 bytes + test/reference/linear-gradient.argb32.ref.png | Bin 960 -> 959 bytes + test/reference/linear-gradient.rgb24.ref.png | Bin 960 -> 959 bytes + test/reference/mask-alpha.ref.png | Bin 644 -> 642 bytes + test/reference/mask.argb32.ref.png | Bin 0 -> 8681 bytes + test/reference/mask.ref.png | Bin 8565 -> 0 bytes + test/reference/mask.rgb24.ref.png | Bin 0 -> 7215 bytes + test/reference/operator-alpha.argb32.ref.png | Bin 0 -> 280 bytes + test/reference/operator-alpha.ref.png | Bin 280 -> 0 bytes + test/reference/operator-alpha.rgb24.ref.png | Bin 0 -> 205 bytes + test/reference/operator-clear.argb32.ref.png | Bin 1068 -> 1067 bytes + test/reference/operator-clear.ref.png | Bin 1071 -> 0 bytes + test/reference/operator-clear.rgb24.ref.png | Bin 0 -> 940 bytes + test/reference/operator-source.argb32.ref.png | Bin 0 -> 5626 bytes + test/reference/operator-source.ref.png | Bin 5614 -> 0 bytes + test/reference/operator-source.rgb24.ref.png | Bin 0 -> 4026 bytes + test/reference/operator.argb32.ref.png | Bin 0 -> 238 bytes + test/reference/operator.ref.png | Bin 238 -> 0 bytes + test/reference/operator.rgb24.ref.png | Bin 0 -> 189 bytes + test/reference/over-above-source.argb32.ref.png | Bin 0 -> 557 bytes + test/reference/over-above-source.ref.png | Bin 557 -> 0 bytes + test/reference/over-above-source.rgb24.ref.png | Bin 0 -> 459 bytes + test/reference/over-around-source.argb32.ref.png | Bin 0 -> 633 bytes + test/reference/over-around-source.ref.png | Bin 633 -> 0 bytes + test/reference/over-around-source.rgb24.ref.png | Bin 0 -> 504 bytes + test/reference/over-below-source.argb32.ref.png | Bin 0 -> 447 bytes + test/reference/over-below-source.ref.png | Bin 447 -> 0 bytes + test/reference/over-below-source.rgb24.ref.png | Bin 0 -> 389 bytes + test/reference/over-between-source.argb32.ref.png | Bin 0 -> 607 bytes + test/reference/over-between-source.ref.png | Bin 607 -> 0 bytes + test/reference/over-between-source.rgb24.ref.png | Bin 0 -> 482 bytes + test/reference/path-append.argb32.ref.png | Bin 6297 -> 6309 bytes + test/reference/path-append.rgb24.ref.png | Bin 6297 -> 6309 bytes + test/reference/push-group-color.argb32.ref.png | Bin 0 -> 2976 bytes + test/reference/push-group-color.ref.png | Bin 2961 -> 0 bytes + test/reference/push-group-color.rgb24.ref.png | Bin 0 -> 2976 bytes + test/reference/push-group.argb32.ref.png | Bin 3097 -> 3116 bytes + test/reference/push-group.ref.png | Bin 3062 -> 0 bytes + test/reference/push-group.rgb24.ref.png | Bin 0 -> 2929 bytes + test/reference/random-clip.argb32.ref.png | Bin 525539 -> 525469 bytes + test/reference/random-clip.rgb24.ref.png | Bin 525539 -> 525469 bytes + .../random-intersections-curves-eo.argb32.ref.png | Bin 244655 -> 244656 bytes + .../random-intersections-curves-eo.rgb24.ref.png | Bin 244655 -> 244656 bytes + .../random-intersections-curves-nz.argb32.ref.png | Bin 264447 -> 264449 bytes + .../random-intersections-curves-nz.rgb24.ref.png | Bin 264447 -> 264449 bytes + .../random-intersections-eo.argb32.ref.png | Bin 135591 -> 135556 bytes + .../random-intersections-eo.rgb24.ref.png | Bin 135591 -> 135556 bytes + .../random-intersections-nonzero.argb32.ref.png | Bin 141598 -> 141582 bytes + .../random-intersections-nonzero.rgb24.ref.png | Bin 141598 -> 141582 bytes + test/reference/record2x-fill-alpha.argb32.ref.png | Bin 5986 -> 6016 bytes + test/reference/record2x-fill-alpha.rgb24.ref.png | Bin 5986 -> 6016 bytes + .../rotate-clip.surface-paint.image.argb32.ref.png | Bin 0 -> 340 bytes + .../rotate-clip.surface-paint.image.rgb24.ref.png | Bin 0 -> 340 bytes + test/reference/scale-offset-similar.argb32.ref.png | Bin 9847 -> 9779 bytes + test/reference/scale-offset-similar.rgb24.ref.png | Bin 9847 -> 9779 bytes + test/reference/smask-fill.argb32.ref.png | Bin 1201 -> 1196 bytes + test/reference/smask-fill.rgb24.ref.png | Bin 1201 -> 1196 bytes + test/reference/smask-stroke.argb32.ref.png | Bin 1707 -> 1700 bytes + test/reference/smask-stroke.rgb24.ref.png | Bin 1707 -> 1700 bytes + test/reference/smask.argb32.ref.png | Bin 3436 -> 3422 bytes + test/reference/smask.rgb24.ref.png | Bin 3436 -> 3422 bytes + .../surface-pattern-operator.argb32.ref.png | Bin 0 -> 5107 bytes + test/reference/surface-pattern-operator.ref.png | Bin 5217 -> 0 bytes + .../surface-pattern-operator.rgb24.ref.png | Bin 0 -> 1926 bytes + test/reference/text-rotate.argb32.ref.png | Bin 16518 -> 16307 bytes + test/reference/text-rotate.rgb24.ref.png | Bin 16518 -> 16307 bytes + test/reference/tiger.argb32.ref.png | Bin 94714 -> 94790 bytes + test/reference/tiger.rgb24.ref.png | Bin 94714 -> 94790 bytes + test/reference/trap-clip.argb32.ref.png | Bin 0 -> 5972 bytes + test/reference/trap-clip.ref.png | Bin 5826 -> 0 bytes + test/reference/trap-clip.rgb24.ref.png | Bin 0 -> 5462 bytes + test/reference/unbounded-operator.argb32.ref.png | Bin 2763 -> 2755 bytes + test/reference/unbounded-operator.ref.png | Bin 2781 -> 0 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 0 -> 1328 bytes + test/reference/user-font-proxy.argb32.ref.png | Bin 16971 -> 16981 bytes + test/reference/user-font-proxy.rgb24.ref.png | Bin 16971 -> 16981 bytes + test/reference/user-font.argb32.ref.png | Bin 5882 -> 5889 bytes + test/reference/user-font.rgb24.ref.png | Bin 5882 -> 5889 bytes + 144 files changed, 34 insertions(+), 52 deletions(-) + +commit ff23afd5f26e46e9b3c1fbfa31b2809f4329c4f0 +Author: Chris Wilson +Date: Tue Sep 30 12:25:56 2014 +0100 + + test: Include coverage in the normal test run + + Currently coverage is marked as slow. It is slower than the typical + test, but it is quite a useful check on our rasterisation quality + without going too far overboard (unlike partial-coverage!). + + Signed-off-by: Chris Wilson + + test/coverage.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 03c3d4b7c159a3004071522bac2461e553fec211 +Author: Chris Wilson +Date: Tue Sep 30 08:44:43 2014 +0100 + + tor: Fix loss of precision from projection onto sample grid + + The goal is to preserve the precision in the gradients of the edges and + only apply the projection into the final cell location. We also include + the half-subrow offset as spotted by Massimo. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 + Testcase: coverage-rhombus + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 331 +++++++++++---------- + test/reference/a1-clip-fill-rule.ref.png | Bin 0 -> 236 bytes + test/reference/a8-clear.argb32.ref.png | Bin 271 -> 269 bytes + test/reference/a8-clear.rgb24.ref.png | Bin 271 -> 269 bytes + test/reference/aliasing.argb32.ref.png | Bin 104324 -> 106073 bytes + test/reference/aliasing.rgb24.ref.png | Bin 104324 -> 106073 bytes + test/reference/alpha-similar.ref.png | Bin 0 -> 99 bytes + test/reference/arc-direction.argb32.ref.png | Bin 6380 -> 6491 bytes + test/reference/arc-direction.rgb24.ref.png | Bin 6380 -> 6491 bytes + test/reference/big-empty-box.ref.png | Bin 0 -> 111 bytes + test/reference/big-empty-triangle.ref.png | Bin 0 -> 111 bytes + test/reference/big-little-box.ref.png | Bin 0 -> 169 bytes + test/reference/big-little-triangle.ref.png | Bin 0 -> 409 bytes + test/reference/big-little-triangle.rgb24.ref.png | Bin 0 -> 329 bytes + test/reference/bitmap-font.ref.png | Bin 0 -> 950 bytes + test/reference/bug-extents.argb32.ref.png | Bin 9251 -> 9257 bytes + test/reference/bug-extents.rgb24.ref.png | Bin 9251 -> 9257 bytes + test/reference/bug-source-cu.ref.png | Bin 0 -> 3815 bytes + test/reference/bug-spline.argb32.ref.png | Bin 0 -> 5462 bytes + test/reference/bug-spline.ref.png | Bin 5577 -> 0 bytes + test/reference/bug-spline.rgb24.ref.png | Bin 0 -> 5462 bytes + test/reference/caps-joins-alpha.argb32.ref.png | Bin 0 -> 2479 bytes + test/reference/caps-joins-alpha.ref.png | Bin 2643 -> 0 bytes + test/reference/caps-joins-alpha.rgb24.ref.png | Bin 0 -> 2479 bytes + test/reference/caps-joins-curve.argb32.ref.png | Bin 0 -> 5972 bytes + test/reference/caps-joins-curve.ref.png | Bin 6228 -> 0 bytes + test/reference/caps-joins-curve.rgb24.ref.png | Bin 0 -> 5972 bytes + test/reference/caps-tails-curve.argb32.ref.png | Bin 0 -> 54409 bytes + test/reference/caps-tails-curve.ref.png | Bin 54314 -> 0 bytes + test/reference/caps-tails-curve.rgb24.ref.png | Bin 0 -> 54409 bytes + test/reference/clear.ref.png | Bin 0 -> 692 bytes + test/reference/clip-device-offset.ref.png | Bin 0 -> 175 bytes + .../clip-disjoint-hatching.argb32.ref.png | Bin 9022 -> 7918 bytes + .../reference/clip-disjoint-hatching.rgb24.ref.png | Bin 9022 -> 7918 bytes + test/reference/clip-disjoint-quad.argb32.ref.png | Bin 0 -> 1643 bytes + test/reference/clip-disjoint-quad.ref.png | Bin 1592 -> 0 bytes + test/reference/clip-disjoint-quad.rgb24.ref.png | Bin 0 -> 1643 bytes + test/reference/clip-disjoint.argb32.ref.png | Bin 0 -> 5465 bytes + test/reference/clip-disjoint.ref.png | Bin 5438 -> 0 bytes + test/reference/clip-disjoint.rgb24.ref.png | Bin 0 -> 5465 bytes + test/reference/clip-fill-eo-unbounded.ref.png | Bin 0 -> 4084 bytes + test/reference/clip-fill-nz-unbounded.ref.png | Bin 0 -> 4084 bytes + .../reference/clip-fill-rule-pixel-aligned.ref.png | Bin 0 -> 195 bytes + test/reference/clip-fill-rule.ref.png | Bin 0 -> 437 bytes + test/reference/clip-fill.argb32.ref.png | Bin 1031 -> 1064 bytes + test/reference/clip-fill.rgb24.ref.png | Bin 1031 -> 1064 bytes + .../clip-group-shapes-circles.argb32.ref.png | Bin 1525 -> 1526 bytes + .../clip-group-shapes-circles.rgb24.ref.png | Bin 1525 -> 1526 bytes + test/reference/clip-intersect.argb32.ref.png | Bin 200 -> 220 bytes + test/reference/clip-intersect.rgb24.ref.png | Bin 200 -> 220 bytes + test/reference/clip-nesting.ref.png | Bin 0 -> 1094 bytes + test/reference/clip-operator.ref.png | Bin 0 -> 8257 bytes + test/reference/clip-push-group.argb32.ref.png | Bin 164 -> 164 bytes + test/reference/clip-push-group.rgb24.ref.png | Bin 164 -> 164 bytes + test/reference/clip-shape.argb32.ref.png | Bin 3073 -> 2945 bytes + test/reference/clip-shape.rgb24.ref.png | Bin 3073 -> 2945 bytes + .../reference/clip-stroke-unbounded.argb32.ref.png | Bin 0 -> 4105 bytes + test/reference/clip-stroke-unbounded.ref.png | Bin 0 -> 4127 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 0 -> 3517 bytes + test/reference/clip-stroke.argb32.ref.png | Bin 0 -> 1551 bytes + test/reference/clip-stroke.ref.png | Bin 1419 -> 0 bytes + test/reference/clip-stroke.rgb24.ref.png | Bin 0 -> 1551 bytes + test/reference/clip-text.argb32.ref.png | Bin 928 -> 918 bytes + test/reference/clip-text.rgb24.ref.png | Bin 928 -> 918 bytes + test/reference/clip-twice.ref.png | Bin 0 -> 1344 bytes + test/reference/clip-unbounded.ref.png | Bin 0 -> 100 bytes + test/reference/clipped-group.argb32.ref.png | Bin 342 -> 315 bytes + test/reference/clipped-group.rgb24.ref.png | Bin 342 -> 315 bytes + test/reference/dash-curve.argb32.ref.png | Bin 0 -> 41069 bytes + test/reference/dash-curve.ref.png | Bin 40945 -> 0 bytes + test/reference/dash-curve.rgb24.ref.png | Bin 0 -> 41069 bytes + test/reference/dash-zero-length.ref.png | Bin 0 -> 230 bytes + test/reference/degenerate-arc.argb32.ref.png | Bin 0 -> 639 bytes + test/reference/degenerate-arc.ref.png | Bin 692 -> 0 bytes + test/reference/degenerate-arc.rgb24.ref.png | Bin 0 -> 639 bytes + test/reference/degenerate-dash.argb32.ref.png | Bin 0 -> 1908 bytes + test/reference/degenerate-dash.ref.png | Bin 1985 -> 0 bytes + test/reference/degenerate-dash.rgb24.ref.png | Bin 0 -> 1908 bytes + test/reference/degenerate-path.ref.png | Bin 0 -> 251 bytes + test/reference/device-offset-positive.ref.png | Bin 0 -> 139 bytes + test/reference/device-offset.ref.png | Bin 0 -> 137 bytes + test/reference/egl-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/extended-blend-alpha-mask.ref.png | Bin 0 -> 9221 bytes + test/reference/extended-blend-alpha.ref.png | Bin 0 -> 9406 bytes + test/reference/extended-blend-mask.ref.png | Bin 0 -> 3971 bytes + test/reference/extended-blend-solid-alpha.ref.png | Bin 0 -> 9406 bytes + test/reference/extended-blend-solid.ref.png | Bin 0 -> 4063 bytes + test/reference/extended-blend.ref.png | Bin 0 -> 4063 bytes + test/reference/fallback.ref.png | Bin 0 -> 4106 bytes + test/reference/fill-alpha.argb32.ref.png | Bin 2736 -> 2815 bytes + test/reference/fill-alpha.rgb24.ref.png | Bin 2736 -> 2815 bytes + .../fill-and-stroke-alpha-add.argb32.ref.png | Bin 556 -> 558 bytes + .../fill-and-stroke-alpha-add.rgb24.ref.png | Bin 556 -> 558 bytes + .../reference/fill-and-stroke-alpha.argb32.ref.png | Bin 508 -> 513 bytes + test/reference/fill-and-stroke-alpha.rgb24.ref.png | Bin 508 -> 513 bytes + test/reference/fill-and-stroke.ref.png | Bin 0 -> 328 bytes + test/reference/fill-degenerate-sort-order.ref.png | Bin 0 -> 2410 bytes + test/reference/fill-empty.ref.png | Bin 0 -> 99 bytes + test/reference/fill-missed-stop.ref.png | Bin 0 -> 455 bytes + test/reference/fill-rule.ref.png | Bin 0 -> 2086 bytes + test/reference/fill.image.argb32.ref.png | Bin 0 -> 1482 bytes + test/reference/fill.image.rgb24.ref.png | Bin 0 -> 1482 bytes + test/reference/finer-grained-fallbacks.ref.png | Bin 0 -> 1151 bytes + .../ft-text-vertical-layout-type1.argb32.ref.png | Bin 3062 -> 3084 bytes + .../ft-text-vertical-layout-type1.rgb24.ref.png | Bin 3062 -> 3084 bytes + .../ft-text-vertical-layout-type3.argb32.ref.png | Bin 0 -> 3610 bytes + .../ft-text-vertical-layout-type3.ref.png | Bin 3608 -> 0 bytes + .../ft-text-vertical-layout-type3.rgb24.ref.png | Bin 0 -> 3610 bytes + test/reference/gl-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/gradient-alpha.ref.png | Bin 0 -> 125 bytes + test/reference/gradient-constant-alpha.ref.png | Bin 0 -> 111 bytes + test/reference/gradient-zero-stops-mask.ref.png | Bin 0 -> 86 bytes + test/reference/gradient-zero-stops.ref.png | Bin 0 -> 105 bytes + test/reference/group-unaligned.argb32.ref.png | Bin 427 -> 494 bytes + test/reference/group-unaligned.rgb24.ref.png | Bin 427 -> 494 bytes + test/reference/halo-transform.argb32.ref.png | Bin 15063 -> 15231 bytes + test/reference/halo-transform.rgb24.ref.png | Bin 15063 -> 15231 bytes + test/reference/halo.argb32.ref.png | Bin 0 -> 8666 bytes + test/reference/halo.ref.png | Bin 8774 -> 0 bytes + test/reference/halo.rgb24.ref.png | Bin 0 -> 8666 bytes + test/reference/hatchings.argb32.ref.png | Bin 0 -> 91041 bytes + test/reference/hatchings.ref.png | Bin 95333 -> 0 bytes + test/reference/hatchings.rgb24.ref.png | Bin 0 -> 91041 bytes + test/reference/image-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/inverted-clip.rgb24.ref.png | Bin 0 -> 1333 bytes + .../large-twin-antialias-mixed.argb32.ref.png | Bin 16660 -> 16442 bytes + .../large-twin-antialias-mixed.rgb24.ref.png | Bin 16660 -> 16442 bytes + test/reference/leaky-dashed-stroke.argb32.ref.png | Bin 9387 -> 9286 bytes + test/reference/leaky-dashed-stroke.rgb24.ref.png | Bin 9387 -> 9286 bytes + ...line-width-large-overlap-rotated.argb32.ref.png | Bin 427 -> 436 bytes + .../line-width-large-overlap-rotated.rgb24.ref.png | Bin 427 -> 436 bytes + .../line-width-overlap-rotated.argb32.ref.png | Bin 828 -> 716 bytes + .../line-width-overlap-rotated.rgb24.ref.png | Bin 828 -> 716 bytes + test/reference/linear-gradient-one-stop.ref.png | Bin 0 -> 225 bytes + .../linear-gradient-subset.argb32.ref.png | Bin 820 -> 812 bytes + .../reference/linear-gradient-subset.rgb24.ref.png | Bin 820 -> 812 bytes + test/reference/linear-gradient.argb32.ref.png | Bin 974 -> 960 bytes + test/reference/linear-gradient.rgb24.ref.png | Bin 974 -> 960 bytes + test/reference/mask-alpha.ref.png | Bin 0 -> 644 bytes + test/reference/mask-ctm.ref.png | Bin 0 -> 129 bytes + test/reference/mask-surface-ctm.ref.png | Bin 0 -> 129 bytes + test/reference/mask.ref.png | Bin 0 -> 8565 bytes + test/reference/new-sub-path.ref.png | Bin 0 -> 408 bytes + test/reference/nil-surface.ref.png | Bin 0 -> 107 bytes + test/reference/operator-alpha.ref.png | Bin 0 -> 280 bytes + test/reference/operator-clear.argb32.ref.png | Bin 0 -> 1068 bytes + test/reference/operator-clear.ref.png | Bin 0 -> 1071 bytes + test/reference/operator-source.ref.png | Bin 0 -> 5614 bytes + test/reference/operator.ref.png | Bin 0 -> 238 bytes + test/reference/over-above-source.ref.png | Bin 0 -> 557 bytes + test/reference/over-around-source.ref.png | Bin 0 -> 633 bytes + test/reference/over-below-source.ref.png | Bin 0 -> 447 bytes + test/reference/over-between-source.ref.png | Bin 0 -> 607 bytes + test/reference/overlapping-boxes.ref.png | Bin 0 -> 179 bytes + .../reference/overlapping-dash-caps.argb32.ref.png | Bin 0 -> 3952 bytes + test/reference/overlapping-dash-caps.ref.png | Bin 3979 -> 0 bytes + test/reference/overlapping-dash-caps.rgb24.ref.png | Bin 0 -> 3952 bytes + test/reference/overlapping-glyphs.ref.png | Bin 0 -> 2717 bytes + .../paint-with-alpha-clip-mask.argb32.ref.png | Bin 340 -> 351 bytes + .../paint-with-alpha-clip-mask.rgb24.ref.png | Bin 340 -> 351 bytes + test/reference/pass-through.ref.png | Bin 0 -> 221 bytes + test/reference/path-append.argb32.ref.png | Bin 6144 -> 6297 bytes + test/reference/path-append.rgb24.ref.png | Bin 6144 -> 6297 bytes + test/reference/pdf-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/pixman-rotate.ref.png | Bin 0 -> 260 bytes + test/reference/ps-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/push-group-color.argb32.ref.png | Bin 2892 -> 0 bytes + test/reference/push-group-color.ref.png | Bin 0 -> 2961 bytes + test/reference/push-group-color.rgb24.ref.png | Bin 2892 -> 0 bytes + test/reference/push-group.argb32.ref.png | Bin 0 -> 3097 bytes + test/reference/push-group.ref.png | Bin 0 -> 3062 bytes + test/reference/quartz-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/radial-gradient-source.ref.png | Bin 0 -> 408848 bytes + test/reference/random-clip.argb32.ref.png | Bin 0 -> 525539 bytes + test/reference/random-clip.ref.png | Bin 526034 -> 0 bytes + test/reference/random-clip.rgb24.ref.png | Bin 0 -> 525539 bytes + .../random-intersections-curves-eo.argb32.ref.png | Bin 245848 -> 244655 bytes + .../random-intersections-curves-eo.rgb24.ref.png | Bin 245848 -> 244655 bytes + .../random-intersections-curves-nz.argb32.ref.png | Bin 265249 -> 264447 bytes + .../random-intersections-curves-nz.rgb24.ref.png | Bin 265249 -> 264447 bytes + .../random-intersections-eo.argb32.ref.png | Bin 136632 -> 135591 bytes + .../random-intersections-eo.rgb24.ref.png | Bin 136632 -> 135591 bytes + .../random-intersections-nonzero.argb32.ref.png | Bin 142139 -> 141598 bytes + .../random-intersections-nonzero.rgb24.ref.png | Bin 142139 -> 141598 bytes + test/reference/record-fill-alpha.argb32.ref.png | Bin 0 -> 2822 bytes + test/reference/record-fill-alpha.ref.png | Bin 2812 -> 0 bytes + test/reference/record-fill-alpha.rgb24.ref.png | Bin 0 -> 2822 bytes + .../record-paint-alpha-clip-mask.argb32.ref.png | Bin 0 -> 321 bytes + .../reference/record-paint-alpha-clip-mask.ref.png | Bin 318 -> 0 bytes + .../record-paint-alpha-clip-mask.rgb24.ref.png | Bin 0 -> 321 bytes + .../record1414x-fill-alpha.argb32.ref.png | Bin 0 -> 4244 bytes + test/reference/record1414x-fill-alpha.ref.png | Bin 4212 -> 0 bytes + .../reference/record1414x-fill-alpha.rgb24.ref.png | Bin 0 -> 4244 bytes + ...ecord1414x-paint-alpha-clip-mask.argb32.ref.png | Bin 560 -> 544 bytes + ...record1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin 560 -> 544 bytes + test/reference/record2x-fill-alpha.argb32.ref.png | Bin 0 -> 5986 bytes + test/reference/record2x-fill-alpha.ref.png | Bin 5950 -> 0 bytes + test/reference/record2x-fill-alpha.rgb24.ref.png | Bin 0 -> 5986 bytes + .../record2x-paint-alpha-clip-mask.argb32.ref.png | Bin 534 -> 543 bytes + .../record2x-paint-alpha-clip-mask.rgb24.ref.png | Bin 534 -> 543 bytes + test/reference/record90-fill-alpha.argb32.ref.png | Bin 0 -> 2654 bytes + test/reference/record90-fill-alpha.ref.png | Bin 2650 -> 0 bytes + test/reference/record90-fill-alpha.rgb24.ref.png | Bin 0 -> 2654 bytes + .../record90-paint-alpha-clip-mask.argb32.ref.png | Bin 0 -> 317 bytes + .../record90-paint-alpha-clip-mask.ref.png | Bin 316 -> 0 bytes + .../record90-paint-alpha-clip-mask.rgb24.ref.png | Bin 0 -> 317 bytes + .../record90-paint-alpha-clip.argb32.ref.png | Bin 0 -> 335 bytes + test/reference/record90-paint-alpha-clip.ref.png | Bin 320 -> 0 bytes + .../record90-paint-alpha-clip.rgb24.ref.png | Bin 0 -> 335 bytes + .../record90-paint-alpha-solid-clip.argb32.ref.png | Bin 254 -> 293 bytes + .../record90-paint-alpha-solid-clip.rgb24.ref.png | Bin 254 -> 293 bytes + .../recording-surface-extend-none.ref.png | Bin 0 -> 3153 bytes + .../reference/recording-surface-extend-pad.ref.png | Bin 0 -> 11200 bytes + .../recording-surface-extend-reflect.ref.png | Bin 0 -> 23967 bytes + .../recording-surface-extend-repeat.ref.png | Bin 0 -> 24091 bytes + test/reference/recording-surface-over.ref.png | Bin 0 -> 3153 bytes + test/reference/recording-surface-source.ref.png | Bin 0 -> 3153 bytes + test/reference/rel-path.ref.png | Bin 0 -> 197 bytes + test/reference/rotated-clip.argb32.ref.png | Bin 3773 -> 3829 bytes + test/reference/rotated-clip.rgb24.ref.png | Bin 3773 -> 3829 bytes + test/reference/scale-offset-similar.argb32.ref.png | Bin 9748 -> 9847 bytes + test/reference/scale-offset-similar.rgb24.ref.png | Bin 9748 -> 9847 bytes + test/reference/scale-offset.image.argb32.ref.png | Bin 0 -> 9847 bytes + test/reference/scale-offset.image.rgb24.ref.png | Bin 0 -> 9847 bytes + test/reference/scale-source-surface-paint.ref.png | Bin 0 -> 147 bytes + test/reference/set-source.ref.png | Bin 0 -> 120 bytes + test/reference/shape-general-convex.argb32.ref.png | Bin 2742 -> 2539 bytes + test/reference/shape-general-convex.rgb24.ref.png | Bin 2742 -> 2539 bytes + test/reference/shape-sierpinski.argb32.ref.png | Bin 63714 -> 54850 bytes + test/reference/shape-sierpinski.rgb24.ref.png | Bin 63714 -> 54850 bytes + test/reference/smask-fill.argb32.ref.png | Bin 1197 -> 1201 bytes + test/reference/smask-fill.rgb24.ref.png | Bin 1197 -> 1201 bytes + test/reference/smask-stroke.argb32.ref.png | Bin 1709 -> 1707 bytes + test/reference/smask-stroke.rgb24.ref.png | Bin 1709 -> 1707 bytes + test/reference/smask.argb32.ref.png | Bin 3414 -> 3436 bytes + test/reference/smask.rgb24.ref.png | Bin 3414 -> 3436 bytes + test/reference/source-surface-scale-paint.ref.png | Bin 0 -> 139 bytes + test/reference/stroke-clipped.argb32.ref.png | Bin 0 -> 5857 bytes + test/reference/stroke-clipped.ref.png | Bin 5790 -> 0 bytes + test/reference/stroke-clipped.rgb24.ref.png | Bin 0 -> 5857 bytes + test/reference/stroke-pattern.argb32.ref.png | Bin 1491 -> 1510 bytes + test/reference/stroke-pattern.rgb24.ref.png | Bin 1491 -> 1510 bytes + test/reference/stroke.image.argb32.ref.png | Bin 0 -> 1479 bytes + test/reference/stroke.image.rgb24.ref.png | Bin 0 -> 1479 bytes + test/reference/subsurface-outside-target.ref.png | Bin 0 -> 2063 bytes + test/reference/surface-pattern-operator.ref.png | Bin 0 -> 5217 bytes + test/reference/svg-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/text-pattern.ref.png | Bin 0 -> 3455 bytes + test/reference/text-rotate.argb32.ref.png | Bin 0 -> 16518 bytes + test/reference/text-rotate.ref.png | Bin 16667 -> 0 bytes + test/reference/text-rotate.rgb24.ref.png | Bin 0 -> 16518 bytes + test/reference/tiger.argb32.ref.png | Bin 93916 -> 94714 bytes + test/reference/tiger.rgb24.ref.png | Bin 93916 -> 94714 bytes + test/reference/tighten-bounds.ref.png | Bin 0 -> 9443 bytes + test/reference/trap-clip.ref.png | Bin 0 -> 5826 bytes + test/reference/twin-antialias-gray.argb32.ref.png | Bin 0 -> 3536 bytes + test/reference/twin-antialias-gray.ref.png | Bin 3948 -> 0 bytes + test/reference/twin-antialias-gray.rgb24.ref.png | Bin 0 -> 3536 bytes + test/reference/twin-antialias-mixed.argb32.ref.png | Bin 2230 -> 2359 bytes + test/reference/twin-antialias-mixed.rgb24.ref.png | Bin 2230 -> 2359 bytes + test/reference/twin-antialias-none.argb32.ref.png | Bin 690 -> 692 bytes + test/reference/twin-antialias-none.rgb24.ref.png | Bin 690 -> 692 bytes + .../twin-antialias-subpixel.argb32.ref.png | Bin 0 -> 3536 bytes + test/reference/twin-antialias-subpixel.ref.png | Bin 3948 -> 0 bytes + .../twin-antialias-subpixel.rgb24.ref.png | Bin 0 -> 3536 bytes + test/reference/twin.argb32.ref.png | Bin 0 -> 3536 bytes + test/reference/twin.ref.png | Bin 3948 -> 0 bytes + test/reference/twin.rgb24.ref.png | Bin 0 -> 3536 bytes + test/reference/unbounded-operator.argb32.ref.png | Bin 0 -> 2763 bytes + test/reference/unbounded-operator.ref.png | Bin 0 -> 2781 bytes + test/reference/unclosed-strokes.argb32.ref.png | Bin 1901 -> 0 bytes + test/reference/unclosed-strokes.ref.png | Bin 0 -> 1588 bytes + test/reference/unclosed-strokes.rgb24.ref.png | Bin 1901 -> 0 bytes + test/reference/user-font-proxy.argb32.ref.png | Bin 16941 -> 16971 bytes + test/reference/user-font-proxy.rgb24.ref.png | Bin 16941 -> 16971 bytes + test/reference/user-font.argb32.ref.png | Bin 0 -> 5882 bytes + test/reference/user-font.ref.png | Bin 6209 -> 0 bytes + test/reference/user-font.rgb24.ref.png | Bin 0 -> 5882 bytes + test/reference/world-map-fill.argb32.ref.png | Bin 57308 -> 57407 bytes + test/reference/world-map-fill.rgb24.ref.png | Bin 57308 -> 57407 bytes + test/reference/xcb-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/xlib-surface-source.ref.png | Bin 0 -> 377 bytes + test/reference/zero-mask.ref.png | Bin 0 -> 402 bytes + 283 files changed, 174 insertions(+), 157 deletions(-) + +commit 8e1e2a54147df32f0e9261d2b7b031eaf8396f06 +Author: Chris Wilson +Date: Tue Sep 30 11:47:44 2014 +0100 + + test: Remove redundant reference images + + If we have both a argb32 and rgb24 reference image that are identical, + we can replace them with a plain reference image. I also prefer to have + argb32/rgb24 versions of the reference images if rgb24 differs from the + plain reference. + + Signed-off-by: Chris Wilson + + test/reference/a1-clip-fill-rule.argb32.ref.png | Bin 236 -> 0 bytes + test/reference/a1-clip-fill-rule.rgb24.ref.png | Bin 218 -> 0 bytes + test/reference/alpha-similar.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/alpha-similar.rgb24.ref.png | Bin 88 -> 0 bytes + test/reference/big-empty-box.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/big-empty-box.rgb24.ref.png | Bin 108 -> 0 bytes + test/reference/big-empty-triangle.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/big-empty-triangle.rgb24.ref.png | Bin 108 -> 0 bytes + test/reference/big-little-box.argb32.ref.png | Bin 169 -> 0 bytes + test/reference/big-little-box.rgb24.ref.png | Bin 160 -> 0 bytes + test/reference/big-little-triangle.argb32.ref.png | Bin 409 -> 0 bytes + test/reference/big-little-triangle.rgb24.ref.png | Bin 328 -> 0 bytes + test/reference/bitmap-font.argb32.ref.png | Bin 950 -> 0 bytes + test/reference/bitmap-font.rgb24.ref.png | Bin 871 -> 0 bytes + test/reference/bug-source-cu.argb32.ref.png | Bin 3815 -> 0 bytes + test/reference/bug-source-cu.rgb24.ref.png | Bin 3211 -> 0 bytes + test/reference/clear.argb32.ref.png | Bin 692 -> 0 bytes + test/reference/clear.rgb24.ref.png | Bin 617 -> 0 bytes + test/reference/clip-device-offset.argb32.ref.png | Bin 175 -> 0 bytes + test/reference/clip-device-offset.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/clip-fill-eo-unbounded.argb32.ref.png | Bin 4197 -> 0 bytes + test/reference/clip-fill-eo-unbounded.rgb24.ref.png | Bin 3551 -> 0 bytes + test/reference/clip-fill-nz-unbounded.argb32.ref.png | Bin 4197 -> 0 bytes + test/reference/clip-fill-nz-unbounded.rgb24.ref.png | Bin 3551 -> 0 bytes + .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin 195 -> 0 bytes + .../clip-fill-rule-pixel-aligned.rgb24.ref.png | Bin 165 -> 0 bytes + test/reference/clip-fill-rule.argb32.ref.png | Bin 437 -> 0 bytes + test/reference/clip-fill-rule.rgb24.ref.png | Bin 393 -> 0 bytes + test/reference/clip-nesting.argb32.ref.png | Bin 1044 -> 0 bytes + test/reference/clip-nesting.rgb24.ref.png | Bin 936 -> 0 bytes + test/reference/clip-operator.argb32.ref.png | Bin 8257 -> 0 bytes + test/reference/clip-operator.rgb24.ref.png | Bin 3288 -> 0 bytes + test/reference/clip-stroke-unbounded.argb32.ref.png | Bin 4127 -> 0 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 3566 -> 0 bytes + test/reference/clip-twice.argb32.ref.png | Bin 1358 -> 0 bytes + test/reference/clip-twice.rgb24.ref.png | Bin 1195 -> 0 bytes + test/reference/clip-unbounded.argb32.ref.png | Bin 100 -> 0 bytes + test/reference/clip-unbounded.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/dash-zero-length.argb32.ref.png | Bin 230 -> 0 bytes + test/reference/dash-zero-length.rgb24.ref.png | Bin 208 -> 0 bytes + test/reference/degenerate-path.argb32.ref.png | Bin 251 -> 0 bytes + test/reference/degenerate-path.rgb24.ref.png | Bin 219 -> 0 bytes + test/reference/device-offset-positive.argb32.ref.png | Bin 139 -> 0 bytes + test/reference/device-offset-positive.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/device-offset.argb32.ref.png | Bin 137 -> 0 bytes + test/reference/device-offset.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/egl-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/egl-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + .../reference/extended-blend-alpha-mask.argb32.ref.png | Bin 9221 -> 0 bytes + test/reference/extended-blend-alpha-mask.rgb24.ref.png | Bin 4597 -> 0 bytes + test/reference/extended-blend-alpha.argb32.ref.png | Bin 9406 -> 0 bytes + test/reference/extended-blend-alpha.rgb24.ref.png | Bin 5740 -> 0 bytes + test/reference/extended-blend-mask.argb32.ref.png | Bin 3971 -> 0 bytes + test/reference/extended-blend-mask.rgb24.ref.png | Bin 3643 -> 0 bytes + .../extended-blend-solid-alpha.argb32.ref.png | Bin 9406 -> 0 bytes + .../reference/extended-blend-solid-alpha.rgb24.ref.png | Bin 5740 -> 0 bytes + test/reference/extended-blend-solid.argb32.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend-solid.rgb24.ref.png | Bin 3775 -> 0 bytes + test/reference/extended-blend.argb32.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend.rgb24.ref.png | Bin 3775 -> 0 bytes + test/reference/fallback.argb32.ref.png | Bin 4059 -> 0 bytes + test/reference/fallback.rgb24.ref.png | Bin 3139 -> 0 bytes + test/reference/fill-and-stroke.argb32.ref.png | Bin 312 -> 0 bytes + test/reference/fill-and-stroke.rgb24.ref.png | Bin 283 -> 0 bytes + .../fill-degenerate-sort-order.argb32.ref.png | Bin 2400 -> 0 bytes + .../reference/fill-degenerate-sort-order.rgb24.ref.png | Bin 2049 -> 0 bytes + test/reference/fill-empty.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/fill-empty.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/fill-missed-stop.argb32.ref.png | Bin 455 -> 0 bytes + test/reference/fill-missed-stop.rgb24.ref.png | Bin 382 -> 0 bytes + test/reference/fill-rule.argb32.ref.png | Bin 2065 -> 0 bytes + test/reference/fill-rule.rgb24.ref.png | Bin 1803 -> 0 bytes + test/reference/finer-grained-fallbacks.argb32.ref.png | Bin 1068 -> 0 bytes + test/reference/finer-grained-fallbacks.rgb24.ref.png | Bin 837 -> 0 bytes + test/reference/gl-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/gl-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/gradient-alpha.argb32.ref.png | Bin 125 -> 0 bytes + test/reference/gradient-alpha.rgb24.ref.png | Bin 119 -> 0 bytes + test/reference/gradient-constant-alpha.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/gradient-constant-alpha.rgb24.ref.png | Bin 106 -> 0 bytes + test/reference/gradient-zero-stops-mask.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/gradient-zero-stops-mask.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/gradient-zero-stops.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/gradient-zero-stops.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/image-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/image-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/linear-gradient-one-stop.argb32.ref.png | Bin 225 -> 0 bytes + test/reference/linear-gradient-one-stop.rgb24.ref.png | Bin 174 -> 0 bytes + test/reference/mask-alpha.argb32.ref.png | Bin 632 -> 0 bytes + test/reference/mask-alpha.rgb24.ref.png | Bin 589 -> 0 bytes + test/reference/mask-ctm.argb32.ref.png | Bin 129 -> 0 bytes + test/reference/mask-ctm.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/mask-surface-ctm.argb32.ref.png | Bin 129 -> 0 bytes + test/reference/mask-surface-ctm.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/mask.argb32.ref.png | Bin 8565 -> 0 bytes + test/reference/mask.rgb24.ref.png | Bin 7135 -> 0 bytes + test/reference/new-sub-path.argb32.ref.png | Bin 408 -> 0 bytes + test/reference/new-sub-path.rgb24.ref.png | Bin 371 -> 0 bytes + test/reference/nil-surface.argb32.ref.png | Bin 107 -> 0 bytes + test/reference/nil-surface.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/operator-alpha.argb32.ref.png | Bin 280 -> 0 bytes + test/reference/operator-alpha.rgb24.ref.png | Bin 205 -> 0 bytes + test/reference/operator-clear.argb32.ref.png | Bin 1071 -> 0 bytes + test/reference/operator-clear.rgb24.ref.png | Bin 946 -> 0 bytes + test/reference/operator-source.argb32.ref.png | Bin 5614 -> 0 bytes + test/reference/operator-source.rgb24.ref.png | Bin 4012 -> 0 bytes + test/reference/operator.argb32.ref.png | Bin 238 -> 0 bytes + test/reference/operator.rgb24.ref.png | Bin 189 -> 0 bytes + test/reference/over-above-source.argb32.ref.png | Bin 564 -> 0 bytes + test/reference/over-above-source.rgb24.ref.png | Bin 465 -> 0 bytes + test/reference/over-around-source.argb32.ref.png | Bin 633 -> 0 bytes + test/reference/over-around-source.rgb24.ref.png | Bin 499 -> 0 bytes + test/reference/over-below-source.argb32.ref.png | Bin 447 -> 0 bytes + test/reference/over-below-source.rgb24.ref.png | Bin 385 -> 0 bytes + test/reference/over-between-source.argb32.ref.png | Bin 596 -> 0 bytes + test/reference/over-between-source.rgb24.ref.png | Bin 463 -> 0 bytes + test/reference/overlapping-boxes.argb32.ref.png | Bin 179 -> 0 bytes + test/reference/overlapping-boxes.rgb24.ref.png | Bin 170 -> 0 bytes + test/reference/overlapping-glyphs.argb32.ref.png | Bin 2717 -> 0 bytes + test/reference/overlapping-glyphs.rgb24.ref.png | Bin 1663 -> 0 bytes + test/reference/pass-through.argb32.ref.png | Bin 221 -> 0 bytes + test/reference/pass-through.rgb24.ref.png | Bin 158 -> 0 bytes + test/reference/pdf-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/pdf-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/pixman-rotate.argb32.ref.png | Bin 260 -> 0 bytes + test/reference/pixman-rotate.rgb24.ref.png | Bin 225 -> 0 bytes + test/reference/ps-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/ps-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/push-group.argb32.ref.png | Bin 3062 -> 0 bytes + test/reference/push-group.rgb24.ref.png | Bin 2899 -> 0 bytes + test/reference/quartz-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/quartz-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/radial-gradient-source.argb32.ref.png | Bin 408848 -> 0 bytes + test/reference/radial-gradient-source.rgb24.ref.png | Bin 263908 -> 0 bytes + .../recording-surface-extend-none.argb32.ref.png | Bin 3153 -> 0 bytes + .../recording-surface-extend-none.rgb24.ref.png | Bin 3145 -> 0 bytes + .../recording-surface-extend-pad.argb32.ref.png | Bin 11200 -> 0 bytes + .../recording-surface-extend-pad.rgb24.ref.png | Bin 12586 -> 0 bytes + .../recording-surface-extend-reflect.argb32.ref.png | Bin 23967 -> 0 bytes + .../recording-surface-extend-reflect.rgb24.ref.png | Bin 23930 -> 0 bytes + .../recording-surface-extend-repeat.argb32.ref.png | Bin 24091 -> 0 bytes + .../recording-surface-extend-repeat.rgb24.ref.png | Bin 24075 -> 0 bytes + test/reference/recording-surface-over.argb32.ref.png | Bin 3153 -> 0 bytes + test/reference/recording-surface-over.rgb24.ref.png | Bin 3145 -> 0 bytes + test/reference/recording-surface-source.argb32.ref.png | Bin 3153 -> 0 bytes + test/reference/recording-surface-source.rgb24.ref.png | Bin 3146 -> 0 bytes + test/reference/rel-path.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/rel-path.rgb24.ref.png | Bin 216 -> 0 bytes + .../scale-source-surface-paint.argb32.ref.png | Bin 147 -> 0 bytes + .../reference/scale-source-surface-paint.rgb24.ref.png | Bin 117 -> 0 bytes + test/reference/set-source.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/set-source.rgb24.ref.png | Bin 101 -> 0 bytes + .../source-surface-scale-paint.argb32.ref.png | Bin 139 -> 0 bytes + .../reference/source-surface-scale-paint.rgb24.ref.png | Bin 114 -> 0 bytes + .../reference/subsurface-outside-target.argb32.ref.png | Bin 2063 -> 0 bytes + test/reference/subsurface-outside-target.rgb24.ref.png | Bin 1648 -> 0 bytes + test/reference/surface-pattern-operator.argb32.ref.png | Bin 5217 -> 0 bytes + test/reference/surface-pattern-operator.rgb24.ref.png | Bin 1942 -> 0 bytes + test/reference/svg-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/svg-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/text-pattern.argb32.ref.png | Bin 3455 -> 0 bytes + test/reference/text-pattern.rgb24.ref.png | Bin 2684 -> 0 bytes + test/reference/tighten-bounds.argb32.ref.png | Bin 9115 -> 0 bytes + test/reference/tighten-bounds.rgb24.ref.png | Bin 8365 -> 0 bytes + test/reference/trap-clip.argb32.ref.png | Bin 5826 -> 0 bytes + test/reference/trap-clip.rgb24.ref.png | Bin 5435 -> 0 bytes + test/reference/unbounded-operator.argb32.ref.png | Bin 2781 -> 0 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 1333 -> 0 bytes + test/reference/xcb-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xcb-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/xlib-surface-source.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xlib-surface-source.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/zero-mask.argb32.ref.png | Bin 402 -> 0 bytes + test/reference/zero-mask.rgb24.ref.png | Bin 382 -> 0 bytes + 174 files changed, 0 insertions(+), 0 deletions(-) + +commit 93c21e3fd309781d0f48052097f5670dbe9af820 +Author: Ravi Nanjundappa +Date: Mon Sep 22 10:19:17 2014 +0530 + + test: Add test for egl-surface-source + + This test file attempts to use a EGL backend surface as a source + surface for all other backends. + + Signed-off-by: Ravi Nanjundappa + + test/Makefile.sources | 3 +- + test/egl-surface-source.c | 135 +++++++++++++++++++++ + test/reference/egl-surface-source.argb32.ref.png | Bin 0 -> 377 bytes + .../egl-surface-source.base.argb32.ref.png | Bin 0 -> 377 bytes + .../egl-surface-source.base.rgb24.ref.png | Bin 0 -> 301 bytes + test/reference/egl-surface-source.image16.ref.png | Bin 0 -> 305 bytes + test/reference/egl-surface-source.rgb24.ref.png | Bin 0 -> 301 bytes + 7 files changed, 137 insertions(+), 1 deletion(-) + +commit 573ddfc3d5c08c37b95a21e0a1b34acecc646053 +Author: Ravi Nanjundappa +Date: Thu Sep 25 08:38:50 2014 +0530 + + src: check the surface backend for NULL + + This is a follow-up patch on top of 150c1e7044c57443d458e12bfc427d3a019cb60b + As discussed in the mailing list, http://lists.cairographics.org/archives/cairo/2014-September/025647.html, + check if the surfaces are of particular backend type or not, before proceeding further. + + These changes are based on _cairo_surface_is_xlib() and _cairo_surface_is_image() + + Signed-off-by: Ravi Nanjundappa + + src/cairo-qt-surface.cpp | 28 +++++++++++++++++++++++++--- + src/cairo-quartz-image-surface.c | 4 +++- + src/cairo-quartz-surface.c | 14 ++++++++++++++ + src/win32/cairo-win32-surface.c | 19 ++++++++++++++++++- + 4 files changed, 60 insertions(+), 5 deletions(-) + +commit 06b9f8fa2d179850cda8a0a103896bc011ce46d6 +Author: Chris Wilson +Date: Mon Sep 22 12:53:08 2014 +0100 + + stroke,traps: Emit join without loss of precision + + As the target renderers operate at a different sample resolution then we + use internally for coordinate representation, there is always a potential + for discrepancies in the line gradients when passing around trapezoids. + To overcome this, the protocol specification of trapezoids uses the full + lines and vertical range as opposed to vertices and so long as we always + use the same lines for conjoint trapezoids, they remain abutting in the + rasteriser. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84115 + Testcase: bug-84115 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 3 + + src/cairo-bentley-ottmann.c | 232 +------------------------------- + src/cairo-line-inline.h | 48 +++++++ + src/cairo-line-private.h | 50 +++++++ + src/cairo-line.c | 306 ++++++++++++++++++++++++++++++++++++++++++ + src/cairo-path-stroke-traps.c | 55 +++++--- + src/cairo-traps-private.h | 8 +- + src/cairo-traps.c | 85 ++++++++++-- + 8 files changed, 530 insertions(+), 257 deletions(-) + +commit 5c03b20732b84370950f0c7e5648da86ef45a571 +Author: Chris Wilson +Date: Mon Sep 29 08:37:56 2014 +0100 + + test/coverage: Exercise invariance under mirror symmetry + + Massimo noticed that the record/record-flip were not being rasterised as + identical mirror images due to a half-subpixel offset in the tor scan + converter. This test attempts to reproduce this error by rendering a + rhombus around the origin of each cell (that is it generates 4 mirror + images of a triangle in the 4 different orientations0. The expectation + is that each pixel in the group is lit identically as the coverage is + identical. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 + Signed-off-by: Chris Wilson + + test/coverage.c | 55 ++++++++++++++++++++++++++++++++ + test/reference/coverage-rhombus.ref.png | Bin 0 -> 7053 bytes + 2 files changed, 55 insertions(+) + +commit fbb0a260b707cb5f02a14cc368c6f2f0d63564c3 +Author: Marc-André Lureau +Date: Tue Apr 2 21:00:20 2013 +0200 + + build-sys: do not try to build util/sphinx on Windows + + glib and dlfcn exist on windows, but sphinx code uses a lot of + Unix-only API + + Fixes the following build error on mingw-fedora + + CC cairo-boilerplate-system.lo + ../../../util/cairo-sphinx/sphinx.c:8:22: fatal error: sys/mman.h: No such file or directory + compilation terminated. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=63043 + Reviewed-by: Bryce Harrington + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 42320793aa1b3e5a0b74e94a0aadf5d2b9ae5ce2 +Author: Bryce Harrington +Date: Wed Sep 24 11:37:58 2014 -0700 + + sphinx: Add ickle's explanation of what sphinx does + + util/cairo-sphinx/sphinx.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 80359e73d821516f411b25b977b442869fa5d0ad +Author: Chris Wilson +Date: Tue Sep 23 12:58:27 2014 +0100 + + test: Exercise stroking bugs with xlib/trapezoids + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84115 + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/bug-84115.c | 61 ++++++++++++++++++++++++++++++++++ + test/reference/bug-84115.ref.png | Bin 0 -> 64233 bytes + test/reference/bug-84115.xlib.ref.png | Bin 0 -> 65033 bytes + 4 files changed, 62 insertions(+) + +commit 06a737b74d3bc925a2c32254f497e07b6d1af5ca +Author: Chris Wilson +Date: Wed Sep 24 09:57:31 2014 +0100 + + arc: Insert the initial point on the arc + + Currently the very first point on the arc will be the first interpreted + location along the spline used to approximate the arc. This will be + close, but not quite the exact point the user intended the arc to run + from, so begin the arc with a line-to the initial point. + + Signed-off-by: Chris Wilson + + src/cairo-arc.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit bdd0721dcddd6c4528c9518a2152cd154f746202 +Author: Bryce Harrington +Date: Tue Sep 23 16:41:36 2014 -0700 + + NEWS: Revise downscaling feature description + + Updated feature description using text from Bill. Also updated bugfix + list to include recent fixes. + + NEWS | 48 +++++++++++++++++++++++++++--------------------- + 1 file changed, 27 insertions(+), 21 deletions(-) + +commit 7cfebce15228c88ee122edb8ba575f9a609e36f4 +Author: Bryce Harrington +Date: Tue Sep 23 12:40:25 2014 -0700 + + build: Fix float endian configure test when using clang -O4 + + When using clang -O4, the compiled test object is output in bitcode + format rather than as an ELF object, so when we grep the test value from + the object it fails. To work around this, go ahead and link the test + object into an executable, and then grep against this native binary + instead of the compiler's intermediary object. + + We need to add __attribute__((used)) to ensure the d variable doesn't + get optimized out during linking, since it's not referenced in the + test's main(). + + Patch authored by cmuelle8 + + Reviewed-by: Bryce Harrington + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63310 + + build/aclocal.float.m4 | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 9a19ef185884da1e7d5344b301f48aa2ba0f88b6 +Author: Adrian Johnson +Date: Mon Mar 24 19:08:10 2014 +1030 + + Fix compilation with bionic libc + + Refactor out a cairo_get_locale_decimal_point() routine to handle a case + where localeconv() is not available. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=70492 + Reviewed-by: Bryce Harrington + + [edit: Condensed cairo_get_locale_decimal_point and conditionalized + locale.h inclusion. -- bryce] + + src/cairo-cff-subset.c | 4 +--- + src/cairo-misc.c | 18 ++++++++++++++++++ + src/cairo-output-stream.c | 5 +---- + src/cairo-type1-subset.c | 5 +---- + src/cairoint.h | 3 +++ + 5 files changed, 24 insertions(+), 11 deletions(-) + +commit a02e29a12d82f177bdf99ed8cfd0c3b3b78c44da +Author: Bryce Harrington +Date: Mon Sep 22 15:48:49 2014 -0700 + + Don't return NULL to clients when getting device + + Return an error device instead + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061 + + src/cairo-cogl-surface.c | 2 +- + src/drm/cairo-drm.c | 9 ++++++--- + 2 files changed, 7 insertions(+), 4 deletions(-) + +commit 150c1e7044c57443d458e12bfc427d3a019cb60b +Author: Bryce Harrington +Date: Mon Sep 22 15:41:24 2014 -0700 + + Don't return NULL to clients when getting image + + Return an error surface instead. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061 + + src/cairo-qt-surface.cpp | 2 +- + src/cairo-quartz-image-surface.c | 2 +- + src/win32/cairo-win32-surface.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 40e757679634ba6261b9df231ba5c706625e215d +Author: Bryce Harrington +Date: Mon Sep 22 15:06:54 2014 -0700 + + NEWS: Note that downscaling changes only affect image + fallback + + NEWS | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 402b456a3229f6c7f1550e66bbd8125c253a4ff1 +Author: Bryce Harrington +Date: Thu Jul 31 17:58:15 2014 -0700 + + gl: Increase default VBO size on GL to 1M + + The default VBO size was reduced from 256k to 16k because embedded + devices had trouble with the larger memory demands of a big VBO. My + testing[1] indicates this incurred a 5% performance loss on at least one + of Cairo's performance tests. Further testing showed that with + late-model graphics cards, further performance benefits can be seen with + even larger VBO sizes, up to 8.3% at 1M for Intel. + + Now that we can set the vbo size differently for different backends, set + it to the lower value (16k) for EGL, and higher (1M) for GL. + + 1: http://www.bryceharrington.org/wordpress/2013/08/vbo-size/ + + Signed-off-by: Bryce Harrington + + src/cairo-egl-context.c | 6 ++++++ + src/cairo-gl-private.h | 2 +- + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit aa820c13d78a4fc1c87da0da9012ee532aa2d50a +Author: Bryce Harrington +Date: Thu Jul 31 17:43:03 2014 -0700 + + gl: Track the VBO size as a property of the ctx + + Change suggested by Chris Wilson. This will enable setting different + vbo sizes for GL vs. EGL. + + Signed-off-by: Bryce Harrington + + src/cairo-gl-composite.c | 3 ++- + src/cairo-gl-device.c | 4 +++- + src/cairo-gl-info.c | 22 ++++++++++------------ + src/cairo-gl-private.h | 3 ++- + 4 files changed, 17 insertions(+), 15 deletions(-) + +commit 036f47c34579259fa86d0193797b6f83fe79bbeb +Author: Bryce Harrington +Date: Mon Aug 19 19:38:26 2013 -0700 + + cairo-gl: Make VBO size run-time settable + + The default VBO size was reduced from 256k to 16k last year in commit + 90860241 due to problems with larger VBOs on embedded hardware. + However, that change resulted in a 5% performance impact to the + firefox-fishbowl benchmark when using the spans or traps compositors. + + This patch doesn't change the VBO size, but does permit it to be + altered via an environment variable, to facilitate testing. + + Signed-off-by: Bryce Harrington + + src/cairo-gl-composite.c | 2 +- + src/cairo-gl-device.c | 2 +- + src/cairo-gl-info.c | 22 ++++++++++++++++++++++ + src/cairo-gl-private.h | 8 ++++++-- + 4 files changed, 30 insertions(+), 4 deletions(-) + +commit 8479b6086710e11c81c0059ffc5fa6a71d14256c +Author: Ravi Nanjundappa +Date: Tue Sep 16 10:18:02 2014 +0530 + + test: Add test oversized egl surfaces + + This test exercises error scenario when creating over sized egl surface + that is larger than maximum framebuffer or texture dimensions of the + context + + Signed-off-by: Ravi Nanjundappa + + test/Makefile.am | 4 ++ + test/Makefile.sources | 3 ++ + test/egl-oversized-surface.c | 117 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 124 insertions(+) + +commit 3d68352e3c00b836e50c2eacb0b80ae5a0e15a65 +Author: Bryce Harrington +Date: Thu Sep 18 13:18:48 2014 -0700 + + NEWS: Drop unfinished thought + + NEWS | 1 - + 1 file changed, 1 deletion(-) + +commit 54670ec13d64efa94f552b5473c1f15a9db1cecd +Author: Bryce Harrington +Date: Wed Sep 17 20:27:13 2014 -0700 + + AUTHORS: Add Ravi, myself, and a couple other frequent contributors + + AUTHORS | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 33a54e7c204c4bb7fb0f1f2844608a78ea317db4 +Author: Bryce Harrington +Date: Wed Sep 17 20:25:37 2014 -0700 + + README: Update required dependencies + + Also adds mention of the skia backend. + + README | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +commit d1fa4d44fe6b70eba6d5f620c5c4a6c122cc7fc8 +Author: Bryce Harrington +Date: Wed Sep 17 20:04:01 2014 -0700 + + NEWS: Bring up to date with recent bug fixes. + + NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 66 insertions(+), 3 deletions(-) + +commit e0c0a673ee757615bd3d22f46767535e9f53d6f5 +Author: Bryce Harrington +Date: Wed Sep 17 17:14:01 2014 -0700 + + Disable font options for xcb. + + This patch makes a bunch of tests pass again. The first hunk one fixes a + shameful oversight (whoops), the second one effectively reverts + e691d242. That change broke 102 xcb and 70 xlib tests, including a + bunch of *twin-antialias-* test cases. Patch thanks to Uli Schlachter. + + Signed-off-by: Bryce Harrington + + src/cairo-xcb-screen.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 0aa43ed886c0f8468a21a470f2f024bd4d8a4513 +Author: Adrian Johnson +Date: Sun Sep 14 22:02:12 2014 +0930 + + win32 printing: fix image scale when GDI scale is not identity + + src/win32/cairo-win32-printing-surface.c | 1 + + 1 file changed, 1 insertion(+) + +commit e691d242d592a8556e25659fb091a2031abee4c9 +Author: Lukáš Lalinský +Date: Wed Sep 3 22:53:55 2014 +0200 + + xcb: Initialize font options from Xft resources + + There is a similar code in the Xlib backend. The logic here is the same, but + XCB doesn't support X resources directly, so there is some custom code + to get and parse the resources from the root window. + + Signed-off-by: Lukáš Lalinský + Reviewed-by: Uli Schlachter + + src/Makefile.sources | 1 + + src/cairo-xcb-private.h | 19 +++ + src/cairo-xcb-resources.c | 304 ++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-xcb-screen.c | 108 ++++++++++++++++ + src/cairo-xcb-surface.c | 6 +- + 5 files changed, 435 insertions(+), 3 deletions(-) + +commit e77d0a5611fedce2bfa0940ff62f003c1f9cfa08 +Author: David Weiß +Date: Fri Sep 5 17:03:26 2014 +0200 + + made paths to pixman, libpng and zlib configurable by commandline for win32 builds + + Reviewed-by: Bryce Harrington + + build/Makefile.win32.common | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +commit 3b9d7e583f376413df655f778a3ef04537e8a5b6 +Author: Ravi Nanjundappa +Date: Fri Sep 5 12:15:02 2014 +0530 + + qt: Suppress warnings in qt backend build + + This patch fixes majorly 2 kinds of warning issues: + + (1) + cc1plus: warning: command line option '-Wold-style-definition' is valid for Ada/C/ObjC but not for C++ [enabled by default] + cc1plus: warning: command line option '-Wdeclaration-after-statement' is valid for C/ObjC but not for C++ [enabled by default] + cc1plus: warning: command line option '-Wnested-externs' is valid for C/ObjC but not for C++ [enabled by default] + cc1plus: warning: command line option '-Wstrict-prototypes' is valid for Ada/C/ObjC but not for C++ [enabled by default] + cc1plus: warning: command line option '-Wmissing-prototypes' is valid for Ada/C/ObjC but not for C++ [enabled by default] + cc1plus: warning: command line option '-Wbad-function-cast' is valid for C/ObjC but not for C++ [enabled by default] + + Solution: Enable these warnings only for C compiler and not for C++ + + (2) + cairo-qt-surface.cpp: In function 'cairo_int_status_t _cairo_qt_surface_fill(void*, cairo_operator_t, const cairo_pattern_t*, const cairo_path_fixed_t*, cairo_fill_rule_t, double, cairo_antialias_t, const cairo_clip_t*)': + cairo-qt-surface.cpp:852:5: warning: inlining failed in call to 'PatternToBrushConverter::PatternToBrushConverter(const cairo_pattern_t*)': --param max-inline-insns-single limit reached [-Winline] + cairo-qt-surface.cpp:1339:38: warning: called from here [-Winline] + cairo-qt-surface.cpp:390:1: warning: inlining failed in call to 'QPainterPath _ZL10path_to_qtPK17_cairo_path_fixedPK13_cairo_matrix.part.13()': call is unlikely and code size would grow [-Winline] + cairo-qt-surface.cpp:1306:1: warning: called from here [-Winline] + cairo-qt-surface.cpp:1051:5: warning: inlining failed in call to 'PatternToBrushConverter::~PatternToBrushConverter()': call is unlikely and code size would grow [-Winline] + + Solution: Add __attribute__ ((noinline)) to the function as mentioned in + http://stackoverflow.com/questions/11724235/warning-for-template-with-g-o2-or-os-o-o1 (Edit 3) + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + build/configure.ac.warnings | 13 +++++++------ + src/cairo-qt-surface.cpp | 9 ++++++--- + 2 files changed, 13 insertions(+), 9 deletions(-) + +commit 29a8b4e970379ca04a7db8e63c71bb34c0e349ce +Author: Maks Naumov +Date: Wed Aug 20 09:52:45 2014 -0700 + + Fix _cairo_mesh_pattern_equal() when cairo_mesh_patch_t structs are different + + Signed-off-by: Maks Naumov + Reviewed-by: Bryce Harrington + + src/cairo-pattern.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e6bf829d8953fac82ccc80618c6cae41346e483f +Author: Maks Naumov +Date: Wed Aug 20 09:38:37 2014 -0700 + + Fix font x_scale value in _compute_transform() + + Signed-off-by: Maks Naumov + Reviewed-by: Bryce Harrington + + src/cairo-ft-font.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6ae5b197623867e2baca0bf4fe2907ea55536f5 +Author: Ravi Nanjundappa +Date: Mon Aug 25 09:28:40 2014 +0530 + + test: Fix null pointer issue reported by cppcheck static analysis tool + + cppcheck analysis tool reports the following issues when run on the + latest Cairo source. + + $ grep "(error)" cppcheck_error_log.txt + [test/pdf-mime-data.c:58]: (error) Possible null pointer dereference: file - otherwise it is redundant to check if file is null at line 53 + [test/pdf-mime-data.c:75]: (error) Resource leak: fp + $ + + The proposed changes fixes the above issues. + + And also it does some refactoring to print the appropriate error messages + for each error condition in read_file() function and also to free the allocated + data buffer. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Chris Wilson + + test/pdf-mime-data.c | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +commit 52c4f0f2dafcc6e087a9c3c6d00c582fc272c2c2 +Author: Ravi Nanjundappa +Date: Thu Aug 21 18:18:34 2014 +0530 + + src: Fix memory issue reported by cppcheck static analysis tool + + cppcheck analysis tool reports the following issues when run on the + latest Cairo source. + + $ grep "(error)" cppcheck_error_log.txt + [src/skia/cairo-skia-surface.cpp:245]: (error) Memory leak: surface + $ + + The proposed changes fixes the above issues. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Chris Wilson + + src/skia/cairo-skia-surface.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit a5f51588afd9d5629b03297eb29ff46350b6ba50 +Author: Chris Wilson +Date: Mon Aug 25 08:55:24 2014 +0100 + + traps,xcb: Set the box count after filtering + + After converting, the number of boxes should only count the number of + non-zero boxes and forget about the zero-sized boxes we skipped over. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81699 + Signed-off-by: Chris Wilson + + src/cairo-traps-compositor.c | 4 ++-- + src/cairo-xcb-surface-render.c | 5 +++-- + 2 files changed, 5 insertions(+), 4 deletions(-) + +commit 13a09526d2120c244471e03b6ae979016ef88e83 +Author: Chris Wilson +Date: Sat Aug 23 14:16:55 2014 +0100 + + traps,xcb: Prefilter zero-area boxes when converting traps + + The rectangular tesselation routines rely on the presuming that all the + boxes it has to handle are already filtered to remove empty boxes. + + << /width 800 /height 600 >> surface context + 0.0848671 0 0 0.0848671 39.907812 5.608896 matrix transform + 8 0 m 12.417969 0 16 3.582031 16 8 c 16 12.417969 12.417969 16 8 16 c + 3.582031 16 0 12.417969 0 8 c 0 3.582031 3.582031 0 8 0 c h + clip + 16 0 m 8 8 l 16 16 l h + clip + 0 0 16 16 rectangle + fill + + Triggers the error given a traps tesselator like cairo-xlib. + + Reported-by: Henrique Lengler + Analyzed-by: Massimo + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81699 + Signed-off-by: Chris Wilson + + src/cairo-traps-compositor.c | 28 +++++++++++++++++----------- + src/cairo-xcb-surface-render.c | 29 ++++++++++++++++++----------- + 2 files changed, 35 insertions(+), 22 deletions(-) + +commit 545444ec1f79eab268647e9859efc9c8d1a10391 +Author: Uli Schlachter +Date: Sat Aug 23 14:38:36 2014 +0200 + + xcb: Correctly check for image surface for inplace upload + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82987 + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 183ac1889f369743a86a8a2ff6b61486acda614e +Author: Maks Naumov +Date: Tue Aug 19 14:59:14 2014 -0700 + + Fix width and height args for _cairo_xcb_connection_copy_area() + + Found via static analysis. + + Signed-off-by: Maks Naumov + Reviewed-by: Uli Schlachter + + src/cairo-xcb-surface-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eab218d1e3b0f2a3c0ab33d3173c42cc57e9bf8c +Author: Ravi Nanjundappa +Date: Wed Aug 20 11:45:19 2014 +0530 + + configure.ac: configuration check to enable either gl or glesv2, not both at the same time + + A proposed solution for the discussion in + https://bugs.freedesktop.org/show_bug.cgi?id=57379#c12, + to avoid muliple definition of cairo_gl_* symbols when + both gl and glesv2 backends are enabled at the same time + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 932548ef25864958ef966ffe83e7c945c3ff3cd4 +Author: Rodrigo Rivas Costa +Date: Tue Aug 19 00:09:50 2014 +0930 + + win32 print: fix cache_frozen assertions + + Bug 81709 + + src/win32/cairo-win32-printing-surface.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 7736d08e22ffd7ab9968617164c7e027125b7755 +Author: Ravi Nanjundappa +Date: Wed Aug 6 09:49:59 2014 +0530 + + README : Update README file related to usage of FORMAT make variable + + Reformatted the README file to simplify the sentences. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + Reviewed-by: Chris Wilson + + test/README | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +commit c61aeddc44c8619a271151b2a2f6bf9f8ff2a18b +Author: Ravi Nanjundappa +Date: Tue Aug 5 14:31:37 2014 +0530 + + test: improve selective execution of Cairo tests based on FORMAT option + + This patch improves the patch "test: Selective execution of Cairo tests based on FORMAT option" + by extending the usage of FORMAT option even in the case of user not + providing TARGETS= option + + For ex: + (1). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba + This command runs the zero-alpha test for all the backends with + argb32 content format and so on. + (2). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba,rgb + This command runs the zero-alpha test for all the backends with + argb32 and rgb24 content formats. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + Reviewed-by: Chris Wilson + + boilerplate/cairo-boilerplate.c | 68 +++++++++++++++++++++++++++++++++-------- + 1 file changed, 55 insertions(+), 13 deletions(-) + +commit f8e0ecb5af8859e2bff26cb719b10b3a9784f6f1 +Author: Ravi Nanjundappa +Date: Thu Jul 24 14:19:21 2014 +0530 + + test: Selective execution of Cairo tests based on FORMAT option + + Added a new command line option FORMAT which can take rgb and/or rgba + values which enables the execution of tests only for the given FORMAT + For ex: + (1). CAIRO_TESTS="zero-alpha" make test TARGETS=ps2,image FORMAT=rgba,rgb + This command runs the zero-alpha test for both ps2 and image backends + with argb32 and rgb24 content formats. + (2). CAIRO_TESTS="zero-alpha" make test TARGETS=ps2,image FORMAT=rgba + This command runs the zero-alpha test for both ps2 and image backends + with argb32 content format and so on. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + Reviewed-by: Chris Wilson + + boilerplate/cairo-boilerplate.c | 61 ++++++++++++++++++++++++++++++++++++----- + perf/Makefile.am | 3 +- + test/Makefile.am | 3 +- + 3 files changed, 58 insertions(+), 9 deletions(-) + +commit 1d9f4ae5208d86843a6001d10c9cb5b16df2b785 +Author: Bill Spitzak +Date: Tue Aug 12 15:48:04 2014 -0700 + + V5: Use NEAREST filter when possible + + (changed to use determinant funciton and remove debug printf) + + Modifies _cairo_matrix_has_unity_scale to return true for 90 degree rotations + by allowing error caused by inaccuracy in trig functions. + + This fails after 14 additions of M_PI_2 to itself as a float argument to + cairo_rotate, but the failure is in the detection of the integer translate, + not in the trig components. I believe this is due to the matrix inversion, + which may need similar rounding. + + Reviewed-by: Bryce Harrington + + src/cairo-matrix.c | 37 +++++++++++++++++++++++-------------- + src/cairo-pattern.c | 2 +- + src/cairo-xcb-surface-render.c | 7 ++----- + 3 files changed, 26 insertions(+), 20 deletions(-) + +commit 7d44f8d47e7c4389cf6a3baefc7fee7b5dffbb21 +Author: Ravi Nanjundappa +Date: Tue Aug 12 14:16:46 2014 +0530 + + test : build fix when --enable-pdf=no + + Though --enable-pdf=yes by default, when --enable-pdf=no, the cairo build + fails due to unavailability of cairo-pdf.h and related cairo pdf's apis. + The current changes fixes this issue by conditionally checking if PDF + surface is enabled or not. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + Tested-by: Bryce Harrington + + test/fallback-resolution.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit c7ff9bb32e20679d6da4e8a2856be716e5bd9e12 +Author: Uli Schlachter +Date: Mon Jul 21 17:10:16 2014 +0200 + + Remove LTO support + + This just never worked too well and caused too many issues. I don't think anyone + will miss this. + + As mentioned in the below bug report, proper LTO support also requires using + special versions of ranlib, nm and ar which support the LTO object files. + Otherwise, calling the normal ranlib on an .a library breaks the list of + exported symbols and thus completely breaks the static library. + + This (partly) reverts the following commits: + + c3645d97ebd24c6f7ad850785d585aebc706a11c configure.ac: Add a --disable-lto configure option + d486ea30f1a58640a1178de74f705a73845b1cda configure: Conditionally include -flto + 0870c6fb5b39dcc04fa376123848adde2d06d2ce gcc-4.5 warnings and optimisation flags. + + (The last commit is the one which brought us -flto in the first place even + though it doesn't talk about this. It's also the one which is only reverted + partly.) + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77060 + CC: Chris Wilson + Signed-off-by: Uli Schlachter + Reviewed-by: Bryce Harrington + + build/configure.ac.warnings | 16 ---------------- + 1 file changed, 16 deletions(-) + +commit 27c9923e9887bab5854ecccc81dda69687a0b9ae +Author: Chris Wilson +Date: Fri Aug 1 11:29:29 2014 +0100 + + xlib: Undo debug hack to force fallbacks + + Remove the debug hack from + + commit f337342c88092a251dc00476c4a9880d1cb90822 + Author: Bill Spitzak + Date: Fri Jul 18 18:46:26 2014 -0700 + + V6 image: Use convolution filters for sample reconstruction when downscaling + + as it forces the fallback image surface for xlib causing severe + performance degradation. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82002 + Signed-off-by: Chris Wilson + Cc: Bill Spitzak + Cc: Bryce Harrington + + src/cairo-xlib-display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f337342c88092a251dc00476c4a9880d1cb90822 +Author: Bill Spitzak +Date: Fri Jul 18 18:46:26 2014 -0700 + + V6 image: Use convolution filters for sample reconstruction when downscaling + + This version removes testing code and has some changes to match my current + pixman version. My proposed pixman patch (not finished yet) will produce + exactly the same results as this cairo patch. + + This code contains an all-new filter generator to replace the one that is + in pixman. Results in 222 pass/298 failed image tests, which is much better + than the previous versions of this patch. + + Filter generator (which should probably be in pixman): + + - Single filter, no "reconstruction" and "sample" filter + - Filters for derivative < 1 work + - Fixed IMPULSE and BOX + - Added TENT, CATMULL_ROM, NOTCH. Remove LANZCOS2. + - Renamed CUBIC to MITCHELL + + Cairo's filter settings: + + - CAIRO_FILTER_GOOD: uses BOX filter for scales less than .75 in either + direction. Uses PIXMAN_FILTER_GOOD (ie BILINEAR) otherwise. + + - CAIRO_FILTER_BEST: uses CATMULL filter always. Upscaling more than 2x will + produce anti-aliased square pixels, similar to OS/X. + + - CAIRO_FILTER_GAUSSIAN: this obsolete value is used to test other filters. + The program must declare and poke the filter into the static varialbe + ikernel. This should be removed for production code. + + NYI: This version uses the fallback for xlib always. The xlib and xcb backends + must be rewritten to use the fallback version if filtering is needed. Or the + filtering code must be moved to XRender. + + src/cairo-image-source.c | 420 ++++++++++++++++++++++++++++++++++++++++++++++- + src/cairo-xlib-display.c | 2 +- + 2 files changed, 420 insertions(+), 2 deletions(-) + +commit e71b917bbfc881ddd6ae6ed4367efd328a95af93 +Author: Bryce Harrington +Date: Thu Jul 24 18:41:03 2014 -0700 + + xlib: Fix mispelling in a comment + + src/cairo-xlib-display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 82b4781f18d4dc3d368b04a436f854a8f0cff1e1 +Author: Bryce Harrington +Date: Mon Jul 21 15:05:14 2014 -0700 + + cairo-wideint: Fix typo in two cairo_uint128 functions + + _cairo_int128_negate and _cairo_int128_not are #defines of + _cairo_uint128_negate and _cairo_uint128_not respectively. The function + implementations should use the actual function name not the aliases. On + systems without a uint128 type, these could lead to build issues. + + Credit for finding this go to Dr. Peter Barnes, LLNL. + + src/cairo-wideint.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 9e6ceb23b45b7da19911b38eddb7f42f921929b1 +Author: Behdad Esfahbod +Date: Wed Jul 23 12:12:04 2014 -0400 + + More binary mode for Windows + + Based on: + https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-cairo/0012-more-binary-mode.mingw.patch + + boilerplate/cairo-boilerplate.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 23dce494d1850ee28a9c8d67972052c5a784cacf +Author: Behdad Esfahbod +Date: Wed Jul 23 12:09:17 2014 -0400 + + Binary mode in any2ppm + + From: + https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-cairo/0010-binary-mode-in-any2ppm.mingw.patch + + test/any2ppm.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit f4dbba26d4fc571e0621f3c7a98196c501f8bcc5 +Author: Behdad Esfahbod +Date: Mon Jul 14 15:54:38 2014 -0400 + + [cairo-trace] Work around fontconfig :charset= parse format change + + As dicussed on the mailing list. + + util/cairo-script/cairo-script-operators.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 2a37cbbabc00c7474be5baa25f848778b1773b2c +Author: Bryce Harrington +Date: Tue Jul 8 15:53:41 2014 -0700 + + configure.ac: Fix broken build for Qt backend + + When --enable-qt is specified, the build will break due to missing + libstdc++: + + CCLD cairo-test-suite + /usr/bin/ld: ../boilerplate/.libs/libcairoboilerplate.a(libcairoboilerplate_cxx_la-cairo-boilerplate-qt.o): undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3' + //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line + collect2: error: ld returned 1 exit status + + When using g++ to compile and link code, g++ automatically links + libstdc++. However, in cairo we're using g++ only to compile, so need + to explicitly link against libstdc++ for backends that need iostream, + stl, or other stdc++ features. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=59038 + Signed-off-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit c3645d97ebd24c6f7ad850785d585aebc706a11c +Author: Bryce Harrington +Date: Tue Jul 8 13:14:20 2014 -0700 + + configure.ac: Add a --disable-lto configure option + + Link-Time Optimization seems to be stable enough with gcc 4.8 and 4.9, + but has proven to be an issue in the past for many cairo users (webkit, + efl, ubuntu, opensuse, gentoo, arch...) who carry patches to disable it. + + Gentoo's patch[1] adds a --disable-lto option to leave it enabled by + default but give users the ability to work around lto related build + problems (c.f. fdo #77060). Patch appears to have been authored by + Alexandre Rostovtsev[2]. + + 1: sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-libs/cairo/files/cairo-1.12.16-lto-optional.patch + 2: https://bugs.gentoo.org/show_bug.cgi?id=509552 + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=60852 + Signed-off-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + build/configure.ac.warnings | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit 0f46fc8dc173698b6d61ba757e1e42f2319d6ace +Author: Bryce Harrington +Date: Tue Jul 8 12:39:02 2014 -0700 + + configure.ac: Quell warnings about AM_PROG_AR when using automake 1.12 + + Without this, autogen.sh issues warnings like: + + /usr/share/automake-1.14/am/ltlibrary.am: warning: 'libcairoboilerplate_cxx.la': linking libtool libraries using a non-POSIX + /usr/share/automake-1.14/am/ltlibrary.am: archiver requires 'AM_PROG_AR' in 'configure.ac' + boilerplate/Makefile.am:18: while processing Libtool library 'libcairoboilerplate_cxx.la' + + AM_PROG_AR was introduced in automake 1.11.2. As per the docs for + AM_PROG_AR, it is supposed to be included when the archiver ('ar') is + used, but prior to automake 1.12 the warning was only shown iff + -Wextra-portability was specified. automake 1.12 introduced a change + that includes -Wextra-portability when -Wall is specified. + + For further discussion of the issue, see: + + http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11401 + http://lists.gnu.org/archive/html/automake/2012-05/msg00014.html + + Signed-off-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit 312553af298692111928a9443b75a00bf46d2adb +Author: Behdad Esfahbod +Date: Fri Jul 11 11:05:43 2014 -0400 + + [trace] Don't print FC_CHARSET, FC_LANG, and FC_CAPABILITY + + There are many more that can go, but these take the most bytes. + FC_CHARSET needs to go specially because I recently changed + its format in fontconfig. Ouch! + + util/cairo-trace/trace.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +commit 4cb220773d4babe216afae1198bb192956ffeae9 +Author: Behdad Esfahbod +Date: Fri Jul 11 10:58:14 2014 -0400 + + chmod a+x cairo-trace + + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +commit e279709bf32f13314b8008e6f640d2fab8cc8a78 +Author: Ravi Nanjundappa +Date: Thu Jul 10 16:14:46 2014 +0530 + + skia : Add Debug support for skia backend + + Enable the DEBUG support for skia backend to provide more + descriptive information on the unexpected operational behaviours. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + src/cairo-skia-surface.cpp | 28 +++++++++++++++++----------- + 1 file changed, 17 insertions(+), 11 deletions(-) + +commit 8a605472d201e30ddcf3895d554cc4143cd54fb2 +Author: Ravi Nanjundappa +Date: Wed Jul 9 15:50:57 2014 +0530 + + .gitignore: Ignore the generated profile data files from callgrind tool in test/ + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + test/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 30cb23d3b64ab085578c23a194391d982ad10d32 +Author: Jeff Muizelaar +Date: Wed Jul 9 16:33:53 2014 -0400 + + clang-cl: Use size of the pointer explicitly + + This works around http://llvm.org/PR20216. + + src/cairo-compiler-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 28c3b92fb4f6ed8511a46ad9c0e1bd8cfdd477ed +Author: Bryce Harrington +Date: Tue Jul 8 17:44:56 2014 -0700 + + .gitignore: Ignore two generated files in build/ + + Signed-off-by: Bryce Harrington + + .gitignore | 1 - + build/.gitignore | 2 ++ + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 7bd68b57999bf1564ecbadf6c9aae6bf9f7aa4a7 +Author: Ravi Nanjundappa +Date: Mon Jun 30 17:05:26 2014 +0530 + + skia: update the source to build with the latest skia + + This fixes several build related issues for the skia backend + which is introduced due to skia source up-gradation. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Uli Schlachter + Reviewed-by: Bryce Harrington + + configure.ac | 12 ++++---- + src/skia/cairo-skia-context.cpp | 65 ++++++++++++++++++++++++++++++----------- + src/skia/cairo-skia-private.h | 4 +-- + src/skia/cairo-skia-surface.cpp | 13 ++++----- + 4 files changed, 60 insertions(+), 34 deletions(-) + +commit be62b1221169469c8923a5a1ec669761f5344c57 +Author: Ravi Nanjundappa +Date: Wed Jul 2 14:13:58 2014 +0530 + + xcb: make use of _cairo_surface_is_xcb to check for surface type + + Introduced a new inline function _cairo_surface_is_xcb() as similar to + _cairo_surface_is_image() and used the same to check for xcb surface + type + + Signed-off-by: Ravi Nanjundappa + + src/cairo-xcb-private.h | 15 +++++++++++++++ + src/cairo-xcb-surface-core.c | 2 +- + src/cairo-xcb-surface-render.c | 2 +- + src/cairo-xcb-surface.c | 4 ++-- + 4 files changed, 19 insertions(+), 4 deletions(-) + +commit 550385fb004e6064305518cf265adc03bd2d0c0b +Author: Jeff Muizelaar +Date: Mon Jun 30 14:17:18 2014 -0400 + + Don't use __FUNCTION__ as a string literal + + clang-cl doesn't support this and we don't gain much + from using it. + + src/cairo-compiler-private.h | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit f574fec8d2d1f83525fd7e4dbb266b6e5091627d +Author: Ravi Nanjundappa +Date: Mon May 19 14:59:29 2014 +0530 + + src : Fix warn_unused_result warnings from gcc + + Fix 'unused-result' warning messages by + - replacing cairo_private to cairo_private_no_warn in the + declaration of the cairo private apis '_cairo_surface_unmap_image', + '_cairo_polygon_add_line', '_cairo_polygon_add_external_edge' and + '_cairo_polygon_add_contour' + - removing cairo_warn for 'render_rows' member function pointer in + 'struct _cairo_span_renderer' + + Signed-off-by: Ravi Nanjundappa + + src/cairo-spans-private.h | 2 +- + src/cairoint.h | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 5741a7f2cab3548467a020c89bb7363d398f9c0d +Author: Eric Le Bihan +Date: Fri May 9 21:22:04 2014 +0200 + + test: fix build of any2ppm if fork not available + + The test program any2ppm can run as daemon. This feature can be disabled + at compile time, if the required headers are not present. However the + support for fork() is not checked. + + This patch fixes this issue. + + Signed-off-by: Eric Le Bihan + + test/any2ppm.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3d94269bd427304af70ae681d5533b572d19ec3c +Author: Uli Schlachter +Date: Tue May 13 10:15:12 2014 +0200 + + Revert "image: Use convolution filters for sample reconstruction when downscaling" + + This reverts commit fb57ea13e04d82866cbc8e86c83261148bb3e231. + + When running cairo-test-suite with the parameter "-a", it also runs each test + with a non-zero device-offset and device-scaling. The above commit influenced + the device-scaling results badly. E.g. some test results ended up with a black + border at the top-most and left-most row that looked like there was an offset of + "0.5" in drawing the image and thus pixels outside of the image were sampled. + + This can be seen by the influence that this revert has on the results from + running CAIRO_TEST_TARGET=image ./cairo-test-suite -a: + + Before: 31 Passed, 489 Failed [1 crashed, 8 expected], 31 Skipped + After: 225 Passed, 295 Failed [1 crashed, 8 expected], 31 Skipped + + Most of the failures that disappeared are from the device-scaling tests. + + With such disastrous results on the test suite, this cannot really be usable for + real-world applications. + + Signed-off-by: Bryce Harrington + + src/cairo-image-source.c | 65 ++++++++---------------------------------------- + 1 file changed, 10 insertions(+), 55 deletions(-) + +commit 2d89cbb30e276cec57a893d4f0d45428858e5e8d +Author: jimmyfrasche +Date: Sun May 25 20:22:16 2014 -0700 + + Add more info to cairo_surface_set_mime_data docs. + + Explains how to use cairo_surface_set_mime_data so that the image always + gets used even if the MIME data cannot be. + + Signed-off-by: jimmyfrasche + + src/cairo-surface.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit ead5c7909f3db1d0d81121fc2775c458871891b2 +Author: Ravi Nanjundappa +Date: Mon May 12 14:59:03 2014 +0530 + + vg: Use EGL_NONE and GLX_NONE in place of None + + Use EGL_NONE in EGL section and GLX_NONE in GLX section + instead of None in cairo-boilerplate-vg.c + + Signed-off-by: Ravi Nanjundappa + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55805 + + boilerplate/cairo-boilerplate-vg.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit d1453c512c8213115bd489b3ea8849b1c840b551 +Author: Ravi Nanjundappa +Date: Tue May 6 15:44:21 2014 +0530 + + test : Maintain consistency in the usage of xcalloc + + xcalloc is a wrapper for calloc. If it can't allocate memory then it + terminates the program. The current changes replace the usages of calloc + by xcalloc in tests. + + Signed-off-by: Ravi Nanjundappa + + test/negative-stride-image.c | 2 +- + test/stride-12-image.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 69e10bc8b53792f58e06387542c4eeeca52795c9 +Author: Ravi Nanjundappa +Date: Thu May 15 15:59:58 2014 +0530 + + glx: Use GLX_NONE in place of None + + Use "GLX_NONE" in rgb and rgba attributes instead of + "None" in cairo-boilerplate-glx.c + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + boilerplate/cairo-boilerplate-glx.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 247cfaaa2562d28ee39a5a35eea9772ee365937b +Author: Sylvestre Ledru +Date: Wed May 7 17:15:22 2014 +0200 + + Fix some memory leaks found by scan-build, the LLVM/Clang static analyzer + + Signed-off-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + src/cairo-cff-subset.c | 4 +++- + src/cairo-pdf-surface.c | 8 +++++++- + test/pdf-mime-data.c | 2 ++ + 3 files changed, 12 insertions(+), 2 deletions(-) + +commit 5e7b724dd3ed13c7c5a6ffe3874ad21b7fbe2176 +Author: Sylvestre Ledru +Date: Wed May 7 17:16:09 2014 +0200 + + Remove some potential double free + + Signed-off-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + src/cairo-truetype-subset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 85b05e84acd89b08e5e72849133ae84cf2cdcb54 +Author: jimmyfrasche +Date: Sun May 11 20:06:17 2014 -0700 + + Pattern document clarification + + Replaces documentation of the form "range 0 to 1 less than the number" + with "ranges from 0 to n-1 where n is the number", which is idiomatic + mathematical writing and less ambiguous. + + Signed-off-by: jimmyfrasche + Reviewed-by: Bryce Harrington + + src/cairo-pattern.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 55608e4fd6947f26789557ffc757affc509b141b +Author: Ravi Nanjundappa +Date: Mon May 5 12:34:21 2014 +0530 + + boilerplate: Maintain consistency in the usage of switch cases + + Some of the switch cases used in boilerplate are not consistent + across other source files in the same module. This patch fixes the + consistency issues of switch case usage in the boilerplate module. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Uli Schlachter + + boilerplate/cairo-boilerplate-drm.c | 12 ++++++-- + boilerplate/cairo-boilerplate-xlib.c | 12 ++++++-- + boilerplate/cairo-boilerplate.c | 53 +++++++++++++++++++++++++----------- + 3 files changed, 55 insertions(+), 22 deletions(-) + +commit 18b3cce2f5812c357e4b6310e72d72dd9ec92ed4 +Author: Bryce Harrington +Date: Tue May 6 10:18:19 2014 -0700 + + Fix segfault in firefox when scrolling on certain pages + + Bug discovered by thorsten + + Patch from Chris Wilson + + src/cairo-xcb-surface-render.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit da9ef97372fb9c22f66507e0ab37968b1131f077 +Author: Sylvestre Ledru +Date: Fri May 2 18:53:41 2014 +0200 + + Remove some useless declarations found by scan-build, the LLVM/clang static analyzer + + Reviewed-by: Bryce Harrington + + src/cairo-contour.c | 1 - + src/cairo-ft-font.c | 2 -- + src/cairo-path-stroke-polygon.c | 10 ---------- + src/cairo-xcb-connection-core.c | 2 -- + test/pdiff/lpyramid.c | 4 ++-- + test/tighten-bounds.c | 2 +- + util/cairo-script/cairo-script-file.c | 1 - + 7 files changed, 3 insertions(+), 19 deletions(-) + +commit 52b137bc3e3284ecef3102b0d976fd2320e0f473 +Author: Ravi Nanjundappa +Date: Wed Apr 23 08:32:19 2014 +0530 + + test and util: maintain consistency in the usage of ARRAY_LENGTH macro + + ARRAY_LENGTH macro is used in perf's cairo-perf.h, src's cairoint.h, + test's cairo-test.h and in some internal header files of util's + directory.So to maintain consistency ARRAY_SIZE is replaced with + ARRAY_LENGTH macro. + + Signed-off-by: Ravi Nanjundappa + Reviewed-by: Bryce Harrington + + test/cairo-test.c | 12 ++++++------ + util/cairo-trace/trace.c | 7 ++++--- + util/malloc-stats.c | 9 +++++---- + 3 files changed, 15 insertions(+), 13 deletions(-) + +commit 0e0004a9716ca50bf14fa0e5e1919d90b8d11960 +Author: Ravi Nanjundappa +Date: Tue Apr 22 17:53:12 2014 +0530 + + perf: Refactor some macros to cairo-perf.h + + This commit covers one of the left out modifications from + "commit cd11a4ff0421fd293279b202be800550890574bb" by Bryce. + It removes the duplicate macro definition in cairo-perf-diff-files.c + which by default includes the cairo-perf.h having MAX macro defnition. + + Signed-off-by: Ravi Nanjundappa + + perf/cairo-perf-diff-files.c | 1 - + 1 file changed, 1 deletion(-) + +commit 2d95f803b15d3d8f70df0e7278ad7bdeaf99fb59 +Author: Bryce Harrington +Date: Thu Apr 17 23:59:36 2014 -0700 + + NEWS: Add bug links and reword feature and bug descriptions + + NEWS | 67 ++++++++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 46 insertions(+), 21 deletions(-) + +commit cd11a4ff0421fd293279b202be800550890574bb +Author: Bryce Harrington +Date: Wed Apr 16 17:37:18 2014 -0700 + + perf: Refactor some common macros to cairo-perf.h + + These macros are standard in src's cairoint.h and test's cairo-test.h + internal header files, so for consistency do the same thing with perf's + cairo-perf.h. + + Reviewed-by: Uli Schlachter + + perf/cairo-perf-chart.c | 2 -- + perf/cairo-perf-compare-backends.c | 1 - + perf/cairo-perf-trace.c | 5 ++--- + perf/cairo-perf.h | 12 ++++++++++++ + perf/micro/cairo-perf-cover.c | 5 ++--- + perf/micro/dragon.c | 8 -------- + perf/micro/zrusin.c | 4 +--- + 7 files changed, 17 insertions(+), 20 deletions(-) + +commit 3e22a8580a8045e450a2f2e47c8ac36abf8882ae +Author: Uli Schlachter +Date: Fri Apr 11 10:39:39 2014 +0200 + + pthread-same-source: Refresh reference images + + These reference images are generated by the new GENERATE_REFERENCE mode that the + previous commit introduced. + + I have no idea what the "base" images. From my reading of the code in + boilerplate/, these images will be used by the test-XXX targets. However, these + seem to generate the same result than e.g. the image backend. Thus, I deleted + these files. + + There is still pthread-same-source.quartz.xfail.png. This file was created in + commit b6e16b8d and touched in commit 5a1e590b1. No idea if this is still valid + and since I don't have a Mac, I won't touch it. + + The test is still broken on the following backends (out of the backends I have + compiled in). This mostly seems to be differences in image scaling, but I + couldn't figure out an easy way to tell the test suite that the new results are + correct. + + test-paginated, ps2, ps3, xcb, xcb-window, xcb-window&, xcb-fallback, xlib, + xlib-window, xlib-fallback, recording + + Signed-off-by: Uli Schlachter + + .../reference/pthread-same-source.base.argb32.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.base.rgb24.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.image16.ref.png | Bin 1007 -> 1048 bytes + test/reference/pthread-same-source.ref.png | Bin 1000 -> 1076 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit ddd344fb0f5a0e9a0e9a34306598a777ffb7667a +Author: Uli Schlachter +Date: Sat Apr 12 12:07:23 2014 +0200 + + pthread-same-source: Add ref image generation + + When the new GENERATE_REFERENCE symbol is defined to 1, no threads are involved + at all. In this case, all operations are done sequentially by the main thread. + + Thus, in this mode no thread issues can occur and the result must be usable as + reference images. + + Signed-off-by: Uli Schlachter + Reviewed-by: Bryce Harrington + + test/pthread-same-source.c | 25 ++++++++++++++++++++++--- + 1 file changed, 22 insertions(+), 3 deletions(-) + +commit 457597e2dc6fac6c879ba51da892cf31a3c432eb +Author: Bryce W. Harrington +Date: Fri Mar 14 20:24:51 2014 +0000 + + NEWS: Summarize recent changes + + This updates NEWS with items shown by `git log --stat 1.12.8..` + Hopefully I haven't misrepresented any of the work done. For sake of + brevity where there were several changes in one area, I've given a + single general entry to summarize those changes. The division between + features and bug fixes is quite rough. + + NEWS | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +commit bb17403622e9ea474017e0039af8ee48b2b285db +Author: Uli Schlachter +Date: Fri Mar 14 15:31:34 2014 +0100 + + mesh-rasterize: Fix number of iterations + + Commit 44a09f462c fixed a compiler warning, but changed the result of this code. + This is because the old 'for' loop did one more iteration than the new 'while' + loop. Fix this by incrementing the loop counter once before the loop. + + Fixes: mesh-pattern mesh-pattern-accuracy mesh-pattern-conical + mesh-pattern-control-points mesh-pattern-fold mesh-pattern-overlap + mesh-pattern-transformed record-mesh + + Signed-off-by: Uli Schlachter + Tested-by: Bryce Harrington + + src/cairo-mesh-pattern-rasterizer.c | 1 + + 1 file changed, 1 insertion(+) + +commit 372c8c314a93e0efba53319a120a9ccc2c99658b +Author: Uli Schlachter +Date: Fri Mar 14 13:47:38 2014 +0100 + + mask compositor: Set a check_composite method + + Commit 503b6b9e2ea6 added a check_composite method to the mask compositor, but + only added it to one of the existing implementations. This commit fixes that. + + In cairo-image-compositor.c, there is already a check_composite method which + just returns success for the traps compositor. This commit makes the mask + compositor use that one. + + I don't want to say much about cairo-image-mask-compositor.c except that I + wondered why this file and the file above both define a non-static function + called _cairo_image_mask_compositor_get(). In my opinion, that file should just + be deleted, since it confuses e.g. ctags, but I'll let someone else clean this + up. + + Fixes 493 crashes in the test suite for the test-mask target. + + Signed-off-by: Uli Schlachter + Tested-by: Bryce Harrington + + src/cairo-image-compositor.c | 2 +- + src/cairo-image-mask-compositor.c | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit bc05dbccd7dd2f137038479b30ed71c98ff81da6 +Author: Uli Schlachter +Date: Thu Feb 27 10:56:20 2014 +0100 + + Fix warnings from check-doc-syntax.sh + + $ ./check-doc-syntax.sh + Checking documentation for incorrect syntax + ./cairo-types-private.h (148): WARNING: cairo_hash_entry_t: missing 'Since' field (is it a private type?) + ./cairo-types-private.h (161): WARNING: cairo_hash_entry_t: not found + ./cairo-types-private.h (175): WARNING: cairo_lcd_filter_t: missing 'Since' field (is it a private type?) + ./cairo-cache-private.h (85): WARNING: cairo_cache_entry_t: missing 'Since' field (is it a private type?) + ./cairo-region.c (857): WARNING: cairo_region_overlap_t: not found + ./cairo-raster-source-pattern.c (62): WARNING: SECTION:cairo-raster-source 'Since' field in non-public element + + The warnings about missing 'Since' fields are fixed by changing the + documentation comment so that the script can see that these are private types. + + The documentation for cairo_region_overlap_t gets moved to cairo.h, just like + e.g. the documentation for cairo_status_t. + + The 'Since' field from the SECTION:cairo-raster-source is removed, because this + kind of field is needed on the individual functions and structs, not on the + section. + + Thanks to Bryce Harrington for bringing this up! + + Signed-off-by: Uli Schlachter + Tested-by: Bryce Harrington + + src/cairo-cache-private.h | 2 +- + src/cairo-raster-source-pattern.c | 2 -- + src/cairo-region.c | 12 ------------ + src/cairo-types-private.h | 4 ++-- + src/cairo.h | 11 +++++++++++ + 5 files changed, 14 insertions(+), 17 deletions(-) + +commit 0c189910539aa05125b60e59b7101e9b9685582f +Author: Bryce Harrington +Date: Thu Mar 13 15:22:40 2014 -0700 + + skia: Add section definitions and code docs for skia backend + + This fixes several distcheck errors regarding missing code docs. + + The skia backend was added in commit d7faec02, which was included in the + 1.10 release. + + Signed-off-by: Bryce Harrington + + doc/public/cairo-sections.txt | 5 +++-- + src/cairo-skia-surface.cpp | 21 +++++++++++++++++++++ + src/skia/cairo-skia-private.h | 19 +++++++++++++++++++ + 3 files changed, 43 insertions(+), 2 deletions(-) + +commit 0eb686d5454073f65ff78520ca862d07672d2a3f +Author: Bryce Harrington +Date: Tue Feb 25 17:43:22 2014 -0800 + + Document that libglib2.0-doc is needed to avoid some xref warnings + + Signed-off-by: Bryce Harrington + + RELEASING | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 8d0abb4a945a6875de956ef12883e7efe7b7fbc7 +Author: Bryce Harrington +Date: Tue Feb 25 17:09:03 2014 -0800 + + surface: Make parameter naming consistent between header and impl + + This fixes this set of distcheck errors generating docs: + + src/cairo-surface.c:1668: warning: Parameter described in source code + comment block but does not exist. FUNCTION: + cairo_surface_set_device_scale Parameter: sx. + + src/cairo-surface.c:1668: warning: Parameter described in source code + comment block but does not exist. FUNCTION: + cairo_surface_set_device_scale Parameter: sy. + + src/cairo-surface.c:1668: warning: Parameter description for + cairo_surface_set_device_scale::x_scale is missing in source code + comment block. + + src/cairo-surface.c:1668: warning: Parameter description for + cairo_surface_set_device_scale::y_scale is missing in source code + comment block. + + Signed-off-by: Bryce Harrington + + src/cairo-surface.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 4450af4f035fce8b468ad3ac9cd34da7bf81b688 +Author: Bryce Harrington +Date: Tue Feb 25 14:43:06 2014 -0800 + + Mark recently added _cairo_output_stream_print_matrix private symbol + + This fixes a distcheck error about a local PLT entry. + + Signed-off-by: Bryce Harrington + + src/cairo-output-stream-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ae954ae3ea262efae221cfda18eee73b5654a729 +Author: Bryce Harrington +Date: Tue Feb 25 13:20:49 2014 -0800 + + doc: Drop a couple quartz routines which distcheck claims don't exist + + These routines actually do exist in the source code, and have proper + documentation, so I'm not sure why distcheck dislikes them, but it's + happier without these listed. + + Signed-off-by: Bryce Harrington + + doc/public/cairo-sections.txt | 3 --- + 1 file changed, 3 deletions(-) + +commit f4a1a75078a844e2581615566122f4232d2a4f62 +Author: Bryce Harrington +Date: Tue Feb 25 13:17:00 2014 -0800 + + doc: Add missing sections and symbols for public docs + + This adds a number of items to the documentation for which code docs + exist, and also adds sections for cairo-skia and cairo-surface-observer. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48784 + + Signed-off-by: Bryce Harrington + + doc/public/cairo-sections.txt | 38 ++++++++++++++++++++++++++++++++++++++ + src/cairo-surface-observer.c | 5 +++++ + src/cairo.h | 9 +++++++++ + 3 files changed, 52 insertions(+) + +commit ed175b2a2bebb6def85133257bc11a875d13b0dd +Author: Uli Schlachter +Date: Thu Mar 6 09:45:08 2014 +0100 + + clip: Fix handling of special all-clipped cairo_clip_t + + _cairo_clip_intersect_box() wasn't checking if it was called with the special, + read-only all-clipped clip and thus could have ended up writing to read-only + memory. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=75819 + Signed-off-by: Uli Schlachter + + src/cairo-clip-boxes.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3b261bea7d8e8094ff3899aefab6bbc8628a3585 +Author: Chris Wilson +Date: Thu Mar 6 08:34:10 2014 +0000 + + clip: Do not modify the special all-clipped cairo_clip_t + + Signed-off-by: Chris Wilson + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75819 + + src/cairo-clip-boxes.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 42fdfa812eb05ecb539af739445ec8c36f0e7ac1 +Author: Bryce Harrington +Date: Wed Mar 5 12:50:36 2014 -0800 + + gitignore: Ignore generated tmpl dir in public docs + + doc/public/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit f88bd92e8b3d87ec728e3fee51eb82f07db8c95c +Author: Behdad Esfahbod +Date: Wed Mar 5 01:13:59 2014 -0800 + + Revert "[ft] Fix memory bug in copying bitmaps" + + This reverts commit a0f556f37fb7016aa304b7cf0e811c0d38f0b969. + + The change was clearly wrong now that I read. I was probably + tricked by what was fixed in the follow-up commit + e738079302a968b7b1fb9101cd4d92a8887bedce. + + src/cairo-ft-font.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 5c9fdcb4aa9c3c32fe4760586c11924dc5fb47ef +Author: Koji Egashira +Date: Mon Apr 29 18:31:08 2013 +0900 + + image: Add NULL checks for return value of _pixman_image_for_color() + + This fixes crash in pixman_image_composite32(). + + Originally fixed by Yoshitaro Makise. + + Reviewed-by: Bryce Harrington + Signed-off-by: Bryce Harrington + + src/cairo-image-compositor.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 6a03ae5859a92d3d4dbe97c9d598700fbcf1d666 +Author: Benjamin Otte +Date: Mon Mar 3 01:16:25 2014 +0100 + + xlib: Fix typo in documentation + + src/cairo-xlib-display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f1709c298c355499a18796f389fa0fd9bc52b8c3 +Author: Bryce Harrington +Date: Wed Feb 26 18:55:25 2014 -0800 + + Correct spelling of "tessellator" throughout code + + Based on patch suggested by Homer Hsing + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50411 + + src/cairo-cogl-surface.c | 6 +++--- + src/cairo-fixed-private.h | 2 +- + src/cairo-fixed-type-private.h | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit 273210683f182d72789f88df80fec8c4d08bb30f +Author: Bryce Harrington +Date: Wed Feb 26 18:44:46 2014 -0800 + + Add comment to explain _cairo_edge_compute_intersection_* + + Patch by Homer Hsing + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50412 + + src/cairo-fixed-private.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e555dfc7173897bc0819c715e8897cd1c886e2a3 +Author: Bryce Harrington +Date: Wed Feb 26 18:42:41 2014 -0800 + + Add explanation to _cairo_surface_create_in_error + + Patch by Homer Hsing + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50413 + + src/cairo-surface.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit be206ddf20e7b4e0e87d91c7a18cbdb9cfcec8e6 +Author: Bryce Harrington +Date: Wed Feb 26 18:40:12 2014 -0800 + + Add explanation to enum _cairo_int_status + + Patch based on suggestion by Homer Hsing + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50416 + + src/cairo-error-private.h | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 19b31bbe7018dbe031c650e7497b19a0607ad453 +Author: Bryce Harrington +Date: Wed Feb 26 18:36:15 2014 -0800 + + image: Fix bad HTML generation in code docs for cairo-format-stride-for-width + + Patch from Simon Kågedal Reimer + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63257 + + src/cairo-image-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b50883577df0949f793cc6dbfda281e96119dcd +Author: Bryce Harrington +Date: Wed Feb 19 11:25:16 2014 -0800 + + gl: Handle PIXMAN_a8r8g8b8_sRGB format in switch + + Fixes the following compiler warning: + + cairo-gl-surface.c:182:5: warning: enumeration value + ‘PIXMAN_a8r8g8b8_sRGB’ not handled in switch + + Same fix as done for image in 1d0055078. + + Chris Wilson + + src/cairo-gl-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 44a09f462c8ff59f864967f45f9b31e473632b7a +Author: Bryce Harrington +Date: Tue Feb 18 21:13:53 2014 -0800 + + mesh: Avoid theoretical infinite loops + + This quells this warning: + + src/cairo-mesh-pattern-rasterizer.c:731:5: warning: cannot + optimize possibly infinite loops + + I guess the compiler's complaining because if vsteps were negative or + equal to UINT_MAX the loop could cycle infinitely. Silly compiler. + + Fix as suggested by Chris Wilson + + src/cairo-mesh-pattern-rasterizer.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 19f412bb1faa5391a03c121c31f7ad94fd275d82 +Author: Bryce Harrington +Date: Tue Feb 18 21:01:07 2014 -0800 + + xml: constify source objects for emit routines + + This quells the following warnings: + + src/cairo-xml-surface.c:576:5: warning: passing argument 2 of + ‘_cairo_xml_surface_emit_clip_boxes’ discards ‘const’ qualifier from + pointer target type + src/cairo-xml-surface.c:462:1: note: expected ‘struct cairo_clip_t + *’ but argument is of type ‘const struct cairo_clip_t *’ + + Most of the cairo_xml*emit* routines const their source objects; + these should follow suit. + + Reviewed-by: Chris Wilson + + src/cairo-xml-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit dc8ca191f584f837f4c2b70d0ebbe2c9d87575cf +Author: Bryce Harrington +Date: Tue Feb 18 20:56:09 2014 -0800 + + xml: Drop unused variable + + Reviewed-by: Chris Wilson + + src/cairo-xml-surface.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9b8a752249c69ba94461b3ef6d919c1b86ae6fab +Author: Bryce Harrington +Date: Tue Feb 18 20:13:57 2014 -0800 + + test: Quell warning for deprecated g_type_init() + + The g_type_init() routine was deprecated in glib 2.34. Tested and + verified this conditionalization on glib 2.32 and 2.36. No need to + change version dependencies. + + test/any2ppm.c:864:5: warning: ‘g_type_init’ is deprecated + (declared at /usr/include/glib-2.0/gobject/gtype.h:669) + + Reviewed-by: Chris Wilson + + test/any2ppm.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 75e671c29b2f2916c41af46f8c3707539b235674 +Author: Bryce Harrington +Date: Tue Feb 18 18:10:20 2014 -0800 + + test: Quell warning for inclusion of old rsvg header files + + This silences a warning due to header file deprecated as of libsrvg + 2.36.2. Tested and verified this hackaround on librsvg 2.36.4 and + 2.36.1. No need to change version dependencies. + + In file included from test/any2ppm.c:73:0: + /usr/include/librsvg-2.0/librsvg/rsvg-cairo.h:27:2: warning: + #warning "Including directly is deprecated." + + Reviewed-by: Chris Wilson + + test/any2ppm.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit a346e40ed33e69c7c03be3aa1b7b0065e4ee1d07 +Author: Bryce Harrington +Date: Tue Feb 18 17:37:22 2014 -0800 + + perf: Guarantee path width is non-negative + + This quells the following warning: + + perf/micro/hatching.c:39:5: warning: cannot optimize loop, the + loop counter may overflow + + Width and height aren't going to be negative so enforce it so that the + compiler can do whatever optimization it wants to do. + + Reviewed-by: Chris Wilson + + perf/micro/hatching.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4144307dbfbe7b297135d9ea4b080cae7e06b997 +Author: Ryan Lortie +Date: Tue Feb 4 10:47:40 2014 +0000 + + cairo-version: fix docs build + + We do some evil things in this doc comment by closing a tag further up. + Make sure we reopen it at the end so that gtk-doc's attempt to close it again + doesn't result in an imbalance. + + src/cairo-version.c | 1 + + 1 file changed, 1 insertion(+) + commit 39b7d5138eb83cc2d4f3ab6039894cc61c7fe4c7 Author: Bryce Harrington Date: Wed Jan 29 17:07:04 2014 -0800 diff -Nru cairo-1.13.0~20140204/configure cairo-1.14.2/configure --- cairo-1.13.0~20140204/configure 2014-02-04 09:52:23.000000000 +0000 +++ cairo-1.14.2/configure 2015-03-11 01:43:14.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cairo 1.13.1. +# Generated by GNU Autoconf 2.69 for cairo 1.14.2. # # Report bugs to . # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='cairo' PACKAGE_TARNAME='cairo' -PACKAGE_VERSION='1.13.1' -PACKAGE_STRING='cairo 1.13.1' +PACKAGE_VERSION='1.14.2' +PACKAGE_STRING='cairo 1.14.2' PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=cairo' PACKAGE_URL='http://cairographics.org/' @@ -858,11 +858,14 @@ GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE +HAVE_GTK_DOC_FALSE +HAVE_GTK_DOC_TRUE GTKDOC_DEPS_LIBS GTKDOC_DEPS_CFLAGS HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE +GTKDOC_CHECK_PATH GTKDOC_CHECK PKG_CONFIG OTOOL64 @@ -872,8 +875,6 @@ DSYMUTIL MANIFEST_TOOL RANLIB -ac_ct_AR -AR LN_S NM ac_ct_DUMPBIN @@ -893,6 +894,8 @@ OBJDUMP DLLTOOL AS +ac_ct_AR +AR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V @@ -1012,7 +1015,7 @@ enable_win32_font enable_skia with_skia -with_skia_bulid +with_skia_build_type enable_os2 enable_beos enable_drm @@ -1648,7 +1651,7 @@ # 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.13.1 to adapt to many kinds of systems. +\`configure' configures cairo 1.14.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1722,7 +1725,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cairo 1.13.1:";; + short | recursive ) echo "Configuration of cairo 1.14.2:";; esac cat <<\_ACEOF @@ -1879,7 +1882,7 @@ --with-x use the X Window System --with-skia=/path/to/skia directory to find compiled skia sources - --with-skia-build=(Release|Debug) + --with-skia-build-type=(Release|Debug) build of skia to link with, default is Release --with-gallium=/path/to/mesa @@ -2043,7 +2046,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cairo configure 1.13.1 +cairo configure 1.14.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2770,7 +2773,7 @@ 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.13.1, which was +It was created by cairo $as_me 1.14.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -5022,7 +5025,7 @@ # Define the identity of the package. PACKAGE='cairo' - VERSION='1.13.1' + VERSION='1.14.2' # Some tools Automake needs. @@ -5272,6 +5275,176 @@ fi AM_BACKSLASH='\' +if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac # Initialize libtool @@ -12887,16 +13060,78 @@ - # Extract the first word of "gtkdoc-check", so it can be a program name with args. + gtk_doc_requires="gtk-doc >= 1.15" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 +$as_echo_n "checking for gtk-doc... " >&6; } + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_gtk_doc=yes +else + have_gtk_doc=no +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 +$as_echo "$have_gtk_doc" >&6; } + + if test "$have_gtk_doc" = "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found." >&5 +$as_echo "$as_me: WARNING: + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found." >&2;} + fi + + # Extract the first word of "gtkdoc-check", so it can be a program name with args. +set dummy gtkdoc-check; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_GTKDOC_CHECK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GTKDOC_CHECK"; then + ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK +if test -n "$GTKDOC_CHECK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 +$as_echo "$GTKDOC_CHECK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTKDOC_CHECK+:} false; then : +if ${ac_cv_path_GTKDOC_CHECK_PATH+:} false; then : $as_echo_n "(cached) " >&6 else - case $GTKDOC_CHECK in + case $GTKDOC_CHECK_PATH in [\\/]* | ?:[\\/]*) - ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path. + ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -12906,7 +13141,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_GTKDOC_CHECK_PATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -12917,10 +13152,10 @@ ;; esac fi -GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK -if test -n "$GTKDOC_CHECK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 -$as_echo "$GTKDOC_CHECK" >&6; } +GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH +if test -n "$GTKDOC_CHECK_PATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 +$as_echo "$GTKDOC_CHECK_PATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -13033,18 +13268,19 @@ fi - if test x$enable_gtk_doc = xyes; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.15\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.15") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - : -else - as_fn_error $? "You need to have gtk-doc >= 1.15 installed to build $PACKAGE_NAME" "$LINENO" 5 -fi - if test "x$PACKAGE_NAME" != "xglib"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 +$as_echo_n "checking whether to build gtk-doc documentation... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 +$as_echo "$enable_gtk_doc" >&6; } + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + as_fn_error $? " + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '$0'." "$LINENO" 5 + fi + + if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 @@ -13112,14 +13348,8 @@ $as_echo "yes" >&6; } : fi - fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 -$as_echo_n "checking whether to build gtk-doc documentation... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 -$as_echo "$enable_gtk_doc" >&6; } - # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; @@ -13144,6 +13374,14 @@ fi + if test x$have_gtk_doc = xyes; then + HAVE_GTK_DOC_TRUE= + HAVE_GTK_DOC_FALSE='#' +else + HAVE_GTK_DOC_TRUE='#' + HAVE_GTK_DOC_FALSE= +fi + if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' @@ -13211,7 +13449,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -13257,7 +13495,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -13281,7 +13519,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -13326,7 +13564,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -13350,7 +13588,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -13400,11 +13638,11 @@ CAIRO_VERSION_MAJOR=1 -CAIRO_VERSION_MINOR=13 -CAIRO_VERSION_MICRO=1 +CAIRO_VERSION_MINOR=14 +CAIRO_VERSION_MICRO=2 CAIRO_VERSION_SONUM=2 -CAIRO_RELEASE_STATUS=git -CAIRO_LIBTOOL_VERSION_INFO=11303:0:11301 +CAIRO_RELEASE_STATUS=release +CAIRO_LIBTOOL_VERSION_INFO=11402:2:11400 @@ -18219,16 +18457,17 @@ # -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 \ --Wnested-externs -Wpointer-arith -Wwrite-strings \ --Wsign-compare -Wstrict-prototypes -Wmissing-prototypes \ --Wpacked -Wswitch-enum -Wmissing-format-attribute \ --Wbad-function-cast -Wvolatile-register-var \ +-Wpointer-arith -Wwrite-strings -Wsign-compare -Wpacked +-Wswitch-enum -Wmissing-format-attribute -Wvolatile-register-var \ -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ -Wno-missing-field-initializers -Wno-unused-parameter \ -Wno-attributes -Wno-long-long -Winline" +MAYBE_C_SPECIFIC_WARN="-Wold-style-definition \ +-Wdeclaration-after-statement -Wstrict-prototypes \ +-Wmissing-prototypes -Wbad-function-cast -Wnested-externs" + # New -Wno options should be added here # gcc-4.4 and later accept every -Wno- option but may complain later that this # option is unknow each time another warning happen. @@ -18238,33 +18477,6 @@ MAYBE_WARN="$MAYBE_WARN -erroff=E_ENUM_TYPE_MISMATCH_ARG \ -erroff=E_ENUM_TYPE_MISMATCH_OP" - - -safe_MAYBE_WARN="$MAYBE_WARN" -MAYBE_WARN="$MAYBE_WARN -flto" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int main(int argc, char **argv) { return 0; } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - - MAYBE_WARN="$safe_MAYBE_WARN" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common" MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2" @@ -18490,7 +18702,7 @@ done cairo_cv_warn_cflags=$WARN_CFLAGS - cairo_cv_warn_maybe=$MAYBE_WARN + cairo_cv_warn_maybe="$MAYBE_WARN $MAYBE_C_SPECIFIC_WARN" { $as_echo "$as_me:${as_lineno-$LINENO}: checking which warning flags were supported" >&5 $as_echo_n "checking which warning flags were supported... " >&6; } @@ -18877,17 +19089,18 @@ /* end confdefs.h. */ -double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; +double d __attribute__((used)) = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; +int main() { return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_link "$LINENO"; then : -if strings - conftest.$ac_objext | grep noonsees >/dev/null ; then +if strings - conftest$ac_exeext | grep noonsees >/dev/null ; then ax_cv_c_float_words_bigendian=yes fi -if strings - conftest.$ac_objext | grep seesnoon >/dev/null ; then +if strings - conftest$ac_exeext | grep seesnoon >/dev/null ; then if test "$ax_cv_c_float_words_bigendian" = unknown; then ax_cv_c_float_words_bigendian=no else @@ -18897,7 +19110,8 @@ fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_float_words_bigendian" >&5 $as_echo "$ax_cv_c_float_words_bigendian" >&6; } @@ -23501,6 +23715,7 @@ $as_echo "yes" >&6; } : fi + qt_NONPKGCONFIG_LIBS="-lstdc++" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Qt surface backend feature could be enabled" >&5 @@ -25045,18 +25260,18 @@ fi -# Check whether --with-skia-bulid was given. -if test "${with_skia_bulid+set}" = set; then : - withval=$with_skia_bulid; skia_BUILD="$withval" +# Check whether --with-skia-build-type was given. +if test "${with_skia_build_type+set}" = set; then : + withval=$with_skia_build_type; skia_BUILD_TYPE="$withval" else - skia_BUILD="Release" + skia_BUILD_TYPE="Release" fi skia_NONPKGCONFIG_CFLAGS="-I$skia_DIR/include/config -I$skia_DIR/include/core -I$skia_DIR/include/effects" - if test "x$skia_BUILD" = x"Release"; then + if test "x$skia_BUILD_TYPE" = "xRelease"; then skia_NONPKGCONFIG_CFLAGS="-DSK_RELEASE -DSK_CAN_USE_FLOAT $skia_NONPKGCONFIG_CFLAGS" fi - skia_NONPKGCONFIG_LIBS="--start-group $skia_DIR/out/$skia_BUILD/obj.target/gyp/libeffects.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libimages.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libutils.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libopts.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libcore.a -end-group" + skia_NONPKGCONFIG_LIBS="-L$skia_DIR/out/$skia_BUILD_TYPE/lib.target/ -lskia -lstdc++" @@ -27188,6 +27403,10 @@ glesv2_LIBS="$glesv2_LIBS -ldl" fi + if test "x$use_glesv2" = "xyes" -a "x$use_gl" = "xyes"; then + as_fn_error $? "use either --enable-gl=yes or --enable-glesv2=yes. Not both at the same time." "$LINENO" 5 + fi + need_egl_functions=yes @@ -34712,7 +34931,7 @@ fi - if test "x$have_glib" = "xyes"; then + if test "x$have_glib" = "xyes" -a "x$have_windows" = "xno"; then BUILD_SPHINX_TRUE= BUILD_SPHINX_FALSE='#' else @@ -34895,6 +35114,8 @@ ac_config_files="$ac_config_files Makefile boilerplate/Makefile src/Makefile test/Makefile test/pdiff/Makefile perf/Makefile perf/micro/Makefile util/Makefile util/cairo-fdr/Makefile util/cairo-gobject/Makefile util/cairo-missing/Makefile util/cairo-script/Makefile util/cairo-script/examples/Makefile util/cairo-sphinx/Makefile util/cairo-trace/Makefile util/cairo-trace/cairo-trace doc/Makefile doc/public/Makefile" +ac_config_commands="$ac_config_commands cairo-trace" + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -35029,6 +35250,10 @@ am__EXEEXT_FALSE= fi +if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GTK_DOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -35711,7 +35936,7 @@ # 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.13.1, which was +This file was extended by cairo $as_me 1.14.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -35778,7 +36003,7 @@ 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.13.1 +cairo config.status 1.14.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -36870,6 +37095,7 @@ "util/cairo-trace/cairo-trace") CONFIG_FILES="$CONFIG_FILES util/cairo-trace/cairo-trace" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/public/Makefile") CONFIG_FILES="$CONFIG_FILES doc/public/Makefile" ;; + "cairo-trace") CONFIG_COMMANDS="$CONFIG_COMMANDS cairo-trace" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -38806,6 +39032,7 @@ $SED " s%@FEATURE_PC@%cairo-gobject%g; s%@FEATURE_NAME@%gobject functions%g; s%@FEATURE_BASE@%$gobject_BASE%g; s%@FEATURE_REQUIRES@%$gobject_REQUIRES%g; s%@FEATURE_NONPKGCONFIG_LIBS@%$gobject_NONPKGCONFIG_LIBS%g; s%@FEATURE_NONPKGCONFIG_EXTRA_LIBS@%$gobject_NONPKGCONFIG_EXTRA_LIBS%g; s%@FEATURE_NONPKGCONFIG_CFLAGS@%$gobject_NONPKGCONFIG_CFLAGS%g; " < "cairo-gobject-uninstalled.pc.tmp" > "cairo-gobject-uninstalled.pc" && rm -f "cairo-gobject-uninstalled.pc.tmp" || as_fn_error $? "failed to update cairo-gobject-uninstalled.pc" "$LINENO" 5 ;; + "cairo-trace":C) chmod a+x util/cairo-trace/cairo-trace ;; esac done # for ac_tag diff -Nru cairo-1.13.0~20140204/configure.ac cairo-1.14.2/configure.ac --- cairo-1.13.0~20140204/configure.ac 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/configure.ac 2015-03-10 22:21:07.000000000 +0000 @@ -15,6 +15,7 @@ AM_INIT_AUTOMAKE([1.11 foreign -Wall no-define no-dist-gzip dist-xz]) AM_SILENT_RULES([yes]) +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Workaround for Automake 1.12 # Initialize libtool LT_PREREQ([2.2]) @@ -190,6 +191,7 @@ [qt_REQUIRES="" use_qt="no (requires Qt4 development libraries)" ]) + qt_NONPKGCONFIG_LIBS="-lstdc++" ]) dnl =========================================================================== @@ -249,16 +251,16 @@ [directory to find compiled skia sources])], [skia_DIR="$withval"], [skia_DIR="`pwd`/../skia"]) - AC_ARG_WITH([skia-bulid], - [AS_HELP_STRING([--with-skia-build=(Release|Debug)] + AC_ARG_WITH([skia-build-type], + [AS_HELP_STRING([--with-skia-build-type=(Release|Debug)] [build of skia to link with, default is Release])], - [skia_BUILD="$withval"], - [skia_BUILD="Release"]) + [skia_BUILD_TYPE="$withval"], + [skia_BUILD_TYPE="Release"]) skia_NONPKGCONFIG_CFLAGS="-I$skia_DIR/include/config -I$skia_DIR/include/core -I$skia_DIR/include/effects" - if test "x$skia_BUILD" = x"Release"; then + if test "x$skia_BUILD_TYPE" = "xRelease"; then skia_NONPKGCONFIG_CFLAGS="-DSK_RELEASE -DSK_CAN_USE_FLOAT $skia_NONPKGCONFIG_CFLAGS" fi - skia_NONPKGCONFIG_LIBS="--start-group $skia_DIR/out/$skia_BUILD/obj.target/gyp/libeffects.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libimages.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libutils.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libopts.a $skia_DIR/out/$skia_BUILD/obj.target/gyp/libcore.a -end-group" + skia_NONPKGCONFIG_LIBS="-L$skia_DIR/out/$skia_BUILD_TYPE/lib.target/ -lskia -lstdc++" AC_SUBST(skia_DIR) ]) @@ -376,6 +378,10 @@ glesv2_LIBS="$glesv2_LIBS -ldl" fi + if test "x$use_glesv2" = "xyes" -a "x$use_gl" = "xyes"; then + AC_MSG_ERROR([use either --enable-gl=yes or --enable-glesv2=yes. Not both at the same time.]) + fi + need_egl_functions=yes ]) @@ -799,7 +805,7 @@ PKG_CHECK_MODULES(glib, glib-2.0, have_glib=yes, have_glib=no) AC_SUBST(glib_CFLAGS) AC_SUBST(glib_LIBS) -AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes") +AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes" -a "x$have_windows" = "xno") save_LIBS="$LIBS" AC_CHECK_LIB(rt, shm_open, shm_LIBS="-lrt") @@ -865,6 +871,8 @@ doc/Makefile doc/public/Makefile ]) +AC_CONFIG_COMMANDS([cairo-trace], + [chmod a+x util/cairo-trace/cairo-trace]) AC_OUTPUT CAIRO_REPORT diff -Nru cairo-1.13.0~20140204/debian/cairo-perf-utils.install cairo-1.14.2/debian/cairo-perf-utils.install --- cairo-1.13.0~20140204/debian/cairo-perf-utils.install 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/cairo-perf-utils.install 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1,4 @@ +usr/bin/cairo-perf* +usr/bin/cairo-trace +usr/bin/cairo-analyse-trace +usr/lib/*/cairo/libcairo-trace.so* diff -Nru cairo-1.13.0~20140204/debian/cairo-perf-utils.install.in cairo-1.14.2/debian/cairo-perf-utils.install.in --- cairo-1.13.0~20140204/debian/cairo-perf-utils.install.in 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/cairo-perf-utils.install.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -debian/install/main/usr/bin/cairo-perf* /usr/bin -debian/install/main/usr/bin/cairo-trace /usr/bin -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/cairo/libcairo-trace* /usr/lib/${DEB_HOST_MULTIARCH}/cairo diff -Nru cairo-1.13.0~20140204/debian/changelog cairo-1.14.2/debian/changelog --- cairo-1.13.0~20140204/debian/changelog 2014-02-17 09:52:24.000000000 +0000 +++ cairo-1.14.2/debian/changelog 2015-08-15 10:50:57.000000000 +0000 @@ -1,3 +1,76 @@ +cairo (1.14.2-1ubuntu1~ppa14.04+1) trusty; urgency=medium + + * Backport from vivid. + + -- Nicolas Derive Sat, 15 Aug 2015 12:50:18 +0200 + +cairo (1.14.2-1ubuntu1) vivid; urgency=medium + + * Merge from Debian unstable. Remaining changes: + - server_side_gradients.patch + * Update gbp.conf for Ubuntu + + -- Iain Lane Wed, 08 Apr 2015 12:41:36 +0100 + +cairo (1.14.2-1) experimental; urgency=medium + + * Update gbp.conf for experimental + * New upstream version 1.14.2 + - pdf-operators: Only wrap text strings for PS output: should fix + formatting of some PDFs (LP: #657094) + * Drop patches applied upstream in this release + - 0005-CFF-Fix-unaligned-access.patch + - 0008-tor-scan-converter-can-t-do_fullrow-when-intersectio.patch + + -- Iain Lane Wed, 08 Apr 2015 12:28:35 +0100 + +cairo (1.14.0-2.1ubuntu1) vivid; urgency=low + + * Merge from Debian unstable (LP: #1353362). Remaining changes: + - server_side_gradients.patch + + -- Gianfranco Costamagna Mon, 05 Jan 2015 17:35:18 +0000 + +cairo (1.14.0-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * debian/patches - picked two post-release patches resolving Debian-reported + issues: + - 0005-CFF-Fix-unaligned-access.patch + fixes unaligned access reported on sparc (Closes: #712836) + - 0008-tor-scan-converter-can-t-do_fullrow-when-intersectio.patch + resolves segfault while rendering some graphs (Closes: #766479) + + -- Yaroslav Halchenko Fri, 24 Oct 2014 15:36:28 -0400 + +cairo (1.14.0-2) unstable; urgency=medium + + * Modernise debian/rules using minimised dh. + * Use list-missing to show uninstalled files. + * Don't install libtool .la files. + * Add --as-needed to dh-autoreconf. + * Use canonical URLs for Vcs-* fields. + * Set pkg-gnome-maintainers@lists.alioth.debian.org as Maintainer. + * Install cairo-analyse-trace binary into cairo-perf-utils package. + + -- Michael Biebl Wed, 22 Oct 2014 16:37:08 +0200 + +cairo (1.14.0-1) unstable; urgency=medium + + * New upstream release. + * Add debian/gbp.conf for git-buildpackage and configure it to use + pristine-tar. + * Update patches: + - Remove patches which have been merged upstream or no longer apply. + - Refresh remaining patches. + * Bump Standards-Version to 3.9.6. + * Drop initial article from description synopsis. + * Update symbols file and use the upstream version for the symbols + introduced in 1.12.16-3. Update shlibs version info accordingly for + libcairo2. + + -- Michael Biebl Tue, 21 Oct 2014 23:12:24 +0200 + cairo (1.13.0~20140204-0ubuntu1) trusty; urgency=medium * Upload a git snapshot of the current upstream serie, there seems to @@ -7,6 +80,73 @@ -- Sebastien Bacher Tue, 04 Feb 2014 11:21:39 +0000 +cairo (1.12.16-5) unstable; urgency=medium + + * debian/control: + + webkitgtk was also using the GL/EGL support, so add the necessary + breaks. + + -- Emilio Pozuelo Monfort Sat, 06 Sep 2014 14:26:26 +0200 + +cairo (1.12.16-4) unstable; urgency=medium + + * Disable experimental GL/EGL support. It doesn't bring much and + causes problems in platforms where the GL and the EGL/GLES stacks + are from different vendors, which is the case in some embedded + platforms, particularly in the ARM world. + Break weston versions that use the gl/egl symbols. + + -- Emilio Pozuelo Monfort Fri, 05 Sep 2014 00:17:38 +0200 + +cairo (1.12.16-3) unstable; urgency=medium + + * Team upload. + * Cherry-pick patches from upstream for device scale (HiDPI) support + - image-Use-convolution-filters-for-sample-reconstruct.patch + - gstate-Respect-device-transform-in-stroke.patch + - default-context-Inherit-device-scale-in-push_group-s.patch + - subsurface-Handle-device-scales.patch + - gstate-Move-device-scale-font-scaling-to-gstate.patch + - gstate-Handle-device-scale-on-surface-as-source.patch + - spans-traps-Undo-device-transform-from-source-matrix.patch + - surface-expose-the-device-scale.patch + - surface-Opencode-create_similar.patch + - surface-Merge-scratch-construction-into-_cairo_surfa.patch + - surface-Inherit-device-scale-in-cairo_surface_create.patch + - trace-Record-set-device-scale.patch + - script-Add-support-for-replaying-device-scale.patch + - Downscaling-requires-pixman-0.30.patch + * Update debian/libcairo2.symbols with added cairo_surface_get_device_scale + * Bump pixman build-dependency to >= 0.30.0 + + -- Andreas Henriksson Sun, 24 Aug 2014 10:17:07 -0700 + +cairo (1.12.16-2) unstable; urgency=low + + [ Cyril Brulebois ] + * Misc fixes: + + Update libcairo2-udeb's description (one line is sufficient). + + Use the official field for udebs: Package-Type. + + [ Michael Biebl ] + * Add myself to uploaders. + * The libcairo2-udeb package already ships the libcairo-gobject2 library, so + instead of splitting libcairo-gobject2 into its separate udeb, just fix + the shlibs information for libcairo-gobject2 to point to libcairo2-udeb. + Closes: #648533 + + -- Michael Biebl Tue, 17 Sep 2013 16:37:22 +0200 + +cairo (1.12.16-1) unstable; urgency=low + + * Team upload. + * New upstream release. + * Fix symbol versions for the gl/egl symbols. Closes: #714845 + * Add new symbols. + * Refresh patches. + + -- Michael Biebl Fri, 13 Sep 2013 02:55:29 +0200 + cairo (1.12.16-0ubuntu2) saucy; urgency=low * debian/patches/pdf-output-avoid-transparency.patch: PDF output: Avoid @@ -27,6 +167,40 @@ -- Sebastien Bacher Tue, 27 Aug 2013 16:31:23 +0200 +cairo (1.12.14-5) unstable; urgency=low + + * Add gl/egl support back now that wayland has been multi-archified. + Closes: #712022. + + -- Emilio Pozuelo Monfort Wed, 12 Jun 2013 19:33:43 +0200 + +cairo (1.12.14-4) unstable; urgency=low + + * debian/control: + + Make libcairo2-dev depend on libxext-dev. + + -- Emilio Pozuelo Monfort Wed, 08 May 2013 15:26:06 +0200 + +cairo (1.12.14-3) unstable; urgency=low + + * Team upload. + * Disable EGL/GL support for now until libwayland has support for + multi-arch. + + -- Michael Biebl Wed, 08 May 2013 11:43:53 +0200 + +cairo (1.12.14-2) unstable; urgency=low + + * Upload to unstable. + + -- Sebastian Dröge Mon, 06 May 2013 08:32:44 +0200 + +cairo (1.12.14-1) experimental; urgency=low + + * New upstream release. + + -- Sebastian Dröge Mon, 11 Feb 2013 23:47:53 +0100 + cairo (1.12.14-0ubuntu1) raring; urgency=low * New upstream version, fix rendering issue introduced in previous @@ -34,6 +208,19 @@ -- Sebastien Bacher Mon, 11 Feb 2013 11:48:45 +0100 +cairo (1.12.12-1) experimental; urgency=low + + * Team upload. + * New upstream release. + * Track .xz tarballs. + * Bump Standards-Version to 3.9.4. + * Bump debhelper compatility level to 9. + * Use --as-needed feature of dh-autoreconf. + * Refresh 01_build_perf_utils.patch. + * Remove obsolete Breaks. + + -- Michael Biebl Mon, 11 Feb 2013 22:41:55 +0100 + cairo (1.12.12-0ubuntu1) raring; urgency=low * New upstream version @@ -93,8 +280,9 @@ cairo (1.12.6-1) experimental; urgency=low - [ Sebastian Dröge + [ Sebastian Dröge ] * New upstream bugfix release. + [ Martin Pitt ] * Add debian/tests: Simple compile/link/run autopkgtest. Thanks Rafał Cieślak! (LP: #1073374) diff -Nru cairo-1.13.0~20140204/debian/clean cairo-1.14.2/debian/clean --- cairo-1.13.0~20140204/debian/clean 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/clean 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -debian/libcairo2-dev.install -debian/libcairo-gobject2.install -debian/libcairo-script-interpreter2.install -debian/libcairo2.install -debian/cairo-perf-utils.install diff -Nru cairo-1.13.0~20140204/debian/compat cairo-1.14.2/debian/compat --- cairo-1.13.0~20140204/debian/compat 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/compat 2015-04-08 11:41:47.000000000 +0000 @@ -1 +1 @@ -7 +9 diff -Nru cairo-1.13.0~20140204/debian/control cairo-1.14.2/debian/control --- cairo-1.13.0~20140204/debian/control 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/control 2015-04-08 11:41:47.000000000 +0000 @@ -2,10 +2,12 @@ Section: libs Priority: optional Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Dave Beckett +XSBC-Original-Maintainer: Debian GNOME Maintainers Uploaders: Sebastian Dröge , - Emilio Pozuelo Monfort -Build-Depends: debhelper (>= 8.1.3), + Emilio Pozuelo Monfort , + Michael Biebl , + Dave Beckett +Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.14.13), dh-autoreconf, pkg-config (>= 0.19), @@ -18,18 +20,16 @@ libsm-dev, xutils-dev, libxt-dev, - libpixman-1-dev (>= 0.22.0), + libpixman-1-dev (>= 0.30.0), libxcb1-dev (>= 1.6), libxcb-render0-dev (>= 1.6), libxcb-shm0-dev, -# libgl1-mesa-dev, -# libegl1-mesa-dev [!hurd-any], libglib2.0-dev, zlib1g-dev, liblzo2-dev -Standards-Version: 3.8.4 -Vcs-Git: git://git.debian.org/git/collab-maint/cairo.git -Vcs-Browser: http://git.debian.org/?p=collab-maint/cairo.git +Standards-Version: 3.9.6 +Vcs-Git: git://anonscm.debian.org/collab-maint/cairo.git +Vcs-Browser: http://anonscm.debian.org/cgit/collab-maint/cairo.git Homepage: http://cairographics.org/ Package: libcairo2-dev @@ -42,15 +42,13 @@ libfreetype6-dev (>= 2.1.10), libx11-dev, libxrender-dev (>= 0.6), + libxext-dev, libpng-dev, libsm-dev, libpixman-1-dev (>= 0.22.0), libxcb1-dev (>= 1.6), libxcb-render0-dev (>= 1.6), libxcb-shm0-dev, - libxext-dev, -# libgl1-mesa-dev, -# libegl1-mesa-dev [!hurd-any], libglib2.0-dev, ${shlibs:Depends}, ${misc:Depends} @@ -69,13 +67,13 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Breaks: xulrunner-1.9.1 (<= 1.9.1.8-3), - xulrunner-1.9, - iceape-browser (<= 2.0.3-3), - libgtk-directfb-2.0-0 Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same -Description: The Cairo 2D vector graphics library +Breaks: weston (<< 1.5.0-3~), + libwebkitgtk-1.0-0 (<< 2.4.5-2~), + libwebkitgtk-3.0-0 (<< 2.4.5-2~), + libwebkit2gtk-3.0-25 (<< 2.4.5-2~), +Description: Cairo 2D vector graphics library Cairo is a multi-platform library providing anti-aliased vector-based rendering for multiple target backends. Paths consist of line segments and cubic splines and can be rendered at any width @@ -102,7 +100,7 @@ libcairo-script-interpreter2 (= ${binary:Version}), cairo-perf-utils (= ${binary:Version}) Multi-Arch: same -Description: The Cairo 2D vector graphics library (debugging symbols) +Description: Cairo 2D vector graphics library (debugging symbols) Debugging symbols for the Cairo 2D vector graphics library. This is needed to debug programs linked against libcairo2. @@ -125,7 +123,7 @@ ${misc:Depends} Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same -Description: The Cairo 2D vector graphics library (script interpreter) +Description: Cairo 2D vector graphics library (script interpreter) Cairo is a multi-platform library providing anti-aliased vector-based rendering for multiple target backends. . @@ -139,7 +137,7 @@ ${misc:Depends} Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same -Description: The Cairo 2D vector graphics library (GObject library) +Description: Cairo 2D vector graphics library (GObject library) Cairo is a multi-platform library providing anti-aliased vector-based rendering for multiple target backends. . @@ -151,7 +149,7 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Description: The Cairo 2D vector graphics library performance utilities +Description: Cairo 2D vector graphics library performance utilities Cairo is a multi-platform library providing anti-aliased vector-based rendering for multiple target backends. . @@ -160,14 +158,9 @@ performance of cairo for real-world applications in a reproducible way. Package: libcairo2-udeb -XC-Package-Type: udeb +Package-Type: udeb Section: debian-installer Architecture: any Depends: ${shlibs:Depends} -Description: The Cairo 2D vector graphics library Xlib backend - Cairo is a multi-platform library providing anti-aliased - vector-based rendering for multiple target backends. - . - This is version of cairo with only the Xlib backend, intended - primarily for use in the graphical Debian installer. - +Description: Cairo 2D vector graphics library + This is a udeb, or a microdeb, for the debian-installer. diff -Nru cairo-1.13.0~20140204/debian/gbp.conf cairo-1.14.2/debian/gbp.conf --- cairo-1.13.0~20140204/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/gbp.conf 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1,4 @@ +[DEFAULT] +pristine-tar = True +debian-branch = ubuntu +upstream-branch = upstream-experimental diff -Nru cairo-1.13.0~20140204/debian/libcairo2-dev.install cairo-1.14.2/debian/libcairo2-dev.install --- cairo-1.13.0~20140204/debian/libcairo2-dev.install 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2-dev.install 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1,4 @@ +usr/include/cairo/*.h +usr/lib/*/libcairo*.so +usr/lib/*/libcairo*.a +usr/lib/*/pkgconfig/cairo*.pc diff -Nru cairo-1.13.0~20140204/debian/libcairo2-dev.install.in cairo-1.14.2/debian/libcairo2-dev.install.in --- cairo-1.13.0~20140204/debian/libcairo2-dev.install.in 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2-dev.install.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -debian/install/main/usr/include/cairo/*.h /usr/include/cairo -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo*.so usr/lib/${DEB_HOST_MULTIARCH} -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo*.a usr/lib/${DEB_HOST_MULTIARCH} -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo*.la usr/lib/${DEB_HOST_MULTIARCH} -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/cairo*.pc usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig diff -Nru cairo-1.13.0~20140204/debian/libcairo2-doc.install cairo-1.14.2/debian/libcairo2-doc.install --- cairo-1.13.0~20140204/debian/libcairo2-doc.install 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2-doc.install 2015-04-08 11:41:47.000000000 +0000 @@ -1 +1 @@ -debian/install/main/usr/share/gtk-doc/html/cairo /usr/share/gtk-doc/html +usr/share/gtk-doc/html/cairo diff -Nru cairo-1.13.0~20140204/debian/libcairo2.install cairo-1.14.2/debian/libcairo2.install --- cairo-1.13.0~20140204/debian/libcairo2.install 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2.install 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libcairo.so.* diff -Nru cairo-1.13.0~20140204/debian/libcairo2.install.in cairo-1.14.2/debian/libcairo2.install.in --- cairo-1.13.0~20140204/debian/libcairo2.install.in 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2.install.in 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo.so.* /usr/lib/${DEB_HOST_MULTIARCH} diff -Nru cairo-1.13.0~20140204/debian/libcairo2.symbols cairo-1.14.2/debian/libcairo2.symbols --- cairo-1.13.0~20140204/debian/libcairo2.symbols 2014-02-17 09:51:00.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2.symbols 2015-04-08 11:41:47.000000000 +0000 @@ -305,7 +305,7 @@ cairo_surface_get_content@Base 1.2.4 cairo_surface_get_device@Base 1.10.0 cairo_surface_get_device_offset@Base 1.2.4 - cairo_surface_get_device_scale@Base 1.13.0~20140204 + cairo_surface_get_device_scale@Base 1.14.0 cairo_surface_get_fallback_resolution@Base 1.7.2 cairo_surface_get_font_options@Base 1.2.4 cairo_surface_get_mime_data@Base 1.10.0 @@ -327,7 +327,7 @@ cairo_surface_observer_print@Base 1.12.0 cairo_surface_reference@Base 1.2.4 cairo_surface_set_device_offset@Base 1.2.4 - cairo_surface_set_device_scale@Base 1.13.0~20140204 + cairo_surface_set_device_scale@Base 1.14.0 cairo_surface_set_fallback_resolution@Base 1.2.4 cairo_surface_set_mime_data@Base 1.10.0 cairo_surface_set_user_data@Base 1.2.4 diff -Nru cairo-1.13.0~20140204/debian/libcairo2-udeb.install cairo-1.14.2/debian/libcairo2-udeb.install --- cairo-1.13.0~20140204/debian/libcairo2-udeb.install 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo2-udeb.install 2015-04-08 11:41:47.000000000 +0000 @@ -1,2 +1,2 @@ -debian/install/udeb/usr/lib/libcairo.so.* /usr/lib -debian/install/udeb/usr/lib/libcairo-gobject.so.* /usr/lib +usr/lib/*/libcairo.so.* +usr/lib/*/libcairo-gobject.so.* diff -Nru cairo-1.13.0~20140204/debian/libcairo-gobject2.install cairo-1.14.2/debian/libcairo-gobject2.install --- cairo-1.13.0~20140204/debian/libcairo-gobject2.install 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/libcairo-gobject2.install 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libcairo-gobject.so.* diff -Nru cairo-1.13.0~20140204/debian/libcairo-gobject2.install.in cairo-1.14.2/debian/libcairo-gobject2.install.in --- cairo-1.13.0~20140204/debian/libcairo-gobject2.install.in 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo-gobject2.install.in 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo-gobject.so.* /usr/lib/${DEB_HOST_MULTIARCH} diff -Nru cairo-1.13.0~20140204/debian/libcairo-script-interpreter2.install cairo-1.14.2/debian/libcairo-script-interpreter2.install --- cairo-1.13.0~20140204/debian/libcairo-script-interpreter2.install 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/debian/libcairo-script-interpreter2.install 2015-04-08 11:41:47.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libcairo-script-interpreter.so.* diff -Nru cairo-1.13.0~20140204/debian/libcairo-script-interpreter2.install.in cairo-1.14.2/debian/libcairo-script-interpreter2.install.in --- cairo-1.13.0~20140204/debian/libcairo-script-interpreter2.install.in 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/libcairo-script-interpreter2.install.in 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -debian/install/main/usr/lib/${DEB_HOST_MULTIARCH}/libcairo-script-interpreter.so.* /usr/lib/${DEB_HOST_MULTIARCH} diff -Nru cairo-1.13.0~20140204/debian/ltmain_as-needed.patch cairo-1.14.2/debian/ltmain_as-needed.patch --- cairo-1.13.0~20140204/debian/ltmain_as-needed.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/ltmain_as-needed.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -Index: cairo/build/ltmain.sh -=================================================================== ---- cairo.orig/build/ltmain.sh 2010-06-26 16:12:17.428175248 +0200 -+++ cairo/build/ltmain.sh 2010-06-26 16:13:17.044176141 +0200 -@@ -5800,6 +5800,11 @@ - arg=$func_stripname_result - ;; - -+ -Wl,--as-needed) -+ deplibs="$deplibs $arg" -+ continue -+ ;; -+ - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result -@@ -6163,6 +6168,15 @@ - lib= - found=no - case $deplib in -+ -Wl,--as-needed) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ fi -+ continue -+ ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then diff -Nru cairo-1.13.0~20140204/debian/patches/01_build_perf_utils.patch cairo-1.14.2/debian/patches/01_build_perf_utils.patch --- cairo-1.13.0~20140204/debian/patches/01_build_perf_utils.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/01_build_perf_utils.patch 2015-04-08 11:41:47.000000000 +0000 @@ -4,9 +4,9 @@ Last-Update: 2010-08-03 Index: cairo/configure.ac =================================================================== ---- cairo.orig/configure.ac 2012-10-08 10:21:12.572973848 +0200 -+++ cairo/configure.ac 2012-10-08 10:21:17.528973922 +0200 -@@ -808,6 +808,11 @@ +--- cairo.orig/configure.ac 2014-10-21 22:34:06.167497938 +0200 ++++ cairo/configure.ac 2014-10-21 22:34:06.163497880 +0200 +@@ -851,6 +851,11 @@ PKG_CHECK_MODULES(gtk, "gtk+-2.0",have_gtk=yes, have_gtk=no) AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" = "xyes") @@ -20,8 +20,8 @@ boilerplate/Makefile Index: cairo/perf/Makefile.am =================================================================== ---- cairo.orig/perf/Makefile.am 2012-10-08 10:21:12.572973848 +0200 -+++ cairo/perf/Makefile.am 2012-10-08 10:21:17.528973922 +0200 +--- cairo.orig/perf/Makefile.am 2014-10-21 22:34:06.167497938 +0200 ++++ cairo/perf/Makefile.am 2014-10-21 22:34:06.163497880 +0200 @@ -15,11 +15,25 @@ SUBDIRS = micro @@ -50,8 +50,8 @@ cairo-analyse-trace \ Index: cairo/build/configure.ac.features =================================================================== ---- cairo.orig/build/configure.ac.features 2012-10-08 10:21:12.572973848 +0200 -+++ cairo/build/configure.ac.features 2012-10-08 10:21:17.528973922 +0200 +--- cairo.orig/build/configure.ac.features 2014-10-21 22:34:06.167497938 +0200 ++++ cairo/build/configure.ac.features 2014-10-21 22:34:06.163497880 +0200 @@ -408,6 +408,7 @@ echo "The following features and utilities:" echo " cairo-trace: $use_trace" diff -Nru cairo-1.13.0~20140204/debian/patches/02_am-maintainer-mode.patch cairo-1.14.2/debian/patches/02_am-maintainer-mode.patch --- cairo-1.13.0~20140204/debian/patches/02_am-maintainer-mode.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/02_am-maintainer-mode.patch 2015-04-08 11:41:47.000000000 +0000 @@ -1,12 +1,12 @@ -Index: cairo-1.12.16/configure.ac +Index: cairo/configure.ac =================================================================== ---- cairo-1.12.16.orig/configure.ac 2013-08-27 14:33:51.771500300 +0200 -+++ cairo-1.12.16/configure.ac 2013-08-27 14:33:51.767500300 +0200 +--- cairo.orig/configure.ac 2014-10-21 22:34:11.207571294 +0200 ++++ cairo/configure.ac 2014-10-21 22:34:11.203571237 +0200 @@ -14,6 +14,7 @@ AC_CHECK_HEADERS([unistd.h sys/ioctl.h]) AM_INIT_AUTOMAKE([1.11 foreign -Wall no-define no-dist-gzip dist-xz]) +AM_MAINTAINER_MODE AM_SILENT_RULES([yes]) + m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Workaround for Automake 1.12 - # Initialize libtool diff -Nru cairo-1.13.0~20140204/debian/patches/05-flto.patch cairo-1.14.2/debian/patches/05-flto.patch --- cairo-1.13.0~20140204/debian/patches/05-flto.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/05-flto.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -Disable -flto as it is currently doesn't work with -Wl,--as-needed - -Index: cairo/build/configure.ac.warnings -=================================================================== ---- cairo.orig/build/configure.ac.warnings 2013-01-18 11:06:11.108627702 +0100 -+++ cairo/build/configure.ac.warnings 2013-01-18 11:06:11.108627702 +0100 -@@ -36,16 +36,6 @@ - dnl We also abuse the warning-flag facility to enable other compiler - dnl options. Namely, the following: - --dnl -flto working really needs a test link, not just a compile -- --safe_MAYBE_WARN="$MAYBE_WARN" --MAYBE_WARN="$MAYBE_WARN -flto" --AC_TRY_LINK([],[ -- int main(int argc, char **argv) { return 0; } --],[],[ -- MAYBE_WARN="$safe_MAYBE_WARN" --]) -- - MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common" - - dnl Also to turn various gcc/glibc-specific preprocessor checks diff -Nru cairo-1.13.0~20140204/debian/patches/06_hurd-map-noreserve.patch cairo-1.14.2/debian/patches/06_hurd-map-noreserve.patch --- cairo-1.13.0~20140204/debian/patches/06_hurd-map-noreserve.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/06_hurd-map-noreserve.patch 2015-04-08 11:41:47.000000000 +0000 @@ -1,7 +1,7 @@ Index: cairo/test/cairo-test-trace.c =================================================================== ---- cairo.orig/test/cairo-test-trace.c 2012-03-30 09:38:27.937300339 +0200 -+++ cairo/test/cairo-test-trace.c 2012-03-30 09:48:31.833279021 +0200 +--- cairo.orig/test/cairo-test-trace.c 2014-10-21 22:37:21.398335241 +0200 ++++ cairo/test/cairo-test-trace.c 2014-10-21 22:37:21.398335241 +0200 @@ -541,7 +541,11 @@ base = mmap (NULL, DATA_SIZE, @@ -16,9 +16,9 @@ Index: cairo/util/cairo-sphinx/sphinx.c =================================================================== ---- cairo.orig/util/cairo-sphinx/sphinx.c 2012-03-30 09:38:28.269300327 +0200 -+++ cairo/util/cairo-sphinx/sphinx.c 2012-03-30 09:48:00.657280122 +0200 -@@ -1325,7 +1325,11 @@ +--- cairo.orig/util/cairo-sphinx/sphinx.c 2014-10-21 22:37:21.398335241 +0200 ++++ cairo/util/cairo-sphinx/sphinx.c 2014-10-21 22:37:21.398335241 +0200 +@@ -1333,7 +1333,11 @@ base = mmap (NULL, DATA_SIZE, PROT_READ | PROT_WRITE, diff -Nru cairo-1.13.0~20140204/debian/patches/pdf-output-avoid-transparency.patch cairo-1.14.2/debian/patches/pdf-output-avoid-transparency.patch --- cairo-1.13.0~20140204/debian/patches/pdf-output-avoid-transparency.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/pdf-output-avoid-transparency.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,642 +0,0 @@ ---- a/src/cairo-pdf-surface-private.h -+++ b/src/cairo-pdf-surface-private.h -@@ -70,6 +70,7 @@ - unsigned int id; - unsigned char *unique_id; - unsigned long unique_id_length; -+ cairo_operator_t operator; - cairo_bool_t interpolate; - cairo_bool_t stencil_mask; - cairo_pdf_resource_t surface_res; -@@ -92,6 +93,7 @@ - cairo_pattern_t *pattern; - cairo_pdf_resource_t pattern_res; - cairo_pdf_resource_t gstate_res; -+ cairo_operator_t operator; - cairo_bool_t is_shading; - } cairo_pdf_pattern_t; - ---- a/src/cairo-pdf-surface.c -+++ b/src/cairo-pdf-surface.c -@@ -1282,6 +1282,7 @@ - * @surface: the pdf surface - * @source_surface: A #cairo_surface_t to use as the source surface - * @source_pattern: A #cairo_pattern_t of type SURFACE or RASTER_SOURCE to use as the source -+ * @op: the operator used to composite this source - * @filter: filter type of the source pattern - * @stencil_mask: if true, the surface will be written to the PDF as an /ImageMask - * @extents: extents of the operation that is using this source -@@ -1306,6 +1307,7 @@ - _cairo_pdf_surface_add_source_surface (cairo_pdf_surface_t *surface, - cairo_surface_t *source_surface, - const cairo_pattern_t *source_pattern, -+ cairo_operator_t op, - cairo_filter_t filter, - cairo_bool_t stencil_mask, - const cairo_rectangle_int_t *extents, -@@ -1406,6 +1408,7 @@ - } - - surface_entry->id = surface_key.id; -+ surface_entry->operator = op; - surface_entry->interpolate = interpolate; - surface_entry->stencil_mask = stencil_mask; - surface_entry->unique_id_length = unique_id_length; -@@ -1466,6 +1469,7 @@ - static cairo_int_status_t - _cairo_pdf_surface_add_pdf_pattern_or_shading (cairo_pdf_surface_t *surface, - const cairo_pattern_t *pattern, -+ cairo_operator_t op, - const cairo_rectangle_int_t *extents, - cairo_bool_t is_shading, - cairo_pdf_resource_t *pattern_res, -@@ -1475,6 +1479,7 @@ - cairo_int_status_t status; - - pdf_pattern.is_shading = is_shading; -+ pdf_pattern.operator = op; - - /* Solid colors are emitted into the content stream */ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) { -@@ -1550,12 +1555,14 @@ - static cairo_int_status_t - _cairo_pdf_surface_add_pdf_shading (cairo_pdf_surface_t *surface, - const cairo_pattern_t *pattern, -+ cairo_operator_t op, - const cairo_rectangle_int_t *extents, - cairo_pdf_resource_t *shading_res, - cairo_pdf_resource_t *gstate_res) - { - return _cairo_pdf_surface_add_pdf_pattern_or_shading (surface, - pattern, -+ op, - extents, - TRUE, - shading_res, -@@ -1565,12 +1572,14 @@ - static cairo_int_status_t - _cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface, - const cairo_pattern_t *pattern, -+ cairo_operator_t op, - const cairo_rectangle_int_t *extents, - cairo_pdf_resource_t *pattern_res, - cairo_pdf_resource_t *gstate_res) - { - return _cairo_pdf_surface_add_pdf_pattern_or_shading (surface, - pattern, -+ op, - extents, - FALSE, - pattern_res, -@@ -1846,7 +1855,8 @@ - _cairo_pdf_surface_open_content_stream (cairo_pdf_surface_t *surface, - const cairo_box_double_t *bbox, - cairo_pdf_resource_t *resource, -- cairo_bool_t is_form) -+ cairo_bool_t is_form, -+ cairo_bool_t is_group) - { - cairo_int_status_t status; - -@@ -1860,25 +1870,41 @@ - if (is_form) { - assert (bbox != NULL); - -- status = -- _cairo_pdf_surface_open_stream (surface, -- resource, -- surface->compress_content, -- " /Type /XObject\n" -- " /Subtype /Form\n" -- " /BBox [ %f %f %f %f ]\n" -- " /Group <<\n" -- " /Type /Group\n" -- " /S /Transparency\n" -- " /I true\n" -- " /CS /DeviceRGB\n" -- " >>\n" -- " /Resources %d 0 R\n", -- bbox->p1.x, -- bbox->p1.y, -- bbox->p2.x, -- bbox->p2.y, -- surface->content_resources.id); -+ if (is_group) { -+ status = -+ _cairo_pdf_surface_open_stream (surface, -+ resource, -+ surface->compress_content, -+ " /Type /XObject\n" -+ " /Subtype /Form\n" -+ " /BBox [ %f %f %f %f ]\n" -+ " /Group <<\n" -+ " /Type /Group\n" -+ " /S /Transparency\n" -+ " /I true\n" -+ " /CS /DeviceRGB\n" -+ " >>\n" -+ " /Resources %d 0 R\n", -+ bbox->p1.x, -+ bbox->p1.y, -+ bbox->p2.x, -+ bbox->p2.y, -+ surface->content_resources.id); -+ } else { -+ status = -+ _cairo_pdf_surface_open_stream (surface, -+ resource, -+ surface->compress_content, -+ " /Type /XObject\n" -+ " /Subtype /Form\n" -+ " /BBox [ %f %f %f %f ]\n" -+ " /Resources %d 0 R\n", -+ bbox->p1.x, -+ bbox->p1.y, -+ bbox->p2.x, -+ bbox->p2.y, -+ surface->content_resources.id); -+ } - } else { - status = - _cairo_pdf_surface_open_stream (surface, -@@ -2079,7 +2105,7 @@ - bbox.p1.y = 0; - bbox.p2.x = surface->width; - bbox.p2.y = surface->height; -- status = _cairo_pdf_surface_open_content_stream (surface, &bbox, NULL, has_fallbacks); -+ status = _cairo_pdf_surface_open_content_stream (surface, &bbox, NULL, has_fallbacks, has_fallbacks); - if (unlikely (status)) - return status; - -@@ -2154,6 +2180,7 @@ - status = _cairo_pdf_surface_add_source_surface (surface, - pad_image, - NULL, -+ FALSE, - source->filter, - FALSE, - extents, -@@ -2686,6 +2713,8 @@ - int width; - int height; - cairo_bool_t is_subsurface; -+ cairo_bool_t transparency_group; -+ cairo_recording_surface_t *recording; - - assert (pdf_source->type == CAIRO_PATTERN_TYPE_SURFACE); - extents = &pdf_source->hash_entry->extents; -@@ -2705,6 +2734,9 @@ - is_subsurface = TRUE; - } - -+ assert (source->type == CAIRO_SURFACE_TYPE_RECORDING); -+ recording = (cairo_recording_surface_t *) source; -+ - old_width = surface->width; - old_height = surface->height; - old_paginated_mode = surface->paginated_mode; -@@ -2721,7 +2753,16 @@ - surface->paginated_mode = CAIRO_PAGINATED_MODE_RENDER; - _cairo_pdf_group_resources_clear (&surface->resources); - _get_bbox_from_extents (height, extents, &bbox); -- status = _cairo_pdf_surface_open_content_stream (surface, &bbox, &pdf_source->hash_entry->surface_res, TRUE); -+ -+ /* We can optimize away the transparency group allowing the viewer -+ * to replay the group in place when all operators are OVER and the -+ * recording contains only opaque and/or clear alpha. -+ */ -+ transparency_group = !(pdf_source->hash_entry->operator == CAIRO_OPERATOR_OVER && -+ _cairo_recording_surface_has_only_bilevel_alpha (recording) && -+ _cairo_recording_surface_has_only_op_over (recording)); -+ status = _cairo_pdf_surface_open_content_stream (surface, &bbox, &pdf_source->hash_entry->surface_res, -+ TRUE, transparency_group); - if (unlikely (status)) - goto err; - -@@ -2805,6 +2846,7 @@ - status = _cairo_pdf_surface_add_source_surface (surface, - NULL, - pattern, -+ pdf_pattern->operator, - pattern->filter, - FALSE, - &pdf_pattern->extents, -@@ -3909,6 +3951,7 @@ - - static cairo_int_status_t - _cairo_pdf_surface_paint_surface_pattern (cairo_pdf_surface_t *surface, -+ cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_rectangle_int_t *extents, - cairo_bool_t stencil_mask) -@@ -3938,6 +3981,7 @@ - status = _cairo_pdf_surface_add_source_surface (surface, - NULL, - source, -+ op, - source->filter, - stencil_mask, - extents, -@@ -3999,6 +4043,7 @@ - - static cairo_int_status_t - _cairo_pdf_surface_paint_gradient (cairo_pdf_surface_t *surface, -+ cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_rectangle_int_t *extents) - { -@@ -4008,7 +4053,7 @@ - int alpha; - - status = _cairo_pdf_surface_add_pdf_shading (surface, source, -- extents, -+ op, extents, - &shading_res, &gstate_res); - if (unlikely (status == CAIRO_INT_STATUS_NOTHING_TO_DO)) - return CAIRO_INT_STATUS_SUCCESS; -@@ -4062,6 +4107,7 @@ - - static cairo_int_status_t - _cairo_pdf_surface_paint_pattern (cairo_pdf_surface_t *surface, -+ cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_rectangle_int_t *extents, - cairo_bool_t mask) -@@ -4070,6 +4116,7 @@ - case CAIRO_PATTERN_TYPE_SURFACE: - case CAIRO_PATTERN_TYPE_RASTER_SOURCE: - return _cairo_pdf_surface_paint_surface_pattern (surface, -+ op, - source, - extents, - mask); -@@ -4077,6 +4124,7 @@ - case CAIRO_PATTERN_TYPE_RADIAL: - case CAIRO_PATTERN_TYPE_MESH: - return _cairo_pdf_surface_paint_gradient (surface, -+ op, - source, - extents); - -@@ -5701,6 +5749,7 @@ - if (_can_paint_pattern (group->mask)) { - _cairo_output_stream_printf (surface->output, "q\n"); - status = _cairo_pdf_surface_paint_pattern (surface, -+ CAIRO_OPERATOR_OVER, - group->mask, - &group->extents, - FALSE); -@@ -5711,7 +5760,9 @@ - } else { - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, group->mask, NULL, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, group->mask, -+ CAIRO_OPERATOR_OVER, -+ NULL, - &pattern_res, &gstate_res); - if (unlikely (status)) - return status; -@@ -5774,6 +5825,7 @@ - if (_can_paint_pattern (group->source)) { - _cairo_output_stream_printf (surface->output, "q\n"); - status = _cairo_pdf_surface_paint_pattern (surface, -+ CAIRO_OPERATOR_OVER, - group->source, - &group->extents, - FALSE); -@@ -5784,7 +5836,9 @@ - } else { - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, group->source, NULL, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, group->source, -+ CAIRO_OPERATOR_OVER, -+ NULL, - &pattern_res, &gstate_res); - if (unlikely (status)) - return status; -@@ -6039,7 +6093,7 @@ - return status; - - _cairo_pdf_group_resources_clear (&surface->resources); -- status = _cairo_pdf_surface_open_content_stream (surface, NULL, NULL, FALSE); -+ status = _cairo_pdf_surface_open_content_stream (surface, NULL, NULL, FALSE, FALSE); - if (unlikely (status)) - return status; - -@@ -6327,12 +6381,13 @@ - bbox.p1.y = 0; - bbox.p2.x = surface->width; - bbox.p2.y = surface->height; -- return _cairo_pdf_surface_open_content_stream (surface, &bbox, NULL, TRUE); -+ return _cairo_pdf_surface_open_content_stream (surface, &bbox, NULL, TRUE, 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, -+ cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_pattern_t *mask, - const cairo_rectangle_int_t *extents) -@@ -6379,7 +6434,7 @@ - return status; - - _cairo_output_stream_printf (surface->output, "q\n"); -- status = _cairo_pdf_surface_paint_surface_pattern (surface, mask, extents, TRUE); -+ status = _cairo_pdf_surface_paint_surface_pattern (surface, op, mask, extents, TRUE); - if (unlikely (status)) - return status; - -@@ -6455,6 +6510,7 @@ - if (_can_paint_pattern (source)) { - _cairo_output_stream_printf (surface->output, "q\n"); - status = _cairo_pdf_surface_paint_pattern (surface, -+ op, - source, - &extents.bounded, - FALSE); -@@ -6468,7 +6524,7 @@ - - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, source, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, source, op, - &extents.bounded, - &pattern_res, &gstate_res); - if (unlikely (status)) -@@ -6609,7 +6665,7 @@ - goto cleanup; - - /* Check if we can use a stencil mask */ -- status = _cairo_pdf_surface_emit_stencil_mask (surface, source, mask, &extents.bounded); -+ status = _cairo_pdf_surface_emit_stencil_mask (surface, op, source, mask, &extents.bounded); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto cleanup; - -@@ -6726,7 +6782,7 @@ - - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, source, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, source, op, - &extents.bounded, - &pattern_res, &gstate_res); - if (unlikely (status)) -@@ -6879,6 +6935,7 @@ - goto cleanup; - - status = _cairo_pdf_surface_paint_pattern (surface, -+ op, - source, - &extents.bounded, - FALSE); -@@ -6892,7 +6949,7 @@ - - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, source, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, source, op, - &extents.bounded, - &pattern_res, &gstate_res); - if (unlikely (status)) -@@ -7067,6 +7124,7 @@ - fill_pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, fill_source, -+ fill_op, - &extents.bounded, - &fill_pattern_res, - &gstate_res); -@@ -7079,6 +7137,7 @@ - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, - stroke_source, -+ stroke_op, - &extents.bounded, - &stroke_pattern_res, - &gstate_res); -@@ -7170,7 +7229,7 @@ - - pattern_res.id = 0; - gstate_res.id = 0; -- status = _cairo_pdf_surface_add_pdf_pattern (surface, source, -+ status = _cairo_pdf_surface_add_pdf_pattern (surface, source, op, - &extents.bounded, - &pattern_res, &gstate_res); - if (unlikely (status)) ---- a/src/cairo-recording-surface-private.h -+++ b/src/cairo-recording-surface-private.h -@@ -136,6 +136,8 @@ - unsigned int *indices; - unsigned int num_indices; - cairo_bool_t optimize_clears; -+ cairo_bool_t has_bilevel_alpha; -+ cairo_bool_t has_only_op_over; - - struct bbtree { - cairo_box_t extents; -@@ -184,4 +186,10 @@ - cairo_box_t *bbox, - const cairo_matrix_t *transform); - -+cairo_private cairo_bool_t -+_cairo_recording_surface_has_only_bilevel_alpha (cairo_recording_surface_t *surface); -+ -+cairo_private cairo_bool_t -+_cairo_recording_surface_has_only_op_over (cairo_recording_surface_t *surface); -+ - #endif /* CAIRO_RECORDING_SURFACE_H */ ---- a/src/cairo-recording-surface.c -+++ b/src/cairo-recording-surface.c -@@ -87,6 +87,7 @@ - #include "cairo-error-private.h" - #include "cairo-image-surface-private.h" - #include "cairo-recording-surface-inline.h" -+#include "cairo-surface-snapshot-inline.h" - #include "cairo-surface-wrapper-private.h" - #include "cairo-traps-private.h" - -@@ -420,6 +421,8 @@ - surface->indices = NULL; - surface->num_indices = 0; - surface->optimize_clears = TRUE; -+ surface->has_bilevel_alpha = FALSE; -+ surface->has_only_op_over = FALSE; - - return &surface->base; - } -@@ -1603,6 +1606,68 @@ - return num_visible; - } - -+static void -+_cairo_recording_surface_merge_source_attributes (cairo_recording_surface_t *surface, -+ cairo_operator_t op, -+ const cairo_pattern_t *source) -+{ -+ if (op != CAIRO_OPERATOR_OVER) -+ surface->has_only_op_over = FALSE; -+ -+ if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { -+ cairo_surface_pattern_t *surf_pat = (cairo_surface_pattern_t *) source; -+ cairo_surface_t *surf = surf_pat->surface; -+ cairo_surface_t *free_me = NULL; -+ -+ if (_cairo_surface_is_snapshot (surf)) -+ free_me = surf = _cairo_surface_snapshot_get_target (surf); -+ -+ if (surf->type == CAIRO_SURFACE_TYPE_RECORDING) { -+ cairo_recording_surface_t *rec_surf = (cairo_recording_surface_t *) surf; -+ -+ if (! _cairo_recording_surface_has_only_bilevel_alpha (rec_surf)) -+ surface->has_bilevel_alpha = FALSE; -+ -+ if (! _cairo_recording_surface_has_only_op_over (rec_surf)) -+ surface->has_only_op_over = FALSE; -+ -+ } else if (surf->type == CAIRO_SURFACE_TYPE_IMAGE) { -+ cairo_image_surface_t *img_surf = (cairo_image_surface_t *) surf; -+ -+ if (_cairo_image_analyze_transparency (img_surf) == CAIRO_IMAGE_HAS_ALPHA) -+ surface->has_bilevel_alpha = FALSE; -+ -+ } else { -+ if (!_cairo_pattern_is_clear (source) && !_cairo_pattern_is_opaque (source, NULL)) -+ surface->has_bilevel_alpha = FALSE; -+ } -+ -+ cairo_surface_destroy (free_me); -+ return; -+ -+ } else if (source->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) { -+ cairo_surface_t *image; -+ cairo_surface_t *raster; -+ -+ image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); -+ raster = _cairo_raster_source_pattern_acquire (source, image, NULL); -+ cairo_surface_destroy (image); -+ if (raster) { -+ if (raster->type == CAIRO_SURFACE_TYPE_IMAGE) { -+ if (_cairo_image_analyze_transparency ((cairo_image_surface_t *)raster) == CAIRO_IMAGE_HAS_ALPHA) -+ surface->has_bilevel_alpha = FALSE; -+ } -+ -+ _cairo_raster_source_pattern_release (source, raster); -+ if (raster->type == CAIRO_SURFACE_TYPE_IMAGE) -+ return; -+ } -+ } -+ -+ if (!_cairo_pattern_is_clear (source) && !_cairo_pattern_is_opaque (source, NULL)) -+ surface->has_bilevel_alpha = FALSE; -+} -+ - static cairo_status_t - _cairo_recording_surface_replay_internal (cairo_recording_surface_t *surface, - const cairo_rectangle_int_t *surface_extents, -@@ -1652,6 +1717,9 @@ - if (! _cairo_surface_wrapper_get_target_extents (&wrapper, &extents)) - goto done; - -+ surface->has_bilevel_alpha = TRUE; -+ surface->has_only_op_over = TRUE; -+ - num_elements = surface->commands.num_elements; - elements = _cairo_array_index (&surface->commands, 0); - if (extents.width < r->width || extents.height < r->height) { -@@ -1675,6 +1743,11 @@ - command->header.op, - &command->paint.source.base, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->paint.source.base); -+ } - break; - - case CAIRO_COMMAND_MASK: -@@ -1683,6 +1756,14 @@ - &command->mask.source.base, - &command->mask.mask.base, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->mask.source.base); -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->mask.mask.base); -+ } - break; - - case CAIRO_COMMAND_STROKE: -@@ -1696,6 +1777,11 @@ - command->stroke.tolerance, - command->stroke.antialias, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->stroke.source.base); -+ } - break; - - case CAIRO_COMMAND_FILL: -@@ -1737,6 +1823,14 @@ - stroke_command->stroke.tolerance, - stroke_command->stroke.antialias, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->fill.source.base); -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->stroke.source.base); -+ } - i++; - } - } -@@ -1749,6 +1843,11 @@ - command->fill.tolerance, - command->fill.antialias, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->fill.source.base); -+ } - } - break; - -@@ -1762,6 +1861,11 @@ - command->show_text_glyphs.cluster_flags, - command->show_text_glyphs.scaled_font, - command->header.clip); -+ if (type == CAIRO_RECORDING_CREATE_REGIONS) { -+ _cairo_recording_surface_merge_source_attributes (surface, -+ command->header.op, -+ &command->show_text_glyphs.source.base); -+ } - break; - - default: -@@ -2070,3 +2174,15 @@ - *extents = record->extents_pixels; - return TRUE; - } -+ -+cairo_bool_t -+_cairo_recording_surface_has_only_bilevel_alpha (cairo_recording_surface_t *surface) -+{ -+ return surface->has_bilevel_alpha; -+} -+ -+cairo_bool_t -+_cairo_recording_surface_has_only_op_over (cairo_recording_surface_t *surface) -+{ -+ return surface->has_only_op_over; -+} diff -Nru cairo-1.13.0~20140204/debian/patches/pdf-output-mime-data-embedding.patch cairo-1.14.2/debian/patches/pdf-output-mime-data-embedding.patch --- cairo-1.13.0~20140204/debian/patches/pdf-output-mime-data-embedding.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/pdf-output-mime-data-embedding.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ ---- a/src/cairo-pdf-surface.c -+++ b/src/cairo-pdf-surface.c -@@ -2664,6 +2664,18 @@ - cairo_int_status_t status; - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { -+ if (!source->hash_entry->stencil_mask) { -+ status = _cairo_pdf_surface_emit_jpx_image (surface, source->surface, source->hash_entry->surface_res); -+ if (status != CAIRO_INT_STATUS_UNSUPPORTED) -+ return status; -+ -+ status = _cairo_pdf_surface_emit_jpeg_image (surface, source->surface, source->hash_entry->surface_res); -+ if (status != CAIRO_INT_STATUS_UNSUPPORTED) -+ return status; -+ } -+ } -+ -+ if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { - status = _cairo_surface_acquire_source_image (source->surface, &image, &image_extra); - } else { - status = _cairo_pdf_surface_acquire_source_image_from_pattern (surface, source->raster_pattern, -@@ -2672,22 +2684,11 @@ - if (unlikely (status)) - return status; - -- if (!source->hash_entry->stencil_mask) { -- status = _cairo_pdf_surface_emit_jpx_image (surface, &image->base, source->hash_entry->surface_res); -- if (status != CAIRO_INT_STATUS_UNSUPPORTED) -- goto release_source; -- -- status = _cairo_pdf_surface_emit_jpeg_image (surface, &image->base, source->hash_entry->surface_res); -- if (status != CAIRO_INT_STATUS_UNSUPPORTED) -- goto release_source; -- } -- - status = _cairo_pdf_surface_emit_image (surface, image, - &source->hash_entry->surface_res, - source->hash_entry->interpolate, - source->hash_entry->stencil_mask); - --release_source: - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) - _cairo_surface_release_source_image (source->surface, image, image_extra); - else diff -Nru cairo-1.13.0~20140204/debian/patches/series cairo-1.14.2/debian/patches/series --- cairo-1.13.0~20140204/debian/patches/series 2014-02-04 11:31:37.000000000 +0000 +++ cairo-1.14.2/debian/patches/series 2015-04-08 11:41:47.000000000 +0000 @@ -1,6 +1,5 @@ 01_build_perf_utils.patch 02_am-maintainer-mode.patch 03_export-symbols.patch -05-flto.patch 06_hurd-map-noreserve.patch server_side_gradients.patch diff -Nru cairo-1.13.0~20140204/debian/patches/server_side_gradients.patch cairo-1.14.2/debian/patches/server_side_gradients.patch --- cairo-1.13.0~20140204/debian/patches/server_side_gradients.patch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/patches/server_side_gradients.patch 2015-04-08 11:41:47.000000000 +0000 @@ -3,7 +3,7 @@ =================================================================== --- cairo-1.12.2.orig/src/cairo-xlib-display.c 2012-04-25 21:53:19.000000000 +1200 +++ cairo-1.12.2/src/cairo-xlib-display.c 2012-05-17 16:06:18.543220800 +1200 -@@ -266,11 +266,7 @@ +@@ -263,11 +263,7 @@ /* Prior to Render 0.10, there is no protocol support for gradients and * we call function stubs instead, which would silently consume the drawing. */ diff -Nru cairo-1.13.0~20140204/debian/rules cairo-1.14.2/debian/rules --- cairo-1.13.0~20140204/debian/rules 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/rules 2015-04-08 11:41:47.000000000 +0000 @@ -1,184 +1,71 @@ #!/usr/bin/make -f -# list of flavors we build; each gets a builddir, a configure pass (configure -# args are defined below), a build pass, and an install pass -FLAVORS := main udeb - -# current flavor we're building; this is only expanded in flavor specific -# targets -current_flavor = $* - -# macro to get a value for the current flavor we're building; for example -# when building the main flavor, $(call flavor_get,CFLAGS) will expand to -# main_CFLAGS if it's set or to CFLAGS otherwise; pay attention to not adding -# superflous spaces when for the arguments of $(call ); only some vars can -# be expanded in this way though -flavor_get = $(or $($(current_flavor)_$(1)),$($(1))) - -# Supported backends (as of Cairo 1.7.4): -# (internal) Image -# xlib Xlib -# pdf PDF -# ps PostScript -# svg SVG -# -# Experimental and unsupported backends: -# directfb DirectFB (requires Build-Depend on libdirectfb-dev (>=0.9.25) ) -# glitz OpenGL (glitz) -# xcb XCB (requires Build-Depend on at least libxcb1-dev) -# -# Other platform backends are auto disabled: quartz/OSX, win32/Win32 -# -# Features: -# --enable-png PNG (default enabled) - -DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +#export DH_VERBOSE=1 +#export DEB_BUILD_OPTIONS="nostrip" + +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all +export DEB_CFLAGS_MAINT_APPEND = -Wall +export DEB_LDFLAGS_MAINT_APPEND = -Wl,-z,defs -Wl,-O1 -Wl,--as-needed + +%: + dh $@ --with autoreconf configure_flags += \ ---prefix=/usr \ ---mandir=/usr/share/man \ ---infodir=/usr/share/info \ ---enable-pdf --enable-ps \ ---enable-xlib \ ---enable-png \ ---enable-tee \ ---disable-silent-rules \ ---disable-maintainer-mode \ ---build=$(DEB_BUILD_GNU_TYPE) - -ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) -configure_flags += --host=$(DEB_HOST_GNU_TYPE) -endif - -main_configure_flags += \ -$(configure_flags) \ ---libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ ---enable-xlib --enable-svg \ ---enable-xcb --enable-perf-utils # --enable-gl + --enable-pdf \ + --enable-ps \ + --enable-xlib \ + --enable-png \ + --enable-tee \ + --disable-silent-rules \ + --disable-maintainer-mode + +deb_configure_flags += \ + $(configure_flags) \ + --enable-xlib \ + --enable-svg \ + --enable-xcb \ + --enable-perf-utils \ + --disable-gl udeb_configure_flags += \ -$(configure_flags) \ ---disable-svg \ ---disable-xcb - -builddir = $(buildbasedir)/$(current_flavor) -buildbasedir = $(CURDIR)/debian/build - -installdir = $(installbasedir)/$(current_flavor) -installbasedir = $(CURDIR)/debian/install - -# default CFLAGS; these can be expanded with $(call flavor_get, ) -CFLAGS = `dpkg-buildflags --get CFLAGS` -CFLAGS += -Wall -LDFLAGS = `dpkg-buildflags --get LDFLAGS` -CPPFLAGS = `dpkg-buildflags --get CPPFLAGS` - -CFLAGS_main += $(CFLAGS) -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) -CFLAGS_udeb += $(CFLAGS) -else -CFLAGS_udeb += $(CFLAGS) -Os -endif - -LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed - -configure-common-stamp: - dh_testdir - # Generated by configure and breaks the build if already existing - -test -r src/cairo-features.h && \ - mv src/cairo-features.h src/cairo-features.h.orig - dh_autoreconf - patch -Np1 < debian/ltmain_as-needed.patch - touch $@ - -configure-stamp-%: configure-common-stamp - dh_testdir - mkdir -p $(builddir); \ - cd $(builddir); \ - $(CURDIR)/configure \ - CFLAGS="$(call flavor_get,CFLAGS)" \ - LDFLAGS="$(LDFLAGS)" \ - CPPFLAGS="$(CPPFLAGS)" \ - $(call flavor_get,configure_flags) - touch $@ - -build: $(addprefix build-stamp-, $(FLAVORS)) - -build-stamp-%: configure-stamp-% - dh_testdir - $(MAKE) -C $(builddir) - touch $@ - -clean: - dh_testdir - [ ! -r src/cairo-features.h.orig ] || mv -f src/cairo-features.h.orig src/cairo-features.h - [ ! -r configure-common-stamp ] || patch -NRp1 < debian/ltmain_as-needed.patch - rm -f *-stamp* - rm -rf $(buildbasedir) $(installbasedir) - dh_autoreconf_clean - dh_clean - -install-%: build-stamp-% - $(MAKE) -C $(builddir) install DESTDIR=$(installdir) - for file in $$(find $(installdir)/usr/lib -name '*.la'); do \ - sed -i "/dependency_libs/ s/'.*'/''/" $$file; \ - done - -install: - dh_testdir - dh_testroot - dh_prep - for file in libcairo2-dev.install libcairo-gobject2.install \ - libcairo-script-interpreter2.install libcairo2.install \ - cairo-perf-utils.install; \ - do \ - sed -e"s,\$${DEB_HOST_MULTIARCH},${DEB_HOST_MULTIARCH},g" \ - debian/$${file}.in > debian/$$file; \ - done - dh_installdirs - for f in $(FLAVORS); do \ - debian/rules install-$$f; \ - done - -binary-indep: build install - dh_testdir - dh_testroot - dh_install -i - dh_installchangelogs -i ChangeLog - dh_installdocs -i -A NEWS README AUTHORS - dh_link -i - dh_compress -i - dh_fixperms -i - dh_installdeb -i - dh_gencontrol -i - dh_md5sums -i - dh_builddeb -i - -binary-arch: build install - dh_testdir - dh_testroot - dh_install -s - dh_installdocs -s -A README NEWS AUTHORS - dh_installchangelogs -s ChangeLog - dh_installman -s - dh_installexamples -s - dh_link -s - dh_strip -s --dbg-package=libcairo2-dbg -Nlibcairo2-udeb -Ncairo-perf-utils - dh_strip -plibcairo2-udeb -pcairo-perf-utils - dh_compress -s - dh_fixperms -s - dh_makeshlibs -plibcairo2 --add-udeb=libcairo2-udeb -V 'libcairo2 (>= 1.12.0)' -- -c4 - dh_makeshlibs -plibcairo-gobject2 -V 'libcairo-gobject2 (>= 1.10.0)' -- -c4 - dh_makeshlibs -plibcairo-script-interpreter2 -V 'libcairo-script-interpreter2 (>= 1.10.0)' -- -c4 - dh_installdeb -s - dh_shlibdeps -s - dh_perl -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s + $(configure_flags) \ + --disable-svg \ + --disable-xcb + +override_dh_autoreconf: + dh_autoreconf --as-needed + +override_dh_auto_configure: + dh_auto_configure --builddirectory=debian/build/deb \ + -- $(deb_configure_flags) + dh_auto_configure --builddirectory=debian/build/udeb \ + -- $(udeb_configure_flags) + +override_dh_auto_build: + dh_auto_build --builddirectory=debian/build/deb + dh_auto_build --builddirectory=debian/build/udeb + +override_dh_auto_install: + dh_auto_install --builddirectory=debian/build/deb \ + --destdir=debian/install/deb + dh_auto_install --builddirectory=debian/build/udeb \ + --destdir=debian/install/udeb + +override_dh_install: + dh_install -plibcairo2-udeb --sourcedir=debian/install/udeb + dh_install -Nlibcairo2-udeb --sourcedir=debian/install/deb --list-missing -binary: binary-indep binary-arch +override_dh_installdocs: + dh_installdocs -A NEWS README AUTHORS -.PHONY: build clean binary-indep binary-arch binary install clean +override_dh_auto_clean: + rm -rf debian/install/ debian/build/ + +override_dh_strip: + dh_strip -plibcairo2-udeb -pcairo-perf-utils + dh_strip --remaining-packages --dbg-package=libcairo2-dbg + +override_dh_makeshlibs: + dh_makeshlibs -plibcairo2 --add-udeb=libcairo2-udeb -V 'libcairo2 (>= 1.14.0)' -- -c4 + dh_makeshlibs -plibcairo-gobject2 --add-udeb=libcairo2-udeb -V 'libcairo-gobject2 (>= 1.10.0)' -- -c4 + dh_makeshlibs -plibcairo-script-interpreter2 -V 'libcairo-script-interpreter2 (>= 1.10.0)' -- -c4 diff -Nru cairo-1.13.0~20140204/debian/watch cairo-1.14.2/debian/watch --- cairo-1.13.0~20140204/debian/watch 2014-02-04 11:20:51.000000000 +0000 +++ cairo-1.14.2/debian/watch 2015-04-08 11:41:47.000000000 +0000 @@ -1,2 +1,2 @@ -version=2 -http://cairographics.org/releases/ cairo-([\d+\.]+|\d+)\.tar\.gz debian uupdate +version=3 +http://cairographics.org/releases/ cairo-([\d+\.]+|\d+)\.tar\.xz diff -Nru cairo-1.13.0~20140204/doc/Makefile.in cairo-1.14.2/doc/Makefile.in --- cairo-1.13.0~20140204/doc/Makefile.in 2014-02-04 09:46:57.000000000 +0000 +++ cairo-1.14.2/doc/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -451,6 +451,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/doc/public/cairo-sections.txt cairo-1.14.2/doc/public/cairo-sections.txt --- cairo-1.13.0~20140204/doc/public/cairo-sections.txt 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/cairo-sections.txt 2015-03-11 02:02:37.000000000 +0000 @@ -114,6 +114,16 @@
+cairo-skia +cairo_skia_context_t +cairo_skia_surface_t +format_to_sk_config + +cairo_skia_context +cairo_skia_surface +
+ +
cairo-win32 CAIRO_HAS_WIN32_SURFACE cairo_win32_surface_create @@ -143,9 +153,6 @@ cairo_quartz_surface_create cairo_quartz_surface_create_for_cg_context cairo_quartz_surface_get_cg_context - -cairo_quartz_image_surface_create -cairo_quartz_image_surface_get_image
@@ -216,11 +223,21 @@ cairo_device_get_user_data cairo_device_acquire cairo_device_release +cairo_device_observer_elapsed +cairo_device_observer_fill_elapsed +cairo_device_observer_glyphs_elapsed +cairo_device_observer_mask_elapsed +cairo_device_observer_paint_elapsed +cairo_device_observer_print +cairo_device_observer_stroke_elapsed
cairo-surface CAIRO_HAS_MIME_SURFACE +CAIRO_MIME_TYPE_JBIG2 +CAIRO_MIME_TYPE_JBIG2_GLOBAL +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID CAIRO_MIME_TYPE_JP2 CAIRO_MIME_TYPE_JPEG CAIRO_MIME_TYPE_PNG @@ -243,6 +260,8 @@ cairo_surface_mark_dirty_rectangle cairo_surface_set_device_offset cairo_surface_get_device_offset +cairo_surface_get_device_scale +cairo_surface_set_device_scale cairo_surface_set_fallback_resolution cairo_surface_get_fallback_resolution cairo_surface_type_t @@ -261,6 +280,23 @@
+cairo-surface-observer +CAIRO_HAS_OBSERVER_SURFACE +cairo_surface_create_observer +cairo_surface_observer_add_fill_callback +cairo_surface_observer_add_finish_callback +cairo_surface_observer_add_flush_callback +cairo_surface_observer_add_glyphs_callback +cairo_surface_observer_add_mask_callback +cairo_surface_observer_add_paint_callback +cairo_surface_observer_add_stroke_callback +cairo_surface_observer_callback_t +cairo_surface_observer_elapsed +cairo_surface_observer_mode_t +cairo_surface_observer_print +
+ +
cairo-version CAIRO_VERSION CAIRO_VERSION_MAJOR diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-errors.html cairo-1.14.2/doc/public/html/bindings-errors.html --- cairo-1.13.0~20140204/doc/public/html/bindings-errors.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-errors.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Error handling +Cairo: A Vector Graphics Library: Error handling - + - - - - - - + + + + + +

@@ -31,7 +31,7 @@ When a method on an object fails, the object is put into an error state. Subsequent operations on the object do nothing. The status of the object can be queried with - a function like status(). + a function like status().

  • @@ -117,6 +117,6 @@

  • + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-fonts.html cairo-1.14.2/doc/public/html/bindings-fonts.html --- cairo-1.13.0~20140204/doc/public/html/bindings-fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Fonts +Cairo: A Vector Graphics Library: Fonts - + - - - - - - + + + + + +

    @@ -40,14 +40,14 @@ types.

    - The cairo_font_face_set_user_data(), - and cairo_font_face_get_user_data() + The cairo_font_face_set_user_data(), + and cairo_font_face_get_user_data() methods are provided for use in language bindings, and should not be directly exposed to applications.

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-memory.html cairo-1.14.2/doc/public/html/bindings-memory.html --- cairo-1.13.0~20140204/doc/public/html/bindings-memory.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-memory.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Memory management +Cairo: A Vector Graphics Library: Memory management - + - - - - - - + + + + + +

    @@ -58,7 +58,7 @@ uniquifying via a pin table (a hash table that goes from cairo object to language object). For cairo_surface_t you can use also - cairo_surface_set_user_data() + cairo_surface_set_user_data() instead of a separate pin table.

  • @@ -118,6 +118,6 @@
  • + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-overloading.html cairo-1.14.2/doc/public/html/bindings-overloading.html --- cairo-1.13.0~20140204/doc/public/html/bindings-overloading.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-overloading.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Overloading and optional arguments +Cairo: A Vector Graphics Library: Overloading and optional arguments - + - - - - - - + + + + + +

    @@ -33,7 +33,7 @@ overloading. What may seem like an obvious overload now may turn out to be strange with future additions to cairo. It might seem logical to make - cairo_set_source_rgb() + cairo_set_source_rgb() an overload of cairo_set_source(), but future plans to add cairo_set_source_rgb_premultiplied(), which will also take three doubles make this a bad idea. For @@ -90,9 +90,9 @@

    Note that there are cases where all constructors for a type aren't overloaded together. For example - cairo_image_surface_create_from_png() + cairo_image_surface_create_from_png() should not be overloaded together with - cairo_image_surface_create(). + cairo_image_surface_create(). In such cases, the remaining constructors will typically need to be bound as static methods. In Java, for example, we might have:

    @@ -116,6 +116,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-path.html cairo-1.14.2/doc/public/html/bindings-path.html --- cairo-1.13.0~20140204/doc/public/html/bindings-path.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-path.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,21 +2,21 @@ -cairo_path_t +Cairo: A Vector Graphics Library: cairo_path_t - + - - - - - - + + + + + +

    @@ -104,14 +104,14 @@ cairo_path_t objects. In the future, these guidelines may be extended to present an API for creating a cairo_path_t from scratch for use with - cairo_append_path() + cairo_append_path() but the current expectation is that cairo_append_path() will mostly be used with paths from - cairo_copy_path(). + cairo_copy_path().

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-patterns.html cairo-1.14.2/doc/public/html/bindings-patterns.html --- cairo-1.13.0~20140204/doc/public/html/bindings-patterns.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-patterns.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Patterns +Cairo: A Vector Graphics Library: Patterns - + - - - - - - + + + + + +

    @@ -38,38 +38,38 @@

     cairo_pattern_t
    -      cairo_pattern_set_matrix()
    -      cairo_pattern_get_matrix()
    -   cairo_solid_pattern_t (cairo_pattern_create_rgb() and cairo_pattern_create_rgba())
    -   cairo_surface_pattern_t (cairo_pattern_create_for_surface())
    -         cairo_pattern_set_extend()
    -         cairo_pattern_get_extend()
    -         cairo_pattern_set_filter()
    -         cairo_pattern_get_filter()
    +      cairo_pattern_set_matrix()
    +      cairo_pattern_get_matrix()
    +   cairo_solid_pattern_t (cairo_pattern_create_rgb() and cairo_pattern_create_rgba())
    +   cairo_surface_pattern_t (cairo_pattern_create_for_surface())
    +         cairo_pattern_set_extend()
    +         cairo_pattern_get_extend()
    +         cairo_pattern_set_filter()
    +         cairo_pattern_get_filter()
        cairo_gradient_t
    -         cairo_pattern_add_color_stop_rgb()
    -         cairo_pattern_add_color_stop_rgba()
    -      cairo_linear_gradient_t (cairo_pattern_create_linear())
    -      cairo_radial_gradient_t (cairo_pattern_create_radial())
    -   cairo_mesh_t (cairo_pattern_create_mesh())
    -         cairo_mesh_pattern_begin_patch()
    -         cairo_mesh_pattern_end_patch()
    -         cairo_mesh_pattern_move_to()
    -         cairo_mesh_pattern_line_to()
    -         cairo_mesh_pattern_curve_to()
    -         cairo_mesh_pattern_set_control_point()
    -         cairo_mesh_pattern_set_corner_color_rgb()
    -         cairo_mesh_pattern_set_corner_color_rgba()
    -         cairo_mesh_pattern_get_patch_count()
    -         cairo_mesh_pattern_get_path()
    -         cairo_mesh_pattern_get_control_point()
    -         cairo_mesh_pattern_get_corner_color_rgba()
    +         cairo_pattern_add_color_stop_rgb()
    +         cairo_pattern_add_color_stop_rgba()
    +      cairo_linear_gradient_t (cairo_pattern_create_linear())
    +      cairo_radial_gradient_t (cairo_pattern_create_radial())
    +   cairo_mesh_t (cairo_pattern_create_mesh())
    +         cairo_mesh_pattern_begin_patch()
    +         cairo_mesh_pattern_end_patch()
    +         cairo_mesh_pattern_move_to()
    +         cairo_mesh_pattern_line_to()
    +         cairo_mesh_pattern_curve_to()
    +         cairo_mesh_pattern_set_control_point()
    +         cairo_mesh_pattern_set_corner_color_rgb()
    +         cairo_mesh_pattern_set_corner_color_rgba()
    +         cairo_mesh_pattern_get_patch_count()
    +         cairo_mesh_pattern_get_path()
    +         cairo_mesh_pattern_get_control_point()
    +         cairo_mesh_pattern_get_corner_color_rgba()
         

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-return-values.html cairo-1.14.2/doc/public/html/bindings-return-values.html --- cairo-1.13.0~20140204/doc/public/html/bindings-return-values.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-return-values.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Multiple return values +Cairo: A Vector Graphics Library: Multiple return values - + - - - - - - + + + + + +

    @@ -115,6 +115,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-streams.html cairo-1.14.2/doc/public/html/bindings-streams.html --- cairo-1.13.0~20140204/doc/public/html/bindings-streams.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-streams.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Streams and File I/O +Cairo: A Vector Graphics Library: Streams and File I/O - + - - - - - - + + + + + +

    @@ -78,7 +78,7 @@

    I'm not sure how to handle this for - cairo_pdf_surface_create_for_stream(). + cairo_pdf_surface_create_for_stream(). Other than keep a “exception to rethrow” thread-specific variable that is checked after every call to a Cairo @@ -87,6 +87,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/bindings-surfaces.html cairo-1.14.2/doc/public/html/bindings-surfaces.html --- cairo-1.13.0~20140204/doc/public/html/bindings-surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/bindings-surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Surfaces +Cairo: A Vector Graphics Library: Surfaces - + - - - - - - + + + + + +

    @@ -56,15 +56,15 @@ ways to get references to platform specific surfaces.

    - The cairo_surface_set_user_data(), - and cairo_surface_get_user_data() + The cairo_surface_set_user_data(), + and cairo_surface_get_user_data() methods are provided for use in language bindings, and should not be directly exposed to applications. One example of the use of these functions in a language binding is creating a binding for:

     cairo_surface_t *
    -cairo_image_surface_create_for_data (unsigned char	       *data,
    +cairo_image_surface_create_for_data (unsigned char	       *data,
     				     cairo_format_t		format,
     				     int			width,
     				     int			height,
    @@ -88,6 +88,6 @@
     

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-device-t.html cairo-1.14.2/doc/public/html/cairo-cairo-device-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-device-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-device-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_device_t +Cairo: A Vector Graphics Library: cairo_device_t - + - - - - - - - - - - + + + + + + +
    @@ -33,58 +30,205 @@

    cairo_device_t

    cairo_device_t — interface to underlying rendering system

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_device_t;
    -cairo_device_t *    cairo_device_reference              (cairo_device_t *device);
    -void                cairo_device_destroy                (cairo_device_t *device);
    -cairo_status_t      cairo_device_status                 (cairo_device_t *device);
    -void                cairo_device_finish                 (cairo_device_t *device);
    -void                cairo_device_flush                  (cairo_device_t *device);
    -enum                cairo_device_type_t;
    -cairo_device_type_t cairo_device_get_type               (cairo_device_t *device);
    -unsigned int        cairo_device_get_reference_count    (cairo_device_t *device);
    -cairo_status_t      cairo_device_set_user_data          (cairo_device_t *device,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_device_get_user_data          (cairo_device_t *device,
    -                                                         const cairo_user_data_key_t *key);
    -cairo_status_t      cairo_device_acquire                (cairo_device_t *device);
    -void                cairo_device_release                (cairo_device_t *device);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_device_t * + +cairo_device_reference () +
    +void + +cairo_device_destroy () +
    +cairo_status_t + +cairo_device_status () +
    +void + +cairo_device_finish () +
    +void + +cairo_device_flush () +
    +cairo_device_type_t + +cairo_device_get_type () +
    unsigned int + +cairo_device_get_reference_count () +
    +cairo_status_t + +cairo_device_set_user_data () +
    +void * + +cairo_device_get_user_data () +
    +cairo_status_t + +cairo_device_acquire () +
    +void + +cairo_device_release () +
    +double + +cairo_device_observer_elapsed () +
    +double + +cairo_device_observer_fill_elapsed () +
    +double + +cairo_device_observer_glyphs_elapsed () +
    +double + +cairo_device_observer_mask_elapsed () +
    +double + +cairo_device_observer_paint_elapsed () +
    +cairo_status_t + +cairo_device_observer_print () +
    +double + +cairo_device_observer_stroke_elapsed () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    typedefcairo_device_t
    enumcairo_device_type_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -Devices are the abstraction Cairo employs for the rendering system +

    Devices are the abstraction Cairo employs for the rendering system used by a cairo_surface_t. You can get the device of a surface using -cairo_surface_get_device(). -

    -

    -Devices are created using custom functions specific to the rendering +cairo_surface_get_device().

    +

    Devices are created using custom functions specific to the rendering system you want to use. See the documentation for the surface types -for those functions. -

    -

    -An important function that devices fulfill is sharing access to the +for those functions.

    +

    An important function that devices fulfill is sharing access to the rendering system between Cairo and your application. If you want to access a device directly that you used to draw to with Cairo, you must -first call cairo_device_flush() to ensure that Cairo finishes all -operations on the device and resets it to a clean state. -

    -

    -Cairo also provides the functions cairo_device_acquire() and -cairo_device_release() to synchronize access to the rendering system +first call cairo_device_flush() to ensure that Cairo finishes all +operations on the device and resets it to a clean state.

    +

    Cairo also provides the functions cairo_device_acquire() and +cairo_device_release() to synchronize access to the rendering system in a multithreaded environment. This is done internally, but can also -be used by applications. -

    -

    -Putting this all together, a function that works with devices should -look something like this: -

    +be used by applications.

    +

    Putting this all together, a function that works with devices should +look something like this:

     void
     my_device_modifying_function (cairo_device_t *device)
    @@ -107,502 +251,600 @@
       cairo_device_release (device);
     }
     
    -

    -

    -

    -

    -
    -

    Note

    -

    Please refer to the documentation of each backend for +

    Please refer to the documentation of each backend for additional usage requirements, guarantees provided, and interactions with existing surface API of the device functions for surfaces of that type. -

    -
    -

    -

    +

    -

    Details

    -
    -

    cairo_device_t

    -
    typedef struct _cairo_device cairo_device_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_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(). -

    -

    -Memory management of cairo_device_t is done with -cairo_device_reference() and cairo_device_destroy(). -

    -

    Since 1.10

    -
    -
    +

    Functions

    -

    cairo_device_reference ()

    -
    cairo_device_t *    cairo_device_reference              (cairo_device_t *device);
    -

    -Increases the reference count on device by one. This prevents -device from being destroyed until a matching call to -cairo_device_destroy() is made. -

    -

    -The number of references to a cairo_device_t can be get using -cairo_device_get_reference_count(). -

    -
    ---+

    cairo_device_reference ()

    +
    cairo_device_t *
    +cairo_device_reference (cairo_device_t *device);
    +

    Increases the reference count on device + by one. This prevents +device + from being destroyed until a matching call to +cairo_device_destroy() is made.

    +

    The number of references to a cairo_device_t can be get using +cairo_device_get_reference_count().

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    device :

    a cairo_device_t -

    Returns :

    the referenced cairo_device_t.

    device

    a cairo_device_t

     
    +
    +
    +

    Returns

    +

    the referenced cairo_device_t.

    +

    +

    Since 1.10


    -

    cairo_device_destroy ()

    -
    void                cairo_device_destroy                (cairo_device_t *device);
    -

    -Decreases the reference count on device by one. If the result is -zero, then device and all associated resources are freed. See -cairo_device_reference(). -

    -

    -This function may acquire devices if the last reference was dropped. -

    -
    ---+

    cairo_device_destroy ()

    +
    void
    +cairo_device_destroy (cairo_device_t *device);
    +

    Decreases the reference count on device + by one. If the result is +zero, then device + and all associated resources are freed. See +cairo_device_reference().

    +

    This function may acquire devices if the last reference was dropped.

    +
    +

    Parameters

    +
    ++++ - - + + +

    device :

    a cairo_device_t -

    device

    a cairo_device_t

     
    +

    Since 1.10


    -

    cairo_device_status ()

    -
    cairo_status_t      cairo_device_status                 (cairo_device_t *device);
    -

    -Checks whether an error has previously occurred for this -device. -

    -
    ---+

    cairo_device_status ()

    +
    cairo_status_t
    +cairo_device_status (cairo_device_t *device);
    +

    Checks whether an error has previously occurred for this +device.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    device :

    a cairo_device_t -

    Returns :

    -CAIRO_STATUS_SUCCESS on success or an error code if -the device is in an error state.

    device

    a cairo_device_t

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS on success or an error code if +the device is in an error state.

    +

    +

    Since 1.10


    -

    cairo_device_finish ()

    -
    void                cairo_device_finish                 (cairo_device_t *device);
    -

    -This function finishes the device and drops all references to +

    cairo_device_finish ()

    +
    void
    +cairo_device_finish (cairo_device_t *device);
    +

    This function finishes the device and drops all references to external resources. All surfaces, fonts and other objects created -for this device will be finished, too. -Further operations on the device will not affect the device but -will instead trigger a CAIRO_STATUS_DEVICE_FINISHED error. -

    -

    -When the last call to cairo_device_destroy() decreases the -reference count to zero, cairo will call cairo_device_finish() if +for this device + will be finished, too. +Further operations on the device + will not affect the device + but +will instead trigger a CAIRO_STATUS_DEVICE_FINISHED error.

    +

    When the last call to cairo_device_destroy() decreases the +reference count to zero, cairo will call cairo_device_finish() if it hasn't been called already, before freeing the resources -associated with the device. -

    -

    -This function may acquire devices. -

    -
    ---+associated with the device.

    +

    This function may acquire devices.

    +
    +

    Parameters

    +
    ++++ - - + + +

    device :

    the cairo_device_t to finish

    device

    the cairo_device_t to finish

     
    +

    Since 1.10


    -

    cairo_device_flush ()

    -
    void                cairo_device_flush                  (cairo_device_t *device);
    -

    -Finish any pending operations for the device and also restore any +

    cairo_device_flush ()

    +
    void
    +cairo_device_flush (cairo_device_t *device);
    +

    Finish any pending operations for the device and also restore any temporary modifications cairo has made to the device's state. This function must be called before switching from using the device with Cairo to operating on it directly with native APIs. If the device doesn't support direct access, then this function -does nothing. -

    -

    -This function may acquire devices. -

    -
    ---+does nothing.

    +

    This function may acquire devices.

    +
    +

    Parameters

    +
    ++++ - - + + +

    device :

    a cairo_device_t -

    device

    a cairo_device_t

     
    +

    Since 1.10


    -

    enum cairo_device_type_t

    -
    typedef enum {
    -    CAIRO_DEVICE_TYPE_DRM,
    -    CAIRO_DEVICE_TYPE_GL,
    -    CAIRO_DEVICE_TYPE_SCRIPT,
    -    CAIRO_DEVICE_TYPE_XCB,
    -    CAIRO_DEVICE_TYPE_XLIB,
    -    CAIRO_DEVICE_TYPE_XML,
    -    CAIRO_DEVICE_TYPE_COGL,
    -    CAIRO_DEVICE_TYPE_WIN32,
    -
    -    CAIRO_DEVICE_TYPE_INVALID = -1
    -} cairo_device_type_t;
    -
    -

    -cairo_device_type_t is used to describe the type of a given -device. The devices types are also known as "backends" within cairo. -

    -

    -The device type can be queried with cairo_device_get_type() -

    -

    -The various cairo_device_t functions can be used with devices of -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_cap_xrender_version(). -

    -

    -The behavior of calling a type-specific function with a device of -the wrong type is undefined. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_device_get_type ()

    +
    cairo_device_type_t
    +cairo_device_get_type (cairo_device_t *device);
    +

    This function returns the type of the device. See cairo_device_type_t +for available types.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    device

    a cairo_device_t

     
    +
    +
    +

    Returns

    +

    The type of device +.

    +

    +
    +

    Since 1.10

    +
    +
    +
    +

    cairo_device_get_reference_count ()

    +
    unsigned int
    +cairo_device_get_reference_count (cairo_device_t *device);
    +

    Returns the current reference count of device +.

    +
    +

    Parameters

    +
    --++++ + + + + + +

    device

    a cairo_device_t

     
    +
    +
    +

    Returns

    +

    the current reference count of device +. If the +object is a nil object, 0 will be returned.

    +

    +
    +

    Since 1.10

    +
    +
    +
    +

    cairo_device_set_user_data ()

    +
    cairo_status_t
    +cairo_device_set_user_data (cairo_device_t *device,
    +                            const cairo_user_data_key_t *key,
    +                            void *user_data,
    +                            cairo_destroy_func_t destroy);
    +

    Attach user data to device +. To remove user data from a surface, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + - - + + + - - + + +

    CAIRO_DEVICE_TYPE_DRM

    The device is of type Direct Render Manager, since 1.10 -

    CAIRO_DEVICE_TYPE_GL

    The device is of type OpenGL, since 1.10 -

    CAIRO_DEVICE_TYPE_SCRIPT

    The device is of type script, since 1.10 -

    CAIRO_DEVICE_TYPE_XCB

    The device is of type xcb, since 1.10 -

    CAIRO_DEVICE_TYPE_XLIB

    The device is of type xlib, since 1.10 -

    CAIRO_DEVICE_TYPE_XML

    The device is of type XML, since 1.10 -

    device

    a cairo_device_t

     

    CAIRO_DEVICE_TYPE_COGL

    The device is of type cogl, since 1.12 -

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    CAIRO_DEVICE_TYPE_WIN32

    The device is of type win32, since 1.12 -

    user_data

    the user data to attach to the cairo_device_t

     

    CAIRO_DEVICE_TYPE_INVALID

    The device is invalid, since 1.10 -

    destroy

    a cairo_destroy_func_t which will be called when the +cairo_t is destroyed or when new user data is attached using the +same key.

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +

    Since 1.10


    -

    cairo_device_get_type ()

    -
    cairo_device_type_t cairo_device_get_type               (cairo_device_t *device);
    -

    -This function returns the type of the device. See cairo_device_type_t -for available types. -

    -
    ---+

    cairo_device_get_user_data ()

    +
    void *
    +cairo_device_get_user_data (cairo_device_t *device,
    +                            const cairo_user_data_key_t *key);
    +

    Return user data previously attached to device + using the +specified key. If no user data has been attached with the given +key this function returns NULL.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    device :

    a cairo_device_t -

    device

    a cairo_device_t

     

    Returns :

    The type of device.

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +

    Since 1.10


    -

    cairo_device_get_reference_count ()

    -
    unsigned int        cairo_device_get_reference_count    (cairo_device_t *device);
    -

    -Returns the current reference count of device. -

    -
    ---+

    cairo_device_acquire ()

    +
    cairo_status_t
    +cairo_device_acquire (cairo_device_t *device);
    +

    Acquires the device + for the current thread. This function will block +until no other thread has acquired the device.

    +

    If the return value is CAIRO_STATUS_SUCCESS, you successfully acquired the +device. From now on your thread owns the device and no other thread will be +able to acquire it until a matching call to cairo_device_release(). It is +allowed to recursively acquire the device multiple times from the same +thread.

    +

    You must never acquire two different devices at the same time +unless this is explicitly allowed. Otherwise the possibility of deadlocks +exist. + +As various Cairo functions can acquire devices when called, these functions +may also cause deadlocks when you call them with an acquired device. So you +must not have a device acquired when calling them. These functions are +marked in the documentation. +

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    device :

    a cairo_device_t -

    Returns :

    the current reference count of device. If the -object is a nil object, 0 will be returned.

    device

    a cairo_device_t

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS on success or an error code if +the device is in an error state and could not be +acquired. After a successful call to cairo_device_acquire(), +a matching call to cairo_device_release() is required.

    +

    +

    Since 1.10


    -

    cairo_device_set_user_data ()

    -
    cairo_status_t      cairo_device_set_user_data          (cairo_device_t *device,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to device. To remove user data from a surface, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    cairo_device_release ()

    +
    void
    +cairo_device_release (cairo_device_t *device);
    +

    Releases a device + previously acquired using cairo_device_acquire(). See +that function for details.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - - - - - + + + + +

    device :

    a cairo_device_t -

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    user_data :

    the user data to attach to the cairo_device_t -

    destroy :

    a cairo_destroy_func_t which will be called when the -cairo_t is destroyed or when new user data is attached using the -same key.

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    device

    a cairo_device_t

     
    +

    Since 1.10


    -

    cairo_device_get_user_data ()

    -
    void *              cairo_device_get_user_data          (cairo_device_t *device,
    -                                                         const cairo_user_data_key_t *key);
    +

    cairo_device_observer_elapsed ()

    +
    double
    +cairo_device_observer_elapsed (cairo_device_t *device);

    -Return user data previously attached to device using the -specified key. If no user data has been attached with the given -key this function returns NULL.

    -
    ---- - - - - - - - - - - - - - - -

    device :

    a cairo_device_t -

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    Returns :

    the user data previously attached or NULL.
    -

    Since 1.10

    +
    +

    Returns

    +

    +

    -

    cairo_device_acquire ()

    -
    cairo_status_t      cairo_device_acquire                (cairo_device_t *device);
    +

    cairo_device_observer_fill_elapsed ()

    +
    double
    +cairo_device_observer_fill_elapsed (cairo_device_t *device);

    -Acquires the device for the current thread. This function will block -until no other thread has acquired the device.

    +
    +

    Returns

    +

    +
    +
    +
    +
    +

    cairo_device_observer_glyphs_elapsed ()

    +
    double
    +cairo_device_observer_glyphs_elapsed (cairo_device_t *device);

    -If the return value is CAIRO_STATUS_SUCCESS, you successfully acquired the -device. From now on your thread owns the device and no other thread will be -able to acquire it until a matching call to cairo_device_release(). It is -allowed to recursively acquire the device multiple times from the same -thread.

    +
    +

    Returns

    +

    +
    +
    +
    +
    +

    cairo_device_observer_mask_elapsed ()

    +
    double
    +cairo_device_observer_mask_elapsed (cairo_device_t *device);

    -
    -

    Note

    -

    You must never acquire two different devices at the same time -unless this is explicitly allowed. Otherwise the possibility of deadlocks -exist. +

    +

    Returns

    +

    +
    +
    +
    +
    +

    cairo_device_observer_paint_elapsed ()

    +
    double
    +cairo_device_observer_paint_elapsed (cairo_device_t *device);
    +

    +
    +

    Returns

    +

    +
    +
    +
    +
    +

    cairo_device_observer_print ()

    +
    cairo_status_t
    +cairo_device_observer_print (cairo_device_t *device,
    +                             cairo_write_func_t write_func,
    +                             void *closure);

    -As various Cairo functions can acquire devices when called, these functions -may also cause deadlocks when you call them with an acquired device. So you -must not have a device acquired when calling them. These functions are -marked in the documentation.

    +
    +

    Returns

    +

    +
    +
    +
    +

    cairo_device_observer_stroke_elapsed ()

    +
    double
    +cairo_device_observer_stroke_elapsed (cairo_device_t *device);

    -
    ---+
    +

    Returns

    +

    +
    + + +
    +

    Types and Values

    +
    +

    cairo_device_t

    +
    typedef struct _cairo_device cairo_device_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_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().

    +

    Memory management of cairo_device_t is done with +cairo_device_reference() and cairo_device_destroy().

    +

    Since 1.10

    +
    +
    +
    +

    enum cairo_device_type_t

    +

    cairo_device_type_t is used to describe the type of a given +device. The devices types are also known as "backends" within cairo.

    +

    The device type can be queried with cairo_device_get_type()

    +

    The various cairo_device_t functions can be used with devices of +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_cap_xrender_version().

    +

    The behavior of calling a type-specific function with a device of +the wrong type is undefined.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    ++++ - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    device :

    a cairo_device_t +

    CAIRO_DEVICE_TYPE_DRM

    +

    The device is of type Direct Render Manager, since 1.10

     

    Returns :

    -CAIRO_STATUS_SUCCESS on success or an error code if -the device is in an error state and could not be -acquired. After a successful call to cairo_device_acquire(), -a matching call to cairo_device_release() is required.

    CAIRO_DEVICE_TYPE_GL

    +

    The device is of type OpenGL, since 1.10

    +
     

    CAIRO_DEVICE_TYPE_SCRIPT

    +

    The device is of type script, since 1.10

    +
     

    CAIRO_DEVICE_TYPE_XCB

    +

    The device is of type xcb, since 1.10

    +
     

    CAIRO_DEVICE_TYPE_XLIB

    +

    The device is of type xlib, since 1.10

    +
     

    CAIRO_DEVICE_TYPE_XML

    +

    The device is of type XML, since 1.10

    +
     

    CAIRO_DEVICE_TYPE_COGL

    +

    The device is of type cogl, since 1.12

    +
     

    CAIRO_DEVICE_TYPE_WIN32

    +

    The device is of type win32, since 1.12

    +
     

    CAIRO_DEVICE_TYPE_INVALID

    +

    The device is invalid, since 1.10

    +
     
    -

    Since 1.10

    -
    -
    -

    cairo_device_release ()

    -
    void                cairo_device_release                (cairo_device_t *device);
    -

    -Releases a device previously acquired using cairo_device_acquire(). See -that function for details. -

    -
    ---- - - - - -

    device :

    a cairo_device_t -

    Since 1.10

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-font-face-t.html cairo-1.14.2/doc/public/html/cairo-cairo-font-face-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-font-face-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-font-face-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_font_face_t +Cairo: A Vector Graphics Library: cairo_font_face_t - + - - - - - - - - - - + + + + + + +
    @@ -33,372 +30,460 @@

    cairo_font_face_t

    cairo_font_face_t — Base class for font faces

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_font_face_t;
    -cairo_font_face_t * cairo_font_face_reference           (cairo_font_face_t *font_face);
    -void                cairo_font_face_destroy             (cairo_font_face_t *font_face);
    -cairo_status_t      cairo_font_face_status              (cairo_font_face_t *font_face);
    -enum                cairo_font_type_t;
    -cairo_font_type_t   cairo_font_face_get_type            (cairo_font_face_t *font_face);
    -unsigned int        cairo_font_face_get_reference_count (cairo_font_face_t *font_face);
    -cairo_status_t      cairo_font_face_set_user_data       (cairo_font_face_t *font_face,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_font_face_get_user_data       (cairo_font_face_t *font_face,
    -                                                         const cairo_user_data_key_t *key);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_font_face_t * + +cairo_font_face_reference () +
    +void + +cairo_font_face_destroy () +
    +cairo_status_t + +cairo_font_face_status () +
    +cairo_font_type_t + +cairo_font_face_get_type () +
    unsigned int + +cairo_font_face_get_reference_count () +
    +cairo_status_t + +cairo_font_face_set_user_data () +
    +void * + +cairo_font_face_get_user_data () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    typedefcairo_font_face_t
    enumcairo_font_type_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -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 +

    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_select_font_face(). The resulting face can be accessed using -cairo_get_font_face(). -

    +cairo_select_font_face(). The resulting face can be accessed using +cairo_get_font_face().

    -

    Details

    -
    -

    cairo_font_face_t

    -
    typedef struct _cairo_font_face cairo_font_face_t;
    -
    -

    -A cairo_font_face_t specifies all aspects of a font other -than the size or font matrix (a font matrix is used to distort -a font by sheering it or scaling it unequally in the two -directions) . A font face can be set on a cairo_t by using -cairo_set_font_face(); the size and font matrix are set with -cairo_set_font_size() and cairo_set_font_matrix(). -

    -

    -There are various types of font faces, depending on the -font backend they use. The type of a -font face can be queried using cairo_font_face_get_type(). -

    -

    -Memory management of cairo_font_face_t is done with -cairo_font_face_reference() and cairo_font_face_destroy(). -

    -

    Since 1.0

    -
    -
    +

    Functions

    -

    cairo_font_face_reference ()

    -
    cairo_font_face_t * cairo_font_face_reference           (cairo_font_face_t *font_face);
    -

    -Increases the reference count on font_face by one. This prevents -font_face from being destroyed until a matching call to -cairo_font_face_destroy() is made. -

    -

    -The number of references to a cairo_font_face_t can be get using -cairo_font_face_get_reference_count(). -

    -
    +

    cairo_font_face_reference ()

    +
    cairo_font_face_t *
    +cairo_font_face_reference (cairo_font_face_t *font_face);
    +

    Increases the reference count on font_face + by one. This prevents +font_face + from being destroyed until a matching call to +cairo_font_face_destroy() is made.

    +

    The number of references to a cairo_font_face_t can be get using +cairo_font_face_get_reference_count().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    a cairo_font_face_t, (may be NULL in which case this -function does nothing).

    Returns :

    the referenced cairo_font_face_t.

    font_face

    a cairo_font_face_t, (may be NULL in which case this +function does nothing).

     
    +
    +
    +

    Returns

    +

    the referenced cairo_font_face_t.

    +

    +

    Since 1.0


    -

    cairo_font_face_destroy ()

    -
    void                cairo_font_face_destroy             (cairo_font_face_t *font_face);
    -

    -Decreases the reference count on font_face by one. If the result -is zero, then font_face and all associated resources are freed. -See cairo_font_face_reference(). -

    -
    +

    cairo_font_face_destroy ()

    +
    void
    +cairo_font_face_destroy (cairo_font_face_t *font_face);
    +

    Decreases the reference count on font_face + by one. If the result +is zero, then font_face + and all associated resources are freed. +See cairo_font_face_reference().

    +
    +

    Parameters

    +
    --+++ - - + + +

    font_face :

    a cairo_font_face_t -

    font_face

    a cairo_font_face_t

     
    +

    Since 1.0


    -

    cairo_font_face_status ()

    -
    cairo_status_t      cairo_font_face_status              (cairo_font_face_t *font_face);
    -

    -Checks whether an error has previously occurred for this -font face -

    -
    +

    cairo_font_face_status ()

    +
    cairo_status_t
    +cairo_font_face_status (cairo_font_face_t *font_face);
    +

    Checks whether an error has previously occurred for this +font face

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    a cairo_font_face_t -

    Returns :

    -CAIRO_STATUS_SUCCESS or another error such as -CAIRO_STATUS_NO_MEMORY.

    font_face

    a cairo_font_face_t

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or another error such as +CAIRO_STATUS_NO_MEMORY.

    +

    +

    Since 1.0


    -

    enum cairo_font_type_t

    -
    typedef enum {
    -    CAIRO_FONT_TYPE_TOY,
    -    CAIRO_FONT_TYPE_FT,
    -    CAIRO_FONT_TYPE_WIN32,
    -    CAIRO_FONT_TYPE_QUARTZ,
    -    CAIRO_FONT_TYPE_USER
    -} cairo_font_type_t;
    -
    -

    -cairo_font_type_t is used to describe the type of a given font -face or scaled font. The font types are also known as "font -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() -

    -

    -The various cairo_font_face_t functions can be used with a font face -of any type. -

    -

    -The type of a scaled font is determined by the type of the font -face passed to cairo_scaled_font_create(). The scaled font type can -be queried with cairo_scaled_font_get_type() -

    -

    -The various cairo_scaled_font_t functions can be used with scaled -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(). -

    -

    -The behavior of calling a type-specific function with a scaled font -of the wrong type is undefined. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_font_face_get_type ()

    +
    cairo_font_type_t
    +cairo_font_face_get_type (cairo_font_face_t *font_face);
    +

    This function returns the type of the backend used to create +a font face. See cairo_font_type_t for available types.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - - - - - + + + + +

    CAIRO_FONT_TYPE_TOY

    The font was created using cairo's toy font api (Since: 1.2) -

    CAIRO_FONT_TYPE_FT

    The font is of type FreeType (Since: 1.2) -

    CAIRO_FONT_TYPE_WIN32

    The font is of type Win32 (Since: 1.2) -

    CAIRO_FONT_TYPE_QUARTZ

    The font is of type Quartz (Since: 1.6, in 1.2 and -1.4 it was named CAIRO_FONT_TYPE_ATSUI) -

    CAIRO_FONT_TYPE_USER

    The font was create using cairo's user font api (Since: 1.8) -

    font_face

    a font face

     
    +
    +
    +

    Returns

    +

    The type of font_face +.

    +

    +

    Since 1.2


    -

    cairo_font_face_get_type ()

    -
    cairo_font_type_t   cairo_font_face_get_type            (cairo_font_face_t *font_face);
    -

    -This function returns the type of the backend used to create -a font face. See cairo_font_type_t for available types. -

    -
    +

    cairo_font_face_get_reference_count ()

    +
    unsigned int
    +cairo_font_face_get_reference_count (cairo_font_face_t *font_face);
    +

    Returns the current reference count of font_face +.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    a font face

    Returns :

    The type of font_face.

    font_face

    a cairo_font_face_t

     
    -

    Since 1.2

    +
    +
    +

    Returns

    +

    the current reference count of font_face +. If the +object is a nil object, 0 will be returned.

    +

    +
    +

    Since 1.4


    -

    cairo_font_face_get_reference_count ()

    -
    unsigned int        cairo_font_face_get_reference_count (cairo_font_face_t *font_face);
    -

    -Returns the current reference count of font_face. -

    -
    +

    cairo_font_face_set_user_data ()

    +
    cairo_status_t
    +cairo_font_face_set_user_data (cairo_font_face_t *font_face,
    +                               const cairo_user_data_key_t *key,
    +                               void *user_data,
    +                               cairo_destroy_func_t destroy);
    +

    Attach user data to font_face +. To remove user data from a font face, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + + + + + + + + + + +

    font_face :

    a cairo_font_face_t -

    font_face

    a cairo_font_face_t

     

    Returns :

    the current reference count of font_face. If the -object is a nil object, 0 will be returned.

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    user_data

    the user data to attach to the font face

     

    destroy

    a cairo_destroy_func_t which will be called when the +font face is destroyed or when new user data is attached using the +same key.

     
    -

    Since 1.4

    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +
    +

    Since 1.0


    -

    cairo_font_face_set_user_data ()

    -
    cairo_status_t      cairo_font_face_set_user_data       (cairo_font_face_t *font_face,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to font_face. To remove user data from a font face, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    cairo_font_face_get_user_data ()

    +
    void *
    +cairo_font_face_get_user_data (cairo_font_face_t *font_face,
    +                               const cairo_user_data_key_t *key);
    +

    Return user data previously attached to font_face + using the specified +key. If no user data has been attached with the given key this +function returns NULL.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - - - - - - - - - + + +

    font_face :

    a cairo_font_face_t -

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    font_face

    a cairo_font_face_t

     

    user_data :

    the user data to attach to the font face

    destroy :

    a cairo_destroy_func_t which will be called when the -font face is destroyed or when new user data is attached using the -same key.

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    Types and Values

    +
    +

    cairo_font_face_t

    +
    typedef struct _cairo_font_face cairo_font_face_t;
    +
    +

    A cairo_font_face_t specifies all aspects of a font other +than the size or font matrix (a font matrix is used to distort +a font by sheering it or scaling it unequally in the two +directions) . A font face can be set on a cairo_t by using +cairo_set_font_face(); the size and font matrix are set with +cairo_set_font_size() and cairo_set_font_matrix().

    +

    There are various types of font faces, depending on the +font backend they use. The type of a +font face can be queried using cairo_font_face_get_type().

    +

    Memory management of cairo_font_face_t is done with +cairo_font_face_reference() and cairo_font_face_destroy().

    Since 1.0


    -

    cairo_font_face_get_user_data ()

    -
    void *              cairo_font_face_get_user_data       (cairo_font_face_t *font_face,
    -                                                         const cairo_user_data_key_t *key);
    -

    -Return user data previously attached to font_face using the specified -key. If no user data has been attached with the given key this -function returns NULL. -

    -
    +

    enum cairo_font_type_t

    +

    cairo_font_type_t is used to describe the type of a given font +face or scaled font. The font types are also known as "font +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()

    +

    The various cairo_font_face_t functions can be used with a font face +of any type.

    +

    The type of a scaled font is determined by the type of the font +face passed to cairo_scaled_font_create(). The scaled font type can +be queried with cairo_scaled_font_get_type()

    +

    The various cairo_scaled_font_t functions can be used with scaled +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().

    +

    The behavior of calling a type-specific function with a scaled font +of the wrong type is undefined.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    --+++ - - + + - - + + + + + + + + - - + + + + + + + +

    font_face :

    a cairo_font_face_t +

    CAIRO_FONT_TYPE_TOY

    +

    The font was created using cairo's toy font api (Since: 1.2)

     

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    CAIRO_FONT_TYPE_FT

    +

    The font is of type FreeType (Since: 1.2)

    +
     

    CAIRO_FONT_TYPE_WIN32

    +

    The font is of type Win32 (Since: 1.2)

    +
     

    Returns :

    the user data previously attached or NULL.

    CAIRO_FONT_TYPE_QUARTZ

    +

    The font is of type Quartz (Since: 1.6, in 1.2 and +1.4 it was named CAIRO_FONT_TYPE_ATSUI)

    +
     

    CAIRO_FONT_TYPE_USER

    +

    The font was create using cairo's user font api (Since: 1.8)

    +
     
    -

    Since 1.0

    +
    +

    Since 1.2

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-font-options-t.html cairo-1.14.2/doc/public/html/cairo-cairo-font-options-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-font-options-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-font-options-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_font_options_t +Cairo: A Vector Graphics Library: cairo_font_options_t - + - - - - - - - - - - + + + + + + +
    @@ -33,675 +30,840 @@

    cairo_font_options_t

    cairo_font_options_t — How a font should be rendered

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_font_options_t;
    -cairo_font_options_t * cairo_font_options_create        (void);
    -cairo_font_options_t * cairo_font_options_copy          (const cairo_font_options_t *original);
    -void                cairo_font_options_destroy          (cairo_font_options_t *options);
    -cairo_status_t      cairo_font_options_status           (cairo_font_options_t *options);
    -void                cairo_font_options_merge            (cairo_font_options_t *options,
    -                                                         const cairo_font_options_t *other);
    -unsigned long       cairo_font_options_hash             (const cairo_font_options_t *options);
    -cairo_bool_t        cairo_font_options_equal            (const cairo_font_options_t *options,
    -                                                         const cairo_font_options_t *other);
    -void                cairo_font_options_set_antialias    (cairo_font_options_t *options,
    -                                                         cairo_antialias_t antialias);
    -cairo_antialias_t   cairo_font_options_get_antialias    (const cairo_font_options_t *options);
    -enum                cairo_subpixel_order_t;
    -void                cairo_font_options_set_subpixel_order
    -                                                        (cairo_font_options_t *options,
    -                                                         cairo_subpixel_order_t subpixel_order);
    -cairo_subpixel_order_t cairo_font_options_get_subpixel_order
    -                                                        (const cairo_font_options_t *options);
    -enum                cairo_hint_style_t;
    -void                cairo_font_options_set_hint_style   (cairo_font_options_t *options,
    -                                                         cairo_hint_style_t hint_style);
    -cairo_hint_style_t  cairo_font_options_get_hint_style   (const cairo_font_options_t *options);
    -enum                cairo_hint_metrics_t;
    -void                cairo_font_options_set_hint_metrics (cairo_font_options_t *options,
    -                                                         cairo_hint_metrics_t hint_metrics);
    -cairo_hint_metrics_t cairo_font_options_get_hint_metrics
    -                                                        (const cairo_font_options_t *options);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + + + + + +
    typedefcairo_font_options_t
    enumcairo_subpixel_order_t
    enumcairo_hint_style_t
    enumcairo_hint_metrics_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The font options specify how fonts should be rendered. Most of the +

    The font options specify how fonts should be rendered. Most of the time the font options implied by a surface are just right and do not need any changes, but for pixel-based targets tweaking font options -may result in superior output on a particular display. -

    +may result in superior output on a particular display.

    -

    Details

    +

    Functions

    -

    cairo_font_options_t

    -
    typedef struct _cairo_font_options cairo_font_options_t;
    -
    -

    -An opaque structure holding all options that are used when -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_antialias() and -cairo_font_options_get_antialias(). -

    -

    -New features may be added to a cairo_font_options_t in the -future. For this reason, cairo_font_options_copy(), -cairo_font_options_equal(), cairo_font_options_merge(), and -cairo_font_options_hash() should be used to copy, check -for equality, merge, or compute a hash value of -cairo_font_options_t objects. -

    +

    cairo_font_options_create ()

    +
    cairo_font_options_t *
    +cairo_font_options_create (void);
    +

    Allocates a new font options object with all options initialized + to default values.

    +
    +

    Returns

    +

    a newly allocated cairo_font_options_t. Free with +cairo_font_options_destroy(). This function always returns a +valid pointer; if memory cannot be allocated, then a special +error object is returned where all operations on the object do nothing. +You can check for this with cairo_font_options_status().

    +

    +

    Since 1.0


    -

    cairo_font_options_create ()

    -
    cairo_font_options_t * cairo_font_options_create        (void);
    -

    -Allocates a new font options object with all options initialized - to default values. -

    -
    +

    cairo_font_options_copy ()

    +
    cairo_font_options_t *
    +cairo_font_options_copy (const cairo_font_options_t *original);
    +

    Allocates a new font options object copying the option values from + original +.

    +
    +

    Parameters

    +
    --+++ - - + + + +

    Returns :

    a newly allocated cairo_font_options_t. Free with -cairo_font_options_destroy(). This function always returns a +

    original

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    a newly allocated cairo_font_options_t. Free with +cairo_font_options_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_font_options_status(). +You can check for this with cairo_font_options_status().

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_font_options_destroy ()

    +
    void
    +cairo_font_options_destroy (cairo_font_options_t *options);
    +

    Destroys a cairo_font_options_t object created with +cairo_font_options_create() or cairo_font_options_copy().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    options

    a cairo_font_options_t

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_font_options_status ()

    +
    cairo_status_t
    +cairo_font_options_status (cairo_font_options_t *options);
    +

    Checks whether an error has previously occurred for this +font options object

    +
    +

    Parameters

    +
    +++++ + + + +

    options

    a cairo_font_options_t

     
    +
    +

    Since 1.0


    -

    cairo_font_options_copy ()

    -
    cairo_font_options_t * cairo_font_options_copy          (const cairo_font_options_t *original);
    -

    -Allocates a new font options object copying the option values from - original. -

    -
    +

    cairo_font_options_merge ()

    +
    void
    +cairo_font_options_merge (cairo_font_options_t *options,
    +                          const cairo_font_options_t *other);
    +

    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_OPERATOR_OVER.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    original :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     

    Returns :

    a newly allocated cairo_font_options_t. Free with -cairo_font_options_destroy(). This function always returns a -valid pointer; if memory cannot be allocated, then a special -error object is returned where all operations on the object do nothing. -You can check for this with cairo_font_options_status().

    other

    another cairo_font_options_t

     
    +

    Since 1.0


    -

    cairo_font_options_destroy ()

    -
    void                cairo_font_options_destroy          (cairo_font_options_t *options);
    -

    -Destroys a cairo_font_options_t object created with -cairo_font_options_create() or cairo_font_options_copy(). -

    -
    ---+

    cairo_font_options_hash ()

    +
    unsigned long
    +cairo_font_options_hash (const cairo_font_options_t *options);
    +

    Compute a hash for the font options object; this value will +be useful when storing an object containing a cairo_font_options_t +in a hash table.

    +
    +

    Parameters

    +
    ++++ - - + + +

    options :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    the hash value for the font options object. +The return value can be cast to a 32-bit type if a +32-bit hash value is needed.

    +

    +

    Since 1.0


    -

    cairo_font_options_status ()

    -
    cairo_status_t      cairo_font_options_status           (cairo_font_options_t *options);
    -

    -Checks whether an error has previously occurred for this -font options object -

    -
    +

    cairo_font_options_equal ()

    +
    cairo_bool_t
    +cairo_font_options_equal (const cairo_font_options_t *options,
    +                          const cairo_font_options_t *other);
    +

    Compares two font options objects for equality.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    options :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    other

    another cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    TRUE if all fields of the two font options objects match. +Note that this function will return FALSE if either object is in +error.

    +

    +

    Since 1.0


    -

    cairo_font_options_merge ()

    -
    void                cairo_font_options_merge            (cairo_font_options_t *options,
    -                                                         const cairo_font_options_t *other);
    -

    -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_OPERATOR_OVER. -

    -
    +

    cairo_font_options_set_antialias ()

    +
    void
    +cairo_font_options_set_antialias (cairo_font_options_t *options,
    +                                  cairo_antialias_t antialias);
    +

    Sets the antialiasing mode for the font options object. This +specifies the type of antialiasing to do when rendering text.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    options :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     

    other :

    another cairo_font_options_t -

    antialias

    the new antialiasing mode

     
    +

    Since 1.0


    -

    cairo_font_options_hash ()

    -
    unsigned long       cairo_font_options_hash             (const cairo_font_options_t *options);
    -

    -Compute a hash for the font options object; this value will -be useful when storing an object containing a cairo_font_options_t -in a hash table. -

    -
    +

    cairo_font_options_get_antialias ()

    +
    cairo_antialias_t
    +cairo_font_options_get_antialias (const cairo_font_options_t *options);
    +

    Gets the antialiasing mode for the font options object.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    options :

    a cairo_font_options_t -

    Returns :

    the hash value for the font options object. -The return value can be cast to a 32-bit type if a -32-bit hash value is needed.

    options

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    the antialiasing mode

    +

    +

    Since 1.0


    -

    cairo_font_options_equal ()

    -
    cairo_bool_t        cairo_font_options_equal            (const cairo_font_options_t *options,
    -                                                         const cairo_font_options_t *other);
    -

    -Compares two font options objects for equality. -

    -
    +

    cairo_font_options_set_subpixel_order ()

    +
    void
    +cairo_font_options_set_subpixel_order (cairo_font_options_t *options,
    +                                       cairo_subpixel_order_t subpixel_order);
    +

    Sets the subpixel order for the font options object. The subpixel +order specifies the order of color elements within each pixel on +the display device when rendering with an antialiasing mode of +CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for +cairo_subpixel_order_t for full details.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    options :

    a cairo_font_options_t -

    other :

    another cairo_font_options_t -

    options

    a cairo_font_options_t

     

    Returns :

    -TRUE if all fields of the two font options objects match. -Note that this function will return FALSE if either object is in -error.

    subpixel_order

    the new subpixel order

     
    +

    Since 1.0


    -

    cairo_font_options_set_antialias ()

    -
    void                cairo_font_options_set_antialias    (cairo_font_options_t *options,
    -                                                         cairo_antialias_t antialias);
    -

    -Sets the antialiasing mode for the font options object. This -specifies the type of antialiasing to do when rendering text. -

    -
    +

    cairo_font_options_get_subpixel_order ()

    +
    cairo_subpixel_order_t
    +cairo_font_options_get_subpixel_order (const cairo_font_options_t *options);
    +

    Gets the subpixel order for the font options object. +See the documentation for cairo_subpixel_order_t for full details.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    options :

    a cairo_font_options_t -

    antialias :

    the new antialiasing mode

    options

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    the subpixel order for the font options object

    +

    +

    Since 1.0


    -

    cairo_font_options_get_antialias ()

    -
    cairo_antialias_t   cairo_font_options_get_antialias    (const cairo_font_options_t *options);
    -

    -Gets the antialiasing mode for the font options object. -

    -
    +

    cairo_font_options_set_hint_style ()

    +
    void
    +cairo_font_options_set_hint_style (cairo_font_options_t *options,
    +                                   cairo_hint_style_t hint_style);
    +

    Sets the hint style for font outlines for the font options object. +This controls whether to fit font outlines to the pixel grid, +and if so, whether to optimize for fidelity or contrast. +See the documentation for cairo_hint_style_t for full details.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    options :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     

    Returns :

    the antialiasing mode

    hint_style

    the new hint style

     
    +

    Since 1.0


    -

    enum cairo_subpixel_order_t

    -
    typedef enum {
    -    CAIRO_SUBPIXEL_ORDER_DEFAULT,
    -    CAIRO_SUBPIXEL_ORDER_RGB,
    -    CAIRO_SUBPIXEL_ORDER_BGR,
    -    CAIRO_SUBPIXEL_ORDER_VRGB,
    -    CAIRO_SUBPIXEL_ORDER_VBGR
    -} cairo_subpixel_order_t;
    -
    -

    -The subpixel order specifies the order of color elements within -each pixel on the display device when rendering with an -antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL. -

    -
    +

    cairo_font_options_get_hint_style ()

    +
    cairo_hint_style_t
    +cairo_font_options_get_hint_style (const cairo_font_options_t *options);
    +

    Gets the hint style for font outlines for the font options object. +See the documentation for cairo_hint_style_t for full details.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - - - - - + + + + +

    CAIRO_SUBPIXEL_ORDER_DEFAULT

    Use the default subpixel order for - for the target device, since 1.0 -

    CAIRO_SUBPIXEL_ORDER_RGB

    Subpixel elements are arranged horizontally - with red at the left, since 1.0 -

    CAIRO_SUBPIXEL_ORDER_BGR

    Subpixel elements are arranged horizontally - with blue at the left, since 1.0 -

    CAIRO_SUBPIXEL_ORDER_VRGB

    Subpixel elements are arranged vertically - with red at the top, since 1.0 -

    CAIRO_SUBPIXEL_ORDER_VBGR

    Subpixel elements are arranged vertically - with blue at the top, since 1.0 -

    options

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    the hint style for the font options object

    +

    +

    Since 1.0


    -

    cairo_font_options_set_subpixel_order ()

    -
    void                cairo_font_options_set_subpixel_order
    -                                                        (cairo_font_options_t *options,
    -                                                         cairo_subpixel_order_t subpixel_order);
    -

    -Sets the subpixel order for the font options object. The subpixel -order specifies the order of color elements within each pixel on -the display device when rendering with an antialiasing mode of -CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for -cairo_subpixel_order_t for full details. -

    -
    +

    cairo_font_options_set_hint_metrics ()

    +
    void
    +cairo_font_options_set_hint_metrics (cairo_font_options_t *options,
    +                                     cairo_hint_metrics_t hint_metrics);
    +

    Sets the metrics hinting mode for the font options object. This +controls whether metrics are quantized to integer values in +device units. +See the documentation for cairo_hint_metrics_t for full details.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    options :

    a cairo_font_options_t -

    options

    a cairo_font_options_t

     

    subpixel_order :

    the new subpixel order

    hint_metrics

    the new metrics hinting mode

     
    +

    Since 1.0


    -

    cairo_font_options_get_subpixel_order ()

    -
    cairo_subpixel_order_t cairo_font_options_get_subpixel_order
    -                                                        (const cairo_font_options_t *options);
    -

    -Gets the subpixel order for the font options object. -See the documentation for cairo_subpixel_order_t for full details. -

    -
    +

    cairo_font_options_get_hint_metrics ()

    +
    cairo_hint_metrics_t
    +cairo_font_options_get_hint_metrics (const cairo_font_options_t *options);
    +

    Gets the metrics hinting mode for the font options object. +See the documentation for cairo_hint_metrics_t for full details.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    options :

    a cairo_font_options_t -

    Returns :

    the subpixel order for the font options object

    options

    a cairo_font_options_t

     
    +
    +
    +

    Returns

    +

    the metrics hinting mode for the font options object

    +

    +

    Since 1.0

    -
    + +
    +

    Types and Values

    -

    enum cairo_hint_style_t

    -
    typedef enum {
    -    CAIRO_HINT_STYLE_DEFAULT,
    -    CAIRO_HINT_STYLE_NONE,
    -    CAIRO_HINT_STYLE_SLIGHT,
    -    CAIRO_HINT_STYLE_MEDIUM,
    -    CAIRO_HINT_STYLE_FULL
    -} cairo_hint_style_t;
    +

    cairo_font_options_t

    +
    typedef struct _cairo_font_options cairo_font_options_t;
     
    -

    -Specifies the type of hinting to do on font outlines. Hinting -is the process of fitting outlines to the pixel grid in order -to improve the appearance of the result. Since hinting outlines -involves distorting them, it also reduces the faithfulness -to the original outline shapes. Not all of the outline hinting -styles are supported by all font backends. -

    -

    -New entries may be added in future versions. -

    -
    +

    An opaque structure holding all options that are used when +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_antialias() and +cairo_font_options_get_antialias().

    +

    New features may be added to a cairo_font_options_t in the +future. For this reason, cairo_font_options_copy(), +cairo_font_options_equal(), cairo_font_options_merge(), and +cairo_font_options_hash() should be used to copy, check +for equality, merge, or compute a hash value of +cairo_font_options_t objects.

    +

    Since 1.0

    + +
    +
    +

    enum cairo_subpixel_order_t

    +

    The subpixel order specifies the order of color elements within +each pixel on the display device when rendering with an +antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL.

    +
    +

    Members

    +
    --+++ - - + + - - + + - - + + - - + + - - + +

    CAIRO_HINT_STYLE_DEFAULT

    Use the default hint style for - font backend and target device, since 1.0 +

    CAIRO_SUBPIXEL_ORDER_DEFAULT

    +

    Use the default subpixel order for + for the target device, since 1.0

     

    CAIRO_HINT_STYLE_NONE

    Do not hint outlines, since 1.0 +

    CAIRO_SUBPIXEL_ORDER_RGB

    +

    Subpixel elements are arranged horizontally + with red at the left, since 1.0

     

    CAIRO_HINT_STYLE_SLIGHT

    Hint outlines slightly to improve - contrast while retaining good fidelity to the original - shapes, since 1.0 +

    CAIRO_SUBPIXEL_ORDER_BGR

    +

    Subpixel elements are arranged horizontally + with blue at the left, since 1.0

     

    CAIRO_HINT_STYLE_MEDIUM

    Hint outlines with medium strength - giving a compromise between fidelity to the original shapes - and contrast, since 1.0 +

    CAIRO_SUBPIXEL_ORDER_VRGB

    +

    Subpixel elements are arranged vertically + with red at the top, since 1.0

     

    CAIRO_HINT_STYLE_FULL

    Hint outlines to maximize contrast, since 1.0 +

    CAIRO_SUBPIXEL_ORDER_VBGR

    +

    Subpixel elements are arranged vertically + with blue at the top, since 1.0

     
    +

    Since 1.0


    -

    cairo_font_options_set_hint_style ()

    -
    void                cairo_font_options_set_hint_style   (cairo_font_options_t *options,
    -                                                         cairo_hint_style_t hint_style);
    -

    -Sets the hint style for font outlines for the font options object. -This controls whether to fit font outlines to the pixel grid, -and if so, whether to optimize for fidelity or contrast. -See the documentation for cairo_hint_style_t for full details. -

    -
    +

    enum cairo_hint_style_t

    +

    Specifies the type of hinting to do on font outlines. Hinting +is the process of fitting outlines to the pixel grid in order +to improve the appearance of the result. Since hinting outlines +involves distorting them, it also reduces the faithfulness +to the original outline shapes. Not all of the outline hinting +styles are supported by all font backends.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    --+++ - - + + - - + + + + + + + + - -

    options :

    a cairo_font_options_t +

    CAIRO_HINT_STYLE_DEFAULT

    +

    Use the default hint style for + font backend and target device, since 1.0

     

    hint_style :

    the new hint style

    CAIRO_HINT_STYLE_NONE

    +

    Do not hint outlines, since 1.0

    +
     

    CAIRO_HINT_STYLE_SLIGHT

    +

    Hint outlines slightly to improve + contrast while retaining good fidelity to the original + shapes, since 1.0

    +
     
    -

    Since 1.0

    -
    -
    -
    -

    cairo_font_options_get_hint_style ()

    -
    cairo_hint_style_t  cairo_font_options_get_hint_style   (const cairo_font_options_t *options);
    -

    -Gets the hint style for font outlines for the font options object. -See the documentation for cairo_hint_style_t for full details. -

    -
    ---- - - - + + - - + + +

    options :

    a cairo_font_options_t +

    CAIRO_HINT_STYLE_MEDIUM

    +

    Hint outlines with medium strength + giving a compromise between fidelity to the original shapes + and contrast, since 1.0

     

    Returns :

    the hint style for the font options object

    CAIRO_HINT_STYLE_FULL

    +

    Hint outlines to maximize contrast, since 1.0

    +
     
    +

    Since 1.0


    enum cairo_hint_metrics_t

    -
    typedef enum {
    -    CAIRO_HINT_METRICS_DEFAULT,
    -    CAIRO_HINT_METRICS_OFF,
    -    CAIRO_HINT_METRICS_ON
    -} cairo_hint_metrics_t;
    -
    -

    -Specifies whether to hint font metrics; hinting font metrics +

    Specifies whether to hint font metrics; hinting font metrics means quantizing them so that they are integer values in device space. Doing this improves the consistency of letter and line spacing, however it also means that text -will be laid out differently at different zoom factors. -

    -
    +will be laid out differently at different zoom factors.

    +
    +

    Members

    +
    --+++ - - - - - - + + - - + + - -

    CAIRO_HINT_METRICS_DEFAULT

    Hint metrics in the default - manner for the font backend and target device, since 1.0 -

    CAIRO_HINT_METRICS_OFF

    Do not hint font metrics, since 1.0 +

    CAIRO_HINT_METRICS_DEFAULT

    +

    Hint metrics in the default + manner for the font backend and target device, since 1.0

     

    CAIRO_HINT_METRICS_ON

    Hint font metrics, since 1.0 +

    CAIRO_HINT_METRICS_OFF

    +

    Do not hint font metrics, since 1.0

     
    -

    Since 1.0

    -
    -
    -
    -

    cairo_font_options_set_hint_metrics ()

    -
    void                cairo_font_options_set_hint_metrics (cairo_font_options_t *options,
    -                                                         cairo_hint_metrics_t hint_metrics);
    -

    -Sets the metrics hinting mode for the font options object. This -controls whether metrics are quantized to integer values in -device units. -See the documentation for cairo_hint_metrics_t for full details. -

    -
    ---- - - - + - - - - +

    options :

    a cairo_font_options_t +

    CAIRO_HINT_METRICS_ON

    +

    Hint font metrics, since 1.0

    hint_metrics :

    the new metrics hinting mode 
    -

    Since 1.0

    -
    -
    -

    cairo_font_options_get_hint_metrics ()

    -
    cairo_hint_metrics_t cairo_font_options_get_hint_metrics
    -                                                        (const cairo_font_options_t *options);
    -

    -Gets the metrics hinting mode for the font options object. -See the documentation for cairo_hint_metrics_t for full details. -

    -
    ---- - - - - - - - - - - -

    options :

    a cairo_font_options_t -

    Returns :

    the metrics hinting mode for the font options object

    Since 1.0

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-matrix-t.html cairo-1.14.2/doc/public/html/cairo-cairo-matrix-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-matrix-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-matrix-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_matrix_t +Cairo: A Vector Graphics Library: cairo_matrix_t - + - - - - - - - - - - + + + + + + +
    @@ -33,566 +30,758 @@

    cairo_matrix_t

    cairo_matrix_t — Generic matrix operations

    - +
    -
    -

    Synopsis

    -
                        cairo_matrix_t;
    -void                cairo_matrix_init                   (cairo_matrix_t *matrix,
    -                                                         double xx,
    -                                                         double yx,
    -                                                         double xy,
    -                                                         double yy,
    -                                                         double x0,
    -                                                         double y0);
    -void                cairo_matrix_init_identity          (cairo_matrix_t *matrix);
    -void                cairo_matrix_init_translate         (cairo_matrix_t *matrix,
    -                                                         double tx,
    -                                                         double ty);
    -void                cairo_matrix_init_scale             (cairo_matrix_t *matrix,
    -                                                         double sx,
    -                                                         double sy);
    -void                cairo_matrix_init_rotate            (cairo_matrix_t *matrix,
    -                                                         double radians);
    -void                cairo_matrix_translate              (cairo_matrix_t *matrix,
    -                                                         double tx,
    -                                                         double ty);
    -void                cairo_matrix_scale                  (cairo_matrix_t *matrix,
    -                                                         double sx,
    -                                                         double sy);
    -void                cairo_matrix_rotate                 (cairo_matrix_t *matrix,
    -                                                         double radians);
    -cairo_status_t      cairo_matrix_invert                 (cairo_matrix_t *matrix);
    -void                cairo_matrix_multiply               (cairo_matrix_t *result,
    -                                                         const cairo_matrix_t *a,
    -                                                         const cairo_matrix_t *b);
    -void                cairo_matrix_transform_distance     (const cairo_matrix_t *matrix,
    -                                                         double *dx,
    -                                                         double *dy);
    -void                cairo_matrix_transform_point        (const cairo_matrix_t *matrix,
    -                                                         double *x,
    -                                                         double *y);
    -
    -
    -
    -

    Description

    -

    -cairo_matrix_t is used throughout cairo to convert between different -coordinate spaces. A cairo_matrix_t holds an affine transformation, -such as a scale, rotation, shear, or a combination of these. -The transformation of a point (x,y) -is given by: -

    -

    -

    -
    -x_new = xx * x + xy * y + x0;
    -y_new = yx * x + yy * y + y0;
    -
    -

    -

    -

    -The current transformation matrix of a cairo_t, represented as a -cairo_matrix_t, defines the transformation from user-space -coordinates to device-space coordinates. See cairo_get_matrix() and -cairo_set_matrix(). -

    -
    -

    Details

    -
    -

    cairo_matrix_t

    -
    typedef struct {
    -    double xx; double yx;
    -    double xy; double yy;
    -    double x0; double y0;
    -} cairo_matrix_t;
    -
    -

    -A cairo_matrix_t holds an affine transformation, such as a scale, -rotation, shear, or a combination of those. The transformation of -a point (x, y) is given by: -

    -
    -    x_new = xx * x + xy * y + x0;
    -    y_new = yx * x + yy * y + y0;
    -
    -

    -

    -
    +

    Functions

    +
    --++ - - + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + + + + +

    double xx;

    xx component of the affine transformation +void + +cairo_matrix_init () +
    +void + +cairo_matrix_init_identity () +
    +void + +cairo_matrix_init_translate () +
    +void + +cairo_matrix_init_scale () +
    +void + +cairo_matrix_init_rotate () +
    +void + +cairo_matrix_translate () +

    double yx;

    yx component of the affine transformation +void + +cairo_matrix_scale () +

    double xy;

    xy component of the affine transformation +void + +cairo_matrix_rotate () +

    double yy;

    yy component of the affine transformation +cairo_status_t + +cairo_matrix_invert () +

    double x0;

    X translation component of the affine transformation +void + +cairo_matrix_multiply () +

    double y0;

    Y translation component of the affine transformation +void + +cairo_matrix_transform_distance () +
    +void + +cairo_matrix_transform_point () +
    -

    Since 1.0

    -
    +
    +

    Types and Values

    +
    ++++ + + + + +
     cairo_matrix_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    cairo_matrix_t is used throughout cairo to convert between different +coordinate spaces. A cairo_matrix_t holds an affine transformation, +such as a scale, rotation, shear, or a combination of these. +The transformation of a point (x,y) +is given by:

    +
    +x_new = xx * x + xy * y + x0;
    +y_new = yx * x + yy * y + y0;
    +
    +

    The current transformation matrix of a cairo_t, represented as a +cairo_matrix_t, defines the transformation from user-space +coordinates to device-space coordinates. See cairo_get_matrix() and +cairo_set_matrix().

    +
    +
    +

    Functions

    -

    cairo_matrix_init ()

    -
    void                cairo_matrix_init                   (cairo_matrix_t *matrix,
    -                                                         double xx,
    -                                                         double yx,
    -                                                         double xy,
    -                                                         double yy,
    -                                                         double x0,
    -                                                         double y0);
    -

    -Sets matrix to be the affine transformation given by -xx, yx, xy, yy, x0, y0. The transformation is given -by: -

    +

    cairo_matrix_init ()

    +
    void
    +cairo_matrix_init (cairo_matrix_t *matrix,
    +                   double xx,
    +                   double yx,
    +                   double xy,
    +                   double yy,
    +                   double x0,
    +                   double y0);
    +

    Sets matrix + to be the affine transformation given by +xx +, yx +, xy +, yy +, x0 +, y0 +. The transformation is given +by:

      x_new = xx * x + xy * y + x0;
      y_new = yx * x + yy * y + y0;
     
    -

    -

    -
    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    xx :

    xx component of the affine transformation

    xx

    xx component of the affine transformation

     

    yx :

    yx component of the affine transformation

    yx

    yx component of the affine transformation

     

    xy :

    xy component of the affine transformation

    xy

    xy component of the affine transformation

     

    yy :

    yy component of the affine transformation

    yy

    yy component of the affine transformation

     

    x0 :

    X translation component of the affine transformation

    x0

    X translation component of the affine transformation

     

    y0 :

    Y translation component of the affine transformation

    y0

    Y translation component of the affine transformation

     
    +

    Since 1.0


    -

    cairo_matrix_init_identity ()

    -
    void                cairo_matrix_init_identity          (cairo_matrix_t *matrix);
    -

    -Modifies matrix to be an identity transformation. -

    -
    +

    cairo_matrix_init_identity ()

    +
    void
    +cairo_matrix_init_identity (cairo_matrix_t *matrix);
    +

    Modifies matrix + to be an identity transformation.

    +
    +

    Parameters

    +
    --+++ - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     
    +

    Since 1.0


    -

    cairo_matrix_init_translate ()

    -
    void                cairo_matrix_init_translate         (cairo_matrix_t *matrix,
    -                                                         double tx,
    -                                                         double ty);
    -

    -Initializes matrix to a transformation that translates by tx and -ty in the X and Y dimensions, respectively. -

    -
    +

    cairo_matrix_init_translate ()

    +
    void
    +cairo_matrix_init_translate (cairo_matrix_t *matrix,
    +                             double tx,
    +                             double ty);
    +

    Initializes matrix + to a transformation that translates by tx + and +ty + in the X and Y dimensions, respectively.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    tx :

    amount to translate in the X direction

    tx

    amount to translate in the X direction

     

    ty :

    amount to translate in the Y direction

    ty

    amount to translate in the Y direction

     
    +

    Since 1.0


    -

    cairo_matrix_init_scale ()

    -
    void                cairo_matrix_init_scale             (cairo_matrix_t *matrix,
    -                                                         double sx,
    -                                                         double sy);
    -

    -Initializes matrix to a transformation that scales by sx and sy -in the X and Y dimensions, respectively. -

    -
    +

    cairo_matrix_init_scale ()

    +
    void
    +cairo_matrix_init_scale (cairo_matrix_t *matrix,
    +                         double sx,
    +                         double sy);
    +

    Initializes matrix + to a transformation that scales by sx + and sy + +in the X and Y dimensions, respectively.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    sx :

    scale factor in the X direction

    sx

    scale factor in the X direction

     

    sy :

    scale factor in the Y direction

    sy

    scale factor in the Y direction

     
    +

    Since 1.0


    -

    cairo_matrix_init_rotate ()

    -
    void                cairo_matrix_init_rotate            (cairo_matrix_t *matrix,
    -                                                         double radians);
    -

    -Initialized matrix to a transformation that rotates by radians. -

    -
    +

    cairo_matrix_init_rotate ()

    +
    void
    +cairo_matrix_init_rotate (cairo_matrix_t *matrix,
    +                          double radians);
    +

    Initialized matrix + to a transformation that rotates by radians +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + +direction.

    +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    radians :

    angle of rotation, in radians. The direction of rotation +

    radians

    angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise -direction.

     
    +

    Since 1.0


    -

    cairo_matrix_translate ()

    -
    void                cairo_matrix_translate              (cairo_matrix_t *matrix,
    -                                                         double tx,
    -                                                         double ty);
    -

    -Applies a translation by tx, ty to the transformation in -matrix. The effect of the new transformation is to first translate -the coordinates by tx and ty, then apply the original transformation -to the coordinates. -

    -
    +

    cairo_matrix_translate ()

    +
    void
    +cairo_matrix_translate (cairo_matrix_t *matrix,
    +                        double tx,
    +                        double ty);
    +

    Applies a translation by tx +, ty + to the transformation in +matrix +. The effect of the new transformation is to first translate +the coordinates by tx + and ty +, then apply the original transformation +to the coordinates.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    tx :

    amount to translate in the X direction

    tx

    amount to translate in the X direction

     

    ty :

    amount to translate in the Y direction

    ty

    amount to translate in the Y direction

     
    +

    Since 1.0


    -

    cairo_matrix_scale ()

    -
    void                cairo_matrix_scale                  (cairo_matrix_t *matrix,
    -                                                         double sx,
    -                                                         double sy);
    -

    -Applies scaling by sx, sy to the transformation in matrix. The +

    cairo_matrix_scale ()

    +
    void
    +cairo_matrix_scale (cairo_matrix_t *matrix,
    +                    double sx,
    +                    double sy);
    +

    Applies scaling by sx +, sy + to the transformation in matrix +. The effect of the new transformation is to first scale the coordinates -by sx and sy, then apply the original transformation to the coordinates. -

    -
    +by sx + and sy +, then apply the original transformation to the coordinates.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    sx :

    scale factor in the X direction

    sx

    scale factor in the X direction

     

    sy :

    scale factor in the Y direction

    sy

    scale factor in the Y direction

     
    +

    Since 1.0


    -

    cairo_matrix_rotate ()

    -
    void                cairo_matrix_rotate                 (cairo_matrix_t *matrix,
    -                                                         double radians);
    -

    -Applies rotation by radians to the transformation in -matrix. The effect of the new transformation is to first rotate the -coordinates by radians, then apply the original transformation -to the coordinates. -

    -
    +

    cairo_matrix_rotate ()

    +
    void
    +cairo_matrix_rotate (cairo_matrix_t *matrix,
    +                     double radians);
    +

    Applies rotation by radians + to the transformation in +matrix +. The effect of the new transformation is to first rotate the +coordinates by radians +, then apply the original transformation +to the coordinates.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + +direction.

    +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    radians :

    angle of rotation, in radians. The direction of rotation +

    radians

    angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise -direction.

     
    +

    Since 1.0


    -

    cairo_matrix_invert ()

    -
    cairo_status_t      cairo_matrix_invert                 (cairo_matrix_t *matrix);
    -

    -Changes matrix to be the inverse of its original value. Not +

    cairo_matrix_invert ()

    +
    cairo_status_t
    +cairo_matrix_invert (cairo_matrix_t *matrix);
    +

    Changes matrix + to be the inverse of its original value. Not all transformation matrices have inverses; if the matrix collapses points together (it is degenerate), -then it has no inverse and this function will fail. -

    -
    +then it has no inverse and this function will fail.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    matrix

    a cairo_matrix_t

     
    +
    +
    +

    Returns

    +

    If matrix +has an inverse, modifies matrix +to +be the inverse matrix and returns CAIRO_STATUS_SUCCESS. Otherwise, +returns CAIRO_STATUS_INVALID_MATRIX.

    +

    +
    +

    Since 1.0

    + +
    +
    +

    cairo_matrix_multiply ()

    +
    void
    +cairo_matrix_multiply (cairo_matrix_t *result,
    +                       const cairo_matrix_t *a,
    +                       const cairo_matrix_t *b);
    +

    Multiplies the affine transformations in a + and b + together +and stores the result in result +. The effect of the resulting +transformation is to first apply the transformation in a + to the +coordinates and then apply the transformation in b + to the +coordinates.

    +

    It is allowable for result + to be identical to either a + or b +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + + + + + +

    matrix :

    a cairo_matrix_t -

    result

    a cairo_matrix_t in which to store the result

     

    Returns :

    If matrix has an inverse, modifies matrix to -be the inverse matrix and returns CAIRO_STATUS_SUCCESS. Otherwise, -returns CAIRO_STATUS_INVALID_MATRIX.

    a

    a cairo_matrix_t

     

    b

    a cairo_matrix_t

     
    +

    Since 1.0


    -

    cairo_matrix_multiply ()

    -
    void                cairo_matrix_multiply               (cairo_matrix_t *result,
    -                                                         const cairo_matrix_t *a,
    -                                                         const cairo_matrix_t *b);
    -

    -Multiplies the affine transformations in a and b together -and stores the result in result. The effect of the resulting -transformation is to first apply the transformation in a to the -coordinates and then apply the transformation in b to the -coordinates. -

    -

    -It is allowable for result to be identical to either a or b. -

    -
    +

    cairo_matrix_transform_distance ()

    +
    void
    +cairo_matrix_transform_distance (const cairo_matrix_t *matrix,
    +                                 double *dx,
    +                                 double *dy);
    +

    Transforms the distance vector (dx +,dy +) by matrix +. This is +similar to cairo_matrix_transform_point() except that the translation +components of the transformation are ignored. The calculation of +the returned vector is as follows:

    +
    +dx2 = dx1 * a + dy1 * c;
    +dy2 = dx1 * b + dy1 * d;
    +
    +

    Affine transformations are position invariant, so the same vector +always transforms to the same vector. If (x1 +,y1 +) transforms +to (x2 +,y2 +) then (x1 ++dx1 +,y1 ++dy1 +) will transform to +(x1 ++dx2 +,y1 ++dy2 +) for all values of x1 + and x2 +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    result :

    a cairo_matrix_t in which to store the result

    matrix

    a cairo_matrix_t

     

    a :

    a cairo_matrix_t -

    dx

    X component of a distance vector. An in/out parameter

     

    b :

    a cairo_matrix_t -

    dy

    Y component of a distance vector. An in/out parameter

     
    +

    Since 1.0


    -

    cairo_matrix_transform_distance ()

    -
    void                cairo_matrix_transform_distance     (const cairo_matrix_t *matrix,
    -                                                         double *dx,
    -                                                         double *dy);
    -

    -Transforms the distance vector (dx,dy) by matrix. This is -similar to cairo_matrix_transform_point() except that the translation -components of the transformation are ignored. The calculation of -the returned vector is as follows: -

    -

    -

    -
    -dx2 = dx1 * a + dy1 * c;
    -dy2 = dx1 * b + dy1 * d;
    -
    -

    -

    -

    -Affine transformations are position invariant, so the same vector -always transforms to the same vector. If (x1,y1) transforms -to (x2,y2) then (x1+dx1,y1+dy1) will transform to -(x1+dx2,y1+dy2) for all values of x1 and x2. -

    -
    +

    cairo_matrix_transform_point ()

    +
    void
    +cairo_matrix_transform_point (const cairo_matrix_t *matrix,
    +                              double *x,
    +                              double *y);
    +

    Transforms the point (x +, y +) by matrix +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     

    dx :

    X component of a distance vector. An in/out parameter

    x

    X position. An in/out parameter

     

    dy :

    Y component of a distance vector. An in/out parameter

    y

    Y position. An in/out parameter

     
    +

    Since 1.0

    -
    + +
    +

    Types and Values

    -

    cairo_matrix_transform_point ()

    -
    void                cairo_matrix_transform_point        (const cairo_matrix_t *matrix,
    -                                                         double *x,
    -                                                         double *y);
    -

    -Transforms the point (x, y) by matrix. -

    -
    +

    cairo_matrix_t

    +
    typedef struct {
    +    double xx; double yx;
    +    double xy; double yy;
    +    double x0; double y0;
    +} cairo_matrix_t;
    +
    +

    A cairo_matrix_t holds an affine transformation, such as a scale, +rotation, shear, or a combination of those. The transformation of +a point (x, y) is given by:

    +
    +    x_new = xx * x + xy * y + x0;
    +    y_new = yx * x + yy * y + y0;
    +
    +
    +

    Members

    +
    --+++ - - + + + - - + + + - - + + + + + + + + + + + + + + + + + +

    matrix :

    a cairo_matrix_t -

    double xx;

    xx component of the affine transformation

     

    x :

    X position. An in/out parameter

    double yx;

    yx component of the affine transformation

     

    y :

    Y position. An in/out parameter

    double xy;

    xy component of the affine transformation

     

    double yy;

    yy component of the affine transformation

     

    double x0;

    X translation component of the affine transformation

     

    double y0;

    Y translation component of the affine transformation

     
    +

    Since 1.0

    See Also

    -cairo_t +

    cairo_t

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-pattern-t.html cairo-1.14.2/doc/public/html/cairo-cairo-pattern-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-pattern-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-pattern-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_pattern_t +Cairo: A Vector Graphics Library: cairo_pattern_t - + - - - - - - - - - - + + + + + + +
    @@ -33,909 +30,1144 @@

    cairo_pattern_t

    cairo_pattern_t — Sources for drawing

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_pattern_t;
    -void                cairo_pattern_add_color_stop_rgb    (cairo_pattern_t *pattern,
    -                                                         double offset,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue);
    -void                cairo_pattern_add_color_stop_rgba   (cairo_pattern_t *pattern,
    -                                                         double offset,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -cairo_status_t      cairo_pattern_get_color_stop_count  (cairo_pattern_t *pattern,
    -                                                         int *count);
    -cairo_status_t      cairo_pattern_get_color_stop_rgba   (cairo_pattern_t *pattern,
    -                                                         int index,
    -                                                         double *offset,
    -                                                         double *red,
    -                                                         double *green,
    -                                                         double *blue,
    -                                                         double *alpha);
    -cairo_pattern_t *   cairo_pattern_create_rgb            (double red,
    -                                                         double green,
    -                                                         double blue);
    -cairo_pattern_t *   cairo_pattern_create_rgba           (double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -cairo_status_t      cairo_pattern_get_rgba              (cairo_pattern_t *pattern,
    -                                                         double *red,
    -                                                         double *green,
    -                                                         double *blue,
    -                                                         double *alpha);
    -cairo_pattern_t *   cairo_pattern_create_for_surface    (cairo_surface_t *surface);
    -cairo_status_t      cairo_pattern_get_surface           (cairo_pattern_t *pattern,
    -                                                         cairo_surface_t **surface);
    -cairo_pattern_t *   cairo_pattern_create_linear         (double x0,
    -                                                         double y0,
    -                                                         double x1,
    -                                                         double y1);
    -cairo_status_t      cairo_pattern_get_linear_points     (cairo_pattern_t *pattern,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *x1,
    -                                                         double *y1);
    -cairo_pattern_t *   cairo_pattern_create_radial         (double cx0,
    -                                                         double cy0,
    -                                                         double radius0,
    -                                                         double cx1,
    -                                                         double cy1,
    -                                                         double radius1);
    -cairo_status_t      cairo_pattern_get_radial_circles    (cairo_pattern_t *pattern,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *r0,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *r1);
    -cairo_pattern_t *   cairo_pattern_create_mesh           (void);
    -void                cairo_mesh_pattern_begin_patch      (cairo_pattern_t *pattern);
    -void                cairo_mesh_pattern_end_patch        (cairo_pattern_t *pattern);
    -void                cairo_mesh_pattern_move_to          (cairo_pattern_t *pattern,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_mesh_pattern_line_to          (cairo_pattern_t *pattern,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_mesh_pattern_curve_to         (cairo_pattern_t *pattern,
    -                                                         double x1,
    -                                                         double y1,
    -                                                         double x2,
    -                                                         double y2,
    -                                                         double x3,
    -                                                         double y3);
    -void                cairo_mesh_pattern_set_control_point
    -                                                        (cairo_pattern_t *pattern,
    -                                                         unsigned int point_num,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_mesh_pattern_set_corner_color_rgb
    -                                                        (cairo_pattern_t *pattern,
    -                                                         unsigned int corner_num,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue);
    -void                cairo_mesh_pattern_set_corner_color_rgba
    -                                                        (cairo_pattern_t *pattern,
    -                                                         unsigned int corner_num,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -cairo_status_t      cairo_mesh_pattern_get_patch_count  (cairo_pattern_t *pattern,
    -                                                         unsigned int *count);
    -cairo_path_t *      cairo_mesh_pattern_get_path         (cairo_pattern_t *pattern,
    -                                                         unsigned int patch_num);
    -cairo_status_t      cairo_mesh_pattern_get_control_point
    -                                                        (cairo_pattern_t *pattern,
    -                                                         unsigned int patch_num,
    -                                                         unsigned int point_num,
    -                                                         double *x,
    -                                                         double *y);
    -cairo_status_t      cairo_mesh_pattern_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);
    -enum                cairo_extend_t;
    -void                cairo_pattern_set_extend            (cairo_pattern_t *pattern,
    -                                                         cairo_extend_t extend);
    -cairo_extend_t      cairo_pattern_get_extend            (cairo_pattern_t *pattern);
    -enum                cairo_filter_t;
    -void                cairo_pattern_set_filter            (cairo_pattern_t *pattern,
    -                                                         cairo_filter_t filter);
    -cairo_filter_t      cairo_pattern_get_filter            (cairo_pattern_t *pattern);
    -void                cairo_pattern_set_matrix            (cairo_pattern_t *pattern,
    -                                                         const cairo_matrix_t *matrix);
    -void                cairo_pattern_get_matrix            (cairo_pattern_t *pattern,
    -                                                         cairo_matrix_t *matrix);
    -enum                cairo_pattern_type_t;
    -cairo_pattern_type_t cairo_pattern_get_type             (cairo_pattern_t *pattern);
    -unsigned int        cairo_pattern_get_reference_count   (cairo_pattern_t *pattern);
    -cairo_status_t      cairo_pattern_set_user_data         (cairo_pattern_t *pattern,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_pattern_get_user_data         (cairo_pattern_t *pattern,
    -                                                         const cairo_user_data_key_t *key);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +void + +cairo_pattern_add_color_stop_rgb () +
    +void + +cairo_pattern_add_color_stop_rgba () +
    +cairo_status_t + +cairo_pattern_get_color_stop_count () +
    +cairo_status_t + +cairo_pattern_get_color_stop_rgba () +
    +cairo_pattern_t * + +cairo_pattern_create_rgb () +
    +cairo_pattern_t * + +cairo_pattern_create_rgba () +
    +cairo_status_t + +cairo_pattern_get_rgba () +
    +cairo_pattern_t * + +cairo_pattern_create_for_surface () +
    +cairo_status_t + +cairo_pattern_get_surface () +
    +cairo_pattern_t * + +cairo_pattern_create_linear () +
    +cairo_status_t + +cairo_pattern_get_linear_points () +
    +cairo_pattern_t * + +cairo_pattern_create_radial () +
    +cairo_status_t + +cairo_pattern_get_radial_circles () +
    +cairo_pattern_t * + +cairo_pattern_create_mesh () +
    +void + +cairo_mesh_pattern_begin_patch () +
    +void + +cairo_mesh_pattern_end_patch () +
    +void + +cairo_mesh_pattern_move_to () +
    +void + +cairo_mesh_pattern_line_to () +
    +void + +cairo_mesh_pattern_curve_to () +
    +void + +cairo_mesh_pattern_set_control_point () +
    +void + +cairo_mesh_pattern_set_corner_color_rgb () +
    +void + +cairo_mesh_pattern_set_corner_color_rgba () +
    +cairo_status_t + +cairo_mesh_pattern_get_patch_count () +
    +cairo_path_t * + +cairo_mesh_pattern_get_path () +
    +cairo_status_t + +cairo_mesh_pattern_get_control_point () +
    +cairo_status_t + +cairo_mesh_pattern_get_corner_color_rgba () +
    +cairo_pattern_t * + +cairo_pattern_reference () +
    +void + +cairo_pattern_destroy () +
    +cairo_status_t + +cairo_pattern_status () +
    +void + +cairo_pattern_set_extend () +
    +cairo_extend_t + +cairo_pattern_get_extend () +
    +void + +cairo_pattern_set_filter () +
    +cairo_filter_t + +cairo_pattern_get_filter () +
    +void + +cairo_pattern_set_matrix () +
    +void + +cairo_pattern_get_matrix () +
    +cairo_pattern_type_t + +cairo_pattern_get_type () +
    unsigned int + +cairo_pattern_get_reference_count () +
    +cairo_status_t + +cairo_pattern_set_user_data () +
    +void * + +cairo_pattern_get_user_data () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + + + + + +
    typedefcairo_pattern_t
    enumcairo_extend_t
    enumcairo_filter_t
    enumcairo_pattern_type_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -cairo_pattern_t is the paint with which cairo draws. -The primary use of patterns is as the source for all cairo drawing -operations, although they can also be used as masks, that is, as the -brush too. -

    -

    -A cairo pattern is created by using one of the many constructors, +

    cairo_pattern_t is the paint with which cairo draws. +The primary use of patterns is as the source for all cairo drawing +operations, although they can also be used as masks, that is, as the +brush too.

    +

    A cairo pattern is created by using one of the many constructors, of the form cairo_pattern_create_type() or implicitly through cairo_set_source_type() -functions. -

    +functions.

    -

    Details

    -
    -

    cairo_pattern_t

    -
    typedef struct _cairo_pattern cairo_pattern_t;
    -
    -

    -A cairo_pattern_t represents a source when drawing onto a -surface. There are different subtypes of cairo_pattern_t, -for different types of sources; for example, -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; -for example cairo_set_source_rgb(). -

    -

    -The type of a pattern can be queried with cairo_pattern_get_type(). -

    -

    -Memory management of cairo_pattern_t is done with -cairo_pattern_reference() and cairo_pattern_destroy(). -

    -

    Since 1.0

    -
    -
    +

    Functions

    -

    cairo_pattern_add_color_stop_rgb ()

    -
    void                cairo_pattern_add_color_stop_rgb    (cairo_pattern_t *pattern,
    -                                                         double offset,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue);
    -

    -Adds an opaque color stop to a gradient pattern. The offset +

    cairo_pattern_add_color_stop_rgb ()

    +
    void
    +cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern,
    +                                  double offset,
    +                                  double red,
    +                                  double green,
    +                                  double blue);
    +

    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, +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 +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. -

    -
    +with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    offset :

    an offset in the range [0.0 .. 1.0]

    offset

    an offset in the range [0.0 .. 1.0]

     

    red :

    red component of color

    red

    red component of color

     

    green :

    green component of color

    green

    green component of color

     

    blue :

    blue component of color

    blue

    blue component of color

     
    +

    Since 1.0


    -

    cairo_pattern_add_color_stop_rgba ()

    -
    void                cairo_pattern_add_color_stop_rgba   (cairo_pattern_t *pattern,
    -                                                         double offset,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -

    -Adds a translucent color stop to a gradient pattern. The offset +

    cairo_pattern_add_color_stop_rgba ()

    +
    void
    +cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern,
    +                                   double offset,
    +                                   double red,
    +                                   double green,
    +                                   double blue,
    +                                   double alpha);
    +

    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, +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 +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. -

    -
    +with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    offset :

    an offset in the range [0.0 .. 1.0]

    offset

    an offset in the range [0.0 .. 1.0]

     

    red :

    red component of color

    red

    red component of color

     

    green :

    green component of color

    green

    green component of color

     

    blue :

    blue component of color

    blue

    blue component of color

     

    alpha :

    alpha component of color

    alpha

    alpha component of color

     
    +

    Since 1.0


    -

    cairo_pattern_get_color_stop_count ()

    -
    cairo_status_t      cairo_pattern_get_color_stop_count  (cairo_pattern_t *pattern,
    -                                                         int *count);
    -

    -Gets the number of color stops specified in the given gradient -pattern. -

    -
    +

    cairo_pattern_get_color_stop_count ()

    +
    cairo_status_t
    +cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern,
    +                                    int *count);
    +

    Gets the number of color stops specified in the given gradient +pattern.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    count :

    return value for the number of color stops, or NULL -

    Returns :

    -CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a gradient -pattern.

    count

    return value for the number of color stops, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a gradient +pattern.

    +

    +

    Since 1.4


    -

    cairo_pattern_get_color_stop_rgba ()

    -
    cairo_status_t      cairo_pattern_get_color_stop_rgba   (cairo_pattern_t *pattern,
    -                                                         int index,
    -                                                         double *offset,
    -                                                         double *red,
    -                                                         double *green,
    -                                                         double *blue,
    -                                                         double *alpha);
    -

    -Gets the color and offset information at the given index for a -gradient pattern. Values of index are 0 to 1 less than the number -returned by cairo_pattern_get_color_stop_count(). -

    -
    +

    cairo_pattern_get_color_stop_rgba ()

    +
    cairo_status_t
    +cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern,
    +                                   int index,
    +                                   double *offset,
    +                                   double *red,
    +                                   double *green,
    +                                   double *blue,
    +                                   double *alpha);
    +

    Gets the color and offset information at the given index + for a +gradient pattern. Values of index + range from 0 to n-1 +where n is the number returned +by cairo_pattern_get_color_stop_count().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - - - - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    index :

    index of the stop to return data for

    index

    index of the stop to return data for

     

    offset :

    return value for the offset of the stop, or NULL -

    offset

    return value for the offset of the stop, or NULL

     

    red :

    return value for red component of color, or NULL -

    red

    return value for red component of color, or NULL

     

    green :

    return value for green 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 -

    blue

    return value for blue component of color, or NULL

     

    Returns :

    -CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX -if index is not valid for the given pattern. If the pattern is -not a gradient pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is -returned.

    alpha

    return value for alpha component of color, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX +if index +is not valid for the given pattern. If the pattern is +not a gradient pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is +returned.

    +

    +

    Since 1.4


    -

    cairo_pattern_create_rgb ()

    -
    cairo_pattern_t *   cairo_pattern_create_rgb            (double red,
    -                                                         double green,
    -                                                         double blue);
    -

    -Creates a new cairo_pattern_t corresponding to an opaque color. The +

    cairo_pattern_create_rgb ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_rgb (double red,
    +                          double green,
    +                          double blue);
    +

    Creates a new cairo_pattern_t corresponding to an opaque color. The color components are floating point numbers in the range 0 to 1. If the values passed in are outside that range, they will be -clamped. -

    -
    +clamped.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    red :

    red component of the color

    green :

    green component of the color

    red

    red component of the color

     

    blue :

    blue component of the color

    green

    green component of the color

     

    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().

    blue

    blue component of the color

     
    +
    +
    +

    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.0


    -

    cairo_pattern_create_rgba ()

    -
    cairo_pattern_t *   cairo_pattern_create_rgba           (double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -

    -Creates a new cairo_pattern_t corresponding to a translucent color. -The color components are floating point numbers in the range 0 to -1. If the values passed in are outside that range, they will be -clamped. -

    -
    +

    cairo_pattern_create_rgba ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_rgba (double red,
    +                           double green,
    +                           double blue,
    +                           double alpha);
    +

    Creates a new cairo_pattern_t corresponding to a translucent color. +The color components are floating point numbers in the range 0 to

    +
    1. If the values passed in are outside that range, they will be +clamped.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + +

    red :

    red component of the color

    green :

    green component of the color

    red

    red component of the color

     

    blue :

    blue component of the color

    green

    green component of the color

     

    alpha :

    alpha component of the color

    blue

    blue component of the color

     

    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().

    alpha

    alpha component of the color

     
    +
    +
    +

    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.0


    -

    cairo_pattern_get_rgba ()

    -
    cairo_status_t      cairo_pattern_get_rgba              (cairo_pattern_t *pattern,
    -                                                         double *red,
    -                                                         double *green,
    -                                                         double *blue,
    -                                                         double *alpha);
    -

    -Gets the solid color for a solid color pattern. -

    -
    +

    cairo_pattern_get_rgba ()

    +
    cairo_status_t
    +cairo_pattern_get_rgba (cairo_pattern_t *pattern,
    +                        double *red,
    +                        double *green,
    +                        double *blue,
    +                        double *alpha);
    +

    Gets the solid color for a solid color pattern.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - - - - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    red :

    return value for red component of color, or NULL -

    red

    return value for red component of color, or NULL

     

    green :

    return value for green 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 -

    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_PATTERN_TYPE_MISMATCH if the pattern is not a solid -color pattern.

    alpha

    return value for alpha component of color, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a solid +color pattern.

    +

    +

    Since 1.4


    -

    cairo_pattern_create_for_surface ()

    -
    cairo_pattern_t *   cairo_pattern_create_for_surface    (cairo_surface_t *surface);
    -

    -Create a new cairo_pattern_t for the given surface. -

    -
    ---+

    cairo_pattern_create_for_surface ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_for_surface (cairo_surface_t *surface);
    +

    Create a new cairo_pattern_t for the given surface.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - + + + + +

    surface :

    the surface

    Returns :

    the newly created cairo_pattern_t if successful, or +

    surface

    the surface

     
    +
    +
    +

    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 +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(). - - -

    +the status of a pattern use cairo_pattern_status().

    +

    +

    Since 1.0


    -

    cairo_pattern_get_surface ()

    -
    cairo_status_t      cairo_pattern_get_surface           (cairo_pattern_t *pattern,
    -                                                         cairo_surface_t **surface);
    -

    -Gets the surface of a surface pattern. The reference returned in -surface is owned by the pattern; the caller should call -cairo_surface_reference() if the surface is to be retained. -

    -
    +

    cairo_pattern_get_surface ()

    +
    cairo_status_t
    +cairo_pattern_get_surface (cairo_pattern_t *pattern,
    +                           cairo_surface_t **surface);
    +

    Gets the surface of a surface pattern. The reference returned in +surface + is owned by the pattern; the caller should call +cairo_surface_reference() if the surface is to be retained.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    surface :

    return value for surface of pattern, or NULL -

    Returns :

    -CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a surface -pattern.

    surface

    return value for surface of pattern, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a surface +pattern.

    +

    +

    Since 1.4


    -

    cairo_pattern_create_linear ()

    -
    cairo_pattern_t *   cairo_pattern_create_linear         (double x0,
    -                                                         double y0,
    -                                                         double x1,
    -                                                         double y1);
    -

    -Create a new linear gradient cairo_pattern_t along the line defined +

    cairo_pattern_create_linear ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_linear (double x0,
    +                             double y0,
    +                             double x1,
    +                             double y1);
    +

    Create a new linear gradient cairo_pattern_t along the line defined by (x0, y0) and (x1, y1). Before using the gradient pattern, a number of color stops should be defined using -cairo_pattern_add_color_stop_rgb() or -cairo_pattern_add_color_stop_rgba(). -

    -

    -Note: The coordinates here are in pattern space. For a new pattern, +cairo_pattern_add_color_stop_rgb() or +cairo_pattern_add_color_stop_rgba().

    +

    Note: The coordinates here are 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(). -

    -
    +between the spaces can be changed with cairo_pattern_set_matrix().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    x0 :

    x coordinate of the start point

    x0

    x coordinate of the start point

     

    y0 :

    y coordinate of the start point

    y0

    y coordinate of the start point

     

    x1 :

    x coordinate of the end point

    x1

    x coordinate of the end point

     

    y1 :

    y coordinate of the end point

    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().

    y1

    y coordinate of the end point

     
    +
    +
    +

    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.0


    -

    cairo_pattern_get_linear_points ()

    -
    cairo_status_t      cairo_pattern_get_linear_points     (cairo_pattern_t *pattern,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *x1,
    -                                                         double *y1);
    -

    -Gets the gradient endpoints for a linear gradient. -

    -
    +

    cairo_pattern_get_linear_points ()

    +
    cairo_status_t
    +cairo_pattern_get_linear_points (cairo_pattern_t *pattern,
    +                                 double *x0,
    +                                 double *y0,
    +                                 double *x1,
    +                                 double *y1);
    +

    Gets the gradient endpoints for a linear gradient.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - - - - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    x0 :

    return value for the x coordinate of the first point, or NULL -

    x0

    return value for the x coordinate of the first point, or NULL

     

    y0 :

    return value for the y coordinate of the first point, or NULL -

    y0

    return value for the y coordinate of the first point, or NULL

     

    x1 :

    return value for the x coordinate of the second point, or NULL -

    x1

    return value for the x coordinate of the second point, or NULL

     

    y1 :

    return value for the y coordinate of the second point, or NULL -

    Returns :

    -CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a linear -gradient pattern.

    y1

    return value for the y coordinate of the second point, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a linear +gradient pattern.

    +

    +

    Since 1.4


    -

    cairo_pattern_create_radial ()

    -
    cairo_pattern_t *   cairo_pattern_create_radial         (double cx0,
    -                                                         double cy0,
    -                                                         double radius0,
    -                                                         double cx1,
    -                                                         double cy1,
    -                                                         double radius1);
    -

    -Creates a new radial gradient cairo_pattern_t between the two +

    cairo_pattern_create_radial ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_radial (double cx0,
    +                             double cy0,
    +                             double radius0,
    +                             double cx1,
    +                             double cy1,
    +                             double radius1);
    +

    Creates a new radial gradient cairo_pattern_t between the two circles defined by (cx0, cy0, radius0) and (cx1, cy1, radius1). Before using the gradient pattern, a number of color stops should be defined using -cairo_pattern_add_color_stop_rgb() or -cairo_pattern_add_color_stop_rgba(). -

    -

    -Note: The coordinates here are in pattern space. For a new pattern, +cairo_pattern_add_color_stop_rgb() or +cairo_pattern_add_color_stop_rgba().

    +

    Note: The coordinates here are 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(). -

    -
    +between the spaces can be changed with cairo_pattern_set_matrix().

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cx0 :

    x coordinate for the center of the start circle

    cy0 :

    y coordinate for the center of the start circle

    cx0

    x coordinate for the center of the start circle

     

    radius0 :

    radius of the start circle

    cy0

    y coordinate for the center of the start circle

     

    cx1 :

    x coordinate for the center of the end circle

    radius0

    radius of the start circle

     

    cy1 :

    y coordinate for the center of the end circle

    cx1

    x coordinate for the center of the end circle

     

    radius1 :

    radius of the end circle

    cy1

    y coordinate for the center of the end circle

     

    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().

    radius1

    radius of the end circle

     
    +
    +
    +

    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.0


    -

    cairo_pattern_get_radial_circles ()

    -
    cairo_status_t      cairo_pattern_get_radial_circles    (cairo_pattern_t *pattern,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *r0,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *r1);
    -

    -Gets the gradient endpoint circles for a radial gradient, each -specified as a center coordinate and a radius. -

    -
    +

    cairo_pattern_get_radial_circles ()

    +
    cairo_status_t
    +cairo_pattern_get_radial_circles (cairo_pattern_t *pattern,
    +                                  double *x0,
    +                                  double *y0,
    +                                  double *r0,
    +                                  double *x1,
    +                                  double *y1,
    +                                  double *r1);
    +

    Gets the gradient endpoint circles for a radial gradient, each +specified as a center coordinate and a radius.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    x0 :

    return value for the x coordinate of the center of the first circle, or NULL -

    pattern

    a cairo_pattern_t

     

    y0 :

    return value for the y coordinate of the center of the first circle, or NULL -

    x0

    return value for the x coordinate of the center of the first circle, or NULL

     

    r0 :

    return value for the radius of the first circle, or NULL -

    y0

    return value for the y coordinate of the center of the first circle, or NULL

     

    x1 :

    return value for the x coordinate of the center of the second circle, or NULL -

    r0

    return value for the radius of the first circle, or NULL

     

    y1 :

    return value for the y coordinate of the center of the second circle, or NULL -

    x1

    return value for the x coordinate of the center of the second circle, or NULL

     

    r1 :

    return value for the radius of the second circle, or NULL -

    y1

    return value for the y coordinate of the center of the second circle, or NULL

     

    Returns :

    -CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a radial -gradient pattern.

    r1

    return value for the radius of the second circle, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a radial +gradient pattern.

    +

    +

    Since 1.4


    -

    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 +

    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 +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, +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. -

    -

    -

    +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
            +---------------+
    @@ -950,63 +1182,43 @@
            +---------------+
          C0     Side 3        C3
     
    -

    -

    -

    -Each patch is constructed by first calling -cairo_mesh_pattern_begin_patch(), then cairo_mesh_pattern_move_to() +

    Each patch is constructed by first calling +cairo_mesh_pattern_begin_patch(), then cairo_mesh_pattern_move_to() to specify the first point in the patch (C0). Then the sides are -specified with calls to cairo_mesh_pattern_curve_to() and -cairo_mesh_pattern_line_to(). -

    -

    -The four additional control points (P0, P1, P2, P3) in a patch can -be specified with cairo_mesh_pattern_set_control_point(). -

    -

    -At each corner of the patch (C0, C1, C2, C3) a color may be -specified with cairo_mesh_pattern_set_corner_color_rgb() or -cairo_mesh_pattern_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 +specified with calls to cairo_mesh_pattern_curve_to() and +cairo_mesh_pattern_line_to().

    +

    The four additional control points (P0, P1, P2, P3) in a patch can +be specified with cairo_mesh_pattern_set_control_point().

    +

    At each corner of the patch (C0, C1, C2, C3) a color may be +specified with cairo_mesh_pattern_set_corner_color_rgb() or +cairo_mesh_pattern_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 +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 +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_mesh_pattern_end_patch() completes the current +1 the point between side 0 and side 1 etc.

    +

    Calling cairo_mesh_pattern_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_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch(). -

    -

    -

    +the color of C0.

    +

    Additional patches may be added with additional calls to +cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch().

     cairo_pattern_t *pattern = cairo_pattern_create_mesh ();
     
    @@ -1033,1324 +1245,1448 @@
     cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1);
     cairo_mesh_pattern_end_patch (pattern)
     
    -

    -

    -

    -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 +

    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 ranges from 0 to 1 when going from side 0 to side

    +
    1. 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 +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 +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 +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 +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().

    +status of a pattern use cairo_pattern_status().

    +

    +

    Since 1.12


    -

    cairo_mesh_pattern_begin_patch ()

    -
    void                cairo_mesh_pattern_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_mesh_pattern_move_to(), cairo_mesh_pattern_line_to() and -cairo_mesh_pattern_curve_to(). -

    -

    -After defining the patch, cairo_mesh_pattern_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 +

    cairo_mesh_pattern_begin_patch ()

    +
    void
    +cairo_mesh_pattern_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_mesh_pattern_move_to(), cairo_mesh_pattern_line_to() and +cairo_mesh_pattern_curve_to().

    +

    After defining the patch, cairo_mesh_pattern_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 +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. -

    -
    ---+CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    +
    +

    Parameters

    +
    ++++ - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     
    +

    Since 1.12


    -

    cairo_mesh_pattern_end_patch ()

    -
    void                cairo_mesh_pattern_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 +

    cairo_mesh_pattern_end_patch ()

    +
    void
    +cairo_mesh_pattern_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_mesh_pattern_line_to() was used. -

    -

    -Note: If pattern is not a mesh pattern then pattern will be put +patch as if cairo_mesh_pattern_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 +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. -

    -
    ---+CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    +
    +

    Parameters

    +
    ++++ - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     
    +

    Since 1.12


    -

    cairo_mesh_pattern_move_to ()

    -
    void                cairo_mesh_pattern_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 +

    cairo_mesh_pattern_move_to ()

    +
    void
    +cairo_mesh_pattern_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 +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern + has no current patch or the current patch already has at least one side, pattern + will be put into an error status with a status of -CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. -

    -
    +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    x :

    the X coordinate of the new position

    x

    the X coordinate of the new position

     

    y :

    the Y coordinate of the new position

    y

    the Y coordinate of the new position

     
    +

    Since 1.12


    -

    cairo_mesh_pattern_line_to ()

    -
    void                cairo_mesh_pattern_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_mesh_pattern_line_to() this function will behave as -cairo_mesh_pattern_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 +

    cairo_mesh_pattern_line_to ()

    +
    void
    +cairo_mesh_pattern_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_mesh_pattern_line_to() this function will behave as +cairo_mesh_pattern_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 +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. -

    -
    +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    x :

    the X coordinate of the end of the new line

    x

    the X coordinate of the end of the new line

     

    y :

    the Y coordinate of the end of the new line

    y

    the Y coordinate of the end of the new line

     
    +

    Since 1.12


    -

    cairo_mesh_pattern_curve_to ()

    -
    void                cairo_mesh_pattern_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_mesh_pattern_curve_to(), this function will behave as if -preceded by a call to cairo_mesh_pattern_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 +

    cairo_mesh_pattern_curve_to ()

    +
    void
    +cairo_mesh_pattern_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_mesh_pattern_curve_to(), this function will behave as if +preceded by a call to cairo_mesh_pattern_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 +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. -

    -
    +CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    x1 :

    the X coordinate of the first control point

    x1

    the X coordinate of the first control point

     

    y1 :

    the Y coordinate of the first control point

    y1

    the Y coordinate of the first control point

     

    x2 :

    the X coordinate of the second control point

    x2

    the X coordinate of the second control point

     

    y2 :

    the Y 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

    x3

    the X coordinate of the end of the curve

     

    y3 :

    the Y coordinate of the end of the curve

    y3

    the Y coordinate of the end of the curve

     
    -

    Since 1.12

    -
    -
    -

    cairo_mesh_pattern_set_control_point ()

    -
    void                cairo_mesh_pattern_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_mesh_pattern_set_corner_color_rgb ()

    -
    void                cairo_mesh_pattern_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_mesh_pattern_set_corner_color_rgba ()

    -
    void                cairo_mesh_pattern_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 +

    cairo_mesh_pattern_set_control_point ()

    +
    void
    +cairo_mesh_pattern_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 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. -

    -
    +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.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    corner_num :

    the corner to set the color for

    red :

    red component of color

    pattern

    a cairo_pattern_t

     

    green :

    green component of color

    point_num

    the control point to set the position for

     

    blue :

    blue component of color

    x

    the X coordinate of the control point

     

    alpha :

    alpha component of color

    y

    the Y coordinate of the control point

     
    -

    Since 1.12

    -
    -
    -

    cairo_mesh_pattern_get_patch_count ()

    -
    cairo_status_t      cairo_mesh_pattern_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_mesh_pattern_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_mesh_pattern_get_path ()

    -
    cairo_path_t *      cairo_mesh_pattern_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_mesh_pattern_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_mesh_pattern_get_control_point ()

    -
    cairo_status_t      cairo_mesh_pattern_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_mesh_pattern_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(). -

    -
    +

    cairo_mesh_pattern_set_corner_color_rgb ()

    +
    void
    +cairo_mesh_pattern_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.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    patch_num :

    the patch number to return data for

    pattern

    a cairo_pattern_t

     

    point_num :

    the control point number to return data for

    corner_num

    the corner to set the color for

     

    x :

    return value for the x coordinate of the control point, or NULL -

    red

    red component of color

     

    y :

    return value for the y coordinate of the control point, or NULL -

    green

    green component of color

     

    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.

    blue

    blue component of color

     
    +

    Since 1.12


    -

    cairo_mesh_pattern_get_corner_color_rgba ()

    -
    cairo_status_t      cairo_mesh_pattern_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_mesh_pattern_get_patch_count(). -

    -

    -Valid values for corner_num are from 0 to 3 and identify the -corners as explained in cairo_pattern_create_mesh(). -

    -
    +

    cairo_mesh_pattern_set_corner_color_rgba ()

    +
    void
    +cairo_mesh_pattern_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.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - - - - - + + + - - + + + - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    patch_num :

    the patch number to return data for

    pattern

    a cairo_pattern_t

     

    corner_num :

    the corner number to return data for

    corner_num

    the corner to set the color for

     

    red :

    return value for red component of color, or NULL -

    green :

    return value for green component of color, or NULL -

    red

    red component of color

     

    blue :

    return value for blue component of color, or NULL -

    green

    green component of color

     

    alpha :

    return value for alpha component of color, or NULL -

    blue

    blue component of color

     

    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.

    alpha

    alpha component of color

     
    +

    Since 1.12


    -

    cairo_pattern_reference ()

    -
    cairo_pattern_t *   cairo_pattern_reference             (cairo_pattern_t *pattern);
    -

    -Increases the reference count on pattern by one. This prevents -pattern from being destroyed until a matching call to -cairo_pattern_destroy() is made. -

    -

    -The number of references to a cairo_pattern_t can be get using -cairo_pattern_get_reference_count(). -

    -
    +

    cairo_mesh_pattern_get_patch_count ()

    +
    cairo_status_t
    +cairo_mesh_pattern_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_mesh_pattern_end_patch(). For example it will be 0 +during the definition of the first patch.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    Returns :

    the referenced cairo_pattern_t.

    count

    return value for the number patches, or NULL

     
    -

    Since 1.0

    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a mesh +pattern.

    +

    +
    +

    Since 1.12


    -

    cairo_pattern_destroy ()

    -
    void                cairo_pattern_destroy               (cairo_pattern_t *pattern);
    -

    -Decreases the reference count on pattern by one. If the result is -zero, then pattern and all associated resources are freed. See -cairo_pattern_reference(). -

    -
    ---+

    cairo_mesh_pattern_get_path ()

    +
    cairo_path_t *
    +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_get_patch_count().

    +
    +

    Parameters

    +
    ++++ - - - - + + + + + + + + + + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    patch_num

    the patch number to return data for

     
    -

    Since 1.0

    +
    +
    +

    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_status ()

    -
    cairo_status_t      cairo_pattern_status                (cairo_pattern_t *pattern);
    -

    -Checks whether an error has previously occurred for this -pattern. -

    -
    +

    cairo_mesh_pattern_get_control_point ()

    +
    cairo_status_t
    +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_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().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + + + + + + + + + + + + + + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NO_MEMORY, -CAIRO_STATUS_INVALID_MATRIX, CAIRO_STATUS_PATTERN_TYPE_MISMATCH, -or CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

    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

     
    -

    Since 1.0

    +
    +
    +

    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


    -

    enum cairo_extend_t

    -
    typedef enum {
    -    CAIRO_EXTEND_NONE,
    -    CAIRO_EXTEND_REPEAT,
    -    CAIRO_EXTEND_REFLECT,
    -    CAIRO_EXTEND_PAD
    -} cairo_extend_t;
    -
    -

    -cairo_extend_t is used to describe how pattern color/alpha will be -determined for areas "outside" the pattern's natural area, (for -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. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_mesh_pattern_get_corner_color_rgba ()

    +
    cairo_status_t
    +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_get_patch_count().

    +

    Valid values for corner_num + are from 0 to 3 and identify the +corners as explained in cairo_pattern_create_mesh().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + + + + + + + + + + + + + + + +

    CAIRO_EXTEND_NONE

    pixels outside of the source pattern - are fully transparent (Since 1.0) -

    pattern

    a cairo_pattern_t

     

    CAIRO_EXTEND_REPEAT

    the pattern is tiled by repeating (Since 1.0) -

    patch_num

    the patch number to return data for

     

    CAIRO_EXTEND_REFLECT

    the pattern is tiled by reflecting - at the edges (Since 1.0; but only implemented for surface patterns since 1.6) -

    corner_num

    the corner number to return data for

     

    CAIRO_EXTEND_PAD

    pixels outside of the pattern copy - the closest pixel from the source (Since 1.2; but only - implemented for surface patterns since 1.6) -

    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_t *
    +cairo_pattern_reference (cairo_pattern_t *pattern);
    +

    Increases the reference count on pattern + by one. This prevents +pattern + from being destroyed until a matching call to +cairo_pattern_destroy() is made.

    +

    The number of references to a cairo_pattern_t can be get using +cairo_pattern_get_reference_count().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    pattern

    a cairo_pattern_t

     
    +
    +
    +

    Returns

    +

    the referenced cairo_pattern_t.

    +

    +

    Since 1.0


    -

    cairo_pattern_set_extend ()

    -
    void                cairo_pattern_set_extend            (cairo_pattern_t *pattern,
    -                                                         cairo_extend_t extend);
    -

    -Sets the mode to be used for drawing outside the area of a pattern. -See cairo_extend_t for details on the semantics of each extend -strategy. -

    -

    -The default extend mode is CAIRO_EXTEND_NONE for surface patterns -and CAIRO_EXTEND_PAD for gradient patterns. -

    -
    ---+

    cairo_pattern_destroy ()

    +
    void
    +cairo_pattern_destroy (cairo_pattern_t *pattern);
    +

    Decreases the reference count on pattern + by one. If the result is +zero, then pattern + and all associated resources are freed. See +cairo_pattern_reference().

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    pattern :

    a cairo_pattern_t -

    extend :

    a cairo_extend_t describing how the area outside of the -pattern will be drawn

    pattern

    a cairo_pattern_t

     
    +

    Since 1.0


    -

    cairo_pattern_get_extend ()

    -
    cairo_extend_t      cairo_pattern_get_extend            (cairo_pattern_t *pattern);
    -

    -Gets the current extend mode for a pattern. See cairo_extend_t -for details on the semantics of each extend strategy. -

    -
    ---+

    cairo_pattern_status ()

    +
    cairo_status_t
    +cairo_pattern_status (cairo_pattern_t *pattern);
    +

    Checks whether an error has previously occurred for this +pattern.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    pattern :

    a cairo_pattern_t -

    Returns :

    the current extend strategy used for drawing the -pattern.

    pattern

    a cairo_pattern_t

     
    +
    +

    Since 1.0


    -

    enum cairo_filter_t

    -
    typedef enum {
    -    CAIRO_FILTER_FAST,
    -    CAIRO_FILTER_GOOD,
    -    CAIRO_FILTER_BEST,
    -    CAIRO_FILTER_NEAREST,
    -    CAIRO_FILTER_BILINEAR,
    -    CAIRO_FILTER_GAUSSIAN
    -} cairo_filter_t;
    -
    -

    -cairo_filter_t is used to indicate what filtering should be -applied when reading pixel values from patterns. See -cairo_pattern_set_filter() for indicating the desired filter to be -used with a particular pattern. -

    -
    +

    cairo_pattern_set_extend ()

    +
    void
    +cairo_pattern_set_extend (cairo_pattern_t *pattern,
    +                          cairo_extend_t extend);
    +

    Sets the mode to be used for drawing outside the area of a pattern. +See cairo_extend_t for details on the semantics of each extend +strategy.

    +

    The default extend mode is CAIRO_EXTEND_NONE for surface patterns +and CAIRO_EXTEND_PAD for gradient patterns.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - + + + - - + + +

    CAIRO_FILTER_FAST

    A high-performance filter, with quality similar - to CAIRO_FILTER_NEAREST (Since 1.0) -

    CAIRO_FILTER_GOOD

    A reasonable-performance filter, with quality - similar to CAIRO_FILTER_BILINEAR (Since 1.0) -

    CAIRO_FILTER_BEST

    The highest-quality available, performance may - not be suitable for interactive use. (Since 1.0) -

    CAIRO_FILTER_NEAREST

    Nearest-neighbor filtering (Since 1.0) -

    CAIRO_FILTER_BILINEAR

    Linear interpolation in two dimensions (Since 1.0) -

    pattern

    a cairo_pattern_t

     

    CAIRO_FILTER_GAUSSIAN

    This filter value is currently - unimplemented, and should not be used in current code. (Since 1.0) -

    extend

    a cairo_extend_t describing how the area outside of the +pattern will be drawn

     
    +
    +

    Since 1.0

    + +
    +
    +

    cairo_pattern_get_extend ()

    +
    cairo_extend_t
    +cairo_pattern_get_extend (cairo_pattern_t *pattern);
    +

    Gets the current extend mode for a pattern. See cairo_extend_t +for details on the semantics of each extend strategy.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    pattern

    a cairo_pattern_t

     
    +
    +
    +

    Returns

    +

    the current extend strategy used for drawing the +pattern.

    +

    +

    Since 1.0


    -

    cairo_pattern_set_filter ()

    -
    void                cairo_pattern_set_filter            (cairo_pattern_t *pattern,
    -                                                         cairo_filter_t filter);
    -

    -Sets the filter to be used for resizing when using this pattern. -See cairo_filter_t for details on each filter. -

    -

    -* Note that you might want to control filtering even when you do not +

    cairo_pattern_set_filter ()

    +
    void
    +cairo_pattern_set_filter (cairo_pattern_t *pattern,
    +                          cairo_filter_t filter);
    +

    Sets the filter to be used for resizing when using this pattern. +See cairo_filter_t for details on each filter.

    +
     cairo_set_source_surface (cr, image, x, y);
     cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
     
    -

    -

    -
    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    filter :

    a cairo_filter_t describing the filter to use for resizing -the pattern

    filter

    a cairo_filter_t describing the filter to use for resizing +the pattern

     
    +

    Since 1.0


    -

    cairo_pattern_get_filter ()

    -
    cairo_filter_t      cairo_pattern_get_filter            (cairo_pattern_t *pattern);
    -

    -Gets the current filter for a pattern. See cairo_filter_t -for details on each filter. -

    -
    ---+

    cairo_pattern_get_filter ()

    +
    cairo_filter_t
    +cairo_pattern_get_filter (cairo_pattern_t *pattern);
    +

    Gets the current filter for a pattern. See cairo_filter_t +for details on each filter.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    pattern :

    a cairo_pattern_t -

    Returns :

    the current filter used for resizing the pattern.

    pattern

    a cairo_pattern_t

     
    +
    +
    +

    Returns

    +

    the current filter used for resizing the pattern.

    +

    +

    Since 1.0


    -

    cairo_pattern_set_matrix ()

    -
    void                cairo_pattern_set_matrix            (cairo_pattern_t *pattern,
    -                                                         const cairo_matrix_t *matrix);
    -

    -Sets the pattern's transformation matrix to matrix. This matrix is -a transformation from user space to pattern space. -

    -

    -When a pattern is first created it always has the identity matrix +

    cairo_pattern_set_matrix ()

    +
    void
    +cairo_pattern_set_matrix (cairo_pattern_t *pattern,
    +                          const cairo_matrix_t *matrix);
    +

    Sets the pattern's transformation matrix to matrix +. This matrix is +a transformation from user space to pattern space.

    +

    When a pattern is first created it always has the identity matrix for its transformation matrix, which means that pattern space is -initially identical to user space. -

    -

    -Important: Please note that the direction of this transformation +initially identical to user space.

    +

    Important: Please note that the direction of this transformation matrix is from user space to pattern space. This means that if you imagine the flow from a pattern to user space (and on to device space), then coordinates in that flow will be transformed by the -inverse of the pattern matrix. -

    -

    -For example, if you want to make a pattern appear twice as large as -it does by default the correct code to use is: -

    -

    -

    +inverse of the pattern matrix.

    +

    For example, if you want to make a pattern appear twice as large as +it does by default the correct code to use is:

     cairo_matrix_init_scale (&matrix, 0.5, 0.5);
     cairo_pattern_set_matrix (pattern, &matrix);
     
    -

    -

    -

    -Meanwhile, using values of 2.0 rather than 0.5 in the code above -would cause the pattern to appear at half of its default size. -

    -

    -Also, please note the discussion of the user-space locking -semantics of cairo_set_source(). -

    -
    +

    Meanwhile, using values of 2.0 rather than 0.5 in the code above +would cause the pattern to appear at half of its default size.

    +

    Also, please note the discussion of the user-space locking +semantics of cairo_set_source().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    matrix :

    a cairo_matrix_t -

    matrix

    a cairo_matrix_t

     
    +

    Since 1.0


    -

    cairo_pattern_get_matrix ()

    -
    void                cairo_pattern_get_matrix            (cairo_pattern_t *pattern,
    -                                                         cairo_matrix_t *matrix);
    -

    -Stores the pattern's transformation matrix into matrix. -

    -
    ---+

    cairo_pattern_get_matrix ()

    +
    void
    +cairo_pattern_get_matrix (cairo_pattern_t *pattern,
    +                          cairo_matrix_t *matrix);
    +

    Stores the pattern's transformation matrix into matrix +.

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    pattern :

    a cairo_pattern_t -

    matrix :

    return value for the matrix

    pattern

    a cairo_pattern_t

     

    matrix

    return value for the matrix

     
    +

    Since 1.0


    -

    enum cairo_pattern_type_t

    -
    typedef enum {
    -    CAIRO_PATTERN_TYPE_SOLID,
    -    CAIRO_PATTERN_TYPE_SURFACE,
    -    CAIRO_PATTERN_TYPE_LINEAR,
    -    CAIRO_PATTERN_TYPE_RADIAL,
    -    CAIRO_PATTERN_TYPE_MESH,
    -    CAIRO_PATTERN_TYPE_RASTER_SOURCE
    -} cairo_pattern_type_t;
    -
    -

    -cairo_pattern_type_t is used to describe the type of a given pattern. -

    -

    -The type of a pattern is determined by the function used to create -it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() -functions create SOLID patterns. The remaining -cairo_pattern_create functions map to pattern types in obvious -ways. -

    -

    -The pattern type can be queried with cairo_pattern_get_type() -

    -

    -Most cairo_pattern_t functions can be called with a pattern of any -type, (though trying to change the extend or filter for a solid -pattern will have no effect). A notable exception is -cairo_pattern_add_color_stop_rgb() and -cairo_pattern_add_color_stop_rgba() which must only be called with -gradient patterns (either LINEAR or RADIAL). Otherwise the pattern -will be shutdown and put into an error state. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_pattern_get_type ()

    +
    cairo_pattern_type_t
    +cairo_pattern_get_type (cairo_pattern_t *pattern);
    +

    This function returns the type a pattern. +See cairo_pattern_type_t for available types.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    pattern

    a cairo_pattern_t

     
    +
    +
    +

    Returns

    +

    The type of pattern +.

    +

    +
    +

    Since 1.2

    + +
    +
    +

    cairo_pattern_get_reference_count ()

    +
    unsigned int
    +cairo_pattern_get_reference_count (cairo_pattern_t *pattern);
    +

    Returns the current reference count of pattern +.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    pattern

    a cairo_pattern_t

     
    +
    +
    +

    Returns

    +

    the current reference count of pattern +. If the +object is a nil object, 0 will be returned.

    +

    +
    +

    Since 1.4

    +
    +
    +
    +

    cairo_pattern_set_user_data ()

    +
    cairo_status_t
    +cairo_pattern_set_user_data (cairo_pattern_t *pattern,
    +                             const cairo_user_data_key_t *key,
    +                             void *user_data,
    +                             cairo_destroy_func_t destroy);
    +

    Attach user data to pattern +. To remove user data from a surface, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + - - + + + - - + + + - - + + +

    CAIRO_PATTERN_TYPE_SOLID

    The pattern is a solid (uniform) -color. It may be opaque or translucent, since 1.2. -

    CAIRO_PATTERN_TYPE_SURFACE

    The pattern is a based on a surface (an image), since 1.2. -

    CAIRO_PATTERN_TYPE_LINEAR

    The pattern is a linear gradient, since 1.2. -

    pattern

    a cairo_pattern_t

     

    CAIRO_PATTERN_TYPE_RADIAL

    The pattern is a radial gradient, since 1.2. -

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    CAIRO_PATTERN_TYPE_MESH

    The pattern is a mesh, since 1.12. -

    user_data

    the user data to attach to the cairo_pattern_t

     

    CAIRO_PATTERN_TYPE_RASTER_SOURCE

    The pattern is a user pattern providing raster data, since 1.12. -

    destroy

    a cairo_destroy_func_t which will be called when the +cairo_t is destroyed or when new user data is attached using the +same key.

     
    -

    Since 1.2

    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +
    +

    Since 1.4


    -

    cairo_pattern_get_type ()

    -
    cairo_pattern_type_t cairo_pattern_get_type             (cairo_pattern_t *pattern);
    -

    -This function returns the type a pattern. -See cairo_pattern_type_t for available types. -

    -
    +

    cairo_pattern_get_user_data ()

    +
    void *
    +cairo_pattern_get_user_data (cairo_pattern_t *pattern,
    +                             const cairo_user_data_key_t *key);
    +

    Return user data previously attached to pattern + using the +specified key. If no user data has been attached with the given +key this function returns NULL.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    a cairo_pattern_t -

    pattern

    a cairo_pattern_t

     

    Returns :

    The type of pattern.

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    -

    Since 1.2

    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +
    +

    Since 1.4

    + + +
    +

    Types and Values

    +
    +

    cairo_pattern_t

    +
    typedef struct _cairo_pattern cairo_pattern_t;
    +
    +

    A cairo_pattern_t represents a source when drawing onto a +surface. There are different subtypes of cairo_pattern_t, +for different types of sources; for example, +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; +for example cairo_set_source_rgb().

    +

    The type of a pattern can be queried with cairo_pattern_get_type().

    +

    Memory management of cairo_pattern_t is done with +cairo_pattern_reference() and cairo_pattern_destroy().

    +

    Since 1.0


    -

    cairo_pattern_get_reference_count ()

    -
    unsigned int        cairo_pattern_get_reference_count   (cairo_pattern_t *pattern);
    -

    -Returns the current reference count of pattern. -

    -
    +

    enum cairo_extend_t

    +

    cairo_extend_t is used to describe how pattern color/alpha will be +determined for areas "outside" the pattern's natural area, (for +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.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + + + + + - - + + +

    pattern :

    a cairo_pattern_t +

    CAIRO_EXTEND_NONE

    +

    pixels outside of the source pattern + are fully transparent (Since 1.0)

    +
     

    CAIRO_EXTEND_REPEAT

    +

    the pattern is tiled by repeating (Since 1.0)

    +
     

    CAIRO_EXTEND_REFLECT

    +

    the pattern is tiled by reflecting + at the edges (Since 1.0; but only implemented for surface patterns since 1.6)

     

    Returns :

    the current reference count of pattern. If the -object is a nil object, 0 will be returned.

    CAIRO_EXTEND_PAD

    +

    pixels outside of the pattern copy + the closest pixel from the source (Since 1.2; but only + implemented for surface patterns since 1.6)

    +
     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_pattern_set_user_data ()

    -
    cairo_status_t      cairo_pattern_set_user_data         (cairo_pattern_t *pattern,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to pattern. To remove user data from a surface, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    enum cairo_filter_t

    +

    cairo_filter_t is used to indicate what filtering should be +applied when reading pixel values from patterns. See +cairo_pattern_set_filter() for indicating the desired filter to be +used with a particular pattern.

    +
    +

    Members

    +
    --+++ - - + + - - + + + - - + + - - + + + - - + + + + + + + +

    pattern :

    a cairo_pattern_t +

    CAIRO_FILTER_FAST

    +

    A high-performance filter, with quality similar + to CAIRO_FILTER_NEAREST (Since 1.0)

     

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    CAIRO_FILTER_GOOD

    +

    A reasonable-performance filter, with quality + similar to CAIRO_FILTER_BILINEAR (Since 1.0)

    +
     

    user_data :

    the user data to attach to the cairo_pattern_t +

    CAIRO_FILTER_BEST

    +

    The highest-quality available, performance may + not be suitable for interactive use. (Since 1.0)

     

    destroy :

    a cairo_destroy_func_t which will be called when the -cairo_t is destroyed or when new user data is attached using the -same key.

    CAIRO_FILTER_NEAREST

    +

    Nearest-neighbor filtering (Since 1.0)

    +
     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    CAIRO_FILTER_BILINEAR

    +

    Linear interpolation in two dimensions (Since 1.0)

    +
     

    CAIRO_FILTER_GAUSSIAN

    +

    This filter value is currently + unimplemented, and should not be used in current code. (Since 1.0)

    +
     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_pattern_get_user_data ()

    -
    void *              cairo_pattern_get_user_data         (cairo_pattern_t *pattern,
    -                                                         const cairo_user_data_key_t *key);
    -

    -Return user data previously attached to pattern using the -specified key. If no user data has been attached with the given -key this function returns NULL. -

    -
    +

    enum cairo_pattern_type_t

    +

    cairo_pattern_type_t is used to describe the type of a given pattern.

    +

    The type of a pattern is determined by the function used to create +it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() +functions create SOLID patterns. The remaining +cairo_pattern_create functions map to pattern types in obvious +ways.

    +

    The pattern type can be queried with cairo_pattern_get_type()

    +

    Most cairo_pattern_t functions can be called with a pattern of any +type, (though trying to change the extend or filter for a solid +pattern will have no effect). A notable exception is +cairo_pattern_add_color_stop_rgb() and +cairo_pattern_add_color_stop_rgba() which must only be called with +gradient patterns (either LINEAR or RADIAL). Otherwise the pattern +will be shutdown and put into an error state.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + + + + + - - + + + + + + + + - - + + +

    pattern :

    a cairo_pattern_t +

    CAIRO_PATTERN_TYPE_SOLID

    +

    The pattern is a solid (uniform) +color. It may be opaque or translucent, since 1.2.

    +
     

    CAIRO_PATTERN_TYPE_SURFACE

    +

    The pattern is a based on a surface (an image), since 1.2.

    +
     

    CAIRO_PATTERN_TYPE_LINEAR

    +

    The pattern is a linear gradient, since 1.2.

     

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    CAIRO_PATTERN_TYPE_RADIAL

    +

    The pattern is a radial gradient, since 1.2.

    +
     

    CAIRO_PATTERN_TYPE_MESH

    +

    The pattern is a mesh, since 1.12.

    +
     

    Returns :

    the user data previously attached or NULL.

    CAIRO_PATTERN_TYPE_RASTER_SOURCE

    +

    The pattern is a user pattern providing raster data, since 1.12.

    +
     
    -

    Since 1.4

    +
    +

    Since 1.2

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-scaled-font-t.html cairo-1.14.2/doc/public/html/cairo-cairo-scaled-font-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-scaled-font-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-scaled-font-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_scaled_font_t +Cairo: A Vector Graphics Library: cairo_scaled_font_t - + - - - - - - - - - - + + + + + + +
    @@ -33,532 +30,527 @@

    cairo_scaled_font_t

    cairo_scaled_font_t — Font face at particular size and options

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_scaled_font_t;
    -cairo_scaled_font_t * cairo_scaled_font_create          (cairo_font_face_t *font_face,
    -                                                         const cairo_matrix_t *font_matrix,
    -                                                         const cairo_matrix_t *ctm,
    -                                                         const cairo_font_options_t *options);
    -cairo_scaled_font_t * cairo_scaled_font_reference       (cairo_scaled_font_t *scaled_font);
    -void                cairo_scaled_font_destroy           (cairo_scaled_font_t *scaled_font);
    -cairo_status_t      cairo_scaled_font_status            (cairo_scaled_font_t *scaled_font);
    -                    cairo_font_extents_t;
    -void                cairo_scaled_font_extents           (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_font_extents_t *extents);
    -                    cairo_text_extents_t;
    -void                cairo_scaled_font_text_extents      (cairo_scaled_font_t *scaled_font,
    -                                                         const char *utf8,
    -                                                         cairo_text_extents_t *extents);
    -void                cairo_scaled_font_glyph_extents     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         cairo_text_extents_t *extents);
    -cairo_status_t      cairo_scaled_font_text_to_glyphs    (cairo_scaled_font_t *scaled_font,
    -                                                         double x,
    -                                                         double y,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         cairo_glyph_t **glyphs,
    -                                                         int *num_glyphs,
    -                                                         cairo_text_cluster_t **clusters,
    -                                                         int *num_clusters,
    -                                                         cairo_text_cluster_flags_t *cluster_flags);
    -cairo_font_face_t * cairo_scaled_font_get_font_face     (cairo_scaled_font_t *scaled_font);
    -void                cairo_scaled_font_get_font_options  (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_font_options_t *options);
    -void                cairo_scaled_font_get_font_matrix   (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *font_matrix);
    -void                cairo_scaled_font_get_ctm           (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *ctm);
    -void                cairo_scaled_font_get_scale_matrix  (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *scale_matrix);
    -cairo_font_type_t   cairo_scaled_font_get_type          (cairo_scaled_font_t *scaled_font);
    -unsigned int        cairo_scaled_font_get_reference_count
    -                                                        (cairo_scaled_font_t *scaled_font);
    -cairo_status_t      cairo_scaled_font_set_user_data     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_scaled_font_get_user_data     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_user_data_key_t *key);
    -
    -
    -
    -

    Description

    -

    -cairo_scaled_font_t represents a realization of a font face at a particular -size and transformation and a certain set of font options. -

    -
    -

    Details

    -
    -

    cairo_scaled_font_t

    -
    typedef struct _cairo_scaled_font cairo_scaled_font_t;
    -
    -

    -A cairo_scaled_font_t is a font scaled to a particular size and device -resolution. A cairo_scaled_font_t is most useful for low-level font -usage where a library or application wants to cache a reference -to a scaled font to speed up the computation of metrics. -

    -

    -There are various types of scaled fonts, depending on the -font backend they use. The type of a -scaled font can be queried using cairo_scaled_font_get_type(). -

    -

    -Memory management of cairo_scaled_font_t is done with -cairo_scaled_font_reference() and cairo_scaled_font_destroy(). -

    -

    Since 1.0

    -
    -
    -
    -

    cairo_scaled_font_create ()

    -
    cairo_scaled_font_t * cairo_scaled_font_create          (cairo_font_face_t *font_face,
    -                                                         const cairo_matrix_t *font_matrix,
    -                                                         const cairo_matrix_t *ctm,
    -                                                         const cairo_font_options_t *options);
    -

    -Creates a cairo_scaled_font_t object from a font face and matrices that -describe the size of the font and the environment in which it will -be used. -

    -
    +

    Functions

    +
    --++ - - + - - + + - - + + - - + + - - + - -

    font_face :

    a cairo_font_face_t + +cairo_scaled_font_t * + +cairo_scaled_font_create ()

    font_matrix :

    font space to user space transformation matrix for the -font. In the simplest case of a N point font, this matrix is -just a scale by N, but it can also be used to shear the font -or stretch it unequally along the two axes. See -cairo_set_font_matrix(). +cairo_scaled_font_t * + +cairo_scaled_font_reference () +

    ctm :

    user to device transformation matrix with which the font will -be used. +void + +cairo_scaled_font_destroy () +

    options :

    options to use when getting metrics for the font and -rendering with it. +cairo_status_t + +cairo_scaled_font_status () +

    Returns :

    a newly created cairo_scaled_font_t. Destroy with -cairo_scaled_font_destroy() + +void + +cairo_scaled_font_extents ()
    -

    Since 1.0

    -
    -
    -
    -

    cairo_scaled_font_reference ()

    -
    cairo_scaled_font_t * cairo_scaled_font_reference       (cairo_scaled_font_t *scaled_font);
    -

    -Increases the reference count on scaled_font by one. This prevents -scaled_font from being destroyed until a matching call to -cairo_scaled_font_destroy() is made. -

    -

    -The number of references to a cairo_scaled_font_t can be get using -cairo_scaled_font_get_reference_count(). -

    -
    ---- - - - + + - - + - -

    scaled_font :

    a cairo_scaled_font_t, (may be NULL in which case -this function does nothing) +void + +cairo_scaled_font_text_extents () +

    Returns :

    the referenced cairo_scaled_font_t + +void + +cairo_scaled_font_glyph_extents ()
    -

    Since 1.0

    -
    -
    -
    -

    cairo_scaled_font_destroy ()

    -
    void                cairo_scaled_font_destroy           (cairo_scaled_font_t *scaled_font);
    -

    -Decreases the reference count on font by one. If the result -is zero, then font and all associated resources are freed. -See cairo_scaled_font_reference(). -

    -
    ---- - - - + - -

    scaled_font :

    a cairo_scaled_font_t +
    +cairo_status_t
    -

    Since 1.0

    -
    -
    -
    -

    cairo_scaled_font_status ()

    -
    cairo_status_t      cairo_scaled_font_status            (cairo_scaled_font_t *scaled_font);
    -

    -Checks whether an error has previously occurred for this -scaled_font. -

    -
    ---- - + + - - + - - + + - -
    +cairo_scaled_font_text_to_glyphs () +

    scaled_font :

    a cairo_scaled_font_t + +cairo_font_face_t * + +cairo_scaled_font_get_font_face ()

    Returns :

    -CAIRO_STATUS_SUCCESS or another error such as -CAIRO_STATUS_NO_MEMORY. +void + +cairo_scaled_font_get_font_options () +
    -

    Since 1.0

    -
    -
    -
    -

    cairo_font_extents_t

    -
    typedef struct {
    -    double ascent;
    -    double descent;
    -    double height;
    -    double max_x_advance;
    -    double max_y_advance;
    -} cairo_font_extents_t;
    -
    -

    -The cairo_font_extents_t structure stores metric information for -a font. Values are given in the current user-space coordinate -system. -

    -

    -Because font metrics are in user-space coordinates, they are -mostly, but not entirely, independent of the current transformation -matrix. If you call cairo_scale(cr, 2.0, 2.0), -text will be drawn twice as big, but the reported text extents will -not be doubled. They will change slightly due to hinting (so you -can't assume that metrics are independent of the transformation -matrix), but otherwise will remain unchanged. -

    -
    ---- - - - + + - - + + - - + + - - + + - - + + + + + + + + + +

    double ascent;

    the distance that the font extends above the baseline. -Note that this is not always exactly equal to the maximum -of the extents of all the glyphs in the font, but rather -is picked to express the font designer's intent as to -how the font should align with elements above it. +void + +cairo_scaled_font_get_font_matrix () +

    double descent;

    the distance that the font extends below the baseline. -This value is positive for typical fonts that include -portions below the baseline. Note that this is not always -exactly equal to the maximum of the extents of all the -glyphs in the font, but rather is picked to express the -font designer's intent as to how the font should -align with elements below it. +void + +cairo_scaled_font_get_ctm () +

    double height;

    the recommended vertical distance between baselines when -setting consecutive lines of text with the font. This -is greater than ascent+descent by a -quantity known as the line spacing -or external leading. When space -is at a premium, most fonts can be set with only -a distance of ascent+descent between lines. +void + +cairo_scaled_font_get_scale_matrix () +

    double max_x_advance;

    the maximum distance in the X direction that -the origin is advanced for any glyph in the font. +cairo_font_type_t + +cairo_scaled_font_get_type () +

    double max_y_advance;

    the maximum distance in the Y direction that -the origin is advanced for any glyph in the font. -This will be zero for normal fonts used for horizontal -writing. (The scripts of East Asia are sometimes written -vertically.)unsigned int + +cairo_scaled_font_get_reference_count () +
    +cairo_status_t + +cairo_scaled_font_set_user_data () +
    +void * + +cairo_scaled_font_get_user_data () +
    -

    Since 1.0

    -
    -
    -

    cairo_scaled_font_extents ()

    -
    void                cairo_scaled_font_extents           (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_font_extents_t *extents);
    -

    -Gets the metrics for a cairo_scaled_font_t. -

    -
    +
    +

    Types and Values

    +
    --++ - - + + + + + + - - + +

    scaled_font :

    a cairo_scaled_font_t -typedefcairo_scaled_font_t
     cairo_font_extents_t

    extents :

    a cairo_font_extents_t which to store the retrieved extents. cairo_text_extents_t
    -

    Since 1.0

    -
    -
    -

    cairo_text_extents_t

    -
    typedef struct {
    -    double x_bearing;
    -    double y_bearing;
    -    double width;
    -    double height;
    -    double x_advance;
    -    double y_advance;
    -} cairo_text_extents_t;
    +
    +

    Object Hierarchy

    +
     
    -

    -The cairo_text_extents_t structure stores the extents of a single -glyph or a string of glyphs in user-space coordinates. Because text -extents are in user-space coordinates, they are mostly, but not -entirely, independent of the current transformation matrix. If you call -cairo_scale(cr, 2.0, 2.0), text will -be drawn twice as big, but the reported text extents will not be -doubled. They will change slightly due to hinting (so you can't -assume that metrics are independent of the transformation matrix), -but otherwise will remain unchanged. -

    -
    + +
    +

    Description

    +

    cairo_scaled_font_t represents a realization of a font face at a particular +size and transformation and a certain set of font options.

    +
    +
    +

    Functions

    +
    +

    cairo_scaled_font_create ()

    +
    cairo_scaled_font_t *
    +cairo_scaled_font_create (cairo_font_face_t *font_face,
    +                          const cairo_matrix_t *font_matrix,
    +                          const cairo_matrix_t *ctm,
    +                          const cairo_font_options_t *options);
    +

    Creates a cairo_scaled_font_t object from a font face and matrices that +describe the size of the font and the environment in which it will +be used.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + + +

    double x_bearing;

    the horizontal distance from the origin to the -leftmost part of the glyphs as drawn. Positive if the -glyphs lie entirely to the right of the origin.

    font_face

    a cairo_font_face_t

     

    double y_bearing;

    the vertical distance from the origin to the -topmost part of the glyphs as drawn. Positive only if the -glyphs lie completely below the origin; will usually be -negative.

    font_matrix

    font space to user space transformation matrix for the +font. In the simplest case of a N point font, this matrix is +just a scale by N, but it can also be used to shear the font +or stretch it unequally along the two axes. See +cairo_set_font_matrix().

     

    double width;

    width of the glyphs as drawn

    ctm

    user to device transformation matrix with which the font will +be used.

     

    double height;

    height of the glyphs as drawn

    options

    options to use when getting metrics for the font and +rendering with it.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_scaled_font_t. Destroy with +cairo_scaled_font_destroy()

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_scaled_font_reference ()

    +
    cairo_scaled_font_t *
    +cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font);
    +

    Increases the reference count on scaled_font + by one. This prevents +scaled_font + from being destroyed until a matching call to +cairo_scaled_font_destroy() is made.

    +

    The number of references to a cairo_scaled_font_t can be get using +cairo_scaled_font_get_reference_count().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    scaled_font

    a cairo_scaled_font_t, (may be NULL in which case +this function does nothing)

     
    +
    +
    +

    Returns

    +

    the referenced cairo_scaled_font_t

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_scaled_font_destroy ()

    +
    void
    +cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font);
    +

    Decreases the reference count on font + by one. If the result +is zero, then font + and all associated resources are freed. +See cairo_scaled_font_reference().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    scaled_font

    a cairo_scaled_font_t

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_scaled_font_status ()

    +
    cairo_status_t
    +cairo_scaled_font_status (cairo_scaled_font_t *scaled_font);
    +

    Checks whether an error has previously occurred for this +scaled_font.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    scaled_font

    a cairo_scaled_font_t

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or another error such as +CAIRO_STATUS_NO_MEMORY.

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_scaled_font_extents ()

    +
    void
    +cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font,
    +                           cairo_font_extents_t *extents);
    +

    Gets the metrics for a cairo_scaled_font_t.

    +
    +

    Parameters

    +
    +++++ + - - + + + - - + + +

    double x_advance;

    distance to advance in the X direction -after drawing these glyphs

    scaled_font

    a cairo_scaled_font_t

     

    double y_advance;

    distance to advance in the Y direction -after drawing these glyphs. Will typically be zero except -for vertical text layout as found in East-Asian languages.

    extents

    a cairo_font_extents_t which to store the retrieved extents.

     
    +

    Since 1.0


    -

    cairo_scaled_font_text_extents ()

    -
    void                cairo_scaled_font_text_extents      (cairo_scaled_font_t *scaled_font,
    -                                                         const char *utf8,
    -                                                         cairo_text_extents_t *extents);
    -

    -Gets the extents for a string of text. The extents describe a +

    cairo_scaled_font_text_extents ()

    +
    void
    +cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font,
    +                                const char *utf8,
    +                                cairo_text_extents_t *extents);
    +

    Gets the extents for a string of text. The extents describe a user-space rectangle that encloses the "inked" portion of the text -drawn at the origin (0,0) (as it would be drawn by cairo_show_text() +drawn at the origin (0,0) (as it would be drawn by cairo_show_text() if the cairo graphics state were set to the same font_face, -font_matrix, ctm, and font_options as scaled_font). Additionally, +font_matrix, ctm, and font_options as scaled_font +). Additionally, the x_advance and y_advance values indicate the amount by which the -current point would be advanced by cairo_show_text(). -

    -

    -Note that whitespace characters do not directly contribute to the +current point would be advanced by cairo_show_text().

    +

    Note that whitespace characters do not directly contribute to the size of the rectangle (extents.width and extents.height). They do contribute indirectly by changing the position of non-whitespace characters. In particular, trailing whitespace characters are likely to not affect the size of the rectangle, though they will -affect the x_advance and y_advance values. -

    -
    +affect the x_advance and y_advance values.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    utf8 :

    a NUL-terminated string of text, encoded in UTF-8

    utf8

    a NUL-terminated string of text, encoded in UTF-8

     

    extents :

    a cairo_text_extents_t which to store the retrieved extents.

    extents

    a cairo_text_extents_t which to store the retrieved extents.

     
    +

    Since 1.2


    -

    cairo_scaled_font_glyph_extents ()

    -
    void                cairo_scaled_font_glyph_extents     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         cairo_text_extents_t *extents);
    -

    -Gets the extents for an array of glyphs. The extents describe a +

    cairo_scaled_font_glyph_extents ()

    +
    void
    +cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font,
    +                                 const cairo_glyph_t *glyphs,
    +                                 int num_glyphs,
    +                                 cairo_text_extents_t *extents);
    +

    Gets the extents for an array of glyphs. The extents describe a user-space rectangle that encloses the "inked" portion of the -glyphs, (as they would be drawn by cairo_show_glyphs() if the cairo +glyphs, (as they would be drawn by cairo_show_glyphs() if the cairo graphics state were set to the same font_face, font_matrix, ctm, -and font_options as scaled_font). Additionally, the x_advance and +and font_options as scaled_font +). Additionally, the x_advance and y_advance values indicate the amount by which the current point -would be advanced by cairo_show_glyphs(). -

    -

    -Note that whitespace glyphs do not contribute to the size of the -rectangle (extents.width and extents.height). -

    -
    +would be advanced by cairo_show_glyphs().

    +

    Note that whitespace glyphs do not contribute to the size of the +rectangle (extents.width and extents.height).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    glyphs :

    an array of glyph IDs with X and Y offsets.

    glyphs

    an array of glyph IDs with X and Y offsets.

     

    num_glyphs :

    the number of glyphs in the glyphs array

    num_glyphs

    the number of glyphs in the glyphs +array

     

    extents :

    a cairo_text_extents_t which to store the retrieved extents.

    extents

    a cairo_text_extents_t which to store the retrieved extents.

     
    +

    Since 1.0


    -

    cairo_scaled_font_text_to_glyphs ()

    -
    cairo_status_t      cairo_scaled_font_text_to_glyphs    (cairo_scaled_font_t *scaled_font,
    -                                                         double x,
    -                                                         double y,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         cairo_glyph_t **glyphs,
    -                                                         int *num_glyphs,
    -                                                         cairo_text_cluster_t **clusters,
    -                                                         int *num_clusters,
    -                                                         cairo_text_cluster_flags_t *cluster_flags);
    -

    -Converts UTF-8 text to an array of glyphs, optionally with cluster -mapping, that can be used to render later using scaled_font. -

    -

    -If glyphs initially points to a non-NULL value, that array is used -as a glyph buffer, and num_glyphs should point to the number of glyph +

    cairo_scaled_font_text_to_glyphs ()

    +
    cairo_status_t
    +cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font,
    +                                  double x,
    +                                  double y,
    +                                  const char *utf8,
    +                                  int utf8_len,
    +                                  cairo_glyph_t **glyphs,
    +                                  int *num_glyphs,
    +                                  cairo_text_cluster_t **clusters,
    +                                  int *num_clusters,
    +                                  cairo_text_cluster_flags_t *cluster_flags);
    +

    Converts UTF-8 text to an array of glyphs, optionally with cluster +mapping, that can be used to render later using scaled_font +.

    +

    If glyphs + initially points to a non-NULL value, that array is used +as a glyph buffer, and num_glyphs + should point to the number of glyph entries available there. If the provided glyph array is too short for -the conversion, a new glyph array is allocated using cairo_glyph_allocate() -and placed in glyphs. Upon return, num_glyphs always contains the -number of generated glyphs. If the value glyphs points to has changed +the conversion, a new glyph array is allocated using cairo_glyph_allocate() +and placed in glyphs +. Upon return, num_glyphs + always contains the +number of generated glyphs. If the value glyphs + points to has changed after the call, the user is responsible for freeing the allocated glyph -array using cairo_glyph_free(). This may happen even if the provided -array was large enough. -

    -

    -If clusters is not NULL, num_clusters and cluster_flags should not be NULL, +array using cairo_glyph_free(). This may happen even if the provided +array was large enough.

    +

    If clusters + is not NULL, num_clusters + and cluster_flags + should not be NULL, and cluster mapping will be computed. The semantics of how cluster array allocation works is similar to the glyph array. That is, -if clusters initially points to a non-NULL value, that array is used -as a cluster buffer, and num_clusters should point to the number of cluster +if clusters + initially points to a non-NULL value, that array is used +as a cluster buffer, and num_clusters + should point to the number of cluster entries available there. If the provided cluster array is too short for -the conversion, a new cluster array is allocated using cairo_text_cluster_allocate() -and placed in clusters. Upon return, num_clusters always contains the -number of generated clusters. If the value clusters points at has changed +the conversion, a new cluster array is allocated using cairo_text_cluster_allocate() +and placed in clusters +. Upon return, num_clusters + always contains the +number of generated clusters. If the value clusters + points at has changed after the call, the user is responsible for freeing the allocated cluster -array using cairo_text_cluster_free(). This may happen even if the provided -array was large enough. -

    -

    -In the simplest case, glyphs and clusters can point to NULL initially -and a suitable array will be allocated. In code: -

    +array using cairo_text_cluster_free(). This may happen even if the provided +array was large enough.

    +

    In the simplest case, glyphs + and clusters + can point to NULL initially +and a suitable array will be allocated. In code:

     cairo_status_t status;
     
    @@ -584,11 +576,7 @@
         cairo_text_cluster_free (clusters);
     }
     
    -

    -

    -

    -If no cluster mapping is needed: -

    +

    If no cluster mapping is needed:

     cairo_status_t status;
     
    @@ -607,12 +595,8 @@
         cairo_glyph_free (glyphs);
     }
     
    -

    -

    -

    -If stack-based glyph and cluster arrays are to be used for small -arrays: -

    +

    If stack-based glyph and cluster arrays are to be used for small +arrays:

     cairo_status_t status;
     
    @@ -642,372 +626,605 @@
             cairo_text_cluster_free (clusters);
     }
     
    -

    -

    -

    -For details of how clusters, num_clusters, and cluster_flags map input -UTF-8 text to the output glyphs see cairo_show_text_glyphs(). -

    -

    -The output values can be readily passed to cairo_show_text_glyphs() -cairo_show_glyphs(), or related functions, assuming that the exact -same scaled_font is used for the operation. -

    -
    +

    For details of how clusters +, num_clusters +, and cluster_flags + map input +UTF-8 text to the output glyphs see cairo_show_text_glyphs().

    +

    The output values can be readily passed to cairo_show_text_glyphs() +cairo_show_glyphs(), or related functions, assuming that the exact +same scaled_font + is used for the operation.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - - - - - + + + - - + + + - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    x :

    X position to place first glyph

    x

    X position to place first glyph

     

    y :

    Y position to place first glyph

    y

    Y position to place first glyph

     

    utf8 :

    a string of text encoded in UTF-8

    utf8

    a string of text encoded in UTF-8

     

    utf8_len :

    length of utf8 in bytes, or -1 if it is NUL-terminated

    utf8_len

    length of utf8 +in bytes, or -1 if it is NUL-terminated

     

    glyphs :

    pointer to array of glyphs to fill

    glyphs

    pointer to array of glyphs to fill

     

    num_glyphs :

    pointer to number of glyphs

    clusters :

    pointer to array of cluster mapping information to fill, or NULL -

    num_glyphs

    pointer to number of glyphs

     

    num_clusters :

    pointer to number of clusters, or NULL -

    clusters

    pointer to array of cluster mapping information to fill, or NULL

     

    cluster_flags :

    pointer to location to store cluster flags corresponding to the -output clusters, or NULL -

    num_clusters

    pointer to number of clusters, or NULL

     

    Returns :

    -CAIRO_STATUS_SUCCESS upon success, or an error status -if the input values are wrong or if conversion failed. If the input -values are correct but the conversion failed, the error status is also -set on scaled_font.

    cluster_flags

    pointer to location to store cluster flags corresponding to the +output clusters +, or NULL

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS upon success, or an error status +if the input values are wrong or if conversion failed. If the input +values are correct but the conversion failed, the error status is also +set on scaled_font +.

    +

    +

    Since 1.8


    -

    cairo_scaled_font_get_font_face ()

    -
    cairo_font_face_t * cairo_scaled_font_get_font_face     (cairo_scaled_font_t *scaled_font);
    -

    -Gets the font face that this scaled font uses. This might be the -font face passed to cairo_scaled_font_create(), but this does not -hold true for all possible cases. -

    -
    +

    cairo_scaled_font_get_font_face ()

    +
    cairo_font_face_t *
    +cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font);
    +

    Gets the font face that this scaled font uses. This might be the +font face passed to cairo_scaled_font_create(), but this does not +hold true for all possible cases.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    scaled_font :

    a cairo_scaled_font_t -

    Returns :

    The cairo_font_face_t with which scaled_font was -created. This object is owned by cairo. To keep a reference to it, -you must call cairo_scaled_font_reference().

    scaled_font

    a cairo_scaled_font_t

     
    +
    +
    +

    Returns

    +

    The cairo_font_face_t with which scaled_font +was +created. This object is owned by cairo. To keep a reference to it, +you must call cairo_scaled_font_reference().

    +

    +

    Since 1.2


    -

    cairo_scaled_font_get_font_options ()

    -
    void                cairo_scaled_font_get_font_options  (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_font_options_t *options);
    -

    -Stores the font options with which scaled_font was created into -options. -

    -
    +

    cairo_scaled_font_get_font_options ()

    +
    void
    +cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font,
    +                                    cairo_font_options_t *options);
    +

    Stores the font options with which scaled_font + was created into +options +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    options :

    return value for the font options

    options

    return value for the font options

     
    +

    Since 1.2


    -

    cairo_scaled_font_get_font_matrix ()

    -
    void                cairo_scaled_font_get_font_matrix   (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *font_matrix);
    -

    -Stores the font matrix with which scaled_font was created into -matrix. -

    -
    +

    cairo_scaled_font_get_font_matrix ()

    +
    void
    +cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font,
    +                                   cairo_matrix_t *font_matrix);
    +

    Stores the font matrix with which scaled_font + was created into +matrix +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    font_matrix :

    return value for the matrix

    font_matrix

    return value for the matrix

     
    +

    Since 1.2


    -

    cairo_scaled_font_get_ctm ()

    -
    void                cairo_scaled_font_get_ctm           (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *ctm);
    -

    -Stores the CTM with which scaled_font was created into ctm. +

    cairo_scaled_font_get_ctm ()

    +
    void
    +cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font,
    +                           cairo_matrix_t *ctm);
    +

    Stores the CTM with which scaled_font + was created into ctm +. Note that the translation offsets (x0, y0) of the CTM are ignored -by cairo_scaled_font_create(). So, the matrix this -function returns always has 0,0 as x0,y0. -

    -
    +by cairo_scaled_font_create(). So, the matrix this +function returns always has 0,0 as x0,y0.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    ctm :

    return value for the CTM

    ctm

    return value for the CTM

     
    +

    Since 1.2


    -

    cairo_scaled_font_get_scale_matrix ()

    -
    void                cairo_scaled_font_get_scale_matrix  (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *scale_matrix);
    -

    -Stores the scale matrix of scaled_font into matrix. +

    cairo_scaled_font_get_scale_matrix ()

    +
    void
    +cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font,
    +                                    cairo_matrix_t *scale_matrix);
    +

    Stores the scale matrix of scaled_font + into matrix +. The scale matrix is product of the font matrix and the ctm associated with the scaled font, and hence is the matrix mapping from -font space to device space. -

    -
    +font space to device space.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    scale_matrix :

    return value for the matrix

    scale_matrix

    return value for the matrix

     
    +

    Since 1.8


    -

    cairo_scaled_font_get_type ()

    -
    cairo_font_type_t   cairo_scaled_font_get_type          (cairo_scaled_font_t *scaled_font);
    -

    -This function returns the type of the backend used to create +

    cairo_scaled_font_get_type ()

    +
    cairo_font_type_t
    +cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font);
    +

    This function returns the type of the backend used to create a scaled font. See cairo_font_type_t for available types. -However, this function never returns CAIRO_FONT_TYPE_TOY. -

    -
    +However, this function never returns CAIRO_FONT_TYPE_TOY.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    scaled_font

    a cairo_scaled_font_t

     
    +
    +
    +

    Returns

    +

    The type of scaled_font +.

    +

    +
    +

    Since 1.2

    + +
    +
    +

    cairo_scaled_font_get_reference_count ()

    +
    unsigned int
    +cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font);
    +

    Returns the current reference count of scaled_font +.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    scaled_font

    a cairo_scaled_font_t

     
    +
    +
    +

    Returns

    +

    the current reference count of scaled_font +. If the +object is a nil object, 0 will be returned.

    +

    +
    +

    Since 1.4

    +
    +
    +
    +

    cairo_scaled_font_set_user_data ()

    +
    cairo_status_t
    +cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font,
    +                                 const cairo_user_data_key_t *key,
    +                                 void *user_data,
    +                                 cairo_destroy_func_t destroy);
    +

    Attach user data to scaled_font +. To remove user data from a surface, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + + + + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    user_data

    the user data to attach to the cairo_scaled_font_t

     

    Returns :

    The type of scaled_font.

    destroy

    a cairo_destroy_func_t which will be called when the +cairo_t is destroyed or when new user data is attached using the +same key.

     
    -

    Since 1.2

    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +
    +

    Since 1.4


    -

    cairo_scaled_font_get_reference_count ()

    -
    unsigned int        cairo_scaled_font_get_reference_count
    -                                                        (cairo_scaled_font_t *scaled_font);
    -

    -Returns the current reference count of scaled_font. -

    -
    +

    cairo_scaled_font_get_user_data ()

    +
    void *
    +cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font,
    +                                 const cairo_user_data_key_t *key);
    +

    Return user data previously attached to scaled_font + using the +specified key. If no user data has been attached with the given +key this function returns NULL.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     

    Returns :

    the current reference count of scaled_font. If the -object is a nil object, 0 will be returned.

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +

    Since 1.4

    + +
    +

    Types and Values

    +
    +

    cairo_scaled_font_t

    +
    typedef struct _cairo_scaled_font cairo_scaled_font_t;
    +
    +

    A cairo_scaled_font_t is a font scaled to a particular size and device +resolution. A cairo_scaled_font_t is most useful for low-level font +usage where a library or application wants to cache a reference +to a scaled font to speed up the computation of metrics.

    +

    There are various types of scaled fonts, depending on the +font backend they use. The type of a +scaled font can be queried using cairo_scaled_font_get_type().

    +

    Memory management of cairo_scaled_font_t is done with +cairo_scaled_font_reference() and cairo_scaled_font_destroy().

    +

    Since 1.0

    +

    -

    cairo_scaled_font_set_user_data ()

    -
    cairo_status_t      cairo_scaled_font_set_user_data     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to scaled_font. To remove user data from a surface, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    cairo_font_extents_t

    +
    typedef struct {
    +    double ascent;
    +    double descent;
    +    double height;
    +    double max_x_advance;
    +    double max_y_advance;
    +} cairo_font_extents_t;
    +
    +

    The cairo_font_extents_t structure stores metric information for +a font. Values are given in the current user-space coordinate +system.

    +

    Because font metrics are in user-space coordinates, they are +mostly, but not entirely, independent of the current transformation +matrix. If you call cairo_scale(cr, 2.0, 2.0), +text will be drawn twice as big, but the reported text extents will +not be doubled. They will change slightly due to hinting (so you +can't assume that metrics are independent of the transformation +matrix), but otherwise will remain unchanged.

    +
    +

    Members

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + +

    scaled_font :

    a cairo_scaled_font_t -

    double ascent;

    the distance that the font extends above the baseline. +Note that this is not always exactly equal to the maximum +of the extents of all the glyphs in the font, but rather +is picked to express the font designer's intent as to +how the font should align with elements above it.

     

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    double descent;

    the distance that the font extends below the baseline. +This value is positive for typical fonts that include +portions below the baseline. Note that this is not always +exactly equal to the maximum of the extents of all the +glyphs in the font, but rather is picked to express the +font designer's intent as to how the font should +align with elements below it.

     

    user_data :

    the user data to attach to the cairo_scaled_font_t -

    double height;

    the recommended vertical distance between baselines when +setting consecutive lines of text with the font. This +is greater than ascent ++descent +by a +quantity known as the line spacing +or external leading. When space +is at a premium, most fonts can be set with only +a distance of ascent ++descent +between lines.

     

    destroy :

    a cairo_destroy_func_t which will be called when the -cairo_t is destroyed or when new user data is attached using the -same key.

    double max_x_advance;

    the maximum distance in the X direction that +the origin is advanced for any glyph in the font.

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    double max_y_advance;

    the maximum distance in the Y direction that +the origin is advanced for any glyph in the font. +This will be zero for normal fonts used for horizontal +writing. (The scripts of East Asia are sometimes written +vertically.)

     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_scaled_font_get_user_data ()

    -
    void *              cairo_scaled_font_get_user_data     (cairo_scaled_font_t *scaled_font,
    -                                                         const cairo_user_data_key_t *key);
    -

    -Return user data previously attached to scaled_font using the -specified key. If no user data has been attached with the given -key this function returns NULL. -

    -
    +

    cairo_text_extents_t

    +
    typedef struct {
    +    double x_bearing;
    +    double y_bearing;
    +    double width;
    +    double height;
    +    double x_advance;
    +    double y_advance;
    +} cairo_text_extents_t;
    +
    +

    The cairo_text_extents_t structure stores the extents of a single +glyph or a string of glyphs in user-space coordinates. Because text +extents are in user-space coordinates, they are mostly, but not +entirely, independent of the current transformation matrix. If you call +cairo_scale(cr, 2.0, 2.0), text will +be drawn twice as big, but the reported text extents will not be +doubled. They will change slightly due to hinting (so you can't +assume that metrics are independent of the transformation matrix), +but otherwise will remain unchanged.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + - - + + + - - + + + + + + + + + + + + +

    scaled_font :

    a cairo_scaled_font_t -

    double x_bearing;

    the horizontal distance from the origin to the +leftmost part of the glyphs as drawn. Positive if the +glyphs lie entirely to the right of the origin.

     

    double y_bearing;

    the vertical distance from the origin to the +topmost part of the glyphs as drawn. Positive only if the +glyphs lie completely below the origin; will usually be +negative.

     

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    double width;

    width of the glyphs as drawn

     

    Returns :

    the user data previously attached or NULL.

    double height;

    height of the glyphs as drawn

     

    double x_advance;

    distance to advance in the X direction +after drawing these glyphs

     

    double y_advance;

    distance to advance in the Y direction +after drawing these glyphs. Will typically be zero except +for vertical text layout as found in East-Asian languages.

     
    -

    Since 1.4

    +
    +

    Since 1.0

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-surface-t.html cairo-1.14.2/doc/public/html/cairo-cairo-surface-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-surface-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-surface-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_surface_t +Cairo: A Vector Graphics Library: cairo_surface_t - + - - - - - - - - - - + + + + + + +
    @@ -33,110 +30,344 @@

    cairo_surface_t

    cairo_surface_t — Base class for surfaces

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_MIME_SURFACE
    -#define             CAIRO_MIME_TYPE_JP2
    -#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,
    -                                                         cairo_content_t content,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_surface_create_similar_image  (cairo_surface_t *other,
    -                                                         cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_surface_create_for_rectangle  (cairo_surface_t *target,
    -                                                         double x,
    -                                                         double y,
    -                                                         double width,
    -                                                         double height);
    -cairo_surface_t *   cairo_surface_reference             (cairo_surface_t *surface);
    -void                cairo_surface_destroy               (cairo_surface_t *surface);
    -cairo_status_t      cairo_surface_status                (cairo_surface_t *surface);
    -void                cairo_surface_finish                (cairo_surface_t *surface);
    -void                cairo_surface_flush                 (cairo_surface_t *surface);
    -cairo_device_t *    cairo_surface_get_device            (cairo_surface_t *surface);
    -void                cairo_surface_get_font_options      (cairo_surface_t *surface,
    -                                                         cairo_font_options_t *options);
    -cairo_content_t     cairo_surface_get_content           (cairo_surface_t *surface);
    -void                cairo_surface_mark_dirty            (cairo_surface_t *surface);
    -void                cairo_surface_mark_dirty_rectangle  (cairo_surface_t *surface,
    -                                                         int x,
    -                                                         int y,
    -                                                         int width,
    -                                                         int height);
    -void                cairo_surface_set_device_offset     (cairo_surface_t *surface,
    -                                                         double x_offset,
    -                                                         double y_offset);
    -void                cairo_surface_get_device_offset     (cairo_surface_t *surface,
    -                                                         double *x_offset,
    -                                                         double *y_offset);
    -void                cairo_surface_set_fallback_resolution
    -                                                        (cairo_surface_t *surface,
    -                                                         double x_pixels_per_inch,
    -                                                         double y_pixels_per_inch);
    -void                cairo_surface_get_fallback_resolution
    -                                                        (cairo_surface_t *surface,
    -                                                         double *x_pixels_per_inch,
    -                                                         double *y_pixels_per_inch);
    -enum                cairo_surface_type_t;
    -cairo_surface_type_t cairo_surface_get_type             (cairo_surface_t *surface);
    -unsigned int        cairo_surface_get_reference_count   (cairo_surface_t *surface);
    -cairo_status_t      cairo_surface_set_user_data         (cairo_surface_t *surface,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_surface_get_user_data         (cairo_surface_t *surface,
    -                                                         const cairo_user_data_key_t *key);
    -void                cairo_surface_copy_page             (cairo_surface_t *surface);
    -void                cairo_surface_show_page             (cairo_surface_t *surface);
    -cairo_bool_t        cairo_surface_has_show_text_glyphs  (cairo_surface_t *surface);
    -cairo_status_t      cairo_surface_set_mime_data         (cairo_surface_t *surface,
    -                                                         const char *mime_type,
    -                                                         const unsigned char *data,
    -                                                         unsigned long  length,
    -                                                         cairo_destroy_func_t destroy,
    -                                                         void *closure);
    -void                cairo_surface_get_mime_data         (cairo_surface_t *surface,
    -                                                         const char *mime_type,
    -                                                         const unsigned char **data,
    -                                                         unsigned long *length);
    -cairo_bool_t        cairo_surface_supports_mime_type    (cairo_surface_t *surface,
    -                                                         const char *mime_type);
    -cairo_surface_t *   cairo_surface_map_to_image          (cairo_surface_t *surface,
    -                                                         const cairo_rectangle_int_t *extents);
    -void                cairo_surface_unmap_image           (cairo_surface_t *surface,
    -                                                         cairo_surface_t *image);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_surface_t * + +cairo_surface_create_similar () +
    +cairo_surface_t * + +cairo_surface_create_similar_image () +
    +cairo_surface_t * + +cairo_surface_create_for_rectangle () +
    +cairo_surface_t * + +cairo_surface_reference () +
    +void + +cairo_surface_destroy () +
    +cairo_status_t + +cairo_surface_status () +
    +void + +cairo_surface_finish () +
    +void + +cairo_surface_flush () +
    +cairo_device_t * + +cairo_surface_get_device () +
    +void + +cairo_surface_get_font_options () +
    +cairo_content_t + +cairo_surface_get_content () +
    +void + +cairo_surface_mark_dirty () +
    +void + +cairo_surface_mark_dirty_rectangle () +
    +void + +cairo_surface_set_device_offset () +
    +void + +cairo_surface_get_device_offset () +
    +void + +cairo_surface_get_device_scale () +
    +void + +cairo_surface_set_device_scale () +
    +void + +cairo_surface_set_fallback_resolution () +
    +void + +cairo_surface_get_fallback_resolution () +
    +cairo_surface_type_t + +cairo_surface_get_type () +
    unsigned int + +cairo_surface_get_reference_count () +
    +cairo_status_t + +cairo_surface_set_user_data () +
    +void * + +cairo_surface_get_user_data () +
    +void + +cairo_surface_copy_page () +
    +void + +cairo_surface_show_page () +
    +cairo_bool_t + +cairo_surface_has_show_text_glyphs () +
    +cairo_status_t + +cairo_surface_set_mime_data () +
    +void + +cairo_surface_get_mime_data () +
    +cairo_bool_t + +cairo_surface_supports_mime_type () +
    +cairo_surface_t * + +cairo_surface_map_to_image () +
    +void + +cairo_surface_unmap_image () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #defineCAIRO_HAS_MIME_SURFACE
    #defineCAIRO_MIME_TYPE_JBIG2
    #defineCAIRO_MIME_TYPE_JBIG2_GLOBAL
    #defineCAIRO_MIME_TYPE_JBIG2_GLOBAL_ID
    #defineCAIRO_MIME_TYPE_JP2
    #defineCAIRO_MIME_TYPE_JPEG
    #defineCAIRO_MIME_TYPE_PNG
    #defineCAIRO_MIME_TYPE_URI
    #defineCAIRO_MIME_TYPE_UNIQUE_ID
    typedefcairo_surface_t
    enumcairo_content_t
    enumcairo_surface_type_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -cairo_surface_t is the abstract type representing all different drawing +

    cairo_surface_t is the abstract type representing all different drawing targets that cairo can render to. The actual drawings are -performed using a cairo context. -

    -

    -A cairo surface is created by using backend-specific +performed using a cairo context.

    +

    A cairo surface is created by using backend-specific constructors, typically of the form -cairo_backend_surface_create(). -

    -

    -Most surface types allow accessing the surface without using Cairo +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 -cairo_surface_flush() before reading from or writing to the surface and that -you must use cairo_surface_mark_dirty() after modifying it. -

    +cairo_surface_flush() before reading from or writing to the surface and that +you must use cairo_surface_mark_dirty() after modifying it.

    -

    Example 1. Directly modifying an image surface

    +

    Example 1. Directly modifying an image surface

     void
     modify_image_surface (cairo_surface_t *surface)
    @@ -159,1459 +390,1684 @@
     }
     
    -


    -Note that for other surface types it might be necessary to acquire the -surface's device first. See cairo_device_acquire() for a discussion of -devices. -

    +

    Note that for other surface types it might be necessary to acquire the +surface's device first. See cairo_device_acquire() for a discussion of +devices.

    -

    Details

    -
    -

    CAIRO_HAS_MIME_SURFACE

    -
    #define CAIRO_HAS_MIME_SURFACE 1
    -
    -

    -

    -
    -
    -
    -

    CAIRO_MIME_TYPE_JP2

    -
    #define CAIRO_MIME_TYPE_JP2 "image/jp2"
    -
    -

    -The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1). -

    -

    Since 1.10

    -
    -
    -
    -

    CAIRO_MIME_TYPE_JPEG

    -
    #define CAIRO_MIME_TYPE_JPEG "image/jpeg"
    -
    -

    -The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1). -

    -

    Since 1.10

    -
    -
    -
    -

    CAIRO_MIME_TYPE_PNG

    -
    #define CAIRO_MIME_TYPE_PNG "image/png"
    -
    -

    -The Portable Network Graphics image file format (ISO/IEC 15948). -

    -

    Since 1.10

    -
    -
    -
    -

    CAIRO_MIME_TYPE_URI

    -
    #define CAIRO_MIME_TYPE_URI "text/x-uri"
    -
    -

    -URI for an image file (unofficial MIME type). -

    -

    Since 1.10

    -
    -
    -
    -

    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

    -
    typedef struct _cairo_surface cairo_surface_t;
    -
    -

    -A cairo_surface_t represents an image, either as the destination -of a drawing operation or as source when drawing onto another -surface. To draw to a cairo_surface_t, create a cairo context -with the surface as the target, using cairo_create(). -

    -

    -There are different subtypes of cairo_surface_t for -different drawing backends; for example, cairo_image_surface_create() -creates a bitmap image in memory. -The type of a surface can be queried with cairo_surface_get_type(). -

    -

    -The initial contents of a surface after creation depend upon the manner -of its creation. If cairo creates the surface and backing storage for -the user, it will be initially cleared; for example, -cairo_image_surface_create() and cairo_surface_create_similar(). -Alternatively, if the user passes in a reference to some backing storage -and asks cairo to wrap that in a cairo_surface_t, then the contents are -not modified; for example, cairo_image_surface_create_for_data() and -cairo_xlib_surface_create(). -

    -

    -Memory management of cairo_surface_t is done with -cairo_surface_reference() and cairo_surface_destroy(). -

    -

    Since 1.0

    -
    -
    -
    -

    enum cairo_content_t

    -
    typedef enum {
    -    CAIRO_CONTENT_COLOR		= 0x1000,
    -    CAIRO_CONTENT_ALPHA		= 0x2000,
    -    CAIRO_CONTENT_COLOR_ALPHA = 0x3000
    -} cairo_content_t;
    -
    -

    -cairo_content_t is used to describe the content that a surface will -contain, whether color information, alpha information (translucence -vs. opacity), or both. -

    -

    -Note: The large values here are designed to keep cairo_content_t -values distinct from cairo_format_t values so that the -implementation can detect the error if users confuse the two types. -

    -
    ---- - - - - - - - - - - - - - - -

    CAIRO_CONTENT_COLOR

    The surface will hold color content only. (Since 1.0) -

    CAIRO_CONTENT_ALPHA

    The surface will hold alpha content only. (Since 1.0) -

    CAIRO_CONTENT_COLOR_ALPHA

    The surface will hold color and alpha content. (Since 1.0) -
    -

    Since 1.0

    -
    -
    +

    Functions

    -

    cairo_surface_create_similar ()

    -
    cairo_surface_t *   cairo_surface_create_similar        (cairo_surface_t *other,
    -                                                         cairo_content_t content,
    -                                                         int width,
    -                                                         int height);
    -

    -Create a new surface that is as compatible as possible with an +

    cairo_surface_create_similar ()

    +
    cairo_surface_t *
    +cairo_surface_create_similar (cairo_surface_t *other,
    +                              cairo_content_t content,
    +                              int width,
    +                              int height);
    +

    Create a new surface that is as compatible as possible with an existing surface. For example the new surface will have the same -fallback resolution and font options as other. Generally, the new -surface will also use the same backend as other, unless that is +fallback resolution and font options as other +. Generally, the new +surface will also use the same backend as other +, unless that is not possible for some reason. The type of the returned surface may -be examined with cairo_surface_get_type(). -

    -

    -Initially the surface contents are all 0 (transparent if contents -have transparency, black otherwise.) -

    -

    -Use cairo_surface_create_similar_image() if you need an image surface -which can be painted quickly to the target surface. -

    -
    +be examined with cairo_surface_get_type().

    +

    Initially the surface contents are all 0 (transparent if contents +have transparency, black otherwise.)

    +

    Use cairo_surface_create_similar_image() if you need an image surface +which can be painted quickly to the target surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    other :

    an existing surface used to select the backend of the new surface

    other

    an existing surface used to select the backend of the new surface

     

    content :

    the content for the new surface

    content

    the content for the new surface

     

    width :

    width of the new surface, (in device-space units)

    width

    width of the new surface, (in device-space units)

     

    height :

    height of the new surface (in device-space units)

    Returns :

    a pointer to the newly allocated surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs.

    height

    height of the new surface (in device-space units)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly allocated surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs.

    +

    +

    Since 1.0


    -

    cairo_surface_create_similar_image ()

    -
    cairo_surface_t *   cairo_surface_create_similar_image  (cairo_surface_t *other,
    -                                                         cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -

    -Create a new image surface that is as compatible as possible for uploading +

    cairo_surface_create_similar_image ()

    +
    cairo_surface_t *
    +cairo_surface_create_similar_image (cairo_surface_t *other,
    +                                    cairo_format_t format,
    +                                    int width,
    +                                    int height);
    +

    Create a new image surface that is as compatible as possible for uploading to and the use in conjunction with an existing surface. However, this surface -can still be used like any normal image surface. -

    -

    -Initially the surface contents are all 0 (transparent if contents -have transparency, black otherwise.) -

    -

    -Use cairo_surface_create_similar() if you don't need an image surface. -

    -
    +can still be used like any normal image surface.

    +

    Initially the surface contents are all 0 (transparent if contents +have transparency, black otherwise.)

    +

    Use cairo_surface_create_similar() if you don't need an image surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    other :

    an existing surface used to select the preference of the new surface

    other

    an existing surface used to select the preference of the new surface

     

    format :

    the format for the new surface

    format

    the format for the new surface

     

    width :

    width of the new surface, (in device-space units)

    width

    width of the new surface, (in device-space units)

     

    height :

    height of the new surface (in device-space units)

    Returns :

    a pointer to the newly allocated image surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs.

    height

    height of the new surface (in device-space units)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly allocated image surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs.

    +

    +

    Since 1.12


    -

    cairo_surface_create_for_rectangle ()

    -
    cairo_surface_t *   cairo_surface_create_for_rectangle  (cairo_surface_t *target,
    -                                                         double x,
    -                                                         double y,
    -                                                         double width,
    -                                                         double height);
    -

    -Create a new surface that is a rectangle within the target surface. +

    cairo_surface_create_for_rectangle ()

    +
    cairo_surface_t *
    +cairo_surface_create_for_rectangle (cairo_surface_t *target,
    +                                    double x,
    +                                    double y,
    +                                    double width,
    +                                    double height);
    +

    Create a new surface that is a rectangle within the target surface. All operations drawn to this surface are then clipped and translated onto the target surface. Nothing drawn via this sub-surface outside of its bounds is drawn onto the target surface, making this a useful method for passing constrained child surfaces to library routines that draw directly onto the parent surface, i.e. with no further backend allocations, -double buffering or copies. -

    -

    -

    -
    -

    Note

    -

    The semantics of subsurfaces have not been finalized yet +double buffering or copies.

    +

    The semantics of subsurfaces have not been finalized yet unless the rectangle is in full device units, is contained within the extents of the target surface, and the target or subsurface's -device transforms are not changed.

    -
    -

    -

    -
    +device transforms are not changed.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + + - - + + +

    target :

    an existing surface for which the sub-surface will point to

    x :

    the x-origin of the sub-surface from the top-left of the target surface (in device-space units)

    target

    an existing surface for which the sub-surface will point to

     

    y :

    the y-origin of the sub-surface from the top-left of the target surface (in device-space units)

    x

    the x-origin of the sub-surface from the top-left of the target surface (in device-space units)

     

    width :

    width of the sub-surface (in device-space units)

    y

    the y-origin of the sub-surface from the top-left of the target surface (in device-space units)

     

    height :

    height of the sub-surface (in device-space units)

    width

    width of the sub-surface (in device-space units)

     

    Returns :

    a pointer to the newly allocated surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs.

    height

    height of the sub-surface (in device-space units)

     
    -

    Since 1.10

    -
    -
    -

    cairo_surface_reference ()

    -
    cairo_surface_t *   cairo_surface_reference             (cairo_surface_t *surface);
    -

    -Increases the reference count on surface by one. This prevents -surface from being destroyed until a matching call to -cairo_surface_destroy() is made. -

    -

    -The number of references to a cairo_surface_t can be get using -cairo_surface_get_reference_count(). -

    -
    ---- - - - - - - - - - - +
    +

    Returns

    +

    a pointer to the newly allocated surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs.

    +

    +
    +

    Since 1.10

    + +
    +
    +

    cairo_surface_reference ()

    +
    cairo_surface_t *
    +cairo_surface_reference (cairo_surface_t *surface);
    +

    Increases the reference count on surface + by one. This prevents +surface + from being destroyed until a matching call to +cairo_surface_destroy() is made.

    +

    The number of references to a cairo_surface_t can be get using +cairo_surface_get_reference_count().

    +
    +

    Parameters

    +

    surface :

    a cairo_surface_t -

    Returns :

    the referenced cairo_surface_t.
    +++++ + + + + +

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    the referenced cairo_surface_t.

    +

    +

    Since 1.0


    -

    cairo_surface_destroy ()

    -
    void                cairo_surface_destroy               (cairo_surface_t *surface);
    -

    -Decreases the reference count on surface by one. If the result is -zero, then surface and all associated resources are freed. See -cairo_surface_reference(). -

    -
    ---+

    cairo_surface_destroy ()

    +
    void
    +cairo_surface_destroy (cairo_surface_t *surface);
    +

    Decreases the reference count on surface + by one. If the result is +zero, then surface + and all associated resources are freed. See +cairo_surface_reference().

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     
    +

    Since 1.0


    -

    cairo_surface_status ()

    -
    cairo_status_t      cairo_surface_status                (cairo_surface_t *surface);
    -

    -Checks whether an error has previously occurred for this -surface. -

    -
    ---+

    cairo_surface_status ()

    +
    cairo_status_t
    +cairo_surface_status (cairo_surface_t *surface);
    +

    Checks whether an error has previously occurred for this +surface.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    -CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NULL_POINTER, +

    surface

    a cairo_surface_t

     
    +
    + +CAIRO_STATUS_INVALID_VISUAL.

    +

    +

    Since 1.0


    -

    cairo_surface_finish ()

    -
    void                cairo_surface_finish                (cairo_surface_t *surface);
    -

    -This function finishes the surface and drops all references to +

    cairo_surface_finish ()

    +
    void
    +cairo_surface_finish (cairo_surface_t *surface);
    +

    This function finishes the surface and drops all references to external resources. For example, for the Xlib backend it means that cairo will no longer access the drawable, which can be freed. -After calling cairo_surface_finish() the only valid operations on a +After calling cairo_surface_finish() the only valid operations on a surface are getting and setting user, referencing and destroying, and flushing and finishing it. Further drawing to the surface will not affect the surface but will instead trigger a CAIRO_STATUS_SURFACE_FINISHED -error. -

    -

    -When the last call to cairo_surface_destroy() decreases the -reference count to zero, cairo will call cairo_surface_finish() if +error.

    +

    When the last call to cairo_surface_destroy() decreases the +reference count to zero, cairo will call cairo_surface_finish() if it hasn't been called already, before freeing the resources -associated with the surface. -

    -
    ---+associated with the surface.

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    the cairo_surface_t to finish

    surface

    the cairo_surface_t to finish

     
    +

    Since 1.0


    -

    cairo_surface_flush ()

    -
    void                cairo_surface_flush                 (cairo_surface_t *surface);
    -

    -Do any pending drawing for the surface and also restore any +

    cairo_surface_flush ()

    +
    void
    +cairo_surface_flush (cairo_surface_t *surface);
    +

    Do any pending drawing for the surface and also restore any temporary modifications cairo has made to the surface's state. This function must be called before switching from drawing on the surface with cairo to drawing on it directly with native APIs. If the surface doesn't support direct access, -then this function does nothing. -

    -
    ---+then this function does nothing.

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     
    +

    Since 1.0


    -

    cairo_surface_get_device ()

    -
    cairo_device_t *    cairo_surface_get_device            (cairo_surface_t *surface);
    -

    -This function returns the device for a surface. -See cairo_device_t. -

    -
    ---+

    cairo_surface_get_device ()

    +
    cairo_device_t *
    +cairo_surface_get_device (cairo_surface_t *surface);
    +

    This function returns the device for a surface +. +See cairo_device_t.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    The device for surface or NULL if the surface does -not have an associated device.

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    The device for surface +or NULL if the surface does +not have an associated device.

    +

    +

    Since 1.10


    -

    cairo_surface_get_font_options ()

    -
    void                cairo_surface_get_font_options      (cairo_surface_t *surface,
    -                                                         cairo_font_options_t *options);
    -

    -Retrieves the default font rendering options for the surface. +

    cairo_surface_get_font_options ()

    +
    void
    +cairo_surface_get_font_options (cairo_surface_t *surface,
    +                                cairo_font_options_t *options);
    +

    Retrieves the default font rendering options for the surface. This allows display surfaces to report the correct subpixel order for rendering on them, print surfaces to disable hinting of metrics and so forth. The result can then be used with -cairo_scaled_font_create(). -

    -
    +cairo_scaled_font_create().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    options :

    a cairo_font_options_t object into which to store -the retrieved options. All existing values are overwritten

    options

    a cairo_font_options_t object into which to store +the retrieved options. All existing values are overwritten

     
    +

    Since 1.0


    -

    cairo_surface_get_content ()

    -
    cairo_content_t     cairo_surface_get_content           (cairo_surface_t *surface);
    -

    -This function returns the content type of surface which indicates +

    cairo_surface_get_content ()

    +
    cairo_content_t
    +cairo_surface_get_content (cairo_surface_t *surface);
    +

    This function returns the content type of surface + which indicates whether the surface contains color and/or alpha information. See -cairo_content_t. -

    -
    ---+cairo_content_t.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    The content type of surface.

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    The content type of surface +.

    +

    +

    Since 1.2


    -

    cairo_surface_mark_dirty ()

    -
    void                cairo_surface_mark_dirty            (cairo_surface_t *surface);
    -

    -Tells cairo that drawing has been done to surface using means other +

    cairo_surface_mark_dirty ()

    +
    void
    +cairo_surface_mark_dirty (cairo_surface_t *surface);
    +

    Tells cairo that drawing has been done to surface using means other than cairo, and that cairo should reread any cached areas. Note -that you must call cairo_surface_flush() before doing such drawing. -

    -
    ---+that you must call cairo_surface_flush() before doing such drawing.

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     
    +

    Since 1.0


    -

    cairo_surface_mark_dirty_rectangle ()

    -
    void                cairo_surface_mark_dirty_rectangle  (cairo_surface_t *surface,
    -                                                         int x,
    -                                                         int y,
    -                                                         int width,
    -                                                         int height);
    -

    -Like cairo_surface_mark_dirty(), but drawing has been done only to +

    cairo_surface_mark_dirty_rectangle ()

    +
    void
    +cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface,
    +                                    int x,
    +                                    int y,
    +                                    int width,
    +                                    int height);
    +

    Like cairo_surface_mark_dirty(), but drawing has been done only to the specified rectangle, so that cairo can retain cached contents -for other parts of the surface. -

    -

    -Any cached clip set on the surface will be reset by this function, +for other parts of the surface.

    +

    Any cached clip set on the surface will be reset by this function, to make sure that future cairo calls have the clip set that they -expect. -

    -
    +expect.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x :

    X coordinate of dirty rectangle

    x

    X coordinate of dirty rectangle

     

    y :

    Y coordinate of dirty rectangle

    y

    Y coordinate of dirty rectangle

     

    width :

    width of dirty rectangle

    width

    width of dirty rectangle

     

    height :

    height of dirty rectangle

    height

    height of dirty rectangle

     
    +

    Since 1.0


    -

    cairo_surface_set_device_offset ()

    -
    void                cairo_surface_set_device_offset     (cairo_surface_t *surface,
    -                                                         double x_offset,
    -                                                         double y_offset);
    -

    -Sets an offset that is added to the device coordinates determined -by the CTM when drawing to surface. One use case for this function +

    cairo_surface_set_device_offset ()

    +
    void
    +cairo_surface_set_device_offset (cairo_surface_t *surface,
    +                                 double x_offset,
    +                                 double y_offset);
    +

    Sets an offset that is added to the device coordinates determined +by the CTM when drawing to surface +. One use case for this function is when we want to create a cairo_surface_t that redirects drawing for a portion of an onscreen surface to an offscreen surface in a way that is completely invisible to the user of the cairo -API. Setting a transformation via cairo_translate() isn't +API. Setting a transformation via cairo_translate() isn't sufficient to do this, since functions like -cairo_device_to_user() will expose the hidden offset. -

    -

    -Note that the offset affects drawing to the surface as well as -using the surface in a source pattern. -

    -
    +cairo_device_to_user() will expose the hidden offset.

    +

    Note that the offset affects drawing to the surface as well as +using the surface in a source pattern.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x_offset :

    the offset in the X direction, in device units

    x_offset

    the offset in the X direction, in device units

     

    y_offset :

    the offset in the Y direction, in device units

    y_offset

    the offset in the Y direction, in device units

     
    +

    Since 1.0


    -

    cairo_surface_get_device_offset ()

    -
    void                cairo_surface_get_device_offset     (cairo_surface_t *surface,
    -                                                         double *x_offset,
    -                                                         double *y_offset);
    -

    -This function returns the previous device offset set by -cairo_surface_set_device_offset(). -

    -
    +

    cairo_surface_get_device_offset ()

    +
    void
    +cairo_surface_get_device_offset (cairo_surface_t *surface,
    +                                 double *x_offset,
    +                                 double *y_offset);
    +

    This function returns the previous device offset set by +cairo_surface_set_device_offset().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x_offset :

    the offset in the X direction, in device units

    x_offset

    the offset in the X direction, in device units

     

    y_offset :

    the offset in the Y direction, in device units

    y_offset

    the offset in the Y direction, in device units

     
    +

    Since 1.2


    -

    cairo_surface_set_fallback_resolution ()

    -
    void                cairo_surface_set_fallback_resolution
    -                                                        (cairo_surface_t *surface,
    -                                                         double x_pixels_per_inch,
    -                                                         double y_pixels_per_inch);
    -

    -Set the horizontal and vertical resolution for image fallbacks. -

    -

    -When certain operations aren't supported natively by a backend, -cairo will fallback by rendering operations to an image and then -overlaying that image onto the output. For backends that are -natively vector-oriented, this function can be used to set the -resolution used for these image fallbacks, (larger values will -result in more detailed images, but also larger file sizes). -

    -

    -Some examples of natively vector-oriented backends are the ps, pdf, -and svg backends. -

    -

    -For backends that are natively raster-oriented, image fallbacks are -still possible, but they are always performed at the native -device resolution. So this function has no effect on those -backends. -

    -

    -Note: The fallback resolution only takes effect at the time of -completing a page (with cairo_show_page() or cairo_copy_page()) so -there is currently no way to have more than one fallback resolution -in effect on a single page. -

    -

    -The default fallback resoultion is 300 pixels per inch in both -dimensions. -

    -
    +

    cairo_surface_get_device_scale ()

    +
    void
    +cairo_surface_get_device_scale (cairo_surface_t *surface,
    +                                double *x_scale,
    +                                double *y_scale);
    +

    This function returns the previous device offset set by +cairo_surface_set_device_scale().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x_pixels_per_inch :

    horizontal setting for pixels per inch

    x_scale

    the scale in the X direction, in device units

     

    y_pixels_per_inch :

    vertical setting for pixels per inch

    y_scale

    the scale in the Y direction, in device units

     
    -

    Since 1.2

    +
    +

    Since 1.14


    -

    cairo_surface_get_fallback_resolution ()

    -
    void                cairo_surface_get_fallback_resolution
    -                                                        (cairo_surface_t *surface,
    -                                                         double *x_pixels_per_inch,
    -                                                         double *y_pixels_per_inch);
    -

    -This function returns the previous fallback resolution set by -cairo_surface_set_fallback_resolution(), or default fallback -resolution if never set. -

    -
    +

    cairo_surface_set_device_scale ()

    +
    void
    +cairo_surface_set_device_scale (cairo_surface_t *surface,
    +                                double x_scale,
    +                                double y_scale);
    +

    Sets a scale that is multiplied to the device coordinates determined +by the CTM when drawing to surface +. One common use for this is to +render to very high resolution display devices at a scale factor, so +that code that assumes 1 pixel will be a certain size will still work. +Setting a transformation via cairo_translate() isn't +sufficient to do this, since functions like +cairo_device_to_user() will expose the hidden scale.

    +

    Note that the scale affects drawing to the surface as well as +using the surface in a source pattern.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x_pixels_per_inch :

    horizontal pixels per inch

    x_scale

    a scale factor in the X direction

     

    y_pixels_per_inch :

    vertical pixels per inch

    y_scale

    a scale factor in the Y direction

     
    -

    Since 1.8

    +
    +

    Since 1.14


    -

    enum cairo_surface_type_t

    -
    typedef enum {
    -    CAIRO_SURFACE_TYPE_IMAGE,
    -    CAIRO_SURFACE_TYPE_PDF,
    -    CAIRO_SURFACE_TYPE_PS,
    -    CAIRO_SURFACE_TYPE_XLIB,
    -    CAIRO_SURFACE_TYPE_XCB,
    -    CAIRO_SURFACE_TYPE_GLITZ,
    -    CAIRO_SURFACE_TYPE_QUARTZ,
    -    CAIRO_SURFACE_TYPE_WIN32,
    -    CAIRO_SURFACE_TYPE_BEOS,
    -    CAIRO_SURFACE_TYPE_DIRECTFB,
    -    CAIRO_SURFACE_TYPE_SVG,
    -    CAIRO_SURFACE_TYPE_OS2,
    -    CAIRO_SURFACE_TYPE_WIN32_PRINTING,
    -    CAIRO_SURFACE_TYPE_QUARTZ_IMAGE,
    -    CAIRO_SURFACE_TYPE_SCRIPT,
    -    CAIRO_SURFACE_TYPE_QT,
    -    CAIRO_SURFACE_TYPE_RECORDING,
    -    CAIRO_SURFACE_TYPE_VG,
    -    CAIRO_SURFACE_TYPE_GL,
    -    CAIRO_SURFACE_TYPE_DRM,
    -    CAIRO_SURFACE_TYPE_TEE,
    -    CAIRO_SURFACE_TYPE_XML,
    -    CAIRO_SURFACE_TYPE_SKIA,
    -    CAIRO_SURFACE_TYPE_SUBSURFACE,
    -    CAIRO_SURFACE_TYPE_COGL
    -} cairo_surface_type_t;
    -
    -

    -cairo_surface_type_t is used to describe the type of a given -surface. The surface types are also known as "backends" or "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(), -(though see cairo_surface_create_similar() as well). -

    -

    -The surface type can be queried with cairo_surface_get_type() -

    -

    -The various cairo_surface_t functions can be used with surfaces of -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(). -

    -

    -The behavior of calling a type-specific function with a surface of -the wrong type is undefined. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_surface_set_fallback_resolution ()

    +
    void
    +cairo_surface_set_fallback_resolution (cairo_surface_t *surface,
    +                                       double x_pixels_per_inch,
    +                                       double y_pixels_per_inch);
    +

    Set the horizontal and vertical resolution for image fallbacks.

    +

    When certain operations aren't supported natively by a backend, +cairo will fallback by rendering operations to an image and then +overlaying that image onto the output. For backends that are +natively vector-oriented, this function can be used to set the +resolution used for these image fallbacks, (larger values will +result in more detailed images, but also larger file sizes).

    +

    Some examples of natively vector-oriented backends are the ps, pdf, +and svg backends.

    +

    For backends that are natively raster-oriented, image fallbacks are +still possible, but they are always performed at the native +device resolution. So this function has no effect on those +backends.

    +

    Note: The fallback resolution only takes effect at the time of +completing a page (with cairo_show_page() or cairo_copy_page()) so +there is currently no way to have more than one fallback resolution +in effect on a single page.

    +

    The default fallback resoultion is 300 pixels per inch in both +dimensions.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - + + + - - + + +

    CAIRO_SURFACE_TYPE_IMAGE

    The surface is of type image, since 1.2 -

    CAIRO_SURFACE_TYPE_PDF

    The surface is of type pdf, since 1.2 -

    CAIRO_SURFACE_TYPE_PS

    The surface is of type ps, since 1.2 -

    CAIRO_SURFACE_TYPE_XLIB

    The surface is of type xlib, since 1.2 -

    CAIRO_SURFACE_TYPE_XCB

    The surface is of type xcb, since 1.2 -

    CAIRO_SURFACE_TYPE_GLITZ

    The surface is of type glitz, since 1.2 -

    CAIRO_SURFACE_TYPE_QUARTZ

    The surface is of type quartz, since 1.2 -

    CAIRO_SURFACE_TYPE_WIN32

    The surface is of type win32, since 1.2 -

    CAIRO_SURFACE_TYPE_BEOS

    The surface is of type beos, since 1.2 -

    CAIRO_SURFACE_TYPE_DIRECTFB

    The surface is of type directfb, since 1.2 -

    CAIRO_SURFACE_TYPE_SVG

    The surface is of type svg, since 1.2 -

    CAIRO_SURFACE_TYPE_OS2

    The surface is of type os2, since 1.4 -

    CAIRO_SURFACE_TYPE_WIN32_PRINTING

    The surface is a win32 printing surface, since 1.6 -

    CAIRO_SURFACE_TYPE_QUARTZ_IMAGE

    The surface is of type quartz_image, since 1.6 -

    CAIRO_SURFACE_TYPE_SCRIPT

    The surface is of type script, since 1.10 -

    CAIRO_SURFACE_TYPE_QT

    The surface is of type Qt, since 1.10 -

    CAIRO_SURFACE_TYPE_RECORDING

    The surface is of type recording, since 1.10 -

    CAIRO_SURFACE_TYPE_VG

    The surface is a OpenVG surface, since 1.10 -

    CAIRO_SURFACE_TYPE_GL

    The surface is of type OpenGL, since 1.10 -

    CAIRO_SURFACE_TYPE_DRM

    The surface is of type Direct Render Manager, since 1.10 -

    surface

    a cairo_surface_t

     

    CAIRO_SURFACE_TYPE_TEE

    The surface is of type 'tee' (a multiplexing surface), since 1.10 -

    CAIRO_SURFACE_TYPE_XML

    The surface is of type XML (for debugging), since 1.10 -

    CAIRO_SURFACE_TYPE_SKIA

    The surface is of type Skia, since 1.10 -

    CAIRO_SURFACE_TYPE_SUBSURFACE

    The surface is a subsurface created with - cairo_surface_create_for_rectangle(), since 1.10 -

    x_pixels_per_inch

    horizontal setting for pixels per inch

     

    CAIRO_SURFACE_TYPE_COGL

    This surface is of type Cogl, since 1.12 -

    y_pixels_per_inch

    vertical setting for pixels per inch

     
    +

    Since 1.2


    -

    cairo_surface_get_type ()

    -
    cairo_surface_type_t cairo_surface_get_type             (cairo_surface_t *surface);
    -

    -This function returns the type of the backend used to create -a surface. See cairo_surface_type_t for available types. -

    -
    +

    cairo_surface_get_fallback_resolution ()

    +
    void
    +cairo_surface_get_fallback_resolution (cairo_surface_t *surface,
    +                                       double *x_pixels_per_inch,
    +                                       double *y_pixels_per_inch);
    +

    This function returns the previous fallback resolution set by +cairo_surface_set_fallback_resolution(), or default fallback +resolution if never set.

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    x_pixels_per_inch

    horizontal pixels per inch

     

    Returns :

    The type of surface.

    y_pixels_per_inch

    vertical pixels per inch

     
    +
    +

    Since 1.8

    + +
    +
    +

    cairo_surface_get_type ()

    +
    cairo_surface_type_t
    +cairo_surface_get_type (cairo_surface_t *surface);
    +

    This function returns the type of the backend used to create +a surface. See cairo_surface_type_t for available types.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    The type of surface +.

    +

    +

    Since 1.2


    -

    cairo_surface_get_reference_count ()

    -
    unsigned int        cairo_surface_get_reference_count   (cairo_surface_t *surface);
    -

    -Returns the current reference count of surface. -

    -
    ---+

    cairo_surface_get_reference_count ()

    +
    unsigned int
    +cairo_surface_get_reference_count (cairo_surface_t *surface);
    +

    Returns the current reference count of surface +.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    the current reference count of surface. If the -object is a nil object, 0 will be returned.

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    the current reference count of surface +. If the +object is a nil object, 0 will be returned.

    +

    +

    Since 1.4


    -

    cairo_surface_set_user_data ()

    -
    cairo_status_t      cairo_surface_set_user_data         (cairo_surface_t *surface,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to surface. To remove user data from a surface, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    cairo_surface_set_user_data ()

    +
    cairo_status_t
    +cairo_surface_set_user_data (cairo_surface_t *surface,
    +                             const cairo_user_data_key_t *key,
    +                             void *user_data,
    +                             cairo_destroy_func_t destroy);
    +

    Attach user data to surface +. To remove user data from a surface, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + - - - - +same key.

    +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    user_data :

    the user data to attach to the surface

    user_data

    the user data to attach to the surface

     

    destroy :

    a cairo_destroy_func_t which will be called when the +

    destroy

    a cairo_destroy_func_t which will be called when the surface is destroyed or when new user data is attached using the -same key.

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. 
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +

    Since 1.0


    -

    cairo_surface_get_user_data ()

    -
    void *              cairo_surface_get_user_data         (cairo_surface_t *surface,
    -                                                         const cairo_user_data_key_t *key);
    -

    -Return user data previously attached to surface using the specified +

    cairo_surface_get_user_data ()

    +
    void *
    +cairo_surface_get_user_data (cairo_surface_t *surface,
    +                             const cairo_user_data_key_t *key);
    +

    Return user data previously attached to surface + using the specified key. If no user data has been attached with the given key this -function returns NULL. -

    -
    +function returns NULL.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    surface :

    a cairo_surface_t -

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    surface

    a cairo_surface_t

     

    Returns :

    the user data previously attached or NULL.

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +

    Since 1.0


    -

    cairo_surface_copy_page ()

    -
    void                cairo_surface_copy_page             (cairo_surface_t *surface);
    -

    -Emits the current page for backends that support multiple pages, +

    cairo_surface_copy_page ()

    +
    void
    +cairo_surface_copy_page (cairo_surface_t *surface);
    +

    Emits the current page for backends that support multiple pages, but doesn't clear it, so that the contents of the current page will -be retained for the next page. Use cairo_surface_show_page() if you -want to get an empty page after the emission. -

    -

    -There is a convenience function for this that takes a cairo_t, -namely cairo_copy_page(). -

    -
    ---+be retained for the next page. Use cairo_surface_show_page() if you +want to get an empty page after the emission.

    +

    There is a convenience function for this that takes a cairo_t, +namely cairo_copy_page().

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     
    +

    Since 1.6


    -

    cairo_surface_show_page ()

    -
    void                cairo_surface_show_page             (cairo_surface_t *surface);
    -

    -Emits and clears the current page for backends that support multiple -pages. Use cairo_surface_copy_page() if you don't want to clear the page. -

    -

    -There is a convenience function for this that takes a cairo_t, -namely cairo_show_page(). -

    -
    ---+

    cairo_surface_show_page ()

    +
    void
    +cairo_surface_show_page (cairo_surface_t *surface);
    +

    Emits and clears the current page for backends that support multiple +pages. Use cairo_surface_copy_page() if you don't want to clear the page.

    +

    There is a convenience function for this that takes a cairo_t, +namely cairo_show_page().

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a cairo_Surface_t -

    surface

    a cairo_Surface_t

     
    +

    Since 1.6


    -

    cairo_surface_has_show_text_glyphs ()

    -
    cairo_bool_t        cairo_surface_has_show_text_glyphs  (cairo_surface_t *surface);
    -

    -Returns whether the surface supports -sophisticated cairo_show_text_glyphs() operations. That is, +

    cairo_surface_has_show_text_glyphs ()

    +
    cairo_bool_t
    +cairo_surface_has_show_text_glyphs (cairo_surface_t *surface);
    +

    Returns whether the surface supports +sophisticated cairo_show_text_glyphs() operations. That is, whether it actually uses the provided text and cluster data -to a cairo_show_text_glyphs() call. -

    -

    -Note: Even if this function returns FALSE, a -cairo_show_text_glyphs() operation targeted at surface will +to a cairo_show_text_glyphs() call.

    +

    Note: Even if this function returns FALSE, a +cairo_show_text_glyphs() operation targeted at surface + will still succeed. It just will -act like a cairo_show_glyphs() operation. Users can use this +act like a cairo_show_glyphs() operation. Users can use this function to avoid computing UTF-8 text and cluster mapping if the -target surface does not use it. -

    -
    ---+target surface does not use it.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    -TRUE if surface supports -cairo_show_text_glyphs(), FALSE otherwise

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    TRUE if surface +supports +cairo_show_text_glyphs(), FALSE otherwise

    +

    +

    Since 1.8


    -

    cairo_surface_set_mime_data ()

    -
    cairo_status_t      cairo_surface_set_mime_data         (cairo_surface_t *surface,
    -                                                         const char *mime_type,
    -                                                         const unsigned char *data,
    -                                                         unsigned long  length,
    -                                                         cairo_destroy_func_t destroy,
    -                                                         void *closure);
    -

    -Attach an image in the format mime_type to surface. To remove +

    cairo_surface_set_mime_data ()

    +
    cairo_status_t
    +cairo_surface_set_mime_data (cairo_surface_t *surface,
    +                             const char *mime_type,
    +                             const unsigned char *data,
    +                             unsigned long  length,
    +                             cairo_destroy_func_t destroy,
    +                             void *closure);
    +

    Attach an image in the format mime_type + to surface +. To remove the data from a surface, call this function with same mime type -and NULL for data. -

    -

    -The attached image (or filename) data can later be used by backends +and NULL for data +.

    +

    The attached image (or filename) data can later be used by backends which support it (currently: PDF, PS, SVG and Win32 Printing surfaces) to emit this data instead of making a snapshot of the -surface. This approach tends to be faster and requires less -memory and disk space. -

    -

    -The recognized MIME types are the following: CAIRO_MIME_TYPE_JPEG, +surface +. This approach tends to be faster and requires less +memory and disk space.

    +

    The recognized MIME types are the following: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_URI, -CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_JBIG2, -CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. -

    -

    -See corresponding backend surface docs for details about which MIME +CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_JBIG2, +CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID.

    +

    See corresponding backend surface docs for details about which MIME types it can handle. Caution: the associated MIME data will be discarded if you draw on the surface afterwards. Use this function -with care. -

    -
    +with care.

    +

    Even if a backend supports a MIME type, that does not mean cairo +will always be able to use the attached MIME data. For example, if +the backend does not natively support the compositing operation used +to apply the MIME data to the backend. In that case, the MIME data +will be ignored. Therefore, to apply an image in all cases, it is best +to create an image surface which contains the decoded image data and +then attach the MIME data to that. This ensures the image will always +be used while still allowing the MIME data to be used whenever +possible.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + - - - - +same mime type.

    + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    mime_type :

    the MIME type of the image data

    mime_type

    the MIME type of the image data

     

    data :

    the image data to attach to the surface

    data

    the image data to attach to the surface

     

    length :

    the length of the image data

    length

    the length of the image data

     

    destroy :

    a cairo_destroy_func_t which will be called when the +

    destroy

    a cairo_destroy_func_t which will be called when the surface is destroyed or when new image data is attached using the -same mime type.

    closure :

    the data to be passed to the destroy notifier 

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    closure

    the data to be passed to the destroy +notifier

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +

    Since 1.10


    -

    cairo_surface_get_mime_data ()

    -
    void                cairo_surface_get_mime_data         (cairo_surface_t *surface,
    -                                                         const char *mime_type,
    -                                                         const unsigned char **data,
    -                                                         unsigned long *length);
    -

    -Return mime data previously attached to surface using the +

    cairo_surface_get_mime_data ()

    +
    void
    +cairo_surface_get_mime_data (cairo_surface_t *surface,
    +                             const char *mime_type,
    +                             const unsigned char **data,
    +                             unsigned long *length);
    +

    Return mime data previously attached to surface + using the specified mime type. If no data has been attached with the given -mime type, data is set NULL. -

    -
    +mime type, data + is set NULL.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t -

    surface

    a cairo_surface_t

     

    mime_type :

    the mime type of the image data

    mime_type

    the mime type of the image data

     

    data :

    the image data to attached to the surface

    data

    the image data to attached to the surface

     

    length :

    the length of the image data

    length

    the length of the image data

     
    +

    Since 1.10


    -

    cairo_surface_supports_mime_type ()

    -
    cairo_bool_t        cairo_surface_supports_mime_type    (cairo_surface_t *surface,
    -                                                         const char *mime_type);
    -

    -Return whether surface supports mime_type. -

    -
    +

    cairo_surface_supports_mime_type ()

    +
    cairo_bool_t
    +cairo_surface_supports_mime_type (cairo_surface_t *surface,
    +                                  const char *mime_type);
    +

    Return whether surface + supports mime_type +.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    surface :

    a cairo_surface_t -

    mime_type :

    the mime type

    surface

    a cairo_surface_t

     

    Returns :

    -TRUE if surface supports -mime_type, FALSE otherwise

    mime_type

    the mime type

     
    +
    +
    +

    Returns

    +

    TRUE if surface +supports +mime_type +, FALSE otherwise

    +

    +

    Since 1.12


    -

    cairo_surface_map_to_image ()

    -
    cairo_surface_t *   cairo_surface_map_to_image          (cairo_surface_t *surface,
    -                                                         const cairo_rectangle_int_t *extents);
    -

    -Returns an image surface that is the most efficient mechanism for +

    cairo_surface_map_to_image ()

    +
    cairo_surface_t *
    +cairo_surface_map_to_image (cairo_surface_t *surface,
    +                            const cairo_rectangle_int_t *extents);
    +

    Returns an image surface that is the most efficient mechanism for modifying the backing store of the target surface. The region retrieved -may be limited to the extents or NULL for the whole surface -

    -

    -Note, the use of the original surface as a target or source whilst +may be limited to the extents + or NULL for the whole surface

    +

    Note, the use of the original surface as a target or source whilst it is mapped is undefined. The result of mapping the surface -multiple times is undefined. Calling cairo_surface_destroy() or -cairo_surface_finish() on the resulting image surface results in +multiple times is undefined. Calling cairo_surface_destroy() or +cairo_surface_finish() on the resulting image surface results in undefined behavior. Changing the device transform of the image -surface or of surface before the image surface is unmapped results -in undefined behavior. -

    -
    +surface or of surface + before the image surface is unmapped results +in undefined behavior.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - +

    surface :

    an existing surface used to extract the image from

    surface

    an existing surface used to extract the image from

     

    extents :

    limit the extraction to an rectangular region

    extents

    limit the extraction to an rectangular region

     

    Returns :

    a pointer to the newly allocated image surface. The caller -must use cairo_surface_unmap_image() to destroy this image surface. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state +
    +
    +
    +

    Returns

    +

    a pointer to the newly allocated image surface. The caller +must use cairo_surface_unmap_image() to destroy this image surface.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state or any other error occurs. If the returned pointer does not have an error status, it is guaranteed to be an image surface whose format -is not CAIRO_FORMAT_INVALID. +is not CAIRO_FORMAT_INVALID.

    +

    +
    +

    Since 1.12

    + +
    +
    +

    cairo_surface_unmap_image ()

    +
    void
    +cairo_surface_unmap_image (cairo_surface_t *surface,
    +                           cairo_surface_t *image);
    +

    Unmaps the image surface as returned from cairo_surface_map_to_image().

    +

    The content of the image will be uploaded to the target surface. +Afterwards, the image is destroyed.

    +

    Using an image surface which wasn't returned by cairo_surface_map_to_image() +results in undefined behavior.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + +

    surface

    the surface passed to cairo_surface_map_to_image().

     

    image

    the currently mapped image

     
    +

    Since 1.12

    -
    + +
    +

    Types and Values

    -

    cairo_surface_unmap_image ()

    -
    void                cairo_surface_unmap_image           (cairo_surface_t *surface,
    -                                                         cairo_surface_t *image);
    -

    -Unmaps the image surface as returned from #cairo_surface_map_to_image(). -

    -

    -The content of the image will be uploaded to the target surface. -Afterwards, the image is destroyed. -

    +

    CAIRO_HAS_MIME_SURFACE

    +
    #define CAIRO_HAS_MIME_SURFACE 1
    +

    -Using an image surface which wasn't returned by cairo_surface_map_to_image() -results in undefined behavior.

    -
    + +
    +
    +

    CAIRO_MIME_TYPE_JBIG2

    +
    #define CAIRO_MIME_TYPE_JBIG2 "application/x-cairo.jbig2"
    +
    +

    Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544).

    +

    Since 1.14

    +
    +
    +
    +

    CAIRO_MIME_TYPE_JBIG2_GLOBAL

    +
    #define CAIRO_MIME_TYPE_JBIG2_GLOBAL "application/x-cairo.jbig2-global"
    +
    +

    Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544) global segment.

    +

    Since 1.14

    +
    +
    +
    +

    CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID

    +
    #define CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID "application/x-cairo.jbig2-global-id"
    +
    +

    An unique identifier shared by a JBIG2 global segment and all JBIG2 images +that depend on the global segment.

    +

    Since 1.14

    +
    +
    +
    +

    CAIRO_MIME_TYPE_JP2

    +
    #define CAIRO_MIME_TYPE_JP2 "image/jp2"
    +
    +

    The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1).

    +

    Since 1.10

    +
    +
    +
    +

    CAIRO_MIME_TYPE_JPEG

    +
    #define CAIRO_MIME_TYPE_JPEG "image/jpeg"
    +
    +

    The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1).

    +

    Since 1.10

    +
    +
    +
    +

    CAIRO_MIME_TYPE_PNG

    +
    #define CAIRO_MIME_TYPE_PNG "image/png"
    +
    +

    The Portable Network Graphics image file format (ISO/IEC 15948).

    +

    Since 1.10

    +
    +
    +
    +

    CAIRO_MIME_TYPE_URI

    +
    #define CAIRO_MIME_TYPE_URI "text/x-uri"
    +
    +

    URI for an image file (unofficial MIME type).

    +

    Since 1.10

    +
    +
    +
    +

    CAIRO_MIME_TYPE_UNIQUE_ID

    +
    #define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid"
    +
    +

    Unique identifier for a surface (cairo specific MIME type). All surfaces with +the same unique identifier will only be embedded once.

    +

    Since 1.12

    +
    +
    +
    +

    cairo_surface_t

    +
    typedef struct _cairo_surface cairo_surface_t;
    +
    +

    A cairo_surface_t represents an image, either as the destination +of a drawing operation or as source when drawing onto another +surface. To draw to a cairo_surface_t, create a cairo context +with the surface as the target, using cairo_create().

    +

    There are different subtypes of cairo_surface_t for +different drawing backends; for example, cairo_image_surface_create() +creates a bitmap image in memory. +The type of a surface can be queried with cairo_surface_get_type().

    +

    The initial contents of a surface after creation depend upon the manner +of its creation. If cairo creates the surface and backing storage for +the user, it will be initially cleared; for example, +cairo_image_surface_create() and cairo_surface_create_similar(). +Alternatively, if the user passes in a reference to some backing storage +and asks cairo to wrap that in a cairo_surface_t, then the contents are +not modified; for example, cairo_image_surface_create_for_data() and +cairo_xlib_surface_create().

    +

    Memory management of cairo_surface_t is done with +cairo_surface_reference() and cairo_surface_destroy().

    +

    Since 1.0

    +
    +
    +
    +

    enum cairo_content_t

    +

    cairo_content_t is used to describe the content that a surface will +contain, whether color information, alpha information (translucence +vs. opacity), or both.

    +

    Note: The large values here are designed to keep cairo_content_t +values distinct from cairo_format_t values so that the +implementation can detect the error if users confuse the two types.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + - - + + +

    surface :

    the surface passed to cairo_surface_map_to_image().

    CAIRO_CONTENT_COLOR

    +

    The surface will hold color content only. (Since 1.0)

    +
     

    CAIRO_CONTENT_ALPHA

    +

    The surface will hold alpha content only. (Since 1.0)

    +
     

    image :

    the currently mapped image

    CAIRO_CONTENT_COLOR_ALPHA

    +

    The surface will hold color and alpha content. (Since 1.0)

    +
     
    -

    Since 1.12

    +
    +

    Since 1.0

    +
    +
    +
    +

    enum cairo_surface_type_t

    +

    cairo_surface_type_t is used to describe the type of a given +surface. The surface types are also known as "backends" or "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(), +(though see cairo_surface_create_similar() as well).

    +

    The surface type can be queried with cairo_surface_get_type()

    +

    The various cairo_surface_t functions can be used with surfaces of +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().

    +

    The behavior of calling a type-specific function with a surface of +the wrong type is undefined.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    CAIRO_SURFACE_TYPE_IMAGE

    +

    The surface is of type image, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_PDF

    +

    The surface is of type pdf, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_PS

    +

    The surface is of type ps, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_XLIB

    +

    The surface is of type xlib, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_XCB

    +

    The surface is of type xcb, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_GLITZ

    +

    The surface is of type glitz, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_QUARTZ

    +

    The surface is of type quartz, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_WIN32

    +

    The surface is of type win32, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_BEOS

    +

    The surface is of type beos, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_DIRECTFB

    +

    The surface is of type directfb, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_SVG

    +

    The surface is of type svg, since 1.2

    +
     

    CAIRO_SURFACE_TYPE_OS2

    +

    The surface is of type os2, since 1.4

    +
     

    CAIRO_SURFACE_TYPE_WIN32_PRINTING

    +

    The surface is a win32 printing surface, since 1.6

    +
     

    CAIRO_SURFACE_TYPE_QUARTZ_IMAGE

    +

    The surface is of type quartz_image, since 1.6

    +
     

    CAIRO_SURFACE_TYPE_SCRIPT

    +

    The surface is of type script, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_QT

    +

    The surface is of type Qt, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_RECORDING

    +

    The surface is of type recording, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_VG

    +

    The surface is a OpenVG surface, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_GL

    +

    The surface is of type OpenGL, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_DRM

    +

    The surface is of type Direct Render Manager, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_TEE

    +

    The surface is of type 'tee' (a multiplexing surface), since 1.10

    +
     

    CAIRO_SURFACE_TYPE_XML

    +

    The surface is of type XML (for debugging), since 1.10

    +
     

    CAIRO_SURFACE_TYPE_SKIA

    +

    The surface is of type Skia, since 1.10

    +
     

    CAIRO_SURFACE_TYPE_SUBSURFACE

    +

    The surface is a subsurface created with + cairo_surface_create_for_rectangle(), since 1.10

    +
     

    CAIRO_SURFACE_TYPE_COGL

    +

    This surface is of type Cogl, since 1.12

    +
     
    +
    +

    Since 1.2

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-cairo-t.html cairo-1.14.2/doc/public/html/cairo-cairo-t.html --- cairo-1.13.0~20140204/doc/public/html/cairo-cairo-t.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-cairo-t.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -cairo_t +Cairo: A Vector Graphics Library: cairo_t - + - - - - - - - - - - + + + + + + +
    @@ -33,2864 +30,3465 @@

    cairo_t

    cairo_t — The cairo drawing context

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_t;
    -cairo_t *           cairo_create                        (cairo_surface_t *target);
    -cairo_t *           cairo_reference                     (cairo_t *cr);
    -void                cairo_destroy                       (cairo_t *cr);
    -cairo_status_t      cairo_status                        (cairo_t *cr);
    -void                cairo_save                          (cairo_t *cr);
    -void                cairo_restore                       (cairo_t *cr);
    -cairo_surface_t *   cairo_get_target                    (cairo_t *cr);
    -void                cairo_push_group                    (cairo_t *cr);
    -void                cairo_push_group_with_content       (cairo_t *cr,
    -                                                         cairo_content_t content);
    -cairo_pattern_t *   cairo_pop_group                     (cairo_t *cr);
    -void                cairo_pop_group_to_source           (cairo_t *cr);
    -cairo_surface_t *   cairo_get_group_target              (cairo_t *cr);
    -void                cairo_set_source_rgb                (cairo_t *cr,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue);
    -void                cairo_set_source_rgba               (cairo_t *cr,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -void                cairo_set_source                    (cairo_t *cr,
    -                                                         cairo_pattern_t *source);
    -void                cairo_set_source_surface            (cairo_t *cr,
    -                                                         cairo_surface_t *surface,
    -                                                         double x,
    -                                                         double y);
    -cairo_pattern_t *   cairo_get_source                    (cairo_t *cr);
    -enum                cairo_antialias_t;
    -void                cairo_set_antialias                 (cairo_t *cr,
    -                                                         cairo_antialias_t antialias);
    -cairo_antialias_t   cairo_get_antialias                 (cairo_t *cr);
    -void                cairo_set_dash                      (cairo_t *cr,
    -                                                         const double *dashes,
    -                                                         int num_dashes,
    -                                                         double offset);
    -int                 cairo_get_dash_count                (cairo_t *cr);
    -void                cairo_get_dash                      (cairo_t *cr,
    -                                                         double *dashes,
    -                                                         double *offset);
    -enum                cairo_fill_rule_t;
    -void                cairo_set_fill_rule                 (cairo_t *cr,
    -                                                         cairo_fill_rule_t fill_rule);
    -cairo_fill_rule_t   cairo_get_fill_rule                 (cairo_t *cr);
    -enum                cairo_line_cap_t;
    -void                cairo_set_line_cap                  (cairo_t *cr,
    -                                                         cairo_line_cap_t line_cap);
    -cairo_line_cap_t    cairo_get_line_cap                  (cairo_t *cr);
    -enum                cairo_line_join_t;
    -void                cairo_set_line_join                 (cairo_t *cr,
    -                                                         cairo_line_join_t line_join);
    -cairo_line_join_t   cairo_get_line_join                 (cairo_t *cr);
    -void                cairo_set_line_width                (cairo_t *cr,
    -                                                         double width);
    -double              cairo_get_line_width                (cairo_t *cr);
    -void                cairo_set_miter_limit               (cairo_t *cr,
    -                                                         double limit);
    -double              cairo_get_miter_limit               (cairo_t *cr);
    -enum                cairo_operator_t;
    -void                cairo_set_operator                  (cairo_t *cr,
    -                                                         cairo_operator_t op);
    -cairo_operator_t    cairo_get_operator                  (cairo_t *cr);
    -void                cairo_set_tolerance                 (cairo_t *cr,
    -                                                         double tolerance);
    -double              cairo_get_tolerance                 (cairo_t *cr);
    -void                cairo_clip                          (cairo_t *cr);
    -void                cairo_clip_preserve                 (cairo_t *cr);
    -void                cairo_clip_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -cairo_bool_t        cairo_in_clip                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_reset_clip                    (cairo_t *cr);
    -                    cairo_rectangle_t;
    -                    cairo_rectangle_list_t;
    -void                cairo_rectangle_list_destroy        (cairo_rectangle_list_t *rectangle_list);
    -cairo_rectangle_list_t * cairo_copy_clip_rectangle_list (cairo_t *cr);
    -void                cairo_fill                          (cairo_t *cr);
    -void                cairo_fill_preserve                 (cairo_t *cr);
    -void                cairo_fill_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -cairo_bool_t        cairo_in_fill                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_mask                          (cairo_t *cr,
    -                                                         cairo_pattern_t *pattern);
    -void                cairo_mask_surface                  (cairo_t *cr,
    -                                                         cairo_surface_t *surface,
    -                                                         double surface_x,
    -                                                         double surface_y);
    -void                cairo_paint                         (cairo_t *cr);
    -void                cairo_paint_with_alpha              (cairo_t *cr,
    -                                                         double alpha);
    -void                cairo_stroke                        (cairo_t *cr);
    -void                cairo_stroke_preserve               (cairo_t *cr);
    -void                cairo_stroke_extents                (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -cairo_bool_t        cairo_in_stroke                     (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_copy_page                     (cairo_t *cr);
    -void                cairo_show_page                     (cairo_t *cr);
    -unsigned int        cairo_get_reference_count           (cairo_t *cr);
    -cairo_status_t      cairo_set_user_data                 (cairo_t *cr,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -void *              cairo_get_user_data                 (cairo_t *cr,
    -                                                         const cairo_user_data_key_t *key);
    -
    -
    -
    -

    Description

    -

    -cairo_t is the main object used when drawing with cairo. To -draw with cairo, you create a cairo_t, set the target surface, -and drawing options for the cairo_t, create shapes with -functions like cairo_move_to() and cairo_line_to(), and then -draw shapes with cairo_stroke() or cairo_fill(). -

    -

    -cairo_t's can be pushed to a stack via cairo_save(). -They may then safely be changed, without losing the current state. -Use cairo_restore() to restore to the saved state. -

    -
    -

    Details

    -
    -

    cairo_t

    -
    typedef struct _cairo cairo_t;
    -
    -

    -A cairo_t contains the current state of the rendering device, -including coordinates of yet to be drawn shapes. -

    -

    -Cairo contexts, as cairo_t objects are named, are central to -cairo and all drawing with cairo is always done to a cairo_t -object. -

    -

    -Memory management of cairo_t is done with -cairo_reference() and cairo_destroy(). -

    -

    Since 1.0

    -
    -
    -
    -

    cairo_create ()

    -
    cairo_t *           cairo_create                        (cairo_surface_t *target);
    -

    -Creates a new cairo_t with all graphics state parameters set to -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). -

    -

    -This function references target, so you can immediately -call cairo_surface_destroy() on it if you don't need to -maintain a separate reference to it. -

    -
    +

    Functions

    +
    --++ - - + + - - + + - -

    target :

    target surface for the context +cairo_t * + +cairo_create () +

    Returns :

    a newly allocated cairo_t with a reference -count of 1. The initial reference count should be released -with cairo_destroy() when you are done using the cairo_t. -This function never returns NULL. If memory cannot be -allocated, a special cairo_t object will be returned on -which cairo_status() returns CAIRO_STATUS_NO_MEMORY. If -you attempt to target a surface which does not support -writing (such as cairo_mime_surface_t) then a -CAIRO_STATUS_WRITE_ERROR will be raised. You can use this -object normally, but no drawing will be done. +cairo_t * + +cairo_reference () +
    -

    Since 1.0

    -
    -
    -
    -

    cairo_reference ()

    -
    cairo_t *           cairo_reference                     (cairo_t *cr);
    -

    -Increases the reference count on cr by one. This prevents -cr from being destroyed until a matching call to cairo_destroy() -is made. -

    -

    -The number of references to a cairo_t can be get using -cairo_get_reference_count(). -

    -
    ---- - - - + - - + + - -

    cr :

    a cairo_t + +void + +cairo_destroy ()

    Returns :

    the referenced cairo_t. +cairo_status_t + +cairo_status () +
    -

    Since 1.0

    -
    -
    -
    -

    cairo_destroy ()

    -
    void                cairo_destroy                       (cairo_t *cr);
    -

    -Decreases the reference count on cr by one. If the result -is zero, then cr and all associated resources are freed. -See cairo_reference(). -

    -
    ---- - - - + - -

    cr :

    a cairo_t +
    +void
    -

    Since 1.0

    -
    -
    -
    -

    cairo_status ()

    -
    cairo_status_t      cairo_status                        (cairo_t *cr);
    -

    -Checks whether an error has previously occurred for this context. -

    -
    ---- - + + - - + + - - + - -
    +cairo_save () +

    cr :

    a cairo context +void + +cairo_restore () +

    Returns :

    the current status of this context, see cairo_status_t + +cairo_surface_t * + +cairo_get_target ()
    -

    Since 1.0

    -
    -
    -
    -

    cairo_save ()

    -
    void                cairo_save                          (cairo_t *cr);
    -

    -Makes a copy of the current state of cr and saves it -on an internal stack of saved states for cr. When -cairo_restore() is called, cr will be restored to -the saved state. Multiple calls to cairo_save() and -cairo_restore() can be nested; each call to cairo_restore() -restores the state from the matching paired cairo_save(). -

    -

    -It isn't necessary to clear all saved states before -a cairo_t is freed. If the reference count of a cairo_t -drops to zero in response to a call to cairo_destroy(), -any saved states will be freed along with the cairo_t. -

    -
    ---- - - - + - -

    cr :

    a cairo_t +
    +void
    -

    Since 1.0

    -
    -
    -
    -

    cairo_restore ()

    -
    void                cairo_restore                       (cairo_t *cr);
    -

    -Restores cr to the state saved by a preceding call to -cairo_save() and removes that state from the stack of -saved states. -

    -
    ---- - - - - -

    cr :

    a cairo_t + +cairo_push_group ()
    -

    Since 1.0

    -
    -
    -
    -

    cairo_get_target ()

    -
    cairo_surface_t *   cairo_get_target                    (cairo_t *cr);
    -

    -Gets the target surface for the cairo context as passed to -cairo_create(). -

    -

    -This function will always return a valid pointer, but the result -can be a "nil" surface if cr is already in an error state, -(ie. cairo_status() != CAIRO_STATUS_SUCCESS). -A nil surface is indicated by cairo_surface_status() -!= CAIRO_STATUS_SUCCESS. -

    -
    ---- - + - - + + - - + + - -

    cr :

    a cairo context +void + +cairo_push_group_with_content () +

    Returns :

    the target surface. This object is owned by cairo. To -keep a reference to it, you must call cairo_surface_reference(). +cairo_pattern_t * + +cairo_pop_group () +
    -

    Since 1.0

    -
    -
    -
    -

    cairo_push_group ()

    -
    void                cairo_push_group                    (cairo_t *cr);
    -

    -Temporarily redirects drawing to an intermediate surface known as a -group. The redirection lasts until the group is completed by a call -to cairo_pop_group() or cairo_pop_group_to_source(). These calls -provide the result of any drawing to the group as a pattern, -(either as an explicit object, or set as the source pattern). -

    -

    -This group functionality can be convenient for performing -intermediate compositing. One common use of a group is to render -objects as opaque within the group, (so that they occlude each -other), and then blend the result with translucence onto the -destination. -

    -

    -Groups can be nested arbitrarily deep by making balanced calls to -cairo_push_group()/cairo_pop_group(). Each call pushes/pops the new -target group onto/from a stack. -

    -

    -The cairo_push_group() function calls cairo_save() so that any -changes to the graphics state will not be visible outside the -group, (the pop_group functions call cairo_restore()). -

    -

    -By default the intermediate group will have a content type of -CAIRO_CONTENT_COLOR_ALPHA. Other content types can be chosen for -the group by using cairo_push_group_with_content() instead. -

    -

    -As an example, here is how one might fill and stroke a path with -translucence, but without any portion of the fill being visible -under the stroke: -

    -

    -

    -
    -cairo_push_group (cr);
    -cairo_set_source (cr, fill_pattern);
    -cairo_fill_preserve (cr);
    -cairo_set_source (cr, stroke_pattern);
    -cairo_stroke (cr);
    -cairo_pop_group_to_source (cr);
    -cairo_paint_with_alpha (cr, alpha);
    -
    -

    -

    -
    ---- - - - - -

    cr :

    a cairo context
    -

    Since 1.2

    -
    -
    -
    -

    cairo_push_group_with_content ()

    -
    void                cairo_push_group_with_content       (cairo_t *cr,
    -                                                         cairo_content_t content);
    -

    -Temporarily redirects drawing to an intermediate surface known as a -group. The redirection lasts until the group is completed by a call -to cairo_pop_group() or cairo_pop_group_to_source(). These calls -provide the result of any drawing to the group as a pattern, -(either as an explicit object, or set as the source pattern). -

    -

    -The group will have a content type of content. The ability to -control this content type is the only distinction between this -function and cairo_push_group() which you should see for a more -detailed description of group rendering. -

    -
    ---- - - - + + - - + + - -

    cr :

    a cairo context +void + +cairo_pop_group_to_source () +

    content :

    a cairo_content_t indicating the type of group that -will be created +cairo_surface_t * + +cairo_get_group_target () +
    -

    Since 1.2

    -
    -
    -
    -

    cairo_pop_group ()

    -
    cairo_pattern_t *   cairo_pop_group                     (cairo_t *cr);
    -

    -Terminates the redirection begun by a call to cairo_push_group() or -cairo_push_group_with_content() and returns a new pattern -containing the results of all drawing operations performed to the -group. -

    -

    -The cairo_pop_group() function calls cairo_restore(), (balancing a -call to cairo_save() by the push_group function), so that any -changes to the graphics state will not be visible outside the -group. -

    -
    ---- - - - + + - - + + - -

    cr :

    a cairo context +void + +cairo_set_source_rgb () +

    Returns :

    a newly created (surface) pattern containing the -results of all drawing operations performed to the group. The -caller owns the returned object and should call -cairo_pattern_destroy() when finished with it. +void + +cairo_set_source_rgba () +
    -

    Since 1.2

    -
    -
    -
    -

    cairo_pop_group_to_source ()

    -
    void                cairo_pop_group_to_source           (cairo_t *cr);
    -

    -Terminates the redirection begun by a call to cairo_push_group() or -cairo_push_group_with_content() and installs the resulting pattern -as the source pattern in the given cairo context. -

    -

    -The behavior of this function is equivalent to the sequence of -operations: -

    -

    -

    -
    -cairo_pattern_t *group = cairo_pop_group (cr);
    -cairo_set_source (cr, group);
    -cairo_pattern_destroy (group);
    -
    -

    -

    -

    -but is more convenient as their is no need for a variable to store -the short-lived pointer to the pattern. -

    -

    -The cairo_pop_group() function calls cairo_restore(), (balancing a -call to cairo_save() by the push_group function), so that any -changes to the graphics state will not be visible outside the -group. -

    -
    ---- - - - - -

    cr :

    a cairo context
    -

    Since 1.2

    -
    -
    -
    -

    cairo_get_group_target ()

    -
    cairo_surface_t *   cairo_get_group_target              (cairo_t *cr);
    -

    -Gets the current destination surface for the context. This is either -the original target surface as passed to cairo_create() or the target -surface for the current group as started by the most recent call to -cairo_push_group() or cairo_push_group_with_content(). -

    -

    -This function will always return a valid pointer, but the result -can be a "nil" surface if cr is already in an error state, -(ie. cairo_status() != CAIRO_STATUS_SUCCESS). -A nil surface is indicated by cairo_surface_status() -!= CAIRO_STATUS_SUCCESS. -

    -
    ---- - - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -

    cr :

    a cairo context +void + +cairo_set_source () +

    Returns :

    the target surface. This object is owned by cairo. To -keep a reference to it, you must call cairo_surface_reference(). +void + +cairo_set_source_surface () +
    +cairo_pattern_t * + +cairo_get_source () +
    +void + +cairo_set_antialias () +
    +cairo_antialias_t + +cairo_get_antialias () +
    +void + +cairo_set_dash () +
    +int + +cairo_get_dash_count () +
    +void + +cairo_get_dash () +
    +void + +cairo_set_fill_rule () +
    +cairo_fill_rule_t + +cairo_get_fill_rule () +
    +void + +cairo_set_line_cap () +
    +cairo_line_cap_t + +cairo_get_line_cap () +
    +void + +cairo_set_line_join () +
    +cairo_line_join_t + +cairo_get_line_join () +
    +void + +cairo_set_line_width () +
    -

    Since 1.2

    -
    -
    -
    -

    cairo_set_source_rgb ()

    -
    void                cairo_set_source_rgb                (cairo_t *cr,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue);
    -

    -Sets the source pattern within cr to an opaque color. This opaque -color will then be used for any subsequent drawing operation until -a new source pattern is set. -

    -

    -The color components are floating point numbers in the range 0 to -1. If the values passed in are outside that range, they will be -clamped. -

    -

    -The default source pattern is opaque black, (that is, it is -equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)). -

    -
    ---- - - - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + +

    cr :

    a cairo context +double + +cairo_get_line_width () +
    +void + +cairo_set_miter_limit () +
    +double + +cairo_get_miter_limit () +
    +void + +cairo_set_operator () +
    +cairo_operator_t + +cairo_get_operator () +
    +void + +cairo_set_tolerance () +

    red :

    red component of color +double + +cairo_get_tolerance () +
    +void + +cairo_clip () +
    +void + +cairo_clip_preserve () +
    +void + +cairo_clip_extents () +
    +cairo_bool_t + +cairo_in_clip () +
    +void + +cairo_reset_clip () +
    +void + +cairo_rectangle_list_destroy () +
    +cairo_rectangle_list_t * + +cairo_copy_clip_rectangle_list () +
    +void + +cairo_fill () +
    +void + +cairo_fill_preserve () +
    +void + +cairo_fill_extents () +
    +cairo_bool_t + +cairo_in_fill () +
    +void + +cairo_mask () +
    +void + +cairo_mask_surface () +
    +void + +cairo_paint () +
    +void + +cairo_paint_with_alpha () +
    +void + +cairo_stroke () +
    +void + +cairo_stroke_preserve () +
    +void + +cairo_stroke_extents () +
    +cairo_bool_t + +cairo_in_stroke () +
    +void + +cairo_copy_page () +
    +void + +cairo_show_page () +
    unsigned int + +cairo_get_reference_count () +

    green :

    green component of color +cairo_status_t + +cairo_set_user_data () +

    blue :

    blue component of color +void * + +cairo_get_user_data () +
    -

    Since 1.0

    -
    -
    -

    cairo_set_source_rgba ()

    -
    void                cairo_set_source_rgba               (cairo_t *cr,
    -                                                         double red,
    -                                                         double green,
    -                                                         double blue,
    -                                                         double alpha);
    -

    -Sets the source pattern within cr to a translucent color. This -color will then be used for any subsequent drawing operation until -a new source pattern is set. -

    -

    -The color and alpha components are floating point numbers in the -range 0 to 1. If the values passed in are outside that range, they -will be clamped. -

    -

    -The default source pattern is opaque black, (that is, it is -equivalent to cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0)). -

    -
    +
    +

    Types and Values

    +
    --++ - - + + + + + + + + + + + + + + - - + + - - + + - - + + - - + +

    cr :

    a cairo contexttypedefcairo_t
    enumcairo_antialias_t
    enumcairo_fill_rule_t
    enumcairo_line_cap_t

    red :

    red component of colorenumcairo_line_join_t

    green :

    green component of colorenumcairo_operator_t

    blue :

    blue component of color cairo_rectangle_t

    alpha :

    alpha component of color cairo_rectangle_list_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    cairo_t is the main object used when drawing with cairo. To +draw with cairo, you create a cairo_t, set the target surface, +and drawing options for the cairo_t, create shapes with +functions like cairo_move_to() and cairo_line_to(), and then +draw shapes with cairo_stroke() or cairo_fill().

    +

    cairo_t's can be pushed to a stack via cairo_save(). +They may then safely be changed, without losing the current state. +Use cairo_restore() to restore to the saved state.

    +
    +
    +

    Functions

    +
    +

    cairo_create ()

    +
    cairo_t *
    +cairo_create (cairo_surface_t *target);
    +

    Creates a new cairo_t with all graphics state parameters set to +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).

    +

    This function references target +, so you can immediately +call cairo_surface_destroy() on it if you don't need to +maintain a separate reference to it.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    target

    target surface for the context

     
    +
    +
    +

    Returns

    +

    a newly allocated cairo_t with a reference +count of 1. The initial reference count should be released +with cairo_destroy() when you are done using the cairo_t. +This function never returns NULL. If memory cannot be +allocated, a special cairo_t object will be returned on +which cairo_status() returns CAIRO_STATUS_NO_MEMORY. If +you attempt to target a surface which does not support +writing (such as cairo_mime_surface_t) then a +CAIRO_STATUS_WRITE_ERROR will be raised. You can use this +object normally, but no drawing will be done.

    +

    +

    Since 1.0


    -

    cairo_set_source ()

    -
    void                cairo_set_source                    (cairo_t *cr,
    -                                                         cairo_pattern_t *source);
    -

    -Sets the source pattern within cr to source. This pattern -will then be used for any subsequent drawing operation until a new -source pattern is set. -

    -

    -Note: The pattern's transformation matrix will be locked to the -user space in effect at the time of cairo_set_source(). This means -that further modifications of the current transformation matrix -will not affect the source pattern. See cairo_pattern_set_matrix(). -

    -

    -The default source pattern is a solid pattern that is opaque black, -(that is, it is equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, -0.0)). -

    -
    ---+

    cairo_reference ()

    +
    cairo_t *
    +cairo_reference (cairo_t *cr);
    +

    Increases the reference count on cr + by one. This prevents +cr + from being destroyed until a matching call to cairo_destroy() +is made.

    +

    The number of references to a cairo_t can be get using +cairo_get_reference_count().

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    source :

    a cairo_pattern_t to be used as the source for -subsequent drawing operations.

    cr

    a cairo_t

     
    +
    +
    +

    Returns

    +

    the referenced cairo_t.

    +

    +

    Since 1.0


    -

    cairo_set_source_surface ()

    -
    void                cairo_set_source_surface            (cairo_t *cr,
    -                                                         cairo_surface_t *surface,
    -                                                         double x,
    -                                                         double y);
    -

    -This is a convenience function for creating a pattern from surface -and setting it as the source in cr with cairo_set_source(). -

    -

    -The x and y parameters give the user-space coordinate at which -the surface origin should appear. (The surface origin is its -upper-left corner before any transformation has been applied.) The -x and y parameters are negated and then set as translation values -in the pattern matrix. -

    -

    -Other than the initial translation pattern matrix, as described -above, all other pattern attributes, (such as its extend mode), are -set to the default values as in cairo_pattern_create_for_surface(). -The resulting pattern can be queried with cairo_get_source() so -that these attributes can be modified if desired, (eg. to create a -repeating pattern with cairo_pattern_set_extend()). -

    -
    ---+

    cairo_destroy ()

    +
    void
    +cairo_destroy (cairo_t *cr);
    +

    Decreases the reference count on cr + by one. If the result +is zero, then cr + and all associated resources are freed. +See cairo_reference().

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - - - - - - - - - + + + + +

    cr :

    a cairo context

    surface :

    a surface to be used to set the source pattern

    x :

    User-space X coordinate for surface origin

    y :

    User-space Y coordinate for surface origin

    cr

    a cairo_t

     
    +

    Since 1.0


    -

    cairo_get_source ()

    -
    cairo_pattern_t *   cairo_get_source                    (cairo_t *cr);
    -

    -Gets the current source pattern for cr. -

    -
    ---+

    cairo_status ()

    +
    cairo_status_t
    +cairo_status (cairo_t *cr);
    +

    Checks whether an error has previously occurred for this context.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the current source pattern. This object is owned by -cairo. To keep a reference to it, you must call -cairo_pattern_reference().

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current status of this context, see cairo_status_t

    +

    +

    Since 1.0


    -

    enum cairo_antialias_t

    -
    typedef enum {
    -    CAIRO_ANTIALIAS_DEFAULT,
    -
    -    /* method */
    -    CAIRO_ANTIALIAS_NONE,
    -    CAIRO_ANTIALIAS_GRAY,
    -    CAIRO_ANTIALIAS_SUBPIXEL,
    -
    -    /* hints */
    -    CAIRO_ANTIALIAS_FAST,
    -    CAIRO_ANTIALIAS_GOOD,
    -    CAIRO_ANTIALIAS_BEST
    -} cairo_antialias_t;
    -
    -

    -Specifies the type of antialiasing to do when rendering text or shapes. -

    -

    -As it is not necessarily clear from the above what advantages a particular -antialias method provides, since 1.12, there is also a set of hints: -CAIRO_ANTIALIAS_FAST: Allow the backend to degrade raster quality for speed -CAIRO_ANTIALIAS_GOOD: A balance between speed and quality -CAIRO_ANTIALIAS_BEST: A high-fidelity, but potentially slow, raster mode -

    -

    -These make no guarantee on how the backend will perform its rasterisation -(if it even rasterises!), nor that they have any differing effect other -than to enable some form of antialiasing. In the case of glyph rendering, -CAIRO_ANTIALIAS_FAST and CAIRO_ANTIALIAS_GOOD will be mapped to -CAIRO_ANTIALIAS_GRAY, with CAIRO_ANTALIAS_BEST being equivalent to -CAIRO_ANTIALIAS_SUBPIXEL. -

    -

    -The interpretation of CAIRO_ANTIALIAS_DEFAULT is left entirely up to -the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD. -

    -
    ---+

    cairo_save ()

    +
    void
    +cairo_save (cairo_t *cr);
    +

    Makes a copy of the current state of cr + and saves it +on an internal stack of saved states for cr +. When +cairo_restore() is called, cr + will be restored to +the saved state. Multiple calls to cairo_save() and +cairo_restore() can be nested; each call to cairo_restore() +restores the state from the matching paired cairo_save().

    +

    It isn't necessary to clear all saved states before +a cairo_t is freed. If the reference count of a cairo_t +drops to zero in response to a call to cairo_destroy(), +any saved states will be freed along with the cairo_t.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +

    CAIRO_ANTIALIAS_DEFAULT

    Use the default antialiasing for - the subsystem and target device, since 1.0 -

    CAIRO_ANTIALIAS_NONE

    Use a bilevel alpha mask, since 1.0 -

    CAIRO_ANTIALIAS_GRAY

    Perform single-color antialiasing (using - shades of gray for black text on a white background, for example), since 1.0 -

    CAIRO_ANTIALIAS_SUBPIXEL

    Perform antialiasing by taking - advantage of the order of subpixel elements on devices - such as LCD panels, since 1.0 -

    CAIRO_ANTIALIAS_FAST

    Hint that the backend should perform some -antialiasing but prefer speed over quality, since 1.12 -

    CAIRO_ANTIALIAS_GOOD

    The backend should balance quality against -performance, since 1.12 -

    CAIRO_ANTIALIAS_BEST

    Hint that the backend should render at the highest -quality, sacrificing speed if necessary, since 1.12 -

    cr

    a cairo_t

     
    +

    Since 1.0


    -

    cairo_set_antialias ()

    -
    void                cairo_set_antialias                 (cairo_t *cr,
    -                                                         cairo_antialias_t antialias);
    -

    -Set the antialiasing mode of the rasterizer used for drawing shapes. -This value is a hint, and a particular backend may or may not support -a particular value. At the current time, no backend supports -CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes. -

    -

    -Note that this option does not affect text rendering, instead see -cairo_font_options_set_antialias(). -

    -
    ---+

    cairo_restore ()

    +
    void
    +cairo_restore (cairo_t *cr);
    +

    Restores cr + to the state saved by a preceding call to +cairo_save() and removes that state from the stack of +saved states.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo_t -

    antialias :

    the new antialiasing mode

    cr

    a cairo_t

     
    +

    Since 1.0


    -

    cairo_get_antialias ()

    -
    cairo_antialias_t   cairo_get_antialias                 (cairo_t *cr);
    -

    -Gets the current shape antialiasing mode, as set by -cairo_set_antialias(). -

    -
    ---+

    cairo_get_target ()

    +
    cairo_surface_t *
    +cairo_get_target (cairo_t *cr);
    +

    Gets the target surface for the cairo context as passed to +cairo_create().

    +

    This function will always return a valid pointer, but the result +can be a "nil" surface if cr + is already in an error state, +(ie. cairo_status() != CAIRO_STATUS_SUCCESS). +A nil surface is indicated by cairo_surface_status() +!= CAIRO_STATUS_SUCCESS.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the current shape antialiasing mode.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the target surface. This object is owned by cairo. To +keep a reference to it, you must call cairo_surface_reference().

    +

    +

    Since 1.0


    -

    cairo_set_dash ()

    -
    void                cairo_set_dash                      (cairo_t *cr,
    -                                                         const double *dashes,
    -                                                         int num_dashes,
    -                                                         double offset);
    -

    -Sets the dash pattern to be used by cairo_stroke(). A dash pattern -is specified by dashes, an array of positive values. Each value -provides the length of alternate "on" and "off" portions of the -stroke. The offset specifies an offset into the pattern at which -the stroke begins. -

    -

    -Each "on" segment will have caps applied as if the segment were a -separate sub-path. In particular, it is valid to use an "on" length -of 0.0 with CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE in order -to distributed dots or squares along a path. -

    -

    -Note: The length values are in user-space units as evaluated at the -time of stroking. This is not necessarily the same as the user -space at the time of cairo_set_dash(). -

    -

    -If num_dashes is 0 dashing is disabled. -

    -

    -If num_dashes is 1 a symmetric pattern is assumed with alternating -on and off portions of the size specified by the single value in -dashes. -

    -

    -If any value in dashes is negative, or if all values are 0, then -cr will be put into an error state with a status of -CAIRO_STATUS_INVALID_DASH. -

    -
    ---+

    cairo_push_group ()

    +
    void
    +cairo_push_group (cairo_t *cr);
    +

    Temporarily redirects drawing to an intermediate surface known as a +group. The redirection lasts until the group is completed by a call +to cairo_pop_group() or cairo_pop_group_to_source(). These calls +provide the result of any drawing to the group as a pattern, +(either as an explicit object, or set as the source pattern).

    +

    This group functionality can be convenient for performing +intermediate compositing. One common use of a group is to render +objects as opaque within the group, (so that they occlude each +other), and then blend the result with translucence onto the +destination.

    +

    Groups can be nested arbitrarily deep by making balanced calls to +cairo_push_group()/cairo_pop_group(). Each call pushes/pops the new +target group onto/from a stack.

    +

    The cairo_push_group() function calls cairo_save() so that any +changes to the graphics state will not be visible outside the +group, (the pop_group functions call cairo_restore()).

    +

    By default the intermediate group will have a content type of +CAIRO_CONTENT_COLOR_ALPHA. Other content types can be chosen for +the group by using cairo_push_group_with_content() instead.

    +

    As an example, here is how one might fill and stroke a path with +translucence, but without any portion of the fill being visible +under the stroke:

    +
    +cairo_push_group (cr);
    +cairo_set_source (cr, fill_pattern);
    +cairo_fill_preserve (cr);
    +cairo_set_source (cr, stroke_pattern);
    +cairo_stroke (cr);
    +cairo_pop_group_to_source (cr);
    +cairo_paint_with_alpha (cr, alpha);
    +
    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - - - - - - - - - + + + + +

    cr :

    a cairo context

    dashes :

    an array specifying alternate lengths of on and off stroke portions

    num_dashes :

    the length of the dashes array

    offset :

    an offset into the dash pattern at which the stroke should start

    cr

    a cairo context

     
    -

    Since 1.0

    +
    +

    Since 1.2


    -

    cairo_get_dash_count ()

    -
    int                 cairo_get_dash_count                (cairo_t *cr);
    -

    -This function returns the length of the dash array in cr (0 if dashing -is not currently in effect). -

    -

    -See also cairo_set_dash() and cairo_get_dash(). -

    -
    +

    cairo_push_group_with_content ()

    +
    void
    +cairo_push_group_with_content (cairo_t *cr,
    +                               cairo_content_t content);
    +

    Temporarily redirects drawing to an intermediate surface known as a +group. The redirection lasts until the group is completed by a call +to cairo_pop_group() or cairo_pop_group_to_source(). These calls +provide the result of any drawing to the group as a pattern, +(either as an explicit object, or set as the source pattern).

    +

    The group will have a content type of content +. The ability to +control this content type is the only distinction between this +function and cairo_push_group() which you should see for a more +detailed description of group rendering.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo context

     

    Returns :

    the length of the dash array, or 0 if no dash array set.

    content

    a cairo_content_t indicating the type of group that +will be created

     
    -

    Since 1.4

    +
    +

    Since 1.2


    -

    cairo_get_dash ()

    -
    void                cairo_get_dash                      (cairo_t *cr,
    -                                                         double *dashes,
    -                                                         double *offset);
    -

    -Gets the current dash array. If not NULL, dashes should be big -enough to hold at least the number of values returned by -cairo_get_dash_count(). -

    -
    ---+

    cairo_pop_group ()

    +
    cairo_pattern_t *
    +cairo_pop_group (cairo_t *cr);
    +

    Terminates the redirection begun by a call to cairo_push_group() or +cairo_push_group_with_content() and returns a new pattern +containing the results of all drawing operations performed to the +group.

    +

    The cairo_pop_group() function calls cairo_restore(), (balancing a +call to cairo_save() by the push_group function), so that any +changes to the graphics state will not be visible outside the +group.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - - - - - + + + + +

    cr :

    a cairo_t -

    dashes :

    return value for the dash array, or NULL -

    offset :

    return value for the current dash offset, or NULL -

    cr

    a cairo context

     
    -

    Since 1.4

    +
    +
    +

    Returns

    +

    a newly created (surface) pattern containing the +results of all drawing operations performed to the group. The +caller owns the returned object and should call +cairo_pattern_destroy() when finished with it.

    +

    +
    +

    Since 1.2


    -

    enum cairo_fill_rule_t

    -
    typedef enum {
    -    CAIRO_FILL_RULE_WINDING,
    -    CAIRO_FILL_RULE_EVEN_ODD
    -} cairo_fill_rule_t;
    -
    -

    -cairo_fill_rule_t is used to select how paths are filled. For both -fill rules, whether or not a point is included in the fill is -determined by taking a ray from that point to infinity and looking -at intersections with the path. The ray can be in any direction, -as long as it doesn't pass through the end point of a segment -or have a tricky intersection such as intersecting tangent to the path. -(Note that filling is not actually implemented in this way. This -is just a description of the rule that is applied.) -

    -

    -The default fill rule is CAIRO_FILL_RULE_WINDING. -

    -

    -New entries may be added in future versions. -

    -
    +

    cairo_pop_group_to_source ()

    +
    void
    +cairo_pop_group_to_source (cairo_t *cr);
    +

    Terminates the redirection begun by a call to cairo_push_group() or +cairo_push_group_with_content() and installs the resulting pattern +as the source pattern in the given cairo context.

    +

    The behavior of this function is equivalent to the sequence of +operations:

    +
    +cairo_pattern_t *group = cairo_pop_group (cr);
    +cairo_set_source (cr, group);
    +cairo_pattern_destroy (group);
    +
    +

    but is more convenient as their is no need for a variable to store +the short-lived pointer to the pattern.

    +

    The cairo_pop_group() function calls cairo_restore(), (balancing a +call to cairo_save() by the push_group function), so that any +changes to the graphics state will not be visible outside the +group.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.2

    + +
    +
    +

    cairo_get_group_target ()

    +
    cairo_surface_t *
    +cairo_get_group_target (cairo_t *cr);
    +

    Gets the current destination surface for the context. This is either +the original target surface as passed to cairo_create() or the target +surface for the current group as started by the most recent call to +cairo_push_group() or cairo_push_group_with_content().

    +

    This function will always return a valid pointer, but the result +can be a "nil" surface if cr + is already in an error state, +(ie. cairo_status() != CAIRO_STATUS_SUCCESS). +A nil surface is indicated by cairo_surface_status() +!= CAIRO_STATUS_SUCCESS.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the target surface. This object is owned by cairo. To +keep a reference to it, you must call cairo_surface_reference().

    +

    +
    +

    Since 1.2

    +
    +
    +
    +

    cairo_set_source_rgb ()

    +
    void
    +cairo_set_source_rgb (cairo_t *cr,
    +                      double red,
    +                      double green,
    +                      double blue);
    +

    Sets the source pattern within cr + to an opaque color. This opaque +color will then be used for any subsequent drawing operation until +a new source pattern is set.

    +

    The color components are floating point numbers in the range 0 to

    +
    1. If the values passed in are outside that range, they will be +clamped.

    +

    The default source pattern is opaque black, (that is, it is +equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)).

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + + + + + + - - + + +

    CAIRO_FILL_RULE_WINDING

    If the path crosses the ray from -left-to-right, counts +1. If the path crosses the ray -from right to left, counts -1. (Left and right are determined -from the perspective of looking along the ray from the starting -point.) If the total count is non-zero, the point will be filled. (Since 1.0) -

    cr

    a cairo context

     

    red

    red component of color

     

    green

    green component of color

     

    CAIRO_FILL_RULE_EVEN_ODD

    Counts the total number of -intersections, without regard to the orientation of the contour. If -the total number of intersections is odd, the point will be -filled. (Since 1.0) -

    blue

    blue component of color

     
    +

    Since 1.0


    -

    cairo_set_fill_rule ()

    -
    void                cairo_set_fill_rule                 (cairo_t *cr,
    -                                                         cairo_fill_rule_t fill_rule);
    -

    -Set the current fill rule within the cairo context. The fill rule -is used to determine which regions are inside or outside a complex -(potentially self-intersecting) path. The current fill rule affects -both cairo_fill() and cairo_clip(). See cairo_fill_rule_t for details -on the semantics of each available fill rule. -

    -

    -The default fill rule is CAIRO_FILL_RULE_WINDING. -

    -
    +

    cairo_set_source_rgba ()

    +
    void
    +cairo_set_source_rgba (cairo_t *cr,
    +                       double red,
    +                       double green,
    +                       double blue,
    +                       double alpha);
    +

    Sets the source pattern within cr + to a translucent color. This +color will then be used for any subsequent drawing operation until +a new source pattern is set.

    +

    The color and alpha components are floating point numbers in the +range 0 to 1. If the values passed in are outside that range, they +will be clamped.

    +

    The default source pattern is opaque black, (that is, it is +equivalent to cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0)).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + + + + + + + + + + + + + + + +

    cr :

    a cairo_t -

    cr

    a cairo context

     

    fill_rule :

    a fill rule, specified as a cairo_fill_rule_t -

    red

    red component of color

     

    green

    green component of color

     

    blue

    blue component of color

     

    alpha

    alpha component of color

     
    +

    Since 1.0


    -

    cairo_get_fill_rule ()

    -
    cairo_fill_rule_t   cairo_get_fill_rule                 (cairo_t *cr);
    -

    -Gets the current fill rule, as set by cairo_set_fill_rule(). -

    -
    +

    cairo_set_source ()

    +
    void
    +cairo_set_source (cairo_t *cr,
    +                  cairo_pattern_t *source);
    +

    Sets the source pattern within cr + to source +. This pattern +will then be used for any subsequent drawing operation until a new +source pattern is set.

    +

    Note: The pattern's transformation matrix will be locked to the +user space in effect at the time of cairo_set_source(). This means +that further modifications of the current transformation matrix +will not affect the source pattern. See cairo_pattern_set_matrix().

    +

    The default source pattern is a solid pattern that is opaque black, +(that is, it is equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, +0.0)).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    Returns :

    the current fill rule.

    source

    a cairo_pattern_t to be used as the source for +subsequent drawing operations.

     
    +

    Since 1.0


    -

    enum cairo_line_cap_t

    -
    typedef enum {
    -    CAIRO_LINE_CAP_BUTT,
    -    CAIRO_LINE_CAP_ROUND,
    -    CAIRO_LINE_CAP_SQUARE
    -} cairo_line_cap_t;
    -
    -

    -Specifies how to render the endpoints of the path when stroking. -

    -

    -The default line cap style is CAIRO_LINE_CAP_BUTT. -

    -
    +

    cairo_set_source_surface ()

    +
    void
    +cairo_set_source_surface (cairo_t *cr,
    +                          cairo_surface_t *surface,
    +                          double x,
    +                          double y);
    +

    This is a convenience function for creating a pattern from surface + +and setting it as the source in cr + with cairo_set_source().

    +

    The x + and y + parameters give the user-space coordinate at which +the surface origin should appear. (The surface origin is its +upper-left corner before any transformation has been applied.) The +x + and y + parameters are negated and then set as translation values +in the pattern matrix.

    +

    Other than the initial translation pattern matrix, as described +above, all other pattern attributes, (such as its extend mode), are +set to the default values as in cairo_pattern_create_for_surface(). +The resulting pattern can be queried with cairo_get_source() so +that these attributes can be modified if desired, (eg. to create a +repeating pattern with cairo_pattern_set_extend()).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + + + + + +

    CAIRO_LINE_CAP_BUTT

    start(stop) the line exactly at the start(end) point (Since 1.0) -

    cr

    a cairo context

     

    CAIRO_LINE_CAP_ROUND

    use a round ending, the center of the circle is the end point (Since 1.0) -

    surface

    a surface to be used to set the source pattern

     

    CAIRO_LINE_CAP_SQUARE

    use squared ending, the center of the square is the end point (Since 1.0) -

    x

    User-space X coordinate for surface origin

     

    y

    User-space Y coordinate for surface origin

     
    +

    Since 1.0


    -

    cairo_set_line_cap ()

    -
    void                cairo_set_line_cap                  (cairo_t *cr,
    -                                                         cairo_line_cap_t line_cap);
    -

    -Sets the current line cap style within the cairo context. See -cairo_line_cap_t for details about how the available line cap -styles are drawn. -

    -

    -As with the other stroke parameters, the current line cap style is -examined by cairo_stroke(), cairo_stroke_extents(), and -cairo_stroke_to_path(), but does not have any effect during path -construction. -

    -

    -The default line cap style is CAIRO_LINE_CAP_BUTT. -

    -
    +

    cairo_get_source ()

    +
    cairo_pattern_t *
    +cairo_get_source (cairo_t *cr);
    +

    Gets the current source pattern for cr +.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    line_cap :

    a line cap style

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current source pattern. This object is owned by +cairo. To keep a reference to it, you must call +cairo_pattern_reference().

    +

    +

    Since 1.0


    -

    cairo_get_line_cap ()

    -
    cairo_line_cap_t    cairo_get_line_cap                  (cairo_t *cr);
    -

    -Gets the current line cap style, as set by cairo_set_line_cap(). -

    -
    +

    cairo_set_antialias ()

    +
    void
    +cairo_set_antialias (cairo_t *cr,
    +                     cairo_antialias_t antialias);
    +

    Set the antialiasing mode of the rasterizer used for drawing shapes. +This value is a hint, and a particular backend may or may not support +a particular value. At the current time, no backend supports +CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes.

    +

    Note that this option does not affect text rendering, instead see +cairo_font_options_set_antialias().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo_t

     

    Returns :

    the current line cap style.

    antialias

    the new antialiasing mode

     
    +

    Since 1.0


    -

    enum cairo_line_join_t

    -
    typedef enum {
    -    CAIRO_LINE_JOIN_MITER,
    -    CAIRO_LINE_JOIN_ROUND,
    -    CAIRO_LINE_JOIN_BEVEL
    -} cairo_line_join_t;
    -
    -

    -Specifies how to render the junction of two lines when stroking. -

    -

    -The default line join style is CAIRO_LINE_JOIN_MITER. -

    -
    +

    cairo_get_antialias ()

    +
    cairo_antialias_t
    +cairo_get_antialias (cairo_t *cr);
    +

    Gets the current shape antialiasing mode, as set by +cairo_set_antialias().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current shape antialiasing mode.

    +

    +
    +

    Since 1.0

    + +
    +
    +

    cairo_set_dash ()

    +
    void
    +cairo_set_dash (cairo_t *cr,
    +                const double *dashes,
    +                int num_dashes,
    +                double offset);
    +

    Sets the dash pattern to be used by cairo_stroke(). A dash pattern +is specified by dashes +, an array of positive values. Each value +provides the length of alternate "on" and "off" portions of the +stroke. The offset + specifies an offset into the pattern at which +the stroke begins.

    +

    Each "on" segment will have caps applied as if the segment were a +separate sub-path. In particular, it is valid to use an "on" length +of 0.0 with CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE in order +to distributed dots or squares along a path.

    +

    Note: The length values are in user-space units as evaluated at the +time of stroking. This is not necessarily the same as the user +space at the time of cairo_set_dash().

    +

    If num_dashes + is 0 dashing is disabled.

    +

    If num_dashes + is 1 a symmetric pattern is assumed with alternating +on and off portions of the size specified by the single value in +dashes +.

    +

    If any value in dashes + is negative, or if all values are 0, then +cr + will be put into an error state with a status of +CAIRO_STATUS_INVALID_DASH.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + + + + + +

    CAIRO_LINE_JOIN_MITER

    use a sharp (angled) corner, see -cairo_set_miter_limit() (Since 1.0) -

    cr

    a cairo context

     

    CAIRO_LINE_JOIN_ROUND

    use a rounded join, the center of the circle is the -joint point (Since 1.0) -

    dashes

    an array specifying alternate lengths of on and off stroke portions

     

    CAIRO_LINE_JOIN_BEVEL

    use a cut-off join, the join is cut off at half -the line width from the joint point (Since 1.0) -

    num_dashes

    the length of the dashes array

     

    offset

    an offset into the dash pattern at which the stroke should start

     
    +

    Since 1.0


    -

    cairo_set_line_join ()

    -
    void                cairo_set_line_join                 (cairo_t *cr,
    -                                                         cairo_line_join_t line_join);
    -

    -Sets the current line join style within the cairo context. See -cairo_line_join_t for details about how the available line join -styles are drawn. -

    -

    -As with the other stroke parameters, the current line join style is -examined by cairo_stroke(), cairo_stroke_extents(), and -cairo_stroke_to_path(), but does not have any effect during path -construction. -

    -

    -The default line join style is CAIRO_LINE_JOIN_MITER. -

    -
    +

    cairo_get_dash_count ()

    +
    int
    +cairo_get_dash_count (cairo_t *cr);
    +

    This function returns the length of the dash array in cr + (0 if dashing +is not currently in effect).

    +

    See also cairo_set_dash() and cairo_get_dash().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo_t

     
    +
    +
    +

    Returns

    +

    the length of the dash array, or 0 if no dash array set.

    +

    +
    +

    Since 1.4

    + +
    +
    +

    cairo_get_dash ()

    +
    void
    +cairo_get_dash (cairo_t *cr,
    +                double *dashes,
    +                double *offset);
    +

    Gets the current dash array. If not NULL, dashes + should be big +enough to hold at least the number of values returned by +cairo_get_dash_count().

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo_t

     

    dashes

    return value for the dash array, or NULL

     

    line_join :

    a line join style

    offset

    return value for the current dash offset, or NULL

     
    -

    Since 1.0

    +
    +

    Since 1.4


    -

    cairo_get_line_join ()

    -
    cairo_line_join_t   cairo_get_line_join                 (cairo_t *cr);
    -

    -Gets the current line join style, as set by cairo_set_line_join(). -

    -
    +

    cairo_set_fill_rule ()

    +
    void
    +cairo_set_fill_rule (cairo_t *cr,
    +                     cairo_fill_rule_t fill_rule);
    +

    Set the current fill rule within the cairo context. The fill rule +is used to determine which regions are inside or outside a complex +(potentially self-intersecting) path. The current fill rule affects +both cairo_fill() and cairo_clip(). See cairo_fill_rule_t for details +on the semantics of each available fill rule.

    +

    The default fill rule is CAIRO_FILL_RULE_WINDING.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo_t

     

    Returns :

    the current line join style.

    fill_rule

    a fill rule, specified as a cairo_fill_rule_t

     
    +

    Since 1.0


    -

    cairo_set_line_width ()

    -
    void                cairo_set_line_width                (cairo_t *cr,
    -                                                         double width);
    -

    -Sets the current line width within the cairo context. The line -width value specifies the diameter of a pen that is circular in -user space, (though device-space pen may be an ellipse in general -due to scaling/shear/rotation of the CTM). -

    -

    -Note: When the description above refers to user space and CTM it -refers to the user space and CTM in effect at the time of the -stroking operation, not the user space and CTM in effect at the -time of the call to cairo_set_line_width(). The simplest usage -makes both of these spaces identical. That is, if there is no -change to the CTM between a call to cairo_set_line_width() and the -stroking operation, then one can just pass user-space values to -cairo_set_line_width() and ignore this note. -

    -

    -As with the other stroke parameters, the current line width is -examined by cairo_stroke(), cairo_stroke_extents(), and +

    cairo_get_fill_rule ()

    +
    cairo_fill_rule_t
    +cairo_get_fill_rule (cairo_t *cr);
    +

    Gets the current fill rule, as set by cairo_set_fill_rule().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current fill rule.

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_set_line_cap ()

    +
    void
    +cairo_set_line_cap (cairo_t *cr,
    +                    cairo_line_cap_t line_cap);
    +

    Sets the current line cap style within the cairo context. See +cairo_line_cap_t for details about how the available line cap +styles are drawn.

    +

    As with the other stroke parameters, the current line cap style is +examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. -

    -

    -The default line width value is 2.0. -

    -
    +construction.

    +

    The default line cap style is CAIRO_LINE_CAP_BUTT.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo context

     

    width :

    a line width

    line_cap

    a line cap style

     
    +

    Since 1.0


    -

    cairo_get_line_width ()

    -
    double              cairo_get_line_width                (cairo_t *cr);
    -

    -This function returns the current line width value exactly as set by -cairo_set_line_width(). Note that the value is unchanged even if -the CTM has changed between the calls to cairo_set_line_width() and -cairo_get_line_width(). -

    -
    +

    cairo_get_line_cap ()

    +
    cairo_line_cap_t
    +cairo_get_line_cap (cairo_t *cr);
    +

    Gets the current line cap style, as set by cairo_set_line_cap().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the current line width.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current line cap style.

    +

    +

    Since 1.0


    -

    cairo_set_miter_limit ()

    -
    void                cairo_set_miter_limit               (cairo_t *cr,
    -                                                         double limit);
    -

    -Sets the current miter limit within the cairo context. -

    -

    -If the current line join style is set to CAIRO_LINE_JOIN_MITER -(see cairo_set_line_join()), the miter limit is used to determine -whether the lines should be joined with a bevel instead of a miter. -Cairo divides the length of the miter by the line width. -If the result is greater than the miter limit, the style is -converted to a bevel. -

    -

    -As with the other stroke parameters, the current line miter limit is -examined by cairo_stroke(), cairo_stroke_extents(), and +

    cairo_set_line_join ()

    +
    void
    +cairo_set_line_join (cairo_t *cr,
    +                     cairo_line_join_t line_join);
    +

    Sets the current line join style within the cairo context. See +cairo_line_join_t for details about how the available line join +styles are drawn.

    +

    As with the other stroke parameters, the current line join style is +examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. -

    -

    -The default miter limit value is 10.0, which will convert joins -with interior angles less than 11 degrees to bevels instead of -miters. For reference, a miter limit of 2.0 makes the miter cutoff -at 60 degrees, and a miter limit of 1.414 makes the cutoff at 90 -degrees. -

    -

    -A miter limit for a desired angle can be computed as: miter limit = -1/sin(angle/2) -

    -
    +construction.

    +

    The default line join style is CAIRO_LINE_JOIN_MITER.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    limit :

    miter limit to set

    line_join

    a line join style

     
    +

    Since 1.0


    -

    cairo_get_miter_limit ()

    -
    double              cairo_get_miter_limit               (cairo_t *cr);
    -

    -Gets the current miter limit, as set by cairo_set_miter_limit(). -

    -
    +

    cairo_get_line_join ()

    +
    cairo_line_join_t
    +cairo_get_line_join (cairo_t *cr);
    +

    Gets the current line join style, as set by cairo_set_line_join().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the current miter limit.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current line join style.

    +

    +

    Since 1.0


    -

    enum cairo_operator_t

    -
    typedef enum {
    -    CAIRO_OPERATOR_CLEAR,
    -
    -    CAIRO_OPERATOR_SOURCE,
    -    CAIRO_OPERATOR_OVER,
    -    CAIRO_OPERATOR_IN,
    -    CAIRO_OPERATOR_OUT,
    -    CAIRO_OPERATOR_ATOP,
    -
    -    CAIRO_OPERATOR_DEST,
    -    CAIRO_OPERATOR_DEST_OVER,
    -    CAIRO_OPERATOR_DEST_IN,
    -    CAIRO_OPERATOR_DEST_OUT,
    -    CAIRO_OPERATOR_DEST_ATOP,
    -
    -    CAIRO_OPERATOR_XOR,
    -    CAIRO_OPERATOR_ADD,
    -    CAIRO_OPERATOR_SATURATE,
    -
    -    CAIRO_OPERATOR_MULTIPLY,
    -    CAIRO_OPERATOR_SCREEN,
    -    CAIRO_OPERATOR_OVERLAY,
    -    CAIRO_OPERATOR_DARKEN,
    -    CAIRO_OPERATOR_LIGHTEN,
    -    CAIRO_OPERATOR_COLOR_DODGE,
    -    CAIRO_OPERATOR_COLOR_BURN,
    -    CAIRO_OPERATOR_HARD_LIGHT,
    -    CAIRO_OPERATOR_SOFT_LIGHT,
    -    CAIRO_OPERATOR_DIFFERENCE,
    -    CAIRO_OPERATOR_EXCLUSION,
    -    CAIRO_OPERATOR_HSL_HUE,
    -    CAIRO_OPERATOR_HSL_SATURATION,
    -    CAIRO_OPERATOR_HSL_COLOR,
    -    CAIRO_OPERATOR_HSL_LUMINOSITY
    -} cairo_operator_t;
    -
    -

    -cairo_operator_t is used to set the compositing operator for all cairo -drawing operations. -

    -

    -The default operator is CAIRO_OPERATOR_OVER. -

    -

    -The operators marked as unbounded modify their -destination even outside of the mask layer (that is, their effect is not -bound by the mask layer). However, their effect can still be limited by -way of clipping. -

    -

    -To keep things simple, the operator descriptions here -document the behavior for when both source and destination are either fully -transparent or fully opaque. The actual implementation works for -translucent layers too. -For a more detailed explanation of the effects of each operator, including -the mathematical definitions, see -http://cairographics.org/operators/. -

    -
    +

    cairo_set_line_width ()

    +
    void
    +cairo_set_line_width (cairo_t *cr,
    +                      double width);
    +

    Sets the current line width within the cairo context. The line +width value specifies the diameter of a pen that is circular in +user space, (though device-space pen may be an ellipse in general +due to scaling/shear/rotation of the CTM).

    +

    Note: When the description above refers to user space and CTM it +refers to the user space and CTM in effect at the time of the +stroking operation, not the user space and CTM in effect at the +time of the call to cairo_set_line_width(). The simplest usage +makes both of these spaces identical. That is, if there is no +change to the CTM between a call to cairo_set_line_width() and the +stroking operation, then one can just pass user-space values to +cairo_set_line_width() and ignore this note.

    +

    As with the other stroke parameters, the current line width is +examined by cairo_stroke(), cairo_stroke_extents(), and +cairo_stroke_to_path(), but does not have any effect during path +construction.

    +

    The default line width value is 2.0.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +

    CAIRO_OPERATOR_CLEAR

    clear destination layer (bounded) (Since 1.0) -

    CAIRO_OPERATOR_SOURCE

    replace destination layer (bounded) (Since 1.0) -

    CAIRO_OPERATOR_OVER

    draw source layer on top of destination layer -(bounded) (Since 1.0) -

    CAIRO_OPERATOR_IN

    draw source where there was destination content -(unbounded) (Since 1.0) -

    CAIRO_OPERATOR_OUT

    draw source where there was no destination -content (unbounded) (Since 1.0) -

    CAIRO_OPERATOR_ATOP

    draw source on top of destination content and -only there (Since 1.0) -

    CAIRO_OPERATOR_DEST

    ignore the source (Since 1.0) -

    CAIRO_OPERATOR_DEST_OVER

    draw destination on top of source (Since 1.0) -

    CAIRO_OPERATOR_DEST_IN

    leave destination only where there was -source content (unbounded) (Since 1.0) -

    CAIRO_OPERATOR_DEST_OUT

    leave destination only where there was no -source content (Since 1.0) -

    CAIRO_OPERATOR_DEST_ATOP

    leave destination on top of source content -and only there (unbounded) (Since 1.0) -

    CAIRO_OPERATOR_XOR

    source and destination are shown where there is only -one of them (Since 1.0) -

    CAIRO_OPERATOR_ADD

    source and destination layers are accumulated (Since 1.0) -

    CAIRO_OPERATOR_SATURATE

    like over, but assuming source and dest are -disjoint geometries (Since 1.0) -

    CAIRO_OPERATOR_MULTIPLY

    source and destination layers are multiplied. -This causes the result to be at least as dark as the darker inputs. (Since 1.10) -

    CAIRO_OPERATOR_SCREEN

    source and destination are complemented and -multiplied. This causes the result to be at least as light as the lighter -inputs. (Since 1.10) -

    CAIRO_OPERATOR_OVERLAY

    multiplies or screens, depending on the -lightness of the destination color. (Since 1.10) -

    CAIRO_OPERATOR_DARKEN

    replaces the destination with the source if it -is darker, otherwise keeps the source. (Since 1.10) -

    CAIRO_OPERATOR_LIGHTEN

    replaces the destination with the source if it -is lighter, otherwise keeps the source. (Since 1.10) -

    CAIRO_OPERATOR_COLOR_DODGE

    brightens the destination color to reflect -the source color. (Since 1.10) -

    cr

    a cairo_t

     

    CAIRO_OPERATOR_COLOR_BURN

    darkens the destination color to reflect -the source color. (Since 1.10) -

    CAIRO_OPERATOR_HARD_LIGHT

    Multiplies or screens, dependent on source -color. (Since 1.10) -

    CAIRO_OPERATOR_SOFT_LIGHT

    Darkens or lightens, dependent on source -color. (Since 1.10) -

    CAIRO_OPERATOR_DIFFERENCE

    Takes the difference of the source and -destination color. (Since 1.10) -

    CAIRO_OPERATOR_EXCLUSION

    Produces an effect similar to difference, but -with lower contrast. (Since 1.10) -

    CAIRO_OPERATOR_HSL_HUE

    Creates a color with the hue of the source -and the saturation and luminosity of the target. (Since 1.10) -

    CAIRO_OPERATOR_HSL_SATURATION

    Creates a color with the saturation -of the source and the hue and luminosity of the target. Painting with -this mode onto a gray area produces no change. (Since 1.10) -

    CAIRO_OPERATOR_HSL_COLOR

    Creates a color with the hue and saturation -of the source and the luminosity of the target. This preserves the gray -levels of the target and is useful for coloring monochrome images or -tinting color images. (Since 1.10) -

    CAIRO_OPERATOR_HSL_LUMINOSITY

    Creates a color with the luminosity of -the source and the hue and saturation of the target. This produces an -inverse effect to CAIRO_OPERATOR_HSL_COLOR. (Since 1.10) -

    width

    a line width

     
    +
    +

    Since 1.0

    + +
    +
    +

    cairo_get_line_width ()

    +
    double
    +cairo_get_line_width (cairo_t *cr);
    +

    This function returns the current line width value exactly as set by +cairo_set_line_width(). Note that the value is unchanged even if +the CTM has changed between the calls to cairo_set_line_width() and +cairo_get_line_width().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current line width.

    +

    +

    Since 1.0


    -

    cairo_set_operator ()

    -
    void                cairo_set_operator                  (cairo_t *cr,
    -                                                         cairo_operator_t op);
    -

    -Sets the compositing operator to be used for all drawing -operations. See cairo_operator_t for details on the semantics of -each available compositing operator. -

    -

    -The default operator is CAIRO_OPERATOR_OVER. -

    -
    +

    cairo_set_miter_limit ()

    +
    void
    +cairo_set_miter_limit (cairo_t *cr,
    +                       double limit);
    +

    Sets the current miter limit within the cairo context.

    +

    If the current line join style is set to CAIRO_LINE_JOIN_MITER +(see cairo_set_line_join()), the miter limit is used to determine +whether the lines should be joined with a bevel instead of a miter. +Cairo divides the length of the miter by the line width. +If the result is greater than the miter limit, the style is +converted to a bevel.

    +

    As with the other stroke parameters, the current line miter limit is +examined by cairo_stroke(), cairo_stroke_extents(), and +cairo_stroke_to_path(), but does not have any effect during path +construction.

    +

    The default miter limit value is 10.0, which will convert joins +with interior angles less than 11 degrees to bevels instead of +miters. For reference, a miter limit of 2.0 makes the miter cutoff +at 60 degrees, and a miter limit of 1.414 makes the cutoff at 90 +degrees.

    +

    A miter limit for a desired angle can be computed as: miter limit = +1/sin(angle/2)

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo context

     

    op :

    a compositing operator, specified as a cairo_operator_t -

    limit

    miter limit to set

     
    +
    +

    Since 1.0

    + +
    +
    +

    cairo_get_miter_limit ()

    +
    double
    +cairo_get_miter_limit (cairo_t *cr);
    +

    Gets the current miter limit, as set by cairo_set_miter_limit().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current miter limit.

    +

    +

    Since 1.0


    -

    cairo_get_operator ()

    -
    cairo_operator_t    cairo_get_operator                  (cairo_t *cr);
    -

    -Gets the current compositing operator for a cairo context. -

    -
    +

    cairo_set_operator ()

    +
    void
    +cairo_set_operator (cairo_t *cr,
    +                    cairo_operator_t op);
    +

    Sets the compositing operator to be used for all drawing +operations. See cairo_operator_t for details on the semantics of +each available compositing operator.

    +

    The default operator is CAIRO_OPERATOR_OVER.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo_t

     

    Returns :

    the current compositing operator.

    op

    a compositing operator, specified as a cairo_operator_t

     
    +
    +

    Since 1.0

    + +
    +
    +

    cairo_get_operator ()

    +
    cairo_operator_t
    +cairo_get_operator (cairo_t *cr);
    +

    Gets the current compositing operator for a cairo context.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current compositing operator.

    +

    +

    Since 1.0


    -

    cairo_set_tolerance ()

    -
    void                cairo_set_tolerance                 (cairo_t *cr,
    -                                                         double tolerance);
    -

    -Sets the tolerance used when converting paths into trapezoids. +

    cairo_set_tolerance ()

    +
    void
    +cairo_set_tolerance (cairo_t *cr,
    +                     double tolerance);
    +

    Sets the tolerance used when converting paths into trapezoids. Curved segments of the path will be subdivided until the maximum deviation between the original path and the polygonal approximation -is less than tolerance. The default value is 0.1. A larger +is less than tolerance +. The default value is 0.1. A larger value will give better performance, a smaller value, better appearance. (Reducing the value from the default value of 0.1 is unlikely to improve appearance significantly.) The accuracy of paths within Cairo is limited by the precision of its internal arithmetic, and -the prescribed tolerance is restricted to the smallest -representable internal value. -

    -
    +the prescribed tolerance + is restricted to the smallest +representable internal value.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    tolerance :

    the tolerance, in device units (typically pixels)

    tolerance

    the tolerance, in device units (typically pixels)

     
    +

    Since 1.0


    -

    cairo_get_tolerance ()

    -
    double              cairo_get_tolerance                 (cairo_t *cr);
    -

    -Gets the current tolerance value, as set by cairo_set_tolerance(). -

    -
    +

    cairo_get_tolerance ()

    +
    double
    +cairo_get_tolerance (cairo_t *cr);
    +

    Gets the current tolerance value, as set by cairo_set_tolerance().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the current tolerance value.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current tolerance value.

    +

    +

    Since 1.0


    -

    cairo_clip ()

    -
    void                cairo_clip                          (cairo_t *cr);
    -

    -Establishes a new clip region by intersecting the current clip -region with the current path as it would be filled by cairo_fill() -and according to the current fill rule (see cairo_set_fill_rule()). -

    -

    -After cairo_clip(), the current path will be cleared from the cairo -context. -

    -

    -The current clip region affects all drawing operations by +

    cairo_clip ()

    +
    void
    +cairo_clip (cairo_t *cr);
    +

    Establishes a new clip region by intersecting the current clip +region with the current path as it would be filled by cairo_fill() +and according to the current fill rule (see cairo_set_fill_rule()).

    +

    After cairo_clip(), the current path will be cleared from the cairo +context.

    +

    The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside -the current clip region. -

    -

    -Calling cairo_clip() can only make the clip region smaller, never +the current clip region.

    +

    Calling cairo_clip() can only make the clip region smaller, never larger. But the current clip is part of the graphics state, so a temporary restriction of the clip region can be achieved by -calling cairo_clip() within a cairo_save()/cairo_restore() +calling cairo_clip() within a cairo_save()/cairo_restore() pair. The only other means of increasing the size of the clip -region is cairo_reset_clip(). -

    -
    ---+region is cairo_reset_clip().

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_clip_preserve ()

    -
    void                cairo_clip_preserve                 (cairo_t *cr);
    -

    -Establishes a new clip region by intersecting the current clip -region with the current path as it would be filled by cairo_fill() -and according to the current fill rule (see cairo_set_fill_rule()). -

    -

    -Unlike cairo_clip(), cairo_clip_preserve() preserves the path within -the cairo context. -

    -

    -The current clip region affects all drawing operations by +

    cairo_clip_preserve ()

    +
    void
    +cairo_clip_preserve (cairo_t *cr);
    +

    Establishes a new clip region by intersecting the current clip +region with the current path as it would be filled by cairo_fill() +and according to the current fill rule (see cairo_set_fill_rule()).

    +

    Unlike cairo_clip(), cairo_clip_preserve() preserves the path within +the cairo context.

    +

    The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside -the current clip region. -

    -

    -Calling cairo_clip_preserve() can only make the clip region smaller, never +the current clip region.

    +

    Calling cairo_clip_preserve() can only make the clip region smaller, never larger. But the current clip is part of the graphics state, so a temporary restriction of the clip region can be achieved by -calling cairo_clip_preserve() within a cairo_save()/cairo_restore() +calling cairo_clip_preserve() within a cairo_save()/cairo_restore() pair. The only other means of increasing the size of the clip -region is cairo_reset_clip(). -

    -
    ---+region is cairo_reset_clip().

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_clip_extents ()

    -
    void                cairo_clip_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -

    -Computes a bounding box in user coordinates covering the area inside the -current clip. -

    -
    +

    cairo_clip_extents ()

    +
    void
    +cairo_clip_extents (cairo_t *cr,
    +                    double *x1,
    +                    double *y1,
    +                    double *x2,
    +                    double *y2);
    +

    Computes a bounding box in user coordinates covering the area inside the +current clip.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x1 :

    left of the resulting extents

    x1

    left of the resulting extents

     

    y1 :

    top of the resulting extents

    y1

    top of the resulting extents

     

    x2 :

    right of the resulting extents

    x2

    right of the resulting extents

     

    y2 :

    bottom of the resulting extents

    y2

    bottom of the resulting extents

     
    +

    Since 1.4


    -

    cairo_in_clip ()

    -
    cairo_bool_t        cairo_in_clip                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -

    -Tests whether the given point is inside the area that would be +

    cairo_in_clip ()

    +
    cairo_bool_t
    +cairo_in_clip (cairo_t *cr,
    +               double x,
    +               double y);
    +

    Tests whether the given point is inside the area that would be visible through the current clip, i.e. the area that would be filled by -a cairo_paint() operation. -

    -

    -See cairo_clip(), and cairo_clip_preserve(). -

    -
    +a cairo_paint() operation.

    +

    See cairo_clip(), and cairo_clip_preserve().

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    cr :

    a cairo context

    x :

    X coordinate of the point to test

    cr

    a cairo context

     

    y :

    Y coordinate of the point to test

    x

    X coordinate of the point to test

     

    Returns :

    A non-zero value if the point is inside, or zero if -outside.

    y

    Y coordinate of the point to test

     
    +
    +
    +

    Returns

    +

    A non-zero value if the point is inside, or zero if +outside.

    +

    +

    Since 1.10


    -

    cairo_reset_clip ()

    -
    void                cairo_reset_clip                    (cairo_t *cr);
    -

    -Reset the current clip region to its original, unrestricted +

    cairo_reset_clip ()

    +
    void
    +cairo_reset_clip (cairo_t *cr);
    +

    Reset the current clip region to its original, unrestricted state. That is, set the clip region to an infinitely large shape containing the target surface. Equivalently, if infinity is too hard to grasp, one can imagine the clip region being reset to the -exact bounds of the target surface. -

    -

    -Note that code meant to be reusable should not call -cairo_reset_clip() as it will cause results unexpected by -higher-level code which calls cairo_clip(). Consider using -cairo_save() and cairo_restore() around cairo_clip() as a more -robust means of temporarily restricting the clip region. -

    -
    ---+exact bounds of the target surface.

    +

    Note that code meant to be reusable should not call +cairo_reset_clip() as it will cause results unexpected by +higher-level code which calls cairo_clip(). Consider using +cairo_save() and cairo_restore() around cairo_clip() as a more +robust means of temporarily restricting the clip region.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_rectangle_t

    -
    typedef struct {
    -    double x, y, width, height;
    -} cairo_rectangle_t;
    -
    -

    -A data structure for holding a rectangle. -

    -
    +

    cairo_rectangle_list_destroy ()

    +
    void
    +cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list);
    +

    Unconditionally frees rectangle_list + and all associated +references. After this call, the rectangle_list + pointer must not +be dereferenced.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    rectangle_list

    a rectangle list, as obtained from cairo_copy_clip_rectangle_list()

     
    +
    +

    Since 1.4

    + +
    +
    +

    cairo_copy_clip_rectangle_list ()

    +
    cairo_rectangle_list_t *
    +cairo_copy_clip_rectangle_list (cairo_t *cr);
    +

    Gets the current clip region as a list of rectangles in user coordinates. +Never returns NULL.

    +

    The status in the list may be CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to +indicate that the clip region cannot be represented as a list of +user-space rectangles. The status may have other values to indicate +other errors.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the current clip region as a list of rectangles in user coordinates, +which should be destroyed using cairo_rectangle_list_destroy().

    +

    +
    +

    Since 1.4

    +
    +
    +
    +

    cairo_fill ()

    +
    void
    +cairo_fill (cairo_t *cr);
    +

    A drawing operator that fills the current path according to the +current fill rule, (each sub-path is implicitly closed before being +filled). After cairo_fill(), the current path will be cleared from +the cairo context. See cairo_set_fill_rule() and +cairo_fill_preserve().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_fill_preserve ()

    +
    void
    +cairo_fill_preserve (cairo_t *cr);
    +

    A drawing operator that fills the current path according to the +current fill rule, (each sub-path is implicitly closed before being +filled). Unlike cairo_fill(), cairo_fill_preserve() preserves the +path within the cairo context.

    +

    See cairo_set_fill_rule() and cairo_fill().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_fill_extents ()

    +
    void
    +cairo_fill_extents (cairo_t *cr,
    +                    double *x1,
    +                    double *y1,
    +                    double *x2,
    +                    double *y2);
    +

    Computes a bounding box in user coordinates covering the area that +would be affected, (the "inked" area), by a cairo_fill() operation +given the current path and fill parameters. If the current path is +empty, returns an empty rectangle ((0,0), (0,0)). Surface +dimensions and clipping are not taken into account.

    +

    Contrast with cairo_path_extents(), which is similar, but returns +non-zero extents for some paths with no inked area, (such as a +simple line segment).

    +

    Note that cairo_fill_extents() must necessarily do more work to +compute the precise inked areas in light of the fill rule, so +cairo_path_extents() may be more desirable for sake of performance +if the non-inked path extents are desired.

    +

    See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve().

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + - - + + + - - + + + - - + + +

    double x;

    X coordinate of the left side of the rectangle

    cr

    a cairo context

     

    x1

    left of the resulting extents

     

    double y;

    Y coordinate of the the top side of the rectangle

    y1

    top of the resulting extents

     

    double width;

    width of the rectangle

    x2

    right of the resulting extents

     

    double height;

    height of the rectangle

    y2

    bottom of the resulting extents

     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_rectangle_list_t

    -
    typedef struct {
    -    cairo_status_t     status;
    -    cairo_rectangle_t *rectangles;
    -    int                num_rectangles;
    -} cairo_rectangle_list_t;
    -
    -

    -A data structure for holding a dynamically allocated -array of rectangles. -

    -
    +

    cairo_in_fill ()

    +
    cairo_bool_t
    +cairo_in_fill (cairo_t *cr,
    +               double x,
    +               double y);
    +

    Tests whether the given point is inside the area that would be +affected by a cairo_fill() operation given the current path and +filling parameters. Surface dimensions and clipping are not taken +into account.

    +

    See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + + + +

    cairo_status_t status;

    Error status of the rectangle list

    cr

    a cairo context

     

    cairo_rectangle_t *rectangles;

    Array containing the rectangles

    x

    X coordinate of the point to test

     

    int num_rectangles;

    Number of rectangles in this list

    y

    Y coordinate of the point to test

     
    +
    +
    +

    Returns

    +

    A non-zero value if the point is inside, or zero if +outside.

    +

    +
    +

    Since 1.0

    + +
    +
    +

    cairo_mask ()

    +
    void
    +cairo_mask (cairo_t *cr,
    +            cairo_pattern_t *pattern);
    +

    A drawing operator that paints the current source +using the alpha channel of pattern + as a mask. (Opaque +areas of pattern + are painted with the source, transparent +areas are not painted.)

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    cr

    a cairo context

     

    pattern

    a cairo_pattern_t

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_mask_surface ()

    +
    void
    +cairo_mask_surface (cairo_t *cr,
    +                    cairo_surface_t *surface,
    +                    double surface_x,
    +                    double surface_y);
    +

    A drawing operator that paints the current source +using the alpha channel of surface + as a mask. (Opaque +areas of surface + are painted with the source, transparent +areas are not painted.)

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + +

    cr

    a cairo context

     

    surface

    a cairo_surface_t

     

    surface_x

    X coordinate at which to place the origin of surface +

     

    surface_y

    Y coordinate at which to place the origin of surface +

     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_rectangle_list_destroy ()

    -
    void                cairo_rectangle_list_destroy        (cairo_rectangle_list_t *rectangle_list);
    -

    -Unconditionally frees rectangle_list and all associated -references. After this call, the rectangle_list pointer must not -be dereferenced. -

    -
    +

    cairo_paint ()

    +
    void
    +cairo_paint (cairo_t *cr);
    +

    A drawing operator that paints the current source everywhere within +the current clip region.

    +
    +

    Parameters

    +
    --+++ - - + + +

    rectangle_list :

    a rectangle list, as obtained from cairo_copy_clip_rectangle_list() -

    cr

    a cairo context

     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_copy_clip_rectangle_list ()

    -
    cairo_rectangle_list_t * cairo_copy_clip_rectangle_list (cairo_t *cr);
    -

    -Gets the current clip region as a list of rectangles in user coordinates. -Never returns NULL. -

    -

    -The status in the list may be CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to -indicate that the clip region cannot be represented as a list of -user-space rectangles. The status may have other values to indicate -other errors. -

    -
    +

    cairo_paint_with_alpha ()

    +
    void
    +cairo_paint_with_alpha (cairo_t *cr,
    +                        double alpha);
    +

    A drawing operator that paints the current source everywhere within +the current clip region using a mask of constant alpha value +alpha +. The effect is similar to cairo_paint(), but the drawing +is faded out using the alpha value.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    Returns :

    the current clip region as a list of rectangles in user coordinates, -which should be destroyed using cairo_rectangle_list_destroy().

    alpha

    alpha value, between 0 (transparent) and 1 (opaque)

     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_fill ()

    -
    void                cairo_fill                          (cairo_t *cr);
    -

    -A drawing operator that fills the current path according to the -current fill rule, (each sub-path is implicitly closed before being -filled). After cairo_fill(), the current path will be cleared from -the cairo context. See cairo_set_fill_rule() and -cairo_fill_preserve(). -

    -
    ---+

    cairo_stroke ()

    +
    void
    +cairo_stroke (cairo_t *cr);
    +

    A drawing operator that strokes the current path according to the +current line width, line join, line cap, and dash settings. After +cairo_stroke(), the current path will be cleared from the cairo +context. See cairo_set_line_width(), cairo_set_line_join(), +cairo_set_line_cap(), cairo_set_dash(), and +cairo_stroke_preserve().

    +

    Note: Degenerate segments and sub-paths are treated specially and +provide a useful result. These can result in two different +situations:

    +
      +
    1. Zero-length "on" segments set in cairo_set_dash(). If the cap +style is CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE then these +segments will be drawn as circular dots or squares respectively. In +the case of CAIRO_LINE_CAP_SQUARE, the orientation of the squares +is determined by the direction of the underlying path.

    2. +
    3. A sub-path created by cairo_move_to() followed by either a +cairo_close_path() or one or more calls to cairo_line_to() to the +same coordinate as the cairo_move_to(). If the cap style is +CAIRO_LINE_CAP_ROUND then these sub-paths will be drawn as circular +dots. Note that in the case of CAIRO_LINE_CAP_SQUARE a degenerate +sub-path will not be drawn at all, (since the correct orientation +is indeterminate).

    4. +
    +

    In no case will a cap style of CAIRO_LINE_CAP_BUTT cause anything +to be drawn in the case of either degenerate segments or sub-paths.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_fill_preserve ()

    -
    void                cairo_fill_preserve                 (cairo_t *cr);
    -

    -A drawing operator that fills the current path according to the -current fill rule, (each sub-path is implicitly closed before being -filled). Unlike cairo_fill(), cairo_fill_preserve() preserves the -path within the cairo context. -

    -

    -See cairo_set_fill_rule() and cairo_fill(). -

    -
    +

    cairo_stroke_preserve ()

    +
    void
    +cairo_stroke_preserve (cairo_t *cr);
    +

    A drawing operator that strokes the current path according to the +current line width, line join, line cap, and dash settings. Unlike +cairo_stroke(), cairo_stroke_preserve() preserves the path within the +cairo context.

    +

    See cairo_set_line_width(), cairo_set_line_join(), +cairo_set_line_cap(), cairo_set_dash(), and +cairo_stroke_preserve().

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.0

    + +
    +
    +

    cairo_stroke_extents ()

    +
    void
    +cairo_stroke_extents (cairo_t *cr,
    +                      double *x1,
    +                      double *y1,
    +                      double *x2,
    +                      double *y2);
    +

    Computes a bounding box in user coordinates covering the area that +would be affected, (the "inked" area), by a cairo_stroke() +operation given the current path and stroke parameters. +If the current path is empty, returns an empty rectangle ((0,0), (0,0)). +Surface dimensions and clipping are not taken into account.

    +

    Note that if the line width is set to exactly zero, then +cairo_stroke_extents() will return an empty rectangle. Contrast with +cairo_path_extents() which can be used to compute the non-empty +bounds as the line width approaches zero.

    +

    Note that cairo_stroke_extents() must necessarily do more work to +compute the precise inked areas in light of the stroke parameters, +so cairo_path_extents() may be more desirable for sake of +performance if non-inked path extents are desired.

    +

    See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), +cairo_set_line_cap(), cairo_set_dash(), and +cairo_stroke_preserve().

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    cr

    a cairo context

     

    x1

    left of the resulting extents

     

    y1

    top of the resulting extents

     

    x2

    right of the resulting extents

     

    y2

    bottom of the resulting extents

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_in_stroke ()

    +
    cairo_bool_t
    +cairo_in_stroke (cairo_t *cr,
    +                 double x,
    +                 double y);
    +

    Tests whether the given point is inside the area that would be +affected by a cairo_stroke() operation given the current path and +stroking parameters. Surface dimensions and clipping are not taken +into account.

    +

    See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), +cairo_set_line_cap(), cairo_set_dash(), and +cairo_stroke_preserve().

    +
    +

    Parameters

    +
    --++++ + + + + + + + + + + + + + + + + + +

    cr

    a cairo context

     

    x

    X coordinate of the point to test

     

    y

    Y coordinate of the point to test

     
    +
    +
    +

    Returns

    +

    A non-zero value if the point is inside, or zero if +outside.

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_copy_page ()

    +
    void
    +cairo_copy_page (cairo_t *cr);
    +

    Emits the current page for backends that support multiple pages, but +doesn't clear it, so, the contents of the current page will be retained +for the next page too. Use cairo_show_page() if you want to get an +empty page after the emission.

    +

    This is a convenience function that simply calls +cairo_surface_copy_page() on cr +'s target.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_show_page ()

    +
    void
    +cairo_show_page (cairo_t *cr);
    +

    Emits and clears the current page for backends that support multiple +pages. Use cairo_copy_page() if you don't want to clear the page.

    +

    This is a convenience function that simply calls +cairo_surface_show_page() on cr +'s target.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    cr

    a cairo context

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_get_reference_count ()

    +
    unsigned int
    +cairo_get_reference_count (cairo_t *cr);
    +

    Returns the current reference count of cr +.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo_t

     
    -

    Since 1.0

    +
    +
    +

    Returns

    +

    the current reference count of cr +. If the +object is a nil object, 0 will be returned.

    +

    +
    +

    Since 1.4


    -

    cairo_fill_extents ()

    -
    void                cairo_fill_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -

    -Computes a bounding box in user coordinates covering the area that -would be affected, (the "inked" area), by a cairo_fill() operation -given the current path and fill parameters. If the current path is -empty, returns an empty rectangle ((0,0), (0,0)). Surface -dimensions and clipping are not taken into account. -

    -

    -Contrast with cairo_path_extents(), which is similar, but returns -non-zero extents for some paths with no inked area, (such as a -simple line segment). -

    -

    -Note that cairo_fill_extents() must necessarily do more work to -compute the precise inked areas in light of the fill rule, so -cairo_path_extents() may be more desirable for sake of performance -if the non-inked path extents are desired. -

    -

    -See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). -

    -
    +

    cairo_set_user_data ()

    +
    cairo_status_t
    +cairo_set_user_data (cairo_t *cr,
    +                     const cairo_user_data_key_t *key,
    +                     void *user_data,
    +                     cairo_destroy_func_t destroy);
    +

    Attach user data to cr +. To remove user data from a surface, +call this function with the key that was used to set it and NULL +for data +.

    +
    +

    Parameters

    +
    --+++ - - + + + + + + + + - - + + + - - + + + + +

    cr :

    a cairo context

    cr

    a cairo_t

     

    key

    the address of a cairo_user_data_key_t to attach the user data to

     

    x1 :

    left of the resulting extents

    user_data

    the user data to attach to the cairo_t

     

    y1 :

    top of the resulting extents

    destroy

    a cairo_destroy_func_t which will be called when the +cairo_t is destroyed or when new user data is attached using the +same key.

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data.

    +

    +
    +

    Since 1.4

    + +
    +
    +

    cairo_get_user_data ()

    +
    void *
    +cairo_get_user_data (cairo_t *cr,
    +                     const cairo_user_data_key_t *key);
    +

    Return user data previously attached to cr + using the specified +key. If no user data has been attached with the given key this +function returns NULL.

    +
    +

    Parameters

    +
    +++++ + - - + + + - - + + +

    x2 :

    right of the resulting extents

    cr

    a cairo_t

     

    y2 :

    bottom of the resulting extents

    key

    the address of the cairo_user_data_key_t the user data was +attached to

     
    +
    +
    +

    Returns

    +

    the user data previously attached or NULL.

    +

    +
    +

    Since 1.4

    +
    + +
    +

    Types and Values

    +
    +

    cairo_t

    +
    typedef struct _cairo cairo_t;
    +
    +

    A cairo_t contains the current state of the rendering device, +including coordinates of yet to be drawn shapes.

    +

    Cairo contexts, as cairo_t objects are named, are central to +cairo and all drawing with cairo is always done to a cairo_t +object.

    +

    Memory management of cairo_t is done with +cairo_reference() and cairo_destroy().

    Since 1.0


    -

    cairo_in_fill ()

    -
    cairo_bool_t        cairo_in_fill                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -

    -Tests whether the given point is inside the area that would be -affected by a cairo_fill() operation given the current path and -filling parameters. Surface dimensions and clipping are not taken -into account. -

    -

    -See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). -

    -
    +

    enum cairo_antialias_t

    +

    Specifies the type of antialiasing to do when rendering text or shapes.

    +

    As it is not necessarily clear from the above what advantages a particular +antialias method provides, since 1.12, there is also a set of hints: +CAIRO_ANTIALIAS_FAST +: Allow the backend to degrade raster quality for speed +CAIRO_ANTIALIAS_GOOD +: A balance between speed and quality +CAIRO_ANTIALIAS_BEST +: A high-fidelity, but potentially slow, raster mode

    +

    These make no guarantee on how the backend will perform its rasterisation +(if it even rasterises!), nor that they have any differing effect other +than to enable some form of antialiasing. In the case of glyph rendering, +CAIRO_ANTIALIAS_FAST + and CAIRO_ANTIALIAS_GOOD + will be mapped to +CAIRO_ANTIALIAS_GRAY +, with CAIRO_ANTALIAS_BEST + being equivalent to +CAIRO_ANTIALIAS_SUBPIXEL +.

    +

    The interpretation of CAIRO_ANTIALIAS_DEFAULT + is left entirely up to +the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD +.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + + + + + + + + + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    CAIRO_ANTIALIAS_DEFAULT

    +

    Use the default antialiasing for + the subsystem and target device, since 1.0

    +
     

    CAIRO_ANTIALIAS_NONE

    +

    Use a bilevel alpha mask, since 1.0

    +
     

    CAIRO_ANTIALIAS_GRAY

    +

    Perform single-color antialiasing (using + shades of gray for black text on a white background, for example), since 1.0

    +
     

    CAIRO_ANTIALIAS_SUBPIXEL

    +

    Perform antialiasing by taking + advantage of the order of subpixel elements on devices + such as LCD panels, since 1.0

    +
     

    x :

    X coordinate of the point to test

    CAIRO_ANTIALIAS_FAST

    +

    Hint that the backend should perform some +antialiasing but prefer speed over quality, since 1.12

    +
     

    y :

    Y coordinate of the point to test

    CAIRO_ANTIALIAS_GOOD

    +

    The backend should balance quality against +performance, since 1.12

    +
     

    Returns :

    A non-zero value if the point is inside, or zero if -outside.

    CAIRO_ANTIALIAS_BEST

    +

    Hint that the backend should render at the highest +quality, sacrificing speed if necessary, since 1.12

    +
     
    +

    Since 1.0


    -

    cairo_mask ()

    -
    void                cairo_mask                          (cairo_t *cr,
    -                                                         cairo_pattern_t *pattern);
    -

    -A drawing operator that paints the current source -using the alpha channel of pattern as a mask. (Opaque -areas of pattern are painted with the source, transparent -areas are not painted.) -

    -
    ---+

    enum cairo_fill_rule_t

    +

    cairo_fill_rule_t is used to select how paths are filled. For both +fill rules, whether or not a point is included in the fill is +determined by taking a ray from that point to infinity and looking +at intersections with the path. The ray can be in any direction, +as long as it doesn't pass through the end point of a segment +or have a tricky intersection such as intersecting tangent to the path. +(Note that filling is not actually implemented in this way. This +is just a description of the rule that is applied.)

    +

    The default fill rule is CAIRO_FILL_RULE_WINDING.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    ++++ - - + + + - - + +

    cr :

    a cairo context

    CAIRO_FILL_RULE_WINDING

    +

    If the path crosses the ray from +left-to-right, counts +1. If the path crosses the ray +from right to left, counts -1. (Left and right are determined +from the perspective of looking along the ray from the starting +point.) If the total count is non-zero, the point will be filled. (Since 1.0)

    +
     

    pattern :

    a cairo_pattern_t +

    CAIRO_FILL_RULE_EVEN_ODD

    +

    Counts the total number of +intersections, without regard to the orientation of the contour. If +the total number of intersections is odd, the point will be +filled. (Since 1.0)

     
    +

    Since 1.0


    -

    cairo_mask_surface ()

    -
    void                cairo_mask_surface                  (cairo_t *cr,
    -                                                         cairo_surface_t *surface,
    -                                                         double surface_x,
    -                                                         double surface_y);
    -

    -A drawing operator that paints the current source -using the alpha channel of surface as a mask. (Opaque -areas of surface are painted with the source, transparent -areas are not painted.) -

    -
    +

    enum cairo_line_cap_t

    +

    Specifies how to render the endpoints of the path when stroking.

    +

    The default line cap style is CAIRO_LINE_CAP_BUTT.

    +
    +

    Members

    +
    --+++ - - - - - - + + - - + + - - + +

    cr :

    a cairo context

    surface :

    a cairo_surface_t +

    CAIRO_LINE_CAP_BUTT

    +

    start(stop) the line exactly at the start(end) point (Since 1.0)

     

    surface_x :

    X coordinate at which to place the origin of surface +

    CAIRO_LINE_CAP_ROUND

    +

    use a round ending, the center of the circle is the end point (Since 1.0)

     

    surface_y :

    Y coordinate at which to place the origin of surface +

    CAIRO_LINE_CAP_SQUARE

    +

    use squared ending, the center of the square is the end point (Since 1.0)

     
    -

    Since 1.0

    -
    -
    -

    cairo_paint ()

    -
    void                cairo_paint                         (cairo_t *cr);
    -

    -A drawing operator that paints the current source everywhere within -the current clip region. -

    -
    ---- - - - - -

    cr :

    a cairo context

    Since 1.0


    -

    cairo_paint_with_alpha ()

    -
    void                cairo_paint_with_alpha              (cairo_t *cr,
    -                                                         double alpha);
    -

    -A drawing operator that paints the current source everywhere within -the current clip region using a mask of constant alpha value -alpha. The effect is similar to cairo_paint(), but the drawing -is faded out using the alpha value. -

    -
    +

    enum cairo_line_join_t

    +

    Specifies how to render the junction of two lines when stroking.

    +

    The default line join style is CAIRO_LINE_JOIN_MITER.

    +
    +

    Members

    +
    --+++ - - + + + + + + + + - - + + +

    cr :

    a cairo context

    CAIRO_LINE_JOIN_MITER

    +

    use a sharp (angled) corner, see +cairo_set_miter_limit() (Since 1.0)

    +
     

    CAIRO_LINE_JOIN_ROUND

    +

    use a rounded join, the center of the circle is the +joint point (Since 1.0)

    +
     

    alpha :

    alpha value, between 0 (transparent) and 1 (opaque)

    CAIRO_LINE_JOIN_BEVEL

    +

    use a cut-off join, the join is cut off at half +the line width from the joint point (Since 1.0)

    +
     
    -

    Since 1.0

    -
    -
    -
    -

    cairo_stroke ()

    -
    void                cairo_stroke                        (cairo_t *cr);
    -

    -A drawing operator that strokes the current path according to the -current line width, line join, line cap, and dash settings. After -cairo_stroke(), the current path will be cleared from the cairo -context. See cairo_set_line_width(), cairo_set_line_join(), -cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). -

    -

    -Note: Degenerate segments and sub-paths are treated specially and -provide a useful result. These can result in two different -situations: -

    -

    -1. Zero-length "on" segments set in cairo_set_dash(). If the cap -style is CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE then these -segments will be drawn as circular dots or squares respectively. In -the case of CAIRO_LINE_CAP_SQUARE, the orientation of the squares -is determined by the direction of the underlying path. -

    -

    -2. A sub-path created by cairo_move_to() followed by either a -cairo_close_path() or one or more calls to cairo_line_to() to the -same coordinate as the cairo_move_to(). If the cap style is -CAIRO_LINE_CAP_ROUND then these sub-paths will be drawn as circular -dots. Note that in the case of CAIRO_LINE_CAP_SQUARE a degenerate -sub-path will not be drawn at all, (since the correct orientation -is indeterminate). -

    -

    -In no case will a cap style of CAIRO_LINE_CAP_BUTT cause anything -to be drawn in the case of either degenerate segments or sub-paths. -

    -
    ---- - - - - -

    cr :

    a cairo context
    -

    Since 1.0

    -
    -
    -

    cairo_stroke_preserve ()

    -
    void                cairo_stroke_preserve               (cairo_t *cr);
    -

    -A drawing operator that strokes the current path according to the -current line width, line join, line cap, and dash settings. Unlike -cairo_stroke(), cairo_stroke_preserve() preserves the path within the -cairo context. -

    -

    -See cairo_set_line_width(), cairo_set_line_join(), -cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). -

    -
    ---- - - - - -

    cr :

    a cairo context

    Since 1.0


    -

    cairo_stroke_extents ()

    -
    void                cairo_stroke_extents                (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -

    -Computes a bounding box in user coordinates covering the area that -would be affected, (the "inked" area), by a cairo_stroke() -operation given the current path and stroke parameters. -If the current path is empty, returns an empty rectangle ((0,0), (0,0)). -Surface dimensions and clipping are not taken into account. -

    -

    -Note that if the line width is set to exactly zero, then -cairo_stroke_extents() will return an empty rectangle. Contrast with -cairo_path_extents() which can be used to compute the non-empty -bounds as the line width approaches zero. -

    -

    -Note that cairo_stroke_extents() must necessarily do more work to -compute the precise inked areas in light of the stroke parameters, -so cairo_path_extents() may be more desirable for sake of -performance if non-inked path extents are desired. -

    -

    -See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), -cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). -

    -
    +

    enum cairo_operator_t

    +

    cairo_operator_t is used to set the compositing operator for all cairo +drawing operations.

    +

    The default operator is CAIRO_OPERATOR_OVER.

    +

    The operators marked as unbounded modify their +destination even outside of the mask layer (that is, their effect is not +bound by the mask layer). However, their effect can still be limited by +way of clipping.

    +

    To keep things simple, the operator descriptions here +document the behavior for when both source and destination are either fully +transparent or fully opaque. The actual implementation works for +translucent layers too. +For a more detailed explanation of the effects of each operator, including +the mathematical definitions, see

    +http://cairographics.org/operators/. +
    +

    Members

    +
    --+++ - - + + + + + + + + - - + + + - - + + + - - + + + - - + + + - -

    cr :

    a cairo context

    CAIRO_OPERATOR_CLEAR

    +

    clear destination layer (bounded) (Since 1.0)

    +
     

    CAIRO_OPERATOR_SOURCE

    +

    replace destination layer (bounded) (Since 1.0)

    +
     

    x1 :

    left of the resulting extents

    CAIRO_OPERATOR_OVER

    +

    draw source layer on top of destination layer +(bounded) (Since 1.0)

    +
     

    y1 :

    top of the resulting extents

    CAIRO_OPERATOR_IN

    +

    draw source where there was destination content +(unbounded) (Since 1.0)

    +
     

    x2 :

    right of the resulting extents

    CAIRO_OPERATOR_OUT

    +

    draw source where there was no destination +content (unbounded) (Since 1.0)

    +
     

    y2 :

    bottom of the resulting extents

    CAIRO_OPERATOR_ATOP

    +

    draw source on top of destination content and +only there (Since 1.0)

    +
     
    -

    Since 1.0

    -
    -
    -
    -

    cairo_in_stroke ()

    -
    cairo_bool_t        cairo_in_stroke                     (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -

    -Tests whether the given point is inside the area that would be -affected by a cairo_stroke() operation given the current path and -stroking parameters. Surface dimensions and clipping are not taken -into account. -

    -

    -See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), -cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). -

    -
    ---- - - - + + + - - + + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -

    cr :

    a cairo context

    CAIRO_OPERATOR_DEST

    +

    ignore the source (Since 1.0)

    +
     

    x :

    X coordinate of the point to test

    CAIRO_OPERATOR_DEST_OVER

    +

    draw destination on top of source (Since 1.0)

    +
     

    y :

    Y coordinate of the point to test

    CAIRO_OPERATOR_DEST_IN

    +

    leave destination only where there was +source content (unbounded) (Since 1.0)

    +
     

    Returns :

    A non-zero value if the point is inside, or zero if -outside.

    CAIRO_OPERATOR_DEST_OUT

    +

    leave destination only where there was no +source content (Since 1.0)

    +
     

    CAIRO_OPERATOR_DEST_ATOP

    +

    leave destination on top of source content +and only there (unbounded) (Since 1.0)

    +
     

    CAIRO_OPERATOR_XOR

    +

    source and destination are shown where there is only +one of them (Since 1.0)

    +
     

    CAIRO_OPERATOR_ADD

    +

    source and destination layers are accumulated (Since 1.0)

    +
     

    CAIRO_OPERATOR_SATURATE

    +

    like over, but assuming source and dest are +disjoint geometries (Since 1.0)

    +
     

    CAIRO_OPERATOR_MULTIPLY

    +

    source and destination layers are multiplied. +This causes the result to be at least as dark as the darker inputs. (Since 1.10)

    +
     

    CAIRO_OPERATOR_SCREEN

    +

    source and destination are complemented and +multiplied. This causes the result to be at least as light as the lighter +inputs. (Since 1.10)

    +
     

    CAIRO_OPERATOR_OVERLAY

    +

    multiplies or screens, depending on the +lightness of the destination color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_DARKEN

    +

    replaces the destination with the source if it +is darker, otherwise keeps the source. (Since 1.10)

    +
     

    CAIRO_OPERATOR_LIGHTEN

    +

    replaces the destination with the source if it +is lighter, otherwise keeps the source. (Since 1.10)

    +
     

    CAIRO_OPERATOR_COLOR_DODGE

    +

    brightens the destination color to reflect +the source color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_COLOR_BURN

    +

    darkens the destination color to reflect +the source color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_HARD_LIGHT

    +

    Multiplies or screens, dependent on source +color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_SOFT_LIGHT

    +

    Darkens or lightens, dependent on source +color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_DIFFERENCE

    +

    Takes the difference of the source and +destination color. (Since 1.10)

    +
     

    CAIRO_OPERATOR_EXCLUSION

    +

    Produces an effect similar to difference, but +with lower contrast. (Since 1.10)

    +
     

    CAIRO_OPERATOR_HSL_HUE

    +

    Creates a color with the hue of the source +and the saturation and luminosity of the target. (Since 1.10)

    +
     
    -

    Since 1.0

    -
    -
    -
    -

    cairo_copy_page ()

    -
    void                cairo_copy_page                     (cairo_t *cr);
    -

    -Emits the current page for backends that support multiple pages, but -doesn't clear it, so, the contents of the current page will be retained -for the next page too. Use cairo_show_page() if you want to get an -empty page after the emission. -

    -

    -This is a convenience function that simply calls -cairo_surface_copy_page() on cr's target. -

    -
    ---- - - - - -

    cr :

    a cairo context
    -

    Since 1.0

    -
    -
    -
    -

    cairo_show_page ()

    -
    void                cairo_show_page                     (cairo_t *cr);
    -

    -Emits and clears the current page for backends that support multiple -pages. Use cairo_copy_page() if you don't want to clear the page. -

    -

    -This is a convenience function that simply calls -cairo_surface_show_page() on cr's target. -

    -
    ---- - - - - -

    cr :

    a cairo context
    -

    Since 1.0

    -
    -
    -
    -

    cairo_get_reference_count ()

    -
    unsigned int        cairo_get_reference_count           (cairo_t *cr);
    -

    -Returns the current reference count of cr. -

    -
    ---- - - - + + + + + + + - - + + +

    cr :

    a cairo_t +

    CAIRO_OPERATOR_HSL_SATURATION

    +

    Creates a color with the saturation +of the source and the hue and luminosity of the target. Painting with +this mode onto a gray area produces no change. (Since 1.10)

    +
     

    CAIRO_OPERATOR_HSL_COLOR

    +

    Creates a color with the hue and saturation +of the source and the luminosity of the target. This preserves the gray +levels of the target and is useful for coloring monochrome images or +tinting color images. (Since 1.10)

     

    Returns :

    the current reference count of cr. If the -object is a nil object, 0 will be returned.

    CAIRO_OPERATOR_HSL_LUMINOSITY

    +

    Creates a color with the luminosity of +the source and the hue and saturation of the target. This produces an +inverse effect to CAIRO_OPERATOR_HSL_COLOR +. (Since 1.10)

    +
     
    -

    Since 1.4

    +
    +

    Since 1.0


    -

    cairo_set_user_data ()

    -
    cairo_status_t      cairo_set_user_data                 (cairo_t *cr,
    -                                                         const cairo_user_data_key_t *key,
    -                                                         void *user_data,
    -                                                         cairo_destroy_func_t destroy);
    -

    -Attach user data to cr. To remove user data from a surface, -call this function with the key that was used to set it and NULL -for data. -

    -
    +

    cairo_rectangle_t

    +
    typedef struct {
    +    double x, y, width, height;
    +} cairo_rectangle_t;
    +
    +

    A data structure for holding a rectangle.

    +
    +

    Members

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo_t -

    key :

    the address of a cairo_user_data_key_t to attach the user data to

    double x;

    X coordinate of the left side of the rectangle

     

    user_data :

    the user data to attach to the cairo_t -

    double y;

    Y coordinate of the the top side of the rectangle

     

    destroy :

    a cairo_destroy_func_t which will be called when the -cairo_t is destroyed or when new user data is attached using the -same key.

    double width;

    width of the rectangle

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data.

    double height;

    height of the rectangle

     
    +

    Since 1.4


    -

    cairo_get_user_data ()

    -
    void *              cairo_get_user_data                 (cairo_t *cr,
    -                                                         const cairo_user_data_key_t *key);
    -

    -Return user data previously attached to cr using the specified -key. If no user data has been attached with the given key this -function returns NULL. -

    -
    +

    cairo_rectangle_list_t

    +
    typedef struct {
    +    cairo_status_t     status;
    +    cairo_rectangle_t *rectangles;
    +    int                num_rectangles;
    +} cairo_rectangle_list_t;
    +
    +

    A data structure for holding a dynamically allocated +array of rectangles.

    +
    +

    Members

    +
    --+++ - - + + + - - + + + - - + + +

    cr :

    a cairo_t -

    cairo_status_t status;

    Error status of the rectangle list

     

    key :

    the address of the cairo_user_data_key_t the user data was -attached to

    cairo_rectangle_t *rectangles;

    Array containing the rectangles

     

    Returns :

    the user data previously attached or NULL.

    int num_rectangles;

    Number of rectangles in this list

     
    +

    Since 1.4

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo.devhelp2 cairo-1.14.2/doc/public/html/cairo.devhelp2 --- cairo-1.13.0~20140204/doc/public/html/cairo.devhelp2 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo.devhelp2 2015-03-11 02:02:37.000000000 +0000 @@ -63,321 +63,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + - - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -385,351 +426,137 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + - - - + + + + + + - - - - - - + + + + + - - - - - + + + - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + - - - - + + + + + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-drawing.html cairo-1.14.2/doc/public/html/cairo-drawing.html --- cairo-1.13.0~20140204/doc/public/html/cairo-drawing.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-drawing.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Drawing +Cairo: A Vector Graphics Library: Drawing - + - - - - - - + + + + + +

    @@ -48,6 +48,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Error-handling.html cairo-1.14.2/doc/public/html/cairo-Error-handling.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Error-handling.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Error-handling.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Error handling +Cairo: A Vector Graphics Library: Error handling - + - - - - - - - - - - + + + + + + +
    @@ -33,371 +30,437 @@

    Error handling

    Error handling — Decoding cairo's status

    - +
    -
    -

    Synopsis

    -
    enum                cairo_status_t;
    -const char *        cairo_status_to_string              (cairo_status_t status);
    -void                cairo_debug_reset_static_data       (void);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + +
    const char * + +cairo_status_to_string () +
    +void + +cairo_debug_reset_static_data () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    enumcairo_status_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -Cairo uses a single status type to represent all kinds of errors. A status +

    Cairo uses a single status type to represent all kinds of errors. A status value of CAIRO_STATUS_SUCCESS represents no error and has an integer value -of zero. All other status values represent an error. -

    -

    -Cairo's error handling is designed to be easy to use and safe. All major +of zero. All other status values represent an error.

    +

    Cairo's error handling is designed to be easy to use and safe. All major cairo objects retain an error status internally which can be queried anytime by the users using cairo*_status() calls. In the mean time, it is safe to call all cairo functions normally even if the underlying object is in an error status. This means that no error handling -code is required before or after each individual cairo function call. -

    +code is required before or after each individual cairo function call.

    +
    +
    +

    Functions

    +
    +

    cairo_status_to_string ()

    +
    const char *
    +cairo_status_to_string (cairo_status_t status);
    +

    Provides a human-readable description of a cairo_status_t.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    status

    a cairo status

     
    +
    +
    +

    Returns

    +

    a string representation of the status

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    cairo_debug_reset_static_data ()

    +
    void
    +cairo_debug_reset_static_data (void);
    +

    Resets all static data within cairo to its original state, +(ie. identical to the state at the time of program invocation). For +example, all caches within cairo will be flushed empty.

    +

    This function is intended to be useful when using memory-checking +tools such as valgrind. When valgrind's memcheck analyzes a +cairo-using program without a call to cairo_debug_reset_static_data(), +it will report all data reachable via cairo's static objects as +"still reachable". Calling cairo_debug_reset_static_data() just prior +to program termination will make it easier to get squeaky clean +reports from valgrind.

    +

    WARNING: It is only safe to call this function when there are no +active cairo objects remaining, (ie. the appropriate destroy +functions have been called as necessary). If there are active cairo +objects, this call is likely to cause a crash, (eg. an assertion +failure due to a hash table being destroyed when non-empty).

    +

    Since 1.0

    +
    -

    Details

    +

    Types and Values

    enum cairo_status_t

    -
    typedef enum {
    -    CAIRO_STATUS_SUCCESS = 0,
    -
    -    CAIRO_STATUS_NO_MEMORY,
    -    CAIRO_STATUS_INVALID_RESTORE,
    -    CAIRO_STATUS_INVALID_POP_GROUP,
    -    CAIRO_STATUS_NO_CURRENT_POINT,
    -    CAIRO_STATUS_INVALID_MATRIX,
    -    CAIRO_STATUS_INVALID_STATUS,
    -    CAIRO_STATUS_NULL_POINTER,
    -    CAIRO_STATUS_INVALID_STRING,
    -    CAIRO_STATUS_INVALID_PATH_DATA,
    -    CAIRO_STATUS_READ_ERROR,
    -    CAIRO_STATUS_WRITE_ERROR,
    -    CAIRO_STATUS_SURFACE_FINISHED,
    -    CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
    -    CAIRO_STATUS_PATTERN_TYPE_MISMATCH,
    -    CAIRO_STATUS_INVALID_CONTENT,
    -    CAIRO_STATUS_INVALID_FORMAT,
    -    CAIRO_STATUS_INVALID_VISUAL,
    -    CAIRO_STATUS_FILE_NOT_FOUND,
    -    CAIRO_STATUS_INVALID_DASH,
    -    CAIRO_STATUS_INVALID_DSC_COMMENT,
    -    CAIRO_STATUS_INVALID_INDEX,
    -    CAIRO_STATUS_CLIP_NOT_REPRESENTABLE,
    -    CAIRO_STATUS_TEMP_FILE_ERROR,
    -    CAIRO_STATUS_INVALID_STRIDE,
    -    CAIRO_STATUS_FONT_TYPE_MISMATCH,
    -    CAIRO_STATUS_USER_FONT_IMMUTABLE,
    -    CAIRO_STATUS_USER_FONT_ERROR,
    -    CAIRO_STATUS_NEGATIVE_COUNT,
    -    CAIRO_STATUS_INVALID_CLUSTERS,
    -    CAIRO_STATUS_INVALID_SLANT,
    -    CAIRO_STATUS_INVALID_WEIGHT,
    -    CAIRO_STATUS_INVALID_SIZE,
    -    CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED,
    -    CAIRO_STATUS_DEVICE_TYPE_MISMATCH,
    -    CAIRO_STATUS_DEVICE_ERROR,
    -    CAIRO_STATUS_INVALID_MESH_CONSTRUCTION,
    -    CAIRO_STATUS_DEVICE_FINISHED,
    -    CAIRO_STATUS_JBIG2_GLOBAL_MISSING,
    -
    -    CAIRO_STATUS_LAST_STATUS
    -} cairo_status_t;
    -
    -

    -cairo_status_t is used to indicate errors that can occur when +

    cairo_status_t is used to indicate errors that can occur when using Cairo. In some cases it is returned directly by functions. but when using cairo_t, the last error, if any, is stored in -the context and can be retrieved with cairo_status(). -

    -

    -New entries may be added in future versions. Use cairo_status_to_string() -to get a human-readable representation of an error message. -

    -
    +the context and can be retrieved with cairo_status().

    +

    New entries may be added in future versions. Use cairo_status_to_string() +to get a human-readable representation of an error message.

    +
    +

    Members

    +
    --+++ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +

    CAIRO_STATUS_SUCCESS

    no error has occurred (Since 1.0) +

    CAIRO_STATUS_SUCCESS

    +

    no error has occurred (Since 1.0)

     

    CAIRO_STATUS_NO_MEMORY

    out of memory (Since 1.0) +

    CAIRO_STATUS_NO_MEMORY

    +

    out of memory (Since 1.0)

     

    CAIRO_STATUS_INVALID_RESTORE

    cairo_restore() called without matching cairo_save() (Since 1.0) +

    CAIRO_STATUS_INVALID_RESTORE

    +

    cairo_restore() called without matching cairo_save() (Since 1.0)

     

    CAIRO_STATUS_INVALID_POP_GROUP

    no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0) +

    CAIRO_STATUS_INVALID_POP_GROUP

    +

    no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0)

     

    CAIRO_STATUS_NO_CURRENT_POINT

    no current point defined (Since 1.0) +

    CAIRO_STATUS_NO_CURRENT_POINT

    +

    no current point defined (Since 1.0)

     

    CAIRO_STATUS_INVALID_MATRIX

    invalid matrix (not invertible) (Since 1.0) +

    CAIRO_STATUS_INVALID_MATRIX

    +

    invalid matrix (not invertible) (Since 1.0)

     

    CAIRO_STATUS_INVALID_STATUS

    invalid value for an input cairo_status_t (Since 1.0) +

    CAIRO_STATUS_INVALID_STATUS

    +

    invalid value for an input cairo_status_t (Since 1.0)

     

    CAIRO_STATUS_NULL_POINTER

    -NULL pointer (Since 1.0) +

    CAIRO_STATUS_NULL_POINTER

    +

    NULL pointer (Since 1.0)

     

    CAIRO_STATUS_INVALID_STRING

    input string not valid UTF-8 (Since 1.0) +

    CAIRO_STATUS_INVALID_STRING

    +

    input string not valid UTF-8 (Since 1.0)

     

    CAIRO_STATUS_INVALID_PATH_DATA

    input path data not valid (Since 1.0) +

    CAIRO_STATUS_INVALID_PATH_DATA

    +

    input path data not valid (Since 1.0)

     

    CAIRO_STATUS_READ_ERROR

    error while reading from input stream (Since 1.0) +

    CAIRO_STATUS_READ_ERROR

    +

    error while reading from input stream (Since 1.0)

     

    CAIRO_STATUS_WRITE_ERROR

    error while writing to output stream (Since 1.0) +

    CAIRO_STATUS_WRITE_ERROR

    +

    error while writing to output stream (Since 1.0)

     

    CAIRO_STATUS_SURFACE_FINISHED

    target surface has been finished (Since 1.0) +

    CAIRO_STATUS_SURFACE_FINISHED

    +

    target surface has been finished (Since 1.0)

     

    CAIRO_STATUS_SURFACE_TYPE_MISMATCH

    the surface type is not appropriate for the operation (Since 1.0) +

    CAIRO_STATUS_SURFACE_TYPE_MISMATCH

    +

    the surface type is not appropriate for the operation (Since 1.0)

     

    CAIRO_STATUS_PATTERN_TYPE_MISMATCH

    the pattern type is not appropriate for the operation (Since 1.0) +

    CAIRO_STATUS_PATTERN_TYPE_MISMATCH

    +

    the pattern type is not appropriate for the operation (Since 1.0)

     

    CAIRO_STATUS_INVALID_CONTENT

    invalid value for an input cairo_content_t (Since 1.0) +

    CAIRO_STATUS_INVALID_CONTENT

    +

    invalid value for an input cairo_content_t (Since 1.0)

     

    CAIRO_STATUS_INVALID_FORMAT

    invalid value for an input cairo_format_t (Since 1.0) +

    CAIRO_STATUS_INVALID_FORMAT

    +

    invalid value for an input cairo_format_t (Since 1.0)

     

    CAIRO_STATUS_INVALID_VISUAL

    invalid value for an input Visual* (Since 1.0) +

    CAIRO_STATUS_INVALID_VISUAL

    +

    invalid value for an input Visual* (Since 1.0)

     

    CAIRO_STATUS_FILE_NOT_FOUND

    file not found (Since 1.0) +

    CAIRO_STATUS_FILE_NOT_FOUND

    +

    file not found (Since 1.0)

     

    CAIRO_STATUS_INVALID_DASH

    invalid value for a dash setting (Since 1.0) +

    CAIRO_STATUS_INVALID_DASH

    +

    invalid value for a dash setting (Since 1.0)

     

    CAIRO_STATUS_INVALID_DSC_COMMENT

    invalid value for a DSC comment (Since 1.2) +

    CAIRO_STATUS_INVALID_DSC_COMMENT

    +

    invalid value for a DSC comment (Since 1.2)

     

    CAIRO_STATUS_INVALID_INDEX

    invalid index passed to getter (Since 1.4) +

    CAIRO_STATUS_INVALID_INDEX

    +

    invalid index passed to getter (Since 1.4)

     

    CAIRO_STATUS_CLIP_NOT_REPRESENTABLE

    clip region not representable in desired format (Since 1.4) +

    CAIRO_STATUS_CLIP_NOT_REPRESENTABLE

    +

    clip region not representable in desired format (Since 1.4)

     

    CAIRO_STATUS_TEMP_FILE_ERROR

    error creating or writing to a temporary file (Since 1.6) +

    CAIRO_STATUS_TEMP_FILE_ERROR

    +

    error creating or writing to a temporary file (Since 1.6)

     

    CAIRO_STATUS_INVALID_STRIDE

    invalid value for stride (Since 1.6) +

    CAIRO_STATUS_INVALID_STRIDE

    +

    invalid value for stride (Since 1.6)

     

    CAIRO_STATUS_FONT_TYPE_MISMATCH

    the font type is not appropriate for the operation (Since 1.8) +

    CAIRO_STATUS_FONT_TYPE_MISMATCH

    +

    the font type is not appropriate for the operation (Since 1.8)

     

    CAIRO_STATUS_USER_FONT_IMMUTABLE

    the user-font is immutable (Since 1.8) +

    CAIRO_STATUS_USER_FONT_IMMUTABLE

    +

    the user-font is immutable (Since 1.8)

     

    CAIRO_STATUS_USER_FONT_ERROR

    error occurred in a user-font callback function (Since 1.8) +

    CAIRO_STATUS_USER_FONT_ERROR

    +

    error occurred in a user-font callback function (Since 1.8)

     

    CAIRO_STATUS_NEGATIVE_COUNT

    negative number used where it is not allowed (Since 1.8) +

    CAIRO_STATUS_NEGATIVE_COUNT

    +

    negative number used where it is not allowed (Since 1.8)

     

    CAIRO_STATUS_INVALID_CLUSTERS

    input clusters do not represent the accompanying text and glyph array (Since 1.8) +

    CAIRO_STATUS_INVALID_CLUSTERS

    +

    input clusters do not represent the accompanying text and glyph array (Since 1.8)

     

    CAIRO_STATUS_INVALID_SLANT

    invalid value for an input cairo_font_slant_t (Since 1.8) +

    CAIRO_STATUS_INVALID_SLANT

    +

    invalid value for an input cairo_font_slant_t (Since 1.8)

     

    CAIRO_STATUS_INVALID_WEIGHT

    invalid value for an input cairo_font_weight_t (Since 1.8) +

    CAIRO_STATUS_INVALID_WEIGHT

    +

    invalid value for an input cairo_font_weight_t (Since 1.8)

     

    CAIRO_STATUS_INVALID_SIZE

    invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10) +

    CAIRO_STATUS_INVALID_SIZE

    +

    invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10)

     

    CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED

    user-font method not implemented (Since 1.10) +

    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_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_DEVICE_ERROR

    +

    an operation to the device caused an unspecified error (Since 1.10)

     

    CAIRO_STATUS_INVALID_MESH_CONSTRUCTION

    a mesh pattern +

    CAIRO_STATUS_INVALID_MESH_CONSTRUCTION

    +

    a mesh pattern construction operation was used outside of a - cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() - pair (Since 1.12) + cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() + pair (Since 1.12)

     

    CAIRO_STATUS_DEVICE_FINISHED

    target device has been finished (Since 1.12) +

    CAIRO_STATUS_DEVICE_FINISHED

    +

    target device has been finished (Since 1.12)

     

    CAIRO_STATUS_JBIG2_GLOBAL_MISSING

    -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID has been used on at least one image - but no image provided CAIRO_MIME_TYPE_JBIG2_GLOBAL (Since 1.14) +

    CAIRO_STATUS_JBIG2_GLOBAL_MISSING

    +

    CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID has been used on at least one image + but no image provided CAIRO_MIME_TYPE_JBIG2_GLOBAL (Since 1.14)

     

    CAIRO_STATUS_LAST_STATUS

    this is a special value indicating the number of +

    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 - defined than the value of this symbol at compile-time. (Since 1.10) + defined than the value of this symbol at compile-time. (Since 1.10)

     
    -

    Since 1.0

    -
    -
    -

    cairo_status_to_string ()

    -
    const char *        cairo_status_to_string              (cairo_status_t status);
    -

    -Provides a human-readable description of a cairo_status_t. -

    -
    ---- - - - - - - - - - - -

    status :

    a cairo status

    Returns :

    a string representation of the status
    -

    Since 1.0

    -
    -
    -
    -

    cairo_debug_reset_static_data ()

    -
    void                cairo_debug_reset_static_data       (void);
    -

    -Resets all static data within cairo to its original state, -(ie. identical to the state at the time of program invocation). For -example, all caches within cairo will be flushed empty. -

    -

    -This function is intended to be useful when using memory-checking -tools such as valgrind. When valgrind's memcheck analyzes a -cairo-using program without a call to cairo_debug_reset_static_data(), -it will report all data reachable via cairo's static objects as -"still reachable". Calling cairo_debug_reset_static_data() just prior -to program termination will make it easier to get squeaky clean -reports from valgrind. -

    -

    -WARNING: It is only safe to call this function when there are no -active cairo objects remaining, (ie. the appropriate destroy -functions have been called as necessary). If there are active cairo -objects, this call is likely to cause a crash, (eg. an assertion -failure due to a hash table being destroyed when non-empty). -

    Since 1.0

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-fonts.html cairo-1.14.2/doc/public/html/cairo-fonts.html --- cairo-1.13.0~20140204/doc/public/html/cairo-fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Fonts +Cairo: A Vector Graphics Library: Fonts - + - - - - - - + + + + + +

    @@ -48,6 +48,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-FreeType-Fonts.html cairo-1.14.2/doc/public/html/cairo-FreeType-Fonts.html --- cairo-1.13.0~20140204/doc/public/html/cairo-FreeType-Fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-FreeType-Fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -FreeType Fonts +Cairo: A Vector Graphics Library: FreeType Fonts - + - - - - - - - - - - + + + + + + +
    @@ -33,84 +30,134 @@

    FreeType Fonts

    FreeType Fonts — Font support for FreeType

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_FT_FONT
    -#define             CAIRO_HAS_FC_FONT
    -cairo_font_face_t * cairo_ft_font_face_create_for_ft_face
    -                                                        (FT_Face face,
    -                                                         int load_flags);
    -cairo_font_face_t * cairo_ft_font_face_create_for_pattern
    -                                                        (FcPattern *pattern);
    -void                cairo_ft_font_options_substitute    (const cairo_font_options_t *options,
    -                                                         FcPattern *pattern);
    -FT_Face             cairo_ft_scaled_font_lock_face      (cairo_scaled_font_t *scaled_font);
    -void                cairo_ft_scaled_font_unlock_face    (cairo_scaled_font_t *scaled_font);
    -enum                cairo_ft_synthesize_t;
    -unsigned int        cairo_ft_font_face_get_synthesize   (cairo_font_face_t *font_face);
    -void                cairo_ft_font_face_set_synthesize   (cairo_font_face_t *font_face,
    -                                                         unsigned int synth_flags);
    -void                cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face,
    -                                                         unsigned int synth_flags);
    -
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_font_face_t * + +cairo_ft_font_face_create_for_ft_face () +
    +cairo_font_face_t * + +cairo_ft_font_face_create_for_pattern () +
    +void + +cairo_ft_font_options_substitute () +
    +FT_Face + +cairo_ft_scaled_font_lock_face () +
    +void + +cairo_ft_scaled_font_unlock_face () +
    unsigned int + +cairo_ft_font_face_get_synthesize () +
    +void + +cairo_ft_font_face_set_synthesize () +
    +void + +cairo_ft_font_face_unset_synthesize () +
    -

    Description

    -

    -The FreeType font backend is primarily used to render text on GNU/Linux -systems, but can be used on other platforms too. -

    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + +
    #defineCAIRO_HAS_FT_FONT
    #defineCAIRO_HAS_FC_FONT
    enumcairo_ft_synthesize_t
    -

    Details

    -
    -

    CAIRO_HAS_FT_FONT

    -
    #define CAIRO_HAS_FT_FONT 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the FreeType font backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.0

    -
    -
    -

    CAIRO_HAS_FC_FONT

    -
    #define CAIRO_HAS_FC_FONT 1
    -
    -

    -Defined if the Fontconfig-specific functions of the FreeType font backend -are available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.10

    +
    +

    Description

    +

    The FreeType font backend is primarily used to render text on GNU/Linux +systems, but can be used on other platforms too.

    -
    +
    +

    Functions

    -

    cairo_ft_font_face_create_for_ft_face ()

    -
    cairo_font_face_t * cairo_ft_font_face_create_for_ft_face
    -                                                        (FT_Face face,
    -                                                         int load_flags);
    -

    -Creates a new font face for the FreeType font backend from a +

    cairo_ft_font_face_create_for_ft_face ()

    +
    cairo_font_face_t *
    +cairo_ft_font_face_create_for_ft_face (FT_Face face,
    +                                       int load_flags);
    +

    Creates a new font face for the FreeType font backend from a pre-opened FreeType face. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). The -cairo_scaled_font_t returned from cairo_scaled_font_create() is +cairo_set_font_face() or cairo_scaled_font_create(). The +cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the FreeType backend and can be used with functions such -as cairo_ft_scaled_font_lock_face(). Note that Cairo may keep a reference +as cairo_ft_scaled_font_lock_face(). Note that Cairo may keep a reference to the FT_Face alive in a font-cache and the exact lifetime of the reference depends highly upon the exact usage pattern and is subject to external factors. You must not call FT_Done_Face() before the last reference to the -cairo_font_face_t has been dropped. -

    -

    -As an example, below is how one might correctly couple the lifetime of -the FreeType face object to the cairo_font_face_t. -

    -

    -

    +cairo_font_face_t has been dropped.

    +

    As an example, below is how one might correctly couple the lifetime of +the FreeType face object to the cairo_font_face_t.

     static const cairo_user_data_key_t key;
     
    @@ -123,333 +170,377 @@
        return ERROR;
     }
     
    -

    -

    -
    +
    +

    Parameters

    +
    --+++ - - + +cairo_destroy_func_t to cairo_font_face_set_user_data()

    + - - + - - - - +the load target, such as FT_LOAD_TARGET_LIGHT.

    +

    face :

    A FreeType face object, already opened. This must +

    face

    A FreeType face object, already opened. This must be kept around until the face's ref_count drops to zero and it is freed. Since the face may be referenced internally to Cairo, the best way to determine when it is safe to free the face is to pass a -cairo_destroy_func_t to cairo_font_face_set_user_data() -

     

    load_flags :

    flags to pass to FT_Load_Glyph when loading +

    load_flags

    flags to pass to FT_Load_Glyph when loading glyphs from the font. These flags are OR'ed together with the flags derived from the cairo_font_options_t passed -to cairo_scaled_font_create(), so only a few values such +to cairo_scaled_font_create(), so only a few values such as FT_LOAD_VERTICAL_LAYOUT, and FT_LOAD_FORCE_AUTOHINT are useful. You should not pass any of the flags affecting -the load target, such as FT_LOAD_TARGET_LIGHT.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. 
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.0


    -

    cairo_ft_font_face_create_for_pattern ()

    -
    cairo_font_face_t * cairo_ft_font_face_create_for_pattern
    -                                                        (FcPattern *pattern);
    -

    -Creates a new font face for the FreeType font backend based on a +

    cairo_ft_font_face_create_for_pattern ()

    +
    cairo_font_face_t *
    +cairo_ft_font_face_create_for_pattern (FcPattern *pattern);
    +

    Creates a new font face for the FreeType font backend based on a fontconfig pattern. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). The -cairo_scaled_font_t returned from cairo_scaled_font_create() is +cairo_set_font_face() or cairo_scaled_font_create(). The +cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the FreeType backend and can be used with functions such -as cairo_ft_scaled_font_lock_face(). -

    -

    -Font rendering options are represented both here and when you -call cairo_scaled_font_create(). Font options that have a representation +as cairo_ft_scaled_font_lock_face().

    +

    Font rendering options are represented both here and when you +call cairo_scaled_font_create(). Font options that have a representation in a FcPattern must be passed in here; to modify FcPattern appropriately to reflect the options in a cairo_font_options_t, call -cairo_ft_font_options_substitute(). -

    -

    -The pattern's FC_FT_FACE element is inspected first and if that is set, +cairo_ft_font_options_substitute().

    +

    The pattern's FC_FT_FACE element is inspected first and if that is set, that will be the FreeType font face associated with the returned cairo font face. Otherwise the FC_FILE element is checked. If it's set, that and the value of the FC_INDEX element (defaults to zero) of pattern -are used to load a font face from file. -

    -

    -If both steps from the previous paragraph fails, pattern will be passed + +are used to load a font face from file.

    +

    If both steps from the previous paragraph fails, pattern + will be passed to FcConfigSubstitute, FcDefaultSubstitute, and finally FcFontMatch, -and the resulting font pattern is used. -

    -

    -If the FC_FT_FACE element of pattern is set, the user is responsible +and the resulting font pattern is used.

    +

    If the FC_FT_FACE element of pattern + is set, the user is responsible for making sure that the referenced FT_Face remains valid for the life time of the returned cairo_font_face_t. See -cairo_ft_font_face_create_for_ft_face() for an example of how to couple -the life time of the FT_Face to that of the cairo font-face. -

    -
    +cairo_ft_font_face_create_for_ft_face() for an example of how to couple +the life time of the FT_Face to that of the cairo font-face.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    pattern :

    A fontconfig pattern. Cairo makes a copy of the pattern -if it needs to. You are free to modify or free pattern after this call.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    pattern

    A fontconfig pattern. Cairo makes a copy of the pattern +if it needs to. You are free to modify or free pattern +after this call.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.0


    -

    cairo_ft_font_options_substitute ()

    -
    void                cairo_ft_font_options_substitute    (const cairo_font_options_t *options,
    -                                                         FcPattern *pattern);
    -

    -Add options to a FcPattern based on a cairo_font_options_t font +

    cairo_ft_font_options_substitute ()

    +
    void
    +cairo_ft_font_options_substitute (const cairo_font_options_t *options,
    +                                  FcPattern *pattern);
    +

    Add options to a FcPattern based on a cairo_font_options_t font options object. Options that are already in the pattern, are not overridden, so you should call this function after calling FcConfigSubstitute() (the user's settings should override options based on the surface type), but -before calling FcDefaultSubstitute(). -

    -
    +before calling FcDefaultSubstitute().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    options :

    a cairo_font_options_t object

    options

    a cairo_font_options_t object

     

    pattern :

    an existing FcPattern -

    pattern

    an existing FcPattern

     
    +

    Since 1.0


    -

    cairo_ft_scaled_font_lock_face ()

    -
    FT_Face             cairo_ft_scaled_font_lock_face      (cairo_scaled_font_t *scaled_font);
    -

    -cairo_ft_scaled_font_lock_face() gets the FT_Face object from a FreeType +

    cairo_ft_scaled_font_lock_face ()

    +
    FT_Face
    +cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *scaled_font);
    +

    cairo_ft_scaled_font_lock_face() gets the FT_Face object from a FreeType backend font and scales it appropriately for the font. You must -release the face with cairo_ft_scaled_font_unlock_face() +release the face with cairo_ft_scaled_font_unlock_face() when you are done using it. Since the FT_Face object can be shared between multiple cairo_scaled_font_t objects, you must not lock any other font objects until you unlock this one. A count is -kept of the number of times cairo_ft_scaled_font_lock_face() is -called. cairo_ft_scaled_font_unlock_face() must be called the same number -of times. -

    -

    -You must be careful when using this function in a library or in a +kept of the number of times cairo_ft_scaled_font_lock_face() is +called. cairo_ft_scaled_font_unlock_face() must be called the same number +of times.

    +

    You must be careful when using this function in a library or in a threaded application, because freetype's design makes it unsafe to call freetype functions simultaneously from multiple threads, (even if using distinct FT_Face objects). Because of this, application code that acquires an FT_Face object with this call must add its own locking to protect any use of that object, (and which also must protect any other calls into cairo as almost any cairo function -might result in a call into the freetype library). -

    -
    +might result in a call into the freetype library).

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    scaled_font :

    A cairo_scaled_font_t from the FreeType font backend. Such an -object can be created by calling cairo_scaled_font_create() on a -FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), -cairo_ft_font_face_create_for_ft_face()).

    Returns :

    The FT_Face object for font, scaled appropriately, -or NULL if scaled_font is in an error state (see -cairo_scaled_font_status()) or there is insufficient memory.

    scaled_font

    A cairo_scaled_font_t from the FreeType font backend. Such an +object can be created by calling cairo_scaled_font_create() on a +FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), +cairo_ft_font_face_create_for_ft_face()).

     
    +
    +
    +

    Returns

    +

    The FT_Face object for font +, scaled appropriately, +or NULL if scaled_font +is in an error state (see +cairo_scaled_font_status()) or there is insufficient memory.

    +

    +

    Since 1.0


    -

    cairo_ft_scaled_font_unlock_face ()

    -
    void                cairo_ft_scaled_font_unlock_face    (cairo_scaled_font_t *scaled_font);
    -

    -Releases a face obtained with cairo_ft_scaled_font_lock_face(). -

    -
    +

    cairo_ft_scaled_font_unlock_face ()

    +
    void
    +cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font);
    +

    Releases a face obtained with cairo_ft_scaled_font_lock_face().

    +
    +

    Parameters

    +
    --+++ - - + + +

    scaled_font :

    A cairo_scaled_font_t from the FreeType font backend. Such an -object can be created by calling cairo_scaled_font_create() on a -FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), -cairo_ft_font_face_create_for_ft_face()).

    scaled_font

    A cairo_scaled_font_t from the FreeType font backend. Such an +object can be created by calling cairo_scaled_font_create() on a +FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), +cairo_ft_font_face_create_for_ft_face()).

     
    +

    Since 1.0


    -

    enum cairo_ft_synthesize_t

    -
    typedef enum {
    -    CAIRO_FT_SYNTHESIZE_BOLD = 1 << 0,
    -    CAIRO_FT_SYNTHESIZE_OBLIQUE = 1 << 1
    -} cairo_ft_synthesize_t;
    -
    -

    -A set of synthesis options to control how FreeType renders the glyphs -for a particular font face. -

    -

    -Individual synthesis features of a cairo_ft_font_face_t can be set -using cairo_ft_font_face_set_synthesize(), or disabled using -cairo_ft_font_face_unset_synthesize(). The currently enabled set of -synthesis options can be queried with cairo_ft_font_face_get_synthesize(). -

    -

    -Note: that when synthesizing glyphs, the font metrics returned will only -be estimates. -

    -
    +

    cairo_ft_font_face_get_synthesize ()

    +
    unsigned int
    +cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face);
    +

    See cairo_ft_synthesize_t.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    CAIRO_FT_SYNTHESIZE_BOLD

    Embolden the glyphs (redraw with a pixel offset) -

    CAIRO_FT_SYNTHESIZE_OBLIQUE

    Slant the glyph outline by 12 degrees to the -right. -

    font_face

    The cairo_ft_font_face_t object to query

     
    +
    +
    +

    Returns

    +

    the current set of synthesis options.

    +

    +

    Since 1.12


    -

    cairo_ft_font_face_get_synthesize ()

    -
    unsigned int        cairo_ft_font_face_get_synthesize   (cairo_font_face_t *font_face);
    -

    -See cairo_ft_synthesize_t. -

    -
    +

    cairo_ft_font_face_set_synthesize ()

    +
    void
    +cairo_ft_font_face_set_synthesize (cairo_font_face_t *font_face,
    +                                   unsigned int synth_flags);
    +

    FreeType provides the ability to synthesize different glyphs from a base +font, which is useful if you lack those glyphs from a true bold or oblique +font. See also cairo_ft_synthesize_t.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    The cairo_ft_font_face_t object to query

    font_face

    The cairo_ft_font_face_t object to modify

     

    Returns :

    the current set of synthesis options.

    synth_flags

    the set of synthesis options to enable

     
    +

    Since 1.12


    -

    cairo_ft_font_face_set_synthesize ()

    -
    void                cairo_ft_font_face_set_synthesize   (cairo_font_face_t *font_face,
    -                                                         unsigned int synth_flags);
    -

    -FreeType provides the ability to synthesize different glyphs from a base -font, which is useful if you lack those glyphs from a true bold or oblique -font. See also cairo_ft_synthesize_t. -

    -
    +

    cairo_ft_font_face_unset_synthesize ()

    +
    void
    +cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face,
    +                                     unsigned int synth_flags);
    +

    See cairo_ft_font_face_set_synthesize().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    The cairo_ft_font_face_t object to modify

    font_face

    The cairo_ft_font_face_t object to modify

     

    synth_flags :

    the set of synthesis options to enable

    synth_flags

    the set of synthesis options to disable

     
    +

    Since 1.12

    +
    +
    +

    Types and Values

    +
    +

    CAIRO_HAS_FT_FONT

    +
    #define CAIRO_HAS_FT_FONT 1
    +
    +

    Defined if the FreeType font backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.0

    +
    +
    +
    +

    CAIRO_HAS_FC_FONT

    +
    #define CAIRO_HAS_FC_FONT 1
    +
    +

    Defined if the Fontconfig-specific functions of the FreeType font backend +are available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.10

    +

    -

    cairo_ft_font_face_unset_synthesize ()

    -
    void                cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face,
    -                                                         unsigned int synth_flags);
    -

    -See cairo_ft_font_face_set_synthesize(). -

    -
    +

    enum cairo_ft_synthesize_t

    +

    A set of synthesis options to control how FreeType renders the glyphs +for a particular font face.

    +

    Individual synthesis features of a cairo_ft_font_face_t can be set +using cairo_ft_font_face_set_synthesize(), or disabled using +cairo_ft_font_face_unset_synthesize(). The currently enabled set of +synthesis options can be queried with cairo_ft_font_face_get_synthesize().

    +

    Note: that when synthesizing glyphs, the font metrics returned will only +be estimates.

    +
    +

    Members

    +
    --+++ - - + + + - - + + +

    font_face :

    The cairo_ft_font_face_t object to modify

    CAIRO_FT_SYNTHESIZE_BOLD

    +

    Embolden the glyphs (redraw with a pixel offset)

    +
     

    synth_flags :

    the set of synthesis options to disable

    CAIRO_FT_SYNTHESIZE_OBLIQUE

    +

    Slant the glyph outline by 12 degrees to the +right.

    +
     
    +

    Since 1.12

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Image-Surfaces.html cairo-1.14.2/doc/public/html/cairo-Image-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Image-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Image-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Image Surfaces +Cairo: A Vector Graphics Library: Image Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,145 +30,126 @@

    Image Surfaces

    Image Surfaces — Rendering to memory buffers

    - +
    - -
    -

    Description

    -

    -Image surfaces provide the ability to render to memory buffers -either allocated by cairo or by the calling code. The supported -image formats are those defined in cairo_format_t. -

    -
    -

    Details

    -
    -

    CAIRO_HAS_IMAGE_SURFACE

    -
    #define CAIRO_HAS_IMAGE_SURFACE 1
    -
    -

    -Defined if the image surface backend is available. -The image surface backend is always built in. -This macro was added for completeness in cairo 1.8. -

    -

    Since 1.8

    -
    -
    -
    -

    enum cairo_format_t

    -
    typedef enum {
    -    CAIRO_FORMAT_INVALID   = -1,
    -    CAIRO_FORMAT_ARGB32    = 0,
    -    CAIRO_FORMAT_RGB24     = 1,
    -    CAIRO_FORMAT_A8        = 2,
    -    CAIRO_FORMAT_A1        = 3,
    -    CAIRO_FORMAT_RGB16_565 = 4,
    -    CAIRO_FORMAT_RGB30     = 5
    -} cairo_format_t;
    -
    -

    -cairo_format_t is used to identify the memory format of -image data. -

    -

    -New entries may be added in future versions. -

    -
    +

    Functions

    +
    --++ - - + - - + - - + - - + - - + - - + + + + + - - +

    CAIRO_FORMAT_INVALID

    no such format exists or is supported. + +int + +cairo_format_stride_for_width ()

    CAIRO_FORMAT_ARGB32

    each pixel is a 32-bit quantity, with - alpha in the upper 8 bits, then red, then green, then blue. - The 32-bit quantities are stored native-endian. Pre-multiplied - alpha is used. (That is, 50% transparent red is 0x80800000, - not 0x80ff0000.) (Since 1.0) + +cairo_surface_t * + +cairo_image_surface_create ()

    CAIRO_FORMAT_RGB24

    each pixel is a 32-bit quantity, with - the upper 8 bits unused. Red, Green, and Blue are stored - in the remaining 24 bits in that order. (Since 1.0) + +cairo_surface_t * + +cairo_image_surface_create_for_data ()

    CAIRO_FORMAT_A8

    each pixel is a 8-bit quantity holding - an alpha value. (Since 1.0) +unsigned char * + +cairo_image_surface_get_data ()

    CAIRO_FORMAT_A1

    each pixel is a 1-bit quantity holding - an alpha value. Pixels are packed together into 32-bit - quantities. The ordering of the bits matches the - endianess of the platform. On a big-endian machine, the - first pixel is in the uppermost bit, on a little-endian - machine the first pixel is in the least-significant bit. (Since 1.0) + +cairo_format_t + +cairo_image_surface_get_format ()

    CAIRO_FORMAT_RGB16_565

    each pixel is a 16-bit quantity - with red in the upper 5 bits, then green in the middle - 6 bits, and blue in the lower 5 bits. (Since 1.2) + +int + +cairo_image_surface_get_width () +
    +int + +cairo_image_surface_get_height ()

    CAIRO_FORMAT_RGB30

    like RGB24 but with 10bpc. (Since 1.12) + +int + +cairo_image_surface_get_stride ()
    -

    Since 1.0

    -
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    #defineCAIRO_HAS_IMAGE_SURFACE
    enumcairo_format_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    Image surfaces provide the ability to render to memory buffers +either allocated by cairo or by the calling code. The supported +image formats are those defined in cairo_format_t.

    +
    +
    +

    Functions

    -

    cairo_format_stride_for_width ()

    -
    int                 cairo_format_stride_for_width       (cairo_format_t format,
    -                                                         int width);
    -

    -This function provides a stride value that will respect all +

    cairo_format_stride_for_width ()

    +
    int
    +cairo_format_stride_for_width (cairo_format_t format,
    +                               int width);
    +

    This function provides a stride value that will respect all alignment requirements of the accelerated image-rendering code -within cairo. Typical usage will be of the form: -

    -

    -

    +within cairo. Typical usage will be of the form:

     int stride;
     unsigned char *data;
    -cairo_surface_t *surface;
    +cairo_surface_t *surface;
     
     stride = cairo_format_stride_for_width (format, width);
     data = malloc (stride * height);
    @@ -179,301 +157,426 @@
     					  width, height,
     					  stride);
     
    -

    -

    -
    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    format :

    A cairo_format_t value

    format

    A cairo_format_t value

     

    width :

    The desired width of an image surface to be created.

    Returns :

    the appropriate stride to use given the desired -format and width, or -1 if either the format is invalid or the width -too large.

    width

    The desired width of an image surface to be created.

     
    +
    +
    +

    Returns

    +

    the appropriate stride to use given the desired +format and width, or -1 if either the format is invalid or the width +too large.

    +

    +

    Since 1.6


    -

    cairo_image_surface_create ()

    -
    cairo_surface_t *   cairo_image_surface_create          (cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an image surface of the specified format and -dimensions. Initially the surface contents are all -0. (Specifically, within each pixel, each color or alpha channel +

    cairo_image_surface_create ()

    +
    cairo_surface_t *
    +cairo_image_surface_create (cairo_format_t format,
    +                            int width,
    +                            int height);
    +

    Creates an image surface of the specified format and +dimensions. Initially the surface contents are all

    +
    1. (Specifically, within each pixel, each color or alpha channel belonging to format will be 0. The contents of bits within a pixel, -but not belonging to the given format are undefined). -

      -
      +but not belonging to the given format are undefined).

      +
      +

      Parameters

      +
      --+++ - - + + + - - + + + - - - - - - + + +

      format :

      format of pixels in the surface to create

      format

      format of pixels in the surface to create

       

      width :

      width of the surface, in pixels

      width

      width of the surface, in pixels

       

      height :

      height of the surface, in pixels

      Returns :

      a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

      height

      height of the surface, in pixels

       
      +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.0


    -

    cairo_image_surface_create_for_data ()

    -
    cairo_surface_t *   cairo_image_surface_create_for_data (unsigned char *data,
    -                                                         cairo_format_t format,
    -                                                         int width,
    -                                                         int height,
    -                                                         int stride);
    -

    -Creates an image surface for the provided pixel data. The output +

    cairo_image_surface_create_for_data ()

    +
    cairo_surface_t *
    +cairo_image_surface_create_for_data (unsigned char *data,
    +                                     cairo_format_t format,
    +                                     int width,
    +                                     int height,
    +                                     int stride);
    +

    Creates an image surface for the provided pixel data. The output buffer must be kept around until the cairo_surface_t is destroyed -or cairo_surface_finish() is called on the surface. The initial -contents of data will be used as the initial image contents; you +or cairo_surface_finish() is called on the surface. The initial +contents of data + will be used as the initial image contents; you must explicitly clear the buffer, using, for example, -cairo_rectangle() and cairo_fill() if you want it cleared. -

    -

    -Note that the stride may be larger than +cairo_rectangle() and cairo_fill() if you want it cleared.

    +

    Note that the stride may be larger than width*bytes_per_pixel to provide proper alignment for each pixel and row. This alignment is required to allow high-performance rendering within cairo. The correct way to obtain a legal stride value is to -call cairo_format_stride_for_width() with the desired format and +call cairo_format_stride_for_width() with the desired format and maximum image width value, and then use the resulting stride value to allocate the data and to create the image surface. See -cairo_format_stride_for_width() for example code. -

    -
    +cairo_format_stride_for_width() for example code.

    +
    +

    Parameters

    +
    --+++ - - + +kind of variable, (for example, a pointer returned by malloc).

    + - - + + + - - + + + - - + + + - - + +cairo_format_stride_for_width() before allocating the data +buffer.

    + - - - +

    data :

    a pointer to a buffer supplied by the application in which +

    data

    a pointer to a buffer supplied by the application in which to write contents. This pointer must be suitably aligned for any -kind of variable, (for example, a pointer returned by malloc).

     

    format :

    the format of pixels in the buffer

    format

    the format of pixels in the buffer

     

    width :

    the width of the image to be stored in the buffer

    width

    the width of the image to be stored in the buffer

     

    height :

    the height of the image to be stored in the buffer

    height

    the height of the image to be stored in the buffer

     

    stride :

    the number of bytes between the start of rows in the +

    stride

    the number of bytes between the start of rows in the buffer as allocated. This value should always be computed by -cairo_format_stride_for_width() before allocating the data -buffer.

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a pointer to a "nil" surface in the case of an error such as out of memory or an invalid stride value. In case of invalid stride value the error status of the returned surface will be CAIRO_STATUS_INVALID_STRIDE. You can use -cairo_surface_status() to check for this. -See cairo_surface_set_user_data() for a means of attaching a -destroy-notification fallback to the surface if necessary. - - -

    +cairo_surface_status() to check for this.

    +

    See cairo_surface_set_user_data() for a means of attaching a +destroy-notification fallback to the surface if necessary.

    +

    +

    Since 1.0


    -

    cairo_image_surface_get_data ()

    -
    unsigned char *     cairo_image_surface_get_data        (cairo_surface_t *surface);
    -

    -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 +

    cairo_image_surface_get_data ()

    +
    unsigned char *
    +cairo_image_surface_get_data (cairo_surface_t *surface);
    +

    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. -

    -
    +finished. A call to cairo_surface_mark_dirty() is required after +the data is modified.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_image_surface_t -

    Returns :

    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.

    surface

    a cairo_image_surface_t

     
    +
    +
    +

    Returns

    +

    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.

    +

    +

    Since 1.2


    -

    cairo_image_surface_get_format ()

    -
    cairo_format_t      cairo_image_surface_get_format      (cairo_surface_t *surface);
    -

    -Get the format of the surface. -

    -
    +

    cairo_image_surface_get_format ()

    +
    cairo_format_t
    +cairo_image_surface_get_format (cairo_surface_t *surface);
    +

    Get the format of the surface.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_image_surface_t -

    Returns :

    the format of the surface

    surface

    a cairo_image_surface_t

     
    +
    +
    +

    Returns

    +

    the format of the surface

    +

    +

    Since 1.2


    -

    cairo_image_surface_get_width ()

    -
    int                 cairo_image_surface_get_width       (cairo_surface_t *surface);
    -

    -Get the width of the image surface in pixels. -

    -
    +

    cairo_image_surface_get_width ()

    +
    int
    +cairo_image_surface_get_width (cairo_surface_t *surface);
    +

    Get the width of the image surface in pixels.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_image_surface_t -

    Returns :

    the width of the surface in pixels.

    surface

    a cairo_image_surface_t

     
    +
    +
    +

    Returns

    +

    the width of the surface in pixels.

    +

    +

    Since 1.0


    -

    cairo_image_surface_get_height ()

    -
    int                 cairo_image_surface_get_height      (cairo_surface_t *surface);
    -

    -Get the height of the image surface in pixels. -

    -
    +

    cairo_image_surface_get_height ()

    +
    int
    +cairo_image_surface_get_height (cairo_surface_t *surface);
    +

    Get the height of the image surface in pixels.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_image_surface_t -

    Returns :

    the height of the surface in pixels.

    surface

    a cairo_image_surface_t

     
    +
    +
    +

    Returns

    +

    the height of the surface in pixels.

    +

    +

    Since 1.0


    -

    cairo_image_surface_get_stride ()

    -
    int                 cairo_image_surface_get_stride      (cairo_surface_t *surface);
    -

    -Get the stride of the image surface in bytes -

    -
    +

    cairo_image_surface_get_stride ()

    +
    int
    +cairo_image_surface_get_stride (cairo_surface_t *surface);
    +

    Get the stride of the image surface in bytes

    +
    +

    Parameters

    +
    --++++ + + + + + +

    surface

    a cairo_image_surface_t

     
    +
    +
    +

    Returns

    +

    the stride of the image surface in bytes (or 0 if +surface +is not an image surface). The stride is the distance in +bytes from the beginning of one row of the image data to the +beginning of the next row.

    +

    +
    +

    Since 1.2

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_IMAGE_SURFACE

    +
    #define CAIRO_HAS_IMAGE_SURFACE 1
    +
    +

    Defined if the image surface backend is available. +The image surface backend is always built in. +This macro was added for completeness in cairo 1.8.

    +

    Since 1.8

    +
    +
    +
    +

    enum cairo_format_t

    +

    cairo_format_t is used to identify the memory format of +image data.

    +

    New entries may be added in future versions.

    +
    +

    Members

    +
    ++++ - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    surface :

    a cairo_image_surface_t +

    CAIRO_FORMAT_INVALID

    +

    no such format exists or is supported.

     

    Returns :

    the stride of the image surface in bytes (or 0 if -surface is not an image surface). The stride is the distance in -bytes from the beginning of one row of the image data to the -beginning of the next row.

    CAIRO_FORMAT_ARGB32

    +

    each pixel is a 32-bit quantity, with + alpha in the upper 8 bits, then red, then green, then blue. + The 32-bit quantities are stored native-endian. Pre-multiplied + alpha is used. (That is, 50% transparent red is 0x80800000, + not 0x80ff0000.) (Since 1.0)

    +
     

    CAIRO_FORMAT_RGB24

    +

    each pixel is a 32-bit quantity, with + the upper 8 bits unused. Red, Green, and Blue are stored + in the remaining 24 bits in that order. (Since 1.0)

    +
     

    CAIRO_FORMAT_A8

    +

    each pixel is a 8-bit quantity holding + an alpha value. (Since 1.0)

    +
     

    CAIRO_FORMAT_A1

    +

    each pixel is a 1-bit quantity holding + an alpha value. Pixels are packed together into 32-bit + quantities. The ordering of the bits matches the + endianess of the platform. On a big-endian machine, the + first pixel is in the uppermost bit, on a little-endian + machine the first pixel is in the least-significant bit. (Since 1.0)

    +
     

    CAIRO_FORMAT_RGB16_565

    +

    each pixel is a 16-bit quantity + with red in the upper 5 bits, then green in the middle + 6 bits, and blue in the lower 5 bits. (Since 1.2)

    +
     

    CAIRO_FORMAT_RGB30

    +

    like RGB24 but with 10bpc. (Since 1.12)

    +
     
    -

    Since 1.2

    +
    +

    Since 1.0

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Paths.html cairo-1.14.2/doc/public/html/cairo-Paths.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Paths.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Paths.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Paths +Cairo: A Vector Graphics Library: Paths - + - - - - - - - - - - + + + + + + +
    @@ -33,655 +30,614 @@

    Paths

    Paths — Creating paths and manipulating path data

    - +
    -
    -

    Synopsis

    -
                        cairo_path_t;
    -union               cairo_path_data_t;
    -enum                cairo_path_data_type_t;
    -cairo_path_t *      cairo_copy_path                     (cairo_t *cr);
    -cairo_path_t *      cairo_copy_path_flat                (cairo_t *cr);
    -void                cairo_path_destroy                  (cairo_path_t *path);
    -void                cairo_append_path                   (cairo_t *cr,
    -                                                         const cairo_path_t *path);
    -cairo_bool_t        cairo_has_current_point             (cairo_t *cr);
    -void                cairo_get_current_point             (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -void                cairo_new_path                      (cairo_t *cr);
    -void                cairo_new_sub_path                  (cairo_t *cr);
    -void                cairo_close_path                    (cairo_t *cr);
    -void                cairo_arc                           (cairo_t *cr,
    -                                                         double xc,
    -                                                         double yc,
    -                                                         double radius,
    -                                                         double angle1,
    -                                                         double angle2);
    -void                cairo_arc_negative                  (cairo_t *cr,
    -                                                         double xc,
    -                                                         double yc,
    -                                                         double radius,
    -                                                         double angle1,
    -                                                         double angle2);
    -void                cairo_curve_to                      (cairo_t *cr,
    -                                                         double x1,
    -                                                         double y1,
    -                                                         double x2,
    -                                                         double y2,
    -                                                         double x3,
    -                                                         double y3);
    -void                cairo_line_to                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_move_to                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -void                cairo_rectangle                     (cairo_t *cr,
    -                                                         double x,
    -                                                         double y,
    -                                                         double width,
    -                                                         double height);
    -void                cairo_glyph_path                    (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs);
    -void                cairo_text_path                     (cairo_t *cr,
    -                                                         const char *utf8);
    -void                cairo_rel_curve_to                  (cairo_t *cr,
    -                                                         double dx1,
    -                                                         double dy1,
    -                                                         double dx2,
    -                                                         double dy2,
    -                                                         double dx3,
    -                                                         double dy3);
    -void                cairo_rel_line_to                   (cairo_t *cr,
    -                                                         double dx,
    -                                                         double dy);
    -void                cairo_rel_move_to                   (cairo_t *cr,
    -                                                         double dx,
    -                                                         double dy);
    -void                cairo_path_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -
    -
    -
    -

    Description

    -

    -Paths are the most basic drawing tools and are primarily used to implicitly -generate simple masks. -

    -
    -

    Details

    -
    -

    cairo_path_t

    -
    typedef struct {
    -    cairo_status_t status;
    -    cairo_path_data_t *data;
    -    int num_data;
    -} cairo_path_t;
    -
    -

    -A data structure for holding a path. This data structure serves as -the return value for cairo_copy_path() and -cairo_copy_path_flat() as well the input value for -cairo_append_path(). -

    -

    -See cairo_path_data_t for hints on how to iterate over the -actual data within the path. -

    -

    -The num_data member gives the number of elements in the data -array. This number is larger than the number of independent path -portions (defined in cairo_path_data_type_t), since the data -includes both headers and coordinates for each portion. -

    -
    +

    Functions

    +
    --++ - - + + - - + + - - + + - -

    cairo_status_t status;

    the current error status +cairo_path_t * + +cairo_copy_path () +

    cairo_path_data_t *data;

    the elements in the path +cairo_path_t * + +cairo_copy_path_flat () +

    int num_data;

    the number of elements in the data array +void + +cairo_path_destroy () +
    -

    Since 1.0

    -
    -
    -
    -

    union cairo_path_data_t

    -
    union _cairo_path_data_t {
    -    struct {
    -	cairo_path_data_type_t type;
    -	int length;
    -    } header;
    -    struct {
    -	double x, y;
    -    } point;
    -};
    -
    -

    -cairo_path_data_t is used to represent the path data inside a -cairo_path_t. -

    -

    -The data structure is designed to try to balance the demands of -efficiency and ease-of-use. A path is represented as an array of -cairo_path_data_t, which is a union of headers and points. -

    -

    -Each portion of the path is represented by one or more elements in -the array, (one header followed by 0 or more points). The length -value of the header is the number of array elements for the current -portion including the header, (ie. length == 1 + # of points), and -where the number of points for each element type is as follows: -

    -

    -

    -
    -    %CAIRO_PATH_MOVE_TO:     1 point
    -    %CAIRO_PATH_LINE_TO:     1 point
    -    %CAIRO_PATH_CURVE_TO:    3 points
    -    %CAIRO_PATH_CLOSE_PATH:  0 points
    -
    -

    -

    -

    -The semantics and ordering of the coordinate values are consistent -with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and -cairo_close_path(). -

    -

    -Here is sample code for iterating through a cairo_path_t: -

    -

    -

    -
    -     int i;
    -     cairo_path_t *path;
    -     cairo_path_data_t *data;
    - 
    -     path = cairo_copy_path (cr);
    - 
    -     for (i=0; i < path->num_data; i += path->data[i].header.length) {
    -         data = &path->data[i];
    -         switch (data->header.type) {
    -         case CAIRO_PATH_MOVE_TO:
    -             do_move_to_things (data[1].point.x, data[1].point.y);
    -             break;
    -         case CAIRO_PATH_LINE_TO:
    -             do_line_to_things (data[1].point.x, data[1].point.y);
    -             break;
    -         case CAIRO_PATH_CURVE_TO:
    -             do_curve_to_things (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:
    -             do_close_path_things ();
    -             break;
    -         }
    -     }
    -     cairo_path_destroy (path);
    -
    -

    -

    -

    -As of cairo 1.4, cairo does not mind if there are more elements in -a portion of the path than needed. Such elements can be used by -users of the cairo API to hold extra values in the path data -structure. For this reason, it is recommended that applications -always use data->header.length to -iterate over the path data, instead of hardcoding the number of -elements for each element type. -

    -

    Since 1.0

    -
    -
    -
    -

    enum cairo_path_data_type_t

    -
    typedef enum {
    -    CAIRO_PATH_MOVE_TO,
    -    CAIRO_PATH_LINE_TO,
    -    CAIRO_PATH_CURVE_TO,
    -    CAIRO_PATH_CLOSE_PATH
    -} cairo_path_data_type_t;
    -
    -

    -cairo_path_data_t is used to describe the type of one portion -of a path when represented as a cairo_path_t. -See cairo_path_data_t for details. -

    -
    ---- - - - + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    CAIRO_PATH_MOVE_TO

    A move-to operation, since 1.0 + +void + +cairo_append_path () +
    +cairo_bool_t + +cairo_has_current_point () +
    +void + +cairo_get_current_point () +
    +void + +cairo_new_path () +
    +void + +cairo_new_sub_path () +
    +void + +cairo_close_path ()

    CAIRO_PATH_LINE_TO

    A line-to operation, since 1.0 + +void + +cairo_arc () +
    +void + +cairo_arc_negative ()

    CAIRO_PATH_CURVE_TO

    A curve-to operation, since 1.0 + +void + +cairo_curve_to ()

    CAIRO_PATH_CLOSE_PATH

    A close-path operation, since 1.0 + +void + +cairo_line_to () +
    +void + +cairo_move_to () +
    +void + +cairo_rectangle () +
    +void + +cairo_glyph_path () +
    +void + +cairo_text_path () +
    +void + +cairo_rel_curve_to () +
    +void + +cairo_rel_line_to () +
    +void + +cairo_rel_move_to () +
    +void + +cairo_path_extents ()
    -

    Since 1.0

    -
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + +
     cairo_path_t
    unioncairo_path_data_t
    enumcairo_path_data_type_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    Paths are the most basic drawing tools and are primarily used to implicitly +generate simple masks.

    +
    +
    +

    Functions

    -

    cairo_copy_path ()

    -
    cairo_path_t *      cairo_copy_path                     (cairo_t *cr);
    -

    -Creates a copy of the current path and returns it to the user as a +

    cairo_copy_path ()

    +
    cairo_path_t *
    +cairo_copy_path (cairo_t *cr);
    +

    Creates a copy of the current path and returns it to the user as a cairo_path_t. See cairo_path_data_t for hints on how to iterate -over the returned data structure. -

    -

    -This function will always return a valid pointer, but the result -will have no data (data==NULL and +over the returned data structure.

    +

    This function will always return a valid pointer, but the result +will have no data (data==NULL and num_data==0), if either of the following -conditions hold: -

    -

    -

    +conditions hold:

    1. If there is insufficient memory to copy the path. In this case path->status will be set to CAIRO_STATUS_NO_MEMORY.
    2. If cr is already in an error state. In this case path->status will contain the same status that - would be returned by cairo_status().
    3. + would be returned by cairo_status().
    -

    -

    -
    ---+
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the copy of the current path. The caller owns the -returned object and should call cairo_path_destroy() when finished -with it.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the copy of the current path. The caller owns the +returned object and should call cairo_path_destroy() when finished +with it.

    +

    +

    Since 1.0


    -

    cairo_copy_path_flat ()

    -
    cairo_path_t *      cairo_copy_path_flat                (cairo_t *cr);
    -

    -Gets a flattened copy of the current path and returns it to the +

    cairo_copy_path_flat ()

    +
    cairo_path_t *
    +cairo_copy_path_flat (cairo_t *cr);
    +

    Gets a flattened copy of the current path and returns it to the user as a cairo_path_t. See cairo_path_data_t for hints on -how to iterate over the returned data structure. -

    -

    -This function is like cairo_copy_path() except that any curves +how to iterate over the returned data structure.

    +

    This function is like cairo_copy_path() except that any curves in the path will be approximated with piecewise-linear approximations, (accurate to within the current tolerance value). That is, the result is guaranteed to not have any elements of type CAIRO_PATH_CURVE_TO which will instead be replaced by a -series of CAIRO_PATH_LINE_TO elements. -

    -

    -This function will always return a valid pointer, but the result -will have no data (data==NULL and +series of CAIRO_PATH_LINE_TO elements.

    +

    This function will always return a valid pointer, but the result +will have no data (data==NULL and num_data==0), if either of the following -conditions hold: -

    -

    -

    +conditions hold:

    1. If there is insufficient memory to copy the path. In this case path->status will be set to CAIRO_STATUS_NO_MEMORY.
    2. If cr is already in an error state. In this case path->status will contain the same status that - would be returned by cairo_status().
    3. + would be returned by cairo_status().
    -

    -

    -
    ---+
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    the copy of the current path. The caller owns the -returned object and should call cairo_path_destroy() when finished -with it.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    the copy of the current path. The caller owns the +returned object and should call cairo_path_destroy() when finished +with it.

    +

    +

    Since 1.0


    -

    cairo_path_destroy ()

    -
    void                cairo_path_destroy                  (cairo_path_t *path);
    -

    -Immediately releases all memory associated with path. After a call -to cairo_path_destroy() the path pointer is no longer valid and -should not be used further. -

    -

    -Note: cairo_path_destroy() should only be called with a +

    cairo_path_destroy ()

    +
    void
    +cairo_path_destroy (cairo_path_t *path);
    +

    Immediately releases all memory associated with path +. After a call +to cairo_path_destroy() the path + pointer is no longer valid and +should not be used further.

    +

    Note: cairo_path_destroy() should only be called with a pointer to a cairo_path_t returned by a cairo function. Any path that is created manually (ie. outside of cairo) should be destroyed -manually as well. -

    -
    ---+manually as well.

    +
    +

    Parameters

    +
    ++++ - - + + +

    path :

    a path previously returned by either cairo_copy_path() or -cairo_copy_path_flat().

    path

    a path previously returned by either cairo_copy_path() or +cairo_copy_path_flat().

     
    +

    Since 1.0


    -

    cairo_append_path ()

    -
    void                cairo_append_path                   (cairo_t *cr,
    -                                                         const cairo_path_t *path);
    -

    -Append the path onto the current path. The path may be either the -return value from one of cairo_copy_path() or -cairo_copy_path_flat() or it may be constructed manually. See +

    cairo_append_path ()

    +
    void
    +cairo_append_path (cairo_t *cr,
    +                   const cairo_path_t *path);
    +

    Append the path + onto the current path. The path + may be either the +return value from one of cairo_copy_path() or +cairo_copy_path_flat() or it may be constructed manually. See cairo_path_t for details on how the path data structure should be initialized, and note that path->status must be -initialized to CAIRO_STATUS_SUCCESS. -

    -
    ---+initialized to CAIRO_STATUS_SUCCESS.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    path :

    path to be appended

    path

    path to be appended

     
    +

    Since 1.0


    -

    cairo_has_current_point ()

    -
    cairo_bool_t        cairo_has_current_point             (cairo_t *cr);
    -

    -Returns whether a current point is defined on the current path. -See cairo_get_current_point() for details on the current point. -

    -
    ---+

    cairo_has_current_point ()

    +
    cairo_bool_t
    +cairo_has_current_point (cairo_t *cr);
    +

    Returns whether a current point is defined on the current path. +See cairo_get_current_point() for details on the current point.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    cr :

    a cairo context

    Returns :

    whether a current point is defined.

    cr

    a cairo context

     
    +
    +
    +

    Returns

    +

    whether a current point is defined.

    +

    +

    Since 1.6


    -

    cairo_get_current_point ()

    -
    void                cairo_get_current_point             (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -

    -Gets the current point of the current path, which is -conceptually the final point reached by the path so far. -

    -

    -The current point is returned in the user-space coordinate -system. If there is no defined current point or if cr is in an -error status, x and y will both be set to 0.0. It is possible to -check this in advance with cairo_has_current_point(). -

    -

    -Most path construction functions alter the current point. See the +

    cairo_get_current_point ()

    +
    void
    +cairo_get_current_point (cairo_t *cr,
    +                         double *x,
    +                         double *y);
    +

    Gets the current point of the current path, which is +conceptually the final point reached by the path so far.

    +

    The current point is returned in the user-space coordinate +system. If there is no defined current point or if cr + is in an +error status, x + and y + will both be set to 0.0. It is possible to +check this in advance with cairo_has_current_point().

    +

    Most path construction functions alter the current point. See the following for details on how they affect the current point: -cairo_new_path(), cairo_new_sub_path(), -cairo_append_path(), cairo_close_path(), -cairo_move_to(), cairo_line_to(), cairo_curve_to(), -cairo_rel_move_to(), cairo_rel_line_to(), cairo_rel_curve_to(), -cairo_arc(), cairo_arc_negative(), cairo_rectangle(), -cairo_text_path(), cairo_glyph_path(), cairo_stroke_to_path(). -

    -

    -Some functions use and alter the current point but do not +cairo_new_path(), cairo_new_sub_path(), +cairo_append_path(), cairo_close_path(), +cairo_move_to(), cairo_line_to(), cairo_curve_to(), +cairo_rel_move_to(), cairo_rel_line_to(), cairo_rel_curve_to(), +cairo_arc(), cairo_arc_negative(), cairo_rectangle(), +cairo_text_path(), cairo_glyph_path(), cairo_stroke_to_path().

    +

    Some functions use and alter the current point but do not otherwise change current path: -cairo_show_text(). -

    -

    -Some functions unset the current path and as a result, current point: -cairo_fill(), cairo_stroke(). -

    -
    ---+cairo_show_text().

    +

    Some functions unset the current path and as a result, current point: +cairo_fill(), cairo_stroke().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x :

    return value for X coordinate of the current point

    x

    return value for X coordinate of the current point

     

    y :

    return value for Y coordinate of the current point

    y

    return value for Y coordinate of the current point

     
    +

    Since 1.0


    -

    cairo_new_path ()

    -
    void                cairo_new_path                      (cairo_t *cr);
    -

    -Clears the current path. After this call there will be no path and -no current point. -

    -
    ---+

    cairo_new_path ()

    +
    void
    +cairo_new_path (cairo_t *cr);
    +

    Clears the current path. After this call there will be no path and +no current point.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_new_sub_path ()

    -
    void                cairo_new_sub_path                  (cairo_t *cr);
    -

    -Begin a new sub-path. Note that the existing path is not -affected. After this call there will be no current point. -

    -

    -In many cases, this call is not needed since new sub-paths are -frequently started with cairo_move_to(). -

    -

    -A call to cairo_new_sub_path() is particularly useful when -beginning a new sub-path with one of the cairo_arc() calls. This +

    cairo_new_sub_path ()

    +
    void
    +cairo_new_sub_path (cairo_t *cr);
    +

    Begin a new sub-path. Note that the existing path is not +affected. After this call there will be no current point.

    +

    In many cases, this call is not needed since new sub-paths are +frequently started with cairo_move_to().

    +

    A call to cairo_new_sub_path() is particularly useful when +beginning a new sub-path with one of the cairo_arc() calls. This makes things easier as it is no longer necessary to manually compute the arc's initial coordinates for a call to -cairo_move_to(). -

    -
    ---+cairo_move_to().

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.2


    -

    cairo_close_path ()

    -
    void                cairo_close_path                    (cairo_t *cr);
    -

    -Adds a line segment to the path from the current point to the +

    cairo_close_path ()

    +
    void
    +cairo_close_path (cairo_t *cr);
    +

    Adds a line segment to the path from the current point to the beginning of the current sub-path, (the most recent point passed to -cairo_move_to()), and closes this sub-path. After this call the -current point will be at the joined endpoint of the sub-path. -

    -

    -The behavior of cairo_close_path() is distinct from simply calling -cairo_line_to() with the equivalent coordinate in the case of +cairo_move_to()), and closes this sub-path. After this call the +current point will be at the joined endpoint of the sub-path.

    +

    The behavior of cairo_close_path() is distinct from simply calling +cairo_line_to() with the equivalent coordinate in the case of stroking. When a closed sub-path is stroked, there are no caps on the ends of the sub-path. Instead, there is a line join connecting -the final and initial segments of the sub-path. -

    -

    -If there is no current point before the call to cairo_close_path(), -this function will have no effect. -

    -

    -Note: As of cairo version 1.2.4 any call to cairo_close_path() will +the final and initial segments of the sub-path.

    +

    If there is no current point before the call to cairo_close_path(), +this function will have no effect.

    +

    Note: As of cairo version 1.2.4 any call to cairo_close_path() will place an explicit MOVE_TO element into the path immediately after -the CLOSE_PATH element, (which can be seen in cairo_copy_path() for +the CLOSE_PATH element, (which can be seen in cairo_copy_path() for example). This can simplify path processing in some cases as it may not be necessary to save the "last move_to point" during processing as the MOVE_TO immediately after the CLOSE_PATH will provide that -point. -

    -
    ---+point.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_arc ()

    -
    void                cairo_arc                           (cairo_t *cr,
    -                                                         double xc,
    -                                                         double yc,
    -                                                         double radius,
    -                                                         double angle1,
    -                                                         double angle2);
    -

    -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. -

    -

    -If there is a current point, an initial line segment will be added +

    cairo_arc ()

    +
    void
    +cairo_arc (cairo_t *cr,
    +           double xc,
    +           double yc,
    +           double radius,
    +           double angle1,
    +           double angle2);
    +

    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 +.

    +

    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 arc. If this initial line is undesired, it can be avoided by -calling cairo_new_sub_path() before calling cairo_arc(). -

    -

    -Angles are measured in radians. An angle of 0.0 is in the direction +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. -

    -

    -(To convert from degrees to radians, use degrees * (M_PI / -180.).) -

    -

    -This function gives the arc in the direction of increasing angles; -see cairo_arc_negative() to get the arc in the direction of -decreasing angles. -

    -

    -The arc is circular in user space. To achieve an elliptical arc, +a clockwise direction.

    +

    (To convert from degrees to radians, use degrees * (M_PI / +180.).)

    +

    This function gives the arc in the direction of increasing angles; +see cairo_arc_negative() to get the arc in the direction of +decreasing angles.

    +

    The arc is circular in user space. To achieve an elliptical arc, you can scale the current transformation matrix by different amounts in the X and Y directions. For example, to draw an ellipse -in the box given by x, y, width, height: -

    -

    -

    +in the box given by x +, y +, width +, height +:

     cairo_save (cr);
     cairo_translate (cr, x + width / 2., y + height / 2.);
    @@ -689,239 +645,299 @@
     cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI);
     cairo_restore (cr);
     
    -

    -

    -
    ---+
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    xc :

    X position of the center of the arc

    xc

    X position of the center of the arc

     

    yc :

    Y position of the center of the arc

    yc

    Y position of the center of the arc

     

    radius :

    the radius of the arc

    radius

    the radius of the arc

     

    angle1 :

    the start angle, in radians

    angle1

    the start angle, in radians

     

    angle2 :

    the end angle, in radians

    angle2

    the end angle, in radians

     
    +

    Since 1.0


    -

    cairo_arc_negative ()

    -
    void                cairo_arc_negative                  (cairo_t *cr,
    -                                                         double xc,
    -                                                         double yc,
    -                                                         double radius,
    -                                                         double angle1,
    -                                                         double angle2);
    -

    -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. -

    -

    -See cairo_arc() for more details. This function differs only in the -direction of the arc between the two angles. -

    -
    ---+

    cairo_arc_negative ()

    +
    void
    +cairo_arc_negative (cairo_t *cr,
    +                    double xc,
    +                    double yc,
    +                    double radius,
    +                    double angle1,
    +                    double angle2);
    +

    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 +.

    +

    See cairo_arc() for more details. This function differs only in the +direction of the arc between the two angles.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    xc :

    X position of the center of the arc

    xc

    X position of the center of the arc

     

    yc :

    Y position of the center of the arc

    yc

    Y position of the center of the arc

     

    radius :

    the radius of the arc

    radius

    the radius of the arc

     

    angle1 :

    the start angle, in radians

    angle1

    the start angle, in radians

     

    angle2 :

    the end angle, in radians

    angle2

    the end angle, in radians

     
    +

    Since 1.0


    -

    cairo_curve_to ()

    -
    void                cairo_curve_to                      (cairo_t *cr,
    -                                                         double x1,
    -                                                         double y1,
    -                                                         double x2,
    -                                                         double y2,
    -                                                         double x3,
    -                                                         double y3);
    -

    -Adds a cubic Bézier spline to the path from the current point to -position (x3, y3) in user-space coordinates, using (x1, y1) and -(x2, y2) as the control points. After this call the current point -will be (x3, y3). -

    -

    -If there is no current point before the call to cairo_curve_to() +

    cairo_curve_to ()

    +
    void
    +cairo_curve_to (cairo_t *cr,
    +                double x1,
    +                double y1,
    +                double x2,
    +                double y2,
    +                double x3,
    +                double y3);
    +

    Adds a cubic Bézier spline to the path from the current point to +position (x3 +, y3 +) in user-space coordinates, using (x1 +, y1 +) and +(x2 +, y2 +) as the control points. After this call the current point +will be (x3 +, y3 +).

    +

    If there is no current point before the call to cairo_curve_to() this function will behave as if preceded by a call to -cairo_move_to(cr, x1, y1). -

    -
    ---+cairo_move_to(cr +, x1 +, y1 +).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x1 :

    the X coordinate of the first control point

    x1

    the X coordinate of the first control point

     

    y1 :

    the Y coordinate of the first control point

    y1

    the Y coordinate of the first control point

     

    x2 :

    the X coordinate of the second control point

    x2

    the X coordinate of the second control point

     

    y2 :

    the Y 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

    x3

    the X coordinate of the end of the curve

     

    y3 :

    the Y coordinate of the end of the curve

    y3

    the Y coordinate of the end of the curve

     
    +

    Since 1.0


    -

    cairo_line_to ()

    -
    void                cairo_line_to                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -

    -Adds a line to the path from the current point to position (x, y) +

    cairo_line_to ()

    +
    void
    +cairo_line_to (cairo_t *cr,
    +               double x,
    +               double y);
    +

    Adds a line to the path from the current point to position (x +, y +) in user-space coordinates. After this call the current point -will be (x, y). -

    -

    -If there is no current point before the call to cairo_line_to() -this function will behave as cairo_move_to(cr, x, y). -

    -
    ---+will be (x +, y +).

    +

    If there is no current point before the call to cairo_line_to() +this function will behave as cairo_move_to(cr +, x +, y +).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x :

    the X coordinate of the end of the new line

    x

    the X coordinate of the end of the new line

     

    y :

    the Y coordinate of the end of the new line

    y

    the Y coordinate of the end of the new line

     
    +

    Since 1.0


    -

    cairo_move_to ()

    -
    void                cairo_move_to                       (cairo_t *cr,
    -                                                         double x,
    -                                                         double y);
    -

    -Begin a new sub-path. After this call the current point will be (x, -y). -

    -
    ---+

    cairo_move_to ()

    +
    void
    +cairo_move_to (cairo_t *cr,
    +               double x,
    +               double y);
    +

    Begin a new sub-path. After this call the current point will be (x +, +y +).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x :

    the X coordinate of the new position

    x

    the X coordinate of the new position

     

    y :

    the Y coordinate of the new position

    y

    the Y coordinate of the new position

     
    +

    Since 1.0


    -

    cairo_rectangle ()

    -
    void                cairo_rectangle                     (cairo_t *cr,
    -                                                         double x,
    -                                                         double y,
    -                                                         double width,
    -                                                         double height);
    -

    -Adds a closed sub-path rectangle of the given size to the current -path at position (x, y) in user-space coordinates. -

    -

    -This function is logically equivalent to: -

    +

    cairo_rectangle ()

    +
    void
    +cairo_rectangle (cairo_t *cr,
    +                 double x,
    +                 double y,
    +                 double width,
    +                 double height);
    +

    Adds a closed sub-path rectangle of the given size to the current +path at position (x +, y +) in user-space coordinates.

    +

    This function is logically equivalent to:

     cairo_move_to (cr, x, y);
     cairo_rel_line_to (cr, width, 0);
    @@ -929,335 +945,559 @@
     cairo_rel_line_to (cr, -width, 0);
     cairo_close_path (cr);
     
    -

    -

    -
    ---+
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x :

    the X coordinate of the top left corner of the rectangle

    x

    the X coordinate of the top left corner of the rectangle

     

    y :

    the Y coordinate to the top left corner of the rectangle

    y

    the Y coordinate to the top left corner of the rectangle

     

    width :

    the width of the rectangle

    width

    the width of the rectangle

     

    height :

    the height of the rectangle

    height

    the height of the rectangle

     
    +

    Since 1.0


    -

    cairo_glyph_path ()

    -
    void                cairo_glyph_path                    (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs);
    -

    -Adds closed paths for the glyphs to the current path. The generated +

    cairo_glyph_path ()

    +
    void
    +cairo_glyph_path (cairo_t *cr,
    +                  const cairo_glyph_t *glyphs,
    +                  int num_glyphs);
    +

    Adds closed paths for the glyphs to the current path. The generated path if filled, achieves an effect similar to that of -cairo_show_glyphs(). -

    -
    ---+cairo_show_glyphs().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    glyphs :

    array of glyphs to show

    glyphs

    array of glyphs to show

     

    num_glyphs :

    number of glyphs to show

    num_glyphs

    number of glyphs to show

     
    +

    Since 1.0


    -

    cairo_text_path ()

    -
    void                cairo_text_path                     (cairo_t *cr,
    -                                                         const char *utf8);
    -

    -Adds closed paths for text to the current path. The generated +

    cairo_text_path ()

    +
    void
    +cairo_text_path (cairo_t *cr,
    +                 const char *utf8);
    +

    Adds closed paths for text to the current path. The generated path if filled, achieves an effect similar to that of -cairo_show_text(). -

    -

    -Text conversion and positioning is done similar to cairo_show_text(). -

    -

    -Like cairo_show_text(), After this call the current point is +cairo_show_text().

    +

    Text conversion and positioning is done similar to cairo_show_text().

    +

    Like cairo_show_text(), After this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. -This allows for chaining multiple calls to to cairo_text_path() -without having to set current point in between. -

    -

    -Note: The cairo_text_path() function call is part of what the cairo +This allows for chaining multiple calls to to cairo_text_path() +without having to set current point in between.

    +

    Note: The cairo_text_path() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for -serious text-using applications. See cairo_glyph_path() for the -"real" text path API in cairo. -

    -
    ---+serious text-using applications. See cairo_glyph_path() for the +"real" text path API in cairo.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    utf8 :

    a NUL-terminated string of text encoded in UTF-8, or NULL -

    utf8

    a NUL-terminated string of text encoded in UTF-8, or NULL

     
    +

    Since 1.0


    -

    cairo_rel_curve_to ()

    -
    void                cairo_rel_curve_to                  (cairo_t *cr,
    -                                                         double dx1,
    -                                                         double dy1,
    -                                                         double dx2,
    -                                                         double dy2,
    -                                                         double dx3,
    -                                                         double dy3);
    -

    -Relative-coordinate version of cairo_curve_to(). All offsets are +

    cairo_rel_curve_to ()

    +
    void
    +cairo_rel_curve_to (cairo_t *cr,
    +                    double dx1,
    +                    double dy1,
    +                    double dx2,
    +                    double dy2,
    +                    double dx3,
    +                    double dy3);
    +

    Relative-coordinate version of cairo_curve_to(). All offsets are relative to the current point. Adds a cubic Bézier spline to the path from the current point to a point offset from the current -point by (dx3, dy3), using points offset by (dx1, dy1) and -(dx2, dy2) as the control points. After this call the current -point will be offset by (dx3, dy3). -

    -

    -Given a current point of (x, y), cairo_rel_curve_to(cr, dx1, -dy1, dx2, dy2, dx3, dy3) is logically equivalent to -cairo_curve_to(cr, x+dx1, y+dy1, x+dx2, y+dy2, x+dx3, y+dy3). -

    -

    -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. -

    -
    ---+point by (dx3 +, dy3 +), using points offset by (dx1 +, dy1 +) and +(dx2 +, dy2 +) as the control points. After this call the current +point will be offset by (dx3 +, dy3 +).

    +

    Given a current point of (x, y), cairo_rel_curve_to(cr +, dx1 +, +dy1 +, dx2 +, dy2 +, dx3 +, dy3 +) is logically equivalent to +cairo_curve_to(cr +, x+dx1 +, y+dy1 +, x+dx2 +, y+dy2 +, x+dx3 +, y+dy3 +).

    +

    It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    dx1 :

    the X offset to the first control point

    dx1

    the X offset to the first control point

     

    dy1 :

    the Y offset to the first control point

    dy1

    the Y offset to the first control point

     

    dx2 :

    the X offset to the second control point

    dx2

    the X offset to the second control point

     

    dy2 :

    the Y offset to the second control point

    dy2

    the Y offset to the second control point

     

    dx3 :

    the X offset to the end of the curve

    dx3

    the X offset to the end of the curve

     

    dy3 :

    the Y offset to the end of the curve

    dy3

    the Y offset to the end of the curve

     
    +

    Since 1.0


    -

    cairo_rel_line_to ()

    -
    void                cairo_rel_line_to                   (cairo_t *cr,
    -                                                         double dx,
    -                                                         double dy);
    -

    -Relative-coordinate version of cairo_line_to(). Adds a line to the +

    cairo_rel_line_to ()

    +
    void
    +cairo_rel_line_to (cairo_t *cr,
    +                   double dx,
    +                   double dy);
    +

    Relative-coordinate version of cairo_line_to(). Adds a line to the path from the current point to a point that is offset from the -current point by (dx, dy) in user space. After this call the -current point will be offset by (dx, dy). -

    -

    -Given a current point of (x, y), cairo_rel_line_to(cr, dx, dy) -is logically equivalent to cairo_line_to(cr, x + dx, y + dy). -

    -

    -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. -

    -
    ---+current point by (dx +, dy +) in user space. After this call the +current point will be offset by (dx +, dy +).

    +

    Given a current point of (x, y), cairo_rel_line_to(cr +, dx +, dy +) +is logically equivalent to cairo_line_to(cr +, x + dx +, y + dy +).

    +

    It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    dx :

    the X offset to the end of the new line

    dx

    the X offset to the end of the new line

     

    dy :

    the Y offset to the end of the new line

    dy

    the Y offset to the end of the new line

     
    +

    Since 1.0


    -

    cairo_rel_move_to ()

    -
    void                cairo_rel_move_to                   (cairo_t *cr,
    -                                                         double dx,
    -                                                         double dy);
    -

    -Begin a new sub-path. After this call the current point will offset -by (x, y). -

    -

    -Given a current point of (x, y), cairo_rel_move_to(cr, dx, dy) -is logically equivalent to cairo_move_to(cr, x + dx, y + dy). -

    -

    -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. -

    -
    ---+

    cairo_rel_move_to ()

    +
    void
    +cairo_rel_move_to (cairo_t *cr,
    +                   double dx,
    +                   double dy);
    +

    Begin a new sub-path. After this call the current point will offset +by (x +, y +).

    +

    Given a current point of (x, y), cairo_rel_move_to(cr +, dx +, dy +) +is logically equivalent to cairo_move_to(cr +, x + dx +, y + dy +).

    +

    It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    dx :

    the X offset

    dx

    the X offset

     

    dy :

    the Y offset

    dy

    the Y offset

     
    +

    Since 1.0


    -

    cairo_path_extents ()

    -
    void                cairo_path_extents                  (cairo_t *cr,
    -                                                         double *x1,
    -                                                         double *y1,
    -                                                         double *x2,
    -                                                         double *y2);
    -

    -Computes a bounding box in user-space coordinates covering the +

    cairo_path_extents ()

    +
    void
    +cairo_path_extents (cairo_t *cr,
    +                    double *x1,
    +                    double *y1,
    +                    double *x2,
    +                    double *y2);
    +

    Computes a bounding box in user-space coordinates covering the points on the current path. If the current path is empty, returns an empty rectangle ((0,0), (0,0)). Stroke parameters, fill rule, -surface dimensions and clipping are not taken into account. -

    -

    -Contrast with cairo_fill_extents() and cairo_stroke_extents() which +surface dimensions and clipping are not taken into account.

    +

    Contrast with cairo_fill_extents() and cairo_stroke_extents() which return the extents of only the area that would be "inked" by -the corresponding drawing operations. -

    -

    -The result of cairo_path_extents() is defined as equivalent to the -limit of cairo_stroke_extents() with CAIRO_LINE_CAP_ROUND as the +the corresponding drawing operations.

    +

    The result of cairo_path_extents() is defined as equivalent to the +limit of cairo_stroke_extents() with CAIRO_LINE_CAP_ROUND as the line width approaches 0.0, (but never reaching the empty-rectangle -returned by cairo_stroke_extents() for a line width of 0.0). -

    -

    -Specifically, this means that zero-area sub-paths such as -cairo_move_to();cairo_line_to() segments, (even degenerate cases +returned by cairo_stroke_extents() for a line width of 0.0).

    +

    Specifically, this means that zero-area sub-paths such as +cairo_move_to();cairo_line_to() segments, (even degenerate cases where the coordinates to both calls are identical), will be considered as contributing to the extents. However, a lone -cairo_move_to() will not contribute to the results of -cairo_path_extents(). -

    -
    ---+cairo_move_to() will not contribute to the results of +cairo_path_extents().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x1 :

    left of the resulting extents

    x1

    left of the resulting extents

     

    y1 :

    top of the resulting extents

    y1

    top of the resulting extents

     

    x2 :

    right of the resulting extents

    x2

    right of the resulting extents

     

    y2 :

    bottom of the resulting extents

    y2

    bottom of the resulting extents

     
    +

    Since 1.6

    +
    +

    Types and Values

    +
    +

    cairo_path_t

    +
    typedef struct {
    +    cairo_status_t status;
    +    cairo_path_data_t *data;
    +    int num_data;
    +} cairo_path_t;
    +
    +

    A data structure for holding a path. This data structure serves as +the return value for cairo_copy_path() and +cairo_copy_path_flat() as well the input value for +cairo_append_path().

    +

    See cairo_path_data_t for hints on how to iterate over the +actual data within the path.

    +

    The num_data member gives the number of elements in the data +array. This number is larger than the number of independent path +portions (defined in cairo_path_data_type_t), since the data +includes both headers and coordinates for each portion.

    +
    +

    Members

    +
    +++++ + + + + + + + + + + + + + + + + + +

    cairo_status_t status;

    the current error status

     

    cairo_path_data_t *data;

    the elements in the path

     

    int num_data;

    the number of elements in the data array

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    union cairo_path_data_t

    +

    cairo_path_data_t is used to represent the path data inside a +cairo_path_t.

    +

    The data structure is designed to try to balance the demands of +efficiency and ease-of-use. A path is represented as an array of +cairo_path_data_t, which is a union of headers and points.

    +

    Each portion of the path is represented by one or more elements in +the array, (one header followed by 0 or more points). The length +value of the header is the number of array elements for the current +portion including the header, (ie. length == 1 + # of points), and +where the number of points for each element type is as follows:

    +
    +    %CAIRO_PATH_MOVE_TO:     1 point
    +    %CAIRO_PATH_LINE_TO:     1 point
    +    %CAIRO_PATH_CURVE_TO:    3 points
    +    %CAIRO_PATH_CLOSE_PATH:  0 points
    +
    +

    The semantics and ordering of the coordinate values are consistent +with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and +cairo_close_path().

    +

    Here is sample code for iterating through a cairo_path_t:

    +
    +     int i;
    +     cairo_path_t *path;
    +     cairo_path_data_t *data;
    + 
    +     path = cairo_copy_path (cr);
    + 
    +     for (i=0; i < path->num_data; i += path->data[i].header.length) {
    +         data = &path->data[i];
    +         switch (data->header.type) {
    +         case CAIRO_PATH_MOVE_TO:
    +             do_move_to_things (data[1].point.x, data[1].point.y);
    +             break;
    +         case CAIRO_PATH_LINE_TO:
    +             do_line_to_things (data[1].point.x, data[1].point.y);
    +             break;
    +         case CAIRO_PATH_CURVE_TO:
    +             do_curve_to_things (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:
    +             do_close_path_things ();
    +             break;
    +         }
    +     }
    +     cairo_path_destroy (path);
    +
    +

    As of cairo 1.4, cairo does not mind if there are more elements in +a portion of the path than needed. Such elements can be used by +users of the cairo API to hold extra values in the path data +structure. For this reason, it is recommended that applications +always use data->header.length to +iterate over the path data, instead of hardcoding the number of +elements for each element type.

    +

    Since 1.0

    +
    +
    +
    +

    enum cairo_path_data_type_t

    +

    cairo_path_data_t is used to describe the type of one portion +of a path when represented as a cairo_path_t. +See cairo_path_data_t for details.

    +
    +

    Members

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    CAIRO_PATH_MOVE_TO

    +

    A move-to operation, since 1.0

    +
     

    CAIRO_PATH_LINE_TO

    +

    A line-to operation, since 1.0

    +
     

    CAIRO_PATH_CURVE_TO

    +

    A curve-to operation, since 1.0

    +
     

    CAIRO_PATH_CLOSE_PATH

    +

    A close-path operation, since 1.0

    +
     
    +
    +

    Since 1.0

    +
    +
    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-PDF-Surfaces.html cairo-1.14.2/doc/public/html/cairo-PDF-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-PDF-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-PDF-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -PDF Surfaces +Cairo: A Vector Graphics Library: PDF Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,331 +30,421 @@

    PDF Surfaces

    PDF Surfaces — Rendering PDF documents

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_PDF_SURFACE
    -cairo_surface_t *   cairo_pdf_surface_create            (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -cairo_surface_t *   cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -void                cairo_pdf_surface_restrict_to_version
    -                                                        (cairo_surface_t *surface,
    -                                                         cairo_pdf_version_t version);
    -enum                cairo_pdf_version_t;
    -void                cairo_pdf_get_versions              (cairo_pdf_version_t const **versions,
    -                                                         int *num_versions);
    -const char *        cairo_pdf_version_to_string         (cairo_pdf_version_t version);
    -void                cairo_pdf_surface_set_size          (cairo_surface_t *surface,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_surface_t * + +cairo_pdf_surface_create () +
    +cairo_surface_t * + +cairo_pdf_surface_create_for_stream () +
    +void + +cairo_pdf_surface_restrict_to_version () +
    +void + +cairo_pdf_get_versions () +
    const char * + +cairo_pdf_version_to_string () +
    +void + +cairo_pdf_surface_set_size () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    #defineCAIRO_HAS_PDF_SURFACE
    enumcairo_pdf_version_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The PDF surface is used to render cairo graphics to Adobe -PDF files and is a multi-page vector surface backend. -

    -

    -The following mime types are supported: CAIRO_MIME_TYPE_JPEG, +

    The PDF surface is used to render cairo graphics to Adobe +PDF files and is a multi-page vector surface backend.

    +

    The following mime types are supported: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_UNIQUE_ID, -CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2_GLOBAL, -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. -

    -

    -JBIG2 data in PDF must be in the embedded format as descibed in +CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2_GLOBAL, +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID.

    +

    JBIG2 data in PDF must be in the embedded format as descibed in ISO/IEC 11544. Image specific JBIG2 data must be in -CAIRO_MIME_TYPE_JBIG2. Any global segments in the JBIG2 data +CAIRO_MIME_TYPE_JBIG2. Any global segments in the JBIG2 data (segments with page association field set to 0) must be in -CAIRO_MIME_TYPE_JBIG2_GLOBAL. The global data may be shared by +CAIRO_MIME_TYPE_JBIG2_GLOBAL. The global data may be shared by multiple images. All images sharing the same global data must set -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID to a unique identifer. At least +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID to a unique identifer. At least one of the images must provide the global data using -CAIRO_MIME_TYPE_JBIG2_GLOBAL. The global data will only be +CAIRO_MIME_TYPE_JBIG2_GLOBAL. The global data will only be embedded once but shared by all JBIG2 images with the same -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. -

    +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID.

    -

    Details

    +

    Functions

    -

    CAIRO_HAS_PDF_SURFACE

    -
    #define CAIRO_HAS_PDF_SURFACE 1
    -
    -

    -Defined if the PDF surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.2

    -
    -
    -
    -

    cairo_pdf_surface_create ()

    -
    cairo_surface_t *   cairo_pdf_surface_create            (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a PDF surface of the specified size in points to be written -to filename. -

    -
    +

    cairo_pdf_surface_create ()

    +
    cairo_surface_t *
    +cairo_pdf_surface_create (const char *filename,
    +                          double width_in_points,
    +                          double height_in_points);
    +

    Creates a PDF surface of the specified size in points to be written +to filename +.

    +
    +

    Parameters

    +
    --+++ - - + +temporary file.

    + - - + + + - - - - - - + + +

    filename :

    a filename for the PDF output (must be writable), NULL may be +

    filename

    a filename for the PDF output (must be writable), NULL may be used to specify no output. This will generate a PDF surface that may be queried and used as a source, without generating a -temporary file.

     

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch)

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch)

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.2


    -

    cairo_pdf_surface_create_for_stream ()

    -
    cairo_surface_t *   cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a PDF surface of the specified size in points to be written -incrementally to the stream represented by write_func and closure. -

    -
    +

    cairo_pdf_surface_create_for_stream ()

    +
    cairo_surface_t *
    +cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
    +                                     void *closure,
    +                                     double width_in_points,
    +                                     double height_in_points);
    +

    Creates a PDF surface of the specified size in points to be written +incrementally to the stream represented by write_func + and closure +.

    +
    +

    Parameters

    +
    --+++ - - + +generating any temporary files.

    + - - + + + - - + + + - - - - - - + + +

    write_func :

    a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, +

    write_func

    a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, the surface may be queried or used as a source without -generating any temporary files.

     

    closure :

    the closure argument for write_func -

    closure

    the closure argument for write_func +

     

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch)

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch)

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.2


    -

    cairo_pdf_surface_restrict_to_version ()

    -
    void                cairo_pdf_surface_restrict_to_version
    -                                                        (cairo_surface_t *surface,
    -                                                         cairo_pdf_version_t version);
    -

    -Restricts the generated PDF file to version. See cairo_pdf_get_versions() -for a list of available version values that can be used here. -

    -

    -This function should only be called before any drawing operations +

    cairo_pdf_surface_restrict_to_version ()

    +
    void
    +cairo_pdf_surface_restrict_to_version (cairo_surface_t *surface,
    +                                       cairo_pdf_version_t version);
    +

    Restricts the generated PDF file to version +. See cairo_pdf_get_versions() +for a list of available version values that can be used here.

    +

    This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the -surface. -

    -
    +surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    surface :

    a PDF cairo_surface_t -

    surface

    a PDF cairo_surface_t

     

    version :

    PDF version

    version

    PDF version

     
    +

    Since 1.10


    -

    enum cairo_pdf_version_t

    -
    typedef enum {
    -    CAIRO_PDF_VERSION_1_4,
    -    CAIRO_PDF_VERSION_1_5
    -} cairo_pdf_version_t;
    -
    -

    -cairo_pdf_version_t is used to describe the version number of the PDF -specification that a generated PDF file will conform to. -

    -
    +

    cairo_pdf_get_versions ()

    +
    void
    +cairo_pdf_get_versions (cairo_pdf_version_t const **versions,
    +                        int *num_versions);
    +

    Used to retrieve the list of supported versions. See +cairo_pdf_surface_restrict_to_version().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    CAIRO_PDF_VERSION_1_4

    The version 1.4 of the PDF specification. (Since 1.10) -

    versions

    supported version list

     

    CAIRO_PDF_VERSION_1_5

    The version 1.5 of the PDF specification. (Since 1.10) -

    num_versions

    list length

     
    +

    Since 1.10


    -

    cairo_pdf_get_versions ()

    -
    void                cairo_pdf_get_versions              (cairo_pdf_version_t const **versions,
    -                                                         int *num_versions);
    -

    -Used to retrieve the list of supported versions. See -cairo_pdf_surface_restrict_to_version(). -

    -
    +

    cairo_pdf_version_to_string ()

    +
    const char *
    +cairo_pdf_version_to_string (cairo_pdf_version_t version);
    +

    Get the string representation of the given version + id. This function +will return NULL if version + isn't valid. See cairo_pdf_get_versions() +for a way to get the list of valid version ids.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    versions :

    supported version list

    num_versions :

    list length

    version

    a version id

     
    +
    +
    +

    Returns

    +

    the string associated to given version.

    +

    +

    Since 1.10


    -

    cairo_pdf_version_to_string ()

    -
    const char *        cairo_pdf_version_to_string         (cairo_pdf_version_t version);
    -

    -Get the string representation of the given version id. This function -will return NULL if version isn't valid. See cairo_pdf_get_versions() -for a way to get the list of valid version ids. -

    -
    +

    cairo_pdf_surface_set_size ()

    +
    void
    +cairo_pdf_surface_set_size (cairo_surface_t *surface,
    +                            double width_in_points,
    +                            double height_in_points);
    +

    Changes the size of a PDF surface for the current (and +subsequent) pages.

    +

    This function should only be called before any drawing operations +have been performed on the current page. The simplest way to do +this is to call this function immediately after creating the +surface or immediately after completing a page with either +cairo_show_page() or cairo_copy_page().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + + + + + +

    version :

    a version id

    surface

    a PDF cairo_surface_t

     

    Returns :

    the string associated to given version.

    width_in_points

    new surface width, in points (1 point == 1/72.0 inch)

     

    height_in_points

    new surface height, in points (1 point == 1/72.0 inch)

     
    -

    Since 1.10

    +
    +

    Since 1.2

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_PDF_SURFACE

    +
    #define CAIRO_HAS_PDF_SURFACE 1
    +
    +

    Defined if the PDF surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.2


    -

    cairo_pdf_surface_set_size ()

    -
    void                cairo_pdf_surface_set_size          (cairo_surface_t *surface,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Changes the size of a PDF surface for the current (and -subsequent) pages. -

    -

    -This function should only be called before any drawing operations -have been performed on the current page. The simplest way to do -this is to call this function immediately after creating the -surface or immediately after completing a page with either -cairo_show_page() or cairo_copy_page(). -

    -
    +

    enum cairo_pdf_version_t

    +

    cairo_pdf_version_t is used to describe the version number of the PDF +specification that a generated PDF file will conform to.

    +
    +

    Members

    +
    --+++ - - + + - - - - - - + + +

    surface :

    a PDF cairo_surface_t +

    CAIRO_PDF_VERSION_1_4

    +

    The version 1.4 of the PDF specification. (Since 1.10)

     

    width_in_points :

    new surface width, in points (1 point == 1/72.0 inch)

    height_in_points :

    new surface height, in points (1 point == 1/72.0 inch)

    CAIRO_PDF_VERSION_1_5

    +

    The version 1.5 of the PDF specification. (Since 1.10)

    +
     
    -

    Since 1.2

    +
    +

    Since 1.10

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-PNG-Support.html cairo-1.14.2/doc/public/html/cairo-PNG-Support.html --- cairo-1.13.0~20140204/doc/public/html/cairo-PNG-Support.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-PNG-Support.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -PNG Support +Cairo: A Vector Graphics Library: PNG Support - + - - - - - - - - - - + + + + + + +
    @@ -33,301 +30,391 @@

    PNG Support

    PNG Support — Reading and writing PNG images

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_PNG_FUNCTIONS
    -cairo_surface_t *   cairo_image_surface_create_from_png (const char *filename);
    -cairo_status_t      (*cairo_read_func_t)                (void *closure,
    -                                                         unsigned char *data,
    -                                                         unsigned int length);
    -cairo_surface_t *   cairo_image_surface_create_from_png_stream
    -                                                        (cairo_read_func_t read_func,
    -                                                         void *closure);
    -cairo_status_t      cairo_surface_write_to_png          (cairo_surface_t *surface,
    -                                                         const char *filename);
    -cairo_status_t      (*cairo_write_func_t)               (void *closure,
    -                                                         const unsigned char *data,
    -                                                         unsigned int length);
    -cairo_status_t      cairo_surface_write_to_png_stream   (cairo_surface_t *surface,
    -                                                         cairo_write_func_t write_func,
    -                                                         void *closure);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_PNG_FUNCTIONS
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -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 +

    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 +cairo_image_surface_get_data() or a backend-specific access function, and process it with another library, e.g. gdk-pixbuf or -libpng. -

    +libpng.

    -

    Details

    -
    -

    CAIRO_HAS_PNG_FUNCTIONS

    -
    #define CAIRO_HAS_PNG_FUNCTIONS 1
    -
    -

    -Defined if the PNG functions are available. -This macro can be used to conditionally compile code using the cairo -PNG functions. -

    -

    Since 1.0

    -
    -
    +

    Functions

    -

    cairo_image_surface_create_from_png ()

    -
    cairo_surface_t *   cairo_image_surface_create_from_png (const char *filename);
    -

    -Creates a new image surface and initializes the contents to the -given PNG file. -

    -
    +

    cairo_image_surface_create_from_png ()

    +
    cairo_surface_t *
    +cairo_image_surface_create_from_png (const char *filename);
    +

    Creates a new image surface and initializes the contents to the +given PNG file.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - + + + + +

    filename :

    name of PNG file to load

    Returns :

    a new cairo_surface_t initialized with the contents +

    filename

    name of PNG file to load

     
    +
    +
    +

    Returns

    +

    a new cairo_surface_t initialized with the contents of the PNG file, or a "nil" surface if any error occurred. A nil surface can be checked for with cairo_surface_status(surface) which -may return one of the following values: -CAIRO_STATUS_NO_MEMORY +may return one of the following values:

    +

    CAIRO_STATUS_NO_MEMORY CAIRO_STATUS_FILE_NOT_FOUND -CAIRO_STATUS_READ_ERROR -Alternatively, you can allow errors to propagate through the drawing +CAIRO_STATUS_READ_ERROR

    +

    Alternatively, you can allow errors to propagate through the drawing operations and check the status on the context upon completion -using cairo_status(). - - -

    +using cairo_status().

    +

    +

    Since 1.0


    -

    cairo_read_func_t ()

    -
    cairo_status_t      (*cairo_read_func_t)                (void *closure,
    -                                                         unsigned char *data,
    -                                                         unsigned int length);
    -

    -cairo_read_func_t is the type of function which is called when a +

    cairo_read_func_t ()

    +
    cairo_status_t
    +(*cairo_read_func_t) (void *closure,
    +                      unsigned char *data,
    +                      unsigned int length);
    +

    cairo_read_func_t is the type of function which is called when a backend needs to read data from an input stream. It is passed the closure which was specified by the user at the time the read function was registered, the buffer to read the data into and the length of the data in bytes. The read function should return CAIRO_STATUS_SUCCESS if all the data was successfully read, -CAIRO_STATUS_READ_ERROR otherwise. -

    -
    +CAIRO_STATUS_READ_ERROR otherwise.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    closure :

    the input closure

    closure

    the input closure

     

    data :

    the buffer into which to read the data

    data

    the buffer into which to read the data

     

    length :

    the amount of data to read

    Returns :

    the status code of the read operation

    length

    the amount of data to read

     
    +
    +
    +

    Returns

    +

    the status code of the read operation

    +

    +

    Since 1.0


    -

    cairo_image_surface_create_from_png_stream ()

    -
    cairo_surface_t *   cairo_image_surface_create_from_png_stream
    -                                                        (cairo_read_func_t read_func,
    -                                                         void *closure);
    -

    -Creates a new image surface from PNG data read incrementally -via the read_func function. -

    -
    +

    cairo_image_surface_create_from_png_stream ()

    +
    cairo_surface_t *
    +cairo_image_surface_create_from_png_stream
    +                               (cairo_read_func_t read_func,
    +                                void *closure);
    +

    Creates a new image surface from PNG data read incrementally +via the read_func + function.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - +

    read_func :

    function called to read the data of the file

    read_func

    function called to read the data of the file

     

    closure :

    data to pass to read_func.

    closure

    data to pass to read_func +.

     

    Returns :

    a new cairo_surface_t initialized with the contents +
    +
    +
    +

    Returns

    +

    a new cairo_surface_t initialized with the contents of the PNG file or a "nil" surface if the data read is not a valid PNG image or memory could not be allocated for the operation. A nil surface can be checked for with cairo_surface_status(surface) which -may return one of the following values: -CAIRO_STATUS_NO_MEMORY -CAIRO_STATUS_READ_ERROR -Alternatively, you can allow errors to propagate through the drawing +may return one of the following values:

    +

    CAIRO_STATUS_NO_MEMORY +CAIRO_STATUS_READ_ERROR

    +

    Alternatively, you can allow errors to propagate through the drawing operations and check the status on the context upon completion -using cairo_status(). - - -

    +using cairo_status().

    +

    +

    Since 1.0


    -

    cairo_surface_write_to_png ()

    -
    cairo_status_t      cairo_surface_write_to_png          (cairo_surface_t *surface,
    -                                                         const char *filename);
    -

    -Writes the contents of surface to a new file filename as a PNG -image. -

    -
    +

    cairo_surface_write_to_png ()

    +
    cairo_status_t
    +cairo_surface_write_to_png (cairo_surface_t *surface,
    +                            const char *filename);
    +

    Writes the contents of surface + to a new file filename + as a PNG +image.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - +

    surface :

    a cairo_surface_t with pixel contents

    surface

    a cairo_surface_t with pixel contents

     

    filename :

    the name of a file to write to

    filename

    the name of a file to write to

     

    Returns :

    -CAIRO_STATUS_SUCCESS if the PNG file was written +
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS if the PNG file was written successfully. Otherwise, CAIRO_STATUS_NO_MEMORY if memory could not be allocated for the operation or CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have pixel contents, or CAIRO_STATUS_WRITE_ERROR if an I/O error occurs -while attempting to write the file. - - -

    +while attempting to write the file.

    +

    +

    Since 1.0


    -

    cairo_write_func_t ()

    -
    cairo_status_t      (*cairo_write_func_t)               (void *closure,
    -                                                         const unsigned char *data,
    -                                                         unsigned int length);
    -

    -cairo_write_func_t is the type of function which is called when a +

    cairo_write_func_t ()

    +
    cairo_status_t
    +(*cairo_write_func_t) (void *closure,
    +                       const unsigned char *data,
    +                       unsigned int length);
    +

    cairo_write_func_t is the type of function which is called when a backend needs to write data to an output stream. It is passed the closure which was specified by the user at the time the write function was registered, the data to write and the length of the data in bytes. The write function should return CAIRO_STATUS_SUCCESS if all the data was successfully written, -CAIRO_STATUS_WRITE_ERROR otherwise. -

    -
    +CAIRO_STATUS_WRITE_ERROR otherwise.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    closure :

    the output closure

    data :

    the buffer containing the data to write

    closure

    the output closure

     

    length :

    the amount of data to write

    data

    the buffer containing the data to write

     

    Returns :

    the status code of the write operation

    length

    the amount of data to write

     
    +
    +
    +

    Returns

    +

    the status code of the write operation

    +

    +

    Since 1.0


    -

    cairo_surface_write_to_png_stream ()

    -
    cairo_status_t      cairo_surface_write_to_png_stream   (cairo_surface_t *surface,
    -                                                         cairo_write_func_t write_func,
    -                                                         void *closure);
    -

    -Writes the image surface to the write function. -

    -
    +

    cairo_surface_write_to_png_stream ()

    +
    cairo_status_t
    +cairo_surface_write_to_png_stream (cairo_surface_t *surface,
    +                                   cairo_write_func_t write_func,
    +                                   void *closure);
    +

    Writes the image surface to the write function.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - +

    surface :

    a cairo_surface_t with pixel contents

    surface

    a cairo_surface_t with pixel contents

     

    write_func :

    a cairo_write_func_t -

    write_func

    a cairo_write_func_t

     

    closure :

    closure data for the write function

    closure

    closure data for the write function

     

    Returns :

    -CAIRO_STATUS_SUCCESS if the PNG file was written +
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS if the PNG file was written successfully. Otherwise, CAIRO_STATUS_NO_MEMORY is returned if memory could not be allocated for the operation, CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have -pixel contents. - - -

    +pixel contents.

    +

    + +

    Since 1.0

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_PNG_FUNCTIONS

    +
    #define CAIRO_HAS_PNG_FUNCTIONS 1
    +
    +

    Defined if the PNG functions are available. +This macro can be used to conditionally compile code using the cairo +PNG functions.

    Since 1.0

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-PostScript-Surfaces.html cairo-1.14.2/doc/public/html/cairo-PostScript-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-PostScript-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-PostScript-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -PostScript Surfaces +Cairo: A Vector Graphics Library: PostScript Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,532 +30,581 @@

    PostScript Surfaces

    PostScript Surfaces — Rendering PostScript documents

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_PS_SURFACE
    -cairo_surface_t *   cairo_ps_surface_create             (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -cairo_surface_t *   cairo_ps_surface_create_for_stream  (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -void                cairo_ps_surface_restrict_to_level  (cairo_surface_t *surface,
    -                                                         cairo_ps_level_t level);
    -enum                cairo_ps_level_t;
    -void                cairo_ps_get_levels                 (cairo_ps_level_t const **levels,
    -                                                         int *num_levels);
    -const char *        cairo_ps_level_to_string            (cairo_ps_level_t level);
    -void                cairo_ps_surface_set_eps            (cairo_surface_t *surface,
    -                                                         cairo_bool_t eps);
    -cairo_bool_t        cairo_ps_surface_get_eps            (cairo_surface_t *surface);
    -void                cairo_ps_surface_set_size           (cairo_surface_t *surface,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -void                cairo_ps_surface_dsc_begin_setup    (cairo_surface_t *surface);
    -void                cairo_ps_surface_dsc_begin_page_setup
    -                                                        (cairo_surface_t *surface);
    -void                cairo_ps_surface_dsc_comment        (cairo_surface_t *surface,
    -                                                         const char *comment);
    -
    -
    -
    -

    Description

    -

    -The PostScript surface is used to render cairo graphics to Adobe -PostScript files and is a multi-page vector surface backend. -

    -
    -

    Details

    -
    -

    CAIRO_HAS_PS_SURFACE

    -
    #define CAIRO_HAS_PS_SURFACE 1
    -
    -

    -Defined if the PostScript surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.2

    -
    -
    -
    -

    cairo_ps_surface_create ()

    -
    cairo_surface_t *   cairo_ps_surface_create             (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a PostScript surface of the specified size in points to be -written to filename. See cairo_ps_surface_create_for_stream() for -a more flexible mechanism for handling the PostScript output than -simply writing it to a named file. -

    -

    -Note that the size of individual pages of the PostScript output can -vary. See cairo_ps_surface_set_size(). -

    -
    +

    Functions

    +
    --++ - - + + + + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +

    filename :

    a filename for the PS output (must be writable), NULL may be -used to specify no output. This will generate a PS surface that -may be queried and used as a source, without generating a -temporary file. +cairo_surface_t * + +cairo_ps_surface_create () +
    +cairo_surface_t * + +cairo_ps_surface_create_for_stream () +

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch) +void + +cairo_ps_surface_restrict_to_level () +

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch) +void + +cairo_ps_get_levels () +

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.const char * + +cairo_ps_level_to_string () +
    +void + +cairo_ps_surface_set_eps () +
    +cairo_bool_t + +cairo_ps_surface_get_eps () +
    +void + +cairo_ps_surface_set_size () +
    +void + +cairo_ps_surface_dsc_begin_setup () +
    +void + +cairo_ps_surface_dsc_begin_page_setup () +
    +void + +cairo_ps_surface_dsc_comment () +
    -

    Since 1.2

    -
    -
    -

    cairo_ps_surface_create_for_stream ()

    -
    cairo_surface_t *   cairo_ps_surface_create_for_stream  (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a PostScript surface of the specified size in points to be -written incrementally to the stream represented by write_func and -closure. See cairo_ps_surface_create() for a more convenient way -to simply direct the PostScript output to a named file. -

    -

    -Note that the size of individual pages of the PostScript -output can vary. See cairo_ps_surface_set_size(). -

    -
    +
    +

    Types and Values

    +
    --++ - - + + - - + + + +

    write_func :

    a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, -the surface may be queried or used as a source without -generating any temporary files.#defineCAIRO_HAS_PS_SURFACE

    closure :

    the closure argument for write_func -enumcairo_ps_level_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    The PostScript surface is used to render cairo graphics to Adobe +PostScript files and is a multi-page vector surface backend.

    +
    +
    +

    Functions

    +
    +

    cairo_ps_surface_create ()

    +
    cairo_surface_t *
    +cairo_ps_surface_create (const char *filename,
    +                         double width_in_points,
    +                         double height_in_points);
    +

    Creates a PostScript surface of the specified size in points to be +written to filename +. See cairo_ps_surface_create_for_stream() for +a more flexible mechanism for handling the PostScript output than +simply writing it to a named file.

    +

    Note that the size of individual pages of the PostScript output can +vary. See cairo_ps_surface_set_size().

    +
    +

    Parameters

    +
    +++++ + - - + + + - - + + + - - + + +

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch)

    filename

    a filename for the PS output (must be writable), NULL may be +used to specify no output. This will generate a PS surface that +may be queried and used as a source, without generating a +temporary file.

     

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch)

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.2


    -

    cairo_ps_surface_restrict_to_level ()

    -
    void                cairo_ps_surface_restrict_to_level  (cairo_surface_t *surface,
    -                                                         cairo_ps_level_t level);
    -

    -Restricts the generated PostSript file to level. See -cairo_ps_get_levels() for a list of available level values that -can be used here. -

    -

    -This function should only be called before any drawing operations -have been performed on the given surface. The simplest way to do -this is to call this function immediately after creating the -surface. -

    -
    ---+

    cairo_ps_surface_create_for_stream ()

    +
    cairo_surface_t *
    +cairo_ps_surface_create_for_stream (cairo_write_func_t write_func,
    +                                    void *closure,
    +                                    double width_in_points,
    +                                    double height_in_points);
    +

    Creates a PostScript surface of the specified size in points to be +written incrementally to the stream represented by write_func + and +closure +. See cairo_ps_surface_create() for a more convenient way +to simply direct the PostScript output to a named file.

    +

    Note that the size of individual pages of the PostScript +output can vary. See cairo_ps_surface_set_size().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + + + + + + + + + + +

    surface :

    a PostScript cairo_surface_t -

    write_func

    a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, +the surface may be queried or used as a source without +generating any temporary files.

     

    level :

    PostScript level

    closure

    the closure argument for write_func +

     

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    -

    Since 1.6

    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +
    +

    Since 1.2


    -

    enum cairo_ps_level_t

    -
    typedef enum {
    -    CAIRO_PS_LEVEL_2,
    -    CAIRO_PS_LEVEL_3
    -} cairo_ps_level_t;
    -
    -

    -cairo_ps_level_t is used to describe the language level of the -PostScript Language Reference that a generated PostScript file will -conform to. -

    -
    ---+

    cairo_ps_surface_restrict_to_level ()

    +
    void
    +cairo_ps_surface_restrict_to_level (cairo_surface_t *surface,
    +                                    cairo_ps_level_t level);
    +

    Restricts the generated PostSript file to level +. See +cairo_ps_get_levels() for a list of available level values that +can be used here.

    +

    This function should only be called before any drawing operations +have been performed on the given surface. The simplest way to do +this is to call this function immediately after creating the +surface.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    CAIRO_PS_LEVEL_2

    The language level 2 of the PostScript specification. (Since 1.6) -

    surface

    a PostScript cairo_surface_t

     

    CAIRO_PS_LEVEL_3

    The language level 3 of the PostScript specification. (Since 1.6) -

    level

    PostScript level

     
    +

    Since 1.6


    -

    cairo_ps_get_levels ()

    -
    void                cairo_ps_get_levels                 (cairo_ps_level_t const **levels,
    -                                                         int *num_levels);
    -

    -Used to retrieve the list of supported levels. See -cairo_ps_surface_restrict_to_level(). -

    -
    ---+

    cairo_ps_get_levels ()

    +
    void
    +cairo_ps_get_levels (cairo_ps_level_t const **levels,
    +                     int *num_levels);
    +

    Used to retrieve the list of supported levels. See +cairo_ps_surface_restrict_to_level().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    levels :

    supported level list

    levels

    supported level list

     

    num_levels :

    list length

    num_levels

    list length

     
    +

    Since 1.6


    -

    cairo_ps_level_to_string ()

    -
    const char *        cairo_ps_level_to_string            (cairo_ps_level_t level);
    -

    -Get the string representation of the given level id. This function -will return NULL if level id isn't valid. See cairo_ps_get_levels() -for a way to get the list of valid level ids. -

    -
    ---+

    cairo_ps_level_to_string ()

    +
    const char *
    +cairo_ps_level_to_string (cairo_ps_level_t level);
    +

    Get the string representation of the given level + id. This function +will return NULL if level + id isn't valid. See cairo_ps_get_levels() +for a way to get the list of valid level ids.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    level :

    a level id

    Returns :

    the string associated to given level.

    level

    a level id

     
    +
    +
    +

    Returns

    +

    the string associated to given level.

    +

    +

    Since 1.6


    -

    cairo_ps_surface_set_eps ()

    -
    void                cairo_ps_surface_set_eps            (cairo_surface_t *surface,
    -                                                         cairo_bool_t eps);
    -

    -If eps is TRUE, the PostScript surface will output Encapsulated -PostScript. -

    -

    -This function should only be called before any drawing operations +

    cairo_ps_surface_set_eps ()

    +
    void
    +cairo_ps_surface_set_eps (cairo_surface_t *surface,
    +                          cairo_bool_t eps);
    +

    If eps + is TRUE, the PostScript surface will output Encapsulated +PostScript.

    +

    This function should only be called before any drawing operations have been performed on the current page. The simplest way to do this is to call this function immediately after creating the surface. An Encapsulated PostScript file should never contain more -than one page. -

    -
    ---+than one page.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    surface :

    a PostScript cairo_surface_t -

    surface

    a PostScript cairo_surface_t

     

    eps :

    -TRUE to output EPS format PostScript

    eps

    TRUE to output EPS format PostScript

     
    +

    Since 1.6


    -

    cairo_ps_surface_get_eps ()

    -
    cairo_bool_t        cairo_ps_surface_get_eps            (cairo_surface_t *surface);
    -

    -Check whether the PostScript surface will output Encapsulated PostScript. -

    -
    ---+

    cairo_ps_surface_get_eps ()

    +
    cairo_bool_t
    +cairo_ps_surface_get_eps (cairo_surface_t *surface);
    +

    Check whether the PostScript surface will output Encapsulated PostScript.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    surface :

    a PostScript cairo_surface_t -

    Returns :

    -TRUE if the surface will output Encapsulated PostScript.

    surface

    a PostScript cairo_surface_t

     
    +
    +
    +

    Returns

    +

    TRUE if the surface will output Encapsulated PostScript.

    +

    +

    Since 1.6


    -

    cairo_ps_surface_set_size ()

    -
    void                cairo_ps_surface_set_size           (cairo_surface_t *surface,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Changes the size of a PostScript surface for the current (and -subsequent) pages. -

    -

    -This function should only be called before any drawing operations +

    cairo_ps_surface_set_size ()

    +
    void
    +cairo_ps_surface_set_size (cairo_surface_t *surface,
    +                           double width_in_points,
    +                           double height_in_points);
    +

    Changes the size of a PostScript surface for the current (and +subsequent) pages.

    +

    This function should only be called before any drawing operations have been performed on the current page. The simplest way to do this is to call this function immediately after creating the surface or immediately after completing a page with either -cairo_show_page() or cairo_copy_page(). -

    -
    ---+cairo_show_page() or cairo_copy_page().

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    surface :

    a PostScript cairo_surface_t -

    surface

    a PostScript cairo_surface_t

     

    width_in_points :

    new surface width, in points (1 point == 1/72.0 inch)

    width_in_points

    new surface width, in points (1 point == 1/72.0 inch)

     

    height_in_points :

    new surface height, in points (1 point == 1/72.0 inch)

    height_in_points

    new surface height, in points (1 point == 1/72.0 inch)

     
    +

    Since 1.2


    -

    cairo_ps_surface_dsc_begin_setup ()

    -
    void                cairo_ps_surface_dsc_begin_setup    (cairo_surface_t *surface);
    -

    -This function indicates that subsequent calls to -cairo_ps_surface_dsc_comment() should direct comments to the Setup -section of the PostScript output. -

    -

    -This function should be called at most once per surface, and must -be called before any call to cairo_ps_surface_dsc_begin_page_setup() -and before any drawing is performed to the surface. -

    -

    -See cairo_ps_surface_dsc_comment() for more details. -

    -
    ---+

    cairo_ps_surface_dsc_begin_setup ()

    +
    void
    +cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface);
    +

    This function indicates that subsequent calls to +cairo_ps_surface_dsc_comment() should direct comments to the Setup +section of the PostScript output.

    +

    This function should be called at most once per surface, and must +be called before any call to cairo_ps_surface_dsc_begin_page_setup() +and before any drawing is performed to the surface.

    +

    See cairo_ps_surface_dsc_comment() for more details.

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a PostScript cairo_surface_t -

    surface

    a PostScript cairo_surface_t

     
    +

    Since 1.2


    -

    cairo_ps_surface_dsc_begin_page_setup ()

    -
    void                cairo_ps_surface_dsc_begin_page_setup
    -                                                        (cairo_surface_t *surface);
    -

    -This function indicates that subsequent calls to -cairo_ps_surface_dsc_comment() should direct comments to the -PageSetup section of the PostScript output. -

    -

    -This function call is only needed for the first page of a +

    cairo_ps_surface_dsc_begin_page_setup ()

    +
    void
    +cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface);
    +

    This function indicates that subsequent calls to +cairo_ps_surface_dsc_comment() should direct comments to the +PageSetup section of the PostScript output.

    +

    This function call is only needed for the first page of a surface. It should be called after any call to -cairo_ps_surface_dsc_begin_setup() and before any drawing is -performed to the surface. -

    -

    -See cairo_ps_surface_dsc_comment() for more details. -

    -
    ---+cairo_ps_surface_dsc_begin_setup() and before any drawing is +performed to the surface.

    +

    See cairo_ps_surface_dsc_comment() for more details.

    +
    +

    Parameters

    +
    ++++ - - + + +

    surface :

    a PostScript cairo_surface_t -

    surface

    a PostScript cairo_surface_t

     
    +

    Since 1.2


    -

    cairo_ps_surface_dsc_comment ()

    -
    void                cairo_ps_surface_dsc_comment        (cairo_surface_t *surface,
    -                                                         const char *comment);
    -

    -Emit a comment into the PostScript output for the given surface. -

    -

    -The comment is expected to conform to the PostScript Language +

    cairo_ps_surface_dsc_comment ()

    +
    void
    +cairo_ps_surface_dsc_comment (cairo_surface_t *surface,
    +                              const char *comment);
    +

    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 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 +a useful reference.

    +

    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 +these conditions will place surface + into an error state. But beyond these two conditions, this function will not enforce -conformance of the comment with any particular specification. -

    -

    -The comment string should not have a trailing newline. -

    -

    -The DSC specifies different sections in which particular comments +conformance of the comment with any particular specification.

    +

    The comment string should not have a trailing newline.

    +

    The DSC specifies different sections in which particular comments can appear. This function provides for comments to be emitted within three sections: the header, the Setup section, and the PageSetup section. Comments appearing in the first two sections apply to the entire document while comments in the BeginPageSetup -section apply only to a single page. -

    -

    -For comments to appear in the header section, this function should +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_dsc_begin_setup(). -

    -

    -For comments to appear in the Setup section, this function should -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 +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_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_dsc_begin_page_setup(). -

    -

    -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() +cairo_ps_surface_dsc_begin_page_setup().

    +

    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 +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. -

    -

    -Setup section: %%BeginSetup, %%EndSetup -

    -

    -PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup. -

    -

    -Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF -

    -

    -Here is an example sequence showing how this function might be used: -

    -

    -

    +the following comments:

    +

    Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, +%%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments.

    +

    Setup section: %%BeginSetup, %%EndSetup

    +

    PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup.

    +

    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);
     ...
    @@ -579,35 +625,83 @@
     cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A5");
     ...
     
    -

    -

    -
    ---+
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    surface :

    a PostScript cairo_surface_t -

    surface

    a PostScript cairo_surface_t

     

    comment :

    a comment string to be emitted into the PostScript output

    comment

    a comment string to be emitted into the PostScript output

     
    +

    Since 1.2

    +

    Types and Values

    +
    +

    CAIRO_HAS_PS_SURFACE

    +
    #define CAIRO_HAS_PS_SURFACE 1
    +
    +

    Defined if the PostScript surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.2

    +
    +
    +
    +

    enum cairo_ps_level_t

    +

    cairo_ps_level_t is used to describe the language level of the +PostScript Language Reference that a generated PostScript file will +conform to.

    +
    +

    Members

    +
    +++++ + + + + + + + + + + + + +

    CAIRO_PS_LEVEL_2

    +

    The language level 2 of the PostScript specification. (Since 1.6)

    +
     

    CAIRO_PS_LEVEL_3

    +

    The language level 3 of the PostScript specification. (Since 1.6)

    +
     
    +
    +

    Since 1.6

    +
    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html cairo-1.14.2/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Quartz (CGFont) Fonts +Cairo: A Vector Graphics Library: Quartz (CGFont) Fonts - + - - - - - - - - - - + + + + + + +
    @@ -33,103 +30,143 @@

    Quartz (CGFont) Fonts

    Quartz (CGFont) Fonts — Font support via CGFont on OS X

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_QUARTZ_FONT
    -cairo_font_face_t * cairo_quartz_font_face_create_for_cgfont
    -                                                        (CGFontRef font);
    -cairo_font_face_t * cairo_quartz_font_face_create_for_atsu_font_id
    -                                                        (ATSUFontID font_id);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_QUARTZ_FONT
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The Quartz font backend is primarily used to render text on Apple +

    The Quartz font backend is primarily used to render text on Apple MacOS X systems. The CGFont API is used for the internal -implementation of the font backend methods. -

    +implementation of the font backend methods.

    -

    Details

    -
    -

    CAIRO_HAS_QUARTZ_FONT

    -
    #define CAIRO_HAS_QUARTZ_FONT 1
    -
    -

    -Defined if the Quartz font backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.6

    -
    -
    +

    Functions

    -

    cairo_quartz_font_face_create_for_cgfont ()

    -
    cairo_font_face_t * cairo_quartz_font_face_create_for_cgfont
    -                                                        (CGFontRef font);
    -

    -Creates a new font for the Quartz font backend based on a +

    cairo_quartz_font_face_create_for_cgfont ()

    +
    cairo_font_face_t *
    +cairo_quartz_font_face_create_for_cgfont
    +                               (CGFontRef font);
    +

    Creates a new font for the Quartz font backend based on a CGFontRef. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). -

    -
    +cairo_set_font_face() or cairo_scaled_font_create().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font :

    a CGFontRef obtained through a method external to cairo.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    font

    a CGFontRef obtained through a method external to cairo.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.6


    -

    cairo_quartz_font_face_create_for_atsu_font_id ()

    -
    cairo_font_face_t * cairo_quartz_font_face_create_for_atsu_font_id
    -                                                        (ATSUFontID font_id);
    -

    -Creates a new font for the Quartz font backend based on an +

    cairo_quartz_font_face_create_for_atsu_font_id ()

    +
    cairo_font_face_t *
    +cairo_quartz_font_face_create_for_atsu_font_id
    +                               (ATSUFontID font_id);
    +

    Creates a new font for the Quartz font backend based on an ATSUFontID. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). -

    -
    +cairo_set_font_face() or cairo_scaled_font_create().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_id :

    an ATSUFontID for the font.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    font_id

    an ATSUFontID for the font.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +
    +

    Since 1.6

    +
    +
    +
    +

    Types and Values

    +
    +

    CAIRO_HAS_QUARTZ_FONT

    +
    #define CAIRO_HAS_QUARTZ_FONT 1
    +
    +

    Defined if the Quartz font backend is available. +This macro can be used to conditionally compile backend-specific code.

    Since 1.6

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Quartz-Surfaces.html cairo-1.14.2/doc/public/html/cairo-Quartz-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Quartz-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Quartz-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Quartz Surfaces +Cairo: A Vector Graphics Library: Quartz Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,174 +30,221 @@

    Quartz Surfaces

    Quartz Surfaces — Rendering to Quartz surfaces

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_QUARTZ_SURFACE
    -cairo_surface_t *   cairo_quartz_surface_create         (cairo_format_t format,
    -                                                         unsigned int width,
    -                                                         unsigned int height);
    -cairo_surface_t *   cairo_quartz_surface_create_for_cg_context
    -                                                        (CGContextRef cgContext,
    -                                                         unsigned int width,
    -                                                         unsigned int height);
    -CGContextRef        cairo_quartz_surface_get_cg_context (cairo_surface_t *surface);
    -
    +
    +

    Functions

    +
    -

    Description

    -

    -The Quartz surface is used to render cairo graphics targeting the -Apple OS X Quartz rendering system. -

    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_QUARTZ_SURFACE
    -

    Details

    -
    -

    CAIRO_HAS_QUARTZ_SURFACE

    -
    #define CAIRO_HAS_QUARTZ_SURFACE 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the Quartz surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.6

    -
    +
    +

    Description

    +

    The Quartz surface is used to render cairo graphics targeting the +Apple OS X Quartz rendering system.

    +
    +
    +

    Functions

    -

    cairo_quartz_surface_create ()

    -
    cairo_surface_t *   cairo_quartz_surface_create         (cairo_format_t format,
    -                                                         unsigned int width,
    -                                                         unsigned int height);
    -

    -Creates a Quartz surface backed by a CGBitmap. The surface is +

    cairo_quartz_surface_create ()

    +
    cairo_surface_t *
    +cairo_quartz_surface_create (cairo_format_t format,
    +                             unsigned int width,
    +                             unsigned int height);
    +

    Creates a Quartz surface backed by a CGBitmap. The surface is created using the Device RGB (or Device Gray, for A8) color space. All Cairo operations, including those that require software -rendering, will succeed on this surface. -

    -
    +rendering, will succeed on this surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    format :

    format of pixels in the surface to create

    format

    format of pixels in the surface to create

     

    width :

    width of the surface, in pixels

    width

    width of the surface, in pixels

     

    height :

    height of the surface, in pixels

    Returns :

    the newly created surface.

    height

    height of the surface, in pixels

     
    +
    +
    +

    Returns

    +

    the newly created surface.

    +

    +

    Since 1.6


    -

    cairo_quartz_surface_create_for_cg_context ()

    -
    cairo_surface_t *   cairo_quartz_surface_create_for_cg_context
    -                                                        (CGContextRef cgContext,
    -                                                         unsigned int width,
    -                                                         unsigned int height);
    -

    -Creates a Quartz surface that wraps the given CGContext. The +

    cairo_quartz_surface_create_for_cg_context ()

    +
    cairo_surface_t *
    +cairo_quartz_surface_create_for_cg_context
    +                               (CGContextRef cgContext,
    +                                unsigned int width,
    +                                unsigned int height);
    +

    Creates a Quartz surface that wraps the given CGContext. The CGContext is assumed to be in the standard Cairo coordinate space (that is, with the origin at the upper left and the Y axis increasing downward). If the CGContext is in the Quartz coordinate space (with the origin at the bottom left), then it should be flipped before this function is called. The flip can be accomplished -using a translate and a scale; for example: -

    -

    -

    +using a translate and a scale; for example:

     CGContextTranslateCTM (cgContext, 0.0, height);
     CGContextScaleCTM (cgContext, 1.0, -1.0);
     
    -

    -

    -

    -All Cairo operations are implemented in terms of Quartz operations, -as long as Quartz-compatible elements are used (such as Quartz fonts). -

    -
    +

    All Cairo operations are implemented in terms of Quartz operations, +as long as Quartz-compatible elements are used (such as Quartz fonts).

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    cgContext :

    the existing CGContext for which to create the surface

    width :

    width of the surface, in pixels

    cgContext

    the existing CGContext for which to create the surface

     

    height :

    height of the surface, in pixels

    width

    width of the surface, in pixels

     

    Returns :

    the newly created Cairo surface.

    height

    height of the surface, in pixels

     
    +
    +
    +

    Returns

    +

    the newly created Cairo surface.

    +

    +

    Since 1.6


    -

    cairo_quartz_surface_get_cg_context ()

    -
    CGContextRef        cairo_quartz_surface_get_cg_context (cairo_surface_t *surface);
    -

    -Returns the CGContextRef that the given Quartz surface is backed -by. -

    -

    -A call to cairo_surface_flush() is required before using the +

    cairo_quartz_surface_get_cg_context ()

    +
    CGContextRef
    +cairo_quartz_surface_get_cg_context (cairo_surface_t *surface);
    +

    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 +to its state. A call to cairo_surface_mark_dirty() is required after the state or the content of the CGContextRef has been -modified. -

    -
    +modified.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    the Cairo Quartz surface

    Returns :

    the CGContextRef for the given surface.

    surface

    the Cairo Quartz surface

     
    +
    +
    +

    Returns

    +

    the CGContextRef for the given surface.

    +

    +
    +

    Since 1.6

    +
    +
    +
    +

    Types and Values

    +
    +

    CAIRO_HAS_QUARTZ_SURFACE

    +
    #define CAIRO_HAS_QUARTZ_SURFACE 1
    +
    +

    Defined if the Quartz surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    Since 1.6

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Raster-Sources.html cairo-1.14.2/doc/public/html/cairo-Raster-Sources.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Raster-Sources.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Raster-Sources.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Raster Sources +Cairo: A Vector Graphics Library: Raster Sources - + - - - - - - - - - - + + + + + + +
    @@ -33,616 +30,780 @@

    Raster Sources

    Raster Sources — Supplying arbitrary image data

    - +
    -
    -

    Synopsis

    -
    cairo_pattern_t *   cairo_pattern_create_raster_source  (void *user_data,
    -                                                         cairo_content_t content,
    -                                                         int width,
    -                                                         int height);
    -void                cairo_raster_source_pattern_set_callback_data
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *data);
    -void *              cairo_raster_source_pattern_get_callback_data
    -                                                        (cairo_pattern_t *pattern);
    -void                cairo_raster_source_pattern_set_acquire
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_acquire_func_t acquire,
    -                                                         cairo_raster_source_release_func_t release);
    -void                cairo_raster_source_pattern_get_acquire
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_acquire_func_t *acquire,
    -                                                         cairo_raster_source_release_func_t *release);
    -void                cairo_raster_source_pattern_set_snapshot
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_snapshot_func_t snapshot);
    -cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot
    -                                                        (cairo_pattern_t *pattern);
    -void                cairo_raster_source_pattern_set_copy
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_copy_func_t copy);
    -cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy
    -                                                        (cairo_pattern_t *pattern);
    -void                cairo_raster_source_pattern_set_finish
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_finish_func_t finish);
    -cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish
    -                                                        (cairo_pattern_t *pattern);
    -cairo_surface_t     (*cairo_raster_source_acquire_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         cairo_surface_t *target,
    -                                                         const cairo_rectangle_int_t *extents);
    -void                (*cairo_raster_source_release_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         cairo_surface_t *surface);
    -cairo_status_t      (*cairo_raster_source_snapshot_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data);
    -cairo_status_t      (*cairo_raster_source_copy_func_t)  (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         const cairo_pattern_t *other);
    -void                (*cairo_raster_source_finish_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data);
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The raster source provides the ability to supply arbitrary pixel data +

    The raster source provides the ability to supply arbitrary pixel data whilst rendering. The pixels are queried at the time of rasterisation by means of user callback functions, allowing for the ultimate flexibility. For example, in handling compressed image sources, you may keep a MRU cache of decompressed images and decompress sources on the -fly and discard old ones to conserve memory. -

    -

    -For the raster source to be effective, you must at least specify +fly and discard old ones to conserve memory.

    +

    For the raster source to be effective, you must at least specify the acquire and release callbacks which are used to retrieve the pixel data for the region of interest and demark when it can be freed afterwards. Other callbacks are provided for when the pattern is copied temporarily during rasterisation, or more permanently as a snapshot in order to keep -the pixel data available for printing. -

    +the pixel data available for printing.

    -

    Details

    +

    Functions

    -

    cairo_pattern_create_raster_source ()

    -
    cairo_pattern_t *   cairo_pattern_create_raster_source  (void *user_data,
    -                                                         cairo_content_t content,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates a new user pattern for providing pixel data. -

    -

    -Use the setter functions to associate callbacks with the returned -pattern. The only mandatory callback is acquire. -

    -
    ---+

    cairo_pattern_create_raster_source ()

    +
    cairo_pattern_t *
    +cairo_pattern_create_raster_source (void *user_data,
    +                                    cairo_content_t content,
    +                                    int width,
    +                                    int height);
    +

    Creates a new user pattern for providing pixel data.

    +

    Use the setter functions to associate callbacks with the returned +pattern. The only mandatory callback is acquire.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + - - - - +picking the appropriate rendering path.

    + - - + + + - - + + +

    user_data :

    the user data to be passed to all callbacks

    user_data

    the user data to be passed to all callbacks

     

    content :

    content type for the pixel data that will be returned. Knowing +

    content

    content type for the pixel data that will be returned. Knowing the content type ahead of time is used for analysing the operation and -picking the appropriate rendering path.

    width :

    maximum size of the sample area 

    height :

    maximum size of the sample area

    width

    maximum size of the sample area

     

    Returns :

    a newly created cairo_pattern_t. Free with -cairo_pattern_destroy() when you are done using it.

    height

    maximum size of the sample area

     
    +
    +
    +

    Returns

    +

    a newly created cairo_pattern_t. Free with +cairo_pattern_destroy() when you are done using it.

    +

    +

    Since 1.12


    -

    cairo_raster_source_pattern_set_callback_data ()

    -
    void                cairo_raster_source_pattern_set_callback_data
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *data);
    -

    -Updates the user data that is provided to all callbacks. -

    -
    +

    cairo_raster_source_pattern_set_callback_data ()

    +
    void
    +cairo_raster_source_pattern_set_callback_data
    +                               (cairo_pattern_t *pattern,
    +                                void *data);
    +

    Updates the user data that is provided to all callbacks.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    the pattern to update

    pattern

    the pattern to update

     

    data :

    the user data to be passed to all callbacks

    data

    the user data to be passed to all callbacks

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_get_callback_data ()

    -
    void *              cairo_raster_source_pattern_get_callback_data
    -                                                        (cairo_pattern_t *pattern);
    -

    -Queries the current user data. -

    -
    +

    cairo_raster_source_pattern_get_callback_data ()

    +
    void *
    +cairo_raster_source_pattern_get_callback_data
    +                               (cairo_pattern_t *pattern);
    +

    Queries the current user data.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    pattern :

    the pattern to update

    Returns :

    the current user-data passed to each callback

    pattern

    the pattern to update

     
    +
    +
    +

    Returns

    +

    the current user-data passed to each callback

    +

    +

    Since 1.12


    -

    cairo_raster_source_pattern_set_acquire ()

    -
    void                cairo_raster_source_pattern_set_acquire
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_acquire_func_t acquire,
    -                                                         cairo_raster_source_release_func_t release);
    -

    -Specifies the callbacks used to generate the image surface for a rendering -operation (acquire) and the function used to cleanup that surface afterwards. -

    -

    -The acquire callback should create a surface (preferably an image +

    cairo_raster_source_pattern_set_acquire ()

    +
    void
    +cairo_raster_source_pattern_set_acquire
    +                               (cairo_pattern_t *pattern,
    +                                cairo_raster_source_acquire_func_t acquire,
    +                                cairo_raster_source_release_func_t release);
    +

    Specifies the callbacks used to generate the image surface for a rendering +operation (acquire) and the function used to cleanup that surface afterwards.

    +

    The acquire + callback should create a surface (preferably an image surface created to match the target using -cairo_surface_create_similar_image()) that defines at least the region +cairo_surface_create_similar_image()) that defines at least the region of interest specified by extents. The surface is allowed to be the entire sample area, but if it does contain a subsection of the sample area, the surface extents should be provided by setting the device offset (along -with its width and height) using cairo_surface_set_device_offset(). -

    -
    +with its width and height) using cairo_surface_set_device_offset().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    pattern :

    the pattern to update

    pattern

    the pattern to update

     

    acquire :

    acquire callback

    acquire

    acquire callback

     

    release :

    release callback

    release

    release callback

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_get_acquire ()

    -
    void                cairo_raster_source_pattern_get_acquire
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_acquire_func_t *acquire,
    -                                                         cairo_raster_source_release_func_t *release);
    -

    -Queries the current acquire and release callbacks. -

    -
    +

    cairo_raster_source_pattern_get_acquire ()

    +
    void
    +cairo_raster_source_pattern_get_acquire
    +                               (cairo_pattern_t *pattern,
    +                                cairo_raster_source_acquire_func_t *acquire,
    +                                cairo_raster_source_release_func_t *release);
    +

    Queries the current acquire and release callbacks.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    pattern :

    the pattern to query

    pattern

    the pattern to query

     

    acquire :

    return value for the current acquire callback

    acquire

    return value for the current acquire callback

     

    release :

    return value for the current release callback

    release

    return value for the current release callback

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_set_snapshot ()

    -
    void                cairo_raster_source_pattern_set_snapshot
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_snapshot_func_t snapshot);
    -

    -Sets the callback that will be used whenever a snapshot is taken of the +

    cairo_raster_source_pattern_set_snapshot ()

    +
    void
    +cairo_raster_source_pattern_set_snapshot
    +                               (cairo_pattern_t *pattern,
    +                                cairo_raster_source_snapshot_func_t snapshot);
    +

    Sets the callback that will be used whenever a snapshot is taken of the pattern, that is whenever the current contents of the pattern should be -preserved for later use. This is typically invoked whilst printing. -

    -
    +preserved for later use. This is typically invoked whilst printing.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    the pattern to update

    pattern

    the pattern to update

     

    snapshot :

    snapshot callback

    snapshot

    snapshot callback

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_get_snapshot ()

    -
    cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot
    -                                                        (cairo_pattern_t *pattern);
    -

    -Queries the current snapshot callback. -

    -
    +

    cairo_raster_source_pattern_get_snapshot ()

    +
    cairo_raster_source_snapshot_func_t
    +cairo_raster_source_pattern_get_snapshot
    +                               (cairo_pattern_t *pattern);
    +

    Queries the current snapshot callback.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    pattern :

    the pattern to query

    Returns :

    the current snapshot callback

    pattern

    the pattern to query

     
    +
    +
    +

    Returns

    +

    the current snapshot callback

    +

    +

    Since 1.12


    -

    cairo_raster_source_pattern_set_copy ()

    -
    void                cairo_raster_source_pattern_set_copy
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_copy_func_t copy);
    -

    -Updates the copy callback which is used whenever a temporary copy of the -pattern is taken. -

    -
    +

    cairo_raster_source_pattern_set_copy ()

    +
    void
    +cairo_raster_source_pattern_set_copy (cairo_pattern_t *pattern,
    +                                      cairo_raster_source_copy_func_t copy);
    +

    Updates the copy callback which is used whenever a temporary copy of the +pattern is taken.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    the pattern to update

    pattern

    the pattern to update

     

    copy :

    the copy callback

    copy

    the copy callback

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_get_copy ()

    -
    cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy
    -                                                        (cairo_pattern_t *pattern);
    -

    -Queries the current copy callback. -

    -
    +

    cairo_raster_source_pattern_get_copy ()

    +
    cairo_raster_source_copy_func_t
    +cairo_raster_source_pattern_get_copy (cairo_pattern_t *pattern);
    +

    Queries the current copy callback.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    pattern :

    the pattern to query

    Returns :

    the current copy callback

    pattern

    the pattern to query

     
    +
    +
    +

    Returns

    +

    the current copy callback

    +

    +

    Since 1.12


    -

    cairo_raster_source_pattern_set_finish ()

    -
    void                cairo_raster_source_pattern_set_finish
    -                                                        (cairo_pattern_t *pattern,
    -                                                         cairo_raster_source_finish_func_t finish);
    -

    -Updates the finish callback which is used whenever a pattern (or a copy -thereof) will no longer be used. -

    -
    +

    cairo_raster_source_pattern_set_finish ()

    +
    void
    +cairo_raster_source_pattern_set_finish
    +                               (cairo_pattern_t *pattern,
    +                                cairo_raster_source_finish_func_t finish);
    +

    Updates the finish callback which is used whenever a pattern (or a copy +thereof) will no longer be used.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    the pattern to update

    pattern

    the pattern to update

     

    finish :

    the finish callback

    finish

    the finish callback

     
    +

    Since 1.12


    -

    cairo_raster_source_pattern_get_finish ()

    -
    cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish
    -                                                        (cairo_pattern_t *pattern);
    -

    -Queries the current finish callback. -

    -
    +

    cairo_raster_source_pattern_get_finish ()

    +
    cairo_raster_source_finish_func_t
    +cairo_raster_source_pattern_get_finish
    +                               (cairo_pattern_t *pattern);
    +

    Queries the current finish callback.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    pattern :

    the pattern to query

    Returns :

    the current finish callback

    pattern

    the pattern to query

     
    +
    +
    +

    Returns

    +

    the current finish callback

    +

    +

    Since 1.12


    -

    cairo_raster_source_acquire_func_t ()

    -
    cairo_surface_t     (*cairo_raster_source_acquire_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         cairo_surface_t *target,
    -                                                         const cairo_rectangle_int_t *extents);
    -

    -cairo_raster_source_acquire_func_t is the type of function which is +

    cairo_raster_source_acquire_func_t ()

    +
    cairo_surface_t
    +(*cairo_raster_source_acquire_func_t) (cairo_pattern_t *pattern,
    +                                       void *callback_data,
    +                                       cairo_surface_t *target,
    +                                       const cairo_rectangle_int_t *extents);
    +

    cairo_raster_source_acquire_func_t is the type of function which is called when a pattern is being rendered from. It should create a surface that provides the pixel data for the region of interest as defined by extents, though the surface itself does not have to be limited to that area. For convenience the surface should probably be of image type, -created with cairo_surface_create_similar_image() for the target (which +created with cairo_surface_create_similar_image() for the target (which enables the number of copies to be reduced during transfer to the device). Another option, might be to return a similar surface to the target for explicit handling by the application of a set of cached sources on the device. The region of sample data provided should be defined using -cairo_surface_set_device_offset() to specify the top-left corner of the -sample data (along with width and height of the surface). -

    -
    +cairo_surface_set_device_offset() to specify the top-left corner of the +sample data (along with width and height of the surface).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    pattern :

    the pattern being rendered from

    pattern

    the pattern being rendered from

     

    callback_data :

    the user data supplied during creation

    callback_data

    the user data supplied during creation

     

    target :

    the rendering target surface

    target

    the rendering target surface

     

    extents :

    rectangular region of interest in pixels in sample space

    Returns :

    a cairo_surface_t -

    extents

    rectangular region of interest in pixels in sample space

     
    +
    +
    +

    Returns

    +

    a cairo_surface_t

    +

    +

    Since 1.12


    -

    cairo_raster_source_release_func_t ()

    -
    void                (*cairo_raster_source_release_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         cairo_surface_t *surface);
    -

    -cairo_raster_source_release_func_t is the type of function which is +

    cairo_raster_source_release_func_t ()

    +
    void
    +(*cairo_raster_source_release_func_t) (cairo_pattern_t *pattern,
    +                                       void *callback_data,
    +                                       cairo_surface_t *surface);
    +

    cairo_raster_source_release_func_t is the type of function which is called when the pixel data is no longer being access by the pattern for the rendering operation. Typically this function will simply -destroy the surface created during acquire. -

    -
    +destroy the surface created during acquire.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    pattern :

    the pattern being rendered from

    pattern

    the pattern being rendered from

     

    callback_data :

    the user data supplied during creation

    callback_data

    the user data supplied during creation

     

    surface :

    the surface created during acquire

    surface

    the surface created during acquire

     
    +

    Since 1.12


    -

    cairo_raster_source_snapshot_func_t ()

    -
    cairo_status_t      (*cairo_raster_source_snapshot_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data);
    -

    -cairo_raster_source_snapshot_func_t is the type of function which is +

    cairo_raster_source_snapshot_func_t ()

    +
    cairo_status_t
    +(*cairo_raster_source_snapshot_func_t)
    +                               (cairo_pattern_t *pattern,
    +                                void *callback_data);
    +

    cairo_raster_source_snapshot_func_t is the type of function which is called when the pixel data needs to be preserved for later use during printing. This pattern will be accessed again later, and it is expected to provide the pixel data that was current at the time -of snapshotting. -

    -
    +of snapshotting.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    pattern :

    the pattern being rendered from

    callback_data :

    the user data supplied during creation

    pattern

    the pattern being rendered from

     

    Returns :

    CAIRO_STATUS_SUCCESS on success, or one of the -cairo_status_t error codes for failure.

    callback_data

    the user data supplied during creation

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS on success, or one of the +cairo_status_t error codes for failure.

    +

    +

    Since 1.12


    -

    cairo_raster_source_copy_func_t ()

    -
    cairo_status_t      (*cairo_raster_source_copy_func_t)  (cairo_pattern_t *pattern,
    -                                                         void *callback_data,
    -                                                         const cairo_pattern_t *other);
    -

    -cairo_raster_source_copy_func_t is the type of function which is -called when the pattern gets copied as a normal part of rendering. -

    -
    +

    cairo_raster_source_copy_func_t ()

    +
    cairo_status_t
    +(*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern,
    +                                    void *callback_data,
    +                                    const cairo_pattern_t *other);
    +

    cairo_raster_source_copy_func_t is the type of function which is +called when the pattern gets copied as a normal part of rendering.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    pattern :

    the cairo_pattern_t that was copied to

    callback_data :

    the user data supplied during creation

    pattern

    the cairo_pattern_t that was copied to

     

    other :

    the cairo_pattern_t being used as the source for the copy

    callback_data

    the user data supplied during creation

     

    Returns :

    CAIRO_STATUS_SUCCESS on success, or one of the -cairo_status_t error codes for failure.

    other

    the cairo_pattern_t being used as the source for the copy

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS on success, or one of the +cairo_status_t error codes for failure.

    +

    +

    Since 1.12


    -

    cairo_raster_source_finish_func_t ()

    -
    void                (*cairo_raster_source_finish_func_t)
    -                                                        (cairo_pattern_t *pattern,
    -                                                         void *callback_data);
    -

    -cairo_raster_source_finish_func_t is the type of function which is -called when the pattern (or a copy thereof) is no longer required. -

    -
    +

    cairo_raster_source_finish_func_t ()

    +
    void
    +(*cairo_raster_source_finish_func_t) (cairo_pattern_t *pattern,
    +                                      void *callback_data);
    +

    cairo_raster_source_finish_func_t is the type of function which is +called when the pattern (or a copy thereof) is no longer required.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    pattern :

    the pattern being rendered from

    pattern

    the pattern being rendered from

     

    callback_data :

    the user data supplied during creation

    callback_data

    the user data supplied during creation

     
    +

    Since 1.12

    +

    Types and Values

    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Recording-Surfaces.html cairo-1.14.2/doc/public/html/cairo-Recording-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Recording-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Recording-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Recording Surfaces +Cairo: A Vector Graphics Library: Recording Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,37 +30,72 @@

    Recording Surfaces

    Recording Surfaces — Records all drawing operations

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_RECORDING_SURFACE
    -cairo_surface_t *   cairo_recording_surface_create      (cairo_content_t content,
    -                                                         const cairo_rectangle_t *extents);
    -void                cairo_recording_surface_ink_extents (cairo_surface_t *surface,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *width,
    -                                                         double *height);
    -cairo_bool_t        cairo_recording_surface_get_extents (cairo_surface_t *surface,
    -                                                         cairo_rectangle_t *extents);
    +
    +

    Functions

    + +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_RECORDING_SURFACE
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -A recording surface is a surface that records all drawing operations at +

    A recording surface is a surface that records all drawing operations at the highest level of the surface backend interface, (that is, the level of paint, mask, stroke, fill, and show_text_glyphs). The recording surface can then be "replayed" against any target surface by using it -as a source surface. -

    -

    -If you want to replay a surface so that the results in target will be +as a source surface.

    +

    If you want to replay a surface so that the results in target will be 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: -

    +target surface, you can use code like this:

     cairo_t *cr;
     
    @@ -72,164 +104,172 @@
     cairo_paint (cr);
     cairo_destroy (cr);
     
    -

    -

    -

    -A recording surface is logically unbounded, i.e. it has no implicit constraint +

    A recording surface is logically unbounded, i.e. it has no implicit constraint on the size of the drawing surface. However, in practice this is rarely useful as you wish to replay against a particular target surface with known bounds. For this case, it is more efficient to specify the target -extents to the recording surface upon creation. -

    -

    -The recording phase of the recording surface is careful to snapshot all +extents to the recording surface upon creation.

    +

    The recording phase of the recording surface is careful to snapshot all necessary objects (paths, patterns, etc.), in order to achieve accurate replay. The efficiency of the recording surface could be improved by improving the implementation of snapshot for the various objects. For example, it would be nice to have a -copy-on-write implementation for _cairo_surface_snapshot. -

    +copy-on-write implementation for _cairo_surface_snapshot.

    -

    Details

    +

    Functions

    -

    CAIRO_HAS_RECORDING_SURFACE

    -
    #define CAIRO_HAS_RECORDING_SURFACE 1
    -
    -

    -Defined if the recording surface backend is available. -The recording surface backend is always built in. -This macro was added for completeness in cairo 1.10. -

    -

    Since 1.10

    -
    -
    -
    -

    cairo_recording_surface_create ()

    -
    cairo_surface_t *   cairo_recording_surface_create      (cairo_content_t content,
    -                                                         const cairo_rectangle_t *extents);
    -

    -Creates a recording-surface which can be used to record all drawing operations +

    cairo_recording_surface_create ()

    +
    cairo_surface_t *
    +cairo_recording_surface_create (cairo_content_t content,
    +                                const cairo_rectangle_t *extents);
    +

    Creates a recording-surface which can be used to record all drawing operations at the highest level (that is, the level of paint, mask, stroke, fill and show_text_glyphs). The recording surface can then be "replayed" against -any target surface by using it as a source to drawing operations. -

    -

    -The recording phase of the recording surface is careful to snapshot all +any target surface by using it as a source to drawing operations.

    +

    The recording phase of the recording surface is careful to snapshot all necessary objects (paths, patterns, etc.), in order to achieve -accurate replay. -

    -
    +accurate replay.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    content :

    the content of the recording surface

    extents :

    the extents to record in pixels, can be NULL to record -unbounded operations.

    content

    the content of the recording surface

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it.

    extents

    the extents to record in pixels, can be NULL to record +unbounded operations.

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    +

    Since 1.10


    -

    cairo_recording_surface_ink_extents ()

    -
    void                cairo_recording_surface_ink_extents (cairo_surface_t *surface,
    -                                                         double *x0,
    -                                                         double *y0,
    -                                                         double *width,
    -                                                         double *height);
    -

    -Measures the extents of the operations stored within the recording-surface. +

    cairo_recording_surface_ink_extents ()

    +
    void
    +cairo_recording_surface_ink_extents (cairo_surface_t *surface,
    +                                     double *x0,
    +                                     double *y0,
    +                                     double *width,
    +                                     double *height);
    +

    Measures the extents of the operations stored within the recording-surface. This is useful to compute the required size of an image surface (or -equivalent) into which to replay the full sequence of drawing operations. -

    -
    +equivalent) into which to replay the full sequence of drawing operations.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + +

    surface :

    a cairo_recording_surface_t -

    surface

    a cairo_recording_surface_t

     

    x0 :

    the x-coordinate of the top-left of the ink bounding box

    x0

    the x-coordinate of the top-left of the ink bounding box

     

    y0 :

    the y-coordinate of the top-left of the ink bounding box

    y0

    the y-coordinate of the top-left of the ink bounding box

     

    width :

    the width of the ink bounding box

    width

    the width of the ink bounding box

     

    height :

    the height of the ink bounding box

    height

    the height of the ink bounding box

     
    +

    Since 1.10


    -

    cairo_recording_surface_get_extents ()

    -
    cairo_bool_t        cairo_recording_surface_get_extents (cairo_surface_t *surface,
    -                                                         cairo_rectangle_t *extents);
    -

    -Get the extents of the recording-surface. -

    -
    +

    cairo_recording_surface_get_extents ()

    +
    cairo_bool_t
    +cairo_recording_surface_get_extents (cairo_surface_t *surface,
    +                                     cairo_rectangle_t *extents);
    +

    Get the extents of the recording-surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    surface :

    a cairo_recording_surface_t -

    surface

    a cairo_recording_surface_t

     

    extents :

    the cairo_rectangle_t to be assigned the extents

    Returns :

    -TRUE if the surface is bounded, of recording type, and -not in an error state, otherwise FALSE -

    extents

    the cairo_rectangle_t to be assigned the extents

     
    +
    +
    +

    Returns

    +

    TRUE if the surface is bounded, of recording type, and +not in an error state, otherwise FALSE

    +

    +

    Since 1.12

    +

    Types and Values

    +
    +

    CAIRO_HAS_RECORDING_SURFACE

    +
    #define CAIRO_HAS_RECORDING_SURFACE 1
    +
    +

    Defined if the recording surface backend is available. +The recording surface backend is always built in. +This macro was added for completeness in cairo 1.10.

    +

    Since 1.10

    +
    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Regions.html cairo-1.14.2/doc/public/html/cairo-Regions.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Regions.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Regions.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Regions +Cairo: A Vector Graphics Library: Regions - + - - - - - - - - - - + + + + + + +
    @@ -33,850 +30,1130 @@

    Regions

    Regions — Representing a pixel-aligned area

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_region_t;
    -cairo_region_t *    cairo_region_create                 (void);
    -cairo_region_t *    cairo_region_create_rectangle       (const cairo_rectangle_int_t *rectangle);
    -cairo_region_t *    cairo_region_create_rectangles      (const cairo_rectangle_int_t *rects,
    -                                                         int count);
    -cairo_region_t *    cairo_region_copy                   (const cairo_region_t *original);
    -cairo_region_t *    cairo_region_reference              (cairo_region_t *region);
    -void                cairo_region_destroy                (cairo_region_t *region);
    -cairo_status_t      cairo_region_status                 (const cairo_region_t *region);
    -void                cairo_region_get_extents            (const cairo_region_t *region,
    -                                                         cairo_rectangle_int_t *extents);
    -int                 cairo_region_num_rectangles         (const cairo_region_t *region);
    -void                cairo_region_get_rectangle          (const cairo_region_t *region,
    -                                                         int nth,
    -                                                         cairo_rectangle_int_t *rectangle);
    -cairo_bool_t        cairo_region_is_empty               (const cairo_region_t *region);
    -cairo_bool_t        cairo_region_contains_point         (const cairo_region_t *region,
    -                                                         int x,
    -                                                         int y);
    -enum                cairo_region_overlap_t;
    -cairo_region_overlap_t cairo_region_contains_rectangle  (const cairo_region_t *region,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -cairo_bool_t        cairo_region_equal                  (const cairo_region_t *a,
    -                                                         const cairo_region_t *b);
    -void                cairo_region_translate              (cairo_region_t *region,
    -                                                         int dx,
    -                                                         int dy);
    -cairo_status_t      cairo_region_intersect              (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -cairo_status_t      cairo_region_intersect_rectangle    (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -cairo_status_t      cairo_region_subtract               (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -cairo_status_t      cairo_region_subtract_rectangle     (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -cairo_status_t      cairo_region_union                  (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -cairo_status_t      cairo_region_union_rectangle        (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -cairo_status_t      cairo_region_xor                    (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -cairo_status_t      cairo_region_xor_rectangle          (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    typedefcairo_region_t
    enumcairo_region_overlap_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -Regions are a simple graphical data type representing an area of +

    Regions are a simple graphical data type representing an area of integer-aligned rectangles. They are often used on raster surfaces -to track areas of interest, such as change or clip areas. -

    +to track areas of interest, such as change or clip areas.

    -

    Details

    +

    Functions

    -

    cairo_region_t

    -
    typedef struct _cairo_region cairo_region_t;
    -
    -

    -A cairo_region_t represents a set of integer-aligned rectangles. -

    -

    -It allows set-theoretical operations like cairo_region_union() and -cairo_region_intersect() to be performed on them. -

    -

    -Memory management of cairo_region_t is done with -cairo_region_reference() and cairo_region_destroy(). -

    +

    cairo_region_create ()

    +
    cairo_region_t *
    +cairo_region_create (void);
    +

    Allocates a new empty region object.

    +
    +

    Returns

    +

    A newly allocated cairo_region_t. Free with +cairo_region_destroy(). This function always returns a +valid pointer; if memory cannot be allocated, then a special +error object is returned where all operations on the object do nothing. +You can check for this with cairo_region_status().

    +

    +

    Since 1.10


    -

    cairo_region_create ()

    -
    cairo_region_t *    cairo_region_create                 (void);
    -

    -Allocates a new empty region object. -

    -
    +

    cairo_region_create_rectangle ()

    +
    cairo_region_t *
    +cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle);
    +

    Allocates a new region object containing rectangle +.

    +
    +

    Parameters

    +
    --+++ - - + + +

    Returns :

    A newly allocated cairo_region_t. Free with -cairo_region_destroy(). This function always returns a -valid pointer; if memory cannot be allocated, then a special -error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status().

    rectangle

    a cairo_rectangle_int_t

     
    -

    Since 1.10

    -
    -
    -

    cairo_region_create_rectangle ()

    -
    cairo_region_t *    cairo_region_create_rectangle       (const cairo_rectangle_int_t *rectangle);
    -

    -Allocates a new region object containing rectangle. -

    -
    ---- - - - - - - - - - - -

    rectangle :

    a cairo_rectangle_int_t -

    Returns :

    A newly allocated cairo_region_t. Free with -cairo_region_destroy(). This function always returns a +
    +

    Returns

    +

    A newly allocated cairo_region_t. Free with +cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status().

    +You can check for this with cairo_region_status().

    +

    +

    Since 1.10


    -

    cairo_region_create_rectangles ()

    -
    cairo_region_t *    cairo_region_create_rectangles      (const cairo_rectangle_int_t *rects,
    -                                                         int count);
    -

    -Allocates a new region object containing the union of all given rects. -

    -
    +

    cairo_region_create_rectangles ()

    +
    cairo_region_t *
    +cairo_region_create_rectangles (const cairo_rectangle_int_t *rects,
    +                                int count);
    +

    Allocates a new region object containing the union of all given rects +.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    rects :

    an array of count rectangles

    count :

    number of rectangles

    rects

    an array of count +rectangles

     

    Returns :

    A newly allocated cairo_region_t. Free with -cairo_region_destroy(). This function always returns a -valid pointer; if memory cannot be allocated, then a special -error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status().

    count

    number of rectangles

     
    +
    +
    +

    Returns

    +

    A newly allocated cairo_region_t. Free with +cairo_region_destroy(). This function always returns a +valid pointer; if memory cannot be allocated, then a special +error object is returned where all operations on the object do nothing. +You can check for this with cairo_region_status().

    +

    +

    Since 1.10


    -

    cairo_region_copy ()

    -
    cairo_region_t *    cairo_region_copy                   (const cairo_region_t *original);
    -

    -Allocates a new region object copying the area from original. -

    -
    +

    cairo_region_copy ()

    +
    cairo_region_t *
    +cairo_region_copy (const cairo_region_t *original);
    +

    Allocates a new region object copying the area from original +.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - + + + + +

    original :

    a cairo_region_t -

    Returns :

    A newly allocated cairo_region_t. Free with -cairo_region_destroy(). This function always returns a +

    original

    a cairo_region_t

     
    +
    +
    +

    Returns

    +

    A newly allocated cairo_region_t. Free with +cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status(). - - -

    +You can check for this with cairo_region_status().

    +

    +

    Since 1.10


    -

    cairo_region_reference ()

    -
    cairo_region_t *    cairo_region_reference              (cairo_region_t *region);
    -

    -Increases the reference count on region by one. This prevents -region from being destroyed until a matching call to -cairo_region_destroy() is made. -

    -
    +

    cairo_region_reference ()

    +
    cairo_region_t *
    +cairo_region_reference (cairo_region_t *region);
    +

    Increases the reference count on region + by one. This prevents +region + from being destroyed until a matching call to +cairo_region_destroy() is made.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    region :

    a cairo_region_t -

    Returns :

    the referenced cairo_region_t.

    region

    a cairo_region_t

     
    +
    +
    +

    Returns

    +

    the referenced cairo_region_t.

    +

    +

    Since 1.10


    -

    cairo_region_destroy ()

    -
    void                cairo_region_destroy                (cairo_region_t *region);
    -

    -Destroys a cairo_region_t object created with -cairo_region_create(), cairo_region_copy(), or -or cairo_region_create_rectangle(). -

    -
    +

    cairo_region_destroy ()

    +
    void
    +cairo_region_destroy (cairo_region_t *region);
    +

    Destroys a cairo_region_t object created with +cairo_region_create(), cairo_region_copy(), or +or cairo_region_create_rectangle().

    +
    +

    Parameters

    +
    --+++ - - + + +

    region :

    a cairo_region_t -

    region

    a cairo_region_t

     
    +

    Since 1.10


    -

    cairo_region_status ()

    -
    cairo_status_t      cairo_region_status                 (const cairo_region_t *region);
    -

    -Checks whether an error has previous occurred for this -region object. -

    -
    ---+

    cairo_region_status ()

    +
    cairo_status_t
    +cairo_region_status (const cairo_region_t *region);
    +

    Checks whether an error has previous occurred for this +region object.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    region :

    a cairo_region_t -

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    region

    a cairo_region_t

     
    +
    +

    Since 1.10


    -

    cairo_region_get_extents ()

    -
    void                cairo_region_get_extents            (const cairo_region_t *region,
    -                                                         cairo_rectangle_int_t *extents);
    -

    -Gets the bounding rectangle of region as a cairo_rectangle_int_t -

    -
    +

    cairo_region_get_extents ()

    +
    void
    +cairo_region_get_extents (const cairo_region_t *region,
    +                          cairo_rectangle_int_t *extents);
    +

    Gets the bounding rectangle of region + as a cairo_rectangle_int_t

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    region :

    a cairo_region_t -

    region

    a cairo_region_t

     

    extents :

    rectangle into which to store the extents

    extents

    rectangle into which to store the extents

     
    +

    Since 1.10


    -

    cairo_region_num_rectangles ()

    -
    int                 cairo_region_num_rectangles         (const cairo_region_t *region);
    -

    -Returns the number of rectangles contained in region. -

    -
    +

    cairo_region_num_rectangles ()

    +
    int
    +cairo_region_num_rectangles (const cairo_region_t *region);
    +

    Returns the number of rectangles contained in region +.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    region :

    a cairo_region_t -

    Returns :

    The number of rectangles contained in region.

    region

    a cairo_region_t

     
    +
    +
    +

    Returns

    +

    The number of rectangles contained in region +.

    +

    +

    Since 1.10


    -

    cairo_region_get_rectangle ()

    -
    void                cairo_region_get_rectangle          (const cairo_region_t *region,
    -                                                         int nth,
    -                                                         cairo_rectangle_int_t *rectangle);
    -

    -Stores the nth rectangle from the region in rectangle. -

    -
    +

    cairo_region_get_rectangle ()

    +
    void
    +cairo_region_get_rectangle (const cairo_region_t *region,
    +                            int nth,
    +                            cairo_rectangle_int_t *rectangle);
    +

    Stores the nth + rectangle from the region in rectangle +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    region :

    a cairo_region_t -

    region

    a cairo_region_t

     

    nth :

    a number indicating which rectangle should be returned

    nth

    a number indicating which rectangle should be returned

     

    rectangle :

    return location for a cairo_rectangle_int_t -

    rectangle

    return location for a cairo_rectangle_int_t

     
    +

    Since 1.10


    -

    cairo_region_is_empty ()

    -
    cairo_bool_t        cairo_region_is_empty               (const cairo_region_t *region);
    -

    -Checks whether region is empty. -

    -
    +

    cairo_region_is_empty ()

    +
    cairo_bool_t
    +cairo_region_is_empty (const cairo_region_t *region);
    +

    Checks whether region + is empty.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    region :

    a cairo_region_t -

    Returns :

    -TRUE if region is empty, FALSE if it isn't.

    region

    a cairo_region_t

     
    +
    +
    +

    Returns

    +

    TRUE if region +is empty, FALSE if it isn't.

    +

    +

    Since 1.10


    -

    cairo_region_contains_point ()

    -
    cairo_bool_t        cairo_region_contains_point         (const cairo_region_t *region,
    -                                                         int x,
    -                                                         int y);
    -

    -Checks whether (x, y) is contained in region. -

    -
    +

    cairo_region_contains_point ()

    +
    cairo_bool_t
    +cairo_region_contains_point (const cairo_region_t *region,
    +                             int x,
    +                             int y);
    +

    Checks whether (x +, y +) is contained in region +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    region :

    a cairo_region_t -

    region

    a cairo_region_t

     

    x :

    the x coordinate of a point

    x

    the x coordinate of a point

     

    y :

    the y coordinate of a point

    Returns :

    -TRUE if (x, y) is contained in region, FALSE if it is not.

    y

    the y coordinate of a point

     
    +
    +
    +

    Returns

    +

    TRUE if (x +, y +) is contained in region +, FALSE if it is not.

    +

    +

    Since 1.10


    -

    enum cairo_region_overlap_t

    -
    typedef enum {
    -    CAIRO_REGION_OVERLAP_IN,		/* completely inside region */
    -    CAIRO_REGION_OVERLAP_OUT,		/* completely outside region */
    -    CAIRO_REGION_OVERLAP_PART		/* partly inside region */
    -} cairo_region_overlap_t;
    -
    -

    -Used as the return value for cairo_region_contains_rectangle(). +

    cairo_region_contains_rectangle ()

    +
    cairo_region_overlap_t
    +cairo_region_contains_rectangle (const cairo_region_t *region,
    +                                 const cairo_rectangle_int_t *rectangle);
    +

    Checks whether rectangle + is inside, outside or partially contained +in region

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    CAIRO_REGION_OVERLAP_IN

    The contents are entirely inside the region. (Since 1.10) -

    CAIRO_REGION_OVERLAP_OUT

    The contents are entirely outside the region. (Since 1.10) -

    region

    a cairo_region_t

     

    CAIRO_REGION_OVERLAP_PART

    The contents are partially inside and - partially outside the region. (Since 1.10) -

    rectangle

    a cairo_rectangle_int_t

     
    +
    +
    +

    Returns

    +

    CAIRO_REGION_OVERLAP_IN if rectangle +is entirely inside region +, +CAIRO_REGION_OVERLAP_OUT if rectangle +is entirely outside region +, or +CAIRO_REGION_OVERLAP_PART if rectangle +is partially inside and partially outside region +.

    +

    +

    Since 1.10


    -

    cairo_region_contains_rectangle ()

    -
    cairo_region_overlap_t cairo_region_contains_rectangle  (const cairo_region_t *region,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -

    -Checks whether rectangle is inside, outside or partially contained -in region -

    -
    +

    cairo_region_equal ()

    +
    cairo_bool_t
    +cairo_region_equal (const cairo_region_t *a,
    +                    const cairo_region_t *b);
    +

    Compares whether region_a is equivalent to region_b. NULL as an argument +is equal to itself, but not to any non-NULL region.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    region :

    a cairo_region_t -

    a

    a cairo_region_t or NULL

     

    rectangle :

    a cairo_rectangle_int_t -

    Returns :

    -CAIRO_REGION_OVERLAP_IN if rectangle is entirely inside region, -CAIRO_REGION_OVERLAP_OUT if rectangle is entirely outside region, or -CAIRO_REGION_OVERLAP_PART if rectangle is partially inside and partially outside region.

    b

    a cairo_region_t or NULL

     
    +
    +
    +

    Returns

    +

    TRUE if both regions contained the same coverage, +FALSE if it is not or any region is in an error status.

    +

    +

    Since 1.10


    -

    cairo_region_equal ()

    -
    cairo_bool_t        cairo_region_equal                  (const cairo_region_t *a,
    -                                                         const cairo_region_t *b);
    -

    -Compares whether region_a is equivalent to region_b. NULL as an argument -is equal to itself, but not to any non-NULL region. -

    -
    +

    cairo_region_translate ()

    +
    void
    +cairo_region_translate (cairo_region_t *region,
    +                        int dx,
    +                        int dy);
    +

    Translates region + by (dx +, dy +).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    a :

    a cairo_region_t or NULL -

    region

    a cairo_region_t

     

    b :

    a cairo_region_t or NULL -

    dx

    Amount to translate in the x direction

     

    Returns :

    -TRUE if both regions contained the same coverage, -FALSE if it is not or any region is in an error status.

    dy

    Amount to translate in the y direction

     
    +

    Since 1.10


    -

    cairo_region_translate ()

    -
    void                cairo_region_translate              (cairo_region_t *region,
    -                                                         int dx,
    -                                                         int dy);
    -

    -Translates region by (dx, dy). +

    cairo_region_intersect ()

    +
    cairo_status_t
    +cairo_region_intersect (cairo_region_t *dst,
    +                        const cairo_region_t *other);
    +

    Computes the intersection of dst + with other + and places the result in dst

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    region :

    a cairo_region_t -

    dx :

    Amount to translate in the x direction

    dst

    a cairo_region_t

     

    dy :

    Amount to translate in the y direction

    other

    another cairo_region_t

     
    +
    +

    Since 1.10


    -

    cairo_region_intersect ()

    -
    cairo_status_t      cairo_region_intersect              (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -

    -Computes the intersection of dst with other and places the result in dst +

    cairo_region_intersect_rectangle ()

    +
    cairo_status_t
    +cairo_region_intersect_rectangle (cairo_region_t *dst,
    +                                  const cairo_rectangle_int_t *rectangle);
    +

    Computes the intersection of dst + with rectangle + and places the +result in dst

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    other :

    another cairo_region_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    rectangle

    a cairo_rectangle_int_t

     
    +
    +

    Since 1.10


    -

    cairo_region_intersect_rectangle ()

    -
    cairo_status_t      cairo_region_intersect_rectangle    (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -

    -Computes the intersection of dst with rectangle and places the -result in dst +

    cairo_region_subtract ()

    +
    cairo_status_t
    +cairo_region_subtract (cairo_region_t *dst,
    +                       const cairo_region_t *other);
    +

    Subtracts other + from dst + and places the result in dst

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    rectangle :

    a cairo_rectangle_int_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    other

    another cairo_region_t

     
    +
    +

    Since 1.10


    -

    cairo_region_subtract ()

    -
    cairo_status_t      cairo_region_subtract               (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -

    -Subtracts other from dst and places the result in dst +

    cairo_region_subtract_rectangle ()

    +
    cairo_status_t
    +cairo_region_subtract_rectangle (cairo_region_t *dst,
    +                                 const cairo_rectangle_int_t *rectangle);
    +

    Subtracts rectangle + from dst + and places the result in dst

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    other :

    another cairo_region_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    rectangle

    a cairo_rectangle_int_t

     
    +
    +

    Since 1.10


    -

    cairo_region_subtract_rectangle ()

    -
    cairo_status_t      cairo_region_subtract_rectangle     (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -

    -Subtracts rectangle from dst and places the result in dst +

    cairo_region_union ()

    +
    cairo_status_t
    +cairo_region_union (cairo_region_t *dst,
    +                    const cairo_region_t *other);
    +

    Computes the union of dst + with other + and places the result in dst

    -
    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    rectangle :

    a cairo_rectangle_int_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    other

    another cairo_region_t

     
    +
    +

    Since 1.10


    -

    cairo_region_union ()

    -
    cairo_status_t      cairo_region_union                  (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -

    -Computes the union of dst with other and places the result in dst -

    -
    +

    cairo_region_union_rectangle ()

    +
    cairo_status_t
    +cairo_region_union_rectangle (cairo_region_t *dst,
    +                              const cairo_rectangle_int_t *rectangle);
    +

    Computes the union of dst + with rectangle + and places the result in dst +.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    other :

    another cairo_region_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    rectangle

    a cairo_rectangle_int_t

     
    +
    +

    Since 1.10


    -

    cairo_region_union_rectangle ()

    -
    cairo_status_t      cairo_region_union_rectangle        (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -

    -Computes the union of dst with rectangle and places the result in dst. -

    -
    +

    cairo_region_xor ()

    +
    cairo_status_t
    +cairo_region_xor (cairo_region_t *dst,
    +                  const cairo_region_t *other);
    +

    Computes the exclusive difference of dst + with other + and places the +result in dst +. That is, dst + will be set to contain all areas that +are either in dst + or in other +, but not in both.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    rectangle :

    a cairo_rectangle_int_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    other

    another cairo_region_t

     
    +
    +

    Since 1.10


    -

    cairo_region_xor ()

    -
    cairo_status_t      cairo_region_xor                    (cairo_region_t *dst,
    -                                                         const cairo_region_t *other);
    -

    -Computes the exclusive difference of dst with other and places the -result in dst. That is, dst will be set to contain all areas that -are either in dst or in other, but not in both. -

    -
    +

    cairo_region_xor_rectangle ()

    +
    cairo_status_t
    +cairo_region_xor_rectangle (cairo_region_t *dst,
    +                            const cairo_rectangle_int_t *rectangle);
    +

    Computes the exclusive difference of dst + with rectangle + and places the +result in dst +. That is, dst + will be set to contain all areas that are +either in dst + or in rectangle +, but not in both.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    dst :

    a cairo_region_t -

    other :

    another cairo_region_t -

    dst

    a cairo_region_t

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -

    rectangle

    a cairo_rectangle_int_t

     
    +
    + +

    Since 1.10

    + + +
    +

    Types and Values

    +
    +

    cairo_region_t

    +
    typedef struct _cairo_region cairo_region_t;
    +
    +

    A cairo_region_t represents a set of integer-aligned rectangles.

    +

    It allows set-theoretical operations like cairo_region_union() and +cairo_region_intersect() to be performed on them.

    +

    Memory management of cairo_region_t is done with +cairo_region_reference() and cairo_region_destroy().

    Since 1.10


    -

    cairo_region_xor_rectangle ()

    -
    cairo_status_t      cairo_region_xor_rectangle          (cairo_region_t *dst,
    -                                                         const cairo_rectangle_int_t *rectangle);
    -

    -Computes the exclusive difference of dst with rectangle and places the -result in dst. That is, dst will be set to contain all areas that are -either in dst or in rectangle, but not in both. -

    -
    +

    enum cairo_region_overlap_t

    +

    Used as the return value for cairo_region_contains_rectangle().

    +
    +

    Members

    +
    --+++ - - + + - - + + - - + +

    dst :

    a cairo_region_t +

    CAIRO_REGION_OVERLAP_IN

    +

    The contents are entirely inside the region. (Since 1.10)

     

    rectangle :

    a cairo_rectangle_int_t +

    CAIRO_REGION_OVERLAP_OUT

    +

    The contents are entirely outside the region. (Since 1.10)

     

    Returns :

    -CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY +

    CAIRO_REGION_OVERLAP_PART

    +

    The contents are partially inside and + partially outside the region. (Since 1.10)

     
    +

    Since 1.10

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Script-Surfaces.html cairo-1.14.2/doc/public/html/cairo-Script-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Script-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Script-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Script Surfaces +Cairo: A Vector Graphics Library: Script Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,355 +30,474 @@

    Script Surfaces

    Script Surfaces — Rendering to replayable scripts

    - +
    - -
    -

    Description

    -

    -The script surface provides the ability to render to a native -script that matches the cairo drawing model. The scripts can -be replayed using tools under the util/cairo-script directoriy, -or with cairo-perf-trace. -

    -
    -

    Details

    -
    -

    CAIRO_HAS_SCRIPT_SURFACE

    -
    #define CAIRO_HAS_SCRIPT_SURFACE 1
    -
    -

    -Defined if the script surface backend is available. -The script surface backend is always built in since 1.12. -

    -

    Since 1.12

    -
    -
    -
    -

    cairo_script_create ()

    -
    cairo_device_t *    cairo_script_create                 (const char *filename);
    -

    -Creates a output device for emitting the script, used when -creating the individual surfaces. -

    -
    +

    Functions

    +
    --++ - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +

    filename :

    the name (path) of the file to write the script to +cairo_device_t * + +cairo_script_create () +

    Returns :

    a pointer to the newly created device. The caller -owns the surface and should call cairo_device_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" device if an error such as out of memory -occurs. You can use cairo_device_status() to check for this. +cairo_device_t * + +cairo_script_create_for_stream () +
    +cairo_status_t + +cairo_script_from_recording_surface () +
    +cairo_script_mode_t + +cairo_script_get_mode () +
    +void + +cairo_script_set_mode () +
    +cairo_surface_t * + +cairo_script_surface_create () +
    +cairo_surface_t * + +cairo_script_surface_create_for_target () +
    +void + +cairo_script_write_comment () +
    -

    Since 1.12

    -
    -
    -

    cairo_script_create_for_stream ()

    -
    cairo_device_t *    cairo_script_create_for_stream      (cairo_write_func_t write_func,
    -                                                         void *closure);
    -

    -Creates a output device for emitting the script, used when -creating the individual surfaces. -

    -
    +
    +

    Types and Values

    +
    --++ - - - - - - + + - - + +

    write_func :

    callback function passed the bytes written to the script

    closure :

    user data to be passed to the callback#defineCAIRO_HAS_SCRIPT_SURFACE

    Returns :

    a pointer to the newly created device. The caller -owns the surface and should call cairo_device_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" device if an error such as out of memory -occurs. You can use cairo_device_status() to check for this.enumcairo_script_mode_t
    +
    +
    +

    Object Hierarchy

    +
    +
    +
    +
    +

    Description

    +

    The script surface provides the ability to render to a native +script that matches the cairo drawing model. The scripts can +be replayed using tools under the util/cairo-script directoriy, +or with cairo-perf-trace.

    +
    +
    +

    Functions

    +
    +

    cairo_script_create ()

    +
    cairo_device_t *
    +cairo_script_create (const char *filename);
    +

    Creates a output device for emitting the script, used when +creating the individual surfaces.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    filename

    the name (path) of the file to write the script to

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created device. The caller +owns the surface and should call cairo_device_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" device if an error such as out of memory +occurs. You can use cairo_device_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_script_from_recording_surface ()

    -
    cairo_status_t      cairo_script_from_recording_surface (cairo_device_t *script,
    -                                                         cairo_surface_t *recording_surface);
    -

    -Converts the record operations in recording_surface into a script. -

    -
    +

    cairo_script_create_for_stream ()

    +
    cairo_device_t *
    +cairo_script_create_for_stream (cairo_write_func_t write_func,
    +                                void *closure);
    +

    Creates a output device for emitting the script, used when +creating the individual surfaces.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + +

    script :

    the script (output device)

    recording_surface :

    the recording surface to replay

    write_func

    callback function passed the bytes written to the script

     

    Returns :

    -CAIRO_STATUS_SUCCESS on successful completion or an error code.

    closure

    user data to be passed to the callback

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created device. The caller +owns the surface and should call cairo_device_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" device if an error such as out of memory +occurs. You can use cairo_device_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_script_get_mode ()

    -
    cairo_script_mode_t cairo_script_get_mode               (cairo_device_t *script);
    -

    -Queries the script for its current output mode. -

    -
    +

    cairo_script_from_recording_surface ()

    +
    cairo_status_t
    +cairo_script_from_recording_surface (cairo_device_t *script,
    +                                     cairo_surface_t *recording_surface);
    +

    Converts the record operations in recording_surface + into a script.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    script :

    The script (output device) to query

    script

    the script (output device)

     

    Returns :

    the current output mode of the script

    recording_surface

    the recording surface to replay

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS on successful completion or an error code.

    +

    +

    Since 1.12


    -

    enum cairo_script_mode_t

    -
    typedef enum {
    -    CAIRO_SCRIPT_MODE_ASCII,
    -    CAIRO_SCRIPT_MODE_BINARY
    -} cairo_script_mode_t;
    -
    -

    -A set of script output variants. -

    -
    +

    cairo_script_get_mode ()

    +
    cairo_script_mode_t
    +cairo_script_get_mode (cairo_device_t *script);
    +

    Queries the script for its current output mode.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    CAIRO_SCRIPT_MODE_ASCII

    the output will be in readable text (default). (Since 1.12) -

    CAIRO_SCRIPT_MODE_BINARY

    the output will use byte codes. (Since 1.12) -

    script

    The script (output device) to query

     
    +
    +
    +

    Returns

    +

    the current output mode of the script

    +

    +

    Since 1.12


    -

    cairo_script_set_mode ()

    -
    void                cairo_script_set_mode               (cairo_device_t *script,
    -                                                         cairo_script_mode_t mode);
    -

    -Change the output mode of the script -

    -
    +

    cairo_script_set_mode ()

    +
    void
    +cairo_script_set_mode (cairo_device_t *script,
    +                       cairo_script_mode_t mode);
    +

    Change the output mode of the script

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    script :

    The script (output device)

    script

    The script (output device)

     

    mode :

    the new mode

    mode

    the new mode

     
    +

    Since 1.12


    -

    cairo_script_surface_create ()

    -
    cairo_surface_t *   cairo_script_surface_create         (cairo_device_t *script,
    -                                                         cairo_content_t content,
    -                                                         double width,
    -                                                         double height);
    -

    -Create a new surface that will emit its rendering through script -

    -
    +

    cairo_script_surface_create ()

    +
    cairo_surface_t *
    +cairo_script_surface_create (cairo_device_t *script,
    +                             cairo_content_t content,
    +                             double width,
    +                             double height);
    +

    Create a new surface that will emit its rendering through script +

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - - +

    script :

    the script (output device)

    script

    the script (output device)

     

    content :

    the content of the surface

    content

    the content of the surface

     

    width :

    width in pixels

    width

    width in pixels

     

    height :

    height in pixels

    height

    height in pixels

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. +occurs. You can use cairo_surface_status() to check for this.

    +

    +
    +

    Since 1.12

    + +
    +
    +

    cairo_script_surface_create_for_target ()

    +
    cairo_surface_t *
    +cairo_script_surface_create_for_target
    +                               (cairo_device_t *script,
    +                                cairo_surface_t *target);
    +

    Create a pxoy surface that will render to target + and record +the operations to device +.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + +

    script

    the script (output device)

     

    target

    a target surface to wrap

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_script_surface_create_for_target ()

    -
    cairo_surface_t *   cairo_script_surface_create_for_target
    -                                                        (cairo_device_t *script,
    -                                                         cairo_surface_t *target);
    -

    -Create a pxoy surface that will render to target and record -the operations to device. -

    -
    +

    cairo_script_write_comment ()

    +
    void
    +cairo_script_write_comment (cairo_device_t *script,
    +                            const char *comment,
    +                            int len);
    +

    Emit a string verbatim into the script.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    script :

    the script (output device)

    script

    the script (output device)

     

    target :

    a target surface to wrap

    comment

    the string to emit

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    len

    the length of the sting to write, or -1 to use strlen()

     
    +
    +

    Since 1.12

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_SCRIPT_SURFACE

    +
    #define CAIRO_HAS_SCRIPT_SURFACE 1
    +
    +

    Defined if the script surface backend is available. +The script surface backend is always built in since 1.12.

    Since 1.12


    -

    cairo_script_write_comment ()

    -
    void                cairo_script_write_comment          (cairo_device_t *script,
    -                                                         const char *comment,
    -                                                         int len);
    -

    -Emit a string verbatim into the script. -

    -
    +

    enum cairo_script_mode_t

    +

    A set of script output variants.

    +
    +

    Members

    +
    --+++ - - - - - - + + + - - + +

    script :

    the script (output device)

    comment :

    the string to emit

    CAIRO_SCRIPT_MODE_ASCII

    +

    the output will be in readable text (default). (Since 1.12)

    +
     

    len :

    the length of the sting to write, or -1 to use strlen() +

    CAIRO_SCRIPT_MODE_BINARY

    +

    the output will use byte codes. (Since 1.12)

     
    +

    Since 1.12

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-support.html cairo-1.14.2/doc/public/html/cairo-support.html --- cairo-1.13.0~20140204/doc/public/html/cairo-support.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-support.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Utilities +Cairo: A Vector Graphics Library: Utilities - + - - - - - - + + + + + +

    @@ -39,6 +39,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-surfaces.html cairo-1.14.2/doc/public/html/cairo-surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Surfaces +Cairo: A Vector Graphics Library: Surfaces - + - - - - - - + + + + + +

    @@ -69,6 +69,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-SVG-Surfaces.html cairo-1.14.2/doc/public/html/cairo-SVG-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-SVG-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-SVG-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -SVG Surfaces +Cairo: A Vector Graphics Library: SVG Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,288 +30,368 @@

    SVG Surfaces

    SVG Surfaces — Rendering SVG documents

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_SVG_SURFACE
    -cairo_surface_t *   cairo_svg_surface_create            (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -cairo_surface_t *   cairo_svg_surface_create_for_stream (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -void                cairo_svg_surface_restrict_to_version
    -                                                        (cairo_surface_t *surface,
    -                                                         cairo_svg_version_t version);
    -enum                cairo_svg_version_t;
    -void                cairo_svg_get_versions              (cairo_svg_version_t const **versions,
    -                                                         int *num_versions);
    -const char *        cairo_svg_version_to_string         (cairo_svg_version_t version);
    -
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_surface_t * + +cairo_svg_surface_create () +
    +cairo_surface_t * + +cairo_svg_surface_create_for_stream () +
    +void + +cairo_svg_surface_restrict_to_version () +
    +void + +cairo_svg_get_versions () +
    const char * + +cairo_svg_version_to_string () +
    -

    Description

    -

    -The SVG surface is used to render cairo graphics to -SVG files and is a multi-page vector surface backend. -

    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    #defineCAIRO_HAS_SVG_SURFACE
    enumcairo_svg_version_t
    -

    Details

    -
    -

    CAIRO_HAS_SVG_SURFACE

    -
    #define CAIRO_HAS_SVG_SURFACE 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the SVG surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.2

    -
    +
    +

    Description

    +

    The SVG surface is used to render cairo graphics to +SVG files and is a multi-page vector surface backend.

    +
    +
    +

    Functions

    -

    cairo_svg_surface_create ()

    -
    cairo_surface_t *   cairo_svg_surface_create            (const char *filename,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a SVG surface of the specified size in points to be written -to filename. -

    -

    -The SVG surface backend recognizes the following MIME types for the -data attached to a surface (see cairo_surface_set_mime_data()) when +

    cairo_svg_surface_create ()

    +
    cairo_surface_t *
    +cairo_svg_surface_create (const char *filename,
    +                          double width_in_points,
    +                          double height_in_points);
    +

    Creates a SVG surface of the specified size in points to be written +to filename +.

    +

    The SVG surface backend recognizes the following MIME types for the +data attached to a surface (see cairo_surface_set_mime_data()) when it is used as a source pattern for drawing on this surface: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_URI. If any of them is specified, the SVG backend emits a href with the content of MIME data instead of a surface -snapshot (PNG, Base64-encoded) in the corresponding image tag. -

    -

    -The unofficial MIME type CAIRO_MIME_TYPE_URI is examined +snapshot (PNG, Base64-encoded) in the corresponding image tag.

    +

    The unofficial MIME type CAIRO_MIME_TYPE_URI is examined first. If present, the URI is emitted as is: assuring the -correctness of URI is left to the client code. -

    -

    -If CAIRO_MIME_TYPE_URI is not present, but CAIRO_MIME_TYPE_JPEG +correctness of URI is left to the client code.

    +

    If CAIRO_MIME_TYPE_URI is not present, but CAIRO_MIME_TYPE_JPEG or CAIRO_MIME_TYPE_PNG is specified, the corresponding data is -Base64-encoded and emitted. -

    -
    +Base64-encoded and emitted.

    +
    +

    Parameters

    +
    --+++ - - + +temporary file.

    + - - + + + - - - - - - + + +

    filename :

    a filename for the SVG output (must be writable), NULL may be +

    filename

    a filename for the SVG output (must be writable), NULL may be used to specify no output. This will generate a SVG surface that may be queried and used as a source, without generating a -temporary file.

     

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch)

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch)

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.2


    -

    cairo_svg_surface_create_for_stream ()

    -
    cairo_surface_t *   cairo_svg_surface_create_for_stream (cairo_write_func_t write_func,
    -                                                         void *closure,
    -                                                         double width_in_points,
    -                                                         double height_in_points);
    -

    -Creates a SVG surface of the specified size in points to be written -incrementally to the stream represented by write_func and closure. -

    -
    +

    cairo_svg_surface_create_for_stream ()

    +
    cairo_surface_t *
    +cairo_svg_surface_create_for_stream (cairo_write_func_t write_func,
    +                                     void *closure,
    +                                     double width_in_points,
    +                                     double height_in_points);
    +

    Creates a SVG surface of the specified size in points to be written +incrementally to the stream represented by write_func + and closure +.

    +
    +

    Parameters

    +
    --+++ - - + - - - - +generating any temporary files.

    + - - + + + - - + + + - - + + +

    write_func :

    a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, +

    write_func

    a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, the surface may be queried or used as a source without -generating any temporary files.

    closure :

    the closure argument for write_func - 

    width_in_points :

    width of the surface, in points (1 point == 1/72.0 inch)

    closure

    the closure argument for write_func +

     

    height_in_points :

    height of the surface, in points (1 point == 1/72.0 inch)

    width_in_points

    width of the surface, in points (1 point == 1/72.0 inch)

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height_in_points

    height of the surface, in points (1 point == 1/72.0 inch)

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.2


    -

    cairo_svg_surface_restrict_to_version ()

    -
    void                cairo_svg_surface_restrict_to_version
    -                                                        (cairo_surface_t *surface,
    -                                                         cairo_svg_version_t version);
    -

    -Restricts the generated SVG file to version. See cairo_svg_get_versions() -for a list of available version values that can be used here. -

    -

    -This function should only be called before any drawing operations +

    cairo_svg_surface_restrict_to_version ()

    +
    void
    +cairo_svg_surface_restrict_to_version (cairo_surface_t *surface,
    +                                       cairo_svg_version_t version);
    +

    Restricts the generated SVG file to version +. See cairo_svg_get_versions() +for a list of available version values that can be used here.

    +

    This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the -surface. -

    -
    +surface.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    surface :

    a SVG cairo_surface_t -

    surface

    a SVG cairo_surface_t

     

    version :

    SVG version

    version

    SVG version

     
    +

    Since 1.2


    -

    enum cairo_svg_version_t

    -
    typedef enum {
    -    CAIRO_SVG_VERSION_1_1,
    -    CAIRO_SVG_VERSION_1_2
    -} cairo_svg_version_t;
    -
    -

    -cairo_svg_version_t is used to describe the version number of the SVG -specification that a generated SVG file will conform to. -

    -
    +

    cairo_svg_get_versions ()

    +
    void
    +cairo_svg_get_versions (cairo_svg_version_t const **versions,
    +                        int *num_versions);
    +

    Used to retrieve the list of supported versions. See +cairo_svg_surface_restrict_to_version().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    CAIRO_SVG_VERSION_1_1

    The version 1.1 of the SVG specification. (Since 1.2) -

    versions

    supported version list

     

    CAIRO_SVG_VERSION_1_2

    The version 1.2 of the SVG specification. (Since 1.2) -

    num_versions

    list length

     
    +

    Since 1.2


    -

    cairo_svg_get_versions ()

    -
    void                cairo_svg_get_versions              (cairo_svg_version_t const **versions,
    -                                                         int *num_versions);
    -

    -Used to retrieve the list of supported versions. See -cairo_svg_surface_restrict_to_version(). -

    -
    +

    cairo_svg_version_to_string ()

    +
    const char *
    +cairo_svg_version_to_string (cairo_svg_version_t version);
    +

    Get the string representation of the given version + id. This function +will return NULL if version + isn't valid. See cairo_svg_get_versions() +for a way to get the list of valid version ids.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    versions :

    supported version list

    num_versions :

    list length

    version

    a version id

     
    +
    +
    +

    Returns

    +

    the string associated to given version.

    +

    +
    +

    Since 1.2

    +
    +
    +
    +

    Types and Values

    +
    +

    CAIRO_HAS_SVG_SURFACE

    +
    #define CAIRO_HAS_SVG_SURFACE 1
    +
    +

    Defined if the SVG surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    Since 1.2


    -

    cairo_svg_version_to_string ()

    -
    const char *        cairo_svg_version_to_string         (cairo_svg_version_t version);
    -

    -Get the string representation of the given version id. This function -will return NULL if version isn't valid. See cairo_svg_get_versions() -for a way to get the list of valid version ids. -

    -
    +

    enum cairo_svg_version_t

    +

    cairo_svg_version_t is used to describe the version number of the SVG +specification that a generated SVG file will conform to.

    +
    +

    Members

    +
    --+++ - - + + + - - + + +

    version :

    a version id

    CAIRO_SVG_VERSION_1_1

    +

    The version 1.1 of the SVG specification. (Since 1.2)

    +
     

    Returns :

    the string associated to given version.

    CAIRO_SVG_VERSION_1_2

    +

    The version 1.2 of the SVG specification. (Since 1.2)

    +
     
    +

    Since 1.2

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-text.html cairo-1.14.2/doc/public/html/cairo-text.html --- cairo-1.13.0~20140204/doc/public/html/cairo-text.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-text.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -text +Cairo: A Vector Graphics Library: text - + - - - - - - - - - - + + + + + + +
    @@ -33,1193 +30,1466 @@

    text

    text — Rendering text and glyphs

    - +
    -
    -

    Synopsis

    -
                        cairo_glyph_t;
    -enum                cairo_font_slant_t;
    -enum                cairo_font_weight_t;
    -                    cairo_text_cluster_t;
    -enum                cairo_text_cluster_flags_t;
    -void                cairo_select_font_face              (cairo_t *cr,
    -                                                         const char *family,
    -                                                         cairo_font_slant_t slant,
    -                                                         cairo_font_weight_t weight);
    -void                cairo_set_font_size                 (cairo_t *cr,
    -                                                         double size);
    -void                cairo_set_font_matrix               (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -void                cairo_get_font_matrix               (cairo_t *cr,
    -                                                         cairo_matrix_t *matrix);
    -void                cairo_set_font_options              (cairo_t *cr,
    -                                                         const cairo_font_options_t *options);
    -void                cairo_get_font_options              (cairo_t *cr,
    -                                                         cairo_font_options_t *options);
    -void                cairo_set_font_face                 (cairo_t *cr,
    -                                                         cairo_font_face_t *font_face);
    -cairo_font_face_t * cairo_get_font_face                 (cairo_t *cr);
    -void                cairo_set_scaled_font               (cairo_t *cr,
    -                                                         const cairo_scaled_font_t *scaled_font);
    -cairo_scaled_font_t * cairo_get_scaled_font             (cairo_t *cr);
    -void                cairo_show_text                     (cairo_t *cr,
    -                                                         const char *utf8);
    -void                cairo_show_glyphs                   (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs);
    -void                cairo_show_text_glyphs              (cairo_t *cr,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         const cairo_text_cluster_t *clusters,
    -                                                         int num_clusters,
    -                                                         cairo_text_cluster_flags_t cluster_flags);
    -void                cairo_font_extents                  (cairo_t *cr,
    -                                                         cairo_font_extents_t *extents);
    -void                cairo_text_extents                  (cairo_t *cr,
    -                                                         const char *utf8,
    -                                                         cairo_text_extents_t *extents);
    -void                cairo_glyph_extents                 (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         cairo_text_extents_t *extents);
    -cairo_font_face_t * cairo_toy_font_face_create          (const char *family,
    -                                                         cairo_font_slant_t slant,
    -                                                         cairo_font_weight_t weight);
    -const char *        cairo_toy_font_face_get_family      (cairo_font_face_t *font_face);
    -cairo_font_slant_t  cairo_toy_font_face_get_slant       (cairo_font_face_t *font_face);
    -cairo_font_weight_t cairo_toy_font_face_get_weight      (cairo_font_face_t *font_face);
    -cairo_glyph_t *     cairo_glyph_allocate                (int num_glyphs);
    -void                cairo_glyph_free                    (cairo_glyph_t *glyphs);
    -cairo_text_cluster_t * cairo_text_cluster_allocate      (int num_clusters);
    -void                cairo_text_cluster_free             (cairo_text_cluster_t *clusters);
    -
    -
    -
    -

    Description

    -

    -The functions with text in their name form cairo's -toy text API. The toy API takes UTF-8 encoded -text and is limited in its functionality to rendering simple -left-to-right text with no advanced features. That means for example -that most complex scripts like Hebrew, Arabic, and Indic scripts are -out of question. No kerning or correct positioning of diacritical marks -either. The font selection is pretty limited too and doesn't handle the -case that the selected font does not cover the characters in the text. -This set of functions are really that, a toy text API, for testing and -demonstration purposes. Any serious application should avoid them. -

    -

    -The functions with glyphs in their name form cairo's -low-level text API. The low-level API relies on -the user to convert text to a set of glyph indexes and positions. This -is a very hard problem and is best handled by external libraries, like -the pangocairo that is part of the Pango text layout and rendering library. -Pango is available from http://www.pango.org/. -

    -
    -

    Details

    -
    -

    cairo_glyph_t

    -
    typedef struct {
    -    unsigned long        index;
    -    double               x;
    -    double               y;
    -} cairo_glyph_t;
    -
    -

    -The cairo_glyph_t structure holds information about a single glyph -when drawing or measuring text. A font is (in simple terms) a -collection of shapes used to draw text. A glyph is one of these -shapes. There can be multiple glyphs for a single character -(alternates to be used in different contexts, for example), or a -glyph can be a ligature of multiple -characters. Cairo doesn't expose any way of converting input text -into glyphs, so in order to use the Cairo interfaces that take -arrays of glyphs, you must directly access the appropriate -underlying font system. -

    -

    -Note that the offsets given by x and y are not cumulative. When -drawing or measuring text, each glyph is individually positioned -with respect to the overall origin -

    -
    +

    Functions

    +
    --++ - - + + - - + + - - + + - -

    unsigned long index;

    glyph index in the font. The exact interpretation of the -glyph index depends on the font technology being used. +void + +cairo_select_font_face () +

    double x;

    the offset in the X direction between the origin used for -drawing or measuring the string and the origin of this glyph. +void + +cairo_set_font_size () +

    double y;

    the offset in the Y direction between the origin used for -drawing or measuring the string and the origin of this glyph. +void + +cairo_set_font_matrix () +
    -

    Since 1.0

    -
    -
    -
    -

    enum cairo_font_slant_t

    -
    typedef enum {
    -    CAIRO_FONT_SLANT_NORMAL,
    -    CAIRO_FONT_SLANT_ITALIC,
    -    CAIRO_FONT_SLANT_OBLIQUE
    -} cairo_font_slant_t;
    -
    -

    -Specifies variants of a font face based on their slant. -

    -
    ---- - - - + - - + - - + - -

    CAIRO_FONT_SLANT_NORMAL

    Upright font style, since 1.0 + +void + +cairo_get_font_matrix ()

    CAIRO_FONT_SLANT_ITALIC

    Italic font style, since 1.0 + +void + +cairo_set_font_options ()

    CAIRO_FONT_SLANT_OBLIQUE

    Oblique font style, since 1.0 + +void + +cairo_get_font_options ()
    -

    Since 1.0

    -
    -
    -
    -

    enum cairo_font_weight_t

    -
    typedef enum {
    -    CAIRO_FONT_WEIGHT_NORMAL,
    -    CAIRO_FONT_WEIGHT_BOLD
    -} cairo_font_weight_t;
    -
    -

    -Specifies variants of a font face based on their weight. -

    -
    ---- - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    CAIRO_FONT_WEIGHT_NORMAL

    Normal font weight, since 1.0 + +void + +cairo_set_font_face ()

    CAIRO_FONT_WEIGHT_BOLD

    Bold font weight, since 1.0 + +cairo_font_face_t * + +cairo_get_font_face () +
    +void + +cairo_set_scaled_font () +
    +cairo_scaled_font_t * + +cairo_get_scaled_font () +
    +void + +cairo_show_text () +
    +void + +cairo_show_glyphs () +
    +void + +cairo_show_text_glyphs () +
    +void + +cairo_font_extents () +
    +void + +cairo_text_extents () +
    +void + +cairo_glyph_extents () +
    +cairo_font_face_t * + +cairo_toy_font_face_create () +
    const char * + +cairo_toy_font_face_get_family () +
    +cairo_font_slant_t + +cairo_toy_font_face_get_slant () +
    +cairo_font_weight_t + +cairo_toy_font_face_get_weight () +
    +cairo_glyph_t * + +cairo_glyph_allocate () +
    +void + +cairo_glyph_free () +
    +cairo_text_cluster_t * + +cairo_text_cluster_allocate () +
    +void + +cairo_text_cluster_free ()
    -

    Since 1.0

    -
    -
    -

    cairo_text_cluster_t

    -
    typedef struct {
    -    int        num_bytes;
    -    int        num_glyphs;
    -} cairo_text_cluster_t;
    -
    -

    -The cairo_text_cluster_t structure holds information about a single -text cluster. A text cluster is a minimal -mapping of some glyphs corresponding to some UTF-8 text. -

    -

    -For a cluster to be valid, both num_bytes and num_glyphs should -be non-negative, and at least one should be non-zero. -Note that clusters with zero glyphs are not as well supported as -normal clusters. For example, PDF rendering applications typically -ignore those clusters when PDF text is being selected. -

    -

    -See cairo_show_text_glyphs() for how clusters are used in advanced -text operations. -

    -
    +
    +

    Types and Values

    +
    --++ - - + + + + + + - - + + + + + + + + + +

    int num_bytes;

    the number of bytes of UTF-8 text covered by cluster cairo_glyph_t
    enumcairo_font_slant_t

    int num_glyphs;

    the number of glyphs covered by clusterenumcairo_font_weight_t
     cairo_text_cluster_t
    enumcairo_text_cluster_flags_t
    -

    Since 1.8

    -
    -
    -

    enum cairo_text_cluster_flags_t

    -
    typedef enum {
    -    CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001
    -} cairo_text_cluster_flags_t;
    +
    +

    Object Hierarchy

    +
     
    -

    -Specifies properties of a text cluster mapping. -

    -
    ---- - - - - -

    CAIRO_TEXT_CLUSTER_FLAG_BACKWARD

    The clusters in the cluster array -map to glyphs in the glyph array from end to start. (Since 1.8) -
    -

    Since 1.8

    -
    +
    +

    Description

    +

    The functions with text in their name form cairo's +toy text API. The toy API takes UTF-8 encoded +text and is limited in its functionality to rendering simple +left-to-right text with no advanced features. That means for example +that most complex scripts like Hebrew, Arabic, and Indic scripts are +out of question. No kerning or correct positioning of diacritical marks +either. The font selection is pretty limited too and doesn't handle the +case that the selected font does not cover the characters in the text. +This set of functions are really that, a toy text API, for testing and +demonstration purposes. Any serious application should avoid them.

    +

    The functions with glyphs in their name form cairo's +low-level text API. The low-level API relies on +the user to convert text to a set of glyph indexes and positions. This +is a very hard problem and is best handled by external libraries, like +the pangocairo that is part of the Pango text layout and rendering library. +Pango is available from http://www.pango.org/.

    +
    +
    +

    Functions

    -

    cairo_select_font_face ()

    -
    void                cairo_select_font_face              (cairo_t *cr,
    -                                                         const char *family,
    -                                                         cairo_font_slant_t slant,
    -                                                         cairo_font_weight_t weight);
    -

    -Note: The cairo_select_font_face() function call is part of what +

    cairo_select_font_face ()

    +
    void
    +cairo_select_font_face (cairo_t *cr,
    +                        const char *family,
    +                        cairo_font_slant_t slant,
    +                        cairo_font_weight_t weight);
    +

    Note: The cairo_select_font_face() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be -adequate for serious text-using applications. -

    -

    -Selects a family and style of font from a simplified description as +adequate for serious text-using applications.

    +

    Selects a family and style of font from a simplified description as a family name, slant and weight. Cairo provides no operation to list available family names on the system (this is a "toy", remember), but the standard CSS2 generic family names, ("serif", "sans-serif", "cursive", "fantasy", "monospace"), are likely to -work as expected. -

    -

    -If family starts with the string "cairo:", or if no native font +work as expected.

    +

    If family + starts with the string "cairo +:", or if no native font backends are compiled in, cairo will use an internal font family. The internal font family recognizes many modifiers in the family + string, most notably, it recognizes the string "monospace". That is, -the family name "cairo:monospace" will use the monospace version of -the internal font family. -

    -

    -For "real" font selection, see the font-backend-specific +the family name "cairo +:monospace" will use the monospace version of +the internal font family.

    +

    For "real" font selection, see the font-backend-specific font_face_create functions for the font backend you are using. (For example, if you are using the freetype-based cairo-ft font backend, -see cairo_ft_font_face_create_for_ft_face() or -cairo_ft_font_face_create_for_pattern().) The resulting font face -could then be used with cairo_scaled_font_create() and -cairo_set_scaled_font(). -

    -

    -Similarly, when using the "real" font support, you can call +see cairo_ft_font_face_create_for_ft_face() or +cairo_ft_font_face_create_for_pattern().) The resulting font face +could then be used with cairo_scaled_font_create() and +cairo_set_scaled_font().

    +

    Similarly, when using the "real" font support, you can call directly into the underlying font system, (such as fontconfig or -freetype), for operations such as listing available fonts, etc. -

    -

    -It is expected that most applications will need to use a more +freetype), for operations such as listing available fonts, etc.

    +

    It is expected that most applications will need to use a more comprehensive font handling and text layout library, (for example, -pango), in conjunction with cairo. -

    -

    -If text is drawn without a call to cairo_select_font_face(), (nor -cairo_set_font_face() nor cairo_set_scaled_font()), the default +pango), in conjunction with cairo.

    +

    If text is drawn without a call to cairo_select_font_face(), (nor +cairo_set_font_face() nor cairo_set_scaled_font()), the default family is platform-specific, but is essentially "sans-serif". Default slant is CAIRO_FONT_SLANT_NORMAL, and default weight is -CAIRO_FONT_WEIGHT_NORMAL. -

    -

    -This function is equivalent to a call to cairo_toy_font_face_create() -followed by cairo_set_font_face(). -

    -
    +CAIRO_FONT_WEIGHT_NORMAL.

    +

    This function is equivalent to a call to cairo_toy_font_face_create() +followed by cairo_set_font_face().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    family :

    a font family name, encoded in UTF-8

    family

    a font family name, encoded in UTF-8

     

    slant :

    the slant for the font

    slant

    the slant for the font

     

    weight :

    the weight for the font

    weight

    the weight for the font

     
    +

    Since 1.0


    -

    cairo_set_font_size ()

    -
    void                cairo_set_font_size                 (cairo_t *cr,
    -                                                         double size);
    -

    -Sets the current font matrix to a scale by a factor of size, replacing -any font matrix previously set with cairo_set_font_size() or -cairo_set_font_matrix(). This results in a font size of size user space +

    cairo_set_font_size ()

    +
    void
    +cairo_set_font_size (cairo_t *cr,
    +                     double size);
    +

    Sets the current font matrix to a scale by a factor of size +, replacing +any font matrix previously set with cairo_set_font_size() or +cairo_set_font_matrix(). This results in a font size of size + user space units. (More precisely, this matrix will result in the font's -em-square being a size by size square in user space.) -

    -

    -If text is drawn without a call to cairo_set_font_size(), (nor -cairo_set_font_matrix() nor cairo_set_scaled_font()), the default -font size is 10.0. -

    -
    ---+em-square being a size + by size + square in user space.)

    +

    If text is drawn without a call to cairo_set_font_size(), (nor +cairo_set_font_matrix() nor cairo_set_scaled_font()), the default +font size is 10.0.

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    cr :

    a cairo_t -

    size :

    the new font size, in user space units

    cr

    a cairo_t

     

    size

    the new font size, in user space units

     
    +

    Since 1.0


    -

    cairo_set_font_matrix ()

    -
    void                cairo_set_font_matrix               (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -

    -Sets the current font matrix to matrix. The font matrix gives a +

    cairo_set_font_matrix ()

    +
    void
    +cairo_set_font_matrix (cairo_t *cr,
    +                       const cairo_matrix_t *matrix);
    +

    Sets the current font matrix to matrix +. The font matrix gives a transformation from the design space of the font (in this space, the em-square is 1 unit by 1 unit) to user space. Normally, a -simple scale is used (see cairo_set_font_size()), but a more +simple scale is used (see cairo_set_font_size()), but a more complex font matrix can be used to shear the font -or stretch it unequally along the two axes -

    -
    +or stretch it unequally along the two axes

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    matrix :

    a cairo_matrix_t describing a transform to be applied to -the current font.

    matrix

    a cairo_matrix_t describing a transform to be applied to +the current font.

     
    +

    Since 1.0


    -

    cairo_get_font_matrix ()

    -
    void                cairo_get_font_matrix               (cairo_t *cr,
    -                                                         cairo_matrix_t *matrix);
    -

    -Stores the current font matrix into matrix. See -cairo_set_font_matrix(). -

    -
    ---+

    cairo_get_font_matrix ()

    +
    void
    +cairo_get_font_matrix (cairo_t *cr,
    +                       cairo_matrix_t *matrix);
    +

    Stores the current font matrix into matrix +. See +cairo_set_font_matrix().

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    cr :

    a cairo_t -

    matrix :

    return value for the matrix

    cr

    a cairo_t

     

    matrix

    return value for the matrix

     
    +

    Since 1.0


    -

    cairo_set_font_options ()

    -
    void                cairo_set_font_options              (cairo_t *cr,
    -                                                         const cairo_font_options_t *options);
    -

    -Sets a set of custom font rendering options for the cairo_t. +

    cairo_set_font_options ()

    +
    void
    +cairo_set_font_options (cairo_t *cr,
    +                        const cairo_font_options_t *options);
    +

    Sets a set of custom font rendering options for the cairo_t. Rendering options are derived by merging these options with the options derived from underlying surface; if the value in options + has a default value (like CAIRO_ANTIALIAS_DEFAULT), then the value -from the surface is used. -

    -
    +from the surface is used.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    options :

    font options to use

    options

    font options to use

     
    +

    Since 1.0


    -

    cairo_get_font_options ()

    -
    void                cairo_get_font_options              (cairo_t *cr,
    -                                                         cairo_font_options_t *options);
    -

    -Retrieves font rendering options set via cairo_set_font_options. +

    cairo_get_font_options ()

    +
    void
    +cairo_get_font_options (cairo_t *cr,
    +                        cairo_font_options_t *options);
    +

    Retrieves font rendering options set via cairo_set_font_options. Note that the returned options do not include any options derived from the underlying surface; they are literally the options -passed to cairo_set_font_options(). -

    -
    +passed to cairo_set_font_options().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    options :

    a cairo_font_options_t object into which to store -the retrieved options. All existing values are overwritten

    options

    a cairo_font_options_t object into which to store +the retrieved options. All existing values are overwritten

     
    +

    Since 1.0


    -

    cairo_set_font_face ()

    -
    void                cairo_set_font_face                 (cairo_t *cr,
    -                                                         cairo_font_face_t *font_face);
    -

    -Replaces the current cairo_font_face_t object in the cairo_t with -font_face. The replaced font face in the cairo_t will be -destroyed if there are no other references to it. -

    -
    ---+

    cairo_set_font_face ()

    +
    void
    +cairo_set_font_face (cairo_t *cr,
    +                     cairo_font_face_t *font_face);
    +

    Replaces the current cairo_font_face_t object in the cairo_t with +font_face +. The replaced font face in the cairo_t will be +destroyed if there are no other references to it.

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    cr :

    a cairo_t -

    font_face :

    a cairo_font_face_t, or NULL to restore to the default font

    cr

    a cairo_t

     

    font_face

    a cairo_font_face_t, or NULL to restore to the default font

     
    +

    Since 1.0


    -

    cairo_get_font_face ()

    -
    cairo_font_face_t * cairo_get_font_face                 (cairo_t *cr);
    -

    -Gets the current font face for a cairo_t. -

    -
    ---+

    cairo_get_font_face ()

    +
    cairo_font_face_t *
    +cairo_get_font_face (cairo_t *cr);
    +

    Gets the current font face for a cairo_t.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - + + + + +

    cr :

    a cairo_t -

    Returns :

    the current font face. This object is owned by +

    cr

    a cairo_t

     
    +
    +
    +

    Returns

    +

    the current font face. This object is owned by cairo. To keep a reference to it, you must call -cairo_font_face_reference(). -This function never returns NULL. If memory cannot be allocated, a +cairo_font_face_reference().

    +

    This function never returns NULL. If memory cannot be allocated, a special "nil" cairo_font_face_t object will be returned on which -cairo_font_face_status() returns CAIRO_STATUS_NO_MEMORY. Using +cairo_font_face_status() returns CAIRO_STATUS_NO_MEMORY. Using this nil object will cause its error state to propagate to other objects it is passed to, (for example, calling -cairo_set_font_face() with a nil font will trigger an error that -will shutdown the cairo_t object). - - -

    +cairo_set_font_face() with a nil font will trigger an error that +will shutdown the cairo_t object).

    +

    +

    Since 1.0


    -

    cairo_set_scaled_font ()

    -
    void                cairo_set_scaled_font               (cairo_t *cr,
    -                                                         const cairo_scaled_font_t *scaled_font);
    -

    -Replaces the current font face, font matrix, and font options in +

    cairo_set_scaled_font ()

    +
    void
    +cairo_set_scaled_font (cairo_t *cr,
    +                       const cairo_scaled_font_t *scaled_font);
    +

    Replaces the current font face, font matrix, and font options in the cairo_t with those of the cairo_scaled_font_t. Except for some translation, the current CTM of the cairo_t should be the same as that of the cairo_scaled_font_t, which can be accessed -using cairo_scaled_font_get_ctm(). -

    -
    +using cairo_scaled_font_get_ctm().

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    scaled_font :

    a cairo_scaled_font_t -

    scaled_font

    a cairo_scaled_font_t

     
    +

    Since 1.2


    -

    cairo_get_scaled_font ()

    -
    cairo_scaled_font_t * cairo_get_scaled_font             (cairo_t *cr);
    -

    -Gets the current scaled font for a cairo_t. -

    -
    ---+

    cairo_get_scaled_font ()

    +
    cairo_scaled_font_t *
    +cairo_get_scaled_font (cairo_t *cr);
    +

    Gets the current scaled font for a cairo_t.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - + + + + +

    cr :

    a cairo_t -

    Returns :

    the current scaled font. This object is owned by +

    cr

    a cairo_t

     
    +
    +
    +

    Returns

    +

    the current scaled font. This object is owned by cairo. To keep a reference to it, you must call -cairo_scaled_font_reference(). -This function never returns NULL. If memory cannot be allocated, a +cairo_scaled_font_reference().

    +

    This function never returns NULL. If memory cannot be allocated, a special "nil" cairo_scaled_font_t object will be returned on which -cairo_scaled_font_status() returns CAIRO_STATUS_NO_MEMORY. Using +cairo_scaled_font_status() returns CAIRO_STATUS_NO_MEMORY. Using this nil object will cause its error state to propagate to other objects it is passed to, (for example, calling -cairo_set_scaled_font() with a nil font will trigger an error that -will shutdown the cairo_t object). - - -

    +cairo_set_scaled_font() with a nil font will trigger an error that +will shutdown the cairo_t object).

    +

    +

    Since 1.4


    -

    cairo_show_text ()

    -
    void                cairo_show_text                     (cairo_t *cr,
    -                                                         const char *utf8);
    -

    -A drawing operator that generates the shape from a string of UTF-8 +

    cairo_show_text ()

    +
    void
    +cairo_show_text (cairo_t *cr,
    +                 const char *utf8);
    +

    A drawing operator that generates the shape from a string of UTF-8 characters, rendered according to the current font_face, font_size -(font_matrix), and font_options. -

    -

    -This function first computes a set of glyphs for the string of +(font_matrix), and font_options.

    +

    This function first computes a set of glyphs for the string of text. The first glyph is placed so that its origin is at the current point. The origin of each subsequent glyph is offset from that of the previous glyph by the advance values of the previous -glyph. -

    -

    -After this call the current point is moved to the origin of where +glyph.

    +

    After this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. This allows for easy display of a single -logical string with multiple calls to cairo_show_text(). -

    -

    -Note: The cairo_show_text() function call is part of what the cairo +logical string with multiple calls to cairo_show_text().

    +

    Note: The cairo_show_text() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for -serious text-using applications. See cairo_show_glyphs() for the -"real" text display API in cairo. -

    -
    +serious text-using applications. See cairo_show_glyphs() for the +"real" text display API in cairo.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    utf8 :

    a NUL-terminated string of text encoded in UTF-8, or NULL -

    utf8

    a NUL-terminated string of text encoded in UTF-8, or NULL

     
    +

    Since 1.0


    -

    cairo_show_glyphs ()

    -
    void                cairo_show_glyphs                   (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs);
    -

    -A drawing operator that generates the shape from an array of glyphs, +

    cairo_show_glyphs ()

    +
    void
    +cairo_show_glyphs (cairo_t *cr,
    +                   const cairo_glyph_t *glyphs,
    +                   int num_glyphs);
    +

    A drawing operator that generates the shape from an array of glyphs, rendered according to the current font face, font size -(font matrix), and font options. -

    -
    +(font matrix), and font options.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    glyphs :

    array of glyphs to show

    glyphs

    array of glyphs to show

     

    num_glyphs :

    number of glyphs to show

    num_glyphs

    number of glyphs to show

     
    +

    Since 1.0


    -

    cairo_show_text_glyphs ()

    -
    void                cairo_show_text_glyphs              (cairo_t *cr,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         const cairo_text_cluster_t *clusters,
    -                                                         int num_clusters,
    -                                                         cairo_text_cluster_flags_t cluster_flags);
    -

    -This operation has rendering effects similar to cairo_show_glyphs() +

    cairo_show_text_glyphs ()

    +
    void
    +cairo_show_text_glyphs (cairo_t *cr,
    +                        const char *utf8,
    +                        int utf8_len,
    +                        const cairo_glyph_t *glyphs,
    +                        int num_glyphs,
    +                        const cairo_text_cluster_t *clusters,
    +                        int num_clusters,
    +                        cairo_text_cluster_flags_t cluster_flags);
    +

    This operation has rendering effects similar to cairo_show_glyphs() but, if the target surface supports it, uses the provided text and cluster mapping to embed the text for the glyphs shown in the output. If the target does not support the extended attributes, this function -acts like the basic cairo_show_glyphs() as if it had been passed -glyphs and num_glyphs. -

    -

    -The mapping between utf8 and glyphs is provided by an array of +acts like the basic cairo_show_glyphs() as if it had been passed +glyphs + and num_glyphs +.

    +

    The mapping between utf8 + and glyphs + is provided by an array of clusters. Each cluster covers a number of text bytes and glyphs, and neighboring clusters cover neighboring -areas of utf8 and glyphs. The clusters should collectively cover utf8 -and glyphs in entirety. -

    -

    -The first cluster always covers bytes from the beginning of utf8. -If cluster_flags do not have the CAIRO_TEXT_CLUSTER_FLAG_BACKWARD +areas of utf8 + and glyphs +. The clusters should collectively cover utf8 + +and glyphs + in entirety.

    +

    The first cluster always covers bytes from the beginning of utf8 +. +If cluster_flags + do not have the CAIRO_TEXT_CLUSTER_FLAG_BACKWARD set, the first cluster also covers the beginning -of glyphs, otherwise it covers the end of the glyphs array and -following clusters move backward. -

    -

    -See cairo_text_cluster_t for constraints on valid clusters. -

    -
    +of glyphs +, otherwise it covers the end of the glyphs + array and +following clusters move backward.

    +

    See cairo_text_cluster_t for constraints on valid clusters.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    utf8 :

    a string of text encoded in UTF-8

    utf8

    a string of text encoded in UTF-8

     

    utf8_len :

    length of utf8 in bytes, or -1 if it is NUL-terminated

    utf8_len

    length of utf8 +in bytes, or -1 if it is NUL-terminated

     

    glyphs :

    array of glyphs to show

    glyphs

    array of glyphs to show

     

    num_glyphs :

    number of glyphs to show

    num_glyphs

    number of glyphs to show

     

    clusters :

    array of cluster mapping information

    clusters

    array of cluster mapping information

     

    num_clusters :

    number of clusters in the mapping

    num_clusters

    number of clusters in the mapping

     

    cluster_flags :

    cluster mapping flags

    cluster_flags

    cluster mapping flags

     
    +

    Since 1.8


    -

    cairo_font_extents ()

    -
    void                cairo_font_extents                  (cairo_t *cr,
    -                                                         cairo_font_extents_t *extents);
    -

    -Gets the font extents for the currently selected font. -

    -
    ---+

    cairo_font_extents ()

    +
    void
    +cairo_font_extents (cairo_t *cr,
    +                    cairo_font_extents_t *extents);
    +

    Gets the font extents for the currently selected font.

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    cr :

    a cairo_t -

    extents :

    a cairo_font_extents_t object into which the results -will be stored.

    cr

    a cairo_t

     

    extents

    a cairo_font_extents_t object into which the results +will be stored.

     
    +

    Since 1.0


    -

    cairo_text_extents ()

    -
    void                cairo_text_extents                  (cairo_t *cr,
    -                                                         const char *utf8,
    -                                                         cairo_text_extents_t *extents);
    -

    -Gets the extents for a string of text. The extents describe a +

    cairo_text_extents ()

    +
    void
    +cairo_text_extents (cairo_t *cr,
    +                    const char *utf8,
    +                    cairo_text_extents_t *extents);
    +

    Gets the extents for a string of text. The extents describe a user-space rectangle that encloses the "inked" portion of the text, -(as it would be drawn by cairo_show_text()). Additionally, the +(as it would be drawn by cairo_show_text()). Additionally, the x_advance and y_advance values indicate the amount by which the -current point would be advanced by cairo_show_text(). -

    -

    -Note that whitespace characters do not directly contribute to the +current point would be advanced by cairo_show_text().

    +

    Note that whitespace characters do not directly contribute to the size of the rectangle (extents.width and extents.height). They do contribute indirectly by changing the position of non-whitespace characters. In particular, trailing whitespace characters are likely to not affect the size of the rectangle, though they will -affect the x_advance and y_advance values. -

    -
    +affect the x_advance and y_advance values.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    utf8 :

    a NUL-terminated string of text encoded in UTF-8, or NULL -

    utf8

    a NUL-terminated string of text encoded in UTF-8, or NULL

     

    extents :

    a cairo_text_extents_t object into which the results -will be stored

    extents

    a cairo_text_extents_t object into which the results +will be stored

     
    +

    Since 1.0


    -

    cairo_glyph_extents ()

    -
    void                cairo_glyph_extents                 (cairo_t *cr,
    -                                                         const cairo_glyph_t *glyphs,
    -                                                         int num_glyphs,
    -                                                         cairo_text_extents_t *extents);
    -

    -Gets the extents for an array of glyphs. The extents describe a +

    cairo_glyph_extents ()

    +
    void
    +cairo_glyph_extents (cairo_t *cr,
    +                     const cairo_glyph_t *glyphs,
    +                     int num_glyphs,
    +                     cairo_text_extents_t *extents);
    +

    Gets the extents for an array of glyphs. The extents describe a user-space rectangle that encloses the "inked" portion of the -glyphs, (as they would be drawn by cairo_show_glyphs()). +glyphs, (as they would be drawn by cairo_show_glyphs()). Additionally, the x_advance and y_advance values indicate the amount by which the current point would be advanced by -cairo_show_glyphs(). -

    -

    -Note that whitespace glyphs do not contribute to the size of the -rectangle (extents.width and extents.height). -

    -
    +cairo_show_glyphs().

    +

    Note that whitespace glyphs do not contribute to the size of the +rectangle (extents.width and extents.height).

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    cr :

    a cairo_t -

    cr

    a cairo_t

     

    glyphs :

    an array of cairo_glyph_t objects

    glyphs

    an array of cairo_glyph_t objects

     

    num_glyphs :

    the number of elements in glyphs -

    num_glyphs

    the number of elements in glyphs +

     

    extents :

    a cairo_text_extents_t object into which the results -will be stored

    extents

    a cairo_text_extents_t object into which the results +will be stored

     
    +

    Since 1.0


    -

    cairo_toy_font_face_create ()

    -
    cairo_font_face_t * cairo_toy_font_face_create          (const char *family,
    -                                                         cairo_font_slant_t slant,
    -                                                         cairo_font_weight_t weight);
    -

    -Creates a font face from a triplet of family, slant, and weight. +

    cairo_toy_font_face_create ()

    +
    cairo_font_face_t *
    +cairo_toy_font_face_create (const char *family,
    +                            cairo_font_slant_t slant,
    +                            cairo_font_weight_t weight);
    +

    Creates a font face from a triplet of family, slant, and weight. These font faces are used in implementation of the the cairo_t "toy" -font API. -

    -

    -If family is the zero-length string "", the platform-specific default +font API.

    +

    If family + is the zero-length string "", the platform-specific default family is assumed. The default family then can be queried using -cairo_toy_font_face_get_family(). -

    -

    -The cairo_select_font_face() function uses this to create font faces. -See that function for limitations and other details of toy font faces. -

    -
    +cairo_toy_font_face_get_family().

    +

    The cairo_select_font_face() function uses this to create font faces. +See that function for limitations and other details of toy font faces.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    family :

    a font family name, encoded in UTF-8

    slant :

    the slant for the font

    family

    a font family name, encoded in UTF-8

     

    weight :

    the weight for the font

    slant

    the slant for the font

     

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    weight

    the weight for the font

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.8


    -

    cairo_toy_font_face_get_family ()

    -
    const char *        cairo_toy_font_face_get_family      (cairo_font_face_t *font_face);
    -

    -Gets the familly name of a toy font. -

    -
    ---+

    cairo_toy_font_face_get_family ()

    +
    const char *
    +cairo_toy_font_face_get_family (cairo_font_face_t *font_face);
    +

    Gets the familly name of a toy font.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + +

    font_face :

    A toy font face

    Returns :

    The family name. This string is owned by the font face -and remains valid as long as the font face is alive (referenced).

    font_face

    A toy font face

     
    +
    +
    +

    Returns

    +

    The family name. This string is owned by the font face +and remains valid as long as the font face is alive (referenced).

    +

    +

    Since 1.8


    -

    cairo_toy_font_face_get_slant ()

    -
    cairo_font_slant_t  cairo_toy_font_face_get_slant       (cairo_font_face_t *font_face);
    -

    -Gets the slant a toy font. -

    -
    ---+

    cairo_toy_font_face_get_slant ()

    +
    cairo_font_slant_t
    +cairo_toy_font_face_get_slant (cairo_font_face_t *font_face);
    +

    Gets the slant a toy font.

    +
    +

    Parameters

    +
    ++++ - - - - - - - - - - + + + + + +

    font_face :

    A toy font face

    Returns :

    The slant value

    font_face

    A toy font face

     
    +
    +
    +

    Returns

    +

    The slant value

    +

    +
    +

    Since 1.8

    + +
    +
    +

    cairo_toy_font_face_get_weight ()

    +
    cairo_font_weight_t
    +cairo_toy_font_face_get_weight (cairo_font_face_t *font_face);
    +

    Gets the weight a toy font.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    font_face

    A toy font face

     
    +
    +
    +

    Returns

    +

    The weight value

    +

    +
    +

    Since 1.8

    +
    +
    +
    +

    cairo_glyph_allocate ()

    +
    cairo_glyph_t *
    +cairo_glyph_allocate (int num_glyphs);
    +

    Allocates an array of cairo_glyph_t's. +This function is only useful in implementations of +cairo_user_scaled_font_text_to_glyphs_func_t where the user +needs to allocate an array of glyphs that cairo will free. +For all other uses, user can use their own allocation method +for glyphs.

    +

    This function returns NULL if num_glyphs + is not positive, +or if out of memory. That means, the NULL return value +signals out-of-memory only if num_glyphs + was positive.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    num_glyphs

    number of glyphs to allocate

     
    +
    +
    +

    Returns

    +

    the newly allocated array of glyphs that should be +freed using cairo_glyph_free()

    +

    +
    +

    Since 1.8

    +
    +
    +
    +

    cairo_glyph_free ()

    +
    void
    +cairo_glyph_free (cairo_glyph_t *glyphs);
    +

    Frees an array of cairo_glyph_t's allocated using cairo_glyph_allocate(). +This function is only useful to free glyph array returned +by cairo_scaled_font_text_to_glyphs() where cairo returns +an array of glyphs that the user will free. +For all other uses, user can use their own allocation method +for glyphs.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    glyphs

    array of glyphs to free, or NULL

     
    +
    +

    Since 1.8

    +
    +
    +
    +

    cairo_text_cluster_allocate ()

    +
    cairo_text_cluster_t *
    +cairo_text_cluster_allocate (int num_clusters);
    +

    Allocates an array of cairo_text_cluster_t's. +This function is only useful in implementations of +cairo_user_scaled_font_text_to_glyphs_func_t where the user +needs to allocate an array of text clusters that cairo will free. +For all other uses, user can use their own allocation method +for text clusters.

    +

    This function returns NULL if num_clusters + is not positive, +or if out of memory. That means, the NULL return value +signals out-of-memory only if num_clusters + was positive.

    +
    +

    Parameters

    +
    +++++ + + + + +

    num_clusters

    number of text_clusters to allocate

     
    +
    +
    +

    Returns

    +

    the newly allocated array of text clusters that should be +freed using cairo_text_cluster_free()

    +

    +

    Since 1.8


    -

    cairo_toy_font_face_get_weight ()

    -
    cairo_font_weight_t cairo_toy_font_face_get_weight      (cairo_font_face_t *font_face);
    -

    -Gets the weight a toy font. -

    -
    +

    cairo_text_cluster_free ()

    +
    void
    +cairo_text_cluster_free (cairo_text_cluster_t *clusters);
    +

    Frees an array of cairo_text_cluster's allocated using cairo_text_cluster_allocate(). +This function is only useful to free text cluster array returned +by cairo_scaled_font_text_to_glyphs() where cairo returns +an array of text clusters that the user will free. +For all other uses, user can use their own allocation method +for text clusters.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    clusters

    array of text clusters to free, or NULL

     
    +
    +

    Since 1.8

    + + +
    +

    Types and Values

    +
    +

    cairo_glyph_t

    +
    typedef struct {
    +    unsigned long        index;
    +    double               x;
    +    double               y;
    +} cairo_glyph_t;
    +
    +

    The cairo_glyph_t structure holds information about a single glyph +when drawing or measuring text. A font is (in simple terms) a +collection of shapes used to draw text. A glyph is one of these +shapes. There can be multiple glyphs for a single character +(alternates to be used in different contexts, for example), or a +glyph can be a ligature of multiple +characters. Cairo doesn't expose any way of converting input text +into glyphs, so in order to use the Cairo interfaces that take +arrays of glyphs, you must directly access the appropriate +underlying font system.

    +

    Note that the offsets given by x + and y + are not cumulative. When +drawing or measuring text, each glyph is individually positioned +with respect to the overall origin

    +
    +

    Members

    +
    --+++ - - + + + - - + + + + + + + +

    font_face :

    A toy font face

    unsigned long index;

    glyph index in the font. The exact interpretation of the +glyph index depends on the font technology being used.

     

    Returns :

    The weight value

    double x;

    the offset in the X direction between the origin used for +drawing or measuring the string and the origin of this glyph.

     

    double y;

    the offset in the Y direction between the origin used for +drawing or measuring the string and the origin of this glyph.

     
    -

    Since 1.8

    +
    +

    Since 1.0


    -

    cairo_glyph_allocate ()

    -
    cairo_glyph_t *     cairo_glyph_allocate                (int num_glyphs);
    -

    -Allocates an array of cairo_glyph_t's. -This function is only useful in implementations of -cairo_user_scaled_font_text_to_glyphs_func_t where the user -needs to allocate an array of glyphs that cairo will free. -For all other uses, user can use their own allocation method -for glyphs. -

    -

    -This function returns NULL if num_glyphs is not positive, -or if out of memory. That means, the NULL return value -signals out-of-memory only if num_glyphs was positive. -

    -
    +

    enum cairo_font_slant_t

    +

    Specifies variants of a font face based on their slant.

    +
    +

    Members

    +
    --+++ - - + + + - - + + + + + + +

    num_glyphs :

    number of glyphs to allocate

    CAIRO_FONT_SLANT_NORMAL

    +

    Upright font style, since 1.0

    +
     

    Returns :

    the newly allocated array of glyphs that should be -freed using cairo_glyph_free() +

    CAIRO_FONT_SLANT_ITALIC

    +

    Italic font style, since 1.0

     

    CAIRO_FONT_SLANT_OBLIQUE

    +

    Oblique font style, since 1.0

    +
     
    -

    Since 1.8

    +
    +

    Since 1.0


    -

    cairo_glyph_free ()

    -
    void                cairo_glyph_free                    (cairo_glyph_t *glyphs);
    -

    -Frees an array of cairo_glyph_t's allocated using cairo_glyph_allocate(). -This function is only useful to free glyph array returned -by cairo_scaled_font_text_to_glyphs() where cairo returns -an array of glyphs that the user will free. -For all other uses, user can use their own allocation method -for glyphs. -

    -
    +

    enum cairo_font_weight_t

    +

    Specifies variants of a font face based on their weight.

    +
    +

    Members

    +
    --+++ - - - + + + - + + + + + + + +

    glyphs :

    array of glyphs to free, or NULL +

    CAIRO_FONT_WEIGHT_NORMAL

    +

    Normal font weight, since 1.0

     

    CAIRO_FONT_WEIGHT_BOLD

    +

    Bold font weight, since 1.0

    +
     
    -

    Since 1.8

    +
    +

    Since 1.0


    -

    cairo_text_cluster_allocate ()

    -
    cairo_text_cluster_t * cairo_text_cluster_allocate      (int num_clusters);
    -

    -Allocates an array of cairo_text_cluster_t's. -This function is only useful in implementations of -cairo_user_scaled_font_text_to_glyphs_func_t where the user -needs to allocate an array of text clusters that cairo will free. -For all other uses, user can use their own allocation method -for text clusters. -

    -

    -This function returns NULL if num_clusters is not positive, -or if out of memory. That means, the NULL return value -signals out-of-memory only if num_clusters was positive. -

    -
    +

    cairo_text_cluster_t

    +
    typedef struct {
    +    int        num_bytes;
    +    int        num_glyphs;
    +} cairo_text_cluster_t;
    +
    +

    The cairo_text_cluster_t structure holds information about a single +text cluster. A text cluster is a minimal +mapping of some glyphs corresponding to some UTF-8 text.

    +

    For a cluster to be valid, both num_bytes + and num_glyphs + should +be non-negative, and at least one should be non-zero. +Note that clusters with zero glyphs are not as well supported as +normal clusters. For example, PDF rendering applications typically +ignore those clusters when PDF text is being selected.

    +

    See cairo_show_text_glyphs() for how clusters are used in advanced +text operations.

    +
    +

    Members

    +
    --+++ - - + + + - - + + +

    num_clusters :

    number of text_clusters to allocate

    int num_bytes;

    the number of bytes of UTF-8 text covered by cluster

     

    Returns :

    the newly allocated array of text clusters that should be -freed using cairo_text_cluster_free() -

    int num_glyphs;

    the number of glyphs covered by cluster

     
    +

    Since 1.8


    -

    cairo_text_cluster_free ()

    -
    void                cairo_text_cluster_free             (cairo_text_cluster_t *clusters);
    -

    -Frees an array of cairo_text_cluster's allocated using cairo_text_cluster_allocate(). -This function is only useful to free text cluster array returned -by cairo_scaled_font_text_to_glyphs() where cairo returns -an array of text clusters that the user will free. -For all other uses, user can use their own allocation method -for text clusters. -

    -
    ---+

    enum cairo_text_cluster_flags_t

    +

    Specifies properties of a text cluster mapping.

    +
    +

    Members

    +
    ++++ - - + +

    clusters :

    array of text clusters to free, or NULL +

    CAIRO_TEXT_CLUSTER_FLAG_BACKWARD

    +

    The clusters in the cluster array +map to glyphs in the glyph array from end to start. (Since 1.8)

     
    +

    Since 1.8

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Transformations.html cairo-1.14.2/doc/public/html/cairo-Transformations.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Transformations.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Transformations.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Transformations +Cairo: A Vector Graphics Library: Transformations - + - - - - - - - - - - + + + + + + +
    @@ -33,395 +30,541 @@

    Transformations

    Transformations — Manipulating the current transformation matrix

    - +
    -
    -

    Synopsis

    -
    void                cairo_translate                     (cairo_t *cr,
    -                                                         double tx,
    -                                                         double ty);
    -void                cairo_scale                         (cairo_t *cr,
    -                                                         double sx,
    -                                                         double sy);
    -void                cairo_rotate                        (cairo_t *cr,
    -                                                         double angle);
    -void                cairo_transform                     (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -void                cairo_set_matrix                    (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -void                cairo_get_matrix                    (cairo_t *cr,
    -                                                         cairo_matrix_t *matrix);
    -void                cairo_identity_matrix               (cairo_t *cr);
    -void                cairo_user_to_device                (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -void                cairo_user_to_device_distance       (cairo_t *cr,
    -                                                         double *dx,
    -                                                         double *dy);
    -void                cairo_device_to_user                (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -void                cairo_device_to_user_distance       (cairo_t *cr,
    -                                                         double *dx,
    -                                                         double *dy);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +void + +cairo_translate () +
    +void + +cairo_scale () +
    +void + +cairo_rotate () +
    +void + +cairo_transform () +
    +void + +cairo_set_matrix () +
    +void + +cairo_get_matrix () +
    +void + +cairo_identity_matrix () +
    +void + +cairo_user_to_device () +
    +void + +cairo_user_to_device_distance () +
    +void + +cairo_device_to_user () +
    +void + +cairo_device_to_user_distance () +
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The current transformation matrix, ctm, is a +

    The current transformation matrix, ctm, is a two-dimensional affine transformation that maps all coordinates and other drawing instruments from the user space into the surface's canonical coordinate system, also known as the device -space. -

    +space
    .

    -

    Details

    +

    Functions

    -

    cairo_translate ()

    -
    void                cairo_translate                     (cairo_t *cr,
    -                                                         double tx,
    -                                                         double ty);
    -

    -Modifies the current transformation matrix (CTM) by translating the -user-space origin by (tx, ty). This offset is interpreted as a +

    cairo_translate ()

    +
    void
    +cairo_translate (cairo_t *cr,
    +                 double tx,
    +                 double ty);
    +

    Modifies the current transformation matrix (CTM) by translating the +user-space origin by (tx +, ty +). This offset is interpreted as a user-space coordinate according to the CTM in place before the new -call to cairo_translate(). In other words, the translation of the -user-space origin takes place after any existing transformation. -

    -
    ---+call to cairo_translate(). In other words, the translation of the +user-space origin takes place after any existing transformation.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    tx :

    amount to translate in the X direction

    tx

    amount to translate in the X direction

     

    ty :

    amount to translate in the Y direction

    ty

    amount to translate in the Y direction

     
    +

    Since 1.0


    -

    cairo_scale ()

    -
    void                cairo_scale                         (cairo_t *cr,
    -                                                         double sx,
    -                                                         double sy);
    -

    -Modifies the current transformation matrix (CTM) by scaling the X -and Y user-space axes by sx and sy respectively. The scaling of +

    cairo_scale ()

    +
    void
    +cairo_scale (cairo_t *cr,
    +             double sx,
    +             double sy);
    +

    Modifies the current transformation matrix (CTM) by scaling the X +and Y user-space axes by sx + and sy + respectively. The scaling of the axes takes place after any existing transformation of user -space. -

    -
    ---+space.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    sx :

    scale factor for the X dimension

    sx

    scale factor for the X dimension

     

    sy :

    scale factor for the Y dimension

    sy

    scale factor for the Y dimension

     
    +

    Since 1.0


    -

    cairo_rotate ()

    -
    void                cairo_rotate                        (cairo_t *cr,
    -                                                         double angle);
    -

    -Modifies the current transformation matrix (CTM) by rotating the -user-space axes by angle radians. The rotation of the axes takes +

    cairo_rotate ()

    +
    void
    +cairo_rotate (cairo_t *cr,
    +              double angle);
    +

    Modifies the current transformation matrix (CTM) by rotating the +user-space axes by angle + radians. The rotation of the axes takes places after any existing transformation of user space. The rotation direction for positive angles is from the positive X axis -toward the positive Y axis. -

    -
    ---+toward the positive Y axis.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    angle :

    angle (in radians) by which the user-space axes will be -rotated

    angle

    angle (in radians) by which the user-space axes will be +rotated

     
    +

    Since 1.0


    -

    cairo_transform ()

    -
    void                cairo_transform                     (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -

    -Modifies the current transformation matrix (CTM) by applying -matrix as an additional transformation. The new transformation of -user space takes place after any existing transformation. -

    -
    ---+

    cairo_transform ()

    +
    void
    +cairo_transform (cairo_t *cr,
    +                 const cairo_matrix_t *matrix);
    +

    Modifies the current transformation matrix (CTM) by applying +matrix + as an additional transformation. The new transformation of +user space takes place after any existing transformation.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    matrix :

    a transformation to be applied to the user-space axes

    matrix

    a transformation to be applied to the user-space axes

     
    +

    Since 1.0


    -

    cairo_set_matrix ()

    -
    void                cairo_set_matrix                    (cairo_t *cr,
    -                                                         const cairo_matrix_t *matrix);
    -

    -Modifies the current transformation matrix (CTM) by setting it -equal to matrix. -

    -
    ---+

    cairo_set_matrix ()

    +
    void
    +cairo_set_matrix (cairo_t *cr,
    +                  const cairo_matrix_t *matrix);
    +

    Modifies the current transformation matrix (CTM) by setting it +equal to matrix +.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    matrix :

    a transformation matrix from user space to device space

    matrix

    a transformation matrix from user space to device space

     
    +

    Since 1.0


    -

    cairo_get_matrix ()

    -
    void                cairo_get_matrix                    (cairo_t *cr,
    -                                                         cairo_matrix_t *matrix);
    -

    -Stores the current transformation matrix (CTM) into matrix. -

    -
    ---+

    cairo_get_matrix ()

    +
    void
    +cairo_get_matrix (cairo_t *cr,
    +                  cairo_matrix_t *matrix);
    +

    Stores the current transformation matrix (CTM) into matrix +.

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    matrix :

    return value for the matrix

    matrix

    return value for the matrix

     
    +

    Since 1.0


    -

    cairo_identity_matrix ()

    -
    void                cairo_identity_matrix               (cairo_t *cr);
    -

    -Resets the current transformation matrix (CTM) by setting it equal +

    cairo_identity_matrix ()

    +
    void
    +cairo_identity_matrix (cairo_t *cr);
    +

    Resets the current transformation matrix (CTM) by setting it equal to the identity matrix. That is, the user-space and device-space axes will be aligned and one user-space unit will transform to one -device-space unit. -

    -
    ---+device-space unit.

    +
    +

    Parameters

    +
    ++++ - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     
    +

    Since 1.0


    -

    cairo_user_to_device ()

    -
    void                cairo_user_to_device                (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -

    -Transform a coordinate from user space to device space by +

    cairo_user_to_device ()

    +
    void
    +cairo_user_to_device (cairo_t *cr,
    +                      double *x,
    +                      double *y);
    +

    Transform a coordinate from user space to device space by multiplying the given point by the current transformation matrix -(CTM). -

    -
    ---+(CTM).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    x :

    X value of coordinate (in/out parameter)

    x

    X value of coordinate (in/out parameter)

     

    y :

    Y value of coordinate (in/out parameter)

    y

    Y value of coordinate (in/out parameter)

     
    +

    Since 1.0


    -

    cairo_user_to_device_distance ()

    -
    void                cairo_user_to_device_distance       (cairo_t *cr,
    -                                                         double *dx,
    -                                                         double *dy);
    -

    -Transform a distance vector from user space to device space. This -function is similar to cairo_user_to_device() except that the +

    cairo_user_to_device_distance ()

    +
    void
    +cairo_user_to_device_distance (cairo_t *cr,
    +                               double *dx,
    +                               double *dy);
    +

    Transform a distance vector from user space to device space. This +function is similar to cairo_user_to_device() except that the translation components of the CTM will be ignored when transforming -(dx,dy). -

    -
    ---+(dx +,dy +).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    dx :

    X component of a distance vector (in/out parameter)

    dx

    X component of a distance vector (in/out parameter)

     

    dy :

    Y component of a distance vector (in/out parameter)

    dy

    Y component of a distance vector (in/out parameter)

     
    +

    Since 1.0


    -

    cairo_device_to_user ()

    -
    void                cairo_device_to_user                (cairo_t *cr,
    -                                                         double *x,
    -                                                         double *y);
    -

    -Transform a coordinate from device space to user space by +

    cairo_device_to_user ()

    +
    void
    +cairo_device_to_user (cairo_t *cr,
    +                      double *x,
    +                      double *y);
    +

    Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current -transformation matrix (CTM). -

    -
    ---+transformation matrix (CTM).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo

    cr

    a cairo

     

    x :

    X value of coordinate (in/out parameter)

    x

    X value of coordinate (in/out parameter)

     

    y :

    Y value of coordinate (in/out parameter)

    y

    Y value of coordinate (in/out parameter)

     
    +

    Since 1.0


    -

    cairo_device_to_user_distance ()

    -
    void                cairo_device_to_user_distance       (cairo_t *cr,
    -                                                         double *dx,
    -                                                         double *dy);
    -

    -Transform a distance vector from device space to user space. This -function is similar to cairo_device_to_user() except that the +

    cairo_device_to_user_distance ()

    +
    void
    +cairo_device_to_user_distance (cairo_t *cr,
    +                               double *dx,
    +                               double *dy);
    +

    Transform a distance vector from device space to user space. This +function is similar to cairo_device_to_user() except that the translation components of the inverse CTM will be ignored when -transforming (dx,dy). -

    -
    ---+transforming (dx +,dy +).

    +
    +

    Parameters

    +
    ++++ - - + + + - - + + + - - + + +

    cr :

    a cairo context

    cr

    a cairo context

     

    dx :

    X component of a distance vector (in/out parameter)

    dx

    X component of a distance vector (in/out parameter)

     

    dy :

    Y component of a distance vector (in/out parameter)

    dy

    Y component of a distance vector (in/out parameter)

     
    +

    Since 1.0

    +

    Types and Values

    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Types.html cairo-1.14.2/doc/public/html/cairo-Types.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Types.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Types.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Types +Cairo: A Vector Graphics Library: Types - + - - - - - - - - - - + + + + + + +
    @@ -33,43 +30,99 @@

    Types

    Types — Generic data types

    - +
    -
    -

    Synopsis

    -
    typedef             cairo_bool_t;
    -                    cairo_user_data_key_t;
    -void                (*cairo_destroy_func_t)             (void *data);
    -                    cairo_rectangle_int_t;
    +
    +

    Functions

    +
    ++++ + + + + +
    +void + +(*cairo_destroy_func_t) () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + +
    typedefcairo_bool_t
     cairo_user_data_key_t
     cairo_rectangle_int_t
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -This section lists generic data types used in the cairo API. -

    +

    This section lists generic data types used in the cairo API.

    -

    Details

    +

    Functions

    +
    +

    cairo_destroy_func_t ()

    +
    void
    +(*cairo_destroy_func_t) (void *data);
    +

    cairo_destroy_func_t the type of function which is called when a +data element is destroyed. It is passed the pointer to the data +element and should free any memory and resources allocated for it.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    data

    The data element being destroyed.

     
    +
    +

    Since 1.0

    +
    +
    +
    +

    Types and Values

    cairo_bool_t

    typedef int cairo_bool_t;
     
    -

    -cairo_bool_t is used for boolean values. Returns of type +

    cairo_bool_t is used for boolean values. Returns of type cairo_bool_t will always be either 0 or 1, but testing against these values explicitly is not encouraged; just use the -value as a boolean condition. -

    -

    -

    +value as a boolean condition.

      if (cairo_in_stroke (cr, x, y)) {
          /* do something */
      }
     
    -

    -

    Since 1.0


    @@ -79,44 +132,26 @@ int unused; } cairo_user_data_key_t;
    -

    -cairo_user_data_key_t is used for attaching user data to cairo +

    cairo_user_data_key_t is used for attaching user data to cairo data structures. The actual contents of the struct is never used, and there is no need to initialize the object; only the unique address of a cairo_data_key_t object is used. Typically, you -would just use the address of a static cairo_data_key_t object. -

    -
    +would just use the address of a static cairo_data_key_t object.

    +
    +

    Members

    +
    --+++ - - + + +

    int unused;

    not used; ignore.

    int unused;

    not used; ignore.

     
    -

    Since 1.0

    -
    -
    -

    cairo_destroy_func_t ()

    -
    void                (*cairo_destroy_func_t)             (void *data);
    -

    -cairo_destroy_func_t the type of function which is called when a -data element is destroyed. It is passed the pointer to the data -element and should free any memory and resources allocated for it. -

    -
    ---- - - - - -

    data :

    The data element being destroyed.

    Since 1.0


    @@ -127,39 +162,45 @@ int width, height; } cairo_rectangle_int_t; -

    -A data structure for holding a rectangle with integer coordinates. -

    -
    +

    A data structure for holding a rectangle with integer coordinates.

    +
    +

    Members

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    int x;

    X coordinate of the left side of the rectangle

    int x;

    X coordinate of the left side of the rectangle

     

    int y;

    Y coordinate of the the top side of the rectangle

    int y;

    Y coordinate of the the top side of the rectangle

     

    int width;

    width of the rectangle

    int width;

    width of the rectangle

     

    int height;

    height of the rectangle

    int height;

    height of the rectangle

     
    +

    Since 1.10

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-User-Fonts.html cairo-1.14.2/doc/public/html/cairo-User-Fonts.html --- cairo-1.13.0~20140204/doc/public/html/cairo-User-Fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-User-Fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -User Fonts +Cairo: A Vector Graphics Library: User Fonts - + - - - - - - - - - - + + + + + + +
    @@ -33,169 +30,250 @@

    User Fonts

    User Fonts — Font support with font data provided by the user

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_USER_FONT
    -cairo_status_t      (*cairo_user_scaled_font_init_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_t *cr,
    -                                                         cairo_font_extents_t *extents);
    -cairo_status_t      (*cairo_user_scaled_font_render_glyph_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         unsigned long  glyph,
    -                                                         cairo_t *cr,
    -                                                         cairo_text_extents_t *extents);
    -cairo_status_t      (*cairo_user_scaled_font_text_to_glyphs_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         cairo_glyph_t **glyphs,
    -                                                         int *num_glyphs,
    -                                                         cairo_text_cluster_t **clusters,
    -                                                         int *num_clusters,
    -                                                         cairo_text_cluster_flags_t *cluster_flags);
    -cairo_status_t      (*cairo_user_scaled_font_unicode_to_glyph_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         unsigned long  unicode,
    -                                                         unsigned long *glyph_index);
    -cairo_font_face_t * cairo_user_font_face_create         (void);
    -void                cairo_user_font_face_set_init_func  (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_init_func_t init_func);
    -cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func
    -                                                        (cairo_font_face_t *font_face);
    -void                cairo_user_font_face_set_render_glyph_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_render_glyph_func_t render_glyph_func);
    -cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func
    -                                                        (cairo_font_face_t *font_face);
    -void                cairo_user_font_face_set_unicode_to_glyph_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func);
    -cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func
    -                                                        (cairo_font_face_t *font_face);
    -void                cairo_user_font_face_set_text_to_glyphs_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func);
    -cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func
    -                                                        (cairo_font_face_t *font_face);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_USER_FONT
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The user-font feature allows the cairo user to provide drawings for glyphs +

    The user-font feature allows the cairo user to provide drawings for glyphs in a font. This is most useful in implementing fonts in non-standard formats, like SVG fonts and Flash fonts, but can also be used by games and -other application to draw "funky" fonts. -

    +other application to draw "funky" fonts.

    -

    Details

    -
    -

    CAIRO_HAS_USER_FONT

    -
    #define CAIRO_HAS_USER_FONT 1
    -
    -

    -Defined if the user font backend is available. -This macro can be used to conditionally compile backend-specific code. -The user font backend is always built in versions of cairo that support -this feature (1.8 and later). -

    -

    Since 1.8

    -
    -
    +

    Functions

    -

    cairo_user_scaled_font_init_func_t ()

    -
    cairo_status_t      (*cairo_user_scaled_font_init_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_t *cr,
    -                                                         cairo_font_extents_t *extents);
    -

    -cairo_user_scaled_font_init_func_t is the type of function which is -called when a scaled-font needs to be created for a user font-face. -

    -

    -The cairo context cr is not used by the caller, but is prepared in font +

    cairo_user_scaled_font_init_func_t ()

    +
    cairo_status_t
    +(*cairo_user_scaled_font_init_func_t) (cairo_scaled_font_t *scaled_font,
    +                                       cairo_t *cr,
    +                                       cairo_font_extents_t *extents);
    +

    cairo_user_scaled_font_init_func_t is the type of function which is +called when a scaled-font needs to be created for a user font-face.

    +

    The cairo context cr + is not used by the caller, but is prepared in font space, similar to what the cairo contexts passed to the render_glyph method will look like. The callback can use this context for extents -computation for example. After the callback is called, cr is checked -for any error status. -

    -

    -The extents argument is where the user font sets the font extents for -scaled_font. It is in font space, which means that for most cases its -ascent and descent members should add to 1.0. extents is preset to +computation for example. After the callback is called, cr + is checked +for any error status.

    +

    The extents + argument is where the user font sets the font extents for +scaled_font +. It is in font space, which means that for most cases its +ascent and descent members should add to 1.0. extents + is preset to hold a value of 1.0 for ascent, height, and max_x_advance, and 0.0 for -descent and max_y_advance members. -

    -

    -The callback is optional. If not set, default font extents as described -in the previous paragraph will be used. -

    -

    -Note that scaled_font is not fully initialized at this +descent and max_y_advance members.

    +

    The callback is optional. If not set, default font extents as described +in the previous paragraph will be used.

    +

    Note that scaled_font + is not fully initialized at this point and trying to use it for text operations in the callback will result -in deadlock. -

    -
    +in deadlock.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    scaled_font :

    the scaled-font being created

    scaled_font

    the scaled-font being created

     

    cr :

    a cairo context, in font space

    cr

    a cairo context, in font space

     

    extents :

    font extents to fill in, in font space

    Returns :

    -CAIRO_STATUS_SUCCESS upon success, or an error status on error.

    extents

    font extents to fill in, in font space

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS upon success, or an error status on error.

    +

    +

    Since 1.8


    -

    cairo_user_scaled_font_render_glyph_func_t ()

    -
    cairo_status_t      (*cairo_user_scaled_font_render_glyph_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         unsigned long  glyph,
    -                                                         cairo_t *cr,
    -                                                         cairo_text_extents_t *extents);
    -

    -cairo_user_scaled_font_render_glyph_func_t is the type of function which -is called when a user scaled-font needs to render a glyph. -

    -

    -The callback is mandatory, and expected to draw the glyph with code glyph to -the cairo context cr. cr is prepared such that the glyph drawing is done in -font space. That is, the matrix set on cr is the scale matrix of scaled_font, -The extents argument is where the user font sets the font extents for -scaled_font. However, if user prefers to draw in user space, they can -achieve that by changing the matrix on cr. All cairo rendering operations -to cr are permitted, however, the result is undefined if any source other -than the default source on cr is used. That means, glyph bitmaps should -be rendered using cairo_mask() instead of cairo_paint(). -

    -

    -Other non-default settings on cr include a font size of 1.0 (given that +

    cairo_user_scaled_font_render_glyph_func_t ()

    +
    cairo_status_t
    +(*cairo_user_scaled_font_render_glyph_func_t)
    +                               (cairo_scaled_font_t *scaled_font,
    +                                unsigned long  glyph,
    +                                cairo_t *cr,
    +                                cairo_text_extents_t *extents);
    +

    cairo_user_scaled_font_render_glyph_func_t is the type of function which +is called when a user scaled-font needs to render a glyph.

    +

    The callback is mandatory, and expected to draw the glyph with code glyph + to +the cairo context cr +. cr + is prepared such that the glyph drawing is done in +font space. That is, the matrix set on cr + is the scale matrix of scaled_font +, +The extents + argument is where the user font sets the font extents for +scaled_font +. However, if user prefers to draw in user space, they can +achieve that by changing the matrix on cr +. All cairo rendering operations +to cr + are permitted, however, the result is undefined if any source other +than the default source on cr + is used. That means, glyph bitmaps should +be rendered using cairo_mask() instead of cairo_paint().

    +

    Other non-default settings on cr + include a font size of 1.0 (given that it is set up to be in font space), and font options corresponding to -scaled_font. -

    -

    -The extents argument is preset to have x_bearing, +scaled_font +.

    +

    The extents + argument is preset to have x_bearing, width, and y_advance of zero, y_bearing set to -font_extents.ascent, height to font_extents.ascent+font_extents.descent, @@ -204,513 +282,562 @@ x_advance. If the width field is zero upon the callback returning (which is its preset value), the glyph extents are automatically computed -based on the drawings done to cr. This is in most cases exactly what the +based on the drawings done to cr +. This is in most cases exactly what the desired behavior is. However, if for any reason the callback sets the extents, it must be ink extents, and include the extents of all drawing -done to cr in the callback. -

    -
    +done to cr + in the callback.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    scaled_font :

    user scaled-font

    scaled_font

    user scaled-font

     

    glyph :

    glyph code to render

    glyph

    glyph code to render

     

    cr :

    cairo context to draw to, in font space

    cr

    cairo context to draw to, in font space

     

    extents :

    glyph extents to fill in, in font space

    Returns :

    -CAIRO_STATUS_SUCCESS upon success, or -CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

    extents

    glyph extents to fill in, in font space

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS upon success, or +CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

    +

    +

    Since 1.8


    -

    cairo_user_scaled_font_text_to_glyphs_func_t ()

    -
    cairo_status_t      (*cairo_user_scaled_font_text_to_glyphs_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         const char *utf8,
    -                                                         int utf8_len,
    -                                                         cairo_glyph_t **glyphs,
    -                                                         int *num_glyphs,
    -                                                         cairo_text_cluster_t **clusters,
    -                                                         int *num_clusters,
    -                                                         cairo_text_cluster_flags_t *cluster_flags);
    -

    -cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which +

    cairo_user_scaled_font_text_to_glyphs_func_t ()

    +
    cairo_status_t
    +(*cairo_user_scaled_font_text_to_glyphs_func_t)
    +                               (cairo_scaled_font_t *scaled_font,
    +                                const char *utf8,
    +                                int utf8_len,
    +                                cairo_glyph_t **glyphs,
    +                                int *num_glyphs,
    +                                cairo_text_cluster_t **clusters,
    +                                int *num_clusters,
    +                                cairo_text_cluster_flags_t *cluster_flags);
    +

    cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which is called to convert input text to an array of glyphs. This is used by the -cairo_show_text() operation. -

    -

    -Using this callback the user-font has full control on glyphs and their +cairo_show_text() operation.

    +

    Using this callback the user-font has full control on glyphs and their positions. That means, it allows for features like ligatures and kerning, as well as complex shaping required for scripts like -Arabic and Indic. -

    -

    -The num_glyphs argument is preset to the number of glyph entries available -in the glyphs buffer. If the glyphs buffer is NULL, the value of -num_glyphs will be zero. If the provided glyph array is too short for +Arabic and Indic.

    +

    The num_glyphs + argument is preset to the number of glyph entries available +in the glyphs + buffer. If the glyphs + buffer is NULL, the value of +num_glyphs + will be zero. If the provided glyph array is too short for the conversion (or for convenience), a new glyph array may be allocated -using cairo_glyph_allocate() and placed in glyphs. Upon return, -num_glyphs should contain the number of generated glyphs. If the value -glyphs points at has changed after the call, the caller will free the -allocated glyph array using cairo_glyph_free(). The caller will also free -the original value of glyphs, so the callback shouldn't do so. +using cairo_glyph_allocate() and placed in glyphs +. Upon return, +num_glyphs + should contain the number of generated glyphs. If the value +glyphs + points at has changed after the call, the caller will free the +allocated glyph array using cairo_glyph_free(). The caller will also free +the original value of glyphs +, so the callback shouldn't do so. The callback should populate the glyph indices and positions (in font space) -assuming that the text is to be shown at the origin. -

    -

    -If clusters is not NULL, num_clusters and cluster_flags are also -non-NULL, and cluster mapping should be computed. The semantics of how +assuming that the text is to be shown at the origin.

    +

    If clusters + is not NULL, num_clusters + and cluster_flags + are also +non-NULL, and cluster mapping should be computed. The semantics of how cluster array allocation works is similar to the glyph array. That is, -if clusters initially points to a non-NULL value, that array may be used -as a cluster buffer, and num_clusters points to the number of cluster +if clusters + initially points to a non-NULL value, that array may be used +as a cluster buffer, and num_clusters + points to the number of cluster entries available there. If the provided cluster array is too short for the conversion (or for convenience), a new cluster array may be allocated -using cairo_text_cluster_allocate() and placed in clusters. In this case, -the original value of clusters will still be freed by the caller. Upon -return, num_clusters should contain the number of generated clusters. -If the value clusters points at has changed after the call, the caller -will free the allocated cluster array using cairo_text_cluster_free(). -

    -

    -The callback is optional. If num_glyphs is negative upon +using cairo_text_cluster_allocate() and placed in clusters +. In this case, +the original value of clusters + will still be freed by the caller. Upon +return, num_clusters + should contain the number of generated clusters. +If the value clusters + points at has changed after the call, the caller +will free the allocated cluster array using cairo_text_cluster_free().

    +

    The callback is optional. If num_glyphs + is negative upon the callback returning or if the return value is CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callback -is tried. See cairo_user_scaled_font_unicode_to_glyph_func_t. -

    -

    -Note: While cairo does not impose any limitation on glyph indices, +is tried. See cairo_user_scaled_font_unicode_to_glyph_func_t.

    +

    Note: While cairo does not impose any limitation on glyph indices, some applications may assume that a glyph index fits in a 16-bit unsigned integer. As such, it is advised that user-fonts keep their glyphs in the 0 to 65535 range. Furthermore, some applications may assume that glyph 0 is a special glyph-not-found glyph. User-fonts are advised to use glyph 0 for such purposes and do not use that -glyph value for other purposes. -

    -
    +glyph value for other purposes.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + - - - - +

    +

    scaled_font :

    the scaled-font being created

    scaled_font

    the scaled-font being created

     

    utf8 :

    a string of text encoded in UTF-8

    utf8

    a string of text encoded in UTF-8

     

    utf8_len :

    length of utf8 in bytes

    utf8_len

    length of utf8 +in bytes

     

    glyphs :

    pointer to array of glyphs to fill, in font space

    glyphs

    pointer to array of glyphs to fill, in font space

     

    num_glyphs :

    pointer to number of glyphs

    num_glyphs

    pointer to number of glyphs

     

    clusters :

    pointer to array of cluster mapping information to fill, or NULL -

    clusters

    pointer to array of cluster mapping information to fill, or NULL

     

    num_clusters :

    pointer to number of clusters

    num_clusters

    pointer to number of clusters

     

    cluster_flags :

    pointer to location to store cluster flags corresponding to the +

    cluster_flags

    pointer to location to store cluster flags corresponding to the output clusters -

    Returns :

    -CAIRO_STATUS_SUCCESS upon success, -CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, -or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. 
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS upon success, +CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, +or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

    +

    +

    Since 1.8


    -

    cairo_user_scaled_font_unicode_to_glyph_func_t ()

    -
    cairo_status_t      (*cairo_user_scaled_font_unicode_to_glyph_func_t)
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         unsigned long  unicode,
    -                                                         unsigned long *glyph_index);
    -

    -cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which +

    cairo_user_scaled_font_unicode_to_glyph_func_t ()

    +
    cairo_status_t
    +(*cairo_user_scaled_font_unicode_to_glyph_func_t)
    +                               (cairo_scaled_font_t *scaled_font,
    +                                unsigned long  unicode,
    +                                unsigned long *glyph_index);
    +

    cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which is called to convert an input Unicode character to a single glyph. -This is used by the cairo_show_text() operation. -

    -

    -This callback is used to provide the same functionality as the -text_to_glyphs callback does (see cairo_user_scaled_font_text_to_glyphs_func_t) +This is used by the cairo_show_text() operation.

    +

    This callback is used to provide the same functionality as the +text_to_glyphs callback does (see cairo_user_scaled_font_text_to_glyphs_func_t) but has much less control on the output, in exchange for increased ease of use. The inherent assumption to using this callback is that each character maps to one glyph, and that the mapping is context independent. It also assumes that glyphs are positioned according to their advance width. These mean no ligatures, kerning, or -complex scripts can be implemented using this callback. -

    -

    -The callback is optional, and only used if text_to_glyphs callback is not +complex scripts can be implemented using this callback.

    +

    The callback is optional, and only used if text_to_glyphs callback is not set or fails to return glyphs. If this callback is not set or if it returns CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, an identity mapping from Unicode -code-points to glyph indices is assumed. -

    -

    -Note: While cairo does not impose any limitation on glyph indices, +code-points to glyph indices is assumed.

    +

    Note: While cairo does not impose any limitation on glyph indices, some applications may assume that a glyph index fits in a 16-bit unsigned integer. As such, it is advised that user-fonts keep their glyphs in the 0 to 65535 range. Furthermore, some applications may assume that glyph 0 is a special glyph-not-found glyph. User-fonts are advised to use glyph 0 for such purposes and do not use that -glyph value for other purposes. -

    -
    +glyph value for other purposes.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    scaled_font :

    the scaled-font being created

    scaled_font

    the scaled-font being created

     

    unicode :

    input unicode character code-point

    unicode

    input unicode character code-point

     

    glyph_index :

    output glyph index

    Returns :

    -CAIRO_STATUS_SUCCESS upon success, -CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, -or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

    glyph_index

    output glyph index

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS upon success, +CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, +or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

    +

    +

    Since 1.8


    -

    cairo_user_font_face_create ()

    -
    cairo_font_face_t * cairo_user_font_face_create         (void);
    -

    -Creates a new user font-face. -

    -

    -Use the setter functions to associate callbacks with the returned -user font. The only mandatory callback is render_glyph. -

    -

    -After the font-face is created, the user can attach arbitrary data -(the actual font data) to it using cairo_font_face_set_user_data() +

    cairo_user_font_face_create ()

    +
    cairo_font_face_t *
    +cairo_user_font_face_create (void);
    +

    Creates a new user font-face.

    +

    Use the setter functions to associate callbacks with the returned +user font. The only mandatory callback is render_glyph.

    +

    After the font-face is created, the user can attach arbitrary data +(the actual font data) to it using cairo_font_face_set_user_data() and access it from the user-font callbacks by using -cairo_scaled_font_get_font_face() followed by -cairo_font_face_get_user_data(). -

    -
    ---- - - - - -

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.
    +cairo_scaled_font_get_font_face() followed by +cairo_font_face_get_user_data().

    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.8


    -

    cairo_user_font_face_set_init_func ()

    -
    void                cairo_user_font_face_set_init_func  (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_init_func_t init_func);
    -

    -Sets the scaled-font initialization function of a user-font. -See cairo_user_scaled_font_init_func_t for details of how the callback -works. -

    -

    -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +

    cairo_user_font_face_set_init_func ()

    +
    void
    +cairo_user_font_face_set_init_func (cairo_font_face_t *font_face,
    +                                    cairo_user_scaled_font_init_func_t init_func);
    +

    Sets the scaled-font initialization function of a user-font. +See cairo_user_scaled_font_init_func_t for details of how the callback +works.

    +

    The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. -

    -
    +is created from it.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    A user font face

    font_face

    A user font face

     

    init_func :

    The init callback, or NULL -

    init_func

    The init callback, or NULL

     
    +

    Since 1.8


    -

    cairo_user_font_face_get_init_func ()

    -
    cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func
    -                                                        (cairo_font_face_t *font_face);
    -

    -Gets the scaled-font initialization function of a user-font. -

    -
    +

    cairo_user_font_face_get_init_func ()

    +
    cairo_user_scaled_font_init_func_t
    +cairo_user_font_face_get_init_func (cairo_font_face_t *font_face);
    +

    Gets the scaled-font initialization function of a user-font.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    A user font face

    Returns :

    The init callback of font_face -or NULL if none set or an error has occurred.

    font_face

    A user font face

     
    +
    +
    +

    Returns

    +

    The init callback of font_face +or NULL if none set or an error has occurred.

    +

    +

    Since 1.8


    -

    cairo_user_font_face_set_render_glyph_func ()

    -
    void                cairo_user_font_face_set_render_glyph_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_render_glyph_func_t render_glyph_func);
    -

    -Sets the glyph rendering function of a user-font. -See cairo_user_scaled_font_render_glyph_func_t for details of how the callback -works. -

    -

    -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +

    cairo_user_font_face_set_render_glyph_func ()

    +
    void
    +cairo_user_font_face_set_render_glyph_func
    +                               (cairo_font_face_t *font_face,
    +                                cairo_user_scaled_font_render_glyph_func_t render_glyph_func);
    +

    Sets the glyph rendering function of a user-font. +See cairo_user_scaled_font_render_glyph_func_t for details of how the callback +works.

    +

    The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. -

    -

    -The render_glyph callback is the only mandatory callback of a user-font. -If the callback is NULL and a glyph is tried to be rendered using -font_face, a CAIRO_STATUS_USER_FONT_ERROR will occur. -

    -
    +is created from it.

    +

    The render_glyph callback is the only mandatory callback of a user-font. +If the callback is NULL and a glyph is tried to be rendered using +font_face +, a CAIRO_STATUS_USER_FONT_ERROR will occur.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    A user font face

    font_face

    A user font face

     

    render_glyph_func :

    The render_glyph callback, or NULL -

    render_glyph_func

    The render_glyph callback, or NULL

     
    +

    Since 1.8


    -

    cairo_user_font_face_get_render_glyph_func ()

    -
    cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func
    -                                                        (cairo_font_face_t *font_face);
    -

    -Gets the glyph rendering function of a user-font. -

    -
    +

    cairo_user_font_face_get_render_glyph_func ()

    +
    cairo_user_scaled_font_render_glyph_func_t
    +cairo_user_font_face_get_render_glyph_func
    +                               (cairo_font_face_t *font_face);
    +

    Gets the glyph rendering function of a user-font.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    A user font face

    Returns :

    The render_glyph callback of font_face -or NULL if none set or an error has occurred.

    font_face

    A user font face

     
    +
    +
    +

    Returns

    +

    The render_glyph callback of font_face +or NULL if none set or an error has occurred.

    +

    +

    Since 1.8


    -

    cairo_user_font_face_set_unicode_to_glyph_func ()

    -
    void                cairo_user_font_face_set_unicode_to_glyph_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func);
    -

    -Sets the unicode-to-glyph conversion function of a user-font. -See cairo_user_scaled_font_unicode_to_glyph_func_t for details of how the callback -works. -

    -

    -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +

    cairo_user_font_face_set_unicode_to_glyph_func ()

    +
    void
    +cairo_user_font_face_set_unicode_to_glyph_func
    +                               (cairo_font_face_t *font_face,
    +                                cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func);
    +

    Sets the unicode-to-glyph conversion function of a user-font. +See cairo_user_scaled_font_unicode_to_glyph_func_t for details of how the callback +works.

    +

    The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. -

    -
    +is created from it.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    A user font face

    font_face

    A user font face

     

    unicode_to_glyph_func :

    The unicode_to_glyph callback, or NULL -

    unicode_to_glyph_func

    The unicode_to_glyph callback, or NULL

     
    +

    Since 1.8


    -

    cairo_user_font_face_get_unicode_to_glyph_func ()

    -
    cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func
    -                                                        (cairo_font_face_t *font_face);
    -

    -Gets the unicode-to-glyph conversion function of a user-font. -

    -
    +

    cairo_user_font_face_get_unicode_to_glyph_func ()

    +
    cairo_user_scaled_font_unicode_to_glyph_func_t
    +cairo_user_font_face_get_unicode_to_glyph_func
    +                               (cairo_font_face_t *font_face);
    +

    Gets the unicode-to-glyph conversion function of a user-font.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    A user font face

    Returns :

    The unicode_to_glyph callback of font_face -or NULL if none set or an error occurred.

    font_face

    A user font face

     
    +
    +
    +

    Returns

    +

    The unicode_to_glyph callback of font_face +or NULL if none set or an error occurred.

    +

    +

    Since 1.8


    -

    cairo_user_font_face_set_text_to_glyphs_func ()

    -
    void                cairo_user_font_face_set_text_to_glyphs_func
    -                                                        (cairo_font_face_t *font_face,
    -                                                         cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func);
    -

    -Sets th text-to-glyphs conversion function of a user-font. -See cairo_user_scaled_font_text_to_glyphs_func_t for details of how the callback -works. -

    -

    -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +

    cairo_user_font_face_set_text_to_glyphs_func ()

    +
    void
    +cairo_user_font_face_set_text_to_glyphs_func
    +                               (cairo_font_face_t *font_face,
    +                                cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func);
    +

    Sets th text-to-glyphs conversion function of a user-font. +See cairo_user_scaled_font_text_to_glyphs_func_t for details of how the callback +works.

    +

    The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. -

    -
    +is created from it.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    font_face :

    A user font face

    font_face

    A user font face

     

    text_to_glyphs_func :

    The text_to_glyphs callback, or NULL -

    text_to_glyphs_func

    The text_to_glyphs callback, or NULL

     
    +

    Since 1.8


    -

    cairo_user_font_face_get_text_to_glyphs_func ()

    -
    cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func
    -                                                        (cairo_font_face_t *font_face);
    -

    -Gets the text-to-glyphs conversion function of a user-font. -

    -
    +

    cairo_user_font_face_get_text_to_glyphs_func ()

    +
    cairo_user_scaled_font_text_to_glyphs_func_t
    +cairo_user_font_face_get_text_to_glyphs_func
    +                               (cairo_font_face_t *font_face);
    +

    Gets the text-to-glyphs conversion function of a user-font.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font_face :

    A user font face

    Returns :

    The text_to_glyphs callback of font_face -or NULL if none set or an error occurred.

    font_face

    A user font face

     
    +
    +
    +

    Returns

    +

    The text_to_glyphs callback of font_face +or NULL if none set or an error occurred.

    +

    +
    +

    Since 1.8

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_USER_FONT

    +
    #define CAIRO_HAS_USER_FONT 1
    +
    +

    Defined if the user font backend is available. +This macro can be used to conditionally compile backend-specific code. +The user font backend is always built in versions of cairo that support +this feature (1.8 and later).

    Since 1.8

    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Version-Information.html cairo-1.14.2/doc/public/html/cairo-Version-Information.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Version-Information.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Version-Information.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Version Information +Cairo: A Vector Graphics Library: Version Information - + - - - - - - - - - - + + + + + + +
    @@ -33,35 +30,88 @@

    Version Information

    Version Information — Compile-time and run-time version checks.

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_VERSION
    -#define             CAIRO_VERSION_MAJOR
    -#define             CAIRO_VERSION_MINOR
    -#define             CAIRO_VERSION_MICRO
    -#define             CAIRO_VERSION_STRING
    -#define             CAIRO_VERSION_ENCODE                (major,
    -                                                         minor,
    -                                                         micro)
    -#define             CAIRO_VERSION_STRINGIZE             (major,
    -                                                         minor,
    -                                                         micro)
    -int                 cairo_version                       (void);
    -const char *        cairo_version_string                (void);
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + +
    #define +CAIRO_VERSION_ENCODE() +
    #define +CAIRO_VERSION_STRINGIZE() +
    +int + +cairo_version () +
    const char * + +cairo_version_string () +
    +
    +
    +

    Types and Values

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + +
    #defineCAIRO_VERSION
    #defineCAIRO_VERSION_MAJOR
    #defineCAIRO_VERSION_MINOR
    #defineCAIRO_VERSION_MICRO
    #defineCAIRO_VERSION_STRING
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -Cairo has a three-part version number scheme. In this scheme, we use +

    Cairo has a three-part version number scheme. In this scheme, we use even vs. odd numbers to distinguish fixed points in the software vs. in-progress development, (such as from git instead of a tar file, -or as a "snapshot" tar file as opposed to a "release" tar file). -

    -

    -

    +or as a "snapshot" tar file as opposed to a "release" tar file).

      _____ Major. Always 1, until we invent a new scheme.
     /  ___ Minor. Even/Odd = Release/Snapshot (tar files) or Branch/Head (git)
    @@ -69,11 +119,7 @@
     | | /
     1.0.0
     
    -

    -

    -

    -Here are a few examples of versions that one might see. -

    +

    Here are a few examples of versions that one might see.

     Releases
     --------
    @@ -90,46 +136,39 @@
     1.0.1 - Development on a maintenance branch (toward 1.0.2 release)
     1.1.1 - Development on head (toward 1.1.2 snapshot and 1.2.0 release)
     
    -

    -

    -

    Compatibility

    -

    +

    Compatibility

    + The API/ABI compatibility guarantees for various versions are as follows. First, let's assume some cairo-using application code that is successfully using the API/ABI "from" one version of cairo. Then let's ask the question whether this same code can be moved "to" the API/ABI of another version of cairo. -

    -

    + Moving from a release to any later version (release, snapshot, development) is always guaranteed to provide compatibility. -

    -

    + Moving from a snapshot to any later version is not guaranteed to provide compatibility, since snapshots may introduce new API that ends up being removed before the next release. -

    -

    + Moving from an in-development version (odd micro component) to any later version is not guaranteed to provide compatibility. In fact, there's not even a guarantee that the code will even continue to work with the same in-development version number. This is because these numbers don't correspond to any fixed state of the software, but rather the many states between snapshots and releases. -

    +

    -

    Examining the version

    -

    +

    Examining the version

    + 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 an encoded form suitable for direct comparison. Cairo also provides the macro CAIRO_VERSION_ENCODE() to perform the encoding. -

    -

    -

    +
     Compile-time
     ------------
    @@ -138,17 +177,13 @@
      
     Run-time
     --------
    -cairo_version_string()  Human-readable
    -cairo_version()         Encoded, suitable for comparison
    +cairo_version_string()  Human-readable
    +cairo_version()         Encoded, suitable for comparison
     
    -

    -

    -

    + For example, checking that the cairo version is greater than or equal to 1.0.0 could be achieved at compile-time or run-time as follows: -

    -

    -

    +
     ##if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 0, 0)
     printf ("Compiling with suitable cairo version: %s\n", %CAIRO_VERSION_STRING);
    @@ -157,198 +192,176 @@
     if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 0, 0))
         printf ("Running with suitable cairo version: %s\n", cairo_version_string ());
     
    -

    -

    -

    -

    -

    Details

    -
    -

    CAIRO_VERSION

    -
    #define             CAIRO_VERSION
    -

    -The version of cairo available at compile-time, encoded using -CAIRO_VERSION_ENCODE(). -

    -

    Since 1.0

    -
    -
    -
    -

    CAIRO_VERSION_MAJOR

    -
    #define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD
    -
    -

    -The major component of the version of cairo available at compile-time. -

    -

    Since 1.0

    -
    -
    -
    -

    CAIRO_VERSION_MINOR

    -
    #define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD
    -
    -

    -The minor component of the version of cairo available at compile-time. -

    -

    Since 1.0

    -
    -
    -
    -

    CAIRO_VERSION_MICRO

    -
    #define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD
    -
    -

    -The micro component of the version of cairo available at compile-time. -

    -

    Since 1.0

    -
    -
    -
    -

    CAIRO_VERSION_STRING

    -
    #define             CAIRO_VERSION_STRING
    -

    -A human-readable string literal containing the version of cairo available -at compile-time, in the form of "X.Y.Z". -

    -

    Since 1.8

    -
    -
    +

    Functions

    CAIRO_VERSION_ENCODE()

    #define             CAIRO_VERSION_ENCODE(major, minor, micro)
    -

    -This macro encodes the given cairo version into an integer. The numbers -returned by CAIRO_VERSION and cairo_version() are encoded using this macro. +

    This macro encodes the given cairo version into an integer. The numbers +returned by CAIRO_VERSION and cairo_version() are encoded using this macro. Two encoded version numbers can be compared as integers. The encoding ensures -that later versions compare greater than earlier versions. -

    -
    +that later versions compare greater than earlier versions.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - - - - - + + +

    major :

    the major component of the version number

    major

    the major component of the version number

     

    minor :

    the minor component of the version number

    minor

    the minor component of the version number

     

    micro :

    the micro component of the version number

    Returns :

    the encoded version.

    micro

    the micro component of the version number

     
    +
    +
    +

    Returns

    +

    the encoded version.

    +

    +

    Since 1.0


    CAIRO_VERSION_STRINGIZE()

    #define             CAIRO_VERSION_STRINGIZE(major, minor, micro)
    -

    -This macro encodes the given cairo version into an string. The numbers -returned by CAIRO_VERSION_STRING and cairo_version_string() are encoded using this macro. -The parameters to this macro must expand to numerical literals. -

    -
    +

    This macro encodes the given cairo version into an string. The numbers +returned by CAIRO_VERSION_STRING and cairo_version_string() are encoded using this macro. +The parameters to this macro must expand to numerical literals.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    major :

    the major component of the version number

    minor :

    the minor component of the version number

    major

    the major component of the version number

     

    micro :

    the micro component of the version number

    minor

    the minor component of the version number

     

    Returns :

    a string literal containing the version.

    micro

    the micro component of the version number

     
    +
    +
    +

    Returns

    +

    a string literal containing the version.

    +

    +

    Since 1.8


    -

    cairo_version ()

    -
    int                 cairo_version                       (void);
    -

    -Returns the version of the cairo library encoded in a single +

    cairo_version ()

    +
    int
    +cairo_version (void);
    +

    Returns the version of the cairo library encoded in a single integer as per CAIRO_VERSION_ENCODE. The encoding ensures that -later versions compare greater than earlier versions. -

    -

    -A run-time comparison to check that cairo's version is greater than -or equal to version X.Y.Z could be performed as follows: -

    -

    -

    +later versions compare greater than earlier versions.

    +

    A run-time comparison to check that cairo's version is greater than +or equal to version X.Y.Z could be performed as follows:

     if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...}
     
    -

    -

    -

    -See also cairo_version_string() as well as the compile-time -equivalents CAIRO_VERSION and CAIRO_VERSION_STRING. -

    -
    ---- - - - - -

    Returns :

    the encoded version.
    +

    See also cairo_version_string() as well as the compile-time +equivalents CAIRO_VERSION and CAIRO_VERSION_STRING.

    +
    +

    Returns

    +

    the encoded version.

    +

    +

    Since 1.0


    -

    cairo_version_string ()

    -
    const char *        cairo_version_string                (void);
    -

    -Returns the version of the cairo library as a human-readable string -of the form "X.Y.Z". -

    -

    -See also cairo_version() as well as the compile-time equivalents -CAIRO_VERSION_STRING and CAIRO_VERSION. -

    -
    ---- - - - - -

    Returns :

    a string containing the version.
    +

    cairo_version_string ()

    +
    const char *
    +cairo_version_string (void);
    +

    Returns the version of the cairo library as a human-readable string +of the form "X.Y.Z".

    +

    See also cairo_version() as well as the compile-time equivalents +CAIRO_VERSION_STRING and CAIRO_VERSION.

    +
    +

    Returns

    +

    a string containing the version.

    +

    +
    +

    Since 1.0

    +
    +
    +
    +

    Types and Values

    +
    +

    CAIRO_VERSION

    +
    #define             CAIRO_VERSION
    +

    The version of cairo available at compile-time, encoded using +CAIRO_VERSION_ENCODE().

    Since 1.0

    +
    +
    +

    CAIRO_VERSION_MAJOR

    +
    #define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD
    +
    +

    The major component of the version of cairo available at compile-time.

    +

    Since 1.0

    +
    +
    +
    +

    CAIRO_VERSION_MINOR

    +
    #define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD
    +
    +

    The minor component of the version of cairo available at compile-time.

    +

    Since 1.0

    +
    +
    +
    +

    CAIRO_VERSION_MICRO

    +
    #define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD
    +
    +

    The micro component of the version of cairo available at compile-time.

    +

    Since 1.0

    +
    +
    +
    +

    CAIRO_VERSION_STRING

    +
    #define             CAIRO_VERSION_STRING
    +

    A human-readable string literal containing the version of cairo available +at compile-time, in the form of "X.Y.Z".

    +

    Since 1.8

    +
    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Win32-Fonts.html cairo-1.14.2/doc/public/html/cairo-Win32-Fonts.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Win32-Fonts.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Win32-Fonts.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Win32 Fonts +Cairo: A Vector Graphics Library: Win32 Fonts - + - - - - - - - - - - + + + + + + +
    @@ -33,318 +30,419 @@

    Win32 Fonts

    Win32 Fonts — Font support for Microsoft Windows

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_WIN32_FONT
    -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw
    -                                                        (LOGFONTW *logfont);
    -cairo_font_face_t * cairo_win32_font_face_create_for_hfont
    -                                                        (HFONT font);
    -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw_hfont
    -                                                        (LOGFONTW *logfont,
    -                                                         HFONT font);
    -cairo_status_t      cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font,
    -                                                         HDC hdc);
    -void                cairo_win32_scaled_font_done_font   (cairo_scaled_font_t *scaled_font);
    -double              cairo_win32_scaled_font_get_metrics_factor
    -                                                        (cairo_scaled_font_t *scaled_font);
    -void                cairo_win32_scaled_font_get_logical_to_device
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *logical_to_device);
    -void                cairo_win32_scaled_font_get_device_to_logical
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *device_to_logical);
    -
    +
    -

    Description

    -

    -The Microsoft Windows font backend is primarily used to render text on -Microsoft Windows systems. -

    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_WIN32_FONT
    -

    Details

    -
    -

    CAIRO_HAS_WIN32_FONT

    -
    #define CAIRO_HAS_WIN32_FONT 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the Microsoft Windows font backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.8

    -
    +
    +

    Description

    +

    The Microsoft Windows font backend is primarily used to render text on +Microsoft Windows systems.

    +
    +
    +

    Functions

    -

    cairo_win32_font_face_create_for_logfontw ()

    -
    cairo_font_face_t * cairo_win32_font_face_create_for_logfontw
    -                                                        (LOGFONTW *logfont);
    -

    -Creates a new font for the Win32 font backend based on a +

    cairo_win32_font_face_create_for_logfontw ()

    +
    cairo_font_face_t *
    +cairo_win32_font_face_create_for_logfontw
    +                               (LOGFONTW *logfont);
    +

    Creates a new font for the Win32 font backend based on a LOGFONT. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). +cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t -returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). -

    -
    +returned from cairo_scaled_font_create() is also for the Win32 backend +and can be used with functions such as cairo_win32_scaled_font_select_font().

    +
    +

    Parameters

    +
    --+++ - - - - + + - - - - - - +fields of this structure are ignored.

    + +

    logfont :

    A LOGFONTW structure specifying the font to use. +

    logfont

    A LOGFONTW structure specifying the font to use. The lfHeight, lfWidth, lfOrientation and lfEscapement -fields of this structure are ignored.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.
     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.0


    -

    cairo_win32_font_face_create_for_hfont ()

    -
    cairo_font_face_t * cairo_win32_font_face_create_for_hfont
    -                                                        (HFONT font);
    -

    -Creates a new font for the Win32 font backend based on a +

    cairo_win32_font_face_create_for_hfont ()

    +
    cairo_font_face_t *
    +cairo_win32_font_face_create_for_hfont
    +                               (HFONT font);
    +

    Creates a new font for the Win32 font backend based on a HFONT. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). +cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t -returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). -

    -
    +returned from cairo_scaled_font_create() is also for the Win32 backend +and can be used with functions such as cairo_win32_scaled_font_select_font().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    font :

    An HFONT structure specifying the font to use.

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    font

    An HFONT structure specifying the font to use.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.2


    -

    cairo_win32_font_face_create_for_logfontw_hfont ()

    -
    cairo_font_face_t * cairo_win32_font_face_create_for_logfontw_hfont
    -                                                        (LOGFONTW *logfont,
    -                                                         HFONT font);
    -

    -Creates a new font for the Win32 font backend based on a +

    cairo_win32_font_face_create_for_logfontw_hfont ()

    +
    cairo_font_face_t *
    +cairo_win32_font_face_create_for_logfontw_hfont
    +                               (LOGFONTW *logfont,
    +                                HFONT font);
    +

    Creates a new font for the Win32 font backend based on a LOGFONT. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). +cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t -returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). -

    -
    +returned from cairo_scaled_font_create() is also for the Win32 backend +and can be used with functions such as cairo_win32_scaled_font_select_font().

    +
    +

    Parameters

    +
    --+++ - - + - - - - +lfEscapement must be zero.

    + - - + + +

    logfont :

    A LOGFONTW structure specifying the font to use. -If font is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement +

    logfont

    A LOGFONTW structure specifying the font to use. +If font +is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement fields of this structure are ignored. Otherwise lfWidth, lfOrientation and -lfEscapement must be zero.

    font :

    An HFONT that can be used when the font matrix is a scale by --lfHeight and the CTM is identity. 

    Returns :

    a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it.

    font

    An HFONT that can be used when the font matrix is a scale by +-lfHeight and the CTM is identity.

     
    +
    +
    +

    Returns

    +

    a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it.

    +

    +

    Since 1.6


    -

    cairo_win32_scaled_font_select_font ()

    -
    cairo_status_t      cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font,
    -                                                         HDC hdc);
    -

    -Selects the font into the given device context and changes the +

    cairo_win32_scaled_font_select_font ()

    +
    cairo_status_t
    +cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font,
    +                                     HDC hdc);
    +

    Selects the font into the given device context and changes the map mode and world transformation of the device context to match that of the font. This function is intended for use when using layout APIs such as Uniscribe to do text layout with the cairo font. After finishing using the device context, you must call -cairo_win32_scaled_font_done_font() to release any resources allocated -by this function. -

    -

    -See cairo_win32_scaled_font_get_metrics_factor() for converting logical -coordinates from the device context to font space. -

    -

    -Normally, calls to SaveDC() and RestoreDC() would be made around -the use of this function to preserve the original graphics state. -

    -
    +cairo_win32_scaled_font_done_font() to release any resources allocated +by this function.

    +

    See cairo_win32_scaled_font_get_metrics_factor() for converting logical +coordinates from the device context to font space.

    +

    Normally, calls to SaveDC() and RestoreDC() would be made around +the use of this function to preserve the original graphics state.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + +

    scaled_font :

    A cairo_scaled_font_t from the Win32 font backend. Such an -object can be created with cairo_win32_font_face_create_for_logfontw().

    scaled_font

    A cairo_scaled_font_t from the Win32 font backend. Such an +object can be created with cairo_win32_font_face_create_for_logfontw().

     

    hdc :

    a device context

    Returns :

    -CAIRO_STATUS_SUCCESS if the operation succeeded. -otherwise an error such as CAIRO_STATUS_NO_MEMORY and -the device context is unchanged.

    hdc

    a device context

     
    +
    +
    +

    Returns

    +

    CAIRO_STATUS_SUCCESS if the operation succeeded. +otherwise an error such as CAIRO_STATUS_NO_MEMORY and +the device context is unchanged.

    +

    +

    Since 1.0


    -

    cairo_win32_scaled_font_done_font ()

    -
    void                cairo_win32_scaled_font_done_font   (cairo_scaled_font_t *scaled_font);
    -

    -Releases any resources allocated by cairo_win32_scaled_font_select_font() -

    -
    +

    cairo_win32_scaled_font_done_font ()

    +
    void
    +cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font);
    +

    Releases any resources allocated by cairo_win32_scaled_font_select_font()

    +
    +

    Parameters

    +
    --+++ - - + + +

    scaled_font :

    A scaled font from the Win32 font backend.

    scaled_font

    A scaled font from the Win32 font backend.

     
    +

    Since 1.0


    -

    cairo_win32_scaled_font_get_metrics_factor ()

    -
    double              cairo_win32_scaled_font_get_metrics_factor
    -                                                        (cairo_scaled_font_t *scaled_font);
    -

    -Gets a scale factor between logical coordinates in the coordinate -space used by cairo_win32_scaled_font_select_font() (that is, the +

    cairo_win32_scaled_font_get_metrics_factor ()

    +
    double
    +cairo_win32_scaled_font_get_metrics_factor
    +                               (cairo_scaled_font_t *scaled_font);
    +

    Gets a scale factor between logical coordinates in the coordinate +space used by cairo_win32_scaled_font_select_font() (that is, the coordinate system used by the Windows functions to return metrics) and -font space coordinates. -

    -
    +font space coordinates.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    scaled_font :

    a scaled font from the Win32 font backend

    Returns :

    factor to multiply logical units by to get font space -coordinates.

    scaled_font

    a scaled font from the Win32 font backend

     
    +
    +
    +

    Returns

    +

    factor to multiply logical units by to get font space +coordinates.

    +

    +

    Since 1.0


    -

    cairo_win32_scaled_font_get_logical_to_device ()

    -
    void                cairo_win32_scaled_font_get_logical_to_device
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *logical_to_device);
    -

    -Gets the transformation mapping the logical space used by scaled_font -to device space. -

    -
    +

    cairo_win32_scaled_font_get_logical_to_device ()

    +
    void
    +cairo_win32_scaled_font_get_logical_to_device
    +                               (cairo_scaled_font_t *scaled_font,
    +                                cairo_matrix_t *logical_to_device);
    +

    Gets the transformation mapping the logical space used by scaled_font + +to device space.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a scaled font from the Win32 font backend

    scaled_font

    a scaled font from the Win32 font backend

     

    logical_to_device :

    matrix to return

    logical_to_device

    matrix to return

     
    +

    Since 1.4


    -

    cairo_win32_scaled_font_get_device_to_logical ()

    -
    void                cairo_win32_scaled_font_get_device_to_logical
    -                                                        (cairo_scaled_font_t *scaled_font,
    -                                                         cairo_matrix_t *device_to_logical);
    -

    -Gets the transformation mapping device space to the logical space -used by scaled_font. -

    -
    +

    cairo_win32_scaled_font_get_device_to_logical ()

    +
    void
    +cairo_win32_scaled_font_get_device_to_logical
    +                               (cairo_scaled_font_t *scaled_font,
    +                                cairo_matrix_t *device_to_logical);
    +

    Gets the transformation mapping device space to the logical space +used by scaled_font +.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    scaled_font :

    a scaled font from the Win32 font backend

    scaled_font

    a scaled font from the Win32 font backend

     

    device_to_logical :

    matrix to return

    device_to_logical

    matrix to return

     
    +

    Since 1.4

    +

    Types and Values

    +
    +

    CAIRO_HAS_WIN32_FONT

    +
    #define CAIRO_HAS_WIN32_FONT 1
    +
    +

    Defined if the Microsoft Windows font backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.8

    +
    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-Win32-Surfaces.html cairo-1.14.2/doc/public/html/cairo-Win32-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-Win32-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-Win32-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -Win32 Surfaces +Cairo: A Vector Graphics Library: Win32 Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,266 +30,342 @@

    Win32 Surfaces

    Win32 Surfaces — Microsoft Windows surface support

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_WIN32_SURFACE
    -cairo_surface_t *   cairo_win32_surface_create          (HDC hdc);
    -cairo_surface_t *   cairo_win32_surface_create_with_dib (cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_win32_surface_create_with_ddb (HDC hdc,
    -                                                         cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_win32_printing_surface_create (HDC hdc);
    -HDC                 cairo_win32_surface_get_dc          (cairo_surface_t *surface);
    -cairo_surface_t *   cairo_win32_surface_get_image       (cairo_surface_t *surface);
    +
    +
    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_WIN32_SURFACE
    +
    +
    +

    Object Hierarchy

    +
     

    Description

    -

    -The Microsoft Windows surface is used to render cairo graphics to -Microsoft Windows windows, bitmaps, and printing device contexts. -

    -

    -The surface returned by cairo_win32_printing_surface_create() is of surface +

    The Microsoft Windows surface is used to render cairo graphics to +Microsoft Windows windows, bitmaps, and printing device contexts.

    +

    The surface returned by cairo_win32_printing_surface_create() is of surface type CAIRO_SURFACE_TYPE_WIN32_PRINTING and is a multi-page vector surface -type. -

    -

    -The surface returned by the other win32 constructors is of surface type -CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type. -

    +type.

    +

    The surface returned by the other win32 constructors is of surface type +CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type.

    -

    Details

    -
    -

    CAIRO_HAS_WIN32_SURFACE

    -
    #define CAIRO_HAS_WIN32_SURFACE 1
    -
    -

    -Defined if the Microsoft Windows surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.0

    -
    -
    +

    Functions

    -

    cairo_win32_surface_create ()

    -
    cairo_surface_t *   cairo_win32_surface_create          (HDC hdc);
    -

    -Creates a cairo surface that targets the given DC. The DC will be +

    cairo_win32_surface_create ()

    +
    cairo_surface_t *
    +cairo_win32_surface_create (HDC hdc);
    +

    Creates a cairo surface that targets the given DC. The DC will be queried for its initial clip extents, and this will be used as the size of the cairo surface. The resulting surface will always be of format CAIRO_FORMAT_RGB24; should you need another surface format, you will need to create one through -cairo_win32_surface_create_with_dib(). -

    -
    +cairo_win32_surface_create_with_dib().

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    hdc :

    the DC to create a surface for

    Returns :

    the newly created surface

    hdc

    the DC to create a surface for

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.0


    -

    cairo_win32_surface_create_with_dib ()

    -
    cairo_surface_t *   cairo_win32_surface_create_with_dib (cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates a device-independent-bitmap surface not associated with +

    cairo_win32_surface_create_with_dib ()

    +
    cairo_surface_t *
    +cairo_win32_surface_create_with_dib (cairo_format_t format,
    +                                     int width,
    +                                     int height);
    +

    Creates a device-independent-bitmap surface not associated with any particular existing surface or device context. The created -bitmap will be uninitialized. -

    -
    +bitmap will be uninitialized.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + +

    format :

    format of pixels in the surface to create

    width :

    width of the surface, in pixels

    format

    format of pixels in the surface to create

     

    height :

    height of the surface, in pixels

    width

    width of the surface, in pixels

     

    Returns :

    the newly created surface

    height

    height of the surface, in pixels

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.2


    -

    cairo_win32_surface_create_with_ddb ()

    -
    cairo_surface_t *   cairo_win32_surface_create_with_ddb (HDC hdc,
    -                                                         cairo_format_t format,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates a device-dependent-bitmap surface not associated with +

    cairo_win32_surface_create_with_ddb ()

    +
    cairo_surface_t *
    +cairo_win32_surface_create_with_ddb (HDC hdc,
    +                                     cairo_format_t format,
    +                                     int width,
    +                                     int height);
    +

    Creates a device-dependent-bitmap surface not associated with any particular existing surface or device context. The created -bitmap will be uninitialized. -

    -
    +bitmap will be uninitialized.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - - - - - + + +

    hdc :

    a DC compatible with the surface to create

    hdc

    a DC compatible with the surface to create

     

    format :

    format of pixels in the surface to create

    format

    format of pixels in the surface to create

     

    width :

    width of the surface, in pixels

    width

    width of the surface, in pixels

     

    height :

    height of the surface, in pixels

    Returns :

    the newly created surface

    height

    height of the surface, in pixels

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.4


    -

    cairo_win32_printing_surface_create ()

    -
    cairo_surface_t *   cairo_win32_printing_surface_create (HDC hdc);
    -

    -Creates a cairo surface that targets the given DC. The DC will be +

    cairo_win32_printing_surface_create ()

    +
    cairo_surface_t *
    +cairo_win32_printing_surface_create (HDC hdc);
    +

    Creates a cairo surface that targets the given DC. The DC will be queried for its initial clip extents, and this will be used as the size of the cairo surface. The DC should be a printing DC; antialiasing will be ignored, and GDI will be used as much as -possible to draw to the surface. -

    -

    -The returned surface will be wrapped using the paginated surface to -provide correct complex rendering behaviour; cairo_surface_show_page() and -associated methods must be used for correct output. -

    -
    +possible to draw to the surface.

    +

    The returned surface will be wrapped using the paginated surface to +provide correct complex rendering behaviour; cairo_surface_show_page() and +associated methods must be used for correct output.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    hdc :

    the DC to create a surface for

    Returns :

    the newly created surface

    hdc

    the DC to create a surface for

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.6


    -

    cairo_win32_surface_get_dc ()

    -
    HDC                 cairo_win32_surface_get_dc          (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 +

    cairo_win32_surface_get_dc ()

    +
    HDC
    +cairo_win32_surface_get_dc (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. -

    -
    +call to cairo_surface_mark_dirty() is required after the state or +the content of the HDC has been modified.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    HDC or NULL if no HDC available.

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    HDC or NULL if no HDC available.

    +

    +

    Since 1.2


    -

    cairo_win32_surface_get_image ()

    -
    cairo_surface_t *   cairo_win32_surface_get_image       (cairo_surface_t *surface);
    -

    -Returns a cairo_surface_t image surface that refers to the same bits +

    cairo_win32_surface_get_image ()

    +
    cairo_surface_t *
    +cairo_win32_surface_get_image (cairo_surface_t *surface);
    +

    Returns a cairo_surface_t image surface that refers to the same bits as the DIB of the Win32 surface. If the passed-in win32 surface -is not a DIB surface, NULL is returned. -

    -
    +is not a DIB surface, NULL is returned.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    a cairo_surface_t -

    Returns :

    a cairo_surface_t (owned by the win32 cairo_surface_t), -or NULL if the win32 surface is not a DIB.

    surface

    a cairo_surface_t

     
    +
    +
    +

    Returns

    +

    a cairo_surface_t (owned by the win32 cairo_surface_t), +or NULL if the win32 surface is not a DIB.

    +

    +

    Since 1.4

    +

    Types and Values

    +
    +

    CAIRO_HAS_WIN32_SURFACE

    +
    #define CAIRO_HAS_WIN32_SURFACE 1
    +
    +

    Defined if the Microsoft Windows surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.0

    +
    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-XCB-Surfaces.html cairo-1.14.2/doc/public/html/cairo-XCB-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-XCB-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-XCB-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -XCB Surfaces +Cairo: A Vector Graphics Library: XCB Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,525 +30,643 @@

    XCB Surfaces

    XCB Surfaces — X Window System rendering using the XCB library

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_XCB_SURFACE
    -#define             CAIRO_HAS_XCB_SHM_FUNCTIONS
    -cairo_surface_t *   cairo_xcb_surface_create            (xcb_connection_t *connection,
    -                                                         xcb_drawable_t drawable,
    -                                                         xcb_visualtype_t *visual,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection,
    -                                                         xcb_screen_t *screen,
    -                                                         xcb_pixmap_t bitmap,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_xcb_surface_create_with_xrender_format
    -                                                        (xcb_connection_t *connection,
    -                                                         xcb_screen_t *screen,
    -                                                         xcb_drawable_t drawable,
    -                                                         xcb_render_pictforminfo_t *format,
    -                                                         int width,
    -                                                         int height);
    -void                cairo_xcb_surface_set_size          (cairo_surface_t *surface,
    -                                                         int width,
    -                                                         int height);
    -void                cairo_xcb_surface_set_drawable      (cairo_surface_t *surface,
    -                                                         xcb_drawable_t drawable,
    -                                                         int width,
    -                                                         int height);
    -xcb_connection_t *  cairo_xcb_device_get_connection     (cairo_device_t *device);
    -void                cairo_xcb_device_debug_cap_xrender_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -void                cairo_xcb_device_debug_cap_xshm_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -int                 cairo_xcb_device_debug_get_precision
    -                                                        (cairo_device_t *device);
    -void                cairo_xcb_device_debug_set_precision
    -                                                        (cairo_device_t *device,
    -                                                         int precision);
    -
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_surface_t * + +cairo_xcb_surface_create () +
    +cairo_surface_t * + +cairo_xcb_surface_create_for_bitmap () +
    +cairo_surface_t * + +cairo_xcb_surface_create_with_xrender_format () +
    +void + +cairo_xcb_surface_set_size () +
    +void + +cairo_xcb_surface_set_drawable () +
    +xcb_connection_t * + +cairo_xcb_device_get_connection () +
    +void + +cairo_xcb_device_debug_cap_xrender_version () +
    +void + +cairo_xcb_device_debug_cap_xshm_version () +
    +int + +cairo_xcb_device_debug_get_precision () +
    +void + +cairo_xcb_device_debug_set_precision () +
    -

    Description

    -

    -The XCB surface is used to render cairo graphics to X Window System -windows and pixmaps using the XCB library. -

    -

    -Note that the XCB surface automatically takes advantage of the X render -extension if it is available. -

    +

    Types and Values

    +
    ++++ + + + + + + + + + + +
    #defineCAIRO_HAS_XCB_SURFACE
    #defineCAIRO_HAS_XCB_SHM_FUNCTIONS
    -

    Details

    -
    -

    CAIRO_HAS_XCB_SURFACE

    -
    #define CAIRO_HAS_XCB_SURFACE 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the xcb surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.12

    -
    -
    -

    CAIRO_HAS_XCB_SHM_FUNCTIONS

    -
    #define CAIRO_HAS_XCB_SHM_FUNCTIONS 1
    -
    -

    -

    +
    +

    Description

    +

    The XCB surface is used to render cairo graphics to X Window System +windows and pixmaps using the XCB library.

    +

    Note that the XCB surface automatically takes advantage of the X render +extension if it is available.

    -
    +
    +

    Functions

    -

    cairo_xcb_surface_create ()

    -
    cairo_surface_t *   cairo_xcb_surface_create            (xcb_connection_t *connection,
    -                                                         xcb_drawable_t drawable,
    -                                                         xcb_visualtype_t *visual,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an XCB surface that draws to the given drawable. +

    cairo_xcb_surface_create ()

    +
    cairo_surface_t *
    +cairo_xcb_surface_create (xcb_connection_t *connection,
    +                          xcb_drawable_t drawable,
    +                          xcb_visualtype_t *visual,
    +                          int width,
    +                          int height);
    +

    Creates an XCB surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided visual. -

    -

    -Note: If drawable is a Window, then the function -cairo_xcb_surface_set_size() must be called whenever the size of the -window changes. -

    -

    -When drawable is a Window containing child windows then drawing to +by the provided visual.

    +

    Note: If drawable + is a Window, then the function +cairo_xcb_surface_set_size() must be called whenever the size of the +window changes.

    +

    When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. -

    -
    +children will be included.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + +Currently, only TrueColor visuals are fully supported.

    + - - + + + - - - - - - + + +

    connection :

    an XCB connection

    connection

    an XCB connection

     

    drawable :

    an XCB drawable

    drawable

    an XCB drawable

     

    visual :

    the visual to use for drawing to drawable. The depth +

    visual

    the visual to use for drawing to drawable +. The depth of the visual must match the depth of the drawable. -Currently, only TrueColor visuals are fully supported.

     

    width :

    the current width of drawable -

    width

    the current width of drawable +

     

    height :

    the current height of drawable -

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height

    the current height of drawable +

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_xcb_surface_create_for_bitmap ()

    -
    cairo_surface_t *   cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection,
    -                                                         xcb_screen_t *screen,
    -                                                         xcb_pixmap_t bitmap,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an XCB surface that draws to the given bitmap. -This will be drawn to as a CAIRO_FORMAT_A1 object. -

    -
    +

    cairo_xcb_surface_create_for_bitmap ()

    +
    cairo_surface_t *
    +cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection,
    +                                     xcb_screen_t *screen,
    +                                     xcb_pixmap_t bitmap,
    +                                     int width,
    +                                     int height);
    +

    Creates an XCB surface that draws to the given bitmap. +This will be drawn to as a CAIRO_FORMAT_A1 object.

    +
    +

    Parameters

    +
    --+++ - - - - - - + + + - - + + + - - + + + - - + + + - - + + +

    connection :

    an XCB connection

    screen :

    the XCB screen associated with bitmap -

    connection

    an XCB connection

     

    bitmap :

    an XCB drawable (a Pixmap with depth 1)

    screen

    the XCB screen associated with bitmap +

     

    width :

    the current width of bitmap -

    bitmap

    an XCB drawable (a Pixmap with depth 1)

     

    height :

    the current height of bitmap -

    width

    the current width of bitmap +

     

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height

    the current height of bitmap +

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_xcb_surface_create_with_xrender_format ()

    -
    cairo_surface_t *   cairo_xcb_surface_create_with_xrender_format
    -                                                        (xcb_connection_t *connection,
    -                                                         xcb_screen_t *screen,
    -                                                         xcb_drawable_t drawable,
    -                                                         xcb_render_pictforminfo_t *format,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an XCB surface that draws to the given drawable. +

    cairo_xcb_surface_create_with_xrender_format ()

    +
    cairo_surface_t *
    +cairo_xcb_surface_create_with_xrender_format
    +                               (xcb_connection_t *connection,
    +                                xcb_screen_t *screen,
    +                                xcb_drawable_t drawable,
    +                                xcb_render_pictforminfo_t *format,
    +                                int width,
    +                                int height);
    +

    Creates an XCB surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided picture format. -

    -

    -Note: If drawable is a Window, then the function -cairo_xcb_surface_set_size() must be called whenever the size of the -window changes. -

    -

    -When drawable is a Window containing child windows then drawing to +by the provided picture format.

    +

    Note: If drawable + is a Window, then the function +cairo_xcb_surface_set_size() must be called whenever the size of the +window changes.

    +

    When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. -

    -
    +children will be included.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - + + + - - - - - - + + +

    connection :

    an XCB connection

    connection

    an XCB connection

     

    screen :

    the XCB screen associated with drawable -

    screen

    the XCB screen associated with drawable +

     

    drawable :

    an XCB drawable

    drawable

    an XCB drawable

     

    format :

    the picture format to use for drawing to drawable. The -depth of format mush match the depth of the drawable.

    format

    the picture format to use for drawing to drawable +. The +depth of format +mush match the depth of the drawable.

     

    width :

    the current width of drawable -

    width

    the current width of drawable +

     

    height :

    the current height of drawable -

    Returns :

    a pointer to the newly created surface. The caller -owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this.

    height

    the current height of drawable +

     
    +
    +
    +

    Returns

    +

    a pointer to the newly created surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it.

    +

    This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if an error such as out of memory +occurs. You can use cairo_surface_status() to check for this.

    +

    +

    Since 1.12


    -

    cairo_xcb_surface_set_size ()

    -
    void                cairo_xcb_surface_set_size          (cairo_surface_t *surface,
    -                                                         int width,
    -                                                         int height);
    -

    -Informs cairo of the new size of the XCB drawable underlying the +

    cairo_xcb_surface_set_size ()

    +
    void
    +cairo_xcb_surface_set_size (cairo_surface_t *surface,
    +                            int width,
    +                            int height);
    +

    Informs cairo of the new size of the XCB drawable underlying the surface. For a surface created for a window (rather than a pixmap), this function must be called each time the size of the window changes. (For a subwindow, you are normally resizing the window yourself, but for a toplevel window, it is necessary to listen for -ConfigureNotify events.) -

    -

    -A pixmap can never change size, so it is never necessary to call -this function on a surface created for a pixmap. -

    -

    -If cairo_surface_flush() wasn't called, some pending operations -might be discarded. -

    -
    +ConfigureNotify events.)

    +

    A pixmap can never change size, so it is never necessary to call +this function on a surface created for a pixmap.

    +

    If cairo_surface_flush() wasn't called, some pending operations +might be discarded.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t for the XCB backend

    surface

    a cairo_surface_t for the XCB backend

     

    width :

    the new width of the surface

    width

    the new width of the surface

     

    height :

    the new height of the surface

    height

    the new height of the surface

     
    +

    Since 1.12


    -

    cairo_xcb_surface_set_drawable ()

    -
    void                cairo_xcb_surface_set_drawable      (cairo_surface_t *surface,
    -                                                         xcb_drawable_t drawable,
    -                                                         int width,
    -                                                         int height);
    -

    -Informs cairo of the new drawable and size of the XCB drawable underlying the -surface. -

    -

    -If cairo_surface_flush() wasn't called, some pending operations -might be discarded. -

    -
    +

    cairo_xcb_surface_set_drawable ()

    +
    void
    +cairo_xcb_surface_set_drawable (cairo_surface_t *surface,
    +                                xcb_drawable_t drawable,
    +                                int width,
    +                                int height);
    +

    Informs cairo of the new drawable and size of the XCB drawable underlying the +surface.

    +

    If cairo_surface_flush() wasn't called, some pending operations +might be discarded.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t for the XCB backend

    surface

    a cairo_surface_t for the XCB backend

     

    drawable :

    the new drawable of the surface

    drawable

    the new drawable of the surface

     

    width :

    the new width of the surface

    width

    the new width of the surface

     

    height :

    the new height of the surface

    height

    the new height of the surface

     
    +

    Since 1.12


    -

    cairo_xcb_device_get_connection ()

    -
    xcb_connection_t *  cairo_xcb_device_get_connection     (cairo_device_t *device);
    -

    -Get the connection for the XCB device. -

    -
    +

    cairo_xcb_device_get_connection ()

    +
    xcb_connection_t *
    +cairo_xcb_device_get_connection (cairo_device_t *device);
    +

    Get the connection for the XCB device.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    device :

    a cairo_device_t for the XCB backend

    Returns :

    the xcb_connection_t for the connection

    device

    a cairo_device_t for the XCB backend

     
    +
    +
    +

    Returns

    +

    the xcb_connection_t for the connection

    +

    +

    Since 1.12


    -

    cairo_xcb_device_debug_cap_xrender_version ()

    -
    void                cairo_xcb_device_debug_cap_xrender_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -

    -Restricts all future XCB surfaces for this devices to the specified version +

    cairo_xcb_device_debug_cap_xrender_version ()

    +
    void
    +cairo_xcb_device_debug_cap_xrender_version
    +                               (cairo_device_t *device,
    +                                int major_version,
    +                                int minor_version);
    +

    Restricts all future XCB surfaces for this devices to the specified version of the RENDER extension. This function exists solely for debugging purpose. It let's you find out how cairo would behave with an older version of -the RENDER extension. -

    -

    -Use the special values -1 and -1 for disabling the RENDER extension. -

    -
    +the RENDER extension.

    +

    Use the special values -1 and -1 for disabling the RENDER extension.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    device :

    a cairo_device_t for the XCB backend

    device

    a cairo_device_t for the XCB backend

     

    major_version :

    major version to restrict to

    major_version

    major version to restrict to

     

    minor_version :

    minor version to restrict to

    minor_version

    minor version to restrict to

     
    +

    Since 1.12


    -

    cairo_xcb_device_debug_cap_xshm_version ()

    -
    void                cairo_xcb_device_debug_cap_xshm_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -

    -Restricts all future XCB surfaces for this devices to the specified version +

    cairo_xcb_device_debug_cap_xshm_version ()

    +
    void
    +cairo_xcb_device_debug_cap_xshm_version
    +                               (cairo_device_t *device,
    +                                int major_version,
    +                                int minor_version);
    +

    Restricts all future XCB surfaces for this devices to the specified version of the SHM extension. This function exists solely for debugging purpose. It let's you find out how cairo would behave with an older version of -the SHM extension. -

    -

    -Use the special values -1 and -1 for disabling the SHM extension. -

    -
    +the SHM extension.

    +

    Use the special values -1 and -1 for disabling the SHM extension.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    device :

    a cairo_device_t for the XCB backend

    device

    a cairo_device_t for the XCB backend

     

    major_version :

    major version to restrict to

    major_version

    major version to restrict to

     

    minor_version :

    minor version to restrict to

    minor_version

    minor version to restrict to

     
    +

    Since 1.12


    -

    cairo_xcb_device_debug_get_precision ()

    -
    int                 cairo_xcb_device_debug_get_precision
    -                                                        (cairo_device_t *device);
    -

    -Get the Xrender precision mode. -

    -
    +

    cairo_xcb_device_debug_get_precision ()

    +
    int
    +cairo_xcb_device_debug_get_precision (cairo_device_t *device);
    +

    Get the Xrender precision mode.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    device :

    a cairo_device_t for the XCB backend

    Returns :

    the render precision mode

    device

    a cairo_device_t for the XCB backend

     
    +
    +
    +

    Returns

    +

    the render precision mode

    +

    +

    Since 1.12


    -

    cairo_xcb_device_debug_set_precision ()

    -
    void                cairo_xcb_device_debug_set_precision
    -                                                        (cairo_device_t *device,
    -                                                         int precision);
    -

    -Render supports two modes of precision when rendering trapezoids. Set -the precision to the desired mode. -

    -
    +

    cairo_xcb_device_debug_set_precision ()

    +
    void
    +cairo_xcb_device_debug_set_precision (cairo_device_t *device,
    +                                      int precision);
    +

    Render supports two modes of precision when rendering trapezoids. Set +the precision to the desired mode.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + +

    device :

    a cairo_device_t for the XCB backend

    device

    a cairo_device_t for the XCB backend

     

    precision :

    the precision to use

    precision

    the precision to use

     
    +
    +

    Since 1.12

    + + +
    +

    Types and Values

    +
    +

    CAIRO_HAS_XCB_SURFACE

    +
    #define CAIRO_HAS_XCB_SURFACE 1
    +
    +

    Defined if the xcb surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    Since 1.12

    +
    +
    +

    CAIRO_HAS_XCB_SHM_FUNCTIONS

    +
    #define CAIRO_HAS_XCB_SHM_FUNCTIONS 1
    +
    +

    +

    +
    + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-XLib-Surfaces.html cairo-1.14.2/doc/public/html/cairo-XLib-Surfaces.html --- cairo-1.13.0~20140204/doc/public/html/cairo-XLib-Surfaces.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-XLib-Surfaces.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -XLib Surfaces +Cairo: A Vector Graphics Library: XLib Surfaces - + - - - - - - - - - - + + + + + + +
    @@ -33,545 +30,701 @@

    XLib Surfaces

    XLib Surfaces — X Window System rendering using XLib

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_XLIB_SURFACE
    -cairo_surface_t *   cairo_xlib_surface_create           (Display *dpy,
    -                                                         Drawable drawable,
    -                                                         Visual *visual,
    -                                                         int width,
    -                                                         int height);
    -cairo_surface_t *   cairo_xlib_surface_create_for_bitmap
    -                                                        (Display *dpy,
    -                                                         Pixmap bitmap,
    -                                                         Screen *screen,
    -                                                         int width,
    -                                                         int height);
    -void                cairo_xlib_surface_set_size         (cairo_surface_t *surface,
    -                                                         int width,
    -                                                         int height);
    -Display *           cairo_xlib_surface_get_display      (cairo_surface_t *surface);
    -Screen *            cairo_xlib_surface_get_screen       (cairo_surface_t *surface);
    -void                cairo_xlib_surface_set_drawable     (cairo_surface_t *surface,
    -                                                         Drawable drawable,
    -                                                         int width,
    -                                                         int height);
    -Drawable            cairo_xlib_surface_get_drawable     (cairo_surface_t *surface);
    -Visual *            cairo_xlib_surface_get_visual       (cairo_surface_t *surface);
    -int                 cairo_xlib_surface_get_width        (cairo_surface_t *surface);
    -int                 cairo_xlib_surface_get_height       (cairo_surface_t *surface);
    -int                 cairo_xlib_surface_get_depth        (cairo_surface_t *surface);
    -void                cairo_xlib_device_debug_cap_xrender_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -int                 cairo_xlib_device_debug_get_precision
    -                                                        (cairo_device_t *device);
    -void                cairo_xlib_device_debug_set_precision
    -                                                        (cairo_device_t *device,
    -                                                         int precision);
    -
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +cairo_surface_t * + +cairo_xlib_surface_create () +
    +cairo_surface_t * + +cairo_xlib_surface_create_for_bitmap () +
    +void + +cairo_xlib_surface_set_size () +
    +Display * + +cairo_xlib_surface_get_display () +
    +Screen * + +cairo_xlib_surface_get_screen () +
    +void + +cairo_xlib_surface_set_drawable () +
    +Drawable + +cairo_xlib_surface_get_drawable () +
    +Visual * + +cairo_xlib_surface_get_visual () +
    +int + +cairo_xlib_surface_get_width () +
    +int + +cairo_xlib_surface_get_height () +
    +int + +cairo_xlib_surface_get_depth () +
    +void + +cairo_xlib_device_debug_cap_xrender_version () +
    +int + +cairo_xlib_device_debug_get_precision () +
    +void + +cairo_xlib_device_debug_set_precision () +
    -

    Description

    -

    -The XLib surface is used to render cairo graphics to X Window System -windows and pixmaps using the XLib library. -

    -

    -Note that the XLib surface automatically takes advantage of X render extension -if it is available. -

    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_XLIB_SURFACE
    -

    Details

    -
    -

    CAIRO_HAS_XLIB_SURFACE

    -
    #define CAIRO_HAS_XLIB_SURFACE 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the Xlib surface backend is available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.0

    -
    +
    +

    Description

    +

    The XLib surface is used to render cairo graphics to X Window System +windows and pixmaps using the XLib library.

    +

    Note that the XLib surface automatically takes advantage of X render extension +if it is available.

    +
    +
    +

    Functions

    -

    cairo_xlib_surface_create ()

    -
    cairo_surface_t *   cairo_xlib_surface_create           (Display *dpy,
    -                                                         Drawable drawable,
    -                                                         Visual *visual,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an Xlib surface that draws to the given drawable. +

    cairo_xlib_surface_create ()

    +
    cairo_surface_t *
    +cairo_xlib_surface_create (Display *dpy,
    +                           Drawable drawable,
    +                           Visual *visual,
    +                           int width,
    +                           int height);
    +

    Creates an Xlib surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided visual. -

    -

    -Note: If drawable is a Window, then the function -cairo_xlib_surface_set_size() must be called whenever the size of the -window changes. -

    -

    -When drawable is a Window containing child windows then drawing to +by the provided visual.

    +

    Note: If drawable + is a Window, then the function +cairo_xlib_surface_set_size() must be called whenever the size of the +window changes.

    +

    When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. -

    -
    +children will be included.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + +Currently, only TrueColor visuals are fully supported.

    + - - + + + - - - - - - + + +

    dpy :

    an X Display

    dpy

    an X Display

     

    drawable :

    an X Drawable, (a Pixmap or a Window)

    drawable

    an X Drawable, (a Pixmap or a Window)

     

    visual :

    the visual to use for drawing to drawable. The depth +

    visual

    the visual to use for drawing to drawable +. The depth of the visual must match the depth of the drawable. -Currently, only TrueColor visuals are fully supported.

     

    width :

    the current width of drawable.

    width

    the current width of drawable +.

     

    height :

    the current height of drawable.

    Returns :

    the newly created surface

    height

    the current height of drawable +.

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.0


    -

    cairo_xlib_surface_create_for_bitmap ()

    -
    cairo_surface_t *   cairo_xlib_surface_create_for_bitmap
    -                                                        (Display *dpy,
    -                                                         Pixmap bitmap,
    -                                                         Screen *screen,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an Xlib surface that draws to the given bitmap. -This will be drawn to as a CAIRO_FORMAT_A1 object. -

    -
    +

    cairo_xlib_surface_create_for_bitmap ()

    +
    cairo_surface_t *
    +cairo_xlib_surface_create_for_bitmap (Display *dpy,
    +                                      Pixmap bitmap,
    +                                      Screen *screen,
    +                                      int width,
    +                                      int height);
    +

    Creates an Xlib surface that draws to the given bitmap. +This will be drawn to as a CAIRO_FORMAT_A1 object.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + + - - - - - - + + +

    dpy :

    an X Display

    dpy

    an X Display

     

    bitmap :

    an X Drawable, (a depth-1 Pixmap)

    bitmap

    an X Drawable, (a depth-1 Pixmap)

     

    screen :

    the X Screen associated with bitmap -

    screen

    the X Screen associated with bitmap +

     

    width :

    the current width of bitmap.

    width

    the current width of bitmap +.

     

    height :

    the current height of bitmap.

    Returns :

    the newly created surface

    height

    the current height of bitmap +.

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.0


    -

    cairo_xlib_surface_set_size ()

    -
    void                cairo_xlib_surface_set_size         (cairo_surface_t *surface,
    -                                                         int width,
    -                                                         int height);
    -

    -Informs cairo of the new size of the X Drawable underlying the +

    cairo_xlib_surface_set_size ()

    +
    void
    +cairo_xlib_surface_set_size (cairo_surface_t *surface,
    +                             int width,
    +                             int height);
    +

    Informs cairo of the new size of the X Drawable underlying the surface. For a surface created for a Window (rather than a Pixmap), this function must be called each time the size of the window changes. (For a subwindow, you are normally resizing the window yourself, but for a toplevel window, it is necessary to listen for -ConfigureNotify events.) -

    -

    -A Pixmap can never change size, so it is never necessary to call -this function on a surface created for a Pixmap. -

    -
    +ConfigureNotify events.)

    +

    A Pixmap can never change size, so it is never necessary to call +this function on a surface created for a Pixmap.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t for the XLib backend

    surface

    a cairo_surface_t for the XLib backend

     

    width :

    the new width of the surface

    width

    the new width of the surface

     

    height :

    the new height of the surface

    height

    the new height of the surface

     
    +

    Since 1.0


    -

    cairo_xlib_surface_get_display ()

    -
    Display *           cairo_xlib_surface_get_display      (cairo_surface_t *surface);
    -

    -Get the X Display for the underlying X Drawable. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the display.
    +

    cairo_xlib_surface_get_display ()

    +
    Display *
    +cairo_xlib_surface_get_display (cairo_surface_t *surface);
    +

    Get the X Display for the underlying X Drawable.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the display.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_get_screen ()

    -
    Screen *            cairo_xlib_surface_get_screen       (cairo_surface_t *surface);
    -

    -Get the X Screen for the underlying X Drawable. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the screen.
    +

    cairo_xlib_surface_get_screen ()

    +
    Screen *
    +cairo_xlib_surface_get_screen (cairo_surface_t *surface);
    +

    Get the X Screen for the underlying X Drawable.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the screen.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_set_drawable ()

    -
    void                cairo_xlib_surface_set_drawable     (cairo_surface_t *surface,
    -                                                         Drawable drawable,
    -                                                         int width,
    -                                                         int height);
    -

    -Informs cairo of a new X Drawable underlying the +

    cairo_xlib_surface_set_drawable ()

    +
    void
    +cairo_xlib_surface_set_drawable (cairo_surface_t *surface,
    +                                 Drawable drawable,
    +                                 int width,
    +                                 int height);
    +

    Informs cairo of a new X Drawable underlying the surface. The drawable must match the display, screen and format of the existing drawable or the application will get X protocol errors and will probably terminate. No checks are done by this function to ensure this -compatibility. -

    -
    +compatibility.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + + - - + + +

    surface :

    a cairo_surface_t for the XLib backend

    surface

    a cairo_surface_t for the XLib backend

     

    drawable :

    the new drawable for the surface

    drawable

    the new drawable for the surface

     

    width :

    the width of the new drawable

    width

    the width of the new drawable

     

    height :

    the height of the new drawable

    height

    the height of the new drawable

     
    +

    Since 1.0


    -

    cairo_xlib_surface_get_drawable ()

    -
    Drawable            cairo_xlib_surface_get_drawable     (cairo_surface_t *surface);
    -

    -Get the underlying X Drawable used for the surface. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the drawable.
    +

    cairo_xlib_surface_get_drawable ()

    +
    Drawable
    +cairo_xlib_surface_get_drawable (cairo_surface_t *surface);
    +

    Get the underlying X Drawable used for the surface.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the drawable.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_get_visual ()

    -
    Visual *            cairo_xlib_surface_get_visual       (cairo_surface_t *surface);
    -

    -Gets the X Visual associated with surface, suitable for use with the -underlying X Drawable. If surface was created by -cairo_xlib_surface_create(), the return value is the Visual passed to that -constructor. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the Visual or NULL if there is no appropriate Visual for -surface.
    +

    cairo_xlib_surface_get_visual ()

    +
    Visual *
    +cairo_xlib_surface_get_visual (cairo_surface_t *surface);
    +

    Gets the X Visual associated with surface +, suitable for use with the +underlying X Drawable. If surface + was created by +cairo_xlib_surface_create(), the return value is the Visual passed to that +constructor.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the Visual or NULL if there is no appropriate Visual for +surface +.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_get_width ()

    -
    int                 cairo_xlib_surface_get_width        (cairo_surface_t *surface);
    -

    -Get the width of the X Drawable underlying the surface in pixels. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the width of the surface in pixels.
    +

    cairo_xlib_surface_get_width ()

    +
    int
    +cairo_xlib_surface_get_width (cairo_surface_t *surface);
    +

    Get the width of the X Drawable underlying the surface in pixels.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the width of the surface in pixels.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_get_height ()

    -
    int                 cairo_xlib_surface_get_height       (cairo_surface_t *surface);
    -

    -Get the height of the X Drawable underlying the surface in pixels. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the height of the surface in pixels.
    +

    cairo_xlib_surface_get_height ()

    +
    int
    +cairo_xlib_surface_get_height (cairo_surface_t *surface);
    +

    Get the height of the X Drawable underlying the surface in pixels.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the height of the surface in pixels.

    +

    +

    Since 1.2


    -

    cairo_xlib_surface_get_depth ()

    -
    int                 cairo_xlib_surface_get_depth        (cairo_surface_t *surface);
    -

    -Get the number of bits used to represent each pixel value. -

    -
    ---- - - - - - - - - - - -

    surface :

    a cairo_xlib_surface_t -

    Returns :

    the depth of the surface in bits.
    +

    cairo_xlib_surface_get_depth ()

    +
    int
    +cairo_xlib_surface_get_depth (cairo_surface_t *surface);
    +

    Get the number of bits used to represent each pixel value.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    surface

    a cairo_xlib_surface_t

     
    +
    +
    +

    Returns

    +

    the depth of the surface in bits.

    +

    +

    Since 1.2


    -

    cairo_xlib_device_debug_cap_xrender_version ()

    -
    void                cairo_xlib_device_debug_cap_xrender_version
    -                                                        (cairo_device_t *device,
    -                                                         int major_version,
    -                                                         int minor_version);
    -

    -Restricts all future Xlib surfaces for this devices to the specified version +

    cairo_xlib_device_debug_cap_xrender_version ()

    +
    void
    +cairo_xlib_device_debug_cap_xrender_version
    +                               (cairo_device_t *device,
    +                                int major_version,
    +                                int minor_version);
    +

    Restricts all future Xlib surfaces for this devices to the specified version of the RENDER extension. This function exists solely for debugging purpose. -It let's you find out how cairo would behave with an older version of -the RENDER extension. -

    -

    -Use the special values -1 and -1 for disabling the RENDER extension. -

    -
    +It lets you find out how cairo would behave with an older version of +the RENDER extension.

    +

    Use the special values -1 and -1 for disabling the RENDER extension.

    +
    +

    Parameters

    +
    --+++ - - + + + - - + + + - - + + +

    device :

    a cairo_device_t for the Xlib backend

    device

    a cairo_device_t for the Xlib backend

     

    major_version :

    major version to restrict to

    major_version

    major version to restrict to

     

    minor_version :

    minor version to restrict to

    minor_version

    minor version to restrict to

     
    +

    Since 1.12


    -

    cairo_xlib_device_debug_get_precision ()

    -
    int                 cairo_xlib_device_debug_get_precision
    -                                                        (cairo_device_t *device);
    -

    -Get the Xrender precision mode. -

    -
    ---- - - - - - - - - - - -

    device :

    a cairo_device_t for the Xlib backend

    Returns :

    the render precision mode
    +

    cairo_xlib_device_debug_get_precision ()

    +
    int
    +cairo_xlib_device_debug_get_precision (cairo_device_t *device);
    +

    Get the Xrender precision mode.

    +
    +

    Parameters

    +
    +++++ + + + + + +

    device

    a cairo_device_t for the Xlib backend

     
    +
    +
    +

    Returns

    +

    the render precision mode

    +

    +

    Since 1.12


    -

    cairo_xlib_device_debug_set_precision ()

    -
    void                cairo_xlib_device_debug_set_precision
    -                                                        (cairo_device_t *device,
    -                                                         int precision);
    -

    -Render supports two modes of precision when rendering trapezoids. Set -the precision to the desired mode. -

    -
    ---+

    cairo_xlib_device_debug_set_precision ()

    +
    void
    +cairo_xlib_device_debug_set_precision (cairo_device_t *device,
    +                                       int precision);
    +

    Render supports two modes of precision when rendering trapezoids. Set +the precision to the desired mode.

    +
    +

    Parameters

    +
    ++++ - - - - - - + + + + + + + +

    device :

    a cairo_device_t for the Xlib backend

    precision :

    the precision to use

    device

    a cairo_device_t for the Xlib backend

     

    precision

    the precision to use

     
    +

    Since 1.12

    +

    Types and Values

    +
    +

    CAIRO_HAS_XLIB_SURFACE

    +
    #define CAIRO_HAS_XLIB_SURFACE 1
    +
    +

    Defined if the Xlib surface backend is available. +This macro can be used to conditionally compile backend-specific code.

    +

    Since 1.0

    +
    +
    + + Generated by GTK-Doc V1.20 \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/cairo-XLib-XRender-Backend.html cairo-1.14.2/doc/public/html/cairo-XLib-XRender-Backend.html --- cairo-1.13.0~20140204/doc/public/html/cairo-XLib-XRender-Backend.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/cairo-XLib-XRender-Backend.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,30 +2,27 @@ -XLib-XRender Backend +Cairo: A Vector Graphics Library: XLib-XRender Backend - + - - - - - - - - - - + + + + + + +
    @@ -33,144 +30,188 @@

    XLib-XRender Backend

    XLib-XRender Backend — X Window System rendering using XLib and the X Render extension

    - +
    -
    -

    Synopsis

    -
    #define             CAIRO_HAS_XLIB_XRENDER_SURFACE
    -cairo_surface_t *   cairo_xlib_surface_create_with_xrender_format
    -                                                        (Display *dpy,
    -                                                         Drawable drawable,
    -                                                         Screen *screen,
    -                                                         XRenderPictFormat *format,
    -                                                         int width,
    -                                                         int height);
    -XRenderPictFormat * cairo_xlib_surface_get_xrender_format
    -                                                        (cairo_surface_t *surface);
    -
    +
    +

    Functions

    +
    ++++ + + + + + + + + + + +
    +cairo_surface_t * + +cairo_xlib_surface_create_with_xrender_format () +
    +XRenderPictFormat * + +cairo_xlib_surface_get_xrender_format () +
    -

    Description

    -

    -The XLib surface is used to render cairo graphics to X Window System -windows and pixmaps using the XLib and Xrender libraries. -

    -

    -Note that the XLib surface automatically takes advantage of X Render extension -if it is available. -

    +

    Types and Values

    +
    ++++ + + + + +
    #defineCAIRO_HAS_XLIB_XRENDER_SURFACE
    -

    Details

    -
    -

    CAIRO_HAS_XLIB_XRENDER_SURFACE

    -
    #define CAIRO_HAS_XLIB_XRENDER_SURFACE 1
    +

    Object Hierarchy

    +
     
    -

    -Defined if the XLib/XRender surface functions are available. -This macro can be used to conditionally compile backend-specific code. -

    -

    Since 1.6

    -
    +
    +

    Description

    +

    The XLib surface is used to render cairo graphics to X Window System +windows and pixmaps using the XLib and Xrender libraries.

    +

    Note that the XLib surface automatically takes advantage of X Render extension +if it is available.

    +
    +
    +

    Functions

    -

    cairo_xlib_surface_create_with_xrender_format ()

    -
    cairo_surface_t *   cairo_xlib_surface_create_with_xrender_format
    -                                                        (Display *dpy,
    -                                                         Drawable drawable,
    -                                                         Screen *screen,
    -                                                         XRenderPictFormat *format,
    -                                                         int width,
    -                                                         int height);
    -

    -Creates an Xlib surface that draws to the given drawable. +

    cairo_xlib_surface_create_with_xrender_format ()

    +
    cairo_surface_t *
    +cairo_xlib_surface_create_with_xrender_format
    +                               (Display *dpy,
    +                                Drawable drawable,
    +                                Screen *screen,
    +                                XRenderPictFormat *format,
    +                                int width,
    +                                int height);
    +

    Creates an Xlib surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided picture format. -

    -

    -Note: If drawable is a Window, then the function -cairo_xlib_surface_set_size() must be called whenever the size of the -window changes. -

    -
    +by the provided picture format.

    +

    Note: If drawable + is a Window, then the function +cairo_xlib_surface_set_size() must be called whenever the size of the +window changes.

    +
    +

    Parameters

    +
    --+++ - - + + + - - - - - - + + + - - + + + - - + + + - - + + + - - + + +

    dpy :

    an X Display

    dpy

    an X Display

     

    drawable :

    an X Drawable, (a Pixmap or a Window)

    screen :

    the X Screen associated with drawable -

    drawable

    an X Drawable, (a Pixmap or a Window)

     

    format :

    the picture format to use for drawing to drawable. The depth -of format must match the depth of the drawable.

    screen

    the X Screen associated with drawable +

     

    width :

    the current width of drawable.

    format

    the picture format to use for drawing to drawable +. The depth +of format +must match the depth of the drawable.

     

    height :

    the current height of drawable.

    width

    the current width of drawable +.

     

    Returns :

    the newly created surface

    height

    the current height of drawable +.

     
    +
    +
    +

    Returns

    +

    the newly created surface

    +

    +

    Since 1.0


    -

    cairo_xlib_surface_get_xrender_format ()

    -
    XRenderPictFormat * cairo_xlib_surface_get_xrender_format
    -                                                        (cairo_surface_t *surface);
    -

    -Gets the X Render picture format that surface uses for rendering with the +

    cairo_xlib_surface_get_xrender_format ()

    +
    XRenderPictFormat *
    +cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface);
    +

    Gets the X Render picture format that surface + uses for rendering with the X Render extension. If the surface was created by -cairo_xlib_surface_create_with_xrender_format() originally, the return -value is the format passed to that constructor. -

    -
    +cairo_xlib_surface_create_with_xrender_format() originally, the return +value is the format passed to that constructor.

    +
    +

    Parameters

    +
    --+++ - - - - - - - - - - + + + + +

    surface :

    an xlib surface

    Returns :

    the XRenderPictFormat* associated with surface, -or NULL if the surface is not an xlib surface -or if the X Render extension is not available.

    surface

    an xlib surface

     
    +
    +
    +

    Returns

    +

    the XRenderPictFormat* associated with surface +, +or NULL if the surface is not an xlib surface +or if the X Render extension is not available.

    +

    +
    +

    Since 1.6

    +
    +
    +
    +

    Types and Values

    +
    +

    CAIRO_HAS_XLIB_XRENDER_SURFACE

    +
    #define CAIRO_HAS_XLIB_XRENDER_SURFACE 1
    +
    +

    Defined if the XLib/XRender surface functions are available. +This macro can be used to conditionally compile backend-specific code.

    Since 1.6

    + Generated by GTK-Doc V1.20 \ No newline at end of file Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/home.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/home.png differ diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.10.html cairo-1.14.2/doc/public/html/index-1.10.html --- cairo-1.13.0~20140204/doc/public/html/index-1.10.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.10.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.10 +Cairo: A Vector Graphics Library: Index of new symbols in 1.10 - + - - - - - - + + + + + +

    @@ -26,27 +26,27 @@

    D

    -
    cairo_device_acquire, cairo_device_acquire () +
    cairo_device_acquire, cairo_device_acquire ()
    -
    cairo_device_destroy, cairo_device_destroy () +
    cairo_device_destroy, cairo_device_destroy ()
    -
    cairo_device_finish, cairo_device_finish () +
    cairo_device_finish, cairo_device_finish ()
    -
    cairo_device_flush, cairo_device_flush () +
    cairo_device_flush, cairo_device_flush ()
    -
    cairo_device_get_reference_count, cairo_device_get_reference_count () +
    cairo_device_get_reference_count, cairo_device_get_reference_count ()
    -
    cairo_device_get_type, cairo_device_get_type () +
    cairo_device_get_type, cairo_device_get_type ()
    -
    cairo_device_get_user_data, cairo_device_get_user_data () +
    cairo_device_get_user_data, cairo_device_get_user_data ()
    -
    cairo_device_reference, cairo_device_reference () +
    cairo_device_reference, cairo_device_reference ()
    -
    cairo_device_release, cairo_device_release () +
    cairo_device_release, cairo_device_release ()
    -
    cairo_device_set_user_data, cairo_device_set_user_data () +
    cairo_device_set_user_data, cairo_device_set_user_data ()
    -
    cairo_device_status, cairo_device_status () +
    cairo_device_status, cairo_device_status ()
    cairo_device_t, cairo_device_t
    @@ -65,7 +65,7 @@

    I

    -
    cairo_in_clip, cairo_in_clip () +
    cairo_in_clip, cairo_in_clip ()
    @@ -84,87 +84,87 @@

    P

    -
    cairo_pdf_get_versions, cairo_pdf_get_versions () +
    cairo_pdf_get_versions, cairo_pdf_get_versions ()
    -
    cairo_pdf_surface_restrict_to_version, cairo_pdf_surface_restrict_to_version () +
    cairo_pdf_surface_restrict_to_version, cairo_pdf_surface_restrict_to_version ()
    cairo_pdf_version_t, enum cairo_pdf_version_t
    -
    cairo_pdf_version_to_string, cairo_pdf_version_to_string () +
    cairo_pdf_version_to_string, cairo_pdf_version_to_string ()

    R

    -
    cairo_recording_surface_create, cairo_recording_surface_create () +
    cairo_recording_surface_create, cairo_recording_surface_create ()
    -
    cairo_recording_surface_ink_extents, cairo_recording_surface_ink_extents () +
    cairo_recording_surface_ink_extents, cairo_recording_surface_ink_extents ()
    cairo_rectangle_int_t, cairo_rectangle_int_t
    -
    cairo_region_contains_point, cairo_region_contains_point () +
    cairo_region_contains_point, cairo_region_contains_point ()
    -
    cairo_region_contains_rectangle, cairo_region_contains_rectangle () +
    cairo_region_contains_rectangle, cairo_region_contains_rectangle ()
    -
    cairo_region_copy, cairo_region_copy () +
    cairo_region_copy, cairo_region_copy ()
    -
    cairo_region_create, cairo_region_create () +
    cairo_region_create, cairo_region_create ()
    -
    cairo_region_create_rectangle, cairo_region_create_rectangle () +
    cairo_region_create_rectangle, cairo_region_create_rectangle ()
    -
    cairo_region_create_rectangles, cairo_region_create_rectangles () +
    cairo_region_create_rectangles, cairo_region_create_rectangles ()
    -
    cairo_region_destroy, cairo_region_destroy () +
    cairo_region_destroy, cairo_region_destroy ()
    -
    cairo_region_equal, cairo_region_equal () +
    cairo_region_equal, cairo_region_equal ()
    -
    cairo_region_get_extents, cairo_region_get_extents () +
    cairo_region_get_extents, cairo_region_get_extents ()
    -
    cairo_region_get_rectangle, cairo_region_get_rectangle () +
    cairo_region_get_rectangle, cairo_region_get_rectangle ()
    -
    cairo_region_intersect, cairo_region_intersect () +
    cairo_region_intersect, cairo_region_intersect ()
    -
    cairo_region_intersect_rectangle, cairo_region_intersect_rectangle () +
    cairo_region_intersect_rectangle, cairo_region_intersect_rectangle ()
    -
    cairo_region_is_empty, cairo_region_is_empty () +
    cairo_region_is_empty, cairo_region_is_empty ()
    -
    cairo_region_num_rectangles, cairo_region_num_rectangles () +
    cairo_region_num_rectangles, cairo_region_num_rectangles ()
    cairo_region_overlap_t, enum cairo_region_overlap_t
    -
    cairo_region_reference, cairo_region_reference () +
    cairo_region_reference, cairo_region_reference ()
    -
    cairo_region_status, cairo_region_status () +
    cairo_region_status, cairo_region_status ()
    -
    cairo_region_subtract, cairo_region_subtract () +
    cairo_region_subtract, cairo_region_subtract ()
    -
    cairo_region_subtract_rectangle, cairo_region_subtract_rectangle () +
    cairo_region_subtract_rectangle, cairo_region_subtract_rectangle ()
    cairo_region_t, cairo_region_t
    -
    cairo_region_translate, cairo_region_translate () +
    cairo_region_translate, cairo_region_translate ()
    -
    cairo_region_union, cairo_region_union () +
    cairo_region_union, cairo_region_union ()
    -
    cairo_region_union_rectangle, cairo_region_union_rectangle () +
    cairo_region_union_rectangle, cairo_region_union_rectangle ()
    -
    cairo_region_xor, cairo_region_xor () +
    cairo_region_xor, cairo_region_xor ()
    -
    cairo_region_xor_rectangle, cairo_region_xor_rectangle () +
    cairo_region_xor_rectangle, cairo_region_xor_rectangle ()

    S

    -
    cairo_surface_create_for_rectangle, cairo_surface_create_for_rectangle () +
    cairo_surface_create_for_rectangle, cairo_surface_create_for_rectangle ()
    -
    cairo_surface_get_device, cairo_surface_get_device () +
    cairo_surface_get_device, cairo_surface_get_device ()
    -
    cairo_surface_get_mime_data, cairo_surface_get_mime_data () +
    cairo_surface_get_mime_data, cairo_surface_get_mime_data ()
    -
    cairo_surface_set_mime_data, cairo_surface_set_mime_data () +
    cairo_surface_set_mime_data, cairo_surface_set_mime_data ()
    @@ -172,6 +172,6 @@
    + Generated by GTK-Doc V1.20

    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.12.html cairo-1.14.2/doc/public/html/index-1.12.html --- cairo-1.13.0~20140204/doc/public/html/index-1.12.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.12.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.12 +Cairo: A Vector Graphics Library: Index of new symbols in 1.12 - + - - - - - - + + + + + +

    @@ -26,11 +26,11 @@

    F

    -
    cairo_ft_font_face_get_synthesize, cairo_ft_font_face_get_synthesize () +
    cairo_ft_font_face_get_synthesize, cairo_ft_font_face_get_synthesize ()
    -
    cairo_ft_font_face_set_synthesize, cairo_ft_font_face_set_synthesize () +
    cairo_ft_font_face_set_synthesize, cairo_ft_font_face_set_synthesize ()
    -
    cairo_ft_font_face_unset_synthesize, cairo_ft_font_face_unset_synthesize () +
    cairo_ft_font_face_unset_synthesize, cairo_ft_font_face_unset_synthesize ()
    cairo_ft_synthesize_t, enum cairo_ft_synthesize_t
    @@ -48,29 +48,29 @@

    M

    -
    cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch () +
    cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch ()
    -
    cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to () +
    cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to ()
    -
    cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch () +
    cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch ()
    -
    cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point () +
    cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point ()
    -
    cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba () +
    cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba ()
    -
    cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count () +
    cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count ()
    -
    cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path () +
    cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path ()
    -
    cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to () +
    cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to ()
    -
    cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to () +
    cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to ()
    -
    cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point () +
    cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point ()
    -
    cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb () +
    cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb ()
    -
    cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba () +
    cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba ()
    CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_UNIQUE_ID
    @@ -79,108 +79,108 @@

    P

    -
    cairo_pattern_create_mesh, cairo_pattern_create_mesh () +
    cairo_pattern_create_mesh, cairo_pattern_create_mesh ()
    -
    cairo_pattern_create_raster_source, cairo_pattern_create_raster_source () +
    cairo_pattern_create_raster_source, cairo_pattern_create_raster_source ()

    R

    -
    cairo_raster_source_acquire_func_t, cairo_raster_source_acquire_func_t () +
    cairo_raster_source_acquire_func_t, cairo_raster_source_acquire_func_t ()
    -
    cairo_raster_source_copy_func_t, cairo_raster_source_copy_func_t () +
    cairo_raster_source_copy_func_t, cairo_raster_source_copy_func_t ()
    -
    cairo_raster_source_finish_func_t, cairo_raster_source_finish_func_t () +
    cairo_raster_source_finish_func_t, cairo_raster_source_finish_func_t ()
    -
    cairo_raster_source_pattern_get_acquire, cairo_raster_source_pattern_get_acquire () +
    cairo_raster_source_pattern_get_acquire, cairo_raster_source_pattern_get_acquire ()
    -
    cairo_raster_source_pattern_get_callback_data, cairo_raster_source_pattern_get_callback_data () +
    cairo_raster_source_pattern_get_callback_data, cairo_raster_source_pattern_get_callback_data ()
    -
    cairo_raster_source_pattern_get_copy, cairo_raster_source_pattern_get_copy () +
    cairo_raster_source_pattern_get_copy, cairo_raster_source_pattern_get_copy ()
    -
    cairo_raster_source_pattern_get_finish, cairo_raster_source_pattern_get_finish () +
    cairo_raster_source_pattern_get_finish, cairo_raster_source_pattern_get_finish ()
    -
    cairo_raster_source_pattern_get_snapshot, cairo_raster_source_pattern_get_snapshot () +
    cairo_raster_source_pattern_get_snapshot, cairo_raster_source_pattern_get_snapshot ()
    -
    cairo_raster_source_pattern_set_acquire, cairo_raster_source_pattern_set_acquire () +
    cairo_raster_source_pattern_set_acquire, cairo_raster_source_pattern_set_acquire ()
    -
    cairo_raster_source_pattern_set_callback_data, cairo_raster_source_pattern_set_callback_data () +
    cairo_raster_source_pattern_set_callback_data, cairo_raster_source_pattern_set_callback_data ()
    -
    cairo_raster_source_pattern_set_copy, cairo_raster_source_pattern_set_copy () +
    cairo_raster_source_pattern_set_copy, cairo_raster_source_pattern_set_copy ()
    -
    cairo_raster_source_pattern_set_finish, cairo_raster_source_pattern_set_finish () +
    cairo_raster_source_pattern_set_finish, cairo_raster_source_pattern_set_finish ()
    -
    cairo_raster_source_pattern_set_snapshot, cairo_raster_source_pattern_set_snapshot () +
    cairo_raster_source_pattern_set_snapshot, cairo_raster_source_pattern_set_snapshot ()
    -
    cairo_raster_source_release_func_t, cairo_raster_source_release_func_t () +
    cairo_raster_source_release_func_t, cairo_raster_source_release_func_t ()
    -
    cairo_raster_source_snapshot_func_t, cairo_raster_source_snapshot_func_t () +
    cairo_raster_source_snapshot_func_t, cairo_raster_source_snapshot_func_t ()
    -
    cairo_recording_surface_get_extents, cairo_recording_surface_get_extents () +
    cairo_recording_surface_get_extents, cairo_recording_surface_get_extents ()

    S

    -
    cairo_script_create, cairo_script_create () +
    cairo_script_create, cairo_script_create ()
    -
    cairo_script_create_for_stream, cairo_script_create_for_stream () +
    cairo_script_create_for_stream, cairo_script_create_for_stream ()
    -
    cairo_script_from_recording_surface, cairo_script_from_recording_surface () +
    cairo_script_from_recording_surface, cairo_script_from_recording_surface ()
    -
    cairo_script_get_mode, cairo_script_get_mode () +
    cairo_script_get_mode, cairo_script_get_mode ()
    cairo_script_mode_t, enum cairo_script_mode_t
    -
    cairo_script_set_mode, cairo_script_set_mode () +
    cairo_script_set_mode, cairo_script_set_mode ()
    -
    cairo_script_surface_create, cairo_script_surface_create () +
    cairo_script_surface_create, cairo_script_surface_create ()
    -
    cairo_script_surface_create_for_target, cairo_script_surface_create_for_target () +
    cairo_script_surface_create_for_target, cairo_script_surface_create_for_target ()
    -
    cairo_script_write_comment, cairo_script_write_comment () +
    cairo_script_write_comment, cairo_script_write_comment ()
    -
    cairo_surface_create_similar_image, cairo_surface_create_similar_image () +
    cairo_surface_create_similar_image, cairo_surface_create_similar_image ()
    -
    cairo_surface_map_to_image, cairo_surface_map_to_image () +
    cairo_surface_map_to_image, cairo_surface_map_to_image ()
    -
    cairo_surface_supports_mime_type, cairo_surface_supports_mime_type () +
    cairo_surface_supports_mime_type, cairo_surface_supports_mime_type ()
    -
    cairo_surface_unmap_image, cairo_surface_unmap_image () +
    cairo_surface_unmap_image, cairo_surface_unmap_image ()

    X

    -
    cairo_xcb_device_debug_cap_xrender_version, cairo_xcb_device_debug_cap_xrender_version () +
    cairo_xcb_device_debug_cap_xrender_version, cairo_xcb_device_debug_cap_xrender_version ()
    -
    cairo_xcb_device_debug_cap_xshm_version, cairo_xcb_device_debug_cap_xshm_version () +
    cairo_xcb_device_debug_cap_xshm_version, cairo_xcb_device_debug_cap_xshm_version ()
    -
    cairo_xcb_device_debug_get_precision, cairo_xcb_device_debug_get_precision () +
    cairo_xcb_device_debug_get_precision, cairo_xcb_device_debug_get_precision ()
    -
    cairo_xcb_device_debug_set_precision, cairo_xcb_device_debug_set_precision () +
    cairo_xcb_device_debug_set_precision, cairo_xcb_device_debug_set_precision ()
    -
    cairo_xcb_device_get_connection, cairo_xcb_device_get_connection () +
    cairo_xcb_device_get_connection, cairo_xcb_device_get_connection ()
    -
    cairo_xcb_surface_create, cairo_xcb_surface_create () +
    cairo_xcb_surface_create, cairo_xcb_surface_create ()
    -
    cairo_xcb_surface_create_for_bitmap, cairo_xcb_surface_create_for_bitmap () +
    cairo_xcb_surface_create_for_bitmap, cairo_xcb_surface_create_for_bitmap ()
    -
    cairo_xcb_surface_create_with_xrender_format, cairo_xcb_surface_create_with_xrender_format () +
    cairo_xcb_surface_create_with_xrender_format, cairo_xcb_surface_create_with_xrender_format ()
    -
    cairo_xcb_surface_set_drawable, cairo_xcb_surface_set_drawable () +
    cairo_xcb_surface_set_drawable, cairo_xcb_surface_set_drawable ()
    -
    cairo_xcb_surface_set_size, cairo_xcb_surface_set_size () +
    cairo_xcb_surface_set_size, cairo_xcb_surface_set_size ()
    -
    cairo_xlib_device_debug_cap_xrender_version, cairo_xlib_device_debug_cap_xrender_version () +
    cairo_xlib_device_debug_cap_xrender_version, cairo_xlib_device_debug_cap_xrender_version ()
    -
    cairo_xlib_device_debug_get_precision, cairo_xlib_device_debug_get_precision () +
    cairo_xlib_device_debug_get_precision, cairo_xlib_device_debug_get_precision ()
    -
    cairo_xlib_device_debug_set_precision, cairo_xlib_device_debug_set_precision () +
    cairo_xlib_device_debug_set_precision, cairo_xlib_device_debug_set_precision ()
    @@ -188,6 +188,6 @@
    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.2.html cairo-1.14.2/doc/public/html/index-1.2.html --- cairo-1.13.0~20140204/doc/public/html/index-1.2.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.2.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.2 +Cairo: A Vector Graphics Library: Index of new symbols in 1.2 - + - - - - - - + + + + + +

    @@ -26,7 +26,7 @@

    F

    -
    cairo_font_face_get_type, cairo_font_face_get_type () +
    cairo_font_face_get_type, cairo_font_face_get_type ()
    cairo_font_type_t, enum cairo_font_type_t
    @@ -34,7 +34,7 @@

    G

    -
    cairo_get_group_target, cairo_get_group_target () +
    cairo_get_group_target, cairo_get_group_target ()
    @@ -51,122 +51,122 @@

    I

    -
    cairo_image_surface_get_data, cairo_image_surface_get_data () +
    cairo_image_surface_get_data, cairo_image_surface_get_data ()
    -
    cairo_image_surface_get_format, cairo_image_surface_get_format () +
    cairo_image_surface_get_format, cairo_image_surface_get_format ()
    -
    cairo_image_surface_get_stride, cairo_image_surface_get_stride () +
    cairo_image_surface_get_stride, cairo_image_surface_get_stride ()

    N

    -
    cairo_new_sub_path, cairo_new_sub_path () +
    cairo_new_sub_path, cairo_new_sub_path ()

    P

    -
    cairo_pattern_get_type, cairo_pattern_get_type () +
    cairo_pattern_get_type, cairo_pattern_get_type ()
    cairo_pattern_type_t, enum cairo_pattern_type_t
    -
    cairo_pdf_surface_create, cairo_pdf_surface_create () +
    cairo_pdf_surface_create, cairo_pdf_surface_create ()
    -
    cairo_pdf_surface_create_for_stream, cairo_pdf_surface_create_for_stream () +
    cairo_pdf_surface_create_for_stream, cairo_pdf_surface_create_for_stream ()
    -
    cairo_pdf_surface_set_size, cairo_pdf_surface_set_size () +
    cairo_pdf_surface_set_size, cairo_pdf_surface_set_size ()
    -
    cairo_pop_group, cairo_pop_group () +
    cairo_pop_group, cairo_pop_group ()
    -
    cairo_pop_group_to_source, cairo_pop_group_to_source () +
    cairo_pop_group_to_source, cairo_pop_group_to_source ()
    -
    cairo_ps_surface_create, cairo_ps_surface_create () +
    cairo_ps_surface_create, cairo_ps_surface_create ()
    -
    cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream () +
    cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream ()
    -
    cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup () +
    cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup ()
    -
    cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup () +
    cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup ()
    -
    cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment () +
    cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment ()
    -
    cairo_ps_surface_set_size, cairo_ps_surface_set_size () +
    cairo_ps_surface_set_size, cairo_ps_surface_set_size ()
    -
    cairo_push_group, cairo_push_group () +
    cairo_push_group, cairo_push_group ()
    -
    cairo_push_group_with_content, cairo_push_group_with_content () +
    cairo_push_group_with_content, cairo_push_group_with_content ()

    S

    -
    cairo_scaled_font_get_ctm, cairo_scaled_font_get_ctm () +
    cairo_scaled_font_get_ctm, cairo_scaled_font_get_ctm ()
    -
    cairo_scaled_font_get_font_face, cairo_scaled_font_get_font_face () +
    cairo_scaled_font_get_font_face, cairo_scaled_font_get_font_face ()
    -
    cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix () +
    cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix ()
    -
    cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options () +
    cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options ()
    -
    cairo_scaled_font_get_type, cairo_scaled_font_get_type () +
    cairo_scaled_font_get_type, cairo_scaled_font_get_type ()
    -
    cairo_scaled_font_text_extents, cairo_scaled_font_text_extents () +
    cairo_scaled_font_text_extents, cairo_scaled_font_text_extents ()
    -
    cairo_set_scaled_font, cairo_set_scaled_font () +
    cairo_set_scaled_font, cairo_set_scaled_font ()
    -
    cairo_surface_get_content, cairo_surface_get_content () +
    cairo_surface_get_content, cairo_surface_get_content ()
    -
    cairo_surface_get_device_offset, cairo_surface_get_device_offset () +
    cairo_surface_get_device_offset, cairo_surface_get_device_offset ()
    -
    cairo_surface_get_type, cairo_surface_get_type () +
    cairo_surface_get_type, cairo_surface_get_type ()
    -
    cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution () +
    cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution ()
    cairo_surface_type_t, enum cairo_surface_type_t
    -
    cairo_svg_get_versions, cairo_svg_get_versions () +
    cairo_svg_get_versions, cairo_svg_get_versions ()
    -
    cairo_svg_surface_create, cairo_svg_surface_create () +
    cairo_svg_surface_create, cairo_svg_surface_create ()
    -
    cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream () +
    cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream ()
    -
    cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version () +
    cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version ()
    cairo_svg_version_t, enum cairo_svg_version_t
    -
    cairo_svg_version_to_string, cairo_svg_version_to_string () +
    cairo_svg_version_to_string, cairo_svg_version_to_string ()

    W

    -
    cairo_win32_font_face_create_for_hfont, cairo_win32_font_face_create_for_hfont () +
    cairo_win32_font_face_create_for_hfont, cairo_win32_font_face_create_for_hfont ()
    -
    cairo_win32_surface_create_with_dib, cairo_win32_surface_create_with_dib () +
    cairo_win32_surface_create_with_dib, cairo_win32_surface_create_with_dib ()
    -
    cairo_win32_surface_get_dc, cairo_win32_surface_get_dc () +
    cairo_win32_surface_get_dc, cairo_win32_surface_get_dc ()

    X

    -
    cairo_xlib_surface_get_depth, cairo_xlib_surface_get_depth () +
    cairo_xlib_surface_get_depth, cairo_xlib_surface_get_depth ()
    -
    cairo_xlib_surface_get_display, cairo_xlib_surface_get_display () +
    cairo_xlib_surface_get_display, cairo_xlib_surface_get_display ()
    -
    cairo_xlib_surface_get_drawable, cairo_xlib_surface_get_drawable () +
    cairo_xlib_surface_get_drawable, cairo_xlib_surface_get_drawable ()
    -
    cairo_xlib_surface_get_height, cairo_xlib_surface_get_height () +
    cairo_xlib_surface_get_height, cairo_xlib_surface_get_height ()
    -
    cairo_xlib_surface_get_screen, cairo_xlib_surface_get_screen () +
    cairo_xlib_surface_get_screen, cairo_xlib_surface_get_screen ()
    -
    cairo_xlib_surface_get_visual, cairo_xlib_surface_get_visual () +
    cairo_xlib_surface_get_visual, cairo_xlib_surface_get_visual ()
    -
    cairo_xlib_surface_get_width, cairo_xlib_surface_get_width () +
    cairo_xlib_surface_get_width, cairo_xlib_surface_get_width ()
    @@ -174,6 +174,6 @@
    + Generated by GTK-Doc V1.20

    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.4.html cairo-1.14.2/doc/public/html/index-1.4.html --- cairo-1.13.0~20140204/doc/public/html/index-1.4.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.4.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.4 +Cairo: A Vector Graphics Library: Index of new symbols in 1.4 - + - - - - - - + + + + + +

    @@ -26,59 +26,59 @@

    C

    -
    cairo_clip_extents, cairo_clip_extents () +
    cairo_clip_extents, cairo_clip_extents ()
    -
    cairo_copy_clip_rectangle_list, cairo_copy_clip_rectangle_list () +
    cairo_copy_clip_rectangle_list, cairo_copy_clip_rectangle_list ()

    F

    -
    cairo_font_face_get_reference_count, cairo_font_face_get_reference_count () +
    cairo_font_face_get_reference_count, cairo_font_face_get_reference_count ()

    G

    -
    cairo_get_dash, cairo_get_dash () +
    cairo_get_dash, cairo_get_dash ()
    -
    cairo_get_dash_count, cairo_get_dash_count () +
    cairo_get_dash_count, cairo_get_dash_count ()
    -
    cairo_get_reference_count, cairo_get_reference_count () +
    cairo_get_reference_count, cairo_get_reference_count ()
    -
    cairo_get_scaled_font, cairo_get_scaled_font () +
    cairo_get_scaled_font, cairo_get_scaled_font ()
    -
    cairo_get_user_data, cairo_get_user_data () +
    cairo_get_user_data, cairo_get_user_data ()

    P

    -
    cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count () +
    cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count ()
    -
    cairo_pattern_get_color_stop_rgba, cairo_pattern_get_color_stop_rgba () +
    cairo_pattern_get_color_stop_rgba, cairo_pattern_get_color_stop_rgba ()
    -
    cairo_pattern_get_linear_points, cairo_pattern_get_linear_points () +
    cairo_pattern_get_linear_points, cairo_pattern_get_linear_points ()
    -
    cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles () +
    cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles ()
    -
    cairo_pattern_get_reference_count, cairo_pattern_get_reference_count () +
    cairo_pattern_get_reference_count, cairo_pattern_get_reference_count ()
    -
    cairo_pattern_get_rgba, cairo_pattern_get_rgba () +
    cairo_pattern_get_rgba, cairo_pattern_get_rgba ()
    -
    cairo_pattern_get_surface, cairo_pattern_get_surface () +
    cairo_pattern_get_surface, cairo_pattern_get_surface ()
    -
    cairo_pattern_get_user_data, cairo_pattern_get_user_data () +
    cairo_pattern_get_user_data, cairo_pattern_get_user_data ()
    -
    cairo_pattern_set_user_data, cairo_pattern_set_user_data () +
    cairo_pattern_set_user_data, cairo_pattern_set_user_data ()

    R

    -
    cairo_rectangle_list_destroy, cairo_rectangle_list_destroy () +
    cairo_rectangle_list_destroy, cairo_rectangle_list_destroy ()
    cairo_rectangle_list_t, cairo_rectangle_list_t
    @@ -89,28 +89,28 @@

    S

    -
    cairo_scaled_font_get_reference_count, cairo_scaled_font_get_reference_count () +
    cairo_scaled_font_get_reference_count, cairo_scaled_font_get_reference_count ()
    -
    cairo_scaled_font_get_user_data, cairo_scaled_font_get_user_data () +
    cairo_scaled_font_get_user_data, cairo_scaled_font_get_user_data ()
    -
    cairo_scaled_font_set_user_data, cairo_scaled_font_set_user_data () +
    cairo_scaled_font_set_user_data, cairo_scaled_font_set_user_data ()
    -
    cairo_set_user_data, cairo_set_user_data () +
    cairo_set_user_data, cairo_set_user_data ()
    -
    cairo_surface_get_reference_count, cairo_surface_get_reference_count () +
    cairo_surface_get_reference_count, cairo_surface_get_reference_count ()

    W

    -
    cairo_win32_scaled_font_get_device_to_logical, cairo_win32_scaled_font_get_device_to_logical () +
    cairo_win32_scaled_font_get_device_to_logical, cairo_win32_scaled_font_get_device_to_logical ()
    -
    cairo_win32_scaled_font_get_logical_to_device, cairo_win32_scaled_font_get_logical_to_device () +
    cairo_win32_scaled_font_get_logical_to_device, cairo_win32_scaled_font_get_logical_to_device ()
    -
    cairo_win32_surface_create_with_ddb, cairo_win32_surface_create_with_ddb () +
    cairo_win32_surface_create_with_ddb, cairo_win32_surface_create_with_ddb ()
    -
    cairo_win32_surface_get_image, cairo_win32_surface_get_image () +
    cairo_win32_surface_get_image, cairo_win32_surface_get_image ()
    @@ -118,6 +118,6 @@
    + Generated by GTK-Doc V1.20

    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.6.html cairo-1.14.2/doc/public/html/index-1.6.html --- cairo-1.13.0~20140204/doc/public/html/index-1.6.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.6.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.6 +Cairo: A Vector Graphics Library: Index of new symbols in 1.6 - + - - - - - - + + + + + +

    @@ -25,13 +25,13 @@

    F

    -
    cairo_format_stride_for_width, cairo_format_stride_for_width () +
    cairo_format_stride_for_width, cairo_format_stride_for_width ()

    H

    -
    cairo_has_current_point, cairo_has_current_point () +
    cairo_has_current_point, cairo_has_current_point ()
    CAIRO_HAS_QUARTZ_FONT, CAIRO_HAS_QUARTZ_FONT
    @@ -44,64 +44,64 @@

    P

    -
    cairo_path_extents, cairo_path_extents () +
    cairo_path_extents, cairo_path_extents ()
    -
    cairo_ps_get_levels, cairo_ps_get_levels () +
    cairo_ps_get_levels, cairo_ps_get_levels ()
    cairo_ps_level_t, enum cairo_ps_level_t
    -
    cairo_ps_level_to_string, cairo_ps_level_to_string () +
    cairo_ps_level_to_string, cairo_ps_level_to_string ()
    -
    cairo_ps_surface_get_eps, cairo_ps_surface_get_eps () +
    cairo_ps_surface_get_eps, cairo_ps_surface_get_eps ()
    -
    cairo_ps_surface_restrict_to_level, cairo_ps_surface_restrict_to_level () +
    cairo_ps_surface_restrict_to_level, cairo_ps_surface_restrict_to_level ()
    -
    cairo_ps_surface_set_eps, cairo_ps_surface_set_eps () +
    cairo_ps_surface_set_eps, cairo_ps_surface_set_eps ()

    Q

    -
    cairo_quartz_font_face_create_for_atsu_font_id, cairo_quartz_font_face_create_for_atsu_font_id () +
    cairo_quartz_font_face_create_for_atsu_font_id, cairo_quartz_font_face_create_for_atsu_font_id ()
    -
    cairo_quartz_font_face_create_for_cgfont, cairo_quartz_font_face_create_for_cgfont () +
    cairo_quartz_font_face_create_for_cgfont, cairo_quartz_font_face_create_for_cgfont ()
    -
    cairo_quartz_surface_create, cairo_quartz_surface_create () +
    cairo_quartz_surface_create, cairo_quartz_surface_create ()
    -
    cairo_quartz_surface_create_for_cg_context, cairo_quartz_surface_create_for_cg_context () +
    cairo_quartz_surface_create_for_cg_context, cairo_quartz_surface_create_for_cg_context ()
    -
    cairo_quartz_surface_get_cg_context, cairo_quartz_surface_get_cg_context () +
    cairo_quartz_surface_get_cg_context, cairo_quartz_surface_get_cg_context ()

    S

    -
    cairo_surface_copy_page, cairo_surface_copy_page () +
    cairo_surface_copy_page, cairo_surface_copy_page ()
    -
    cairo_surface_show_page, cairo_surface_show_page () +
    cairo_surface_show_page, cairo_surface_show_page ()

    W

    -
    cairo_win32_font_face_create_for_logfontw_hfont, cairo_win32_font_face_create_for_logfontw_hfont () +
    cairo_win32_font_face_create_for_logfontw_hfont, cairo_win32_font_face_create_for_logfontw_hfont ()
    -
    cairo_win32_printing_surface_create, cairo_win32_printing_surface_create () +
    cairo_win32_printing_surface_create, cairo_win32_printing_surface_create ()

    X

    -
    cairo_xlib_surface_get_xrender_format, cairo_xlib_surface_get_xrender_format () +
    cairo_xlib_surface_get_xrender_format, cairo_xlib_surface_get_xrender_format ()
    + Generated by GTK-Doc V1.20

    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-1.8.html cairo-1.14.2/doc/public/html/index-1.8.html --- cairo-1.13.0~20140204/doc/public/html/index-1.8.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-1.8.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index of new symbols in 1.8 +Cairo: A Vector Graphics Library: Index of new symbols in 1.8 - + - - - - - - + + + + + +

    @@ -26,9 +26,9 @@

    G

    -
    cairo_glyph_allocate, cairo_glyph_allocate () +
    cairo_glyph_allocate, cairo_glyph_allocate ()
    -
    cairo_glyph_free, cairo_glyph_free () +
    cairo_glyph_free, cairo_glyph_free ()
    @@ -46,67 +46,67 @@

    S

    -
    cairo_scaled_font_get_scale_matrix, cairo_scaled_font_get_scale_matrix () +
    cairo_scaled_font_get_scale_matrix, cairo_scaled_font_get_scale_matrix ()
    -
    cairo_scaled_font_text_to_glyphs, cairo_scaled_font_text_to_glyphs () +
    cairo_scaled_font_text_to_glyphs, cairo_scaled_font_text_to_glyphs ()
    -
    cairo_show_text_glyphs, cairo_show_text_glyphs () +
    cairo_show_text_glyphs, cairo_show_text_glyphs ()
    -
    cairo_surface_get_fallback_resolution, cairo_surface_get_fallback_resolution () +
    cairo_surface_get_fallback_resolution, cairo_surface_get_fallback_resolution ()
    -
    cairo_surface_has_show_text_glyphs, cairo_surface_has_show_text_glyphs () +
    cairo_surface_has_show_text_glyphs, cairo_surface_has_show_text_glyphs ()

    T

    -
    cairo_text_cluster_allocate, cairo_text_cluster_allocate () +
    cairo_text_cluster_allocate, cairo_text_cluster_allocate ()
    cairo_text_cluster_flags_t, enum cairo_text_cluster_flags_t
    -
    cairo_text_cluster_free, cairo_text_cluster_free () +
    cairo_text_cluster_free, cairo_text_cluster_free ()
    cairo_text_cluster_t, cairo_text_cluster_t
    -
    cairo_toy_font_face_create, cairo_toy_font_face_create () +
    cairo_toy_font_face_create, cairo_toy_font_face_create ()
    -
    cairo_toy_font_face_get_family, cairo_toy_font_face_get_family () +
    cairo_toy_font_face_get_family, cairo_toy_font_face_get_family ()
    -
    cairo_toy_font_face_get_slant, cairo_toy_font_face_get_slant () +
    cairo_toy_font_face_get_slant, cairo_toy_font_face_get_slant ()
    -
    cairo_toy_font_face_get_weight, cairo_toy_font_face_get_weight () +
    cairo_toy_font_face_get_weight, cairo_toy_font_face_get_weight ()

    U

    -
    cairo_user_font_face_create, cairo_user_font_face_create () +
    cairo_user_font_face_create, cairo_user_font_face_create ()
    -
    cairo_user_font_face_get_init_func, cairo_user_font_face_get_init_func () +
    cairo_user_font_face_get_init_func, cairo_user_font_face_get_init_func ()
    -
    cairo_user_font_face_get_render_glyph_func, cairo_user_font_face_get_render_glyph_func () +
    cairo_user_font_face_get_render_glyph_func, cairo_user_font_face_get_render_glyph_func ()
    -
    cairo_user_font_face_get_text_to_glyphs_func, cairo_user_font_face_get_text_to_glyphs_func () +
    cairo_user_font_face_get_text_to_glyphs_func, cairo_user_font_face_get_text_to_glyphs_func ()
    -
    cairo_user_font_face_get_unicode_to_glyph_func, cairo_user_font_face_get_unicode_to_glyph_func () +
    cairo_user_font_face_get_unicode_to_glyph_func, cairo_user_font_face_get_unicode_to_glyph_func ()
    -
    cairo_user_font_face_set_init_func, cairo_user_font_face_set_init_func () +
    cairo_user_font_face_set_init_func, cairo_user_font_face_set_init_func ()
    -
    cairo_user_font_face_set_render_glyph_func, cairo_user_font_face_set_render_glyph_func () +
    cairo_user_font_face_set_render_glyph_func, cairo_user_font_face_set_render_glyph_func ()
    -
    cairo_user_font_face_set_text_to_glyphs_func, cairo_user_font_face_set_text_to_glyphs_func () +
    cairo_user_font_face_set_text_to_glyphs_func, cairo_user_font_face_set_text_to_glyphs_func ()
    -
    cairo_user_font_face_set_unicode_to_glyph_func, cairo_user_font_face_set_unicode_to_glyph_func () +
    cairo_user_font_face_set_unicode_to_glyph_func, cairo_user_font_face_set_unicode_to_glyph_func ()
    -
    cairo_user_scaled_font_init_func_t, cairo_user_scaled_font_init_func_t () +
    cairo_user_scaled_font_init_func_t, cairo_user_scaled_font_init_func_t ()
    -
    cairo_user_scaled_font_render_glyph_func_t, cairo_user_scaled_font_render_glyph_func_t () +
    cairo_user_scaled_font_render_glyph_func_t, cairo_user_scaled_font_render_glyph_func_t ()
    -
    cairo_user_scaled_font_text_to_glyphs_func_t, cairo_user_scaled_font_text_to_glyphs_func_t () +
    cairo_user_scaled_font_text_to_glyphs_func_t, cairo_user_scaled_font_text_to_glyphs_func_t ()
    -
    cairo_user_scaled_font_unicode_to_glyph_func_t, cairo_user_scaled_font_unicode_to_glyph_func_t () +
    cairo_user_scaled_font_unicode_to_glyph_func_t, cairo_user_scaled_font_unicode_to_glyph_func_t ()
    @@ -123,6 +123,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index-all.html cairo-1.14.2/doc/public/html/index-all.html --- cairo-1.13.0~20140204/doc/public/html/index-all.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index-all.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Index +Cairo: A Vector Graphics Library: Index - + - - - - - - + + + + + +

    @@ -28,11 +28,11 @@
    cairo_antialias_t, enum cairo_antialias_t
    -
    cairo_append_path, cairo_append_path () +
    cairo_append_path, cairo_append_path ()
    -
    cairo_arc, cairo_arc () +
    cairo_arc, cairo_arc ()
    -
    cairo_arc_negative, cairo_arc_negative () +
    cairo_arc_negative, cairo_arc_negative ()

    @@ -44,66 +44,80 @@

    C

    -
    cairo_clip, cairo_clip () +
    cairo_clip, cairo_clip ()
    -
    cairo_clip_extents, cairo_clip_extents () +
    cairo_clip_extents, cairo_clip_extents ()
    -
    cairo_clip_preserve, cairo_clip_preserve () +
    cairo_clip_preserve, cairo_clip_preserve ()
    -
    cairo_close_path, cairo_close_path () +
    cairo_close_path, cairo_close_path ()
    cairo_content_t, enum cairo_content_t
    -
    cairo_copy_clip_rectangle_list, cairo_copy_clip_rectangle_list () +
    cairo_copy_clip_rectangle_list, cairo_copy_clip_rectangle_list ()
    -
    cairo_copy_page, cairo_copy_page () +
    cairo_copy_page, cairo_copy_page ()
    -
    cairo_copy_path, cairo_copy_path () +
    cairo_copy_path, cairo_copy_path ()
    -
    cairo_copy_path_flat, cairo_copy_path_flat () +
    cairo_copy_path_flat, cairo_copy_path_flat ()
    -
    cairo_create, cairo_create () +
    cairo_create, cairo_create ()
    -
    cairo_curve_to, cairo_curve_to () +
    cairo_curve_to, cairo_curve_to ()

    D

    -
    cairo_debug_reset_static_data, cairo_debug_reset_static_data () +
    cairo_debug_reset_static_data, cairo_debug_reset_static_data ()
    -
    cairo_destroy, cairo_destroy () +
    cairo_destroy, cairo_destroy ()
    -
    cairo_destroy_func_t, cairo_destroy_func_t () +
    cairo_destroy_func_t, cairo_destroy_func_t ()
    -
    cairo_device_acquire, cairo_device_acquire () +
    cairo_device_acquire, cairo_device_acquire ()
    -
    cairo_device_destroy, cairo_device_destroy () +
    cairo_device_destroy, cairo_device_destroy ()
    -
    cairo_device_finish, cairo_device_finish () +
    cairo_device_finish, cairo_device_finish ()
    -
    cairo_device_flush, cairo_device_flush () +
    cairo_device_flush, cairo_device_flush ()
    -
    cairo_device_get_reference_count, cairo_device_get_reference_count () +
    cairo_device_get_reference_count, cairo_device_get_reference_count ()
    -
    cairo_device_get_type, cairo_device_get_type () +
    cairo_device_get_type, cairo_device_get_type ()
    -
    cairo_device_get_user_data, cairo_device_get_user_data () +
    cairo_device_get_user_data, cairo_device_get_user_data ()
    -
    cairo_device_reference, cairo_device_reference () +
    cairo_device_observer_elapsed, cairo_device_observer_elapsed ()
    -
    cairo_device_release, cairo_device_release () +
    cairo_device_observer_fill_elapsed, cairo_device_observer_fill_elapsed ()
    -
    cairo_device_set_user_data, cairo_device_set_user_data () +
    cairo_device_observer_glyphs_elapsed, cairo_device_observer_glyphs_elapsed ()
    -
    cairo_device_status, cairo_device_status () +
    cairo_device_observer_mask_elapsed, cairo_device_observer_mask_elapsed () +
    +
    cairo_device_observer_paint_elapsed, cairo_device_observer_paint_elapsed () +
    +
    cairo_device_observer_print, cairo_device_observer_print () +
    +
    cairo_device_observer_stroke_elapsed, cairo_device_observer_stroke_elapsed () +
    +
    cairo_device_reference, cairo_device_reference () +
    +
    cairo_device_release, cairo_device_release () +
    +
    cairo_device_set_user_data, cairo_device_set_user_data () +
    +
    cairo_device_status, cairo_device_status ()
    cairo_device_t, cairo_device_t
    -
    cairo_device_to_user, cairo_device_to_user () +
    cairo_device_to_user, cairo_device_to_user ()
    -
    cairo_device_to_user_distance, cairo_device_to_user_distance () +
    cairo_device_to_user_distance, cairo_device_to_user_distance ()
    cairo_device_type_t, enum cairo_device_type_t
    @@ -117,65 +131,65 @@

    F

    -
    cairo_fill, cairo_fill () +
    cairo_fill, cairo_fill ()
    -
    cairo_fill_extents, cairo_fill_extents () +
    cairo_fill_extents, cairo_fill_extents ()
    -
    cairo_fill_preserve, cairo_fill_preserve () +
    cairo_fill_preserve, cairo_fill_preserve ()
    cairo_fill_rule_t, enum cairo_fill_rule_t
    cairo_filter_t, enum cairo_filter_t
    -
    cairo_font_extents, cairo_font_extents () +
    cairo_font_extents, cairo_font_extents ()
    cairo_font_extents_t, cairo_font_extents_t
    -
    cairo_font_face_destroy, cairo_font_face_destroy () +
    cairo_font_face_destroy, cairo_font_face_destroy ()
    -
    cairo_font_face_get_reference_count, cairo_font_face_get_reference_count () +
    cairo_font_face_get_reference_count, cairo_font_face_get_reference_count ()
    -
    cairo_font_face_get_type, cairo_font_face_get_type () +
    cairo_font_face_get_type, cairo_font_face_get_type ()
    -
    cairo_font_face_get_user_data, cairo_font_face_get_user_data () +
    cairo_font_face_get_user_data, cairo_font_face_get_user_data ()
    -
    cairo_font_face_reference, cairo_font_face_reference () +
    cairo_font_face_reference, cairo_font_face_reference ()
    -
    cairo_font_face_set_user_data, cairo_font_face_set_user_data () +
    cairo_font_face_set_user_data, cairo_font_face_set_user_data ()
    -
    cairo_font_face_status, cairo_font_face_status () +
    cairo_font_face_status, cairo_font_face_status ()
    cairo_font_face_t, cairo_font_face_t
    -
    cairo_font_options_copy, cairo_font_options_copy () +
    cairo_font_options_copy, cairo_font_options_copy ()
    -
    cairo_font_options_create, cairo_font_options_create () +
    cairo_font_options_create, cairo_font_options_create ()
    -
    cairo_font_options_destroy, cairo_font_options_destroy () +
    cairo_font_options_destroy, cairo_font_options_destroy ()
    -
    cairo_font_options_equal, cairo_font_options_equal () +
    cairo_font_options_equal, cairo_font_options_equal ()
    -
    cairo_font_options_get_antialias, cairo_font_options_get_antialias () +
    cairo_font_options_get_antialias, cairo_font_options_get_antialias ()
    -
    cairo_font_options_get_hint_metrics, cairo_font_options_get_hint_metrics () +
    cairo_font_options_get_hint_metrics, cairo_font_options_get_hint_metrics ()
    -
    cairo_font_options_get_hint_style, cairo_font_options_get_hint_style () +
    cairo_font_options_get_hint_style, cairo_font_options_get_hint_style ()
    -
    cairo_font_options_get_subpixel_order, cairo_font_options_get_subpixel_order () +
    cairo_font_options_get_subpixel_order, cairo_font_options_get_subpixel_order ()
    -
    cairo_font_options_hash, cairo_font_options_hash () +
    cairo_font_options_hash, cairo_font_options_hash ()
    -
    cairo_font_options_merge, cairo_font_options_merge () +
    cairo_font_options_merge, cairo_font_options_merge ()
    -
    cairo_font_options_set_antialias, cairo_font_options_set_antialias () +
    cairo_font_options_set_antialias, cairo_font_options_set_antialias ()
    -
    cairo_font_options_set_hint_metrics, cairo_font_options_set_hint_metrics () +
    cairo_font_options_set_hint_metrics, cairo_font_options_set_hint_metrics ()
    -
    cairo_font_options_set_hint_style, cairo_font_options_set_hint_style () +
    cairo_font_options_set_hint_style, cairo_font_options_set_hint_style ()
    -
    cairo_font_options_set_subpixel_order, cairo_font_options_set_subpixel_order () +
    cairo_font_options_set_subpixel_order, cairo_font_options_set_subpixel_order ()
    -
    cairo_font_options_status, cairo_font_options_status () +
    cairo_font_options_status, cairo_font_options_status ()
    cairo_font_options_t, cairo_font_options_t
    @@ -185,25 +199,25 @@
    cairo_font_weight_t, enum cairo_font_weight_t
    -
    cairo_format_stride_for_width, cairo_format_stride_for_width () +
    cairo_format_stride_for_width, cairo_format_stride_for_width ()
    cairo_format_t, enum cairo_format_t
    -
    cairo_ft_font_face_create_for_ft_face, cairo_ft_font_face_create_for_ft_face () +
    cairo_ft_font_face_create_for_ft_face, cairo_ft_font_face_create_for_ft_face ()
    -
    cairo_ft_font_face_create_for_pattern, cairo_ft_font_face_create_for_pattern () +
    cairo_ft_font_face_create_for_pattern, cairo_ft_font_face_create_for_pattern ()
    -
    cairo_ft_font_face_get_synthesize, cairo_ft_font_face_get_synthesize () +
    cairo_ft_font_face_get_synthesize, cairo_ft_font_face_get_synthesize ()
    -
    cairo_ft_font_face_set_synthesize, cairo_ft_font_face_set_synthesize () +
    cairo_ft_font_face_set_synthesize, cairo_ft_font_face_set_synthesize ()
    -
    cairo_ft_font_face_unset_synthesize, cairo_ft_font_face_unset_synthesize () +
    cairo_ft_font_face_unset_synthesize, cairo_ft_font_face_unset_synthesize ()
    -
    cairo_ft_font_options_substitute, cairo_ft_font_options_substitute () +
    cairo_ft_font_options_substitute, cairo_ft_font_options_substitute ()
    -
    cairo_ft_scaled_font_lock_face, cairo_ft_scaled_font_lock_face () +
    cairo_ft_scaled_font_lock_face, cairo_ft_scaled_font_lock_face ()
    -
    cairo_ft_scaled_font_unlock_face, cairo_ft_scaled_font_unlock_face () +
    cairo_ft_scaled_font_unlock_face, cairo_ft_scaled_font_unlock_face ()
    cairo_ft_synthesize_t, enum cairo_ft_synthesize_t
    @@ -212,55 +226,55 @@

    G

    -
    cairo_get_antialias, cairo_get_antialias () +
    cairo_get_antialias, cairo_get_antialias ()
    -
    cairo_get_current_point, cairo_get_current_point () +
    cairo_get_current_point, cairo_get_current_point ()
    -
    cairo_get_dash, cairo_get_dash () +
    cairo_get_dash, cairo_get_dash ()
    -
    cairo_get_dash_count, cairo_get_dash_count () +
    cairo_get_dash_count, cairo_get_dash_count ()
    -
    cairo_get_fill_rule, cairo_get_fill_rule () +
    cairo_get_fill_rule, cairo_get_fill_rule ()
    -
    cairo_get_font_face, cairo_get_font_face () +
    cairo_get_font_face, cairo_get_font_face ()
    -
    cairo_get_font_matrix, cairo_get_font_matrix () +
    cairo_get_font_matrix, cairo_get_font_matrix ()
    -
    cairo_get_font_options, cairo_get_font_options () +
    cairo_get_font_options, cairo_get_font_options ()
    -
    cairo_get_group_target, cairo_get_group_target () +
    cairo_get_group_target, cairo_get_group_target ()
    -
    cairo_get_line_cap, cairo_get_line_cap () +
    cairo_get_line_cap, cairo_get_line_cap ()
    -
    cairo_get_line_join, cairo_get_line_join () +
    cairo_get_line_join, cairo_get_line_join ()
    -
    cairo_get_line_width, cairo_get_line_width () +
    cairo_get_line_width, cairo_get_line_width ()
    -
    cairo_get_matrix, cairo_get_matrix () +
    cairo_get_matrix, cairo_get_matrix ()
    -
    cairo_get_miter_limit, cairo_get_miter_limit () +
    cairo_get_miter_limit, cairo_get_miter_limit ()
    -
    cairo_get_operator, cairo_get_operator () +
    cairo_get_operator, cairo_get_operator ()
    -
    cairo_get_reference_count, cairo_get_reference_count () +
    cairo_get_reference_count, cairo_get_reference_count ()
    -
    cairo_get_scaled_font, cairo_get_scaled_font () +
    cairo_get_scaled_font, cairo_get_scaled_font ()
    -
    cairo_get_source, cairo_get_source () +
    cairo_get_source, cairo_get_source ()
    -
    cairo_get_target, cairo_get_target () +
    cairo_get_target, cairo_get_target ()
    -
    cairo_get_tolerance, cairo_get_tolerance () +
    cairo_get_tolerance, cairo_get_tolerance ()
    -
    cairo_get_user_data, cairo_get_user_data () +
    cairo_get_user_data, cairo_get_user_data ()
    -
    cairo_glyph_allocate, cairo_glyph_allocate () +
    cairo_glyph_allocate, cairo_glyph_allocate ()
    -
    cairo_glyph_extents, cairo_glyph_extents () +
    cairo_glyph_extents, cairo_glyph_extents ()
    -
    cairo_glyph_free, cairo_glyph_free () +
    cairo_glyph_free, cairo_glyph_free ()
    -
    cairo_glyph_path, cairo_glyph_path () +
    cairo_glyph_path, cairo_glyph_path ()
    cairo_glyph_t, cairo_glyph_t
    @@ -269,7 +283,7 @@

    H

    -
    cairo_has_current_point, cairo_has_current_point () +
    cairo_has_current_point, cairo_has_current_point ()
    CAIRO_HAS_FC_FONT, CAIRO_HAS_FC_FONT
    @@ -318,31 +332,31 @@

    I

    -
    cairo_identity_matrix, cairo_identity_matrix () +
    cairo_identity_matrix, cairo_identity_matrix ()
    -
    cairo_image_surface_create, cairo_image_surface_create () +
    cairo_image_surface_create, cairo_image_surface_create ()
    -
    cairo_image_surface_create_for_data, cairo_image_surface_create_for_data () +
    cairo_image_surface_create_for_data, cairo_image_surface_create_for_data ()
    -
    cairo_image_surface_create_from_png, cairo_image_surface_create_from_png () +
    cairo_image_surface_create_from_png, cairo_image_surface_create_from_png ()
    -
    cairo_image_surface_create_from_png_stream, cairo_image_surface_create_from_png_stream () +
    cairo_image_surface_create_from_png_stream, cairo_image_surface_create_from_png_stream ()
    -
    cairo_image_surface_get_data, cairo_image_surface_get_data () +
    cairo_image_surface_get_data, cairo_image_surface_get_data ()
    -
    cairo_image_surface_get_format, cairo_image_surface_get_format () +
    cairo_image_surface_get_format, cairo_image_surface_get_format ()
    -
    cairo_image_surface_get_height, cairo_image_surface_get_height () +
    cairo_image_surface_get_height, cairo_image_surface_get_height ()
    -
    cairo_image_surface_get_stride, cairo_image_surface_get_stride () +
    cairo_image_surface_get_stride, cairo_image_surface_get_stride ()
    -
    cairo_image_surface_get_width, cairo_image_surface_get_width () +
    cairo_image_surface_get_width, cairo_image_surface_get_width ()
    -
    cairo_in_clip, cairo_in_clip () +
    cairo_in_clip, cairo_in_clip ()
    -
    cairo_in_fill, cairo_in_fill () +
    cairo_in_fill, cairo_in_fill ()
    -
    cairo_in_stroke, cairo_in_stroke () +
    cairo_in_stroke, cairo_in_stroke ()
    @@ -353,66 +367,72 @@
    cairo_line_join_t, enum cairo_line_join_t
    -
    cairo_line_to, cairo_line_to () +
    cairo_line_to, cairo_line_to ()

    M

    -
    cairo_mask, cairo_mask () +
    cairo_mask, cairo_mask ()
    -
    cairo_mask_surface, cairo_mask_surface () +
    cairo_mask_surface, cairo_mask_surface ()
    -
    cairo_matrix_init, cairo_matrix_init () +
    cairo_matrix_init, cairo_matrix_init ()
    -
    cairo_matrix_init_identity, cairo_matrix_init_identity () +
    cairo_matrix_init_identity, cairo_matrix_init_identity ()
    -
    cairo_matrix_init_rotate, cairo_matrix_init_rotate () +
    cairo_matrix_init_rotate, cairo_matrix_init_rotate ()
    -
    cairo_matrix_init_scale, cairo_matrix_init_scale () +
    cairo_matrix_init_scale, cairo_matrix_init_scale ()
    -
    cairo_matrix_init_translate, cairo_matrix_init_translate () +
    cairo_matrix_init_translate, cairo_matrix_init_translate ()
    -
    cairo_matrix_invert, cairo_matrix_invert () +
    cairo_matrix_invert, cairo_matrix_invert ()
    -
    cairo_matrix_multiply, cairo_matrix_multiply () +
    cairo_matrix_multiply, cairo_matrix_multiply ()
    -
    cairo_matrix_rotate, cairo_matrix_rotate () +
    cairo_matrix_rotate, cairo_matrix_rotate ()
    -
    cairo_matrix_scale, cairo_matrix_scale () +
    cairo_matrix_scale, cairo_matrix_scale ()
    cairo_matrix_t, cairo_matrix_t
    -
    cairo_matrix_transform_distance, cairo_matrix_transform_distance () +
    cairo_matrix_transform_distance, cairo_matrix_transform_distance () +
    +
    cairo_matrix_transform_point, cairo_matrix_transform_point ()
    -
    cairo_matrix_transform_point, cairo_matrix_transform_point () +
    cairo_matrix_translate, cairo_matrix_translate ()
    -
    cairo_matrix_translate, cairo_matrix_translate () +
    cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch ()
    -
    cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch () +
    cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to ()
    -
    cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to () +
    cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch ()
    -
    cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch () +
    cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point ()
    -
    cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point () +
    cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba ()
    -
    cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba () +
    cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count ()
    -
    cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count () +
    cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path ()
    -
    cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path () +
    cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to ()
    -
    cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to () +
    cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to ()
    -
    cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to () +
    cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point ()
    -
    cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point () +
    cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb ()
    -
    cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb () +
    cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba ()
    -
    cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba () +
    CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2 +
    +
    CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL +
    +
    CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID
    CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_JP2
    @@ -424,16 +444,16 @@
    CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_URI
    -
    cairo_move_to, cairo_move_to () +
    cairo_move_to, cairo_move_to ()

    N

    -
    cairo_new_path, cairo_new_path () +
    cairo_new_path, cairo_new_path ()
    -
    cairo_new_sub_path, cairo_new_sub_path () +
    cairo_new_sub_path, cairo_new_sub_path ()
    @@ -445,462 +465,466 @@

    P

    -
    cairo_paint, cairo_paint () +
    cairo_paint, cairo_paint ()
    -
    cairo_paint_with_alpha, cairo_paint_with_alpha () +
    cairo_paint_with_alpha, cairo_paint_with_alpha ()
    cairo_path_data_t, union cairo_path_data_t
    cairo_path_data_type_t, enum cairo_path_data_type_t
    -
    cairo_path_destroy, cairo_path_destroy () +
    cairo_path_destroy, cairo_path_destroy ()
    -
    cairo_path_extents, cairo_path_extents () +
    cairo_path_extents, cairo_path_extents ()
    cairo_path_t, cairo_path_t
    -
    cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgb () +
    cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgb ()
    -
    cairo_pattern_add_color_stop_rgba, cairo_pattern_add_color_stop_rgba () +
    cairo_pattern_add_color_stop_rgba, cairo_pattern_add_color_stop_rgba ()
    -
    cairo_pattern_create_for_surface, cairo_pattern_create_for_surface () +
    cairo_pattern_create_for_surface, cairo_pattern_create_for_surface ()
    -
    cairo_pattern_create_linear, cairo_pattern_create_linear () +
    cairo_pattern_create_linear, cairo_pattern_create_linear ()
    -
    cairo_pattern_create_mesh, cairo_pattern_create_mesh () +
    cairo_pattern_create_mesh, cairo_pattern_create_mesh ()
    -
    cairo_pattern_create_radial, cairo_pattern_create_radial () +
    cairo_pattern_create_radial, cairo_pattern_create_radial ()
    -
    cairo_pattern_create_raster_source, cairo_pattern_create_raster_source () +
    cairo_pattern_create_raster_source, cairo_pattern_create_raster_source ()
    -
    cairo_pattern_create_rgb, cairo_pattern_create_rgb () +
    cairo_pattern_create_rgb, cairo_pattern_create_rgb ()
    -
    cairo_pattern_create_rgba, cairo_pattern_create_rgba () +
    cairo_pattern_create_rgba, cairo_pattern_create_rgba ()
    -
    cairo_pattern_destroy, cairo_pattern_destroy () +
    cairo_pattern_destroy, cairo_pattern_destroy ()
    -
    cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count () +
    cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count ()
    -
    cairo_pattern_get_color_stop_rgba, cairo_pattern_get_color_stop_rgba () +
    cairo_pattern_get_color_stop_rgba, cairo_pattern_get_color_stop_rgba ()
    -
    cairo_pattern_get_extend, cairo_pattern_get_extend () +
    cairo_pattern_get_extend, cairo_pattern_get_extend ()
    -
    cairo_pattern_get_filter, cairo_pattern_get_filter () +
    cairo_pattern_get_filter, cairo_pattern_get_filter ()
    -
    cairo_pattern_get_linear_points, cairo_pattern_get_linear_points () +
    cairo_pattern_get_linear_points, cairo_pattern_get_linear_points ()
    -
    cairo_pattern_get_matrix, cairo_pattern_get_matrix () +
    cairo_pattern_get_matrix, cairo_pattern_get_matrix ()
    -
    cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles () +
    cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles ()
    -
    cairo_pattern_get_reference_count, cairo_pattern_get_reference_count () +
    cairo_pattern_get_reference_count, cairo_pattern_get_reference_count ()
    -
    cairo_pattern_get_rgba, cairo_pattern_get_rgba () +
    cairo_pattern_get_rgba, cairo_pattern_get_rgba ()
    -
    cairo_pattern_get_surface, cairo_pattern_get_surface () +
    cairo_pattern_get_surface, cairo_pattern_get_surface ()
    -
    cairo_pattern_get_type, cairo_pattern_get_type () +
    cairo_pattern_get_type, cairo_pattern_get_type ()
    -
    cairo_pattern_get_user_data, cairo_pattern_get_user_data () +
    cairo_pattern_get_user_data, cairo_pattern_get_user_data ()
    -
    cairo_pattern_reference, cairo_pattern_reference () +
    cairo_pattern_reference, cairo_pattern_reference ()
    -
    cairo_pattern_set_extend, cairo_pattern_set_extend () +
    cairo_pattern_set_extend, cairo_pattern_set_extend ()
    -
    cairo_pattern_set_filter, cairo_pattern_set_filter () +
    cairo_pattern_set_filter, cairo_pattern_set_filter ()
    -
    cairo_pattern_set_matrix, cairo_pattern_set_matrix () +
    cairo_pattern_set_matrix, cairo_pattern_set_matrix ()
    -
    cairo_pattern_set_user_data, cairo_pattern_set_user_data () +
    cairo_pattern_set_user_data, cairo_pattern_set_user_data ()
    -
    cairo_pattern_status, cairo_pattern_status () +
    cairo_pattern_status, cairo_pattern_status ()
    cairo_pattern_t, cairo_pattern_t
    cairo_pattern_type_t, enum cairo_pattern_type_t
    -
    cairo_pdf_get_versions, cairo_pdf_get_versions () +
    cairo_pdf_get_versions, cairo_pdf_get_versions ()
    -
    cairo_pdf_surface_create, cairo_pdf_surface_create () +
    cairo_pdf_surface_create, cairo_pdf_surface_create ()
    -
    cairo_pdf_surface_create_for_stream, cairo_pdf_surface_create_for_stream () +
    cairo_pdf_surface_create_for_stream, cairo_pdf_surface_create_for_stream ()
    -
    cairo_pdf_surface_restrict_to_version, cairo_pdf_surface_restrict_to_version () +
    cairo_pdf_surface_restrict_to_version, cairo_pdf_surface_restrict_to_version ()
    -
    cairo_pdf_surface_set_size, cairo_pdf_surface_set_size () +
    cairo_pdf_surface_set_size, cairo_pdf_surface_set_size ()
    cairo_pdf_version_t, enum cairo_pdf_version_t
    -
    cairo_pdf_version_to_string, cairo_pdf_version_to_string () +
    cairo_pdf_version_to_string, cairo_pdf_version_to_string ()
    -
    cairo_pop_group, cairo_pop_group () +
    cairo_pop_group, cairo_pop_group ()
    -
    cairo_pop_group_to_source, cairo_pop_group_to_source () +
    cairo_pop_group_to_source, cairo_pop_group_to_source ()
    -
    cairo_ps_get_levels, cairo_ps_get_levels () +
    cairo_ps_get_levels, cairo_ps_get_levels ()
    cairo_ps_level_t, enum cairo_ps_level_t
    -
    cairo_ps_level_to_string, cairo_ps_level_to_string () +
    cairo_ps_level_to_string, cairo_ps_level_to_string ()
    -
    cairo_ps_surface_create, cairo_ps_surface_create () +
    cairo_ps_surface_create, cairo_ps_surface_create ()
    -
    cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream () +
    cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream ()
    -
    cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup () +
    cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup ()
    -
    cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup () +
    cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup ()
    -
    cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment () +
    cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment ()
    -
    cairo_ps_surface_get_eps, cairo_ps_surface_get_eps () +
    cairo_ps_surface_get_eps, cairo_ps_surface_get_eps ()
    -
    cairo_ps_surface_restrict_to_level, cairo_ps_surface_restrict_to_level () +
    cairo_ps_surface_restrict_to_level, cairo_ps_surface_restrict_to_level ()
    -
    cairo_ps_surface_set_eps, cairo_ps_surface_set_eps () +
    cairo_ps_surface_set_eps, cairo_ps_surface_set_eps ()
    -
    cairo_ps_surface_set_size, cairo_ps_surface_set_size () +
    cairo_ps_surface_set_size, cairo_ps_surface_set_size ()
    -
    cairo_push_group, cairo_push_group () +
    cairo_push_group, cairo_push_group ()
    -
    cairo_push_group_with_content, cairo_push_group_with_content () +
    cairo_push_group_with_content, cairo_push_group_with_content ()

    Q

    -
    cairo_quartz_font_face_create_for_atsu_font_id, cairo_quartz_font_face_create_for_atsu_font_id () +
    cairo_quartz_font_face_create_for_atsu_font_id, cairo_quartz_font_face_create_for_atsu_font_id ()
    -
    cairo_quartz_font_face_create_for_cgfont, cairo_quartz_font_face_create_for_cgfont () +
    cairo_quartz_font_face_create_for_cgfont, cairo_quartz_font_face_create_for_cgfont ()
    -
    cairo_quartz_surface_create, cairo_quartz_surface_create () +
    cairo_quartz_surface_create, cairo_quartz_surface_create ()
    -
    cairo_quartz_surface_create_for_cg_context, cairo_quartz_surface_create_for_cg_context () +
    cairo_quartz_surface_create_for_cg_context, cairo_quartz_surface_create_for_cg_context ()
    -
    cairo_quartz_surface_get_cg_context, cairo_quartz_surface_get_cg_context () +
    cairo_quartz_surface_get_cg_context, cairo_quartz_surface_get_cg_context ()

    R

    -
    cairo_raster_source_acquire_func_t, cairo_raster_source_acquire_func_t () +
    cairo_raster_source_acquire_func_t, cairo_raster_source_acquire_func_t ()
    -
    cairo_raster_source_copy_func_t, cairo_raster_source_copy_func_t () +
    cairo_raster_source_copy_func_t, cairo_raster_source_copy_func_t ()
    -
    cairo_raster_source_finish_func_t, cairo_raster_source_finish_func_t () +
    cairo_raster_source_finish_func_t, cairo_raster_source_finish_func_t ()
    -
    cairo_raster_source_pattern_get_acquire, cairo_raster_source_pattern_get_acquire () +
    cairo_raster_source_pattern_get_acquire, cairo_raster_source_pattern_get_acquire ()
    -
    cairo_raster_source_pattern_get_callback_data, cairo_raster_source_pattern_get_callback_data () +
    cairo_raster_source_pattern_get_callback_data, cairo_raster_source_pattern_get_callback_data ()
    -
    cairo_raster_source_pattern_get_copy, cairo_raster_source_pattern_get_copy () +
    cairo_raster_source_pattern_get_copy, cairo_raster_source_pattern_get_copy ()
    -
    cairo_raster_source_pattern_get_finish, cairo_raster_source_pattern_get_finish () +
    cairo_raster_source_pattern_get_finish, cairo_raster_source_pattern_get_finish ()
    -
    cairo_raster_source_pattern_get_snapshot, cairo_raster_source_pattern_get_snapshot () +
    cairo_raster_source_pattern_get_snapshot, cairo_raster_source_pattern_get_snapshot ()
    -
    cairo_raster_source_pattern_set_acquire, cairo_raster_source_pattern_set_acquire () +
    cairo_raster_source_pattern_set_acquire, cairo_raster_source_pattern_set_acquire ()
    -
    cairo_raster_source_pattern_set_callback_data, cairo_raster_source_pattern_set_callback_data () +
    cairo_raster_source_pattern_set_callback_data, cairo_raster_source_pattern_set_callback_data ()
    -
    cairo_raster_source_pattern_set_copy, cairo_raster_source_pattern_set_copy () +
    cairo_raster_source_pattern_set_copy, cairo_raster_source_pattern_set_copy ()
    -
    cairo_raster_source_pattern_set_finish, cairo_raster_source_pattern_set_finish () +
    cairo_raster_source_pattern_set_finish, cairo_raster_source_pattern_set_finish ()
    -
    cairo_raster_source_pattern_set_snapshot, cairo_raster_source_pattern_set_snapshot () +
    cairo_raster_source_pattern_set_snapshot, cairo_raster_source_pattern_set_snapshot ()
    -
    cairo_raster_source_release_func_t, cairo_raster_source_release_func_t () +
    cairo_raster_source_release_func_t, cairo_raster_source_release_func_t ()
    -
    cairo_raster_source_snapshot_func_t, cairo_raster_source_snapshot_func_t () +
    cairo_raster_source_snapshot_func_t, cairo_raster_source_snapshot_func_t ()
    -
    cairo_read_func_t, cairo_read_func_t () +
    cairo_read_func_t, cairo_read_func_t ()
    -
    cairo_recording_surface_create, cairo_recording_surface_create () +
    cairo_recording_surface_create, cairo_recording_surface_create ()
    -
    cairo_recording_surface_get_extents, cairo_recording_surface_get_extents () +
    cairo_recording_surface_get_extents, cairo_recording_surface_get_extents ()
    -
    cairo_recording_surface_ink_extents, cairo_recording_surface_ink_extents () +
    cairo_recording_surface_ink_extents, cairo_recording_surface_ink_extents ()
    -
    cairo_rectangle, cairo_rectangle () +
    cairo_rectangle, cairo_rectangle ()
    cairo_rectangle_int_t, cairo_rectangle_int_t
    -
    cairo_rectangle_list_destroy, cairo_rectangle_list_destroy () +
    cairo_rectangle_list_destroy, cairo_rectangle_list_destroy ()
    cairo_rectangle_list_t, cairo_rectangle_list_t
    cairo_rectangle_t, cairo_rectangle_t
    -
    cairo_reference, cairo_reference () +
    cairo_reference, cairo_reference ()
    -
    cairo_region_contains_point, cairo_region_contains_point () +
    cairo_region_contains_point, cairo_region_contains_point ()
    -
    cairo_region_contains_rectangle, cairo_region_contains_rectangle () +
    cairo_region_contains_rectangle, cairo_region_contains_rectangle ()
    -
    cairo_region_copy, cairo_region_copy () +
    cairo_region_copy, cairo_region_copy ()
    -
    cairo_region_create, cairo_region_create () +
    cairo_region_create, cairo_region_create ()
    -
    cairo_region_create_rectangle, cairo_region_create_rectangle () +
    cairo_region_create_rectangle, cairo_region_create_rectangle ()
    -
    cairo_region_create_rectangles, cairo_region_create_rectangles () +
    cairo_region_create_rectangles, cairo_region_create_rectangles ()
    -
    cairo_region_destroy, cairo_region_destroy () +
    cairo_region_destroy, cairo_region_destroy ()
    -
    cairo_region_equal, cairo_region_equal () +
    cairo_region_equal, cairo_region_equal ()
    -
    cairo_region_get_extents, cairo_region_get_extents () +
    cairo_region_get_extents, cairo_region_get_extents ()
    -
    cairo_region_get_rectangle, cairo_region_get_rectangle () +
    cairo_region_get_rectangle, cairo_region_get_rectangle ()
    -
    cairo_region_intersect, cairo_region_intersect () +
    cairo_region_intersect, cairo_region_intersect ()
    -
    cairo_region_intersect_rectangle, cairo_region_intersect_rectangle () +
    cairo_region_intersect_rectangle, cairo_region_intersect_rectangle ()
    -
    cairo_region_is_empty, cairo_region_is_empty () +
    cairo_region_is_empty, cairo_region_is_empty ()
    -
    cairo_region_num_rectangles, cairo_region_num_rectangles () +
    cairo_region_num_rectangles, cairo_region_num_rectangles ()
    cairo_region_overlap_t, enum cairo_region_overlap_t
    -
    cairo_region_reference, cairo_region_reference () +
    cairo_region_reference, cairo_region_reference ()
    -
    cairo_region_status, cairo_region_status () +
    cairo_region_status, cairo_region_status ()
    -
    cairo_region_subtract, cairo_region_subtract () +
    cairo_region_subtract, cairo_region_subtract ()
    -
    cairo_region_subtract_rectangle, cairo_region_subtract_rectangle () +
    cairo_region_subtract_rectangle, cairo_region_subtract_rectangle ()
    cairo_region_t, cairo_region_t
    -
    cairo_region_translate, cairo_region_translate () +
    cairo_region_translate, cairo_region_translate ()
    -
    cairo_region_union, cairo_region_union () +
    cairo_region_union, cairo_region_union ()
    -
    cairo_region_union_rectangle, cairo_region_union_rectangle () +
    cairo_region_union_rectangle, cairo_region_union_rectangle ()
    -
    cairo_region_xor, cairo_region_xor () +
    cairo_region_xor, cairo_region_xor ()
    -
    cairo_region_xor_rectangle, cairo_region_xor_rectangle () +
    cairo_region_xor_rectangle, cairo_region_xor_rectangle ()
    -
    cairo_rel_curve_to, cairo_rel_curve_to () +
    cairo_rel_curve_to, cairo_rel_curve_to ()
    -
    cairo_rel_line_to, cairo_rel_line_to () +
    cairo_rel_line_to, cairo_rel_line_to ()
    -
    cairo_rel_move_to, cairo_rel_move_to () +
    cairo_rel_move_to, cairo_rel_move_to ()
    -
    cairo_reset_clip, cairo_reset_clip () +
    cairo_reset_clip, cairo_reset_clip ()
    -
    cairo_restore, cairo_restore () +
    cairo_restore, cairo_restore ()
    -
    cairo_rotate, cairo_rotate () +
    cairo_rotate, cairo_rotate ()

    S

    -
    cairo_save, cairo_save () +
    cairo_save, cairo_save ()
    -
    cairo_scale, cairo_scale () +
    cairo_scale, cairo_scale ()
    -
    cairo_scaled_font_create, cairo_scaled_font_create () +
    cairo_scaled_font_create, cairo_scaled_font_create ()
    -
    cairo_scaled_font_destroy, cairo_scaled_font_destroy () +
    cairo_scaled_font_destroy, cairo_scaled_font_destroy ()
    -
    cairo_scaled_font_extents, cairo_scaled_font_extents () +
    cairo_scaled_font_extents, cairo_scaled_font_extents ()
    -
    cairo_scaled_font_get_ctm, cairo_scaled_font_get_ctm () +
    cairo_scaled_font_get_ctm, cairo_scaled_font_get_ctm ()
    -
    cairo_scaled_font_get_font_face, cairo_scaled_font_get_font_face () +
    cairo_scaled_font_get_font_face, cairo_scaled_font_get_font_face ()
    -
    cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix () +
    cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix ()
    -
    cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options () +
    cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options ()
    -
    cairo_scaled_font_get_reference_count, cairo_scaled_font_get_reference_count () +
    cairo_scaled_font_get_reference_count, cairo_scaled_font_get_reference_count ()
    -
    cairo_scaled_font_get_scale_matrix, cairo_scaled_font_get_scale_matrix () +
    cairo_scaled_font_get_scale_matrix, cairo_scaled_font_get_scale_matrix ()
    -
    cairo_scaled_font_get_type, cairo_scaled_font_get_type () +
    cairo_scaled_font_get_type, cairo_scaled_font_get_type ()
    -
    cairo_scaled_font_get_user_data, cairo_scaled_font_get_user_data () +
    cairo_scaled_font_get_user_data, cairo_scaled_font_get_user_data ()
    -
    cairo_scaled_font_glyph_extents, cairo_scaled_font_glyph_extents () +
    cairo_scaled_font_glyph_extents, cairo_scaled_font_glyph_extents ()
    -
    cairo_scaled_font_reference, cairo_scaled_font_reference () +
    cairo_scaled_font_reference, cairo_scaled_font_reference ()
    -
    cairo_scaled_font_set_user_data, cairo_scaled_font_set_user_data () +
    cairo_scaled_font_set_user_data, cairo_scaled_font_set_user_data ()
    -
    cairo_scaled_font_status, cairo_scaled_font_status () +
    cairo_scaled_font_status, cairo_scaled_font_status ()
    cairo_scaled_font_t, cairo_scaled_font_t
    -
    cairo_scaled_font_text_extents, cairo_scaled_font_text_extents () +
    cairo_scaled_font_text_extents, cairo_scaled_font_text_extents ()
    -
    cairo_scaled_font_text_to_glyphs, cairo_scaled_font_text_to_glyphs () +
    cairo_scaled_font_text_to_glyphs, cairo_scaled_font_text_to_glyphs ()
    -
    cairo_script_create, cairo_script_create () +
    cairo_script_create, cairo_script_create ()
    -
    cairo_script_create_for_stream, cairo_script_create_for_stream () +
    cairo_script_create_for_stream, cairo_script_create_for_stream ()
    -
    cairo_script_from_recording_surface, cairo_script_from_recording_surface () +
    cairo_script_from_recording_surface, cairo_script_from_recording_surface ()
    -
    cairo_script_get_mode, cairo_script_get_mode () +
    cairo_script_get_mode, cairo_script_get_mode ()
    cairo_script_mode_t, enum cairo_script_mode_t
    -
    cairo_script_set_mode, cairo_script_set_mode () +
    cairo_script_set_mode, cairo_script_set_mode ()
    -
    cairo_script_surface_create, cairo_script_surface_create () +
    cairo_script_surface_create, cairo_script_surface_create ()
    -
    cairo_script_surface_create_for_target, cairo_script_surface_create_for_target () +
    cairo_script_surface_create_for_target, cairo_script_surface_create_for_target ()
    -
    cairo_script_write_comment, cairo_script_write_comment () +
    cairo_script_write_comment, cairo_script_write_comment ()
    -
    cairo_select_font_face, cairo_select_font_face () +
    cairo_select_font_face, cairo_select_font_face ()
    -
    cairo_set_antialias, cairo_set_antialias () +
    cairo_set_antialias, cairo_set_antialias ()
    -
    cairo_set_dash, cairo_set_dash () +
    cairo_set_dash, cairo_set_dash ()
    -
    cairo_set_fill_rule, cairo_set_fill_rule () +
    cairo_set_fill_rule, cairo_set_fill_rule ()
    -
    cairo_set_font_face, cairo_set_font_face () +
    cairo_set_font_face, cairo_set_font_face ()
    -
    cairo_set_font_matrix, cairo_set_font_matrix () +
    cairo_set_font_matrix, cairo_set_font_matrix ()
    -
    cairo_set_font_options, cairo_set_font_options () +
    cairo_set_font_options, cairo_set_font_options ()
    -
    cairo_set_font_size, cairo_set_font_size () +
    cairo_set_font_size, cairo_set_font_size ()
    -
    cairo_set_line_cap, cairo_set_line_cap () +
    cairo_set_line_cap, cairo_set_line_cap ()
    -
    cairo_set_line_join, cairo_set_line_join () +
    cairo_set_line_join, cairo_set_line_join ()
    -
    cairo_set_line_width, cairo_set_line_width () +
    cairo_set_line_width, cairo_set_line_width ()
    -
    cairo_set_matrix, cairo_set_matrix () +
    cairo_set_matrix, cairo_set_matrix ()
    -
    cairo_set_miter_limit, cairo_set_miter_limit () +
    cairo_set_miter_limit, cairo_set_miter_limit ()
    -
    cairo_set_operator, cairo_set_operator () +
    cairo_set_operator, cairo_set_operator ()
    -
    cairo_set_scaled_font, cairo_set_scaled_font () +
    cairo_set_scaled_font, cairo_set_scaled_font ()
    -
    cairo_set_source, cairo_set_source () +
    cairo_set_source, cairo_set_source ()
    -
    cairo_set_source_rgb, cairo_set_source_rgb () +
    cairo_set_source_rgb, cairo_set_source_rgb ()
    -
    cairo_set_source_rgba, cairo_set_source_rgba () +
    cairo_set_source_rgba, cairo_set_source_rgba ()
    -
    cairo_set_source_surface, cairo_set_source_surface () +
    cairo_set_source_surface, cairo_set_source_surface ()
    -
    cairo_set_tolerance, cairo_set_tolerance () +
    cairo_set_tolerance, cairo_set_tolerance ()
    -
    cairo_set_user_data, cairo_set_user_data () +
    cairo_set_user_data, cairo_set_user_data ()
    -
    cairo_show_glyphs, cairo_show_glyphs () +
    cairo_show_glyphs, cairo_show_glyphs ()
    -
    cairo_show_page, cairo_show_page () +
    cairo_show_page, cairo_show_page ()
    -
    cairo_show_text, cairo_show_text () +
    cairo_show_text, cairo_show_text ()
    -
    cairo_show_text_glyphs, cairo_show_text_glyphs () +
    cairo_show_text_glyphs, cairo_show_text_glyphs ()
    -
    cairo_status, cairo_status () +
    cairo_status, cairo_status ()
    cairo_status_t, enum cairo_status_t
    -
    cairo_status_to_string, cairo_status_to_string () +
    cairo_status_to_string, cairo_status_to_string ()
    -
    cairo_stroke, cairo_stroke () +
    cairo_stroke, cairo_stroke ()
    -
    cairo_stroke_extents, cairo_stroke_extents () +
    cairo_stroke_extents, cairo_stroke_extents ()
    -
    cairo_stroke_preserve, cairo_stroke_preserve () +
    cairo_stroke_preserve, cairo_stroke_preserve ()
    cairo_subpixel_order_t, enum cairo_subpixel_order_t
    -
    cairo_surface_copy_page, cairo_surface_copy_page () +
    cairo_surface_copy_page, cairo_surface_copy_page () +
    +
    cairo_surface_create_for_rectangle, cairo_surface_create_for_rectangle () +
    +
    cairo_surface_create_similar, cairo_surface_create_similar ()
    -
    cairo_surface_create_for_rectangle, cairo_surface_create_for_rectangle () +
    cairo_surface_create_similar_image, cairo_surface_create_similar_image ()
    -
    cairo_surface_create_similar, cairo_surface_create_similar () +
    cairo_surface_destroy, cairo_surface_destroy ()
    -
    cairo_surface_create_similar_image, cairo_surface_create_similar_image () +
    cairo_surface_finish, cairo_surface_finish ()
    -
    cairo_surface_destroy, cairo_surface_destroy () +
    cairo_surface_flush, cairo_surface_flush ()
    -
    cairo_surface_finish, cairo_surface_finish () +
    cairo_surface_get_content, cairo_surface_get_content ()
    -
    cairo_surface_flush, cairo_surface_flush () +
    cairo_surface_get_device, cairo_surface_get_device ()
    -
    cairo_surface_get_content, cairo_surface_get_content () +
    cairo_surface_get_device_offset, cairo_surface_get_device_offset ()
    -
    cairo_surface_get_device, cairo_surface_get_device () +
    cairo_surface_get_device_scale, cairo_surface_get_device_scale ()
    -
    cairo_surface_get_device_offset, cairo_surface_get_device_offset () +
    cairo_surface_get_fallback_resolution, cairo_surface_get_fallback_resolution ()
    -
    cairo_surface_get_fallback_resolution, cairo_surface_get_fallback_resolution () +
    cairo_surface_get_font_options, cairo_surface_get_font_options ()
    -
    cairo_surface_get_font_options, cairo_surface_get_font_options () +
    cairo_surface_get_mime_data, cairo_surface_get_mime_data ()
    -
    cairo_surface_get_mime_data, cairo_surface_get_mime_data () +
    cairo_surface_get_reference_count, cairo_surface_get_reference_count ()
    -
    cairo_surface_get_reference_count, cairo_surface_get_reference_count () +
    cairo_surface_get_type, cairo_surface_get_type ()
    -
    cairo_surface_get_type, cairo_surface_get_type () +
    cairo_surface_get_user_data, cairo_surface_get_user_data ()
    -
    cairo_surface_get_user_data, cairo_surface_get_user_data () +
    cairo_surface_has_show_text_glyphs, cairo_surface_has_show_text_glyphs ()
    -
    cairo_surface_has_show_text_glyphs, cairo_surface_has_show_text_glyphs () +
    cairo_surface_map_to_image, cairo_surface_map_to_image ()
    -
    cairo_surface_map_to_image, cairo_surface_map_to_image () +
    cairo_surface_mark_dirty, cairo_surface_mark_dirty ()
    -
    cairo_surface_mark_dirty, cairo_surface_mark_dirty () +
    cairo_surface_mark_dirty_rectangle, cairo_surface_mark_dirty_rectangle ()
    -
    cairo_surface_mark_dirty_rectangle, cairo_surface_mark_dirty_rectangle () +
    cairo_surface_reference, cairo_surface_reference ()
    -
    cairo_surface_reference, cairo_surface_reference () +
    cairo_surface_set_device_offset, cairo_surface_set_device_offset ()
    -
    cairo_surface_set_device_offset, cairo_surface_set_device_offset () +
    cairo_surface_set_device_scale, cairo_surface_set_device_scale ()
    -
    cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution () +
    cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution ()
    -
    cairo_surface_set_mime_data, cairo_surface_set_mime_data () +
    cairo_surface_set_mime_data, cairo_surface_set_mime_data ()
    -
    cairo_surface_set_user_data, cairo_surface_set_user_data () +
    cairo_surface_set_user_data, cairo_surface_set_user_data ()
    -
    cairo_surface_show_page, cairo_surface_show_page () +
    cairo_surface_show_page, cairo_surface_show_page ()
    -
    cairo_surface_status, cairo_surface_status () +
    cairo_surface_status, cairo_surface_status ()
    -
    cairo_surface_supports_mime_type, cairo_surface_supports_mime_type () +
    cairo_surface_supports_mime_type, cairo_surface_supports_mime_type ()
    cairo_surface_t, cairo_surface_t
    cairo_surface_type_t, enum cairo_surface_type_t
    -
    cairo_surface_unmap_image, cairo_surface_unmap_image () +
    cairo_surface_unmap_image, cairo_surface_unmap_image ()
    -
    cairo_surface_write_to_png, cairo_surface_write_to_png () +
    cairo_surface_write_to_png, cairo_surface_write_to_png ()
    -
    cairo_surface_write_to_png_stream, cairo_surface_write_to_png_stream () +
    cairo_surface_write_to_png_stream, cairo_surface_write_to_png_stream ()
    -
    cairo_svg_get_versions, cairo_svg_get_versions () +
    cairo_svg_get_versions, cairo_svg_get_versions ()
    -
    cairo_svg_surface_create, cairo_svg_surface_create () +
    cairo_svg_surface_create, cairo_svg_surface_create ()
    -
    cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream () +
    cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream ()
    -
    cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version () +
    cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version ()
    cairo_svg_version_t, enum cairo_svg_version_t
    -
    cairo_svg_version_to_string, cairo_svg_version_to_string () +
    cairo_svg_version_to_string, cairo_svg_version_to_string ()
    @@ -909,31 +933,31 @@
    cairo_t, cairo_t
    -
    cairo_text_cluster_allocate, cairo_text_cluster_allocate () +
    cairo_text_cluster_allocate, cairo_text_cluster_allocate ()
    cairo_text_cluster_flags_t, enum cairo_text_cluster_flags_t
    -
    cairo_text_cluster_free, cairo_text_cluster_free () +
    cairo_text_cluster_free, cairo_text_cluster_free ()
    cairo_text_cluster_t, cairo_text_cluster_t
    -
    cairo_text_extents, cairo_text_extents () +
    cairo_text_extents, cairo_text_extents ()
    cairo_text_extents_t, cairo_text_extents_t
    -
    cairo_text_path, cairo_text_path () +
    cairo_text_path, cairo_text_path ()
    -
    cairo_toy_font_face_create, cairo_toy_font_face_create () +
    cairo_toy_font_face_create, cairo_toy_font_face_create ()
    -
    cairo_toy_font_face_get_family, cairo_toy_font_face_get_family () +
    cairo_toy_font_face_get_family, cairo_toy_font_face_get_family ()
    -
    cairo_toy_font_face_get_slant, cairo_toy_font_face_get_slant () +
    cairo_toy_font_face_get_slant, cairo_toy_font_face_get_slant ()
    -
    cairo_toy_font_face_get_weight, cairo_toy_font_face_get_weight () +
    cairo_toy_font_face_get_weight, cairo_toy_font_face_get_weight ()
    -
    cairo_transform, cairo_transform () +
    cairo_transform, cairo_transform ()
    -
    cairo_translate, cairo_translate () +
    cairo_translate, cairo_translate ()
    @@ -942,44 +966,44 @@
    cairo_user_data_key_t, cairo_user_data_key_t
    -
    cairo_user_font_face_create, cairo_user_font_face_create () +
    cairo_user_font_face_create, cairo_user_font_face_create ()
    -
    cairo_user_font_face_get_init_func, cairo_user_font_face_get_init_func () +
    cairo_user_font_face_get_init_func, cairo_user_font_face_get_init_func ()
    -
    cairo_user_font_face_get_render_glyph_func, cairo_user_font_face_get_render_glyph_func () +
    cairo_user_font_face_get_render_glyph_func, cairo_user_font_face_get_render_glyph_func ()
    -
    cairo_user_font_face_get_text_to_glyphs_func, cairo_user_font_face_get_text_to_glyphs_func () +
    cairo_user_font_face_get_text_to_glyphs_func, cairo_user_font_face_get_text_to_glyphs_func ()
    -
    cairo_user_font_face_get_unicode_to_glyph_func, cairo_user_font_face_get_unicode_to_glyph_func () +
    cairo_user_font_face_get_unicode_to_glyph_func, cairo_user_font_face_get_unicode_to_glyph_func ()
    -
    cairo_user_font_face_set_init_func, cairo_user_font_face_set_init_func () +
    cairo_user_font_face_set_init_func, cairo_user_font_face_set_init_func ()
    -
    cairo_user_font_face_set_render_glyph_func, cairo_user_font_face_set_render_glyph_func () +
    cairo_user_font_face_set_render_glyph_func, cairo_user_font_face_set_render_glyph_func ()
    -
    cairo_user_font_face_set_text_to_glyphs_func, cairo_user_font_face_set_text_to_glyphs_func () +
    cairo_user_font_face_set_text_to_glyphs_func, cairo_user_font_face_set_text_to_glyphs_func ()
    -
    cairo_user_font_face_set_unicode_to_glyph_func, cairo_user_font_face_set_unicode_to_glyph_func () +
    cairo_user_font_face_set_unicode_to_glyph_func, cairo_user_font_face_set_unicode_to_glyph_func ()
    -
    cairo_user_scaled_font_init_func_t, cairo_user_scaled_font_init_func_t () +
    cairo_user_scaled_font_init_func_t, cairo_user_scaled_font_init_func_t ()
    -
    cairo_user_scaled_font_render_glyph_func_t, cairo_user_scaled_font_render_glyph_func_t () +
    cairo_user_scaled_font_render_glyph_func_t, cairo_user_scaled_font_render_glyph_func_t ()
    -
    cairo_user_scaled_font_text_to_glyphs_func_t, cairo_user_scaled_font_text_to_glyphs_func_t () +
    cairo_user_scaled_font_text_to_glyphs_func_t, cairo_user_scaled_font_text_to_glyphs_func_t ()
    -
    cairo_user_scaled_font_unicode_to_glyph_func_t, cairo_user_scaled_font_unicode_to_glyph_func_t () +
    cairo_user_scaled_font_unicode_to_glyph_func_t, cairo_user_scaled_font_unicode_to_glyph_func_t ()
    -
    cairo_user_to_device, cairo_user_to_device () +
    cairo_user_to_device, cairo_user_to_device ()
    -
    cairo_user_to_device_distance, cairo_user_to_device_distance () +
    cairo_user_to_device_distance, cairo_user_to_device_distance ()

    V

    -
    CAIRO_VERSION, CAIRO_VERSION +
    cairo_version, cairo_version ()
    -
    cairo_version, cairo_version () +
    CAIRO_VERSION, CAIRO_VERSION
    CAIRO_VERSION_ENCODE, CAIRO_VERSION_ENCODE()
    @@ -989,9 +1013,9 @@
    CAIRO_VERSION_MINOR, CAIRO_VERSION_MINOR
    -
    CAIRO_VERSION_STRING, CAIRO_VERSION_STRING +
    cairo_version_string, cairo_version_string ()
    -
    cairo_version_string, cairo_version_string () +
    CAIRO_VERSION_STRING, CAIRO_VERSION_STRING
    CAIRO_VERSION_STRINGIZE, CAIRO_VERSION_STRINGIZE()
    @@ -1000,92 +1024,92 @@

    W

    -
    cairo_win32_font_face_create_for_hfont, cairo_win32_font_face_create_for_hfont () +
    cairo_win32_font_face_create_for_hfont, cairo_win32_font_face_create_for_hfont ()
    -
    cairo_win32_font_face_create_for_logfontw, cairo_win32_font_face_create_for_logfontw () +
    cairo_win32_font_face_create_for_logfontw, cairo_win32_font_face_create_for_logfontw ()
    -
    cairo_win32_font_face_create_for_logfontw_hfont, cairo_win32_font_face_create_for_logfontw_hfont () +
    cairo_win32_font_face_create_for_logfontw_hfont, cairo_win32_font_face_create_for_logfontw_hfont ()
    -
    cairo_win32_printing_surface_create, cairo_win32_printing_surface_create () +
    cairo_win32_printing_surface_create, cairo_win32_printing_surface_create ()
    -
    cairo_win32_scaled_font_done_font, cairo_win32_scaled_font_done_font () +
    cairo_win32_scaled_font_done_font, cairo_win32_scaled_font_done_font ()
    -
    cairo_win32_scaled_font_get_device_to_logical, cairo_win32_scaled_font_get_device_to_logical () +
    cairo_win32_scaled_font_get_device_to_logical, cairo_win32_scaled_font_get_device_to_logical ()
    -
    cairo_win32_scaled_font_get_logical_to_device, cairo_win32_scaled_font_get_logical_to_device () +
    cairo_win32_scaled_font_get_logical_to_device, cairo_win32_scaled_font_get_logical_to_device ()
    -
    cairo_win32_scaled_font_get_metrics_factor, cairo_win32_scaled_font_get_metrics_factor () +
    cairo_win32_scaled_font_get_metrics_factor, cairo_win32_scaled_font_get_metrics_factor ()
    -
    cairo_win32_scaled_font_select_font, cairo_win32_scaled_font_select_font () +
    cairo_win32_scaled_font_select_font, cairo_win32_scaled_font_select_font ()
    -
    cairo_win32_surface_create, cairo_win32_surface_create () +
    cairo_win32_surface_create, cairo_win32_surface_create ()
    -
    cairo_win32_surface_create_with_ddb, cairo_win32_surface_create_with_ddb () +
    cairo_win32_surface_create_with_ddb, cairo_win32_surface_create_with_ddb ()
    -
    cairo_win32_surface_create_with_dib, cairo_win32_surface_create_with_dib () +
    cairo_win32_surface_create_with_dib, cairo_win32_surface_create_with_dib ()
    -
    cairo_win32_surface_get_dc, cairo_win32_surface_get_dc () +
    cairo_win32_surface_get_dc, cairo_win32_surface_get_dc ()
    -
    cairo_win32_surface_get_image, cairo_win32_surface_get_image () +
    cairo_win32_surface_get_image, cairo_win32_surface_get_image ()
    -
    cairo_write_func_t, cairo_write_func_t () +
    cairo_write_func_t, cairo_write_func_t ()

    X

    -
    cairo_xcb_device_debug_cap_xrender_version, cairo_xcb_device_debug_cap_xrender_version () +
    cairo_xcb_device_debug_cap_xrender_version, cairo_xcb_device_debug_cap_xrender_version ()
    -
    cairo_xcb_device_debug_cap_xshm_version, cairo_xcb_device_debug_cap_xshm_version () +
    cairo_xcb_device_debug_cap_xshm_version, cairo_xcb_device_debug_cap_xshm_version ()
    -
    cairo_xcb_device_debug_get_precision, cairo_xcb_device_debug_get_precision () +
    cairo_xcb_device_debug_get_precision, cairo_xcb_device_debug_get_precision ()
    -
    cairo_xcb_device_debug_set_precision, cairo_xcb_device_debug_set_precision () +
    cairo_xcb_device_debug_set_precision, cairo_xcb_device_debug_set_precision ()
    -
    cairo_xcb_device_get_connection, cairo_xcb_device_get_connection () +
    cairo_xcb_device_get_connection, cairo_xcb_device_get_connection ()
    -
    cairo_xcb_surface_create, cairo_xcb_surface_create () +
    cairo_xcb_surface_create, cairo_xcb_surface_create ()
    -
    cairo_xcb_surface_create_for_bitmap, cairo_xcb_surface_create_for_bitmap () +
    cairo_xcb_surface_create_for_bitmap, cairo_xcb_surface_create_for_bitmap ()
    -
    cairo_xcb_surface_create_with_xrender_format, cairo_xcb_surface_create_with_xrender_format () +
    cairo_xcb_surface_create_with_xrender_format, cairo_xcb_surface_create_with_xrender_format ()
    -
    cairo_xcb_surface_set_drawable, cairo_xcb_surface_set_drawable () +
    cairo_xcb_surface_set_drawable, cairo_xcb_surface_set_drawable ()
    -
    cairo_xcb_surface_set_size, cairo_xcb_surface_set_size () +
    cairo_xcb_surface_set_size, cairo_xcb_surface_set_size ()
    -
    cairo_xlib_device_debug_cap_xrender_version, cairo_xlib_device_debug_cap_xrender_version () +
    cairo_xlib_device_debug_cap_xrender_version, cairo_xlib_device_debug_cap_xrender_version ()
    -
    cairo_xlib_device_debug_get_precision, cairo_xlib_device_debug_get_precision () +
    cairo_xlib_device_debug_get_precision, cairo_xlib_device_debug_get_precision ()
    -
    cairo_xlib_device_debug_set_precision, cairo_xlib_device_debug_set_precision () +
    cairo_xlib_device_debug_set_precision, cairo_xlib_device_debug_set_precision ()
    -
    cairo_xlib_surface_create, cairo_xlib_surface_create () +
    cairo_xlib_surface_create, cairo_xlib_surface_create ()
    -
    cairo_xlib_surface_create_for_bitmap, cairo_xlib_surface_create_for_bitmap () +
    cairo_xlib_surface_create_for_bitmap, cairo_xlib_surface_create_for_bitmap ()
    -
    cairo_xlib_surface_create_with_xrender_format, cairo_xlib_surface_create_with_xrender_format () +
    cairo_xlib_surface_create_with_xrender_format, cairo_xlib_surface_create_with_xrender_format ()
    -
    cairo_xlib_surface_get_depth, cairo_xlib_surface_get_depth () +
    cairo_xlib_surface_get_depth, cairo_xlib_surface_get_depth ()
    -
    cairo_xlib_surface_get_display, cairo_xlib_surface_get_display () +
    cairo_xlib_surface_get_display, cairo_xlib_surface_get_display ()
    -
    cairo_xlib_surface_get_drawable, cairo_xlib_surface_get_drawable () +
    cairo_xlib_surface_get_drawable, cairo_xlib_surface_get_drawable ()
    -
    cairo_xlib_surface_get_height, cairo_xlib_surface_get_height () +
    cairo_xlib_surface_get_height, cairo_xlib_surface_get_height ()
    -
    cairo_xlib_surface_get_screen, cairo_xlib_surface_get_screen () +
    cairo_xlib_surface_get_screen, cairo_xlib_surface_get_screen ()
    -
    cairo_xlib_surface_get_visual, cairo_xlib_surface_get_visual () +
    cairo_xlib_surface_get_visual, cairo_xlib_surface_get_visual ()
    -
    cairo_xlib_surface_get_width, cairo_xlib_surface_get_width () +
    cairo_xlib_surface_get_width, cairo_xlib_surface_get_width ()
    -
    cairo_xlib_surface_get_xrender_format, cairo_xlib_surface_get_xrender_format () +
    cairo_xlib_surface_get_xrender_format, cairo_xlib_surface_get_xrender_format ()
    -
    cairo_xlib_surface_set_drawable, cairo_xlib_surface_set_drawable () +
    cairo_xlib_surface_set_drawable, cairo_xlib_surface_set_drawable ()
    -
    cairo_xlib_surface_set_size, cairo_xlib_surface_set_size () +
    cairo_xlib_surface_set_size, cairo_xlib_surface_set_size ()
    @@ -1093,6 +1117,6 @@
    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index.html cairo-1.14.2/doc/public/html/index.html --- cairo-1.13.0~20140204/doc/public/html/index.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,11 +2,11 @@ -Cairo: A Vector Graphics Library +Cairo: A Vector Graphics Library: Cairo: A Vector Graphics Library - + @@ -14,7 +14,7 @@
    -

    for Cairo 1.13.1 +

    for Cairo 1.14.2


    @@ -152,6 +152,6 @@
    + Generated by GTK-Doc V1.20
    \ No newline at end of file diff -Nru cairo-1.13.0~20140204/doc/public/html/index.sgml cairo-1.14.2/doc/public/html/index.sgml --- cairo-1.13.0~20140204/doc/public/html/index.sgml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/index.sgml 2015-03-11 02:02:37.000000000 +0000 @@ -1,8 +1,9 @@ - + + + - - + @@ -20,70 +21,21 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -93,8 +45,6 @@ - - @@ -114,18 +64,22 @@ + + + + + + + + + - + + + - - - - - - - - + @@ -147,11 +101,16 @@ + + + + - + + + - - + @@ -181,41 +140,28 @@ - - - - - - - - - - - - - - - - - - - + + + + + - + + + - - + @@ -228,10 +174,6 @@ - - - - @@ -243,10 +185,14 @@ + + + - + + - + @@ -258,22 +204,14 @@ + - + + + - - - - - - - - - - - - + @@ -298,11 +236,18 @@ + + + + + + - + + - + @@ -319,38 +264,36 @@ + - + + + - - + - - - - - - + + + - + + + - - + - - @@ -363,12 +306,17 @@ + + + + - + + + - - + @@ -378,52 +326,43 @@ - - - - - - - - - - - - - - - - + + + + + - + + + - - - + - - - + + + + - + + + - - + @@ -432,20 +371,26 @@ + + - + + + - - + + + - + + + - - + @@ -459,48 +404,42 @@ + + - + + + - - + - - - - - - - - - - + + + + + + + + + + - + + + - - - - - - - - - - - - + @@ -516,34 +455,10 @@ + + - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -556,20 +471,26 @@ + + + + + + + + + + + + + - + + + - - - - - - - - - - + @@ -578,45 +499,50 @@ + + + - + + + - - + - - - + + + - + + + - - + + + - + + + - - + - - - @@ -625,57 +551,70 @@ + + + - + + + - - + + + - + + + - - + + + - + + + - - + - - - + + + - + + + - - + + + - + + + - - - + @@ -686,12 +625,16 @@ + + + - + + + - - + @@ -706,37 +649,44 @@ + + - + + + - - + + + - + + + - - + - - - + + + - + + + - - + @@ -749,73 +699,44 @@ + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + - + + + + + + - - - - - + + + - + + + - diff -Nru cairo-1.13.0~20140204/doc/public/html/language-bindings.html cairo-1.14.2/doc/public/html/language-bindings.html --- cairo-1.13.0~20140204/doc/public/html/language-bindings.html 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/language-bindings.html 2015-03-11 02:02:37.000000000 +0000 @@ -2,22 +2,22 @@ -Appendix A. Creating a language binding for cairo +Cairo: A Vector Graphics Library: Appendix A. Creating a language binding for cairo - + - - - - - - + + + + + +

    @@ -68,6 +68,6 @@

    + Generated by GTK-Doc V1.20
    \ No newline at end of file Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/left-insensitive.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/left-insensitive.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/left.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/left.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/right-insensitive.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/right-insensitive.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/right.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/right.png differ diff -Nru cairo-1.13.0~20140204/doc/public/html/style.css cairo-1.14.2/doc/public/html/style.css --- cairo-1.13.0~20140204/doc/public/html/style.css 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/html/style.css 2015-03-11 02:02:37.000000000 +0000 @@ -1,15 +1,23 @@ +body +{ + font-family: cantarell, sans-serif; +} .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; - border: solid 1px #d3d7cf; + background: rgba(238, 238, 236, 0.5); + border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ + /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; + background: rgba(114, 159, 207, 0.1); + border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist @@ -27,7 +35,6 @@ { position: relative; top: 0em ! important; - } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] @@ -46,16 +53,20 @@ */ body { - padding-top: 3.2em; - padding-bottom: 20em; + padding-top: 5em; + padding-bottom: 500px; + max-width: 60em; + } + p + { + max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; - /* tango:scarlet red 0/1 */ - background: #ffe6e6; - border: solid 1px #ef2929; + background: #e2e2e2; + border-bottom: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; @@ -65,21 +76,57 @@ } .navigation a, .navigation a:visited { - /* tango:scarlet red 3 */ - color: #a40000; + /* tango:sky blue 3 */ + color: #204a87; } .navigation a:hover { - /* tango:scarlet red 1 */ - color: #ef2929; + /* tango:sky blue 2 */ + color: #3465a4; } td.shortcuts { - /* tango:scarlet red 1 */ - color: #ef2929; + /* tango:sky blue 2 */ + color: #3465a4; font-size: 80%; white-space: nowrap; } + td.shortcuts .dim + { + color: #babdb6; + } +} +@media screen and (min-width: 60em) { + /* screen larger than 60em */ + body { margin: auto; } +} +@media screen and (max-width: 60em) { + /* screen less than 60em */ + #nav_hierarchy { display: none; } + #nav_interfaces { display: none; } + #nav_prerequisites { display: none; } + #nav_derived_interfaces { display: none; } + #nav_implementations { display: none; } + #nav_child_properties { display: none; } + #nav_style_properties { display: none; } + #nav_index { display: none; } + #nav_glossary { display: none; } + .gallery_image { display: none; } + .property_flags { display: none; } + .signal_flags { display: none; } + .parameter_annotations { display: none; } + .enum_member_annotations { display: none; } + .struct_member_annotations { display: none; } + .union_member_annotations { display: none; } + /* now that a column is hidden, optimize space */ + col.parameters_name { width: auto; } + col.parameters_description { width: auto; } + col.struct_members_name { width: auto; } + col.struct_members_description { width: auto; } + col.enum_members_name { width: auto; } + col.enum_members_description { width: auto; } + col.union_members_name { width: auto; } + col.union_members_description { width: auto; } } @media print { table.navigation { @@ -89,9 +136,8 @@ div.titlepage table.navigation { visibility: visible; display: table; - /* tango:scarlet red 0/1 */ - background: #ffe6e6; - border: solid 1px #ef2929; + background: #e2e2e2; + border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; @@ -102,7 +148,7 @@ .navigation .title { - font-size: 200%; + font-size: 120%; } div.gallery-float @@ -132,6 +178,67 @@ color: #729fcf; } +div.informaltable table +{ + border-collapse: separate; + border-spacing: 20px 3px; + border: none; +} + +div.informaltable table td, div.informaltable table th +{ + vertical-align: top; +} + +.function_type, +.variable_type, +.property_type, +.signal_type, +.parameter_name, +.struct_member_name, +.union_member_name, +.define_keyword, +.datatype_keyword, +.typedef_keyword +{ + text-align: right; +} + +/* dim non-primary columns */ +.c_punctuation, +.function_type, +.variable_type, +.property_type, +.signal_type, +.define_keyword, +.datatype_keyword, +.typedef_keyword, +.property_flags, +.signal_flags, +.parameter_annotations, +.enum_member_annotations, +.struct_member_annotations, +.union_member_annotations +{ + color: #888a85; +} + +.function_type a, +.function_type a:visited, +.function_type a:hover, +.property_type a, +.property_type a:visited, +.property_type a:hover, +.signal_type a, +.signal_type a:visited, +.signal_type a:hover, +.signal_flags a, +.signal_flags a:visited, +.signal_flags a:hover +{ + color: #729fcf; +} + div.table table { border-collapse: collapse; @@ -154,14 +261,43 @@ background-color: #d3d7cf; } +h4 +{ + color: #555753; +} + hr { - /* tango:aluminium 3 */ - color: #babdb6; - background: #babdb6; + /* tango:aluminium 1 */ + color: #d3d7cf; + background: #d3d7cf; border: none 0px; height: 1px; clear: both; + margin: 2.0em 0em 2.0em 0em; +} + +dl.toc dt +{ + padding-bottom: 0.25em; +} + +dl.toc > dd > dl > dt +{ + padding-top: 0.25em; + padding-bottom: 0.25em; +} + +dl.toc > dt +{ + padding-top: 1em; + padding-bottom: 0.5em; + font-weight: bold; +} + +.parameter +{ + font-style: normal; } .footer @@ -173,31 +309,70 @@ font-size: 80%; } +.informalfigure, +.figure +{ + margin: 1em; +} + +.informalexample, +.example +{ + margin-top: 1em; + margin-bottom: 1em; +} + .warning { /* tango:orange 0/1 */ background: #ffeed9; + background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; + border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; + background: rgba(138, 226, 52, 0.1); border-color: #abf562; + border-color: rgba(138, 226, 52, 0.2); +} +div.blockquote +{ + border-color: #eeeeec; } -.note, .warning +.note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; + margin: 2em; } -.note h3, .warning h3 +.note p, .warning p { - margin-top: 0.0em + margin: 0; } -.note p, .warning p + +div.warning h3.title, +div.note h3.title { - margin-bottom: 0.0em + display: none; +} + +p + div.section +{ + margin-top: 1em; +} + +div.refnamediv, +div.refsynopsisdiv, +div.refsect1, +div.refsect2, +div.toc, +div.section +{ + margin-bottom: 1em; } /* blob links */ @@ -210,11 +385,22 @@ font-weight: normal; } +.lineart +{ + color: #d3d7cf; + font-weight: normal; +} + .annotation { /* tango:aluminium 5 */ color: #555753; - font-size: 80%; + font-weight: normal; +} + +.structfield +{ + font-style: normal; font-weight: normal; } @@ -237,6 +423,7 @@ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; + border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } @@ -246,19 +433,27 @@ padding: 0.5em; } .listing_lines { + /* this just adds visual clutter and + takes precious room from small screens */ + display: none; +} +.listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; + background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; + background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; + background: none; } .listing_lines pre, .listing_code pre { margin: 0px; Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/up-insensitive.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/up-insensitive.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/doc/public/html/up.png and /tmp/SKBLvw0RFA/cairo-1.14.2/doc/public/html/up.png differ diff -Nru cairo-1.13.0~20140204/doc/public/Makefile.in cairo-1.14.2/doc/public/Makefile.in --- cairo-1.13.0~20140204/doc/public/Makefile.in 2014-02-04 10:44:37.000000000 +0000 +++ cairo-1.14.2/doc/public/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -654,6 +654,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -840,14 +841,15 @@ cairo-fontconfig-private.h cairo-gstate-private.h \ cairo-hash-private.h cairo-image-info-private.h \ cairo-image-surface-inline.h cairo-image-surface-private.h \ - cairo-list-inline.h cairo-list-private.h \ - cairo-malloc-private.h cairo-mempool-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-pattern-inline.h \ - cairo-pattern-private.h cairo-pixman-private.h cairo-private.h \ + cairo-line-inline.h cairo-line-private.h cairo-list-inline.h \ + cairo-list-private.h cairo-malloc-private.h \ + cairo-mempool-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-pattern-inline.h cairo-pattern-private.h \ + cairo-pixman-private.h cairo-private.h \ cairo-recording-surface-inline.h \ cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ @@ -886,8 +888,8 @@ cairo-font-options.c cairo-freelist.c cairo-freed-pool.c \ cairo-gstate.c cairo-hash.c cairo-hull.c \ cairo-image-compositor.c cairo-image-info.c \ - cairo-image-source.c cairo-image-surface.c cairo-lzw.c \ - cairo-matrix.c cairo-mask-compositor.c \ + cairo-image-source.c cairo-image-surface.c cairo-line.c \ + cairo-lzw.c cairo-matrix.c cairo-mask-compositor.c \ cairo-mesh-pattern-rasterizer.c cairo-mempool.c cairo-misc.c \ cairo-mono-scan-converter.c cairo-mutex.c \ cairo-no-compositor.c cairo-observer.c cairo-output-stream.c \ @@ -999,6 +1001,7 @@ cairo-xcb-surface.c \ cairo-xcb-surface-core.c \ cairo-xcb-surface-render.c \ + cairo-xcb-resources.c \ $(NULL) cairo_qt_headers = cairo-qt.h diff -Nru cairo-1.13.0~20140204/doc/public/tmpl/cairo-device.sgml cairo-1.14.2/doc/public/tmpl/cairo-device.sgml --- cairo-1.13.0~20140204/doc/public/tmpl/cairo-device.sgml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/tmpl/cairo-device.sgml 2015-03-11 02:02:37.000000000 +0000 @@ -142,3 +142,68 @@ @device: + + + + + +@device: +@Returns: + + + + + + + +@device: +@Returns: + + + + + + + +@device: +@Returns: + + + + + + + +@device: +@Returns: + + + + + + + +@device: +@Returns: + + + + + + + +@device: +@write_func: +@closure: +@Returns: + + + + + + + +@device: +@Returns: + + diff -Nru cairo-1.13.0~20140204/doc/public/tmpl/cairo-skia.sgml cairo-1.14.2/doc/public/tmpl/cairo-skia.sgml --- cairo-1.13.0~20140204/doc/public/tmpl/cairo-skia.sgml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/doc/public/tmpl/cairo-skia.sgml 2015-03-11 02:02:37.000000000 +0000 @@ -0,0 +1,45 @@ + +cairo-skia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@format: +@Returns: + + diff -Nru cairo-1.13.0~20140204/doc/public/tmpl/cairo-surface-observer.sgml cairo-1.14.2/doc/public/tmpl/cairo-surface-observer.sgml --- cairo-1.13.0~20140204/doc/public/tmpl/cairo-surface-observer.sgml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/doc/public/tmpl/cairo-surface-observer.sgml 2015-03-11 02:02:37.000000000 +0000 @@ -0,0 +1,156 @@ + +cairo-surface-observer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@target: +@mode: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@abstract_surface: +@func: +@data: +@Returns: + + + + + + + +@observer: +@target: +@data: + + + + + + + +@surface: +@Returns: + + + + + + + +@CAIRO_SURFACE_OBSERVER_NORMAL: +@CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS: + + + + + + +@surface: +@write_func: +@closure: +@Returns: + + diff -Nru cairo-1.13.0~20140204/doc/public/tmpl/cairo-surface.sgml cairo-1.14.2/doc/public/tmpl/cairo-surface.sgml --- cairo-1.13.0~20140204/doc/public/tmpl/cairo-surface.sgml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/tmpl/cairo-surface.sgml 2015-03-11 02:02:37.000000000 +0000 @@ -29,6 +29,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -225,6 +246,26 @@ @y_offset: + + + + + +@surface: +@x_scale: +@y_scale: + + + + + + + +@surface: +@x_scale: +@y_scale: + + diff -Nru cairo-1.13.0~20140204/doc/public/version.xml cairo-1.14.2/doc/public/version.xml --- cairo-1.13.0~20140204/doc/public/version.xml 2014-02-04 09:51:35.000000000 +0000 +++ cairo-1.14.2/doc/public/version.xml 2015-03-11 01:43:22.000000000 +0000 @@ -1 +1 @@ -1.13.1 +1.14.2 diff -Nru cairo-1.13.0~20140204/doc/public/xml/api-index-1.10.xml cairo-1.14.2/doc/public/xml/api-index-1.10.xml --- cairo-1.13.0~20140204/doc/public/xml/api-index-1.10.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/api-index-1.10.xml 2015-03-11 02:02:37.000000000 +0000 @@ -69,6 +69,8 @@ cairo_region_xor_rectangle, function in Regions S +cairo_skia_context_t, typedef in cairo-skia +cairo_skia_surface_t, typedef in cairo-skia cairo_surface_create_for_rectangle, function in cairo_surface_t cairo_surface_get_device, function in cairo_surface_t cairo_surface_get_mime_data, function in cairo_surface_t diff -Nru cairo-1.13.0~20140204/doc/public/xml/api-index-1.12.xml cairo-1.14.2/doc/public/xml/api-index-1.12.xml --- cairo-1.13.0~20140204/doc/public/xml/api-index-1.12.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/api-index-1.12.xml 2015-03-11 02:02:37.000000000 +0000 @@ -61,8 +61,10 @@ cairo_script_surface_create, function in Script Surfaces cairo_script_surface_create_for_target, function in Script Surfaces cairo_script_write_comment, function in Script Surfaces +cairo_surface_create_observer, function in cairo-surface-observer cairo_surface_create_similar_image, function in cairo_surface_t cairo_surface_map_to_image, function in cairo_surface_t +cairo_surface_observer_mode_t, enum in cairo-surface-observer cairo_surface_supports_mime_type, function in cairo_surface_t cairo_surface_unmap_image, function in cairo_surface_t diff -Nru cairo-1.13.0~20140204/doc/public/xml/api-index-1.14.xml cairo-1.14.2/doc/public/xml/api-index-1.14.xml --- cairo-1.13.0~20140204/doc/public/xml/api-index-1.14.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/api-index-1.14.xml 2015-03-11 02:02:37.000000000 +0000 @@ -4,4 +4,13 @@ ]> +M +CAIRO_MIME_TYPE_JBIG2, macro in cairo_surface_t +CAIRO_MIME_TYPE_JBIG2_GLOBAL, macro in cairo_surface_t +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, macro in cairo_surface_t + +S +cairo_surface_get_device_scale, function in cairo_surface_t +cairo_surface_set_device_scale, function in cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/api-index-full.xml cairo-1.14.2/doc/public/xml/api-index-full.xml --- cairo-1.13.0~20140204/doc/public/xml/api-index-full.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/api-index-full.xml 2015-03-11 02:02:37.000000000 +0000 @@ -37,6 +37,13 @@ cairo_device_get_reference_count, function in cairo_device_t cairo_device_get_type, function in cairo_device_t cairo_device_get_user_data, function in cairo_device_t +cairo_device_observer_elapsed, function in cairo_device_t +cairo_device_observer_fill_elapsed, function in cairo_device_t +cairo_device_observer_glyphs_elapsed, function in cairo_device_t +cairo_device_observer_mask_elapsed, function in cairo_device_t +cairo_device_observer_paint_elapsed, function in cairo_device_t +cairo_device_observer_print, function in cairo_device_t +cairo_device_observer_stroke_elapsed, function in cairo_device_t cairo_device_reference, function in cairo_device_t cairo_device_release, function in cairo_device_t cairo_device_set_user_data, function in cairo_device_t @@ -86,6 +93,7 @@ cairo_font_weight_t, enum in text cairo_format_stride_for_width, function in Image Surfaces cairo_format_t, enum in Image Surfaces +format_to_sk_config, function in cairo-skia cairo_ft_font_face_create_for_ft_face, function in FreeType Fonts cairo_ft_font_face_create_for_pattern, function in FreeType Fonts cairo_ft_font_face_get_synthesize, function in FreeType Fonts @@ -130,6 +138,7 @@ CAIRO_HAS_FT_FONT, macro in FreeType Fonts CAIRO_HAS_IMAGE_SURFACE, macro in Image Surfaces CAIRO_HAS_MIME_SURFACE, macro in cairo_surface_t +CAIRO_HAS_OBSERVER_SURFACE, macro in cairo-surface-observer CAIRO_HAS_PDF_SURFACE, macro in PDF Surfaces CAIRO_HAS_PNG_FUNCTIONS, macro in PNG Support CAIRO_HAS_PS_SURFACE, macro in PostScript Surfaces @@ -196,6 +205,9 @@ cairo_mesh_pattern_set_control_point, function in cairo_pattern_t cairo_mesh_pattern_set_corner_color_rgb, function in cairo_pattern_t cairo_mesh_pattern_set_corner_color_rgba, function in cairo_pattern_t +CAIRO_MIME_TYPE_JBIG2, macro in cairo_surface_t +CAIRO_MIME_TYPE_JBIG2_GLOBAL, macro in cairo_surface_t +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, macro in cairo_surface_t 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 @@ -392,6 +404,8 @@ cairo_show_page, function in cairo_t cairo_show_text, function in text cairo_show_text_glyphs, function in text +cairo_skia_context_t, typedef in cairo-skia +cairo_skia_surface_t, typedef in cairo-skia cairo_status, function in cairo_t cairo_status_t, enum in Error handling cairo_status_to_string, function in Error handling @@ -401,6 +415,7 @@ cairo_subpixel_order_t, enum in cairo_font_options_t cairo_surface_copy_page, function in cairo_surface_t cairo_surface_create_for_rectangle, function in cairo_surface_t +cairo_surface_create_observer, function in cairo-surface-observer cairo_surface_create_similar, function in cairo_surface_t cairo_surface_create_similar_image, function in cairo_surface_t cairo_surface_destroy, function in cairo_surface_t @@ -409,6 +424,7 @@ cairo_surface_get_content, function in cairo_surface_t cairo_surface_get_device, function in cairo_surface_t cairo_surface_get_device_offset, function in cairo_surface_t +cairo_surface_get_device_scale, function in cairo_surface_t cairo_surface_get_fallback_resolution, function in cairo_surface_t cairo_surface_get_font_options, function in cairo_surface_t cairo_surface_get_mime_data, function in cairo_surface_t @@ -419,8 +435,20 @@ cairo_surface_map_to_image, function in cairo_surface_t cairo_surface_mark_dirty, function in cairo_surface_t cairo_surface_mark_dirty_rectangle, function in cairo_surface_t +cairo_surface_observer_add_fill_callback, function in cairo-surface-observer +cairo_surface_observer_add_finish_callback, function in cairo-surface-observer +cairo_surface_observer_add_flush_callback, function in cairo-surface-observer +cairo_surface_observer_add_glyphs_callback, function in cairo-surface-observer +cairo_surface_observer_add_mask_callback, function in cairo-surface-observer +cairo_surface_observer_add_paint_callback, function in cairo-surface-observer +cairo_surface_observer_add_stroke_callback, function in cairo-surface-observer +cairo_surface_observer_callback_t, user_function in cairo-surface-observer +cairo_surface_observer_elapsed, function in cairo-surface-observer +cairo_surface_observer_mode_t, enum in cairo-surface-observer +cairo_surface_observer_print, function in cairo-surface-observer cairo_surface_reference, function in cairo_surface_t cairo_surface_set_device_offset, function in cairo_surface_t +cairo_surface_set_device_scale, function in cairo_surface_t cairo_surface_set_fallback_resolution, function in cairo_surface_t cairo_surface_set_mime_data, function in cairo_surface_t cairo_surface_set_user_data, function in cairo_surface_t diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-device.xml cairo-1.14.2/doc/public/xml/cairo-device.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-device.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-device.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,57 +16,94 @@ interface to underlying rendering system - -Synopsis + +Functions + + + + + +cairo_device_t * +cairo_device_reference () +void +cairo_device_destroy () +cairo_status_t +cairo_device_status () +void +cairo_device_finish () +void +cairo_device_flush () +cairo_device_type_t +cairo_device_get_type () +unsigned int +cairo_device_get_reference_count () +cairo_status_t +cairo_device_set_user_data () +void * +cairo_device_get_user_data () +cairo_status_t +cairo_device_acquire () +void +cairo_device_release () +double +cairo_device_observer_elapsed () +double +cairo_device_observer_fill_elapsed () +double +cairo_device_observer_glyphs_elapsed () +double +cairo_device_observer_mask_elapsed () +double +cairo_device_observer_paint_elapsed () +cairo_status_t +cairo_device_observer_print () +double +cairo_device_observer_stroke_elapsed () + + + + + + +Types and Values + + + + + +typedefcairo_device_t +enumcairo_device_type_t + + + + + + +Object Hierarchy + + + -typedef cairo_device_t; -cairo_device_t * cairo_device_reference (cairo_device_t *device); -void cairo_device_destroy (cairo_device_t *device); -cairo_status_t cairo_device_status (cairo_device_t *device); -void cairo_device_finish (cairo_device_t *device); -void cairo_device_flush (cairo_device_t *device); -enum cairo_device_type_t; -cairo_device_type_t cairo_device_get_type (cairo_device_t *device); -unsigned int cairo_device_get_reference_count (cairo_device_t *device); -cairo_status_t cairo_device_set_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_device_get_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key); -cairo_status_t cairo_device_acquire (cairo_device_t *device); -void cairo_device_release (cairo_device_t *device); - - Description - -Devices are the abstraction Cairo employs for the rendering system +Devices are the abstraction Cairo employs for the rendering system used by a cairo_surface_t. You can get the device of a surface using -cairo_surface_get_device(). - - -Devices are created using custom functions specific to the rendering +cairo_surface_get_device(). +Devices are created using custom functions specific to the rendering system you want to use. See the documentation for the surface types -for those functions. - - -An important function that devices fulfill is sharing access to the +for those functions. +An important function that devices fulfill is sharing access to the rendering system between Cairo and your application. If you want to access a device directly that you used to draw to with Cairo, you must first call cairo_device_flush() to ensure that Cairo finishes all -operations on the device and resets it to a clean state. - - -Cairo also provides the functions cairo_device_acquire() and +operations on the device and resets it to a clean state. +Cairo also provides the functions cairo_device_acquire() and cairo_device_release() to synchronize access to the rendering system in a multithreaded environment. This is done internally, but can also -be used by applications. - - -Putting this all together, a function that works with devices should -look something like this: +be used by applications. +Putting this all together, a function that works with devices should +look something like this: void my_device_modifying_function (cairo_device_t *device) @@ -89,322 +126,516 @@ cairo_device_release (device); } - - Please refer to the documentation of each backend for additional usage requirements, guarantees provided, and interactions with existing surface API of the device functions for surfaces of that type. - + - -Details - -cairo_device_t -cairo_device_t -typedef struct _cairo_device cairo_device_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_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(). - - -Memory management of cairo_device_t is done with -cairo_device_reference() and cairo_device_destroy(). -Since 1.10 + +Functions -cairo_device_reference () +cairo_device_reference () cairo_device_reference -cairo_device_t * cairo_device_reference (cairo_device_t *device); - -Increases the reference count on device by one. This prevents -device from being destroyed until a matching call to -cairo_device_destroy() is made. - - -The number of references to a cairo_device_t can be get using -cairo_device_get_reference_count(). - -device : -a cairo_device_t -Returns :the referenced cairo_device_t. -Since 1.10 +cairo_device_t * +cairo_device_reference (cairo_device_t *device); +Increases the reference count on device + by one. This prevents +device + from being destroyed until a matching call to +cairo_device_destroy() is made. +The number of references to a cairo_device_t can be get using +cairo_device_get_reference_count(). + +Parameters + + + + + + +device +a cairo_device_t + + + +Returns + the referenced cairo_device_t. + +Since 1.10 -cairo_device_destroy () +cairo_device_destroy () cairo_device_destroy -void cairo_device_destroy (cairo_device_t *device); - -Decreases the reference count on device by one. If the result is -zero, then device and all associated resources are freed. See -cairo_device_reference(). - - -This function may acquire devices if the last reference was dropped. - -device : -a cairo_device_t -Since 1.10 +void +cairo_device_destroy (cairo_device_t *device); +Decreases the reference count on device + by one. If the result is +zero, then device + and all associated resources are freed. See +cairo_device_reference(). +This function may acquire devices if the last reference was dropped. + +Parameters + + + + + + +device +a cairo_device_t + + +Since 1.10 -cairo_device_status () +cairo_device_status () cairo_device_status -cairo_status_t cairo_device_status (cairo_device_t *device); - -Checks whether an error has previously occurred for this -device. - -device : -a cairo_device_t -Returns :CAIRO_STATUS_SUCCESS on success or an error code if -the device is in an error state. -Since 1.10 +cairo_status_t +cairo_device_status (cairo_device_t *device); +Checks whether an error has previously occurred for this +device. + +Parameters + + + + + + +device +a cairo_device_t + + + +Returns + CAIRO_STATUS_SUCCESS on success or an error code if +the device is in an error state. + +Since 1.10 -cairo_device_finish () +cairo_device_finish () cairo_device_finish -void cairo_device_finish (cairo_device_t *device); - -This function finishes the device and drops all references to +void +cairo_device_finish (cairo_device_t *device); +This function finishes the device and drops all references to external resources. All surfaces, fonts and other objects created -for this device will be finished, too. -Further operations on the device will not affect the device but -will instead trigger a CAIRO_STATUS_DEVICE_FINISHED error. - - -When the last call to cairo_device_destroy() decreases the +for this device + will be finished, too. +Further operations on the device + will not affect the device + but +will instead trigger a CAIRO_STATUS_DEVICE_FINISHED error. +When the last call to cairo_device_destroy() decreases the reference count to zero, cairo will call cairo_device_finish() if it hasn't been called already, before freeing the resources -associated with the device. - - -This function may acquire devices. - -device : -the cairo_device_t to finish -Since 1.10 +associated with the device. +This function may acquire devices. + +Parameters + + + + + + +device +the cairo_device_t to finish + + +Since 1.10 -cairo_device_flush () +cairo_device_flush () cairo_device_flush -void cairo_device_flush (cairo_device_t *device); - -Finish any pending operations for the device and also restore any +void +cairo_device_flush (cairo_device_t *device); +Finish any pending operations for the device and also restore any temporary modifications cairo has made to the device's state. This function must be called before switching from using the device with Cairo to operating on it directly with native APIs. If the device doesn't support direct access, then this function -does nothing. - - -This function may acquire devices. - -device : -a cairo_device_t -Since 1.10 - -enum cairo_device_type_t -cairo_device_type_t -typedef enum { - CAIRO_DEVICE_TYPE_DRM, - CAIRO_DEVICE_TYPE_GL, - CAIRO_DEVICE_TYPE_SCRIPT, - CAIRO_DEVICE_TYPE_XCB, - CAIRO_DEVICE_TYPE_XLIB, - CAIRO_DEVICE_TYPE_XML, - CAIRO_DEVICE_TYPE_COGL, - CAIRO_DEVICE_TYPE_WIN32, - - CAIRO_DEVICE_TYPE_INVALID = -1 -} cairo_device_type_t; - - -cairo_device_type_t is used to describe the type of a given -device. The devices types are also known as "backends" within cairo. - - -The device type can be queried with cairo_device_get_type() - - -The various cairo_device_t functions can be used with devices of -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_cap_xrender_version(). - - -The behavior of calling a type-specific function with a device of -the wrong type is undefined. - - -New entries may be added in future versions. - - -CAIRO_DEVICE_TYPE_DRM -The device is of type Direct Render Manager, since 1.10 - - - -CAIRO_DEVICE_TYPE_GL -The device is of type OpenGL, since 1.10 - - - -CAIRO_DEVICE_TYPE_SCRIPT -The device is of type script, since 1.10 - - - -CAIRO_DEVICE_TYPE_XCB -The device is of type xcb, since 1.10 - - - -CAIRO_DEVICE_TYPE_XLIB -The device is of type xlib, since 1.10 - - - -CAIRO_DEVICE_TYPE_XML -The device is of type XML, since 1.10 - - - -CAIRO_DEVICE_TYPE_COGL -The device is of type cogl, since 1.12 - - - -CAIRO_DEVICE_TYPE_WIN32 -The device is of type win32, since 1.12 - - - -CAIRO_DEVICE_TYPE_INVALID -The device is invalid, since 1.10 - - -Since 1.10 +does nothing. +This function may acquire devices. + +Parameters + + + + + + +device +a cairo_device_t + + +Since 1.10 -cairo_device_get_type () +cairo_device_get_type () cairo_device_get_type -cairo_device_type_t cairo_device_get_type (cairo_device_t *device); - -This function returns the type of the device. See cairo_device_type_t -for available types. - -device : -a cairo_device_t -Returns :The type of device. -Since 1.10 +cairo_device_type_t +cairo_device_get_type (cairo_device_t *device); +This function returns the type of the device. See cairo_device_type_t +for available types. + +Parameters + + + + + + +device +a cairo_device_t + + + +Returns + The type of device +. + +Since 1.10 -cairo_device_get_reference_count () +cairo_device_get_reference_count () cairo_device_get_reference_count -unsigned int cairo_device_get_reference_count (cairo_device_t *device); - -Returns the current reference count of device. - -device : -a cairo_device_t -Returns :the current reference count of device. If the -object is a nil object, 0 will be returned. -Since 1.10 +unsigned int +cairo_device_get_reference_count (cairo_device_t *device); +Returns the current reference count of device +. + +Parameters + + + + + + +device +a cairo_device_t + + + +Returns + the current reference count of device +. If the +object is a nil object, 0 will be returned. + +Since 1.10 -cairo_device_set_user_data () +cairo_device_set_user_data () cairo_device_set_user_data -cairo_status_t cairo_device_set_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to device. To remove user data from a surface, +cairo_status_t +cairo_device_set_user_data (cairo_device_t *device, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to device +. To remove user data from a surface, call this function with the key that was used to set it and NULL -for data. - -device : -a cairo_device_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the cairo_device_t -destroy : -a cairo_destroy_func_t which will be called when the +for data +. + +Parameters + + + + + + +device +a cairo_device_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the cairo_device_t + +destroy +a cairo_destroy_func_t which will be called when the cairo_t is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.10 +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.10 -cairo_device_get_user_data () +cairo_device_get_user_data () cairo_device_get_user_data -void * cairo_device_get_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key); - -Return user data previously attached to device using the +void * +cairo_device_get_user_data (cairo_device_t *device, + const cairo_user_data_key_t *key); +Return user data previously attached to device + using the specified key. If no user data has been attached with the given -key this function returns NULL. - -device : -a cairo_device_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.10 +key this function returns NULL. + +Parameters + + + + + + +device +a cairo_device_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.10 -cairo_device_acquire () +cairo_device_acquire () cairo_device_acquire -cairo_status_t cairo_device_acquire (cairo_device_t *device); - -Acquires the device for the current thread. This function will block -until no other thread has acquired the device. - - -If the return value is CAIRO_STATUS_SUCCESS, you successfully acquired the +cairo_status_t +cairo_device_acquire (cairo_device_t *device); +Acquires the device + for the current thread. This function will block +until no other thread has acquired the device. +If the return value is CAIRO_STATUS_SUCCESS, you successfully acquired the device. From now on your thread owns the device and no other thread will be able to acquire it until a matching call to cairo_device_release(). It is allowed to recursively acquire the device multiple times from the same -thread. - - +thread. You must never acquire two different devices at the same time unless this is explicitly allowed. Otherwise the possibility of deadlocks exist. - - + As various Cairo functions can acquire devices when called, these functions may also cause deadlocks when you call them with an acquired device. So you must not have a device acquired when calling them. These functions are marked in the documentation. - -device : -a cairo_device_t -Returns :CAIRO_STATUS_SUCCESS on success or an error code if + +Parameters + + + + + + +device +a cairo_device_t + + + +Returns + CAIRO_STATUS_SUCCESS on success or an error code if the device is in an error state and could not be acquired. After a successful call to cairo_device_acquire(), -a matching call to cairo_device_release() is required. -Since 1.10 +a matching call to cairo_device_release() is required. + +Since 1.10 -cairo_device_release () +cairo_device_release () cairo_device_release -void cairo_device_release (cairo_device_t *device); +void +cairo_device_release (cairo_device_t *device); +Releases a device + previously acquired using cairo_device_acquire(). See +that function for details. + +Parameters + + + + + + +device +a cairo_device_t + + +Since 1.10 + +cairo_device_observer_elapsed () +cairo_device_observer_elapsed +double +cairo_device_observer_elapsed (cairo_device_t *device); + + + +Returns + + + + +cairo_device_observer_fill_elapsed () +cairo_device_observer_fill_elapsed +double +cairo_device_observer_fill_elapsed (cairo_device_t *device); + + + +Returns + + + + +cairo_device_observer_glyphs_elapsed () +cairo_device_observer_glyphs_elapsed +double +cairo_device_observer_glyphs_elapsed (cairo_device_t *device); + + + +Returns + + + + +cairo_device_observer_mask_elapsed () +cairo_device_observer_mask_elapsed +double +cairo_device_observer_mask_elapsed (cairo_device_t *device); -Releases a device previously acquired using cairo_device_acquire(). See -that function for details. - -device : -a cairo_device_t -Since 1.10 + + +Returns + + + + +cairo_device_observer_paint_elapsed () +cairo_device_observer_paint_elapsed +double +cairo_device_observer_paint_elapsed (cairo_device_t *device); + + + +Returns + + + + +cairo_device_observer_print () +cairo_device_observer_print +cairo_status_t +cairo_device_observer_print (cairo_device_t *device, + cairo_write_func_t write_func, + void *closure); + + + +Returns + + + + +cairo_device_observer_stroke_elapsed () +cairo_device_observer_stroke_elapsed +double +cairo_device_observer_stroke_elapsed (cairo_device_t *device); + + + +Returns + + + + + + +Types and Values + +cairo_device_t +cairo_device_t +typedef struct _cairo_device cairo_device_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_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(). +Memory management of cairo_device_t is done with +cairo_device_reference() and cairo_device_destroy(). +Since 1.10 + +enum cairo_device_type_t +cairo_device_type_t +cairo_device_type_t is used to describe the type of a given +device. The devices types are also known as "backends" within cairo. +The device type can be queried with cairo_device_get_type() +The various cairo_device_t functions can be used with devices of +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_cap_xrender_version(). +The behavior of calling a type-specific function with a device of +the wrong type is undefined. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_DEVICE_TYPE_DRM +The device is of type Direct Render Manager, since 1.10 + + + +CAIRO_DEVICE_TYPE_GL +The device is of type OpenGL, since 1.10 + + + +CAIRO_DEVICE_TYPE_SCRIPT +The device is of type script, since 1.10 + + + +CAIRO_DEVICE_TYPE_XCB +The device is of type xcb, since 1.10 + + + +CAIRO_DEVICE_TYPE_XLIB +The device is of type xlib, since 1.10 + + + +CAIRO_DEVICE_TYPE_XML +The device is of type XML, since 1.10 + + + +CAIRO_DEVICE_TYPE_COGL +The device is of type cogl, since 1.12 + + + +CAIRO_DEVICE_TYPE_WIN32 +The device is of type win32, since 1.12 + + + +CAIRO_DEVICE_TYPE_INVALID +The device is invalid, since 1.10 + + + + +Since 1.10 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-font-face.xml cairo-1.14.2/doc/public/xml/cairo-font-face.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-font-face.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-font-face.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,251 +16,356 @@ Base class for font faces - -Synopsis + +Functions + + + + + +cairo_font_face_t * +cairo_font_face_reference () +void +cairo_font_face_destroy () +cairo_status_t +cairo_font_face_status () +cairo_font_type_t +cairo_font_face_get_type () +unsigned int +cairo_font_face_get_reference_count () +cairo_status_t +cairo_font_face_set_user_data () +void * +cairo_font_face_get_user_data () + + + + + + +Types and Values + + + + + +typedefcairo_font_face_t +enumcairo_font_type_t + + + + + + +Object Hierarchy + + + -typedef cairo_font_face_t; -cairo_font_face_t * cairo_font_face_reference (cairo_font_face_t *font_face); -void cairo_font_face_destroy (cairo_font_face_t *font_face); -cairo_status_t cairo_font_face_status (cairo_font_face_t *font_face); -enum cairo_font_type_t; -cairo_font_type_t cairo_font_face_get_type (cairo_font_face_t *font_face); -unsigned int cairo_font_face_get_reference_count (cairo_font_face_t *font_face); -cairo_status_t cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key); - - Description - -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 +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_select_font_face(). The resulting face can be accessed using -cairo_get_font_face(). - +cairo_get_font_face(). + + + +Functions + +cairo_font_face_reference () +cairo_font_face_reference +cairo_font_face_t * +cairo_font_face_reference (cairo_font_face_t *font_face); +Increases the reference count on font_face + by one. This prevents +font_face + from being destroyed until a matching call to +cairo_font_face_destroy() is made. +The number of references to a cairo_font_face_t can be get using +cairo_font_face_get_reference_count(). + +Parameters + + + + + + +font_face +a cairo_font_face_t, (may be NULL in which case this +function does nothing). + + + +Returns + the referenced cairo_font_face_t. + +Since 1.0 + +cairo_font_face_destroy () +cairo_font_face_destroy +void +cairo_font_face_destroy (cairo_font_face_t *font_face); +Decreases the reference count on font_face + by one. If the result +is zero, then font_face + and all associated resources are freed. +See cairo_font_face_reference(). + +Parameters + + + + + + +font_face +a cairo_font_face_t + + +Since 1.0 + +cairo_font_face_status () +cairo_font_face_status +cairo_status_t +cairo_font_face_status (cairo_font_face_t *font_face); +Checks whether an error has previously occurred for this +font face + +Parameters + + + + + + +font_face +a cairo_font_face_t + + + +Returns + CAIRO_STATUS_SUCCESS or another error such as +CAIRO_STATUS_NO_MEMORY. + +Since 1.0 + +cairo_font_face_get_type () +cairo_font_face_get_type +cairo_font_type_t +cairo_font_face_get_type (cairo_font_face_t *font_face); +This function returns the type of the backend used to create +a font face. See cairo_font_type_t for available types. + +Parameters + + + + + + +font_face +a font face + + + +Returns + The type of font_face +. + +Since 1.2 + +cairo_font_face_get_reference_count () +cairo_font_face_get_reference_count +unsigned int +cairo_font_face_get_reference_count (cairo_font_face_t *font_face); +Returns the current reference count of font_face +. + +Parameters + + + + + + +font_face +a cairo_font_face_t + + + +Returns + the current reference count of font_face +. If the +object is a nil object, 0 will be returned. + +Since 1.4 + +cairo_font_face_set_user_data () +cairo_font_face_set_user_data +cairo_status_t +cairo_font_face_set_user_data (cairo_font_face_t *font_face, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to font_face +. To remove user data from a font face, +call this function with the key that was used to set it and NULL +for data +. + +Parameters + + + + + + +font_face +a cairo_font_face_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the font face + +destroy +a cairo_destroy_func_t which will be called when the +font face is destroyed or when new user data is attached using the +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.0 + +cairo_font_face_get_user_data () +cairo_font_face_get_user_data +void * +cairo_font_face_get_user_data (cairo_font_face_t *font_face, + const cairo_user_data_key_t *key); +Return user data previously attached to font_face + using the specified +key. If no user data has been attached with the given key this +function returns NULL. + +Parameters + + + + + + +font_face +a cairo_font_face_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.0 + - -Details + +Types and Values cairo_font_face_t cairo_font_face_t -typedef struct _cairo_font_face cairo_font_face_t; +typedef struct _cairo_font_face cairo_font_face_t; - -A cairo_font_face_t specifies all aspects of a font other +A cairo_font_face_t specifies all aspects of a font other than the size or font matrix (a font matrix is used to distort a font by sheering it or scaling it unequally in the two directions) . A font face can be set on a cairo_t by using cairo_set_font_face(); the size and font matrix are set with -cairo_set_font_size() and cairo_set_font_matrix(). - - -There are various types of font faces, depending on the +cairo_set_font_size() and cairo_set_font_matrix(). +There are various types of font faces, depending on the font backend they use. The type of a -font face can be queried using cairo_font_face_get_type(). - - -Memory management of cairo_font_face_t is done with -cairo_font_face_reference() and cairo_font_face_destroy(). -Since 1.0 - -cairo_font_face_reference () -cairo_font_face_reference -cairo_font_face_t * cairo_font_face_reference (cairo_font_face_t *font_face); - -Increases the reference count on font_face by one. This prevents -font_face from being destroyed until a matching call to -cairo_font_face_destroy() is made. - - -The number of references to a cairo_font_face_t can be get using -cairo_font_face_get_reference_count(). - -font_face : -a cairo_font_face_t, (may be NULL in which case this -function does nothing). -Returns :the referenced cairo_font_face_t. -Since 1.0 - -cairo_font_face_destroy () -cairo_font_face_destroy -void cairo_font_face_destroy (cairo_font_face_t *font_face); - -Decreases the reference count on font_face by one. If the result -is zero, then font_face and all associated resources are freed. -See cairo_font_face_reference(). - -font_face : -a cairo_font_face_t -Since 1.0 - -cairo_font_face_status () -cairo_font_face_status -cairo_status_t cairo_font_face_status (cairo_font_face_t *font_face); - -Checks whether an error has previously occurred for this -font face - -font_face : -a cairo_font_face_t -Returns :CAIRO_STATUS_SUCCESS or another error such as -CAIRO_STATUS_NO_MEMORY. -Since 1.0 +font face can be queried using cairo_font_face_get_type(). +Memory management of cairo_font_face_t is done with +cairo_font_face_reference() and cairo_font_face_destroy(). +Since 1.0 enum cairo_font_type_t cairo_font_type_t -typedef enum { - CAIRO_FONT_TYPE_TOY, - CAIRO_FONT_TYPE_FT, - CAIRO_FONT_TYPE_WIN32, - CAIRO_FONT_TYPE_QUARTZ, - CAIRO_FONT_TYPE_USER -} cairo_font_type_t; - - -cairo_font_type_t is used to describe the type of a given font +cairo_font_type_t is used to describe the type of a given font face or scaled font. The font types are also known as "font -backends" within cairo. - - -The type of a font face is determined by the function used to +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() - - -The various cairo_font_face_t functions can be used with a font face -of any type. - - -The type of a scaled font is determined by the type of the font +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. +The type of a scaled font is determined by the type of the font face passed to cairo_scaled_font_create(). The scaled font type can -be queried with cairo_scaled_font_get_type() - - -The various cairo_scaled_font_t functions can be used with scaled +be queried with cairo_scaled_font_get_type() +The various cairo_scaled_font_t functions can be used with scaled 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(). - - -The behavior of calling a type-specific function with a scaled font -of the wrong type is undefined. - - -New entries may be added in future versions. - - -CAIRO_FONT_TYPE_TOY -The font was created using cairo's toy font api (Since: 1.2) - - - -CAIRO_FONT_TYPE_FT -The font is of type FreeType (Since: 1.2) - - - -CAIRO_FONT_TYPE_WIN32 -The font is of type Win32 (Since: 1.2) - - - -CAIRO_FONT_TYPE_QUARTZ -The font is of type Quartz (Since: 1.6, in 1.2 and -1.4 it was named CAIRO_FONT_TYPE_ATSUI) - - - -CAIRO_FONT_TYPE_USER -The font was create using cairo's user font api (Since: 1.8) - - -Since 1.2 - -cairo_font_face_get_type () -cairo_font_face_get_type -cairo_font_type_t cairo_font_face_get_type (cairo_font_face_t *font_face); - -This function returns the type of the backend used to create -a font face. See cairo_font_type_t for available types. - -font_face : -a font face -Returns :The type of font_face. -Since 1.2 - -cairo_font_face_get_reference_count () -cairo_font_face_get_reference_count -unsigned int cairo_font_face_get_reference_count (cairo_font_face_t *font_face); - -Returns the current reference count of font_face. - -font_face : -a cairo_font_face_t -Returns :the current reference count of font_face. If the -object is a nil object, 0 will be returned. -Since 1.4 - -cairo_font_face_set_user_data () -cairo_font_face_set_user_data -cairo_status_t cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to font_face. To remove user data from a font face, -call this function with the key that was used to set it and NULL -for data. - -font_face : -a cairo_font_face_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the font face -destroy : -a cairo_destroy_func_t which will be called when the -font face is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.0 - -cairo_font_face_get_user_data () -cairo_font_face_get_user_data -void * cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key); - -Return user data previously attached to font_face using the specified -key. If no user data has been attached with the given key this -function returns NULL. - -font_face : -a cairo_font_face_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.0 +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. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_FONT_TYPE_TOY +The font was created using cairo's toy font api (Since: 1.2) + + + +CAIRO_FONT_TYPE_FT +The font is of type FreeType (Since: 1.2) + + + +CAIRO_FONT_TYPE_WIN32 +The font is of type Win32 (Since: 1.2) + + + +CAIRO_FONT_TYPE_QUARTZ +The font is of type Quartz (Since: 1.6, in 1.2 and +1.4 it was named CAIRO_FONT_TYPE_ATSUI) + + + +CAIRO_FONT_TYPE_USER +The font was create using cairo's user font api (Since: 1.8) + + + + +Since 1.2 See Also -cairo_scaled_font_t +cairo_scaled_font_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-font-options.xml cairo-1.14.2/doc/public/xml/cairo-font-options.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-font-options.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-font-options.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,427 +16,614 @@ How a font should be rendered - -Synopsis + +Functions + + + + + +cairo_font_options_t * +cairo_font_options_create () +cairo_font_options_t * +cairo_font_options_copy () +void +cairo_font_options_destroy () +cairo_status_t +cairo_font_options_status () +void +cairo_font_options_merge () +unsigned long +cairo_font_options_hash () +cairo_bool_t +cairo_font_options_equal () +void +cairo_font_options_set_antialias () +cairo_antialias_t +cairo_font_options_get_antialias () +void +cairo_font_options_set_subpixel_order () +cairo_subpixel_order_t +cairo_font_options_get_subpixel_order () +void +cairo_font_options_set_hint_style () +cairo_hint_style_t +cairo_font_options_get_hint_style () +void +cairo_font_options_set_hint_metrics () +cairo_hint_metrics_t +cairo_font_options_get_hint_metrics () + + + + + + +Types and Values + + + + + +typedefcairo_font_options_t +enumcairo_subpixel_order_t +enumcairo_hint_style_t +enumcairo_hint_metrics_t + + + + + + +Object Hierarchy + + + -typedef cairo_font_options_t; -cairo_font_options_t * cairo_font_options_create (void); -cairo_font_options_t * cairo_font_options_copy (const cairo_font_options_t *original); -void cairo_font_options_destroy (cairo_font_options_t *options); -cairo_status_t cairo_font_options_status (cairo_font_options_t *options); -void cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other); -unsigned long cairo_font_options_hash (const cairo_font_options_t *options); -cairo_bool_t cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other); -void cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias); -cairo_antialias_t cairo_font_options_get_antialias (const cairo_font_options_t *options); -enum cairo_subpixel_order_t; -void cairo_font_options_set_subpixel_order - (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order); -cairo_subpixel_order_t cairo_font_options_get_subpixel_order - (const cairo_font_options_t *options); -enum cairo_hint_style_t; -void cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style); -cairo_hint_style_t cairo_font_options_get_hint_style (const cairo_font_options_t *options); -enum cairo_hint_metrics_t; -void cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics); -cairo_hint_metrics_t cairo_font_options_get_hint_metrics - (const cairo_font_options_t *options); - - Description - -The font options specify how fonts should be rendered. Most of the +The font options specify how fonts should be rendered. Most of the time the font options implied by a surface are just right and do not need any changes, but for pixel-based targets tweaking font options -may result in superior output on a particular display. - +may result in superior output on a particular display. + - -Details - -cairo_font_options_t -cairo_font_options_t -typedef struct _cairo_font_options cairo_font_options_t; - - -An opaque structure holding all options that are used when -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_antialias() and -cairo_font_options_get_antialias(). - - -New features may be added to a cairo_font_options_t in the -future. For this reason, cairo_font_options_copy(), -cairo_font_options_equal(), cairo_font_options_merge(), and -cairo_font_options_hash() should be used to copy, check -for equality, merge, or compute a hash value of -cairo_font_options_t objects. -Since 1.0 + +Functions -cairo_font_options_create () +cairo_font_options_create () cairo_font_options_create -cairo_font_options_t * cairo_font_options_create (void); - -Allocates a new font options object with all options initialized - to default values. - -Returns :a newly allocated cairo_font_options_t. Free with +cairo_font_options_t * +cairo_font_options_create (void); +Allocates a new font options object with all options initialized + to default values. + +Returns + a newly allocated cairo_font_options_t. Free with cairo_font_options_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_font_options_status(). -Since 1.0 +You can check for this with cairo_font_options_status(). + +Since 1.0 -cairo_font_options_copy () +cairo_font_options_copy () cairo_font_options_copy -cairo_font_options_t * cairo_font_options_copy (const cairo_font_options_t *original); - -Allocates a new font options object copying the option values from - original. - -original : -a cairo_font_options_t -Returns :a newly allocated cairo_font_options_t. Free with +cairo_font_options_t * +cairo_font_options_copy (const cairo_font_options_t *original); +Allocates a new font options object copying the option values from + original +. + +Parameters + + + + + + +original +a cairo_font_options_t + + + +Returns + a newly allocated cairo_font_options_t. Free with cairo_font_options_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_font_options_status(). -Since 1.0 +You can check for this with cairo_font_options_status(). + +Since 1.0 -cairo_font_options_destroy () +cairo_font_options_destroy () cairo_font_options_destroy -void cairo_font_options_destroy (cairo_font_options_t *options); - -Destroys a cairo_font_options_t object created with -cairo_font_options_create() or cairo_font_options_copy(). - -options : -a cairo_font_options_t -Since 1.0 +void +cairo_font_options_destroy (cairo_font_options_t *options); +Destroys a cairo_font_options_t object created with +cairo_font_options_create() or cairo_font_options_copy(). + +Parameters + + + + + + +options +a cairo_font_options_t + + +Since 1.0 -cairo_font_options_status () +cairo_font_options_status () cairo_font_options_status -cairo_status_t cairo_font_options_status (cairo_font_options_t *options); - -Checks whether an error has previously occurred for this -font options object - -options : -a cairo_font_options_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.0 +cairo_status_t +cairo_font_options_status (cairo_font_options_t *options); +Checks whether an error has previously occurred for this +font options object + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.0 -cairo_font_options_merge () +cairo_font_options_merge () cairo_font_options_merge -void cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other); - -Merges non-default options from other into options, replacing +void +cairo_font_options_merge (cairo_font_options_t *options, + const cairo_font_options_t *other); +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_OPERATOR_OVER. - -options : -a cairo_font_options_t -other : -another cairo_font_options_t -Since 1.0 +similar to compositing other + onto options + with the operation +of CAIRO_OPERATOR_OVER. + +Parameters + + + + + + +options +a cairo_font_options_t + +other +another cairo_font_options_t + + +Since 1.0 -cairo_font_options_hash () +cairo_font_options_hash () cairo_font_options_hash -unsigned long cairo_font_options_hash (const cairo_font_options_t *options); - -Compute a hash for the font options object; this value will +unsigned long +cairo_font_options_hash (const cairo_font_options_t *options); +Compute a hash for the font options object; this value will be useful when storing an object containing a cairo_font_options_t -in a hash table. - -options : -a cairo_font_options_t -Returns :the hash value for the font options object. +in a hash table. + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + the hash value for the font options object. The return value can be cast to a 32-bit type if a -32-bit hash value is needed. -Since 1.0 +32-bit hash value is needed. + +Since 1.0 -cairo_font_options_equal () +cairo_font_options_equal () cairo_font_options_equal -cairo_bool_t cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other); - -Compares two font options objects for equality. - -options : -a cairo_font_options_t -other : -another cairo_font_options_t -Returns :TRUE if all fields of the two font options objects match. +cairo_bool_t +cairo_font_options_equal (const cairo_font_options_t *options, + const cairo_font_options_t *other); +Compares two font options objects for equality. + +Parameters + + + + + + +options +a cairo_font_options_t + +other +another cairo_font_options_t + + + +Returns + TRUE if all fields of the two font options objects match. Note that this function will return FALSE if either object is in -error. -Since 1.0 +error. + +Since 1.0 -cairo_font_options_set_antialias () +cairo_font_options_set_antialias () cairo_font_options_set_antialias -void cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias); - -Sets the antialiasing mode for the font options object. This -specifies the type of antialiasing to do when rendering text. - -options : -a cairo_font_options_t -antialias : -the new antialiasing mode -Since 1.0 +void +cairo_font_options_set_antialias (cairo_font_options_t *options, + cairo_antialias_t antialias); +Sets the antialiasing mode for the font options object. This +specifies the type of antialiasing to do when rendering text. + +Parameters + + + + + + +options +a cairo_font_options_t + +antialias +the new antialiasing mode + + +Since 1.0 -cairo_font_options_get_antialias () +cairo_font_options_get_antialias () cairo_font_options_get_antialias -cairo_antialias_t cairo_font_options_get_antialias (const cairo_font_options_t *options); - -Gets the antialiasing mode for the font options object. - -options : -a cairo_font_options_t -Returns :the antialiasing mode -Since 1.0 - -enum cairo_subpixel_order_t -cairo_subpixel_order_t -typedef enum { - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_SUBPIXEL_ORDER_RGB, - CAIRO_SUBPIXEL_ORDER_BGR, - CAIRO_SUBPIXEL_ORDER_VRGB, - CAIRO_SUBPIXEL_ORDER_VBGR -} cairo_subpixel_order_t; - - -The subpixel order specifies the order of color elements within -each pixel on the display device when rendering with an -antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL. - - -CAIRO_SUBPIXEL_ORDER_DEFAULT -Use the default subpixel order for - for the target device, since 1.0 - - - -CAIRO_SUBPIXEL_ORDER_RGB -Subpixel elements are arranged horizontally - with red at the left, since 1.0 - - - -CAIRO_SUBPIXEL_ORDER_BGR -Subpixel elements are arranged horizontally - with blue at the left, since 1.0 - - - -CAIRO_SUBPIXEL_ORDER_VRGB -Subpixel elements are arranged vertically - with red at the top, since 1.0 - - - -CAIRO_SUBPIXEL_ORDER_VBGR -Subpixel elements are arranged vertically - with blue at the top, since 1.0 - - -Since 1.0 +cairo_antialias_t +cairo_font_options_get_antialias (const cairo_font_options_t *options); +Gets the antialiasing mode for the font options object. + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + the antialiasing mode + +Since 1.0 -cairo_font_options_set_subpixel_order () +cairo_font_options_set_subpixel_order () cairo_font_options_set_subpixel_order -void cairo_font_options_set_subpixel_order - (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order); - -Sets the subpixel order for the font options object. The subpixel +void +cairo_font_options_set_subpixel_order (cairo_font_options_t *options, + cairo_subpixel_order_t subpixel_order); +Sets the subpixel order for the font options object. The subpixel order specifies the order of color elements within each pixel on the display device when rendering with an antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for -cairo_subpixel_order_t for full details. - -options : -a cairo_font_options_t -subpixel_order : -the new subpixel order -Since 1.0 +cairo_subpixel_order_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + +subpixel_order +the new subpixel order + + +Since 1.0 -cairo_font_options_get_subpixel_order () +cairo_font_options_get_subpixel_order () cairo_font_options_get_subpixel_order -cairo_subpixel_order_t cairo_font_options_get_subpixel_order - (const cairo_font_options_t *options); - -Gets the subpixel order for the font options object. -See the documentation for cairo_subpixel_order_t for full details. - -options : -a cairo_font_options_t -Returns :the subpixel order for the font options object -Since 1.0 +cairo_subpixel_order_t +cairo_font_options_get_subpixel_order (const cairo_font_options_t *options); +Gets the subpixel order for the font options object. +See the documentation for cairo_subpixel_order_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + the subpixel order for the font options object + +Since 1.0 + +cairo_font_options_set_hint_style () +cairo_font_options_set_hint_style +void +cairo_font_options_set_hint_style (cairo_font_options_t *options, + cairo_hint_style_t hint_style); +Sets the hint style for font outlines for the font options object. +This controls whether to fit font outlines to the pixel grid, +and if so, whether to optimize for fidelity or contrast. +See the documentation for cairo_hint_style_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + +hint_style +the new hint style + + +Since 1.0 + +cairo_font_options_get_hint_style () +cairo_font_options_get_hint_style +cairo_hint_style_t +cairo_font_options_get_hint_style (const cairo_font_options_t *options); +Gets the hint style for font outlines for the font options object. +See the documentation for cairo_hint_style_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + the hint style for the font options object + +Since 1.0 + +cairo_font_options_set_hint_metrics () +cairo_font_options_set_hint_metrics +void +cairo_font_options_set_hint_metrics (cairo_font_options_t *options, + cairo_hint_metrics_t hint_metrics); +Sets the metrics hinting mode for the font options object. This +controls whether metrics are quantized to integer values in +device units. +See the documentation for cairo_hint_metrics_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + +hint_metrics +the new metrics hinting mode + + +Since 1.0 + +cairo_font_options_get_hint_metrics () +cairo_font_options_get_hint_metrics +cairo_hint_metrics_t +cairo_font_options_get_hint_metrics (const cairo_font_options_t *options); +Gets the metrics hinting mode for the font options object. +See the documentation for cairo_hint_metrics_t for full details. + +Parameters + + + + + + +options +a cairo_font_options_t + + + +Returns + the metrics hinting mode for the font options object + +Since 1.0 + + + +Types and Values + +cairo_font_options_t +cairo_font_options_t +typedef struct _cairo_font_options cairo_font_options_t; + +An opaque structure holding all options that are used when +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_antialias() and +cairo_font_options_get_antialias(). +New features may be added to a cairo_font_options_t in the +future. For this reason, cairo_font_options_copy(), +cairo_font_options_equal(), cairo_font_options_merge(), and +cairo_font_options_hash() should be used to copy, check +for equality, merge, or compute a hash value of +cairo_font_options_t objects. +Since 1.0 + +enum cairo_subpixel_order_t +cairo_subpixel_order_t +The subpixel order specifies the order of color elements within +each pixel on the display device when rendering with an +antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL. + +Members + + + + + + +CAIRO_SUBPIXEL_ORDER_DEFAULT +Use the default subpixel order for + for the target device, since 1.0 + + + +CAIRO_SUBPIXEL_ORDER_RGB +Subpixel elements are arranged horizontally + with red at the left, since 1.0 + + + +CAIRO_SUBPIXEL_ORDER_BGR +Subpixel elements are arranged horizontally + with blue at the left, since 1.0 + + + +CAIRO_SUBPIXEL_ORDER_VRGB +Subpixel elements are arranged vertically + with red at the top, since 1.0 + + + +CAIRO_SUBPIXEL_ORDER_VBGR +Subpixel elements are arranged vertically + with blue at the top, since 1.0 + + + + +Since 1.0 enum cairo_hint_style_t cairo_hint_style_t -typedef enum { - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_STYLE_NONE, - CAIRO_HINT_STYLE_SLIGHT, - CAIRO_HINT_STYLE_MEDIUM, - CAIRO_HINT_STYLE_FULL -} cairo_hint_style_t; - - -Specifies the type of hinting to do on font outlines. Hinting +Specifies the type of hinting to do on font outlines. Hinting is the process of fitting outlines to the pixel grid in order to improve the appearance of the result. Since hinting outlines involves distorting them, it also reduces the faithfulness to the original outline shapes. Not all of the outline hinting -styles are supported by all font backends. - - -New entries may be added in future versions. - - -CAIRO_HINT_STYLE_DEFAULT -Use the default hint style for - font backend and target device, since 1.0 - - - -CAIRO_HINT_STYLE_NONE -Do not hint outlines, since 1.0 - - - -CAIRO_HINT_STYLE_SLIGHT -Hint outlines slightly to improve +styles are supported by all font backends. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_HINT_STYLE_DEFAULT +Use the default hint style for + font backend and target device, since 1.0 + + + +CAIRO_HINT_STYLE_NONE +Do not hint outlines, since 1.0 + + + +CAIRO_HINT_STYLE_SLIGHT +Hint outlines slightly to improve contrast while retaining good fidelity to the original - shapes, since 1.0 - - - -CAIRO_HINT_STYLE_MEDIUM -Hint outlines with medium strength + shapes, since 1.0 + + + +CAIRO_HINT_STYLE_MEDIUM +Hint outlines with medium strength giving a compromise between fidelity to the original shapes - and contrast, since 1.0 - - - -CAIRO_HINT_STYLE_FULL -Hint outlines to maximize contrast, since 1.0 - - -Since 1.0 - -cairo_font_options_set_hint_style () -cairo_font_options_set_hint_style -void cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style); - -Sets the hint style for font outlines for the font options object. -This controls whether to fit font outlines to the pixel grid, -and if so, whether to optimize for fidelity or contrast. -See the documentation for cairo_hint_style_t for full details. - -options : -a cairo_font_options_t -hint_style : -the new hint style -Since 1.0 - -cairo_font_options_get_hint_style () -cairo_font_options_get_hint_style -cairo_hint_style_t cairo_font_options_get_hint_style (const cairo_font_options_t *options); - -Gets the hint style for font outlines for the font options object. -See the documentation for cairo_hint_style_t for full details. - -options : -a cairo_font_options_t -Returns :the hint style for the font options object -Since 1.0 + and contrast, since 1.0 + + + +CAIRO_HINT_STYLE_FULL +Hint outlines to maximize contrast, since 1.0 + + + + +Since 1.0 enum cairo_hint_metrics_t cairo_hint_metrics_t -typedef enum { - CAIRO_HINT_METRICS_DEFAULT, - CAIRO_HINT_METRICS_OFF, - CAIRO_HINT_METRICS_ON -} cairo_hint_metrics_t; - - -Specifies whether to hint font metrics; hinting font metrics +Specifies whether to hint font metrics; hinting font metrics means quantizing them so that they are integer values in device space. Doing this improves the consistency of letter and line spacing, however it also means that text -will be laid out differently at different zoom factors. - - -CAIRO_HINT_METRICS_DEFAULT -Hint metrics in the default - manner for the font backend and target device, since 1.0 - - - -CAIRO_HINT_METRICS_OFF -Do not hint font metrics, since 1.0 - - - -CAIRO_HINT_METRICS_ON -Hint font metrics, since 1.0 - - -Since 1.0 - -cairo_font_options_set_hint_metrics () -cairo_font_options_set_hint_metrics -void cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics); - -Sets the metrics hinting mode for the font options object. This -controls whether metrics are quantized to integer values in -device units. -See the documentation for cairo_hint_metrics_t for full details. - -options : -a cairo_font_options_t -hint_metrics : -the new metrics hinting mode -Since 1.0 - -cairo_font_options_get_hint_metrics () -cairo_font_options_get_hint_metrics -cairo_hint_metrics_t cairo_font_options_get_hint_metrics - (const cairo_font_options_t *options); - -Gets the metrics hinting mode for the font options object. -See the documentation for cairo_hint_metrics_t for full details. - -options : -a cairo_font_options_t -Returns :the metrics hinting mode for the font options object -Since 1.0 +will be laid out differently at different zoom factors. + +Members + + + + + + +CAIRO_HINT_METRICS_DEFAULT +Hint metrics in the default + manner for the font backend and target device, since 1.0 + + + +CAIRO_HINT_METRICS_OFF +Do not hint font metrics, since 1.0 + + + +CAIRO_HINT_METRICS_ON +Hint font metrics, since 1.0 + + + + +Since 1.0 See Also -cairo_scaled_font_t +cairo_scaled_font_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-ft.xml cairo-1.14.2/doc/public/xml/cairo-ft.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-ft.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-ft.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,65 +16,71 @@ Font support for FreeType - -Synopsis + +Functions + + + + + +cairo_font_face_t * +cairo_ft_font_face_create_for_ft_face () +cairo_font_face_t * +cairo_ft_font_face_create_for_pattern () +void +cairo_ft_font_options_substitute () +FT_Face +cairo_ft_scaled_font_lock_face () +void +cairo_ft_scaled_font_unlock_face () +unsigned int +cairo_ft_font_face_get_synthesize () +void +cairo_ft_font_face_set_synthesize () +void +cairo_ft_font_face_unset_synthesize () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_FT_FONT +#defineCAIRO_HAS_FC_FONT +enumcairo_ft_synthesize_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_FT_FONT -#define CAIRO_HAS_FC_FONT -cairo_font_face_t * cairo_ft_font_face_create_for_ft_face - (FT_Face face, - int load_flags); -cairo_font_face_t * cairo_ft_font_face_create_for_pattern - (FcPattern *pattern); -void cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern); -FT_Face cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *scaled_font); -void cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font); -enum cairo_ft_synthesize_t; -unsigned int cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face); -void cairo_ft_font_face_set_synthesize (cairo_font_face_t *font_face, - unsigned int synth_flags); -void cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face, - unsigned int synth_flags); - - Description - -The FreeType font backend is primarily used to render text on GNU/Linux -systems, but can be used on other platforms too. - +The FreeType font backend is primarily used to render text on GNU/Linux +systems, but can be used on other platforms too. + - -Details - -CAIRO_HAS_FT_FONT -CAIRO_HAS_FT_FONT -#define CAIRO_HAS_FT_FONT 1 - - -Defined if the FreeType font backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.0 - -CAIRO_HAS_FC_FONT -CAIRO_HAS_FC_FONT -#define CAIRO_HAS_FC_FONT 1 - - -Defined if the Fontconfig-specific functions of the FreeType font backend -are available. -This macro can be used to conditionally compile backend-specific code. -Since 1.10 + +Functions -cairo_ft_font_face_create_for_ft_face () +cairo_ft_font_face_create_for_ft_face () cairo_ft_font_face_create_for_ft_face -cairo_font_face_t * cairo_ft_font_face_create_for_ft_face - (FT_Face face, - int load_flags); - -Creates a new font face for the FreeType font backend from a +cairo_font_face_t * +cairo_ft_font_face_create_for_ft_face (FT_Face face, + int load_flags); +Creates a new font face for the FreeType font backend from a pre-opened FreeType face. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t returned from cairo_scaled_font_create() is @@ -83,13 +89,9 @@ to the FT_Face alive in a font-cache and the exact lifetime of the reference depends highly upon the exact usage pattern and is subject to external factors. You must not call FT_Done_Face() before the last reference to the -cairo_font_face_t has been dropped. - - -As an example, below is how one might correctly couple the lifetime of -the FreeType face object to the cairo_font_face_t. - - +cairo_font_face_t has been dropped. +As an example, below is how one might correctly couple the lifetime of +the FreeType face object to the cairo_font_face_t. static const cairo_user_data_key_t key; @@ -102,93 +104,123 @@ return ERROR; } - -face : -A FreeType face object, already opened. This must + +Parameters + + + + + + +face +A FreeType face object, already opened. This must be kept around until the face's ref_count drops to zero and it is freed. Since the face may be referenced internally to Cairo, the best way to determine when it is safe to free the face is to pass a -cairo_destroy_func_t to cairo_font_face_set_user_data() -load_flags : -flags to pass to FT_Load_Glyph when loading +cairo_destroy_func_t to cairo_font_face_set_user_data() + +load_flags +flags to pass to FT_Load_Glyph when loading glyphs from the font. These flags are OR'ed together with the flags derived from the cairo_font_options_t passed to cairo_scaled_font_create(), so only a few values such as FT_LOAD_VERTICAL_LAYOUT, and FT_LOAD_FORCE_AUTOHINT are useful. You should not pass any of the flags affecting -the load target, such as FT_LOAD_TARGET_LIGHT. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.0 +the load target, such as FT_LOAD_TARGET_LIGHT. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.0 -cairo_ft_font_face_create_for_pattern () +cairo_ft_font_face_create_for_pattern () cairo_ft_font_face_create_for_pattern -cairo_font_face_t * cairo_ft_font_face_create_for_pattern - (FcPattern *pattern); - -Creates a new font face for the FreeType font backend based on a +cairo_font_face_t * +cairo_ft_font_face_create_for_pattern (FcPattern *pattern); +Creates a new font face for the FreeType font backend based on a fontconfig pattern. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the FreeType backend and can be used with functions such -as cairo_ft_scaled_font_lock_face(). - - -Font rendering options are represented both here and when you +as cairo_ft_scaled_font_lock_face(). +Font rendering options are represented both here and when you call cairo_scaled_font_create(). Font options that have a representation in a FcPattern must be passed in here; to modify FcPattern appropriately to reflect the options in a cairo_font_options_t, call -cairo_ft_font_options_substitute(). - - -The pattern's FC_FT_FACE element is inspected first and if that is set, +cairo_ft_font_options_substitute(). +The pattern's FC_FT_FACE element is inspected first and if that is set, that will be the FreeType font face associated with the returned cairo font face. Otherwise the FC_FILE element is checked. If it's set, that and the value of the FC_INDEX element (defaults to zero) of pattern -are used to load a font face from file. - - -If both steps from the previous paragraph fails, pattern will be passed + +are used to load a font face from file. +If both steps from the previous paragraph fails, pattern + will be passed to FcConfigSubstitute, FcDefaultSubstitute, and finally FcFontMatch, -and the resulting font pattern is used. - - -If the FC_FT_FACE element of pattern is set, the user is responsible +and the resulting font pattern is used. +If the FC_FT_FACE element of pattern + is set, the user is responsible for making sure that the referenced FT_Face remains valid for the life time of the returned cairo_font_face_t. See cairo_ft_font_face_create_for_ft_face() for an example of how to couple -the life time of the FT_Face to that of the cairo font-face. - -pattern : -A fontconfig pattern. Cairo makes a copy of the pattern -if it needs to. You are free to modify or free pattern after this call. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.0 +the life time of the FT_Face to that of the cairo font-face. + +Parameters + + + + + + +pattern +A fontconfig pattern. Cairo makes a copy of the pattern +if it needs to. You are free to modify or free pattern +after this call. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.0 -cairo_ft_font_options_substitute () +cairo_ft_font_options_substitute () cairo_ft_font_options_substitute -void cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern); - -Add options to a FcPattern based on a cairo_font_options_t font +void +cairo_ft_font_options_substitute (const cairo_font_options_t *options, + FcPattern *pattern); +Add options to a FcPattern based on a cairo_font_options_t font options object. Options that are already in the pattern, are not overridden, so you should call this function after calling FcConfigSubstitute() (the user's settings should override options based on the surface type), but -before calling FcDefaultSubstitute(). - -options : -a cairo_font_options_t object -pattern : -an existing FcPattern -Since 1.0 +before calling FcDefaultSubstitute(). + +Parameters + + + + + + +options +a cairo_font_options_t object + +pattern +an existing FcPattern + + +Since 1.0 -cairo_ft_scaled_font_lock_face () +cairo_ft_scaled_font_lock_face () cairo_ft_scaled_font_lock_face -FT_Face cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *scaled_font); - -cairo_ft_scaled_font_lock_face() gets the FT_Face object from a FreeType +FT_Face +cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *scaled_font); +cairo_ft_scaled_font_lock_face() gets the FT_Face object from a FreeType backend font and scales it appropriately for the font. You must release the face with cairo_ft_scaled_font_unlock_face() when you are done using it. Since the FT_Face object can be @@ -196,118 +228,191 @@ lock any other font objects until you unlock this one. A count is kept of the number of times cairo_ft_scaled_font_lock_face() is called. cairo_ft_scaled_font_unlock_face() must be called the same number -of times. - - -You must be careful when using this function in a library or in a +of times. +You must be careful when using this function in a library or in a threaded application, because freetype's design makes it unsafe to call freetype functions simultaneously from multiple threads, (even if using distinct FT_Face objects). Because of this, application code that acquires an FT_Face object with this call must add its own locking to protect any use of that object, (and which also must protect any other calls into cairo as almost any cairo function -might result in a call into the freetype library). - -scaled_font : -A cairo_scaled_font_t from the FreeType font backend. Such an +might result in a call into the freetype library). + +Parameters + + + + + + +scaled_font +A cairo_scaled_font_t from the FreeType font backend. Such an object can be created by calling cairo_scaled_font_create() on a FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), -cairo_ft_font_face_create_for_ft_face()). -Returns :The FT_Face object for font, scaled appropriately, -or NULL if scaled_font is in an error state (see -cairo_scaled_font_status()) or there is insufficient memory. -Since 1.0 +cairo_ft_font_face_create_for_ft_face()). + + + +Returns + The FT_Face object for font +, scaled appropriately, +or NULL if scaled_font +is in an error state (see +cairo_scaled_font_status()) or there is insufficient memory. + +Since 1.0 -cairo_ft_scaled_font_unlock_face () +cairo_ft_scaled_font_unlock_face () cairo_ft_scaled_font_unlock_face -void cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font); - -Releases a face obtained with cairo_ft_scaled_font_lock_face(). - -scaled_font : -A cairo_scaled_font_t from the FreeType font backend. Such an +void +cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font); +Releases a face obtained with cairo_ft_scaled_font_lock_face(). + +Parameters + + + + + + +scaled_font +A cairo_scaled_font_t from the FreeType font backend. Such an object can be created by calling cairo_scaled_font_create() on a FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), -cairo_ft_font_face_create_for_ft_face()). -Since 1.0 - -enum cairo_ft_synthesize_t -cairo_ft_synthesize_t -typedef enum { - CAIRO_FT_SYNTHESIZE_BOLD = 1 << 0, - CAIRO_FT_SYNTHESIZE_OBLIQUE = 1 << 1 -} cairo_ft_synthesize_t; - - -A set of synthesis options to control how FreeType renders the glyphs -for a particular font face. - - -Individual synthesis features of a cairo_ft_font_face_t can be set -using cairo_ft_font_face_set_synthesize(), or disabled using -cairo_ft_font_face_unset_synthesize(). The currently enabled set of -synthesis options can be queried with cairo_ft_font_face_get_synthesize(). - - -Note: that when synthesizing glyphs, the font metrics returned will only -be estimates. - - -CAIRO_FT_SYNTHESIZE_BOLD -Embolden the glyphs (redraw with a pixel offset) - - - -CAIRO_FT_SYNTHESIZE_OBLIQUE -Slant the glyph outline by 12 degrees to the -right. - - -Since 1.12 +cairo_ft_font_face_create_for_ft_face()). + + +Since 1.0 -cairo_ft_font_face_get_synthesize () +cairo_ft_font_face_get_synthesize () cairo_ft_font_face_get_synthesize -unsigned int cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face); - -See cairo_ft_synthesize_t. - -font_face : -The cairo_ft_font_face_t object to query -Returns :the current set of synthesis options. -Since 1.12 +unsigned int +cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face); +See cairo_ft_synthesize_t. + +Parameters + + + + + + +font_face +The cairo_ft_font_face_t object to query + + + +Returns + the current set of synthesis options. + +Since 1.12 -cairo_ft_font_face_set_synthesize () +cairo_ft_font_face_set_synthesize () cairo_ft_font_face_set_synthesize -void cairo_ft_font_face_set_synthesize (cairo_font_face_t *font_face, - unsigned int synth_flags); - -FreeType provides the ability to synthesize different glyphs from a base +void +cairo_ft_font_face_set_synthesize (cairo_font_face_t *font_face, + unsigned int synth_flags); +FreeType provides the ability to synthesize different glyphs from a base font, which is useful if you lack those glyphs from a true bold or oblique -font. See also cairo_ft_synthesize_t. - -font_face : -The cairo_ft_font_face_t object to modify -synth_flags : -the set of synthesis options to enable -Since 1.12 +font. See also cairo_ft_synthesize_t. + +Parameters + + + + + + +font_face +The cairo_ft_font_face_t object to modify + +synth_flags +the set of synthesis options to enable + + +Since 1.12 -cairo_ft_font_face_unset_synthesize () +cairo_ft_font_face_unset_synthesize () cairo_ft_font_face_unset_synthesize -void cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face, - unsigned int synth_flags); - -See cairo_ft_font_face_set_synthesize(). - -font_face : -The cairo_ft_font_face_t object to modify -synth_flags : -the set of synthesis options to disable -Since 1.12 +void +cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face, + unsigned int synth_flags); +See cairo_ft_font_face_set_synthesize(). + +Parameters + + + + + + +font_face +The cairo_ft_font_face_t object to modify + +synth_flags +the set of synthesis options to disable + + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_FT_FONT +CAIRO_HAS_FT_FONT +#define CAIRO_HAS_FT_FONT 1 + +Defined if the FreeType font backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.0 + +CAIRO_HAS_FC_FONT +CAIRO_HAS_FC_FONT +#define CAIRO_HAS_FC_FONT 1 + +Defined if the Fontconfig-specific functions of the FreeType font backend +are available. +This macro can be used to conditionally compile backend-specific code. +Since 1.10 + +enum cairo_ft_synthesize_t +cairo_ft_synthesize_t +A set of synthesis options to control how FreeType renders the glyphs +for a particular font face. +Individual synthesis features of a cairo_ft_font_face_t can be set +using cairo_ft_font_face_set_synthesize(), or disabled using +cairo_ft_font_face_unset_synthesize(). The currently enabled set of +synthesis options can be queried with cairo_ft_font_face_get_synthesize(). +Note: that when synthesizing glyphs, the font metrics returned will only +be estimates. + +Members + + + + + + +CAIRO_FT_SYNTHESIZE_BOLD +Embolden the glyphs (redraw with a pixel offset) + + + +CAIRO_FT_SYNTHESIZE_OBLIQUE +Slant the glyph outline by 12 degrees to the +right. + + + + +Since 1.12 See Also -cairo_font_face_t +cairo_font_face_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-image.xml cairo-1.14.2/doc/public/xml/cairo-image.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-image.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-image.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,134 +16,77 @@ Rendering to memory buffers - -Synopsis + +Functions + + + + + +int +cairo_format_stride_for_width () +cairo_surface_t * +cairo_image_surface_create () +cairo_surface_t * +cairo_image_surface_create_for_data () +unsigned char * +cairo_image_surface_get_data () +cairo_format_t +cairo_image_surface_get_format () +int +cairo_image_surface_get_width () +int +cairo_image_surface_get_height () +int +cairo_image_surface_get_stride () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_IMAGE_SURFACE +enumcairo_format_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_IMAGE_SURFACE -enum cairo_format_t; -int cairo_format_stride_for_width (cairo_format_t format, - int width); -cairo_surface_t * cairo_image_surface_create (cairo_format_t format, - int width, - int height); -cairo_surface_t * cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride); -unsigned char * cairo_image_surface_get_data (cairo_surface_t *surface); -cairo_format_t cairo_image_surface_get_format (cairo_surface_t *surface); -int cairo_image_surface_get_width (cairo_surface_t *surface); -int cairo_image_surface_get_height (cairo_surface_t *surface); -int cairo_image_surface_get_stride (cairo_surface_t *surface); - - Description - -Image surfaces provide the ability to render to memory buffers +Image surfaces provide the ability to render to memory buffers either allocated by cairo or by the calling code. The supported -image formats are those defined in cairo_format_t. - +image formats are those defined in cairo_format_t. + - -Details - -CAIRO_HAS_IMAGE_SURFACE -CAIRO_HAS_IMAGE_SURFACE -#define CAIRO_HAS_IMAGE_SURFACE 1 - - -Defined if the image surface backend is available. -The image surface backend is always built in. -This macro was added for completeness in cairo 1.8. -Since 1.8 - -enum cairo_format_t -cairo_format_t -typedef enum { - CAIRO_FORMAT_INVALID = -1, - CAIRO_FORMAT_ARGB32 = 0, - CAIRO_FORMAT_RGB24 = 1, - CAIRO_FORMAT_A8 = 2, - CAIRO_FORMAT_A1 = 3, - CAIRO_FORMAT_RGB16_565 = 4, - CAIRO_FORMAT_RGB30 = 5 -} cairo_format_t; - - -cairo_format_t is used to identify the memory format of -image data. - - -New entries may be added in future versions. - - -CAIRO_FORMAT_INVALID -no such format exists or is supported. - - - -CAIRO_FORMAT_ARGB32 -each pixel is a 32-bit quantity, with - alpha in the upper 8 bits, then red, then green, then blue. - The 32-bit quantities are stored native-endian. Pre-multiplied - alpha is used. (That is, 50% transparent red is 0x80800000, - not 0x80ff0000.) (Since 1.0) - - - -CAIRO_FORMAT_RGB24 -each pixel is a 32-bit quantity, with - the upper 8 bits unused. Red, Green, and Blue are stored - in the remaining 24 bits in that order. (Since 1.0) - - - -CAIRO_FORMAT_A8 -each pixel is a 8-bit quantity holding - an alpha value. (Since 1.0) - - - -CAIRO_FORMAT_A1 -each pixel is a 1-bit quantity holding - an alpha value. Pixels are packed together into 32-bit - quantities. The ordering of the bits matches the - endianess of the platform. On a big-endian machine, the - first pixel is in the uppermost bit, on a little-endian - machine the first pixel is in the least-significant bit. (Since 1.0) - - - -CAIRO_FORMAT_RGB16_565 -each pixel is a 16-bit quantity - with red in the upper 5 bits, then green in the middle - 6 bits, and blue in the lower 5 bits. (Since 1.2) - - - -CAIRO_FORMAT_RGB30 -like RGB24 but with 10bpc. (Since 1.12) - - -Since 1.0 + +Functions -cairo_format_stride_for_width () +cairo_format_stride_for_width () cairo_format_stride_for_width -int cairo_format_stride_for_width (cairo_format_t format, - int width); - -This function provides a stride value that will respect all +int +cairo_format_stride_for_width (cairo_format_t format, + int width); +This function provides a stride value that will respect all alignment requirements of the accelerated image-rendering code -within cairo. Typical usage will be of the form: - - +within cairo. Typical usage will be of the form: int stride; unsigned char *data; -cairo_surface_t *surface; +cairo_surface_t *surface; stride = cairo_format_stride_for_width (format, width); data = malloc (stride * height); @@ -151,166 +94,349 @@ width, height, stride); - -format : -A cairo_format_t value -width : -The desired width of an image surface to be created. -Returns :the appropriate stride to use given the desired + +Parameters + + + + + + +format +A cairo_format_t value + +width +The desired width of an image surface to be created. + + + +Returns + the appropriate stride to use given the desired format and width, or -1 if either the format is invalid or the width -too large. -Since 1.6 +too large. + +Since 1.6 -cairo_image_surface_create () +cairo_image_surface_create () cairo_image_surface_create -cairo_surface_t * cairo_image_surface_create (cairo_format_t format, - int width, - int height); - -Creates an image surface of the specified format and -dimensions. Initially the surface contents are all -0. (Specifically, within each pixel, each color or alpha channel +cairo_surface_t * +cairo_image_surface_create (cairo_format_t format, + int width, + int height); +Creates an image surface of the specified format and +dimensions. Initially the surface contents are all + +(Specifically, within each pixel, each color or alpha channel belonging to format will be 0. The contents of bits within a pixel, -but not belonging to the given format are undefined). - -format : -format of pixels in the surface to create -width : -width of the surface, in pixels -height : -height of the surface, in pixels -Returns :a pointer to the newly created surface. The caller +but not belonging to the given format are undefined). + + +Parameters + + + + + + +format +format of pixels in the surface to create + +width +width of the surface, in pixels + +height +height of the surface, in pixels + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.0 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.0 -cairo_image_surface_create_for_data () +cairo_image_surface_create_for_data () cairo_image_surface_create_for_data -cairo_surface_t * cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride); - -Creates an image surface for the provided pixel data. The output +cairo_surface_t * +cairo_image_surface_create_for_data (unsigned char *data, + cairo_format_t format, + int width, + int height, + int stride); +Creates an image surface for the provided pixel data. The output buffer must be kept around until the cairo_surface_t is destroyed or cairo_surface_finish() is called on the surface. The initial -contents of data will be used as the initial image contents; you +contents of data + will be used as the initial image contents; you must explicitly clear the buffer, using, for example, -cairo_rectangle() and cairo_fill() if you want it cleared. - - -Note that the stride may be larger than +cairo_rectangle() and cairo_fill() if you want it cleared. +Note that the stride may be larger than width*bytes_per_pixel to provide proper alignment for each pixel and row. This alignment is required to allow high-performance rendering within cairo. The correct way to obtain a legal stride value is to call cairo_format_stride_for_width() with the desired format and maximum image width value, and then use the resulting stride value to allocate the data and to create the image surface. See -cairo_format_stride_for_width() for example code. - -data : -a pointer to a buffer supplied by the application in which +cairo_format_stride_for_width() for example code. + +Parameters + + + + + + +data +a pointer to a buffer supplied by the application in which to write contents. This pointer must be suitably aligned for any -kind of variable, (for example, a pointer returned by malloc). -format : -the format of pixels in the buffer -width : -the width of the image to be stored in the buffer -height : -the height of the image to be stored in the buffer -stride : -the number of bytes between the start of rows in the +kind of variable, (for example, a pointer returned by malloc). + +format +the format of pixels in the buffer + +width +the width of the image to be stored in the buffer + +height +the height of the image to be stored in the buffer + +stride +the number of bytes between the start of rows in the buffer as allocated. This value should always be computed by cairo_format_stride_for_width() before allocating the data -buffer. -Returns :a pointer to the newly created surface. The caller +buffer. + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface in the case of an error such as out of memory or an invalid stride value. In case of invalid stride value the error status of the returned surface will be CAIRO_STATUS_INVALID_STRIDE. You can use -cairo_surface_status() to check for this. -See cairo_surface_set_user_data() for a means of attaching a -destroy-notification fallback to the surface if necessary. -Since 1.0 +cairo_surface_status() to check for this. +See cairo_surface_set_user_data() for a means of attaching a +destroy-notification fallback to the surface if necessary. + +Since 1.0 -cairo_image_surface_get_data () +cairo_image_surface_get_data () cairo_image_surface_get_data -unsigned char * cairo_image_surface_get_data (cairo_surface_t *surface); - -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 +unsigned char * +cairo_image_surface_get_data (cairo_surface_t *surface); +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 -Returns :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. -Since 1.2 +the data is modified. + +Parameters + + + + + + +surface +a cairo_image_surface_t + + + +Returns + 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. + +Since 1.2 -cairo_image_surface_get_format () +cairo_image_surface_get_format () cairo_image_surface_get_format -cairo_format_t cairo_image_surface_get_format (cairo_surface_t *surface); - -Get the format of the surface. - -surface : -a cairo_image_surface_t -Returns :the format of the surface -Since 1.2 +cairo_format_t +cairo_image_surface_get_format (cairo_surface_t *surface); +Get the format of the surface. + +Parameters + + + + + + +surface +a cairo_image_surface_t + + + +Returns + the format of the surface + +Since 1.2 -cairo_image_surface_get_width () +cairo_image_surface_get_width () cairo_image_surface_get_width -int cairo_image_surface_get_width (cairo_surface_t *surface); - -Get the width of the image surface in pixels. - -surface : -a cairo_image_surface_t -Returns :the width of the surface in pixels. -Since 1.0 +int +cairo_image_surface_get_width (cairo_surface_t *surface); +Get the width of the image surface in pixels. + +Parameters + + + + + + +surface +a cairo_image_surface_t + + + +Returns + the width of the surface in pixels. + +Since 1.0 -cairo_image_surface_get_height () +cairo_image_surface_get_height () cairo_image_surface_get_height -int cairo_image_surface_get_height (cairo_surface_t *surface); - -Get the height of the image surface in pixels. - -surface : -a cairo_image_surface_t -Returns :the height of the surface in pixels. -Since 1.0 +int +cairo_image_surface_get_height (cairo_surface_t *surface); +Get the height of the image surface in pixels. + +Parameters + + + + + + +surface +a cairo_image_surface_t + + + +Returns + the height of the surface in pixels. + +Since 1.0 -cairo_image_surface_get_stride () +cairo_image_surface_get_stride () cairo_image_surface_get_stride -int cairo_image_surface_get_stride (cairo_surface_t *surface); - -Get the stride of the image surface in bytes - -surface : -a cairo_image_surface_t -Returns :the stride of the image surface in bytes (or 0 if -surface is not an image surface). The stride is the distance in +int +cairo_image_surface_get_stride (cairo_surface_t *surface); +Get the stride of the image surface in bytes + +Parameters + + + + + + +surface +a cairo_image_surface_t + + + +Returns + the stride of the image surface in bytes (or 0 if +surface +is not an image surface). The stride is the distance in bytes from the beginning of one row of the image data to the -beginning of the next row. -Since 1.2 +beginning of the next row. + +Since 1.2 + + + +Types and Values + +CAIRO_HAS_IMAGE_SURFACE +CAIRO_HAS_IMAGE_SURFACE +#define CAIRO_HAS_IMAGE_SURFACE 1 + +Defined if the image surface backend is available. +The image surface backend is always built in. +This macro was added for completeness in cairo 1.8. +Since 1.8 + +enum cairo_format_t +cairo_format_t +cairo_format_t is used to identify the memory format of +image data. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_FORMAT_INVALID +no such format exists or is supported. + + + +CAIRO_FORMAT_ARGB32 +each pixel is a 32-bit quantity, with + alpha in the upper 8 bits, then red, then green, then blue. + The 32-bit quantities are stored native-endian. Pre-multiplied + alpha is used. (That is, 50% transparent red is 0x80800000, + not 0x80ff0000.) (Since 1.0) + + + +CAIRO_FORMAT_RGB24 +each pixel is a 32-bit quantity, with + the upper 8 bits unused. Red, Green, and Blue are stored + in the remaining 24 bits in that order. (Since 1.0) + + + +CAIRO_FORMAT_A8 +each pixel is a 8-bit quantity holding + an alpha value. (Since 1.0) + + + +CAIRO_FORMAT_A1 +each pixel is a 1-bit quantity holding + an alpha value. Pixels are packed together into 32-bit + quantities. The ordering of the bits matches the + endianess of the platform. On a big-endian machine, the + first pixel is in the uppermost bit, on a little-endian + machine the first pixel is in the least-significant bit. (Since 1.0) + + + +CAIRO_FORMAT_RGB16_565 +each pixel is a 16-bit quantity + with red in the upper 5 bits, then green in the middle + 6 bits, and blue in the lower 5 bits. (Since 1.2) + + + +CAIRO_FORMAT_RGB30 +like RGB24 but with 10bpc. (Since 1.12) + + + + +Since 1.0 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-matrix.xml cairo-1.14.2/doc/public/xml/cairo-matrix.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-matrix.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-matrix.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,351 +16,573 @@ Generic matrix operations - -Synopsis + +Functions + + + + + +void +cairo_matrix_init () +void +cairo_matrix_init_identity () +void +cairo_matrix_init_translate () +void +cairo_matrix_init_scale () +void +cairo_matrix_init_rotate () +void +cairo_matrix_translate () +void +cairo_matrix_scale () +void +cairo_matrix_rotate () +cairo_status_t +cairo_matrix_invert () +void +cairo_matrix_multiply () +void +cairo_matrix_transform_distance () +void +cairo_matrix_transform_point () + + + + + + +Types and Values + + + + + +cairo_matrix_t + + + + + + +Object Hierarchy + + + - cairo_matrix_t; -void cairo_matrix_init (cairo_matrix_t *matrix, - double xx, - double yx, - double xy, - double yy, - double x0, - double y0); -void cairo_matrix_init_identity (cairo_matrix_t *matrix); -void cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, - double ty); -void cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, - double sy); -void cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians); -void cairo_matrix_translate (cairo_matrix_t *matrix, - double tx, - double ty); -void cairo_matrix_scale (cairo_matrix_t *matrix, - double sx, - double sy); -void cairo_matrix_rotate (cairo_matrix_t *matrix, - double radians); -cairo_status_t cairo_matrix_invert (cairo_matrix_t *matrix); -void cairo_matrix_multiply (cairo_matrix_t *result, - const cairo_matrix_t *a, - const cairo_matrix_t *b); -void cairo_matrix_transform_distance (const cairo_matrix_t *matrix, - double *dx, - double *dy); -void cairo_matrix_transform_point (const cairo_matrix_t *matrix, - double *x, - double *y); - - Description - -cairo_matrix_t is used throughout cairo to convert between different +cairo_matrix_t is used throughout cairo to convert between different coordinate spaces. A cairo_matrix_t holds an affine transformation, such as a scale, rotation, shear, or a combination of these. The transformation of a point (x,y) -is given by: - - +is given by: x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; - - -The current transformation matrix of a cairo_t, represented as a +The current transformation matrix of a cairo_t, represented as a cairo_matrix_t, defines the transformation from user-space coordinates to device-space coordinates. See cairo_get_matrix() and -cairo_set_matrix(). - +cairo_set_matrix(). + - -Details - -cairo_matrix_t -cairo_matrix_t -typedef struct { - double xx; double yx; - double xy; double yy; - double x0; double y0; -} cairo_matrix_t; - - -A cairo_matrix_t holds an affine transformation, such as a scale, -rotation, shear, or a combination of those. The transformation of -a point (x, y) is given by: - - x_new = xx * x + xy * y + x0; - y_new = yx * x + yy * y + y0; - - -double xx; -xx component of the affine transformation - -double yx; -yx component of the affine transformation - -double xy; -xy component of the affine transformation - -double yy; -yy component of the affine transformation - -double x0; -X translation component of the affine transformation - -double y0; -Y translation component of the affine transformation - -Since 1.0 + +Functions -cairo_matrix_init () +cairo_matrix_init () cairo_matrix_init -void cairo_matrix_init (cairo_matrix_t *matrix, - double xx, - double yx, - double xy, - double yy, - double x0, - double y0); - -Sets matrix to be the affine transformation given by -xx, yx, xy, yy, x0, y0. The transformation is given -by: +void +cairo_matrix_init (cairo_matrix_t *matrix, + double xx, + double yx, + double xy, + double yy, + double x0, + double y0); +Sets matrix + to be the affine transformation given by +xx +, yx +, xy +, yy +, x0 +, y0 +. The transformation is given +by: x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; - -matrix : -a cairo_matrix_t -xx : -xx component of the affine transformation -yx : -yx component of the affine transformation -xy : -xy component of the affine transformation -yy : -yy component of the affine transformation -x0 : -X translation component of the affine transformation -y0 : -Y translation component of the affine transformation -Since 1.0 + +Parameters + + + + + + +matrix +a cairo_matrix_t + +xx +xx component of the affine transformation + +yx +yx component of the affine transformation + +xy +xy component of the affine transformation + +yy +yy component of the affine transformation + +x0 +X translation component of the affine transformation + +y0 +Y translation component of the affine transformation + + +Since 1.0 -cairo_matrix_init_identity () +cairo_matrix_init_identity () cairo_matrix_init_identity -void cairo_matrix_init_identity (cairo_matrix_t *matrix); - -Modifies matrix to be an identity transformation. - -matrix : -a cairo_matrix_t -Since 1.0 +void +cairo_matrix_init_identity (cairo_matrix_t *matrix); +Modifies matrix + to be an identity transformation. + +Parameters + + + + + + +matrix +a cairo_matrix_t + + +Since 1.0 -cairo_matrix_init_translate () +cairo_matrix_init_translate () cairo_matrix_init_translate -void cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, - double ty); - -Initializes matrix to a transformation that translates by tx and -ty in the X and Y dimensions, respectively. - -matrix : -a cairo_matrix_t -tx : -amount to translate in the X direction -ty : -amount to translate in the Y direction -Since 1.0 +void +cairo_matrix_init_translate (cairo_matrix_t *matrix, + double tx, + double ty); +Initializes matrix + to a transformation that translates by tx + and +ty + in the X and Y dimensions, respectively. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +tx +amount to translate in the X direction + +ty +amount to translate in the Y direction + + +Since 1.0 -cairo_matrix_init_scale () +cairo_matrix_init_scale () cairo_matrix_init_scale -void cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, - double sy); - -Initializes matrix to a transformation that scales by sx and sy -in the X and Y dimensions, respectively. - -matrix : -a cairo_matrix_t -sx : -scale factor in the X direction -sy : -scale factor in the Y direction -Since 1.0 +void +cairo_matrix_init_scale (cairo_matrix_t *matrix, + double sx, + double sy); +Initializes matrix + to a transformation that scales by sx + and sy + +in the X and Y dimensions, respectively. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +sx +scale factor in the X direction + +sy +scale factor in the Y direction + + +Since 1.0 -cairo_matrix_init_rotate () +cairo_matrix_init_rotate () cairo_matrix_init_rotate -void cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians); - -Initialized matrix to a transformation that rotates by radians. - -matrix : -a cairo_matrix_t -radians : -angle of rotation, in radians. The direction of rotation +void +cairo_matrix_init_rotate (cairo_matrix_t *matrix, + double radians); +Initialized matrix + to a transformation that rotates by radians +. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +radians +angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise -direction. -Since 1.0 +direction. + + +Since 1.0 -cairo_matrix_translate () +cairo_matrix_translate () cairo_matrix_translate -void cairo_matrix_translate (cairo_matrix_t *matrix, - double tx, - double ty); - -Applies a translation by tx, ty to the transformation in -matrix. The effect of the new transformation is to first translate -the coordinates by tx and ty, then apply the original transformation -to the coordinates. - -matrix : -a cairo_matrix_t -tx : -amount to translate in the X direction -ty : -amount to translate in the Y direction -Since 1.0 +void +cairo_matrix_translate (cairo_matrix_t *matrix, + double tx, + double ty); +Applies a translation by tx +, ty + to the transformation in +matrix +. The effect of the new transformation is to first translate +the coordinates by tx + and ty +, then apply the original transformation +to the coordinates. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +tx +amount to translate in the X direction + +ty +amount to translate in the Y direction + + +Since 1.0 -cairo_matrix_scale () +cairo_matrix_scale () cairo_matrix_scale -void cairo_matrix_scale (cairo_matrix_t *matrix, - double sx, - double sy); - -Applies scaling by sx, sy to the transformation in matrix. The +void +cairo_matrix_scale (cairo_matrix_t *matrix, + double sx, + double sy); +Applies scaling by sx +, sy + to the transformation in matrix +. The effect of the new transformation is to first scale the coordinates -by sx and sy, then apply the original transformation to the coordinates. - -matrix : -a cairo_matrix_t -sx : -scale factor in the X direction -sy : -scale factor in the Y direction -Since 1.0 +by sx + and sy +, then apply the original transformation to the coordinates. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +sx +scale factor in the X direction + +sy +scale factor in the Y direction + + +Since 1.0 -cairo_matrix_rotate () +cairo_matrix_rotate () cairo_matrix_rotate -void cairo_matrix_rotate (cairo_matrix_t *matrix, - double radians); - -Applies rotation by radians to the transformation in -matrix. The effect of the new transformation is to first rotate the -coordinates by radians, then apply the original transformation -to the coordinates. - -matrix : -a cairo_matrix_t -radians : -angle of rotation, in radians. The direction of rotation +void +cairo_matrix_rotate (cairo_matrix_t *matrix, + double radians); +Applies rotation by radians + to the transformation in +matrix +. The effect of the new transformation is to first rotate the +coordinates by radians +, then apply the original transformation +to the coordinates. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +radians +angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise -direction. -Since 1.0 +direction. + + +Since 1.0 -cairo_matrix_invert () +cairo_matrix_invert () cairo_matrix_invert -cairo_status_t cairo_matrix_invert (cairo_matrix_t *matrix); - -Changes matrix to be the inverse of its original value. Not +cairo_status_t +cairo_matrix_invert (cairo_matrix_t *matrix); +Changes matrix + to be the inverse of its original value. Not all transformation matrices have inverses; if the matrix collapses points together (it is degenerate), -then it has no inverse and this function will fail. - -matrix : -a cairo_matrix_t -Returns :If matrix has an inverse, modifies matrix to +then it has no inverse and this function will fail. + +Parameters + + + + + + +matrix +a cairo_matrix_t + + + +Returns + If matrix +has an inverse, modifies matrix +to be the inverse matrix and returns CAIRO_STATUS_SUCCESS. Otherwise, -returns CAIRO_STATUS_INVALID_MATRIX. -Since 1.0 +returns CAIRO_STATUS_INVALID_MATRIX. + +Since 1.0 -cairo_matrix_multiply () +cairo_matrix_multiply () cairo_matrix_multiply -void cairo_matrix_multiply (cairo_matrix_t *result, - const cairo_matrix_t *a, - const cairo_matrix_t *b); - -Multiplies the affine transformations in a and b together -and stores the result in result. The effect of the resulting -transformation is to first apply the transformation in a to the -coordinates and then apply the transformation in b to the -coordinates. - - -It is allowable for result to be identical to either a or b. - -result : -a cairo_matrix_t in which to store the result -a : -a cairo_matrix_t -b : -a cairo_matrix_t -Since 1.0 +void +cairo_matrix_multiply (cairo_matrix_t *result, + const cairo_matrix_t *a, + const cairo_matrix_t *b); +Multiplies the affine transformations in a + and b + together +and stores the result in result +. The effect of the resulting +transformation is to first apply the transformation in a + to the +coordinates and then apply the transformation in b + to the +coordinates. +It is allowable for result + to be identical to either a + or b +. + +Parameters + + + + + + +result +a cairo_matrix_t in which to store the result + +a +a cairo_matrix_t + +b +a cairo_matrix_t + + +Since 1.0 -cairo_matrix_transform_distance () +cairo_matrix_transform_distance () cairo_matrix_transform_distance -void cairo_matrix_transform_distance (const cairo_matrix_t *matrix, - double *dx, - double *dy); - -Transforms the distance vector (dx,dy) by matrix. This is +void +cairo_matrix_transform_distance (const cairo_matrix_t *matrix, + double *dx, + double *dy); +Transforms the distance vector (dx +,dy +) by matrix +. This is similar to cairo_matrix_transform_point() except that the translation components of the transformation are ignored. The calculation of -the returned vector is as follows: - - +the returned vector is as follows: dx2 = dx1 * a + dy1 * c; dy2 = dx1 * b + dy1 * d; - - -Affine transformations are position invariant, so the same vector -always transforms to the same vector. If (x1,y1) transforms -to (x2,y2) then (x1+dx1,y1+dy1) will transform to -(x1+dx2,y1+dy2) for all values of x1 and x2. - -matrix : -a cairo_matrix_t -dx : -X component of a distance vector. An in/out parameter -dy : -Y component of a distance vector. An in/out parameter -Since 1.0 +Affine transformations are position invariant, so the same vector +always transforms to the same vector. If (x1 +,y1 +) transforms +to (x2 +,y2 +) then (x1 ++dx1 +,y1 ++dy1 +) will transform to +(x1 ++dx2 +,y1 ++dy2 +) for all values of x1 + and x2 +. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +dx +X component of a distance vector. An in/out parameter + +dy +Y component of a distance vector. An in/out parameter + + +Since 1.0 -cairo_matrix_transform_point () +cairo_matrix_transform_point () cairo_matrix_transform_point -void cairo_matrix_transform_point (const cairo_matrix_t *matrix, - double *x, - double *y); - -Transforms the point (x, y) by matrix. - -matrix : -a cairo_matrix_t -x : -X position. An in/out parameter -y : -Y position. An in/out parameter -Since 1.0 +void +cairo_matrix_transform_point (const cairo_matrix_t *matrix, + double *x, + double *y); +Transforms the point (x +, y +) by matrix +. + +Parameters + + + + + + +matrix +a cairo_matrix_t + +x +X position. An in/out parameter + +y +Y position. An in/out parameter + + +Since 1.0 + + + +Types and Values + +cairo_matrix_t +cairo_matrix_t +typedef struct { + double xx; double yx; + double xy; double yy; + double x0; double y0; +} cairo_matrix_t; + +A cairo_matrix_t holds an affine transformation, such as a scale, +rotation, shear, or a combination of those. The transformation of +a point (x, y) is given by: + + x_new = xx * x + xy * y + x0; + y_new = yx * x + yy * y + y0; + + +Members + + + + + + +double xx; +xx component of the affine transformation +xx component of the affine transformation + + +double yx; +yx component of the affine transformation +yx component of the affine transformation + + +double xy; +xy component of the affine transformation +xy component of the affine transformation + + +double yy; +yy component of the affine transformation +yy component of the affine transformation + + +double x0; +X translation component of the affine transformation +X translation component of the affine transformation + + +double y0; +Y translation component of the affine transformation +Y translation component of the affine transformation + + + + +Since 1.0 See Also -cairo_t +cairo_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-paths.xml cairo-1.14.2/doc/public/xml/cairo-paths.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-paths.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-paths.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,260 +16,102 @@ Creating paths and manipulating path data - -Synopsis + +Functions + + + + + +cairo_path_t * +cairo_copy_path () +cairo_path_t * +cairo_copy_path_flat () +void +cairo_path_destroy () +void +cairo_append_path () +cairo_bool_t +cairo_has_current_point () +void +cairo_get_current_point () +void +cairo_new_path () +void +cairo_new_sub_path () +void +cairo_close_path () +void +cairo_arc () +void +cairo_arc_negative () +void +cairo_curve_to () +void +cairo_line_to () +void +cairo_move_to () +void +cairo_rectangle () +void +cairo_glyph_path () +void +cairo_text_path () +void +cairo_rel_curve_to () +void +cairo_rel_line_to () +void +cairo_rel_move_to () +void +cairo_path_extents () + + + + + + +Types and Values + + + + + +cairo_path_t +unioncairo_path_data_t +enumcairo_path_data_type_t + + + + + + +Object Hierarchy + + + - cairo_path_t; -union cairo_path_data_t; -enum cairo_path_data_type_t; -cairo_path_t * cairo_copy_path (cairo_t *cr); -cairo_path_t * cairo_copy_path_flat (cairo_t *cr); -void cairo_path_destroy (cairo_path_t *path); -void cairo_append_path (cairo_t *cr, - const cairo_path_t *path); -cairo_bool_t cairo_has_current_point (cairo_t *cr); -void cairo_get_current_point (cairo_t *cr, - double *x, - double *y); -void cairo_new_path (cairo_t *cr); -void cairo_new_sub_path (cairo_t *cr); -void cairo_close_path (cairo_t *cr); -void cairo_arc (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); -void cairo_arc_negative (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); -void cairo_curve_to (cairo_t *cr, - double x1, - double y1, - double x2, - double y2, - double x3, - double y3); -void cairo_line_to (cairo_t *cr, - double x, - double y); -void cairo_move_to (cairo_t *cr, - double x, - double y); -void cairo_rectangle (cairo_t *cr, - double x, - double y, - double width, - double height); -void cairo_glyph_path (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs); -void cairo_text_path (cairo_t *cr, - const char *utf8); -void cairo_rel_curve_to (cairo_t *cr, - double dx1, - double dy1, - double dx2, - double dy2, - double dx3, - double dy3); -void cairo_rel_line_to (cairo_t *cr, - double dx, - double dy); -void cairo_rel_move_to (cairo_t *cr, - double dx, - double dy); -void cairo_path_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); - - Description - -Paths are the most basic drawing tools and are primarily used to implicitly -generate simple masks. - +Paths are the most basic drawing tools and are primarily used to implicitly +generate simple masks. + - -Details - -cairo_path_t -cairo_path_t -typedef struct { - cairo_status_t status; - cairo_path_data_t *data; - int num_data; -} cairo_path_t; - - -A data structure for holding a path. This data structure serves as -the return value for cairo_copy_path() and -cairo_copy_path_flat() as well the input value for -cairo_append_path(). - - -See cairo_path_data_t for hints on how to iterate over the -actual data within the path. - - -The num_data member gives the number of elements in the data -array. This number is larger than the number of independent path -portions (defined in cairo_path_data_type_t), since the data -includes both headers and coordinates for each portion. - -cairo_status_t status; -the current error status - -cairo_path_data_t *data; -the elements in the path - -int num_data; -the number of elements in the data array - -Since 1.0 - -union cairo_path_data_t -cairo_path_data_t -union _cairo_path_data_t { - struct { - cairo_path_data_type_t type; - int length; - } header; - struct { - double x, y; - } point; -}; - - -cairo_path_data_t is used to represent the path data inside a -cairo_path_t. - - -The data structure is designed to try to balance the demands of -efficiency and ease-of-use. A path is represented as an array of -cairo_path_data_t, which is a union of headers and points. - - -Each portion of the path is represented by one or more elements in -the array, (one header followed by 0 or more points). The length -value of the header is the number of array elements for the current -portion including the header, (ie. length == 1 + # of points), and -where the number of points for each element type is as follows: - - - - %CAIRO_PATH_MOVE_TO: 1 point - %CAIRO_PATH_LINE_TO: 1 point - %CAIRO_PATH_CURVE_TO: 3 points - %CAIRO_PATH_CLOSE_PATH: 0 points - - - -The semantics and ordering of the coordinate values are consistent -with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and -cairo_close_path(). - - -Here is sample code for iterating through a cairo_path_t: - - - - int i; - cairo_path_t *path; - cairo_path_data_t *data; -  - path = cairo_copy_path (cr); -  - for (i=0; i < path->num_data; i += path->data[i].header.length) { - data = &path->data[i]; - switch (data->header.type) { - case CAIRO_PATH_MOVE_TO: - do_move_to_things (data[1].point.x, data[1].point.y); - break; - case CAIRO_PATH_LINE_TO: - do_line_to_things (data[1].point.x, data[1].point.y); - break; - case CAIRO_PATH_CURVE_TO: - do_curve_to_things (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: - do_close_path_things (); - break; - } - } - cairo_path_destroy (path); - - - -As of cairo 1.4, cairo does not mind if there are more elements in -a portion of the path than needed. Such elements can be used by -users of the cairo API to hold extra values in the path data -structure. For this reason, it is recommended that applications -always use data->header.length to -iterate over the path data, instead of hardcoding the number of -elements for each element type. -Since 1.0 - -enum cairo_path_data_type_t -cairo_path_data_type_t -typedef enum { - CAIRO_PATH_MOVE_TO, - CAIRO_PATH_LINE_TO, - CAIRO_PATH_CURVE_TO, - CAIRO_PATH_CLOSE_PATH -} cairo_path_data_type_t; - - -cairo_path_data_t is used to describe the type of one portion -of a path when represented as a cairo_path_t. -See cairo_path_data_t for details. - - -CAIRO_PATH_MOVE_TO -A move-to operation, since 1.0 - - - -CAIRO_PATH_LINE_TO -A line-to operation, since 1.0 - - - -CAIRO_PATH_CURVE_TO -A curve-to operation, since 1.0 - - - -CAIRO_PATH_CLOSE_PATH -A close-path operation, since 1.0 - - -Since 1.0 + +Functions -cairo_copy_path () +cairo_copy_path () cairo_copy_path -cairo_path_t * cairo_copy_path (cairo_t *cr); - -Creates a copy of the current path and returns it to the user as a +cairo_path_t * +cairo_copy_path (cairo_t *cr); +Creates a copy of the current path and returns it to the user as a cairo_path_t. See cairo_path_data_t for hints on how to iterate -over the returned data structure. - - -This function will always return a valid pointer, but the result +over the returned data structure. +This function will always return a valid pointer, but the result will have no data (data==NULL and num_data==0), if either of the following -conditions hold: - - +conditions hold: If there is insufficient memory to copy the path. In this case path->status will be set to @@ -278,37 +120,43 @@ path->status will contain the same status that would be returned by cairo_status(). - -cr : -a cairo context -Returns :the copy of the current path. The caller owns the + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the copy of the current path. The caller owns the returned object and should call cairo_path_destroy() when finished -with it. -Since 1.0 +with it. + +Since 1.0 -cairo_copy_path_flat () +cairo_copy_path_flat () cairo_copy_path_flat -cairo_path_t * cairo_copy_path_flat (cairo_t *cr); - -Gets a flattened copy of the current path and returns it to the +cairo_path_t * +cairo_copy_path_flat (cairo_t *cr); +Gets a flattened copy of the current path and returns it to the user as a cairo_path_t. See cairo_path_data_t for hints on -how to iterate over the returned data structure. - - -This function is like cairo_copy_path() except that any curves +how to iterate over the returned data structure. +This function is like cairo_copy_path() except that any curves in the path will be approximated with piecewise-linear approximations, (accurate to within the current tolerance value). That is, the result is guaranteed to not have any elements of type CAIRO_PATH_CURVE_TO which will instead be replaced by a -series of CAIRO_PATH_LINE_TO elements. - - -This function will always return a valid pointer, but the result +series of CAIRO_PATH_LINE_TO elements. +This function will always return a valid pointer, but the result will have no data (data==NULL and num_data==0), if either of the following -conditions hold: - - +conditions hold: If there is insufficient memory to copy the path. In this case path->status will be set to @@ -317,217 +165,285 @@ path->status will contain the same status that would be returned by cairo_status(). - -cr : -a cairo context -Returns :the copy of the current path. The caller owns the + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the copy of the current path. The caller owns the returned object and should call cairo_path_destroy() when finished -with it. -Since 1.0 +with it. + +Since 1.0 -cairo_path_destroy () +cairo_path_destroy () cairo_path_destroy -void cairo_path_destroy (cairo_path_t *path); - -Immediately releases all memory associated with path. After a call -to cairo_path_destroy() the path pointer is no longer valid and -should not be used further. - - -Note: cairo_path_destroy() should only be called with a +void +cairo_path_destroy (cairo_path_t *path); +Immediately releases all memory associated with path +. After a call +to cairo_path_destroy() the path + pointer is no longer valid and +should not be used further. +Note: cairo_path_destroy() should only be called with a pointer to a cairo_path_t returned by a cairo function. Any path that is created manually (ie. outside of cairo) should be destroyed -manually as well. - -path : -a path previously returned by either cairo_copy_path() or -cairo_copy_path_flat(). -Since 1.0 +manually as well. + +Parameters + + + + + + +path +a path previously returned by either cairo_copy_path() or +cairo_copy_path_flat(). + + +Since 1.0 -cairo_append_path () +cairo_append_path () cairo_append_path -void cairo_append_path (cairo_t *cr, - const cairo_path_t *path); - -Append the path onto the current path. The path may be either the +void +cairo_append_path (cairo_t *cr, + const cairo_path_t *path); +Append the path + onto the current path. The path + may be either the return value from one of cairo_copy_path() or cairo_copy_path_flat() or it may be constructed manually. See cairo_path_t for details on how the path data structure should be initialized, and note that path->status must be -initialized to CAIRO_STATUS_SUCCESS. - -cr : -a cairo context -path : -path to be appended -Since 1.0 +initialized to CAIRO_STATUS_SUCCESS. + +Parameters + + + + + + +cr +a cairo context + +path +path to be appended + + +Since 1.0 -cairo_has_current_point () +cairo_has_current_point () cairo_has_current_point -cairo_bool_t cairo_has_current_point (cairo_t *cr); - -Returns whether a current point is defined on the current path. -See cairo_get_current_point() for details on the current point. - -cr : -a cairo context -Returns :whether a current point is defined. -Since 1.6 +cairo_bool_t +cairo_has_current_point (cairo_t *cr); +Returns whether a current point is defined on the current path. +See cairo_get_current_point() for details on the current point. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + whether a current point is defined. + +Since 1.6 -cairo_get_current_point () +cairo_get_current_point () cairo_get_current_point -void cairo_get_current_point (cairo_t *cr, - double *x, - double *y); - -Gets the current point of the current path, which is -conceptually the final point reached by the path so far. - - -The current point is returned in the user-space coordinate -system. If there is no defined current point or if cr is in an -error status, x and y will both be set to 0.0. It is possible to -check this in advance with cairo_has_current_point(). - - -Most path construction functions alter the current point. See the +void +cairo_get_current_point (cairo_t *cr, + double *x, + double *y); +Gets the current point of the current path, which is +conceptually the final point reached by the path so far. +The current point is returned in the user-space coordinate +system. If there is no defined current point or if cr + is in an +error status, x + and y + will both be set to 0.0. It is possible to +check this in advance with cairo_has_current_point(). +Most path construction functions alter the current point. See the following for details on how they affect the current point: cairo_new_path(), cairo_new_sub_path(), cairo_append_path(), cairo_close_path(), cairo_move_to(), cairo_line_to(), cairo_curve_to(), cairo_rel_move_to(), cairo_rel_line_to(), cairo_rel_curve_to(), cairo_arc(), cairo_arc_negative(), cairo_rectangle(), -cairo_text_path(), cairo_glyph_path(), cairo_stroke_to_path(). - - -Some functions use and alter the current point but do not +cairo_text_path(), cairo_glyph_path(), cairo_stroke_to_path(). +Some functions use and alter the current point but do not otherwise change current path: -cairo_show_text(). - - -Some functions unset the current path and as a result, current point: -cairo_fill(), cairo_stroke(). - -cr : -a cairo context -x : -return value for X coordinate of the current point -y : -return value for Y coordinate of the current point -Since 1.0 +cairo_show_text(). +Some functions unset the current path and as a result, current point: +cairo_fill(), cairo_stroke(). + +Parameters + + + + + + +cr +a cairo context + +x +return value for X coordinate of the current point + +y +return value for Y coordinate of the current point + + +Since 1.0 -cairo_new_path () +cairo_new_path () cairo_new_path -void cairo_new_path (cairo_t *cr); - -Clears the current path. After this call there will be no path and -no current point. - -cr : -a cairo context -Since 1.0 +void +cairo_new_path (cairo_t *cr); +Clears the current path. After this call there will be no path and +no current point. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_new_sub_path () +cairo_new_sub_path () cairo_new_sub_path -void cairo_new_sub_path (cairo_t *cr); - -Begin a new sub-path. Note that the existing path is not -affected. After this call there will be no current point. - - -In many cases, this call is not needed since new sub-paths are -frequently started with cairo_move_to(). - - -A call to cairo_new_sub_path() is particularly useful when +void +cairo_new_sub_path (cairo_t *cr); +Begin a new sub-path. Note that the existing path is not +affected. After this call there will be no current point. +In many cases, this call is not needed since new sub-paths are +frequently started with cairo_move_to(). +A call to cairo_new_sub_path() is particularly useful when beginning a new sub-path with one of the cairo_arc() calls. This makes things easier as it is no longer necessary to manually compute the arc's initial coordinates for a call to -cairo_move_to(). - -cr : -a cairo context -Since 1.2 +cairo_move_to(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.2 -cairo_close_path () +cairo_close_path () cairo_close_path -void cairo_close_path (cairo_t *cr); - -Adds a line segment to the path from the current point to the +void +cairo_close_path (cairo_t *cr); +Adds a line segment to the path from the current point to the beginning of the current sub-path, (the most recent point passed to cairo_move_to()), and closes this sub-path. After this call the -current point will be at the joined endpoint of the sub-path. - - -The behavior of cairo_close_path() is distinct from simply calling +current point will be at the joined endpoint of the sub-path. +The behavior of cairo_close_path() is distinct from simply calling cairo_line_to() with the equivalent coordinate in the case of stroking. When a closed sub-path is stroked, there are no caps on the ends of the sub-path. Instead, there is a line join connecting -the final and initial segments of the sub-path. - - -If there is no current point before the call to cairo_close_path(), -this function will have no effect. - - -Note: As of cairo version 1.2.4 any call to cairo_close_path() will +the final and initial segments of the sub-path. +If there is no current point before the call to cairo_close_path(), +this function will have no effect. +Note: As of cairo version 1.2.4 any call to cairo_close_path() will place an explicit MOVE_TO element into the path immediately after the CLOSE_PATH element, (which can be seen in cairo_copy_path() for example). This can simplify path processing in some cases as it may not be necessary to save the "last move_to point" during processing as the MOVE_TO immediately after the CLOSE_PATH will provide that -point. - -cr : -a cairo context -Since 1.0 +point. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_arc () +cairo_arc () cairo_arc -void cairo_arc (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); - -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. - - -If there is a current point, an initial line segment will be added +void +cairo_arc (cairo_t *cr, + double xc, + double yc, + double radius, + double angle1, + double angle2); +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 +. +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 arc. If this initial line is undesired, it can be avoided by -calling cairo_new_sub_path() before calling cairo_arc(). - - -Angles are measured in radians. An angle of 0.0 is in the direction +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. - - -(To convert from degrees to radians, use degrees * (M_PI / -180.).) - - -This function gives the arc in the direction of increasing angles; +a clockwise direction. +(To convert from degrees to radians, use degrees * (M_PI / +180.).) +This function gives the arc in the direction of increasing angles; see cairo_arc_negative() to get the arc in the direction of -decreasing angles. - - -The arc is circular in user space. To achieve an elliptical arc, +decreasing angles. +The arc is circular in user space. To achieve an elliptical arc, you can scale the current transformation matrix by different amounts in the X and Y directions. For example, to draw an ellipse -in the box given by x, y, width, height: - - +in the box given by x +, y +, width +, height +: cairo_save (cr); cairo_translate (cr, x + width / 2., y + height / 2.); @@ -535,142 +451,229 @@ cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI); cairo_restore (cr); - -cr : -a cairo context -xc : -X position of the center of the arc -yc : -Y position of the center of the arc -radius : -the radius of the arc -angle1 : -the start angle, in radians -angle2 : -the end angle, in radians -Since 1.0 + +Parameters + + + + + + +cr +a cairo context + +xc +X position of the center of the arc + +yc +Y position of the center of the arc + +radius +the radius of the arc + +angle1 +the start angle, in radians + +angle2 +the end angle, in radians + + +Since 1.0 -cairo_arc_negative () +cairo_arc_negative () cairo_arc_negative -void cairo_arc_negative (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); - -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. - - -See cairo_arc() for more details. This function differs only in the -direction of the arc between the two angles. - -cr : -a cairo context -xc : -X position of the center of the arc -yc : -Y position of the center of the arc -radius : -the radius of the arc -angle1 : -the start angle, in radians -angle2 : -the end angle, in radians -Since 1.0 +void +cairo_arc_negative (cairo_t *cr, + double xc, + double yc, + double radius, + double angle1, + double angle2); +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 +. +See cairo_arc() for more details. This function differs only in the +direction of the arc between the two angles. + +Parameters + + + + + + +cr +a cairo context + +xc +X position of the center of the arc + +yc +Y position of the center of the arc + +radius +the radius of the arc + +angle1 +the start angle, in radians + +angle2 +the end angle, in radians + + +Since 1.0 -cairo_curve_to () +cairo_curve_to () cairo_curve_to -void cairo_curve_to (cairo_t *cr, - double x1, - double y1, - double x2, - double y2, - double x3, - double y3); - -Adds a cubic Bézier spline to the path from the current point to -position (x3, y3) in user-space coordinates, using (x1, y1) and -(x2, y2) as the control points. After this call the current point -will be (x3, y3). - - -If there is no current point before the call to cairo_curve_to() +void +cairo_curve_to (cairo_t *cr, + double x1, + double y1, + double x2, + double y2, + double x3, + double y3); +Adds a cubic Bézier spline to the path from the current point to +position (x3 +, y3 +) in user-space coordinates, using (x1 +, y1 +) and +(x2 +, y2 +) as the control points. After this call the current point +will be (x3 +, y3 +). +If there is no current point before the call to cairo_curve_to() this function will behave as if preceded by a call to -cairo_move_to(cr, x1, y1). - -cr : -a cairo context -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.0 +cairo_move_to(cr +, x1 +, y1 +). + +Parameters + + + + + + +cr +a cairo context + +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.0 -cairo_line_to () +cairo_line_to () cairo_line_to -void cairo_line_to (cairo_t *cr, - double x, - double y); - -Adds a line to the path from the current point to position (x, y) +void +cairo_line_to (cairo_t *cr, + double x, + double y); +Adds a line to the path from the current point to position (x +, y +) in user-space coordinates. After this call the current point -will be (x, y). - - -If there is no current point before the call to cairo_line_to() -this function will behave as cairo_move_to(cr, x, y). - -cr : -a cairo context -x : -the X coordinate of the end of the new line -y : -the Y coordinate of the end of the new line -Since 1.0 +will be (x +, y +). +If there is no current point before the call to cairo_line_to() +this function will behave as cairo_move_to(cr +, x +, y +). + +Parameters + + + + + + +cr +a cairo context + +x +the X coordinate of the end of the new line + +y +the Y coordinate of the end of the new line + + +Since 1.0 -cairo_move_to () +cairo_move_to () cairo_move_to -void cairo_move_to (cairo_t *cr, - double x, - double y); - -Begin a new sub-path. After this call the current point will be (x, -y). - -cr : -a cairo context -x : -the X coordinate of the new position -y : -the Y coordinate of the new position -Since 1.0 +void +cairo_move_to (cairo_t *cr, + double x, + double y); +Begin a new sub-path. After this call the current point will be (x +, +y +). + +Parameters + + + + + + +cr +a cairo context + +x +the X coordinate of the new position + +y +the Y coordinate of the new position + + +Since 1.0 -cairo_rectangle () +cairo_rectangle () cairo_rectangle -void cairo_rectangle (cairo_t *cr, - double x, - double y, - double width, - double height); - -Adds a closed sub-path rectangle of the given size to the current -path at position (x, y) in user-space coordinates. - - -This function is logically equivalent to: +void +cairo_rectangle (cairo_t *cr, + double x, + double y, + double width, + double height); +Adds a closed sub-path rectangle of the given size to the current +path at position (x +, y +) in user-space coordinates. +This function is logically equivalent to: cairo_move_to (cr, x, y); cairo_rel_line_to (cr, width, 0); @@ -678,210 +681,457 @@ cairo_rel_line_to (cr, -width, 0); cairo_close_path (cr); - -cr : -a cairo context -x : -the X coordinate of the top left corner of the rectangle -y : -the Y coordinate to the top left corner of the rectangle -width : -the width of the rectangle -height : -the height of the rectangle -Since 1.0 + +Parameters + + + + + + +cr +a cairo context + +x +the X coordinate of the top left corner of the rectangle + +y +the Y coordinate to the top left corner of the rectangle + +width +the width of the rectangle + +height +the height of the rectangle + + +Since 1.0 -cairo_glyph_path () +cairo_glyph_path () cairo_glyph_path -void cairo_glyph_path (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs); - -Adds closed paths for the glyphs to the current path. The generated +void +cairo_glyph_path (cairo_t *cr, + const cairo_glyph_t *glyphs, + int num_glyphs); +Adds closed paths for the glyphs to the current path. The generated path if filled, achieves an effect similar to that of -cairo_show_glyphs(). - -cr : -a cairo context -glyphs : -array of glyphs to show -num_glyphs : -number of glyphs to show -Since 1.0 +cairo_show_glyphs(). + +Parameters + + + + + + +cr +a cairo context + +glyphs +array of glyphs to show + +num_glyphs +number of glyphs to show + + +Since 1.0 -cairo_text_path () +cairo_text_path () cairo_text_path -void cairo_text_path (cairo_t *cr, - const char *utf8); - -Adds closed paths for text to the current path. The generated +void +cairo_text_path (cairo_t *cr, + const char *utf8); +Adds closed paths for text to the current path. The generated path if filled, achieves an effect similar to that of -cairo_show_text(). - - -Text conversion and positioning is done similar to cairo_show_text(). - - -Like cairo_show_text(), After this call the current point is +cairo_show_text(). +Text conversion and positioning is done similar to cairo_show_text(). +Like cairo_show_text(), After this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. This allows for chaining multiple calls to to cairo_text_path() -without having to set current point in between. - - -Note: The cairo_text_path() function call is part of what the cairo +without having to set current point in between. +Note: The cairo_text_path() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for serious text-using applications. See cairo_glyph_path() for the -"real" text path API in cairo. - -cr : -a cairo context -utf8 : -a NUL-terminated string of text encoded in UTF-8, or NULL -Since 1.0 +"real" text path API in cairo. + +Parameters + + + + + + +cr +a cairo context + +utf8 +a NUL-terminated string of text encoded in UTF-8, or NULL + + +Since 1.0 -cairo_rel_curve_to () +cairo_rel_curve_to () cairo_rel_curve_to -void cairo_rel_curve_to (cairo_t *cr, - double dx1, - double dy1, - double dx2, - double dy2, - double dx3, - double dy3); - -Relative-coordinate version of cairo_curve_to(). All offsets are +void +cairo_rel_curve_to (cairo_t *cr, + double dx1, + double dy1, + double dx2, + double dy2, + double dx3, + double dy3); +Relative-coordinate version of cairo_curve_to(). All offsets are relative to the current point. Adds a cubic Bézier spline to the path from the current point to a point offset from the current -point by (dx3, dy3), using points offset by (dx1, dy1) and -(dx2, dy2) as the control points. After this call the current -point will be offset by (dx3, dy3). - - -Given a current point of (x, y), cairo_rel_curve_to(cr, dx1, -dy1, dx2, dy2, dx3, dy3) is logically equivalent to -cairo_curve_to(cr, x+dx1, y+dy1, x+dx2, y+dy2, x+dx3, y+dy3). - - -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. - -cr : -a cairo context -dx1 : -the X offset to the first control point -dy1 : -the Y offset to the first control point -dx2 : -the X offset to the second control point -dy2 : -the Y offset to the second control point -dx3 : -the X offset to the end of the curve -dy3 : -the Y offset to the end of the curve -Since 1.0 +point by (dx3 +, dy3 +), using points offset by (dx1 +, dy1 +) and +(dx2 +, dy2 +) as the control points. After this call the current +point will be offset by (dx3 +, dy3 +). +Given a current point of (x, y), cairo_rel_curve_to(cr +, dx1 +, +dy1 +, dx2 +, dy2 +, dx3 +, dy3 +) is logically equivalent to +cairo_curve_to(cr +, x+dx1 +, y+dy1 +, x+dx2 +, y+dy2 +, x+dx3 +, y+dy3 +). +It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT. + +Parameters + + + + + + +cr +a cairo context + +dx1 +the X offset to the first control point + +dy1 +the Y offset to the first control point + +dx2 +the X offset to the second control point + +dy2 +the Y offset to the second control point + +dx3 +the X offset to the end of the curve + +dy3 +the Y offset to the end of the curve + + +Since 1.0 -cairo_rel_line_to () +cairo_rel_line_to () cairo_rel_line_to -void cairo_rel_line_to (cairo_t *cr, - double dx, - double dy); - -Relative-coordinate version of cairo_line_to(). Adds a line to the +void +cairo_rel_line_to (cairo_t *cr, + double dx, + double dy); +Relative-coordinate version of cairo_line_to(). Adds a line to the path from the current point to a point that is offset from the -current point by (dx, dy) in user space. After this call the -current point will be offset by (dx, dy). - - -Given a current point of (x, y), cairo_rel_line_to(cr, dx, dy) -is logically equivalent to cairo_line_to(cr, x + dx, y + dy). - - -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. - -cr : -a cairo context -dx : -the X offset to the end of the new line -dy : -the Y offset to the end of the new line -Since 1.0 +current point by (dx +, dy +) in user space. After this call the +current point will be offset by (dx +, dy +). +Given a current point of (x, y), cairo_rel_line_to(cr +, dx +, dy +) +is logically equivalent to cairo_line_to(cr +, x + dx +, y + dy +). +It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT. + +Parameters + + + + + + +cr +a cairo context + +dx +the X offset to the end of the new line + +dy +the Y offset to the end of the new line + + +Since 1.0 -cairo_rel_move_to () +cairo_rel_move_to () cairo_rel_move_to -void cairo_rel_move_to (cairo_t *cr, - double dx, - double dy); - -Begin a new sub-path. After this call the current point will offset -by (x, y). - - -Given a current point of (x, y), cairo_rel_move_to(cr, dx, dy) -is logically equivalent to cairo_move_to(cr, x + dx, y + dy). - - -It is an error to call this function with no current point. Doing -so will cause cr to shutdown with a status of -CAIRO_STATUS_NO_CURRENT_POINT. - -cr : -a cairo context -dx : -the X offset -dy : -the Y offset -Since 1.0 +void +cairo_rel_move_to (cairo_t *cr, + double dx, + double dy); +Begin a new sub-path. After this call the current point will offset +by (x +, y +). +Given a current point of (x, y), cairo_rel_move_to(cr +, dx +, dy +) +is logically equivalent to cairo_move_to(cr +, x + dx +, y + dy +). +It is an error to call this function with no current point. Doing +so will cause cr + to shutdown with a status of +CAIRO_STATUS_NO_CURRENT_POINT. + +Parameters + + + + + + +cr +a cairo context + +dx +the X offset + +dy +the Y offset + + +Since 1.0 -cairo_path_extents () +cairo_path_extents () cairo_path_extents -void cairo_path_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); - -Computes a bounding box in user-space coordinates covering the +void +cairo_path_extents (cairo_t *cr, + double *x1, + double *y1, + double *x2, + double *y2); +Computes a bounding box in user-space coordinates covering the points on the current path. If the current path is empty, returns an empty rectangle ((0,0), (0,0)). Stroke parameters, fill rule, -surface dimensions and clipping are not taken into account. - - -Contrast with cairo_fill_extents() and cairo_stroke_extents() which +surface dimensions and clipping are not taken into account. +Contrast with cairo_fill_extents() and cairo_stroke_extents() which return the extents of only the area that would be "inked" by -the corresponding drawing operations. - - -The result of cairo_path_extents() is defined as equivalent to the +the corresponding drawing operations. +The result of cairo_path_extents() is defined as equivalent to the limit of cairo_stroke_extents() with CAIRO_LINE_CAP_ROUND as the line width approaches 0.0, (but never reaching the empty-rectangle -returned by cairo_stroke_extents() for a line width of 0.0). - - -Specifically, this means that zero-area sub-paths such as +returned by cairo_stroke_extents() for a line width of 0.0). +Specifically, this means that zero-area sub-paths such as cairo_move_to();cairo_line_to() segments, (even degenerate cases where the coordinates to both calls are identical), will be considered as contributing to the extents. However, a lone cairo_move_to() will not contribute to the results of -cairo_path_extents(). - -cr : -a cairo context -x1 : -left of the resulting extents -y1 : -top of the resulting extents -x2 : -right of the resulting extents -y2 : -bottom of the resulting extents -Since 1.6 +cairo_path_extents(). + +Parameters + + + + + + +cr +a cairo context + +x1 +left of the resulting extents + +y1 +top of the resulting extents + +x2 +right of the resulting extents + +y2 +bottom of the resulting extents + + +Since 1.6 + + + +Types and Values + +cairo_path_t +cairo_path_t +typedef struct { + cairo_status_t status; + cairo_path_data_t *data; + int num_data; +} cairo_path_t; + +A data structure for holding a path. This data structure serves as +the return value for cairo_copy_path() and +cairo_copy_path_flat() as well the input value for +cairo_append_path(). +See cairo_path_data_t for hints on how to iterate over the +actual data within the path. +The num_data member gives the number of elements in the data +array. This number is larger than the number of independent path +portions (defined in cairo_path_data_type_t), since the data +includes both headers and coordinates for each portion. + +Members + + + + + + +cairo_status_t status; +the current error status +the current error status + + +cairo_path_data_t *data; +the elements in the path +the elements in the path + + +int num_data; +the number of elements in the data array +the number of elements in the data array + + + + +Since 1.0 + +union cairo_path_data_t +cairo_path_data_t +cairo_path_data_t is used to represent the path data inside a +cairo_path_t. +The data structure is designed to try to balance the demands of +efficiency and ease-of-use. A path is represented as an array of +cairo_path_data_t, which is a union of headers and points. +Each portion of the path is represented by one or more elements in +the array, (one header followed by 0 or more points). The length +value of the header is the number of array elements for the current +portion including the header, (ie. length == 1 + # of points), and +where the number of points for each element type is as follows: + + %CAIRO_PATH_MOVE_TO: 1 point + %CAIRO_PATH_LINE_TO: 1 point + %CAIRO_PATH_CURVE_TO: 3 points + %CAIRO_PATH_CLOSE_PATH: 0 points + +The semantics and ordering of the coordinate values are consistent +with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and +cairo_close_path(). +Here is sample code for iterating through a cairo_path_t: + + int i; + cairo_path_t *path; + cairo_path_data_t *data; +  + path = cairo_copy_path (cr); +  + for (i=0; i < path->num_data; i += path->data[i].header.length) { + data = &path->data[i]; + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + do_move_to_things (data[1].point.x, data[1].point.y); + break; + case CAIRO_PATH_LINE_TO: + do_line_to_things (data[1].point.x, data[1].point.y); + break; + case CAIRO_PATH_CURVE_TO: + do_curve_to_things (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: + do_close_path_things (); + break; + } + } + cairo_path_destroy (path); + +As of cairo 1.4, cairo does not mind if there are more elements in +a portion of the path than needed. Such elements can be used by +users of the cairo API to hold extra values in the path data +structure. For this reason, it is recommended that applications +always use data->header.length to +iterate over the path data, instead of hardcoding the number of +elements for each element type. +Since 1.0 + +enum cairo_path_data_type_t +cairo_path_data_type_t +cairo_path_data_t is used to describe the type of one portion +of a path when represented as a cairo_path_t. +See cairo_path_data_t for details. + +Members + + + + + + +CAIRO_PATH_MOVE_TO +A move-to operation, since 1.0 + + + +CAIRO_PATH_LINE_TO +A line-to operation, since 1.0 + + + +CAIRO_PATH_CURVE_TO +A curve-to operation, since 1.0 + + + +CAIRO_PATH_CLOSE_PATH +A close-path operation, since 1.0 + + + + +Since 1.0 diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-pattern.xml cairo-1.14.2/doc/public/xml/cairo-pattern.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-pattern.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-pattern.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,608 +16,730 @@ Sources for drawing - -Synopsis + +Functions + + + + + +void +cairo_pattern_add_color_stop_rgb () +void +cairo_pattern_add_color_stop_rgba () +cairo_status_t +cairo_pattern_get_color_stop_count () +cairo_status_t +cairo_pattern_get_color_stop_rgba () +cairo_pattern_t * +cairo_pattern_create_rgb () +cairo_pattern_t * +cairo_pattern_create_rgba () +cairo_status_t +cairo_pattern_get_rgba () +cairo_pattern_t * +cairo_pattern_create_for_surface () +cairo_status_t +cairo_pattern_get_surface () +cairo_pattern_t * +cairo_pattern_create_linear () +cairo_status_t +cairo_pattern_get_linear_points () +cairo_pattern_t * +cairo_pattern_create_radial () +cairo_status_t +cairo_pattern_get_radial_circles () +cairo_pattern_t * +cairo_pattern_create_mesh () +void +cairo_mesh_pattern_begin_patch () +void +cairo_mesh_pattern_end_patch () +void +cairo_mesh_pattern_move_to () +void +cairo_mesh_pattern_line_to () +void +cairo_mesh_pattern_curve_to () +void +cairo_mesh_pattern_set_control_point () +void +cairo_mesh_pattern_set_corner_color_rgb () +void +cairo_mesh_pattern_set_corner_color_rgba () +cairo_status_t +cairo_mesh_pattern_get_patch_count () +cairo_path_t * +cairo_mesh_pattern_get_path () +cairo_status_t +cairo_mesh_pattern_get_control_point () +cairo_status_t +cairo_mesh_pattern_get_corner_color_rgba () +cairo_pattern_t * +cairo_pattern_reference () +void +cairo_pattern_destroy () +cairo_status_t +cairo_pattern_status () +void +cairo_pattern_set_extend () +cairo_extend_t +cairo_pattern_get_extend () +void +cairo_pattern_set_filter () +cairo_filter_t +cairo_pattern_get_filter () +void +cairo_pattern_set_matrix () +void +cairo_pattern_get_matrix () +cairo_pattern_type_t +cairo_pattern_get_type () +unsigned int +cairo_pattern_get_reference_count () +cairo_status_t +cairo_pattern_set_user_data () +void * +cairo_pattern_get_user_data () + + + + + + +Types and Values + + + + + +typedefcairo_pattern_t +enumcairo_extend_t +enumcairo_filter_t +enumcairo_pattern_type_t + + + + + + +Object Hierarchy + + + -typedef cairo_pattern_t; -void cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue); -void cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue, - double alpha); -cairo_status_t cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count); -cairo_status_t cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, - double *offset, - double *red, - double *green, - double *blue, - double *alpha); -cairo_pattern_t * cairo_pattern_create_rgb (double red, - double green, - double blue); -cairo_pattern_t * cairo_pattern_create_rgba (double red, - double green, - double blue, - double alpha); -cairo_status_t cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, - double *green, - double *blue, - double *alpha); -cairo_pattern_t * cairo_pattern_create_for_surface (cairo_surface_t *surface); -cairo_status_t cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface); -cairo_pattern_t * cairo_pattern_create_linear (double x0, - double y0, - double x1, - double y1); -cairo_status_t cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, - double *y0, - double *x1, - double *y1); -cairo_pattern_t * cairo_pattern_create_radial (double cx0, - double cy0, - double radius0, - double cx1, - double cy1, - double radius1); -cairo_status_t cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, - double *y0, - double *r0, - double *x1, - double *y1, - double *r1); -cairo_pattern_t * cairo_pattern_create_mesh (void); -void cairo_mesh_pattern_begin_patch (cairo_pattern_t *pattern); -void cairo_mesh_pattern_end_patch (cairo_pattern_t *pattern); -void cairo_mesh_pattern_move_to (cairo_pattern_t *pattern, - double x, - double y); -void cairo_mesh_pattern_line_to (cairo_pattern_t *pattern, - double x, - double y); -void cairo_mesh_pattern_curve_to (cairo_pattern_t *pattern, - double x1, - double y1, - double x2, - double y2, - double x3, - double y3); -void cairo_mesh_pattern_set_control_point - (cairo_pattern_t *pattern, - unsigned int point_num, - double x, - double y); -void cairo_mesh_pattern_set_corner_color_rgb - (cairo_pattern_t *pattern, - unsigned int corner_num, - double red, - double green, - double blue); -void cairo_mesh_pattern_set_corner_color_rgba - (cairo_pattern_t *pattern, - unsigned int corner_num, - double red, - double green, - double blue, - double alpha); -cairo_status_t cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern, - unsigned int *count); -cairo_path_t * cairo_mesh_pattern_get_path (cairo_pattern_t *pattern, - unsigned int patch_num); -cairo_status_t cairo_mesh_pattern_get_control_point - (cairo_pattern_t *pattern, - unsigned int patch_num, - unsigned int point_num, - double *x, - double *y); -cairo_status_t cairo_mesh_pattern_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); -enum cairo_extend_t; -void cairo_pattern_set_extend (cairo_pattern_t *pattern, - cairo_extend_t extend); -cairo_extend_t cairo_pattern_get_extend (cairo_pattern_t *pattern); -enum cairo_filter_t; -void cairo_pattern_set_filter (cairo_pattern_t *pattern, - cairo_filter_t filter); -cairo_filter_t cairo_pattern_get_filter (cairo_pattern_t *pattern); -void cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix); -void cairo_pattern_get_matrix (cairo_pattern_t *pattern, - cairo_matrix_t *matrix); -enum cairo_pattern_type_t; -cairo_pattern_type_t cairo_pattern_get_type (cairo_pattern_t *pattern); -unsigned int cairo_pattern_get_reference_count (cairo_pattern_t *pattern); -cairo_status_t cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key); - - Description - -cairo_pattern_t is the paint with which cairo draws. -The primary use of patterns is as the source for all cairo drawing -operations, although they can also be used as masks, that is, as the -brush too. - - -A cairo pattern is created by using one of the many constructors, +cairo_pattern_t is the paint with which cairo draws. +The primary use of patterns is as the source for all cairo drawing +operations, although they can also be used as masks, that is, as the +brush too. +A cairo pattern is created by using one of the many constructors, of the form cairo_pattern_create_type() or implicitly through cairo_set_source_type() -functions. - +functions. + - -Details - -cairo_pattern_t -cairo_pattern_t -typedef struct _cairo_pattern cairo_pattern_t; - - -A cairo_pattern_t represents a source when drawing onto a -surface. There are different subtypes of cairo_pattern_t, -for different types of sources; for example, -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; -for example cairo_set_source_rgb(). - - -The type of a pattern can be queried with cairo_pattern_get_type(). - - -Memory management of cairo_pattern_t is done with -cairo_pattern_reference() and cairo_pattern_destroy(). -Since 1.0 + +Functions -cairo_pattern_add_color_stop_rgb () +cairo_pattern_add_color_stop_rgb () cairo_pattern_add_color_stop_rgb -void cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue); - -Adds an opaque color stop to a gradient pattern. The offset +void +cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, + double offset, + double red, + double green, + double blue); +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, +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 +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. - -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 -Since 1.0 +with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH. + +Parameters + + + + + + +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 + + +Since 1.0 -cairo_pattern_add_color_stop_rgba () +cairo_pattern_add_color_stop_rgba () cairo_pattern_add_color_stop_rgba -void cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue, - double alpha); - -Adds a translucent color stop to a gradient pattern. The offset +void +cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, + double offset, + double red, + double green, + double blue, + double alpha); +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, +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 +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. - -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 -Since 1.0 +with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH. + +Parameters + + + + + + +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 + + +Since 1.0 -cairo_pattern_get_color_stop_count () +cairo_pattern_get_color_stop_count () cairo_pattern_get_color_stop_count -cairo_status_t cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count); - -Gets the number of color stops specified in the given gradient -pattern. - -pattern : -a cairo_pattern_t -count : -return value for the number of color stops, or NULL -Returns :CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a gradient -pattern. -Since 1.4 +cairo_status_t +cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, + int *count); +Gets the number of color stops specified in the given gradient +pattern. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +count +return value for the number of color stops, or NULL + + + +Returns + CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a gradient +pattern. + +Since 1.4 -cairo_pattern_get_color_stop_rgba () +cairo_pattern_get_color_stop_rgba () cairo_pattern_get_color_stop_rgba -cairo_status_t cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, - double *offset, - double *red, - double *green, - double *blue, - double *alpha); - -Gets the color and offset information at the given index for a -gradient pattern. Values of index are 0 to 1 less than the number -returned by cairo_pattern_get_color_stop_count(). - -pattern : -a cairo_pattern_t -index : -index of the stop to return data for -offset : -return value for the offset of the stop, or NULL -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 index is not valid for the given pattern. If the pattern is +cairo_status_t +cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, + int index, + double *offset, + double *red, + double *green, + double *blue, + double *alpha); +Gets the color and offset information at the given index + for a +gradient pattern. Values of index + range from 0 to n-1 +where n is the number returned +by cairo_pattern_get_color_stop_count(). + +Parameters + + + + + + +pattern +a cairo_pattern_t + +index +index of the stop to return data for + +offset +return value for the offset of the stop, or NULL + +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 index +is not valid for the given pattern. If the pattern is not a gradient pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is -returned. -Since 1.4 +returned. + +Since 1.4 -cairo_pattern_create_rgb () +cairo_pattern_create_rgb () cairo_pattern_create_rgb -cairo_pattern_t * cairo_pattern_create_rgb (double red, - double green, - double blue); - -Creates a new cairo_pattern_t corresponding to an opaque color. The +cairo_pattern_t * +cairo_pattern_create_rgb (double red, + double green, + double blue); +Creates a new cairo_pattern_t corresponding to an opaque color. The color components are floating point numbers in the range 0 to 1. If the values passed in are outside that range, they will be -clamped. - -red : -red component of the color -green : -green component of the color -blue : -blue component of the color -Returns :the newly created cairo_pattern_t if successful, or +clamped. + +Parameters + + + + + + +red +red component of the color + +green +green component of the color + +blue +blue component of the color + + + +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 +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.0 +the status of a pattern use cairo_pattern_status(). + +Since 1.0 -cairo_pattern_create_rgba () +cairo_pattern_create_rgba () cairo_pattern_create_rgba -cairo_pattern_t * cairo_pattern_create_rgba (double red, - double green, - double blue, - double alpha); - -Creates a new cairo_pattern_t corresponding to a translucent color. -The color components are floating point numbers in the range 0 to -1. If the values passed in are outside that range, they will be -clamped. - -red : -red component of the color -green : -green component of the color -blue : -blue component of the color -alpha : -alpha component of the color -Returns :the newly created cairo_pattern_t if successful, or +cairo_pattern_t * +cairo_pattern_create_rgba (double red, + double green, + double blue, + double alpha); +Creates a new cairo_pattern_t corresponding to a translucent color. +The color components are floating point numbers in the range 0 to + +If the values passed in are outside that range, they will be +clamped. + + +Parameters + + + + + + +red +red component of the color + +green +green component of the color + +blue +blue component of the color + +alpha +alpha component of the color + + + +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 +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.0 +the status of a pattern use cairo_pattern_status(). + +Since 1.0 -cairo_pattern_get_rgba () +cairo_pattern_get_rgba () cairo_pattern_get_rgba -cairo_status_t cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, - double *green, - double *blue, - double *alpha); - -Gets the solid color for a solid color pattern. - -pattern : -a cairo_pattern_t -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_t +cairo_pattern_get_rgba (cairo_pattern_t *pattern, + double *red, + double *green, + double *blue, + double *alpha); +Gets the solid color for a solid color pattern. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +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_PATTERN_TYPE_MISMATCH if the pattern is not a solid -color pattern. -Since 1.4 +color pattern. + +Since 1.4 -cairo_pattern_create_for_surface () +cairo_pattern_create_for_surface () cairo_pattern_create_for_surface -cairo_pattern_t * cairo_pattern_create_for_surface (cairo_surface_t *surface); - -Create a new cairo_pattern_t for the given surface. - -surface : -the surface -Returns :the newly created cairo_pattern_t if successful, or +cairo_pattern_t * +cairo_pattern_create_for_surface (cairo_surface_t *surface); +Create a new cairo_pattern_t for the given surface. + +Parameters + + + + + + +surface +the surface + + + +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 +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.0 +the status of a pattern use cairo_pattern_status(). + +Since 1.0 -cairo_pattern_get_surface () +cairo_pattern_get_surface () cairo_pattern_get_surface -cairo_status_t cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface); - -Gets the surface of a surface pattern. The reference returned in -surface is owned by the pattern; the caller should call -cairo_surface_reference() if the surface is to be retained. - -pattern : -a cairo_pattern_t -surface : -return value for surface of pattern, or NULL -Returns :CAIRO_STATUS_SUCCESS, or +cairo_status_t +cairo_pattern_get_surface (cairo_pattern_t *pattern, + cairo_surface_t **surface); +Gets the surface of a surface pattern. The reference returned in +surface + is owned by the pattern; the caller should call +cairo_surface_reference() if the surface is to be retained. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +surface +return value for surface of pattern, or NULL + + + +Returns + CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a surface -pattern. -Since 1.4 +pattern. + +Since 1.4 -cairo_pattern_create_linear () +cairo_pattern_create_linear () cairo_pattern_create_linear -cairo_pattern_t * cairo_pattern_create_linear (double x0, - double y0, - double x1, - double y1); - -Create a new linear gradient cairo_pattern_t along the line defined +cairo_pattern_t * +cairo_pattern_create_linear (double x0, + double y0, + double x1, + double y1); +Create a new linear gradient cairo_pattern_t along the line defined by (x0, y0) and (x1, y1). Before using the gradient pattern, a number of color stops should be defined using cairo_pattern_add_color_stop_rgb() or -cairo_pattern_add_color_stop_rgba(). - - -Note: The coordinates here are in pattern space. For a new pattern, +cairo_pattern_add_color_stop_rgba(). +Note: The coordinates here are 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(). - -x0 : -x coordinate of the start point -y0 : -y coordinate of the start point -x1 : -x coordinate of the end point -y1 : -y coordinate of the end point -Returns :the newly created cairo_pattern_t if successful, or +between the spaces can be changed with cairo_pattern_set_matrix(). + +Parameters + + + + + + +x0 +x coordinate of the start point + +y0 +y coordinate of the start point + +x1 +x coordinate of the end point + +y1 +y coordinate of the end point + + + +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 +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.0 +the status of a pattern use cairo_pattern_status(). + +Since 1.0 -cairo_pattern_get_linear_points () +cairo_pattern_get_linear_points () cairo_pattern_get_linear_points -cairo_status_t cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, - double *y0, - double *x1, - double *y1); - -Gets the gradient endpoints for a linear gradient. - -pattern : -a cairo_pattern_t -x0 : -return value for the x coordinate of the first point, or NULL -y0 : -return value for the y coordinate of the first point, or NULL -x1 : -return value for the x coordinate of the second point, or NULL -y1 : -return value for the y coordinate of the second point, or NULL -Returns :CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a linear -gradient pattern. -Since 1.4 +cairo_status_t +cairo_pattern_get_linear_points (cairo_pattern_t *pattern, + double *x0, + double *y0, + double *x1, + double *y1); +Gets the gradient endpoints for a linear gradient. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +x0 +return value for the x coordinate of the first point, or NULL + +y0 +return value for the y coordinate of the first point, or NULL + +x1 +return value for the x coordinate of the second point, or NULL + +y1 +return value for the y coordinate of the second point, or NULL + + + +Returns + CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a linear +gradient pattern. + +Since 1.4 -cairo_pattern_create_radial () +cairo_pattern_create_radial () cairo_pattern_create_radial -cairo_pattern_t * cairo_pattern_create_radial (double cx0, - double cy0, - double radius0, - double cx1, - double cy1, - double radius1); - -Creates a new radial gradient cairo_pattern_t between the two +cairo_pattern_t * +cairo_pattern_create_radial (double cx0, + double cy0, + double radius0, + double cx1, + double cy1, + double radius1); +Creates a new radial gradient cairo_pattern_t between the two circles defined by (cx0, cy0, radius0) and (cx1, cy1, radius1). Before using the gradient pattern, a number of color stops should be defined using cairo_pattern_add_color_stop_rgb() or -cairo_pattern_add_color_stop_rgba(). - - -Note: The coordinates here are in pattern space. For a new pattern, +cairo_pattern_add_color_stop_rgba(). +Note: The coordinates here are 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(). - -cx0 : -x coordinate for the center of the start circle -cy0 : -y coordinate for the center of the start circle -radius0 : -radius of the start circle -cx1 : -x coordinate for the center of the end circle -cy1 : -y coordinate for the center of the end circle -radius1 : -radius of the end circle -Returns :the newly created cairo_pattern_t if successful, or +between the spaces can be changed with cairo_pattern_set_matrix(). + +Parameters + + + + + + +cx0 +x coordinate for the center of the start circle + +cy0 +y coordinate for the center of the start circle + +radius0 +radius of the start circle + +cx1 +x coordinate for the center of the end circle + +cy1 +y coordinate for the center of the end circle + +radius1 +radius of the end circle + + + +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 +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.0 +the status of a pattern use cairo_pattern_status(). + +Since 1.0 -cairo_pattern_get_radial_circles () +cairo_pattern_get_radial_circles () cairo_pattern_get_radial_circles -cairo_status_t cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, - double *y0, - double *r0, - double *x1, - double *y1, - double *r1); - -Gets the gradient endpoint circles for a radial gradient, each -specified as a center coordinate and a radius. - -pattern : -a cairo_pattern_t -x0 : -return value for the x coordinate of the center of the first circle, or NULL -y0 : -return value for the y coordinate of the center of the first circle, or NULL -r0 : -return value for the radius of the first circle, or NULL -x1 : -return value for the x coordinate of the center of the second circle, or NULL -y1 : -return value for the y coordinate of the center of the second circle, or NULL -r1 : -return value for the radius of the second circle, or NULL -Returns :CAIRO_STATUS_SUCCESS, or -CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern is not a radial -gradient pattern. -Since 1.4 +cairo_status_t +cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, + double *x0, + double *y0, + double *r0, + double *x1, + double *y1, + double *r1); +Gets the gradient endpoint circles for a radial gradient, each +specified as a center coordinate and a radius. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +x0 +return value for the x coordinate of the center of the first circle, or NULL + +y0 +return value for the y coordinate of the center of the first circle, or NULL + +r0 +return value for the radius of the first circle, or NULL + +x1 +return value for the x coordinate of the center of the second circle, or NULL + +y1 +return value for the y coordinate of the center of the second circle, or NULL + +r1 +return value for the radius of the second circle, or NULL + + + +Returns + CAIRO_STATUS_SUCCESS, or +CAIRO_STATUS_PATTERN_TYPE_MISMATCH if pattern +is not a radial +gradient pattern. + +Since 1.4 -cairo_pattern_create_mesh () +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 +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 +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, +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. - - +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 +---------------+ @@ -632,61 +754,43 @@ +---------------+ C0 Side 3 C3 - - -Each patch is constructed by first calling +Each patch is constructed by first calling cairo_mesh_pattern_begin_patch(), then cairo_mesh_pattern_move_to() to specify the first point in the patch (C0). Then the sides are specified with calls to cairo_mesh_pattern_curve_to() and -cairo_mesh_pattern_line_to(). - - -The four additional control points (P0, P1, P2, P3) in a patch can -be specified with cairo_mesh_pattern_set_control_point(). - - -At each corner of the patch (C0, C1, C2, C3) a color may be +cairo_mesh_pattern_line_to(). +The four additional control points (P0, P1, P2, P3) in a patch can +be specified with cairo_mesh_pattern_set_control_point(). +At each corner of the patch (C0, C1, C2, C3) a color may be specified with cairo_mesh_pattern_set_corner_color_rgb() or cairo_mesh_pattern_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 +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 +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 +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_mesh_pattern_end_patch() completes the current +1 the point between side 0 and side 1 etc. +Calling cairo_mesh_pattern_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_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch(). - - +the color of C0. +Additional patches may be added with additional calls to +cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch(). cairo_pattern_t *pattern = cairo_pattern_create_mesh (); @@ -713,851 +817,1181 @@ cairo_mesh_pattern_set_corner_color_rgb (pattern, 2, 0, 0, 1); cairo_mesh_pattern_end_patch (pattern) - - -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 +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 ranges from 0 to 1 when going from side 0 to side + + +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 +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 +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 +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 +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 +status of a pattern use cairo_pattern_status(). + +Since 1.12 -cairo_mesh_pattern_begin_patch () +cairo_mesh_pattern_begin_patch () cairo_mesh_pattern_begin_patch -void cairo_mesh_pattern_begin_patch (cairo_pattern_t *pattern); - -Begin a patch in a mesh pattern. - - -After calling this function, the patch shape should be defined with +void +cairo_mesh_pattern_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_mesh_pattern_move_to(), cairo_mesh_pattern_line_to() and -cairo_mesh_pattern_curve_to(). - - -After defining the patch, cairo_mesh_pattern_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 +cairo_mesh_pattern_curve_to(). +After defining the patch, cairo_mesh_pattern_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 +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_STATUS_INVALID_MESH_CONSTRUCTION. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + +Since 1.12 -cairo_mesh_pattern_end_patch () +cairo_mesh_pattern_end_patch () cairo_mesh_pattern_end_patch -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_mesh_pattern_line_to() was used. - - -Note: If pattern is not a mesh pattern then pattern will be put +patch as if cairo_mesh_pattern_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 +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_STATUS_INVALID_MESH_CONSTRUCTION. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + +Since 1.12 -cairo_mesh_pattern_move_to () +cairo_mesh_pattern_move_to () cairo_mesh_pattern_move_to -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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 +CAIRO_STATUS_PATTERN_TYPE_MISMATCH. If pattern + has no current patch or the current patch already has at least 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_STATUS_INVALID_MESH_CONSTRUCTION. + +Parameters + + + + + + +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_mesh_pattern_line_to () +cairo_mesh_pattern_line_to () cairo_mesh_pattern_line_to -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_mesh_pattern_line_to() this function will behave as -cairo_mesh_pattern_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 +cairo_mesh_pattern_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 +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_STATUS_INVALID_MESH_CONSTRUCTION. + +Parameters + + + + + + +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_mesh_pattern_curve_to () +cairo_mesh_pattern_curve_to () cairo_mesh_pattern_curve_to -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_mesh_pattern_curve_to(), this function will behave as if -preceded by a call to cairo_mesh_pattern_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 +preceded by a call to cairo_mesh_pattern_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 +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_STATUS_INVALID_MESH_CONSTRUCTION. + +Parameters + + + + + + +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_mesh_pattern_set_control_point () +cairo_mesh_pattern_set_control_point () cairo_mesh_pattern_set_control_point -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_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. + +Parameters + + + + + + +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_mesh_pattern_set_corner_color_rgb () +cairo_mesh_pattern_set_corner_color_rgb () cairo_mesh_pattern_set_corner_color_rgb -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_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. + +Parameters + + + + + + +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_mesh_pattern_set_corner_color_rgba () +cairo_mesh_pattern_set_corner_color_rgba () cairo_mesh_pattern_set_corner_color_rgba -void cairo_mesh_pattern_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 +void +cairo_mesh_pattern_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_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. + +Parameters + + + + + + +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_mesh_pattern_get_patch_count () +cairo_mesh_pattern_get_patch_count () cairo_mesh_pattern_get_patch_count -cairo_status_t cairo_mesh_pattern_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 +cairo_status_t +cairo_mesh_pattern_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_mesh_pattern_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 +during the definition of the first patch. + +Parameters + + + + + + +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_mesh_pattern_get_path () +cairo_mesh_pattern_get_path () cairo_mesh_pattern_get_path -cairo_path_t * cairo_mesh_pattern_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_mesh_pattern_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_path_t * +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_get_patch_count(). + +Parameters + + + + + + +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_mesh_pattern_get_control_point () +cairo_mesh_pattern_get_control_point () cairo_mesh_pattern_get_control_point -cairo_status_t cairo_mesh_pattern_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_mesh_pattern_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 +cairo_status_t +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_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(). + +Parameters + + + + + + +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 +returned. + +Since 1.12 -cairo_mesh_pattern_get_corner_color_rgba () +cairo_mesh_pattern_get_corner_color_rgba () cairo_mesh_pattern_get_corner_color_rgba -cairo_status_t cairo_mesh_pattern_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_mesh_pattern_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_status_t +cairo_mesh_pattern_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 from 0 to n-1 where n is the number returned by +cairo_mesh_pattern_get_patch_count(). +Valid values for corner_num + are from 0 to 3 and identify the +corners as explained in cairo_pattern_create_mesh(). + +Parameters + + + + + + +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 () cairo_pattern_reference -cairo_pattern_t * cairo_pattern_reference (cairo_pattern_t *pattern); - -Increases the reference count on pattern by one. This prevents -pattern from being destroyed until a matching call to -cairo_pattern_destroy() is made. - - -The number of references to a cairo_pattern_t can be get using -cairo_pattern_get_reference_count(). - -pattern : -a cairo_pattern_t -Returns :the referenced cairo_pattern_t. -Since 1.0 +cairo_pattern_t * +cairo_pattern_reference (cairo_pattern_t *pattern); +Increases the reference count on pattern + by one. This prevents +pattern + from being destroyed until a matching call to +cairo_pattern_destroy() is made. +The number of references to a cairo_pattern_t can be get using +cairo_pattern_get_reference_count(). + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + the referenced cairo_pattern_t. + +Since 1.0 -cairo_pattern_destroy () +cairo_pattern_destroy () cairo_pattern_destroy -void cairo_pattern_destroy (cairo_pattern_t *pattern); - -Decreases the reference count on pattern by one. If the result is -zero, then pattern and all associated resources are freed. See -cairo_pattern_reference(). - -pattern : -a cairo_pattern_t -Since 1.0 +void +cairo_pattern_destroy (cairo_pattern_t *pattern); +Decreases the reference count on pattern + by one. If the result is +zero, then pattern + and all associated resources are freed. See +cairo_pattern_reference(). + +Parameters + + + + + + +pattern +a cairo_pattern_t + + +Since 1.0 -cairo_pattern_status () +cairo_pattern_status () cairo_pattern_status -cairo_status_t cairo_pattern_status (cairo_pattern_t *pattern); - -Checks whether an error has previously occurred for this -pattern. - -pattern : -a cairo_pattern_t -Returns :CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NO_MEMORY, +cairo_status_t +cairo_pattern_status (cairo_pattern_t *pattern); +Checks whether an error has previously occurred for this +pattern. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NO_MEMORY, CAIRO_STATUS_INVALID_MATRIX, CAIRO_STATUS_PATTERN_TYPE_MISMATCH, -or CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. -Since 1.0 - -enum cairo_extend_t -cairo_extend_t -typedef enum { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD -} cairo_extend_t; - - -cairo_extend_t is used to describe how pattern color/alpha will be -determined for areas "outside" the pattern's natural area, (for -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. - - -New entries may be added in future versions. - - -CAIRO_EXTEND_NONE -pixels outside of the source pattern - are fully transparent (Since 1.0) - - - -CAIRO_EXTEND_REPEAT -the pattern is tiled by repeating (Since 1.0) - - - -CAIRO_EXTEND_REFLECT -the pattern is tiled by reflecting - at the edges (Since 1.0; but only implemented for surface patterns since 1.6) - - - -CAIRO_EXTEND_PAD -pixels outside of the pattern copy - the closest pixel from the source (Since 1.2; but only - implemented for surface patterns since 1.6) - - -Since 1.0 +or CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. + +Since 1.0 -cairo_pattern_set_extend () +cairo_pattern_set_extend () cairo_pattern_set_extend -void cairo_pattern_set_extend (cairo_pattern_t *pattern, - cairo_extend_t extend); - -Sets the mode to be used for drawing outside the area of a pattern. +void +cairo_pattern_set_extend (cairo_pattern_t *pattern, + cairo_extend_t extend); +Sets the mode to be used for drawing outside the area of a pattern. See cairo_extend_t for details on the semantics of each extend -strategy. - - -The default extend mode is CAIRO_EXTEND_NONE for surface patterns -and CAIRO_EXTEND_PAD for gradient patterns. - -pattern : -a cairo_pattern_t -extend : -a cairo_extend_t describing how the area outside of the -pattern will be drawn -Since 1.0 +strategy. +The default extend mode is CAIRO_EXTEND_NONE for surface patterns +and CAIRO_EXTEND_PAD for gradient patterns. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +extend +a cairo_extend_t describing how the area outside of the +pattern will be drawn + + +Since 1.0 -cairo_pattern_get_extend () +cairo_pattern_get_extend () cairo_pattern_get_extend -cairo_extend_t cairo_pattern_get_extend (cairo_pattern_t *pattern); - -Gets the current extend mode for a pattern. See cairo_extend_t -for details on the semantics of each extend strategy. - -pattern : -a cairo_pattern_t -Returns :the current extend strategy used for drawing the -pattern. -Since 1.0 - -enum cairo_filter_t -cairo_filter_t -typedef enum { - CAIRO_FILTER_FAST, - CAIRO_FILTER_GOOD, - CAIRO_FILTER_BEST, - CAIRO_FILTER_NEAREST, - CAIRO_FILTER_BILINEAR, - CAIRO_FILTER_GAUSSIAN -} cairo_filter_t; - - -cairo_filter_t is used to indicate what filtering should be -applied when reading pixel values from patterns. See -cairo_pattern_set_filter() for indicating the desired filter to be -used with a particular pattern. - - -CAIRO_FILTER_FAST -A high-performance filter, with quality similar - to CAIRO_FILTER_NEAREST (Since 1.0) - - - -CAIRO_FILTER_GOOD -A reasonable-performance filter, with quality - similar to CAIRO_FILTER_BILINEAR (Since 1.0) - - - -CAIRO_FILTER_BEST -The highest-quality available, performance may - not be suitable for interactive use. (Since 1.0) - - - -CAIRO_FILTER_NEAREST -Nearest-neighbor filtering (Since 1.0) - - - -CAIRO_FILTER_BILINEAR -Linear interpolation in two dimensions (Since 1.0) - - - -CAIRO_FILTER_GAUSSIAN -This filter value is currently - unimplemented, and should not be used in current code. (Since 1.0) - - -Since 1.0 +cairo_extend_t +cairo_pattern_get_extend (cairo_pattern_t *pattern); +Gets the current extend mode for a pattern. See cairo_extend_t +for details on the semantics of each extend strategy. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + the current extend strategy used for drawing the +pattern. + +Since 1.0 -cairo_pattern_set_filter () +cairo_pattern_set_filter () cairo_pattern_set_filter -void cairo_pattern_set_filter (cairo_pattern_t *pattern, - cairo_filter_t filter); - -Sets the filter to be used for resizing when using this pattern. -See cairo_filter_t for details on each filter. - - -* Note that you might want to control filtering even when you do not +void +cairo_pattern_set_filter (cairo_pattern_t *pattern, + cairo_filter_t filter); +Sets the filter to be used for resizing when using this pattern. +See cairo_filter_t for details on each filter. + + +Note that you might want to control filtering even when you do not have an explicit cairo_pattern_t object, (for example when using cairo_set_source_surface()). In these cases, it is convenient to use cairo_get_source() to get access to the pattern that cairo -creates implicitly. For example: - - +creates implicitly. For example: + + cairo_set_source_surface (cr, image, x, y); cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - -pattern : -a cairo_pattern_t -filter : -a cairo_filter_t describing the filter to use for resizing -the pattern -Since 1.0 + +Parameters + + + + + + +pattern +a cairo_pattern_t + +filter +a cairo_filter_t describing the filter to use for resizing +the pattern + + +Since 1.0 -cairo_pattern_get_filter () +cairo_pattern_get_filter () cairo_pattern_get_filter -cairo_filter_t cairo_pattern_get_filter (cairo_pattern_t *pattern); - -Gets the current filter for a pattern. See cairo_filter_t -for details on each filter. - -pattern : -a cairo_pattern_t -Returns :the current filter used for resizing the pattern. -Since 1.0 +cairo_filter_t +cairo_pattern_get_filter (cairo_pattern_t *pattern); +Gets the current filter for a pattern. See cairo_filter_t +for details on each filter. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + the current filter used for resizing the pattern. + +Since 1.0 -cairo_pattern_set_matrix () +cairo_pattern_set_matrix () cairo_pattern_set_matrix -void cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix); - -Sets the pattern's transformation matrix to matrix. This matrix is -a transformation from user space to pattern space. - - -When a pattern is first created it always has the identity matrix +void +cairo_pattern_set_matrix (cairo_pattern_t *pattern, + const cairo_matrix_t *matrix); +Sets the pattern's transformation matrix to matrix +. This matrix is +a transformation from user space to pattern space. +When a pattern is first created it always has the identity matrix for its transformation matrix, which means that pattern space is -initially identical to user space. - - -Important: Please note that the direction of this transformation +initially identical to user space. +Important: Please note that the direction of this transformation matrix is from user space to pattern space. This means that if you imagine the flow from a pattern to user space (and on to device space), then coordinates in that flow will be transformed by the -inverse of the pattern matrix. - - -For example, if you want to make a pattern appear twice as large as -it does by default the correct code to use is: - - +inverse of the pattern matrix. +For example, if you want to make a pattern appear twice as large as +it does by default the correct code to use is: cairo_matrix_init_scale (&matrix, 0.5, 0.5); cairo_pattern_set_matrix (pattern, &matrix); - - -Meanwhile, using values of 2.0 rather than 0.5 in the code above -would cause the pattern to appear at half of its default size. - - -Also, please note the discussion of the user-space locking -semantics of cairo_set_source(). - -pattern : -a cairo_pattern_t -matrix : -a cairo_matrix_t -Since 1.0 +Meanwhile, using values of 2.0 rather than 0.5 in the code above +would cause the pattern to appear at half of its default size. +Also, please note the discussion of the user-space locking +semantics of cairo_set_source(). + +Parameters + + + + + + +pattern +a cairo_pattern_t + +matrix +a cairo_matrix_t + + +Since 1.0 -cairo_pattern_get_matrix () +cairo_pattern_get_matrix () cairo_pattern_get_matrix -void cairo_pattern_get_matrix (cairo_pattern_t *pattern, - cairo_matrix_t *matrix); - -Stores the pattern's transformation matrix into matrix. - -pattern : -a cairo_pattern_t -matrix : -return value for the matrix -Since 1.0 - -enum cairo_pattern_type_t -cairo_pattern_type_t -typedef enum { - CAIRO_PATTERN_TYPE_SOLID, - CAIRO_PATTERN_TYPE_SURFACE, - CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL, - CAIRO_PATTERN_TYPE_MESH, - CAIRO_PATTERN_TYPE_RASTER_SOURCE -} cairo_pattern_type_t; - - -cairo_pattern_type_t is used to describe the type of a given pattern. - - -The type of a pattern is determined by the function used to create -it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() -functions create SOLID patterns. The remaining -cairo_pattern_create functions map to pattern types in obvious -ways. - - -The pattern type can be queried with cairo_pattern_get_type() - - -Most cairo_pattern_t functions can be called with a pattern of any -type, (though trying to change the extend or filter for a solid -pattern will have no effect). A notable exception is -cairo_pattern_add_color_stop_rgb() and -cairo_pattern_add_color_stop_rgba() which must only be called with -gradient patterns (either LINEAR or RADIAL). Otherwise the pattern -will be shutdown and put into an error state. - - -New entries may be added in future versions. - - -CAIRO_PATTERN_TYPE_SOLID -The pattern is a solid (uniform) -color. It may be opaque or translucent, since 1.2. - - - -CAIRO_PATTERN_TYPE_SURFACE -The pattern is a based on a surface (an image), since 1.2. - - - -CAIRO_PATTERN_TYPE_LINEAR -The pattern is a linear gradient, since 1.2. - - - -CAIRO_PATTERN_TYPE_RADIAL -The pattern is a radial gradient, since 1.2. - - - -CAIRO_PATTERN_TYPE_MESH -The pattern is a mesh, since 1.12. - - - -CAIRO_PATTERN_TYPE_RASTER_SOURCE -The pattern is a user pattern providing raster data, since 1.12. - - -Since 1.2 +void +cairo_pattern_get_matrix (cairo_pattern_t *pattern, + cairo_matrix_t *matrix); +Stores the pattern's transformation matrix into matrix +. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +matrix +return value for the matrix + + +Since 1.0 -cairo_pattern_get_type () +cairo_pattern_get_type () cairo_pattern_get_type -cairo_pattern_type_t cairo_pattern_get_type (cairo_pattern_t *pattern); - -This function returns the type a pattern. -See cairo_pattern_type_t for available types. - -pattern : -a cairo_pattern_t -Returns :The type of pattern. -Since 1.2 +cairo_pattern_type_t +cairo_pattern_get_type (cairo_pattern_t *pattern); +This function returns the type a pattern. +See cairo_pattern_type_t for available types. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + The type of pattern +. + +Since 1.2 -cairo_pattern_get_reference_count () +cairo_pattern_get_reference_count () cairo_pattern_get_reference_count -unsigned int cairo_pattern_get_reference_count (cairo_pattern_t *pattern); - -Returns the current reference count of pattern. - -pattern : -a cairo_pattern_t -Returns :the current reference count of pattern. If the -object is a nil object, 0 will be returned. -Since 1.4 +unsigned int +cairo_pattern_get_reference_count (cairo_pattern_t *pattern); +Returns the current reference count of pattern +. + +Parameters + + + + + + +pattern +a cairo_pattern_t + + + +Returns + the current reference count of pattern +. If the +object is a nil object, 0 will be returned. + +Since 1.4 -cairo_pattern_set_user_data () +cairo_pattern_set_user_data () cairo_pattern_set_user_data -cairo_status_t cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to pattern. To remove user data from a surface, +cairo_status_t +cairo_pattern_set_user_data (cairo_pattern_t *pattern, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to pattern +. To remove user data from a surface, call this function with the key that was used to set it and NULL -for data. - -pattern : -a cairo_pattern_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the cairo_pattern_t -destroy : -a cairo_destroy_func_t which will be called when the +for data +. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the cairo_pattern_t + +destroy +a cairo_destroy_func_t which will be called when the cairo_t is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.4 +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.4 -cairo_pattern_get_user_data () +cairo_pattern_get_user_data () cairo_pattern_get_user_data -void * cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key); - -Return user data previously attached to pattern using the +void * +cairo_pattern_get_user_data (cairo_pattern_t *pattern, + const cairo_user_data_key_t *key); +Return user data previously attached to pattern + using the specified key. If no user data has been attached with the given -key this function returns NULL. - -pattern : -a cairo_pattern_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.4 +key this function returns NULL. + +Parameters + + + + + + +pattern +a cairo_pattern_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.4 + + + +Types and Values + +cairo_pattern_t +cairo_pattern_t +typedef struct _cairo_pattern cairo_pattern_t; + +A cairo_pattern_t represents a source when drawing onto a +surface. There are different subtypes of cairo_pattern_t, +for different types of sources; for example, +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; +for example cairo_set_source_rgb(). +The type of a pattern can be queried with cairo_pattern_get_type(). +Memory management of cairo_pattern_t is done with +cairo_pattern_reference() and cairo_pattern_destroy(). +Since 1.0 + +enum cairo_extend_t +cairo_extend_t +cairo_extend_t is used to describe how pattern color/alpha will be +determined for areas "outside" the pattern's natural area, (for +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. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_EXTEND_NONE +pixels outside of the source pattern + are fully transparent (Since 1.0) + + + +CAIRO_EXTEND_REPEAT +the pattern is tiled by repeating (Since 1.0) + + + +CAIRO_EXTEND_REFLECT +the pattern is tiled by reflecting + at the edges (Since 1.0; but only implemented for surface patterns since 1.6) + + + +CAIRO_EXTEND_PAD +pixels outside of the pattern copy + the closest pixel from the source (Since 1.2; but only + implemented for surface patterns since 1.6) + + + + +Since 1.0 + +enum cairo_filter_t +cairo_filter_t +cairo_filter_t is used to indicate what filtering should be +applied when reading pixel values from patterns. See +cairo_pattern_set_filter() for indicating the desired filter to be +used with a particular pattern. + +Members + + + + + + +CAIRO_FILTER_FAST +A high-performance filter, with quality similar + to CAIRO_FILTER_NEAREST (Since 1.0) + + + +CAIRO_FILTER_GOOD +A reasonable-performance filter, with quality + similar to CAIRO_FILTER_BILINEAR (Since 1.0) + + + +CAIRO_FILTER_BEST +The highest-quality available, performance may + not be suitable for interactive use. (Since 1.0) + + + +CAIRO_FILTER_NEAREST +Nearest-neighbor filtering (Since 1.0) + + + +CAIRO_FILTER_BILINEAR +Linear interpolation in two dimensions (Since 1.0) + + + +CAIRO_FILTER_GAUSSIAN +This filter value is currently + unimplemented, and should not be used in current code. (Since 1.0) + + + + +Since 1.0 + +enum cairo_pattern_type_t +cairo_pattern_type_t +cairo_pattern_type_t is used to describe the type of a given pattern. +The type of a pattern is determined by the function used to create +it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() +functions create SOLID patterns. The remaining +cairo_pattern_create functions map to pattern types in obvious +ways. +The pattern type can be queried with cairo_pattern_get_type() +Most cairo_pattern_t functions can be called with a pattern of any +type, (though trying to change the extend or filter for a solid +pattern will have no effect). A notable exception is +cairo_pattern_add_color_stop_rgb() and +cairo_pattern_add_color_stop_rgba() which must only be called with +gradient patterns (either LINEAR or RADIAL). Otherwise the pattern +will be shutdown and put into an error state. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_PATTERN_TYPE_SOLID +The pattern is a solid (uniform) +color. It may be opaque or translucent, since 1.2. + + + +CAIRO_PATTERN_TYPE_SURFACE +The pattern is a based on a surface (an image), since 1.2. + + + +CAIRO_PATTERN_TYPE_LINEAR +The pattern is a linear gradient, since 1.2. + + + +CAIRO_PATTERN_TYPE_RADIAL +The pattern is a radial gradient, since 1.2. + + + +CAIRO_PATTERN_TYPE_MESH +The pattern is a mesh, since 1.12. + + + +CAIRO_PATTERN_TYPE_RASTER_SOURCE +The pattern is a user pattern providing raster data, since 1.12. + + + + +Since 1.2 See Also -cairo_t, cairo_surface_t +cairo_t, cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-pdf.xml cairo-1.14.2/doc/public/xml/cairo-pdf.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-pdf.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-pdf.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,44 +16,60 @@ Rendering PDF documents - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_pdf_surface_create () +cairo_surface_t * +cairo_pdf_surface_create_for_stream () +void +cairo_pdf_surface_restrict_to_version () +void +cairo_pdf_get_versions () +const char * +cairo_pdf_version_to_string () +void +cairo_pdf_surface_set_size () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_PDF_SURFACE +enumcairo_pdf_version_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_PDF_SURFACE -cairo_surface_t * cairo_pdf_surface_create (const char *filename, - double width_in_points, - double height_in_points); -cairo_surface_t * cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); -void cairo_pdf_surface_restrict_to_version - (cairo_surface_t *surface, - cairo_pdf_version_t version); -enum cairo_pdf_version_t; -void cairo_pdf_get_versions (cairo_pdf_version_t const **versions, - int *num_versions); -const char * cairo_pdf_version_to_string (cairo_pdf_version_t version); -void cairo_pdf_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - - Description - -The PDF surface is used to render cairo graphics to Adobe -PDF files and is a multi-page vector surface backend. - - -The following mime types are supported: CAIRO_MIME_TYPE_JPEG, +The PDF surface is used to render cairo graphics to Adobe +PDF files and is a multi-page vector surface backend. +The following mime types are supported: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2_GLOBAL, -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. - - -JBIG2 data in PDF must be in the embedded format as descibed in +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. +JBIG2 data in PDF must be in the embedded format as descibed in ISO/IEC 11544. Image specific JBIG2 data must be in CAIRO_MIME_TYPE_JBIG2. Any global segments in the JBIG2 data (segments with page association field set to 0) must be in @@ -63,175 +79,257 @@ one of the images must provide the global data using CAIRO_MIME_TYPE_JBIG2_GLOBAL. The global data will only be embedded once but shared by all JBIG2 images with the same -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. - +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. + - -Details - -CAIRO_HAS_PDF_SURFACE -CAIRO_HAS_PDF_SURFACE -#define CAIRO_HAS_PDF_SURFACE 1 - - -Defined if the PDF surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.2 + +Functions -cairo_pdf_surface_create () +cairo_pdf_surface_create () cairo_pdf_surface_create -cairo_surface_t * cairo_pdf_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -Creates a PDF surface of the specified size in points to be written -to filename. - -filename : -a filename for the PDF output (must be writable), NULL may be +cairo_surface_t * +cairo_pdf_surface_create (const char *filename, + double width_in_points, + double height_in_points); +Creates a PDF surface of the specified size in points to be written +to filename +. + +Parameters + + + + + + +filename +a filename for the PDF output (must be writable), NULL may be used to specify no output. This will generate a PDF surface that may be queried and used as a source, without generating a -temporary file. -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +temporary file. + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_pdf_surface_create_for_stream () +cairo_pdf_surface_create_for_stream () cairo_pdf_surface_create_for_stream -cairo_surface_t * cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -Creates a PDF surface of the specified size in points to be written -incrementally to the stream represented by write_func and closure. - -write_func : -a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, +cairo_surface_t * +cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, + void *closure, + double width_in_points, + double height_in_points); +Creates a PDF surface of the specified size in points to be written +incrementally to the stream represented by write_func + and closure +. + +Parameters + + + + + + +write_func +a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, the surface may be queried or used as a source without -generating any temporary files. -closure : -the closure argument for write_func -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +generating any temporary files. + +closure +the closure argument for write_func + + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_pdf_surface_restrict_to_version () +cairo_pdf_surface_restrict_to_version () cairo_pdf_surface_restrict_to_version -void cairo_pdf_surface_restrict_to_version - (cairo_surface_t *surface, - cairo_pdf_version_t version); - -Restricts the generated PDF file to version. See cairo_pdf_get_versions() -for a list of available version values that can be used here. - - -This function should only be called before any drawing operations +void +cairo_pdf_surface_restrict_to_version (cairo_surface_t *surface, + cairo_pdf_version_t version); +Restricts the generated PDF file to version +. See cairo_pdf_get_versions() +for a list of available version values that can be used here. +This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the -surface. - -surface : -a PDF cairo_surface_t -version : -PDF version -Since 1.10 - -enum cairo_pdf_version_t -cairo_pdf_version_t -typedef enum { - CAIRO_PDF_VERSION_1_4, - CAIRO_PDF_VERSION_1_5 -} cairo_pdf_version_t; - - -cairo_pdf_version_t is used to describe the version number of the PDF -specification that a generated PDF file will conform to. - - -CAIRO_PDF_VERSION_1_4 -The version 1.4 of the PDF specification. (Since 1.10) - - - -CAIRO_PDF_VERSION_1_5 -The version 1.5 of the PDF specification. (Since 1.10) - - -Since 1.10 +surface. + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +version +PDF version + + +Since 1.10 -cairo_pdf_get_versions () +cairo_pdf_get_versions () cairo_pdf_get_versions -void cairo_pdf_get_versions (cairo_pdf_version_t const **versions, - int *num_versions); - -Used to retrieve the list of supported versions. See -cairo_pdf_surface_restrict_to_version(). - -versions : -supported version list -num_versions : -list length -Since 1.10 +void +cairo_pdf_get_versions (cairo_pdf_version_t const **versions, + int *num_versions); +Used to retrieve the list of supported versions. See +cairo_pdf_surface_restrict_to_version(). + +Parameters + + + + + + +versions +supported version list + +num_versions +list length + + +Since 1.10 -cairo_pdf_version_to_string () +cairo_pdf_version_to_string () cairo_pdf_version_to_string -const char * cairo_pdf_version_to_string (cairo_pdf_version_t version); - -Get the string representation of the given version id. This function -will return NULL if version isn't valid. See cairo_pdf_get_versions() -for a way to get the list of valid version ids. - -version : -a version id -Returns :the string associated to given version. -Since 1.10 +const char * +cairo_pdf_version_to_string (cairo_pdf_version_t version); +Get the string representation of the given version + id. This function +will return NULL if version + isn't valid. See cairo_pdf_get_versions() +for a way to get the list of valid version ids. + +Parameters + + + + + + +version +a version id + + + +Returns + the string associated to given version. + +Since 1.10 -cairo_pdf_surface_set_size () +cairo_pdf_surface_set_size () cairo_pdf_surface_set_size -void cairo_pdf_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -Changes the size of a PDF surface for the current (and -subsequent) pages. - - -This function should only be called before any drawing operations +void +cairo_pdf_surface_set_size (cairo_surface_t *surface, + double width_in_points, + double height_in_points); +Changes the size of a PDF surface for the current (and +subsequent) pages. +This function should only be called before any drawing operations have been performed on the current page. The simplest way to do this is to call this function immediately after creating the surface or immediately after completing a page with either -cairo_show_page() or cairo_copy_page(). - -surface : -a PDF cairo_surface_t -width_in_points : -new surface width, in points (1 point == 1/72.0 inch) -height_in_points : -new surface height, in points (1 point == 1/72.0 inch) -Since 1.2 +cairo_show_page() or cairo_copy_page(). + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +width_in_points +new surface width, in points (1 point == 1/72.0 inch) + +height_in_points +new surface height, in points (1 point == 1/72.0 inch) + + +Since 1.2 + + + +Types and Values + +CAIRO_HAS_PDF_SURFACE +CAIRO_HAS_PDF_SURFACE +#define CAIRO_HAS_PDF_SURFACE 1 + +Defined if the PDF surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.2 + +enum cairo_pdf_version_t +cairo_pdf_version_t +cairo_pdf_version_t is used to describe the version number of the PDF +specification that a generated PDF file will conform to. + +Members + + + + + + +CAIRO_PDF_VERSION_1_4 +The version 1.4 of the PDF specification. (Since 1.10) + + + +CAIRO_PDF_VERSION_1_5 +The version 1.5 of the PDF specification. (Since 1.10) + + + + +Since 1.10 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-png.xml cairo-1.14.2/doc/public/xml/cairo-png.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-png.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-png.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,194 +16,301 @@ Reading and writing PNG images - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_image_surface_create_from_png () +cairo_status_t +(*cairo_read_func_t) () +cairo_surface_t * +cairo_image_surface_create_from_png_stream () +cairo_status_t +cairo_surface_write_to_png () +cairo_status_t +(*cairo_write_func_t) () +cairo_status_t +cairo_surface_write_to_png_stream () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_PNG_FUNCTIONS + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_PNG_FUNCTIONS -cairo_surface_t * cairo_image_surface_create_from_png (const char *filename); -cairo_status_t (*cairo_read_func_t) (void *closure, - unsigned char *data, - unsigned int length); -cairo_surface_t * cairo_image_surface_create_from_png_stream - (cairo_read_func_t read_func, - void *closure); -cairo_status_t cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename); -cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); -cairo_status_t cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); - - Description - -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 +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. - +libpng. + - -Details - -CAIRO_HAS_PNG_FUNCTIONS -CAIRO_HAS_PNG_FUNCTIONS -#define CAIRO_HAS_PNG_FUNCTIONS 1 - - -Defined if the PNG functions are available. -This macro can be used to conditionally compile code using the cairo -PNG functions. -Since 1.0 + +Functions -cairo_image_surface_create_from_png () +cairo_image_surface_create_from_png () cairo_image_surface_create_from_png -cairo_surface_t * cairo_image_surface_create_from_png (const char *filename); - -Creates a new image surface and initializes the contents to the -given PNG file. - -filename : -name of PNG file to load -Returns :a new cairo_surface_t initialized with the contents +cairo_surface_t * +cairo_image_surface_create_from_png (const char *filename); +Creates a new image surface and initializes the contents to the +given PNG file. + +Parameters + + + + + + +filename +name of PNG file to load + + + +Returns + a new cairo_surface_t initialized with the contents of the PNG file, or a "nil" surface if any error occurred. A nil surface can be checked for with cairo_surface_status(surface) which -may return one of the following values: -CAIRO_STATUS_NO_MEMORY +may return one of the following values: +CAIRO_STATUS_NO_MEMORY CAIRO_STATUS_FILE_NOT_FOUND -CAIRO_STATUS_READ_ERROR -Alternatively, you can allow errors to propagate through the drawing +CAIRO_STATUS_READ_ERROR +Alternatively, you can allow errors to propagate through the drawing operations and check the status on the context upon completion -using cairo_status(). -Since 1.0 +using cairo_status(). + +Since 1.0 -cairo_read_func_t () +cairo_read_func_t () cairo_read_func_t -cairo_status_t (*cairo_read_func_t) (void *closure, - unsigned char *data, - unsigned int length); - -cairo_read_func_t is the type of function which is called when a +cairo_status_t +(*cairo_read_func_t) (void *closure, + unsigned char *data, + unsigned int length); +cairo_read_func_t is the type of function which is called when a backend needs to read data from an input stream. It is passed the closure which was specified by the user at the time the read function was registered, the buffer to read the data into and the length of the data in bytes. The read function should return CAIRO_STATUS_SUCCESS if all the data was successfully read, -CAIRO_STATUS_READ_ERROR otherwise. - -closure : -the input closure -data : -the buffer into which to read the data -length : -the amount of data to read -Returns :the status code of the read operation -Since 1.0 +CAIRO_STATUS_READ_ERROR otherwise. + +Parameters + + + + + + +closure +the input closure + +data +the buffer into which to read the data + +length +the amount of data to read + + + +Returns + the status code of the read operation + +Since 1.0 -cairo_image_surface_create_from_png_stream () +cairo_image_surface_create_from_png_stream () cairo_image_surface_create_from_png_stream -cairo_surface_t * cairo_image_surface_create_from_png_stream - (cairo_read_func_t read_func, - void *closure); - -Creates a new image surface from PNG data read incrementally -via the read_func function. - -read_func : -function called to read the data of the file -closure : -data to pass to read_func. -Returns :a new cairo_surface_t initialized with the contents +cairo_surface_t * +cairo_image_surface_create_from_png_stream + (cairo_read_func_t read_func, + void *closure); +Creates a new image surface from PNG data read incrementally +via the read_func + function. + +Parameters + + + + + + +read_func +function called to read the data of the file + +closure +data to pass to read_func +. + + + +Returns + a new cairo_surface_t initialized with the contents of the PNG file or a "nil" surface if the data read is not a valid PNG image or memory could not be allocated for the operation. A nil surface can be checked for with cairo_surface_status(surface) which -may return one of the following values: -CAIRO_STATUS_NO_MEMORY -CAIRO_STATUS_READ_ERROR -Alternatively, you can allow errors to propagate through the drawing +may return one of the following values: +CAIRO_STATUS_NO_MEMORY +CAIRO_STATUS_READ_ERROR +Alternatively, you can allow errors to propagate through the drawing operations and check the status on the context upon completion -using cairo_status(). -Since 1.0 +using cairo_status(). + +Since 1.0 -cairo_surface_write_to_png () +cairo_surface_write_to_png () cairo_surface_write_to_png -cairo_status_t cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename); - -Writes the contents of surface to a new file filename as a PNG -image. - -surface : -a cairo_surface_t with pixel contents -filename : -the name of a file to write to -Returns :CAIRO_STATUS_SUCCESS if the PNG file was written +cairo_status_t +cairo_surface_write_to_png (cairo_surface_t *surface, + const char *filename); +Writes the contents of surface + to a new file filename + as a PNG +image. + +Parameters + + + + + + +surface +a cairo_surface_t with pixel contents + +filename +the name of a file to write to + + + +Returns + CAIRO_STATUS_SUCCESS if the PNG file was written successfully. Otherwise, CAIRO_STATUS_NO_MEMORY if memory could not be allocated for the operation or CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have pixel contents, or CAIRO_STATUS_WRITE_ERROR if an I/O error occurs -while attempting to write the file. -Since 1.0 +while attempting to write the file. + +Since 1.0 -cairo_write_func_t () +cairo_write_func_t () cairo_write_func_t -cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); - -cairo_write_func_t is the type of function which is called when a +cairo_status_t +(*cairo_write_func_t) (void *closure, + const unsigned char *data, + unsigned int length); +cairo_write_func_t is the type of function which is called when a backend needs to write data to an output stream. It is passed the closure which was specified by the user at the time the write function was registered, the data to write and the length of the data in bytes. The write function should return CAIRO_STATUS_SUCCESS if all the data was successfully written, -CAIRO_STATUS_WRITE_ERROR otherwise. - -closure : -the output closure -data : -the buffer containing the data to write -length : -the amount of data to write -Returns :the status code of the write operation -Since 1.0 +CAIRO_STATUS_WRITE_ERROR otherwise. + +Parameters + + + + + + +closure +the output closure + +data +the buffer containing the data to write + +length +the amount of data to write + + + +Returns + the status code of the write operation + +Since 1.0 -cairo_surface_write_to_png_stream () +cairo_surface_write_to_png_stream () cairo_surface_write_to_png_stream -cairo_status_t cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); - -Writes the image surface to the write function. - -surface : -a cairo_surface_t with pixel contents -write_func : -a cairo_write_func_t -closure : -closure data for the write function -Returns :CAIRO_STATUS_SUCCESS if the PNG file was written +cairo_status_t +cairo_surface_write_to_png_stream (cairo_surface_t *surface, + cairo_write_func_t write_func, + void *closure); +Writes the image surface to the write function. + +Parameters + + + + + + +surface +a cairo_surface_t with pixel contents + +write_func +a cairo_write_func_t + +closure +closure data for the write function + + + +Returns + CAIRO_STATUS_SUCCESS if the PNG file was written successfully. Otherwise, CAIRO_STATUS_NO_MEMORY is returned if memory could not be allocated for the operation, CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have -pixel contents. -Since 1.0 +pixel contents. + +Since 1.0 + + + +Types and Values + +CAIRO_HAS_PNG_FUNCTIONS +CAIRO_HAS_PNG_FUNCTIONS +#define CAIRO_HAS_PNG_FUNCTIONS 1 + +Defined if the PNG functions are available. +This macro can be used to conditionally compile code using the cairo +PNG functions. +Since 1.0 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-ps.xml cairo-1.14.2/doc/public/xml/cairo-ps.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-ps.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-ps.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,374 +16,438 @@ Rendering PostScript documents - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_ps_surface_create () +cairo_surface_t * +cairo_ps_surface_create_for_stream () +void +cairo_ps_surface_restrict_to_level () +void +cairo_ps_get_levels () +const char * +cairo_ps_level_to_string () +void +cairo_ps_surface_set_eps () +cairo_bool_t +cairo_ps_surface_get_eps () +void +cairo_ps_surface_set_size () +void +cairo_ps_surface_dsc_begin_setup () +void +cairo_ps_surface_dsc_begin_page_setup () +void +cairo_ps_surface_dsc_comment () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_PS_SURFACE +enumcairo_ps_level_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_PS_SURFACE -cairo_surface_t * cairo_ps_surface_create (const char *filename, - double width_in_points, - double height_in_points); -cairo_surface_t * cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); -void cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level); -enum cairo_ps_level_t; -void cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels); -const char * cairo_ps_level_to_string (cairo_ps_level_t level); -void cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps); -cairo_bool_t cairo_ps_surface_get_eps (cairo_surface_t *surface); -void cairo_ps_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); -void cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); -void cairo_ps_surface_dsc_begin_page_setup - (cairo_surface_t *surface); -void cairo_ps_surface_dsc_comment (cairo_surface_t *surface, - const char *comment); - - Description - -The PostScript surface is used to render cairo graphics to Adobe -PostScript files and is a multi-page vector surface backend. - +The PostScript surface is used to render cairo graphics to Adobe +PostScript files and is a multi-page vector surface backend. + - -Details - -CAIRO_HAS_PS_SURFACE -CAIRO_HAS_PS_SURFACE -#define CAIRO_HAS_PS_SURFACE 1 - - -Defined if the PostScript surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.2 + +Functions -cairo_ps_surface_create () +cairo_ps_surface_create () cairo_ps_surface_create -cairo_surface_t * cairo_ps_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -Creates a PostScript surface of the specified size in points to be -written to filename. See cairo_ps_surface_create_for_stream() for +cairo_surface_t * +cairo_ps_surface_create (const char *filename, + double width_in_points, + double height_in_points); +Creates a PostScript surface of the specified size in points to be +written to filename +. See cairo_ps_surface_create_for_stream() for a more flexible mechanism for handling the PostScript output than -simply writing it to a named file. - - -Note that the size of individual pages of the PostScript output can -vary. See cairo_ps_surface_set_size(). - -filename : -a filename for the PS output (must be writable), NULL may be +simply writing it to a named file. +Note that the size of individual pages of the PostScript output can +vary. See cairo_ps_surface_set_size(). + +Parameters + + + + + + +filename +a filename for the PS output (must be writable), NULL may be used to specify no output. This will generate a PS surface that may be queried and used as a source, without generating a -temporary file. -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +temporary file. + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_ps_surface_create_for_stream () +cairo_ps_surface_create_for_stream () cairo_ps_surface_create_for_stream -cairo_surface_t * cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -Creates a PostScript surface of the specified size in points to be -written incrementally to the stream represented by write_func and -closure. See cairo_ps_surface_create() for a more convenient way -to simply direct the PostScript output to a named file. - - -Note that the size of individual pages of the PostScript -output can vary. See cairo_ps_surface_set_size(). - -write_func : -a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, +cairo_surface_t * +cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, + void *closure, + double width_in_points, + double height_in_points); +Creates a PostScript surface of the specified size in points to be +written incrementally to the stream represented by write_func + and +closure +. See cairo_ps_surface_create() for a more convenient way +to simply direct the PostScript output to a named file. +Note that the size of individual pages of the PostScript +output can vary. See cairo_ps_surface_set_size(). + +Parameters + + + + + + +write_func +a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, the surface may be queried or used as a source without -generating any temporary files. -closure : -the closure argument for write_func -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +generating any temporary files. + +closure +the closure argument for write_func + + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_ps_surface_restrict_to_level () +cairo_ps_surface_restrict_to_level () cairo_ps_surface_restrict_to_level -void cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level); - -Restricts the generated PostSript file to level. See +void +cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, + cairo_ps_level_t level); +Restricts the generated PostSript file to level +. See cairo_ps_get_levels() for a list of available level values that -can be used here. - - -This function should only be called before any drawing operations +can be used here. +This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the -surface. - -surface : -a PostScript cairo_surface_t -level : -PostScript level -Since 1.6 - -enum cairo_ps_level_t -cairo_ps_level_t -typedef enum { - CAIRO_PS_LEVEL_2, - CAIRO_PS_LEVEL_3 -} cairo_ps_level_t; - - -cairo_ps_level_t is used to describe the language level of the -PostScript Language Reference that a generated PostScript file will -conform to. - - -CAIRO_PS_LEVEL_2 -The language level 2 of the PostScript specification. (Since 1.6) - - - -CAIRO_PS_LEVEL_3 -The language level 3 of the PostScript specification. (Since 1.6) - - -Since 1.6 +surface. + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + +level +PostScript level + + +Since 1.6 -cairo_ps_get_levels () +cairo_ps_get_levels () cairo_ps_get_levels -void cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels); - -Used to retrieve the list of supported levels. See -cairo_ps_surface_restrict_to_level(). - -levels : -supported level list -num_levels : -list length -Since 1.6 +void +cairo_ps_get_levels (cairo_ps_level_t const **levels, + int *num_levels); +Used to retrieve the list of supported levels. See +cairo_ps_surface_restrict_to_level(). + +Parameters + + + + + + +levels +supported level list + +num_levels +list length + + +Since 1.6 -cairo_ps_level_to_string () +cairo_ps_level_to_string () cairo_ps_level_to_string -const char * cairo_ps_level_to_string (cairo_ps_level_t level); - -Get the string representation of the given level id. This function -will return NULL if level id isn't valid. See cairo_ps_get_levels() -for a way to get the list of valid level ids. - -level : -a level id -Returns :the string associated to given level. -Since 1.6 +const char * +cairo_ps_level_to_string (cairo_ps_level_t level); +Get the string representation of the given level + id. This function +will return NULL if level + id isn't valid. See cairo_ps_get_levels() +for a way to get the list of valid level ids. + +Parameters + + + + + + +level +a level id + + + +Returns + the string associated to given level. + +Since 1.6 -cairo_ps_surface_set_eps () +cairo_ps_surface_set_eps () cairo_ps_surface_set_eps -void cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps); - -If eps is TRUE, the PostScript surface will output Encapsulated -PostScript. - - -This function should only be called before any drawing operations +void +cairo_ps_surface_set_eps (cairo_surface_t *surface, + cairo_bool_t eps); +If eps + is TRUE, the PostScript surface will output Encapsulated +PostScript. +This function should only be called before any drawing operations have been performed on the current page. The simplest way to do this is to call this function immediately after creating the surface. An Encapsulated PostScript file should never contain more -than one page. - -surface : -a PostScript cairo_surface_t -eps : -TRUE to output EPS format PostScript -Since 1.6 +than one page. + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + +eps +TRUE to output EPS format PostScript + + +Since 1.6 -cairo_ps_surface_get_eps () +cairo_ps_surface_get_eps () cairo_ps_surface_get_eps -cairo_bool_t cairo_ps_surface_get_eps (cairo_surface_t *surface); - -Check whether the PostScript surface will output Encapsulated PostScript. - -surface : -a PostScript cairo_surface_t -Returns :TRUE if the surface will output Encapsulated PostScript. -Since 1.6 +cairo_bool_t +cairo_ps_surface_get_eps (cairo_surface_t *surface); +Check whether the PostScript surface will output Encapsulated PostScript. + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + + + +Returns + TRUE if the surface will output Encapsulated PostScript. + +Since 1.6 -cairo_ps_surface_set_size () +cairo_ps_surface_set_size () cairo_ps_surface_set_size -void cairo_ps_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -Changes the size of a PostScript surface for the current (and -subsequent) pages. - - -This function should only be called before any drawing operations +void +cairo_ps_surface_set_size (cairo_surface_t *surface, + double width_in_points, + double height_in_points); +Changes the size of a PostScript surface for the current (and +subsequent) pages. +This function should only be called before any drawing operations have been performed on the current page. The simplest way to do this is to call this function immediately after creating the surface or immediately after completing a page with either -cairo_show_page() or cairo_copy_page(). - -surface : -a PostScript cairo_surface_t -width_in_points : -new surface width, in points (1 point == 1/72.0 inch) -height_in_points : -new surface height, in points (1 point == 1/72.0 inch) -Since 1.2 +cairo_show_page() or cairo_copy_page(). + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + +width_in_points +new surface width, in points (1 point == 1/72.0 inch) + +height_in_points +new surface height, in points (1 point == 1/72.0 inch) + + +Since 1.2 -cairo_ps_surface_dsc_begin_setup () +cairo_ps_surface_dsc_begin_setup () cairo_ps_surface_dsc_begin_setup -void cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); - -This function indicates that subsequent calls to +void +cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); +This function indicates that subsequent calls to cairo_ps_surface_dsc_comment() should direct comments to the Setup -section of the PostScript output. - - -This function should be called at most once per surface, and must +section of the PostScript output. +This function should be called at most once per surface, and must be called before any call to cairo_ps_surface_dsc_begin_page_setup() -and before any drawing is performed to the surface. - - -See cairo_ps_surface_dsc_comment() for more details. - -surface : -a PostScript cairo_surface_t -Since 1.2 +and before any drawing is performed to the surface. +See cairo_ps_surface_dsc_comment() for more details. + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + + +Since 1.2 -cairo_ps_surface_dsc_begin_page_setup () +cairo_ps_surface_dsc_begin_page_setup () cairo_ps_surface_dsc_begin_page_setup -void cairo_ps_surface_dsc_begin_page_setup - (cairo_surface_t *surface); - -This function indicates that subsequent calls to +void +cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface); +This function indicates that subsequent calls to cairo_ps_surface_dsc_comment() should direct comments to the -PageSetup section of the PostScript output. - - -This function call is only needed for the first page of a +PageSetup section of the PostScript output. +This function call is only needed for the first page of a surface. It should be called after any call to cairo_ps_surface_dsc_begin_setup() and before any drawing is -performed to the surface. - - -See cairo_ps_surface_dsc_comment() for more details. - -surface : -a PostScript cairo_surface_t -Since 1.2 +performed to the surface. +See cairo_ps_surface_dsc_comment() for more details. + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + + +Since 1.2 -cairo_ps_surface_dsc_comment () +cairo_ps_surface_dsc_comment () cairo_ps_surface_dsc_comment -void cairo_ps_surface_dsc_comment (cairo_surface_t *surface, - const char *comment); - -Emit a comment into the PostScript output for the given surface. - - -The comment is expected to conform to the PostScript Language +void +cairo_ps_surface_dsc_comment (cairo_surface_t *surface, + const char *comment); +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 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 +a useful reference. +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 +these conditions will place surface + into an error state. But beyond these two conditions, this function will not enforce -conformance of the comment with any particular specification. - - -The comment string should not have a trailing newline. - - -The DSC specifies different sections in which particular comments +conformance of the comment with any particular specification. +The comment string should not have a trailing newline. +The DSC specifies different sections in which particular comments can appear. This function provides for comments to be emitted within three sections: the header, the Setup section, and the PageSetup section. Comments appearing in the first two sections apply to the entire document while comments in the BeginPageSetup -section apply only to a single page. - - -For comments to appear in the header section, this function should +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_dsc_begin_setup(). - - -For comments to appear in the Setup section, this function should +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_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 +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_dsc_begin_page_setup(). - - -Note that it is only necessary to call +cairo_ps_surface_dsc_begin_page_setup(). +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 +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. - - -Setup section: %%BeginSetup, %%EndSetup - - -PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup. - - -Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF - - -Here is an example sequence showing how this function might be used: - - +the following comments: +Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, +%%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments. +Setup section: %%BeginSetup, %%EndSetup +PageSetup section: %%BeginPageSetup, %%PageBoundingBox, %%EndPageSetup. +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); ... @@ -404,17 +468,66 @@ cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A5"); ... - -surface : -a PostScript cairo_surface_t -comment : -a comment string to be emitted into the PostScript output -Since 1.2 + +Parameters + + + + + + +surface +a PostScript cairo_surface_t + +comment +a comment string to be emitted into the PostScript output + + +Since 1.2 + + + +Types and Values + +CAIRO_HAS_PS_SURFACE +CAIRO_HAS_PS_SURFACE +#define CAIRO_HAS_PS_SURFACE 1 + +Defined if the PostScript surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.2 + +enum cairo_ps_level_t +cairo_ps_level_t +cairo_ps_level_t is used to describe the language level of the +PostScript Language Reference that a generated PostScript file will +conform to. + +Members + + + + + + +CAIRO_PS_LEVEL_2 +The language level 2 of the PostScript specification. (Since 1.6) + + + +CAIRO_PS_LEVEL_3 +The language level 3 of the PostScript specification. (Since 1.6) + + + + +Since 1.6 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-quartz-fonts.xml cairo-1.14.2/doc/public/xml/cairo-quartz-fonts.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-quartz-fonts.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-quartz-fonts.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,71 +16,123 @@ Font support via CGFont on OS X - -Synopsis + +Functions + + + + + +cairo_font_face_t * +cairo_quartz_font_face_create_for_cgfont () +cairo_font_face_t * +cairo_quartz_font_face_create_for_atsu_font_id () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_QUARTZ_FONT + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_QUARTZ_FONT -cairo_font_face_t * cairo_quartz_font_face_create_for_cgfont - (CGFontRef font); -cairo_font_face_t * cairo_quartz_font_face_create_for_atsu_font_id - (ATSUFontID font_id); - - Description - -The Quartz font backend is primarily used to render text on Apple +The Quartz font backend is primarily used to render text on Apple MacOS X systems. The CGFont API is used for the internal -implementation of the font backend methods. - +implementation of the font backend methods. + - -Details - -CAIRO_HAS_QUARTZ_FONT -CAIRO_HAS_QUARTZ_FONT -#define CAIRO_HAS_QUARTZ_FONT 1 - - -Defined if the Quartz font backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.6 + +Functions -cairo_quartz_font_face_create_for_cgfont () +cairo_quartz_font_face_create_for_cgfont () cairo_quartz_font_face_create_for_cgfont -cairo_font_face_t * cairo_quartz_font_face_create_for_cgfont - (CGFontRef font); - -Creates a new font for the Quartz font backend based on a +cairo_font_face_t * +cairo_quartz_font_face_create_for_cgfont + (CGFontRef font); +Creates a new font for the Quartz font backend based on a CGFontRef. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). - -font : -a CGFontRef obtained through a method external to cairo. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.6 +cairo_set_font_face() or cairo_scaled_font_create(). + +Parameters + + + + + + +font +a CGFontRef obtained through a method external to cairo. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.6 -cairo_quartz_font_face_create_for_atsu_font_id () +cairo_quartz_font_face_create_for_atsu_font_id () cairo_quartz_font_face_create_for_atsu_font_id -cairo_font_face_t * cairo_quartz_font_face_create_for_atsu_font_id - (ATSUFontID font_id); - -Creates a new font for the Quartz font backend based on an +cairo_font_face_t * +cairo_quartz_font_face_create_for_atsu_font_id + (ATSUFontID font_id); +Creates a new font for the Quartz font backend based on an ATSUFontID. This font can then be used with -cairo_set_font_face() or cairo_scaled_font_create(). - -font_id : -an ATSUFontID for the font. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.6 +cairo_set_font_face() or cairo_scaled_font_create(). + +Parameters + + + + + + +font_id +an ATSUFontID for the font. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.6 + + + +Types and Values + +CAIRO_HAS_QUARTZ_FONT +CAIRO_HAS_QUARTZ_FONT +#define CAIRO_HAS_QUARTZ_FONT 1 + +Defined if the Quartz font backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.6 See Also -cairo_font_face_t +cairo_font_face_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-quartz.xml cairo-1.14.2/doc/public/xml/cairo-quartz.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-quartz.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-quartz.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,118 +16,178 @@ Rendering to Quartz surfaces - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_quartz_surface_create () +cairo_surface_t * +cairo_quartz_surface_create_for_cg_context () +CGContextRef +cairo_quartz_surface_get_cg_context () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_QUARTZ_SURFACE + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_QUARTZ_SURFACE -cairo_surface_t * cairo_quartz_surface_create (cairo_format_t format, - unsigned int width, - unsigned int height); -cairo_surface_t * cairo_quartz_surface_create_for_cg_context - (CGContextRef cgContext, - unsigned int width, - unsigned int height); -CGContextRef cairo_quartz_surface_get_cg_context (cairo_surface_t *surface); - - Description - -The Quartz surface is used to render cairo graphics targeting the -Apple OS X Quartz rendering system. - +The Quartz surface is used to render cairo graphics targeting the +Apple OS X Quartz rendering system. + - -Details - -CAIRO_HAS_QUARTZ_SURFACE -CAIRO_HAS_QUARTZ_SURFACE -#define CAIRO_HAS_QUARTZ_SURFACE 1 - - -Defined if the Quartz surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.6 + +Functions -cairo_quartz_surface_create () +cairo_quartz_surface_create () cairo_quartz_surface_create -cairo_surface_t * cairo_quartz_surface_create (cairo_format_t format, - unsigned int width, - unsigned int height); - -Creates a Quartz surface backed by a CGBitmap. The surface is +cairo_surface_t * +cairo_quartz_surface_create (cairo_format_t format, + unsigned int width, + unsigned int height); +Creates a Quartz surface backed by a CGBitmap. The surface is created using the Device RGB (or Device Gray, for A8) color space. All Cairo operations, including those that require software -rendering, will succeed on this surface. - -format : -format of pixels in the surface to create -width : -width of the surface, in pixels -height : -height of the surface, in pixels -Returns :the newly created surface. -Since 1.6 +rendering, will succeed on this surface. + +Parameters + + + + + + +format +format of pixels in the surface to create + +width +width of the surface, in pixels + +height +height of the surface, in pixels + + + +Returns + the newly created surface. + +Since 1.6 -cairo_quartz_surface_create_for_cg_context () +cairo_quartz_surface_create_for_cg_context () cairo_quartz_surface_create_for_cg_context -cairo_surface_t * cairo_quartz_surface_create_for_cg_context - (CGContextRef cgContext, - unsigned int width, - unsigned int height); - -Creates a Quartz surface that wraps the given CGContext. The +cairo_surface_t * +cairo_quartz_surface_create_for_cg_context + (CGContextRef cgContext, + unsigned int width, + unsigned int height); +Creates a Quartz surface that wraps the given CGContext. The CGContext is assumed to be in the standard Cairo coordinate space (that is, with the origin at the upper left and the Y axis increasing downward). If the CGContext is in the Quartz coordinate space (with the origin at the bottom left), then it should be flipped before this function is called. The flip can be accomplished -using a translate and a scale; for example: - - +using a translate and a scale; for example: CGContextTranslateCTM (cgContext, 0.0, height); CGContextScaleCTM (cgContext, 1.0, -1.0); - - -All Cairo operations are implemented in terms of Quartz operations, -as long as Quartz-compatible elements are used (such as Quartz fonts). - -cgContext : -the existing CGContext for which to create the surface -width : -width of the surface, in pixels -height : -height of the surface, in pixels -Returns :the newly created Cairo surface. -Since 1.6 +All Cairo operations are implemented in terms of Quartz operations, +as long as Quartz-compatible elements are used (such as Quartz fonts). + +Parameters + + + + + + +cgContext +the existing CGContext for which to create the surface + +width +width of the surface, in pixels + +height +height of the surface, in pixels + + + +Returns + the newly created Cairo surface. + +Since 1.6 -cairo_quartz_surface_get_cg_context () +cairo_quartz_surface_get_cg_context () cairo_quartz_surface_get_cg_context -CGContextRef cairo_quartz_surface_get_cg_context (cairo_surface_t *surface); - -Returns the CGContextRef that the given Quartz surface is backed -by. - - -A call to cairo_surface_flush() is required before using the +CGContextRef +cairo_quartz_surface_get_cg_context (cairo_surface_t *surface); +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 -Returns :the CGContextRef for the given surface. -Since 1.6 +modified. + +Parameters + + + + + + +surface +the Cairo Quartz surface + + + +Returns + the CGContextRef for the given surface. + +Since 1.6 + + + +Types and Values + +CAIRO_HAS_QUARTZ_SURFACE +CAIRO_HAS_QUARTZ_SURFACE +#define CAIRO_HAS_QUARTZ_SURFACE 1 + +Defined if the Quartz surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.6 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-raster-source.xml cairo-1.14.2/doc/public/xml/cairo-raster-source.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-raster-source.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-raster-source.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,272 +16,383 @@ Supplying arbitrary image data - -Synopsis + +Functions + + + + + +cairo_pattern_t * +cairo_pattern_create_raster_source () +void +cairo_raster_source_pattern_set_callback_data () +void * +cairo_raster_source_pattern_get_callback_data () +void +cairo_raster_source_pattern_set_acquire () +void +cairo_raster_source_pattern_get_acquire () +void +cairo_raster_source_pattern_set_snapshot () +cairo_raster_source_snapshot_func_t +cairo_raster_source_pattern_get_snapshot () +void +cairo_raster_source_pattern_set_copy () +cairo_raster_source_copy_func_t +cairo_raster_source_pattern_get_copy () +void +cairo_raster_source_pattern_set_finish () +cairo_raster_source_finish_func_t +cairo_raster_source_pattern_get_finish () +cairo_surface_t +(*cairo_raster_source_acquire_func_t) () +void +(*cairo_raster_source_release_func_t) () +cairo_status_t +(*cairo_raster_source_snapshot_func_t) () +cairo_status_t +(*cairo_raster_source_copy_func_t) () +void +(*cairo_raster_source_finish_func_t) () + + + + + + +Object Hierarchy + + + -cairo_pattern_t * cairo_pattern_create_raster_source (void *user_data, - cairo_content_t content, - int width, - int height); -void cairo_raster_source_pattern_set_callback_data - (cairo_pattern_t *pattern, - void *data); -void * cairo_raster_source_pattern_get_callback_data - (cairo_pattern_t *pattern); -void cairo_raster_source_pattern_set_acquire - (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t acquire, - cairo_raster_source_release_func_t release); -void cairo_raster_source_pattern_get_acquire - (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t *acquire, - cairo_raster_source_release_func_t *release); -void cairo_raster_source_pattern_set_snapshot - (cairo_pattern_t *pattern, - cairo_raster_source_snapshot_func_t snapshot); -cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot - (cairo_pattern_t *pattern); -void cairo_raster_source_pattern_set_copy - (cairo_pattern_t *pattern, - cairo_raster_source_copy_func_t copy); -cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy - (cairo_pattern_t *pattern); -void cairo_raster_source_pattern_set_finish - (cairo_pattern_t *pattern, - cairo_raster_source_finish_func_t finish); -cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish - (cairo_pattern_t *pattern); -cairo_surface_t (*cairo_raster_source_acquire_func_t) - (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *target, - const cairo_rectangle_int_t *extents); -void (*cairo_raster_source_release_func_t) - (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *surface); -cairo_status_t (*cairo_raster_source_snapshot_func_t) - (cairo_pattern_t *pattern, - void *callback_data); -cairo_status_t (*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern, - void *callback_data, - const cairo_pattern_t *other); -void (*cairo_raster_source_finish_func_t) - (cairo_pattern_t *pattern, - void *callback_data); - - Description - -The raster source provides the ability to supply arbitrary pixel data +The raster source provides the ability to supply arbitrary pixel data whilst rendering. The pixels are queried at the time of rasterisation by means of user callback functions, allowing for the ultimate flexibility. For example, in handling compressed image sources, you may keep a MRU cache of decompressed images and decompress sources on the -fly and discard old ones to conserve memory. - - -For the raster source to be effective, you must at least specify +fly and discard old ones to conserve memory. +For the raster source to be effective, you must at least specify the acquire and release callbacks which are used to retrieve the pixel data for the region of interest and demark when it can be freed afterwards. Other callbacks are provided for when the pattern is copied temporarily during rasterisation, or more permanently as a snapshot in order to keep -the pixel data available for printing. - +the pixel data available for printing. + - -Details + +Functions -cairo_pattern_create_raster_source () +cairo_pattern_create_raster_source () cairo_pattern_create_raster_source -cairo_pattern_t * cairo_pattern_create_raster_source (void *user_data, - cairo_content_t content, - int width, - int height); - -Creates a new user pattern for providing pixel data. - - -Use the setter functions to associate callbacks with the returned -pattern. The only mandatory callback is acquire. - -user_data : -the user data to be passed to all callbacks -content : -content type for the pixel data that will be returned. Knowing +cairo_pattern_t * +cairo_pattern_create_raster_source (void *user_data, + cairo_content_t content, + int width, + int height); +Creates a new user pattern for providing pixel data. +Use the setter functions to associate callbacks with the returned +pattern. The only mandatory callback is acquire. + +Parameters + + + + + + +user_data +the user data to be passed to all callbacks + +content +content type for the pixel data that will be returned. Knowing the content type ahead of time is used for analysing the operation and -picking the appropriate rendering path. -width : -maximum size of the sample area -height : -maximum size of the sample area -Returns :a newly created cairo_pattern_t. Free with -cairo_pattern_destroy() when you are done using it. -Since 1.12 +picking the appropriate rendering path. + +width +maximum size of the sample area + +height +maximum size of the sample area + + + +Returns + a newly created cairo_pattern_t. Free with +cairo_pattern_destroy() when you are done using it. + +Since 1.12 -cairo_raster_source_pattern_set_callback_data () +cairo_raster_source_pattern_set_callback_data () cairo_raster_source_pattern_set_callback_data -void cairo_raster_source_pattern_set_callback_data - (cairo_pattern_t *pattern, - void *data); - -Updates the user data that is provided to all callbacks. - -pattern : -the pattern to update -data : -the user data to be passed to all callbacks -Since 1.12 +void +cairo_raster_source_pattern_set_callback_data + (cairo_pattern_t *pattern, + void *data); +Updates the user data that is provided to all callbacks. + +Parameters + + + + + + +pattern +the pattern to update + +data +the user data to be passed to all callbacks + + +Since 1.12 -cairo_raster_source_pattern_get_callback_data () +cairo_raster_source_pattern_get_callback_data () cairo_raster_source_pattern_get_callback_data -void * cairo_raster_source_pattern_get_callback_data - (cairo_pattern_t *pattern); - -Queries the current user data. - -pattern : -the pattern to update -Returns :the current user-data passed to each callback -Since 1.12 +void * +cairo_raster_source_pattern_get_callback_data + (cairo_pattern_t *pattern); +Queries the current user data. + +Parameters + + + + + + +pattern +the pattern to update + + + +Returns + the current user-data passed to each callback + +Since 1.12 -cairo_raster_source_pattern_set_acquire () +cairo_raster_source_pattern_set_acquire () cairo_raster_source_pattern_set_acquire -void cairo_raster_source_pattern_set_acquire - (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t acquire, - cairo_raster_source_release_func_t release); - -Specifies the callbacks used to generate the image surface for a rendering -operation (acquire) and the function used to cleanup that surface afterwards. - - -The acquire callback should create a surface (preferably an image +void +cairo_raster_source_pattern_set_acquire + (cairo_pattern_t *pattern, + cairo_raster_source_acquire_func_t acquire, + cairo_raster_source_release_func_t release); +Specifies the callbacks used to generate the image surface for a rendering +operation (acquire) and the function used to cleanup that surface afterwards. +The acquire + callback should create a surface (preferably an image surface created to match the target using cairo_surface_create_similar_image()) that defines at least the region of interest specified by extents. The surface is allowed to be the entire sample area, but if it does contain a subsection of the sample area, the surface extents should be provided by setting the device offset (along -with its width and height) using cairo_surface_set_device_offset(). - -pattern : -the pattern to update -acquire : -acquire callback -release : -release callback -Since 1.12 +with its width and height) using cairo_surface_set_device_offset(). + +Parameters + + + + + + +pattern +the pattern to update + +acquire +acquire callback + +release +release callback + + +Since 1.12 -cairo_raster_source_pattern_get_acquire () +cairo_raster_source_pattern_get_acquire () cairo_raster_source_pattern_get_acquire -void cairo_raster_source_pattern_get_acquire - (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t *acquire, - cairo_raster_source_release_func_t *release); - -Queries the current acquire and release callbacks. - -pattern : -the pattern to query -acquire : -return value for the current acquire callback -release : -return value for the current release callback -Since 1.12 +void +cairo_raster_source_pattern_get_acquire + (cairo_pattern_t *pattern, + cairo_raster_source_acquire_func_t *acquire, + cairo_raster_source_release_func_t *release); +Queries the current acquire and release callbacks. + +Parameters + + + + + + +pattern +the pattern to query + +acquire +return value for the current acquire callback + +release +return value for the current release callback + + +Since 1.12 -cairo_raster_source_pattern_set_snapshot () +cairo_raster_source_pattern_set_snapshot () cairo_raster_source_pattern_set_snapshot -void cairo_raster_source_pattern_set_snapshot - (cairo_pattern_t *pattern, - cairo_raster_source_snapshot_func_t snapshot); - -Sets the callback that will be used whenever a snapshot is taken of the +void +cairo_raster_source_pattern_set_snapshot + (cairo_pattern_t *pattern, + cairo_raster_source_snapshot_func_t snapshot); +Sets the callback that will be used whenever a snapshot is taken of the pattern, that is whenever the current contents of the pattern should be -preserved for later use. This is typically invoked whilst printing. - -pattern : -the pattern to update -snapshot : -snapshot callback -Since 1.12 +preserved for later use. This is typically invoked whilst printing. + +Parameters + + + + + + +pattern +the pattern to update + +snapshot +snapshot callback + + +Since 1.12 -cairo_raster_source_pattern_get_snapshot () +cairo_raster_source_pattern_get_snapshot () cairo_raster_source_pattern_get_snapshot -cairo_raster_source_snapshot_func_t cairo_raster_source_pattern_get_snapshot - (cairo_pattern_t *pattern); - -Queries the current snapshot callback. - -pattern : -the pattern to query -Returns :the current snapshot callback -Since 1.12 +cairo_raster_source_snapshot_func_t +cairo_raster_source_pattern_get_snapshot + (cairo_pattern_t *pattern); +Queries the current snapshot callback. + +Parameters + + + + + + +pattern +the pattern to query + + + +Returns + the current snapshot callback + +Since 1.12 -cairo_raster_source_pattern_set_copy () +cairo_raster_source_pattern_set_copy () cairo_raster_source_pattern_set_copy -void cairo_raster_source_pattern_set_copy - (cairo_pattern_t *pattern, - cairo_raster_source_copy_func_t copy); - -Updates the copy callback which is used whenever a temporary copy of the -pattern is taken. - -pattern : -the pattern to update -copy : -the copy callback -Since 1.12 +void +cairo_raster_source_pattern_set_copy (cairo_pattern_t *pattern, + cairo_raster_source_copy_func_t copy); +Updates the copy callback which is used whenever a temporary copy of the +pattern is taken. + +Parameters + + + + + + +pattern +the pattern to update + +copy +the copy callback + + +Since 1.12 -cairo_raster_source_pattern_get_copy () +cairo_raster_source_pattern_get_copy () cairo_raster_source_pattern_get_copy -cairo_raster_source_copy_func_t cairo_raster_source_pattern_get_copy - (cairo_pattern_t *pattern); - -Queries the current copy callback. - -pattern : -the pattern to query -Returns :the current copy callback -Since 1.12 +cairo_raster_source_copy_func_t +cairo_raster_source_pattern_get_copy (cairo_pattern_t *pattern); +Queries the current copy callback. + +Parameters + + + + + + +pattern +the pattern to query + + + +Returns + the current copy callback + +Since 1.12 -cairo_raster_source_pattern_set_finish () +cairo_raster_source_pattern_set_finish () cairo_raster_source_pattern_set_finish -void cairo_raster_source_pattern_set_finish - (cairo_pattern_t *pattern, - cairo_raster_source_finish_func_t finish); - -Updates the finish callback which is used whenever a pattern (or a copy -thereof) will no longer be used. - -pattern : -the pattern to update -finish : -the finish callback -Since 1.12 +void +cairo_raster_source_pattern_set_finish + (cairo_pattern_t *pattern, + cairo_raster_source_finish_func_t finish); +Updates the finish callback which is used whenever a pattern (or a copy +thereof) will no longer be used. + +Parameters + + + + + + +pattern +the pattern to update + +finish +the finish callback + + +Since 1.12 -cairo_raster_source_pattern_get_finish () +cairo_raster_source_pattern_get_finish () cairo_raster_source_pattern_get_finish -cairo_raster_source_finish_func_t cairo_raster_source_pattern_get_finish - (cairo_pattern_t *pattern); - -Queries the current finish callback. - -pattern : -the pattern to query -Returns :the current finish callback -Since 1.12 +cairo_raster_source_finish_func_t +cairo_raster_source_pattern_get_finish + (cairo_pattern_t *pattern); +Queries the current finish callback. + +Parameters + + + + + + +pattern +the pattern to query + + + +Returns + the current finish callback + +Since 1.12 -cairo_raster_source_acquire_func_t () +cairo_raster_source_acquire_func_t () cairo_raster_source_acquire_func_t -cairo_surface_t (*cairo_raster_source_acquire_func_t) - (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *target, - const cairo_rectangle_int_t *extents); - -cairo_raster_source_acquire_func_t is the type of function which is +cairo_surface_t +(*cairo_raster_source_acquire_func_t) (cairo_pattern_t *pattern, + void *callback_data, + cairo_surface_t *target, + const cairo_rectangle_int_t *extents); +cairo_raster_source_acquire_func_t is the type of function which is called when a pattern is being rendered from. It should create a surface that provides the pixel data for the region of interest as defined by extents, though the surface itself does not have to be limited to that @@ -292,97 +403,163 @@ target for explicit handling by the application of a set of cached sources on the device. The region of sample data provided should be defined using cairo_surface_set_device_offset() to specify the top-left corner of the -sample data (along with width and height of the surface). - -pattern : -the pattern being rendered from -callback_data : -the user data supplied during creation -target : -the rendering target surface -extents : -rectangular region of interest in pixels in sample space -Returns :a cairo_surface_t -Since 1.12 +sample data (along with width and height of the surface). + +Parameters + + + + + + +pattern +the pattern being rendered from + +callback_data +the user data supplied during creation + +target +the rendering target surface + +extents +rectangular region of interest in pixels in sample space + + + +Returns + a cairo_surface_t + +Since 1.12 -cairo_raster_source_release_func_t () +cairo_raster_source_release_func_t () cairo_raster_source_release_func_t -void (*cairo_raster_source_release_func_t) - (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *surface); - -cairo_raster_source_release_func_t is the type of function which is +void +(*cairo_raster_source_release_func_t) (cairo_pattern_t *pattern, + void *callback_data, + cairo_surface_t *surface); +cairo_raster_source_release_func_t is the type of function which is called when the pixel data is no longer being access by the pattern for the rendering operation. Typically this function will simply -destroy the surface created during acquire. - -pattern : -the pattern being rendered from -callback_data : -the user data supplied during creation -surface : -the surface created during acquire -Since 1.12 +destroy the surface created during acquire. + +Parameters + + + + + + +pattern +the pattern being rendered from + +callback_data +the user data supplied during creation + +surface +the surface created during acquire + + +Since 1.12 -cairo_raster_source_snapshot_func_t () +cairo_raster_source_snapshot_func_t () cairo_raster_source_snapshot_func_t -cairo_status_t (*cairo_raster_source_snapshot_func_t) - (cairo_pattern_t *pattern, - void *callback_data); - -cairo_raster_source_snapshot_func_t is the type of function which is +cairo_status_t +(*cairo_raster_source_snapshot_func_t) + (cairo_pattern_t *pattern, + void *callback_data); +cairo_raster_source_snapshot_func_t is the type of function which is called when the pixel data needs to be preserved for later use during printing. This pattern will be accessed again later, and it is expected to provide the pixel data that was current at the time -of snapshotting. - -pattern : -the pattern being rendered from -callback_data : -the user data supplied during creation -Returns :CAIRO_STATUS_SUCCESS on success, or one of the -cairo_status_t error codes for failure. -Since 1.12 +of snapshotting. + +Parameters + + + + + + +pattern +the pattern being rendered from + +callback_data +the user data supplied during creation + + + +Returns + CAIRO_STATUS_SUCCESS on success, or one of the +cairo_status_t error codes for failure. + +Since 1.12 -cairo_raster_source_copy_func_t () +cairo_raster_source_copy_func_t () cairo_raster_source_copy_func_t -cairo_status_t (*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern, - void *callback_data, - const cairo_pattern_t *other); - -cairo_raster_source_copy_func_t is the type of function which is -called when the pattern gets copied as a normal part of rendering. - -pattern : -the cairo_pattern_t that was copied to -callback_data : -the user data supplied during creation -other : -the cairo_pattern_t being used as the source for the copy -Returns :CAIRO_STATUS_SUCCESS on success, or one of the -cairo_status_t error codes for failure. -Since 1.12 +cairo_status_t +(*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern, + void *callback_data, + const cairo_pattern_t *other); +cairo_raster_source_copy_func_t is the type of function which is +called when the pattern gets copied as a normal part of rendering. + +Parameters + + + + + + +pattern +the cairo_pattern_t that was copied to + +callback_data +the user data supplied during creation + +other +the cairo_pattern_t being used as the source for the copy + + + +Returns + CAIRO_STATUS_SUCCESS on success, or one of the +cairo_status_t error codes for failure. + +Since 1.12 -cairo_raster_source_finish_func_t () +cairo_raster_source_finish_func_t () cairo_raster_source_finish_func_t -void (*cairo_raster_source_finish_func_t) - (cairo_pattern_t *pattern, - void *callback_data); - -cairo_raster_source_finish_func_t is the type of function which is -called when the pattern (or a copy thereof) is no longer required. - -pattern : -the pattern being rendered from -callback_data : -the user data supplied during creation -Since 1.12 +void +(*cairo_raster_source_finish_func_t) (cairo_pattern_t *pattern, + void *callback_data); +cairo_raster_source_finish_func_t is the type of function which is +called when the pattern (or a copy thereof) is no longer required. + +Parameters + + + + + + +pattern +the pattern being rendered from + +callback_data +the user data supplied during creation + + +Since 1.12 + + + +Types and Values See Also -cairo_pattern_t +cairo_pattern_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-recording.xml cairo-1.14.2/doc/public/xml/cairo-recording.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-recording.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-recording.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,36 +16,55 @@ Records all drawing operations - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_recording_surface_create () +void +cairo_recording_surface_ink_extents () +cairo_bool_t +cairo_recording_surface_get_extents () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_RECORDING_SURFACE + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_RECORDING_SURFACE -cairo_surface_t * cairo_recording_surface_create (cairo_content_t content, - const cairo_rectangle_t *extents); -void cairo_recording_surface_ink_extents (cairo_surface_t *surface, - double *x0, - double *y0, - double *width, - double *height); -cairo_bool_t cairo_recording_surface_get_extents (cairo_surface_t *surface, - cairo_rectangle_t *extents); - - Description - -A recording surface is a surface that records all drawing operations at +A recording surface is a surface that records all drawing operations at the highest level of the surface backend interface, (that is, the level of paint, mask, stroke, fill, and show_text_glyphs). The recording surface can then be "replayed" against any target surface by using it -as a source surface. - - -If you want to replay a surface so that the results in target will be +as a source surface. +If you want to replay a surface so that the results in target will be 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: +target surface, you can use code like this: cairo_t *cr; @@ -54,104 +73,141 @@ cairo_paint (cr); cairo_destroy (cr); - - -A recording surface is logically unbounded, i.e. it has no implicit constraint +A recording surface is logically unbounded, i.e. it has no implicit constraint on the size of the drawing surface. However, in practice this is rarely useful as you wish to replay against a particular target surface with known bounds. For this case, it is more efficient to specify the target -extents to the recording surface upon creation. - - -The recording phase of the recording surface is careful to snapshot all +extents to the recording surface upon creation. +The recording phase of the recording surface is careful to snapshot all necessary objects (paths, patterns, etc.), in order to achieve accurate replay. The efficiency of the recording surface could be improved by improving the implementation of snapshot for the various objects. For example, it would be nice to have a -copy-on-write implementation for _cairo_surface_snapshot. - +copy-on-write implementation for _cairo_surface_snapshot. + - -Details - -CAIRO_HAS_RECORDING_SURFACE -CAIRO_HAS_RECORDING_SURFACE -#define CAIRO_HAS_RECORDING_SURFACE 1 - - -Defined if the recording surface backend is available. -The recording surface backend is always built in. -This macro was added for completeness in cairo 1.10. -Since 1.10 + +Functions -cairo_recording_surface_create () +cairo_recording_surface_create () cairo_recording_surface_create -cairo_surface_t * cairo_recording_surface_create (cairo_content_t content, - const cairo_rectangle_t *extents); - -Creates a recording-surface which can be used to record all drawing operations +cairo_surface_t * +cairo_recording_surface_create (cairo_content_t content, + const cairo_rectangle_t *extents); +Creates a recording-surface which can be used to record all drawing operations at the highest level (that is, the level of paint, mask, stroke, fill and show_text_glyphs). The recording surface can then be "replayed" against -any target surface by using it as a source to drawing operations. - - -The recording phase of the recording surface is careful to snapshot all +any target surface by using it as a source to drawing operations. +The recording phase of the recording surface is careful to snapshot all necessary objects (paths, patterns, etc.), in order to achieve -accurate replay. - -content : -the content of the recording surface -extents : -the extents to record in pixels, can be NULL to record -unbounded operations. -Returns :a pointer to the newly created surface. The caller +accurate replay. + +Parameters + + + + + + +content +the content of the recording surface + +extents +the extents to record in pixels, can be NULL to record +unbounded operations. + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -Since 1.10 +with it. + +Since 1.10 -cairo_recording_surface_ink_extents () +cairo_recording_surface_ink_extents () cairo_recording_surface_ink_extents -void cairo_recording_surface_ink_extents (cairo_surface_t *surface, - double *x0, - double *y0, - double *width, - double *height); - -Measures the extents of the operations stored within the recording-surface. +void +cairo_recording_surface_ink_extents (cairo_surface_t *surface, + double *x0, + double *y0, + double *width, + double *height); +Measures the extents of the operations stored within the recording-surface. This is useful to compute the required size of an image surface (or -equivalent) into which to replay the full sequence of drawing operations. - -surface : -a cairo_recording_surface_t -x0 : -the x-coordinate of the top-left of the ink bounding box -y0 : -the y-coordinate of the top-left of the ink bounding box -width : -the width of the ink bounding box -height : -the height of the ink bounding box -Since 1.10 +equivalent) into which to replay the full sequence of drawing operations. + +Parameters + + + + + + +surface +a cairo_recording_surface_t + +x0 +the x-coordinate of the top-left of the ink bounding box + +y0 +the y-coordinate of the top-left of the ink bounding box + +width +the width of the ink bounding box + +height +the height of the ink bounding box + + +Since 1.10 -cairo_recording_surface_get_extents () +cairo_recording_surface_get_extents () cairo_recording_surface_get_extents -cairo_bool_t cairo_recording_surface_get_extents (cairo_surface_t *surface, - cairo_rectangle_t *extents); - -Get the extents of the recording-surface. - -surface : -a cairo_recording_surface_t -extents : -the cairo_rectangle_t to be assigned the extents -Returns :TRUE if the surface is bounded, of recording type, and -not in an error state, otherwise FALSE -Since 1.12 +cairo_bool_t +cairo_recording_surface_get_extents (cairo_surface_t *surface, + cairo_rectangle_t *extents); +Get the extents of the recording-surface. + +Parameters + + + + + + +surface +a cairo_recording_surface_t + +extents +the cairo_rectangle_t to be assigned the extents + + + +Returns + TRUE if the surface is bounded, of recording type, and +not in an error state, otherwise FALSE + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_RECORDING_SURFACE +CAIRO_HAS_RECORDING_SURFACE +#define CAIRO_HAS_RECORDING_SURFACE 1 + +Defined if the recording surface backend is available. +The recording surface backend is always built in. +This macro was added for completeness in cairo 1.10. +Since 1.10 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-region.xml cairo-1.14.2/doc/public/xml/cairo-region.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-region.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-region.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,442 +16,803 @@ Representing a pixel-aligned area - -Synopsis + +Functions + + + + + +cairo_region_t * +cairo_region_create () +cairo_region_t * +cairo_region_create_rectangle () +cairo_region_t * +cairo_region_create_rectangles () +cairo_region_t * +cairo_region_copy () +cairo_region_t * +cairo_region_reference () +void +cairo_region_destroy () +cairo_status_t +cairo_region_status () +void +cairo_region_get_extents () +int +cairo_region_num_rectangles () +void +cairo_region_get_rectangle () +cairo_bool_t +cairo_region_is_empty () +cairo_bool_t +cairo_region_contains_point () +cairo_region_overlap_t +cairo_region_contains_rectangle () +cairo_bool_t +cairo_region_equal () +void +cairo_region_translate () +cairo_status_t +cairo_region_intersect () +cairo_status_t +cairo_region_intersect_rectangle () +cairo_status_t +cairo_region_subtract () +cairo_status_t +cairo_region_subtract_rectangle () +cairo_status_t +cairo_region_union () +cairo_status_t +cairo_region_union_rectangle () +cairo_status_t +cairo_region_xor () +cairo_status_t +cairo_region_xor_rectangle () + + + + + + +Types and Values + + + + + +typedefcairo_region_t +enumcairo_region_overlap_t + + + + + + +Object Hierarchy + + + -typedef cairo_region_t; -cairo_region_t * cairo_region_create (void); -cairo_region_t * cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); -cairo_region_t * cairo_region_create_rectangles (const cairo_rectangle_int_t *rects, - int count); -cairo_region_t * cairo_region_copy (const cairo_region_t *original); -cairo_region_t * cairo_region_reference (cairo_region_t *region); -void cairo_region_destroy (cairo_region_t *region); -cairo_status_t cairo_region_status (const cairo_region_t *region); -void cairo_region_get_extents (const cairo_region_t *region, - cairo_rectangle_int_t *extents); -int cairo_region_num_rectangles (const cairo_region_t *region); -void cairo_region_get_rectangle (const cairo_region_t *region, - int nth, - cairo_rectangle_int_t *rectangle); -cairo_bool_t cairo_region_is_empty (const cairo_region_t *region); -cairo_bool_t cairo_region_contains_point (const cairo_region_t *region, - int x, - int y); -enum cairo_region_overlap_t; -cairo_region_overlap_t cairo_region_contains_rectangle (const cairo_region_t *region, - const cairo_rectangle_int_t *rectangle); -cairo_bool_t cairo_region_equal (const cairo_region_t *a, - const cairo_region_t *b); -void cairo_region_translate (cairo_region_t *region, - int dx, - int dy); -cairo_status_t cairo_region_intersect (cairo_region_t *dst, - const cairo_region_t *other); -cairo_status_t cairo_region_intersect_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); -cairo_status_t cairo_region_subtract (cairo_region_t *dst, - const cairo_region_t *other); -cairo_status_t cairo_region_subtract_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); -cairo_status_t cairo_region_union (cairo_region_t *dst, - const cairo_region_t *other); -cairo_status_t cairo_region_union_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); -cairo_status_t cairo_region_xor (cairo_region_t *dst, - const cairo_region_t *other); -cairo_status_t cairo_region_xor_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - - Description - -Regions are a simple graphical data type representing an area of +Regions are a simple graphical data type representing an area of integer-aligned rectangles. They are often used on raster surfaces -to track areas of interest, such as change or clip areas. - +to track areas of interest, such as change or clip areas. + - -Details - -cairo_region_t -cairo_region_t -typedef struct _cairo_region cairo_region_t; - - -A cairo_region_t represents a set of integer-aligned rectangles. - - -It allows set-theoretical operations like cairo_region_union() and -cairo_region_intersect() to be performed on them. - - -Memory management of cairo_region_t is done with -cairo_region_reference() and cairo_region_destroy(). -Since 1.10 + +Functions -cairo_region_create () +cairo_region_create () cairo_region_create -cairo_region_t * cairo_region_create (void); - -Allocates a new empty region object. - -Returns :A newly allocated cairo_region_t. Free with +cairo_region_t * +cairo_region_create (void); +Allocates a new empty region object. + +Returns + A newly allocated cairo_region_t. Free with cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status(). -Since 1.10 +You can check for this with cairo_region_status(). + +Since 1.10 -cairo_region_create_rectangle () +cairo_region_create_rectangle () cairo_region_create_rectangle -cairo_region_t * cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); - -Allocates a new region object containing rectangle. - -rectangle : -a cairo_rectangle_int_t -Returns :A newly allocated cairo_region_t. Free with +cairo_region_t * +cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); +Allocates a new region object containing rectangle +. + +Parameters + + + + + + +rectangle +a cairo_rectangle_int_t + + + +Returns + A newly allocated cairo_region_t. Free with cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status(). -Since 1.10 +You can check for this with cairo_region_status(). + +Since 1.10 -cairo_region_create_rectangles () +cairo_region_create_rectangles () cairo_region_create_rectangles -cairo_region_t * cairo_region_create_rectangles (const cairo_rectangle_int_t *rects, - int count); - -Allocates a new region object containing the union of all given rects. - -rects : -an array of count rectangles -count : -number of rectangles -Returns :A newly allocated cairo_region_t. Free with +cairo_region_t * +cairo_region_create_rectangles (const cairo_rectangle_int_t *rects, + int count); +Allocates a new region object containing the union of all given rects +. + +Parameters + + + + + + +rects +an array of count +rectangles + +count +number of rectangles + + + +Returns + A newly allocated cairo_region_t. Free with cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status(). -Since 1.10 +You can check for this with cairo_region_status(). + +Since 1.10 -cairo_region_copy () +cairo_region_copy () cairo_region_copy -cairo_region_t * cairo_region_copy (const cairo_region_t *original); - -Allocates a new region object copying the area from original. - -original : -a cairo_region_t -Returns :A newly allocated cairo_region_t. Free with +cairo_region_t * +cairo_region_copy (const cairo_region_t *original); +Allocates a new region object copying the area from original +. + +Parameters + + + + + + +original +a cairo_region_t + + + +Returns + A newly allocated cairo_region_t. Free with cairo_region_destroy(). This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. -You can check for this with cairo_region_status(). -Since 1.10 +You can check for this with cairo_region_status(). + +Since 1.10 -cairo_region_reference () +cairo_region_reference () cairo_region_reference -cairo_region_t * cairo_region_reference (cairo_region_t *region); - -Increases the reference count on region by one. This prevents -region from being destroyed until a matching call to -cairo_region_destroy() is made. - -region : -a cairo_region_t -Returns :the referenced cairo_region_t. -Since 1.10 +cairo_region_t * +cairo_region_reference (cairo_region_t *region); +Increases the reference count on region + by one. This prevents +region + from being destroyed until a matching call to +cairo_region_destroy() is made. + +Parameters + + + + + + +region +a cairo_region_t + + + +Returns + the referenced cairo_region_t. + +Since 1.10 -cairo_region_destroy () +cairo_region_destroy () cairo_region_destroy -void cairo_region_destroy (cairo_region_t *region); - -Destroys a cairo_region_t object created with +void +cairo_region_destroy (cairo_region_t *region); +Destroys a cairo_region_t object created with cairo_region_create(), cairo_region_copy(), or -or cairo_region_create_rectangle(). - -region : -a cairo_region_t -Since 1.10 +or cairo_region_create_rectangle(). + +Parameters + + + + + + +region +a cairo_region_t + + +Since 1.10 -cairo_region_status () +cairo_region_status () cairo_region_status -cairo_status_t cairo_region_status (const cairo_region_t *region); - -Checks whether an error has previous occurred for this -region object. - -region : -a cairo_region_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_status (const cairo_region_t *region); +Checks whether an error has previous occurred for this +region object. + +Parameters + + + + + + +region +a cairo_region_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_get_extents () +cairo_region_get_extents () cairo_region_get_extents -void cairo_region_get_extents (const cairo_region_t *region, - cairo_rectangle_int_t *extents); - -Gets the bounding rectangle of region as a cairo_rectangle_int_t - -region : -a cairo_region_t -extents : -rectangle into which to store the extents -Since 1.10 +void +cairo_region_get_extents (const cairo_region_t *region, + cairo_rectangle_int_t *extents); +Gets the bounding rectangle of region + as a cairo_rectangle_int_t + +Parameters + + + + + + +region +a cairo_region_t + +extents +rectangle into which to store the extents + + +Since 1.10 -cairo_region_num_rectangles () +cairo_region_num_rectangles () cairo_region_num_rectangles -int cairo_region_num_rectangles (const cairo_region_t *region); - -Returns the number of rectangles contained in region. - -region : -a cairo_region_t -Returns :The number of rectangles contained in region. -Since 1.10 +int +cairo_region_num_rectangles (const cairo_region_t *region); +Returns the number of rectangles contained in region +. + +Parameters + + + + + + +region +a cairo_region_t + + + +Returns + The number of rectangles contained in region +. + +Since 1.10 -cairo_region_get_rectangle () +cairo_region_get_rectangle () cairo_region_get_rectangle -void cairo_region_get_rectangle (const cairo_region_t *region, - int nth, - cairo_rectangle_int_t *rectangle); - -Stores the nth rectangle from the region in rectangle. - -region : -a cairo_region_t -nth : -a number indicating which rectangle should be returned -rectangle : -return location for a cairo_rectangle_int_t -Since 1.10 +void +cairo_region_get_rectangle (const cairo_region_t *region, + int nth, + cairo_rectangle_int_t *rectangle); +Stores the nth + rectangle from the region in rectangle +. + +Parameters + + + + + + +region +a cairo_region_t + +nth +a number indicating which rectangle should be returned + +rectangle +return location for a cairo_rectangle_int_t + + +Since 1.10 -cairo_region_is_empty () +cairo_region_is_empty () cairo_region_is_empty -cairo_bool_t cairo_region_is_empty (const cairo_region_t *region); - -Checks whether region is empty. - -region : -a cairo_region_t -Returns :TRUE if region is empty, FALSE if it isn't. -Since 1.10 +cairo_bool_t +cairo_region_is_empty (const cairo_region_t *region); +Checks whether region + is empty. + +Parameters + + + + + + +region +a cairo_region_t + + + +Returns + TRUE if region +is empty, FALSE if it isn't. + +Since 1.10 -cairo_region_contains_point () +cairo_region_contains_point () cairo_region_contains_point -cairo_bool_t cairo_region_contains_point (const cairo_region_t *region, - int x, - int y); - -Checks whether (x, y) is contained in region. - -region : -a cairo_region_t -x : -the x coordinate of a point -y : -the y coordinate of a point -Returns :TRUE if (x, y) is contained in region, FALSE if it is not. -Since 1.10 - -enum cairo_region_overlap_t -cairo_region_overlap_t -typedef enum { - CAIRO_REGION_OVERLAP_IN, /* completely inside region */ - CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ - CAIRO_REGION_OVERLAP_PART /* partly inside region */ -} cairo_region_overlap_t; - - -Used as the return value for cairo_region_contains_rectangle(). - - -CAIRO_REGION_OVERLAP_IN -The contents are entirely inside the region. (Since 1.10) - - - -CAIRO_REGION_OVERLAP_OUT -The contents are entirely outside the region. (Since 1.10) - - - -CAIRO_REGION_OVERLAP_PART -The contents are partially inside and - partially outside the region. (Since 1.10) - - -Since 1.10 +cairo_bool_t +cairo_region_contains_point (const cairo_region_t *region, + int x, + int y); +Checks whether (x +, y +) is contained in region +. + +Parameters + + + + + + +region +a cairo_region_t + +x +the x coordinate of a point + +y +the y coordinate of a point + + + +Returns + TRUE if (x +, y +) is contained in region +, FALSE if it is not. + +Since 1.10 -cairo_region_contains_rectangle () +cairo_region_contains_rectangle () cairo_region_contains_rectangle -cairo_region_overlap_t cairo_region_contains_rectangle (const cairo_region_t *region, - const cairo_rectangle_int_t *rectangle); - -Checks whether rectangle is inside, outside or partially contained +cairo_region_overlap_t +cairo_region_contains_rectangle (const cairo_region_t *region, + const cairo_rectangle_int_t *rectangle); +Checks whether rectangle + is inside, outside or partially contained in region - -region : -a cairo_region_t -rectangle : -a cairo_rectangle_int_t -Returns :CAIRO_REGION_OVERLAP_IN if rectangle is entirely inside region, -CAIRO_REGION_OVERLAP_OUT if rectangle is entirely outside region, or -CAIRO_REGION_OVERLAP_PART if rectangle is partially inside and partially outside region. -Since 1.10 + + +Parameters + + + + + + +region +a cairo_region_t + +rectangle +a cairo_rectangle_int_t + + + +Returns + CAIRO_REGION_OVERLAP_IN if rectangle +is entirely inside region +, +CAIRO_REGION_OVERLAP_OUT if rectangle +is entirely outside region +, or +CAIRO_REGION_OVERLAP_PART if rectangle +is partially inside and partially outside region +. + +Since 1.10 -cairo_region_equal () +cairo_region_equal () cairo_region_equal -cairo_bool_t cairo_region_equal (const cairo_region_t *a, - const cairo_region_t *b); - -Compares whether region_a is equivalent to region_b. NULL as an argument -is equal to itself, but not to any non-NULL region. - -a : -a cairo_region_t or NULL -b : -a cairo_region_t or NULL -Returns :TRUE if both regions contained the same coverage, -FALSE if it is not or any region is in an error status. -Since 1.10 +cairo_bool_t +cairo_region_equal (const cairo_region_t *a, + const cairo_region_t *b); +Compares whether region_a is equivalent to region_b. NULL as an argument +is equal to itself, but not to any non-NULL region. + +Parameters + + + + + + +a +a cairo_region_t or NULL + +b +a cairo_region_t or NULL + + + +Returns + TRUE if both regions contained the same coverage, +FALSE if it is not or any region is in an error status. + +Since 1.10 -cairo_region_translate () +cairo_region_translate () cairo_region_translate -void cairo_region_translate (cairo_region_t *region, - int dx, - int dy); - -Translates region by (dx, dy). - -region : -a cairo_region_t -dx : -Amount to translate in the x direction -dy : -Amount to translate in the y direction -Since 1.10 +void +cairo_region_translate (cairo_region_t *region, + int dx, + int dy); +Translates region + by (dx +, dy +). + +Parameters + + + + + + +region +a cairo_region_t + +dx +Amount to translate in the x direction + +dy +Amount to translate in the y direction + + +Since 1.10 -cairo_region_intersect () +cairo_region_intersect () cairo_region_intersect -cairo_status_t cairo_region_intersect (cairo_region_t *dst, - const cairo_region_t *other); - -Computes the intersection of dst with other and places the result in dst - -dst : -a cairo_region_t -other : -another cairo_region_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_intersect (cairo_region_t *dst, + const cairo_region_t *other); +Computes the intersection of dst + with other + and places the result in dst + + +Parameters + + + + + + +dst +a cairo_region_t + +other +another cairo_region_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_intersect_rectangle () +cairo_region_intersect_rectangle () cairo_region_intersect_rectangle -cairo_status_t cairo_region_intersect_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -Computes the intersection of dst with rectangle and places the +cairo_status_t +cairo_region_intersect_rectangle (cairo_region_t *dst, + const cairo_rectangle_int_t *rectangle); +Computes the intersection of dst + with rectangle + and places the result in dst - -dst : -a cairo_region_t -rectangle : -a cairo_rectangle_int_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 + + +Parameters + + + + + + +dst +a cairo_region_t + +rectangle +a cairo_rectangle_int_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_subtract () +cairo_region_subtract () cairo_region_subtract -cairo_status_t cairo_region_subtract (cairo_region_t *dst, - const cairo_region_t *other); - -Subtracts other from dst and places the result in dst - -dst : -a cairo_region_t -other : -another cairo_region_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_subtract (cairo_region_t *dst, + const cairo_region_t *other); +Subtracts other + from dst + and places the result in dst + + +Parameters + + + + + + +dst +a cairo_region_t + +other +another cairo_region_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_subtract_rectangle () +cairo_region_subtract_rectangle () cairo_region_subtract_rectangle -cairo_status_t cairo_region_subtract_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -Subtracts rectangle from dst and places the result in dst - -dst : -a cairo_region_t -rectangle : -a cairo_rectangle_int_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_subtract_rectangle (cairo_region_t *dst, + const cairo_rectangle_int_t *rectangle); +Subtracts rectangle + from dst + and places the result in dst + + +Parameters + + + + + + +dst +a cairo_region_t + +rectangle +a cairo_rectangle_int_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_union () +cairo_region_union () cairo_region_union -cairo_status_t cairo_region_union (cairo_region_t *dst, - const cairo_region_t *other); - -Computes the union of dst with other and places the result in dst - -dst : -a cairo_region_t -other : -another cairo_region_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_union (cairo_region_t *dst, + const cairo_region_t *other); +Computes the union of dst + with other + and places the result in dst + + +Parameters + + + + + + +dst +a cairo_region_t + +other +another cairo_region_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_union_rectangle () +cairo_region_union_rectangle () cairo_region_union_rectangle -cairo_status_t cairo_region_union_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -Computes the union of dst with rectangle and places the result in dst. - -dst : -a cairo_region_t -rectangle : -a cairo_rectangle_int_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_union_rectangle (cairo_region_t *dst, + const cairo_rectangle_int_t *rectangle); +Computes the union of dst + with rectangle + and places the result in dst +. + +Parameters + + + + + + +dst +a cairo_region_t + +rectangle +a cairo_rectangle_int_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_xor () +cairo_region_xor () cairo_region_xor -cairo_status_t cairo_region_xor (cairo_region_t *dst, - const cairo_region_t *other); - -Computes the exclusive difference of dst with other and places the -result in dst. That is, dst will be set to contain all areas that -are either in dst or in other, but not in both. - -dst : -a cairo_region_t -other : -another cairo_region_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_xor (cairo_region_t *dst, + const cairo_region_t *other); +Computes the exclusive difference of dst + with other + and places the +result in dst +. That is, dst + will be set to contain all areas that +are either in dst + or in other +, but not in both. + +Parameters + + + + + + +dst +a cairo_region_t + +other +another cairo_region_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 -cairo_region_xor_rectangle () +cairo_region_xor_rectangle () cairo_region_xor_rectangle -cairo_status_t cairo_region_xor_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -Computes the exclusive difference of dst with rectangle and places the -result in dst. That is, dst will be set to contain all areas that are -either in dst or in rectangle, but not in both. - -dst : -a cairo_region_t -rectangle : -a cairo_rectangle_int_t -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY -Since 1.10 +cairo_status_t +cairo_region_xor_rectangle (cairo_region_t *dst, + const cairo_rectangle_int_t *rectangle); +Computes the exclusive difference of dst + with rectangle + and places the +result in dst +. That is, dst + will be set to contain all areas that are +either in dst + or in rectangle +, but not in both. + +Parameters + + + + + + +dst +a cairo_region_t + +rectangle +a cairo_rectangle_int_t + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY + +Since 1.10 + + + +Types and Values + +cairo_region_t +cairo_region_t +typedef struct _cairo_region cairo_region_t; + +A cairo_region_t represents a set of integer-aligned rectangles. +It allows set-theoretical operations like cairo_region_union() and +cairo_region_intersect() to be performed on them. +Memory management of cairo_region_t is done with +cairo_region_reference() and cairo_region_destroy(). +Since 1.10 + +enum cairo_region_overlap_t +cairo_region_overlap_t +Used as the return value for cairo_region_contains_rectangle(). + +Members + + + + + + +CAIRO_REGION_OVERLAP_IN +The contents are entirely inside the region. (Since 1.10) + + + +CAIRO_REGION_OVERLAP_OUT +The contents are entirely outside the region. (Since 1.10) + + + +CAIRO_REGION_OVERLAP_PART +The contents are partially inside and + partially outside the region. (Since 1.10) + + + + +Since 1.10 diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-scaled-font.xml cairo-1.14.2/doc/public/xml/cairo-scaled-font.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-scaled-font.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-scaled-font.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,390 +16,364 @@ Font face at particular size and options - -Synopsis + +Functions + + + + + +cairo_scaled_font_t * +cairo_scaled_font_create () +cairo_scaled_font_t * +cairo_scaled_font_reference () +void +cairo_scaled_font_destroy () +cairo_status_t +cairo_scaled_font_status () +void +cairo_scaled_font_extents () +void +cairo_scaled_font_text_extents () +void +cairo_scaled_font_glyph_extents () +cairo_status_t +cairo_scaled_font_text_to_glyphs () +cairo_font_face_t * +cairo_scaled_font_get_font_face () +void +cairo_scaled_font_get_font_options () +void +cairo_scaled_font_get_font_matrix () +void +cairo_scaled_font_get_ctm () +void +cairo_scaled_font_get_scale_matrix () +cairo_font_type_t +cairo_scaled_font_get_type () +unsigned int +cairo_scaled_font_get_reference_count () +cairo_status_t +cairo_scaled_font_set_user_data () +void * +cairo_scaled_font_get_user_data () + + + + + + +Types and Values + + + + + +typedefcairo_scaled_font_t +cairo_font_extents_t +cairo_text_extents_t + + + + + + +Object Hierarchy + + + -typedef cairo_scaled_font_t; -cairo_scaled_font_t * cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options); -cairo_scaled_font_t * cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); -void cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); -cairo_status_t cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); - cairo_font_extents_t; -void cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - cairo_text_extents_t; -void cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents); -void cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); -cairo_status_t cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); -cairo_font_face_t * cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); -void cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options); -void cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix); -void cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm); -void cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *scale_matrix); -cairo_font_type_t cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); -unsigned int cairo_scaled_font_get_reference_count - (cairo_scaled_font_t *scaled_font); -cairo_status_t cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key); - - Description - -cairo_scaled_font_t represents a realization of a font face at a particular -size and transformation and a certain set of font options. - +cairo_scaled_font_t represents a realization of a font face at a particular +size and transformation and a certain set of font options. + - -Details - -cairo_scaled_font_t -cairo_scaled_font_t -typedef struct _cairo_scaled_font cairo_scaled_font_t; - - -A cairo_scaled_font_t is a font scaled to a particular size and device -resolution. A cairo_scaled_font_t is most useful for low-level font -usage where a library or application wants to cache a reference -to a scaled font to speed up the computation of metrics. - - -There are various types of scaled fonts, depending on the -font backend they use. The type of a -scaled font can be queried using cairo_scaled_font_get_type(). - - -Memory management of cairo_scaled_font_t is done with -cairo_scaled_font_reference() and cairo_scaled_font_destroy(). -Since 1.0 + +Functions -cairo_scaled_font_create () +cairo_scaled_font_create () cairo_scaled_font_create -cairo_scaled_font_t * cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options); - -Creates a cairo_scaled_font_t object from a font face and matrices that +cairo_scaled_font_t * +cairo_scaled_font_create (cairo_font_face_t *font_face, + const cairo_matrix_t *font_matrix, + const cairo_matrix_t *ctm, + const cairo_font_options_t *options); +Creates a cairo_scaled_font_t object from a font face and matrices that describe the size of the font and the environment in which it will -be used. - -font_face : -a cairo_font_face_t -font_matrix : -font space to user space transformation matrix for the +be used. + +Parameters + + + + + + +font_face +a cairo_font_face_t + +font_matrix +font space to user space transformation matrix for the font. In the simplest case of a N point font, this matrix is just a scale by N, but it can also be used to shear the font or stretch it unequally along the two axes. See -cairo_set_font_matrix(). -ctm : -user to device transformation matrix with which the font will -be used. -options : -options to use when getting metrics for the font and -rendering with it. -Returns :a newly created cairo_scaled_font_t. Destroy with -cairo_scaled_font_destroy() -Since 1.0 +cairo_set_font_matrix(). + +ctm +user to device transformation matrix with which the font will +be used. + +options +options to use when getting metrics for the font and +rendering with it. + + + +Returns + a newly created cairo_scaled_font_t. Destroy with +cairo_scaled_font_destroy() + +Since 1.0 -cairo_scaled_font_reference () +cairo_scaled_font_reference () cairo_scaled_font_reference -cairo_scaled_font_t * cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); - -Increases the reference count on scaled_font by one. This prevents -scaled_font from being destroyed until a matching call to -cairo_scaled_font_destroy() is made. - - -The number of references to a cairo_scaled_font_t can be get using -cairo_scaled_font_get_reference_count(). - -scaled_font : -a cairo_scaled_font_t, (may be NULL in which case -this function does nothing) -Returns :the referenced cairo_scaled_font_t -Since 1.0 +cairo_scaled_font_t * +cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); +Increases the reference count on scaled_font + by one. This prevents +scaled_font + from being destroyed until a matching call to +cairo_scaled_font_destroy() is made. +The number of references to a cairo_scaled_font_t can be get using +cairo_scaled_font_get_reference_count(). + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t, (may be NULL in which case +this function does nothing) + + + +Returns + the referenced cairo_scaled_font_t + +Since 1.0 -cairo_scaled_font_destroy () +cairo_scaled_font_destroy () cairo_scaled_font_destroy -void cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); - -Decreases the reference count on font by one. If the result -is zero, then font and all associated resources are freed. -See cairo_scaled_font_reference(). - -scaled_font : -a cairo_scaled_font_t -Since 1.0 +void +cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); +Decreases the reference count on font + by one. If the result +is zero, then font + and all associated resources are freed. +See cairo_scaled_font_reference(). + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + + +Since 1.0 -cairo_scaled_font_status () +cairo_scaled_font_status () cairo_scaled_font_status -cairo_status_t cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); - -Checks whether an error has previously occurred for this -scaled_font. - -scaled_font : -a cairo_scaled_font_t -Returns :CAIRO_STATUS_SUCCESS or another error such as -CAIRO_STATUS_NO_MEMORY. -Since 1.0 - -cairo_font_extents_t -cairo_font_extents_t -typedef struct { - double ascent; - double descent; - double height; - double max_x_advance; - double max_y_advance; -} cairo_font_extents_t; - - -The cairo_font_extents_t structure stores metric information for -a font. Values are given in the current user-space coordinate -system. - - -Because font metrics are in user-space coordinates, they are -mostly, but not entirely, independent of the current transformation -matrix. If you call cairo_scale(cr, 2.0, 2.0), -text will be drawn twice as big, but the reported text extents will -not be doubled. They will change slightly due to hinting (so you -can't assume that metrics are independent of the transformation -matrix), but otherwise will remain unchanged. - -double ascent; -the distance that the font extends above the baseline. -Note that this is not always exactly equal to the maximum -of the extents of all the glyphs in the font, but rather -is picked to express the font designer's intent as to -how the font should align with elements above it. - -double descent; -the distance that the font extends below the baseline. -This value is positive for typical fonts that include -portions below the baseline. Note that this is not always -exactly equal to the maximum of the extents of all the -glyphs in the font, but rather is picked to express the -font designer's intent as to how the font should -align with elements below it. - -double height; -the recommended vertical distance between baselines when -setting consecutive lines of text with the font. This -is greater than ascent+descent by a -quantity known as the line spacing -or external leading. When space -is at a premium, most fonts can be set with only -a distance of ascent+descent between lines. - -double max_x_advance; -the maximum distance in the X direction that -the origin is advanced for any glyph in the font. - -double max_y_advance; -the maximum distance in the Y direction that -the origin is advanced for any glyph in the font. -This will be zero for normal fonts used for horizontal -writing. (The scripts of East Asia are sometimes written -vertically.) - -Since 1.0 +cairo_status_t +cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); +Checks whether an error has previously occurred for this +scaled_font. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + + + +Returns + CAIRO_STATUS_SUCCESS or another error such as +CAIRO_STATUS_NO_MEMORY. + +Since 1.0 -cairo_scaled_font_extents () +cairo_scaled_font_extents () cairo_scaled_font_extents -void cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - -Gets the metrics for a cairo_scaled_font_t. - -scaled_font : -a cairo_scaled_font_t -extents : -a cairo_font_extents_t which to store the retrieved extents. -Since 1.0 - -cairo_text_extents_t -cairo_text_extents_t -typedef struct { - double x_bearing; - double y_bearing; - double width; - double height; - double x_advance; - double y_advance; -} cairo_text_extents_t; - - -The cairo_text_extents_t structure stores the extents of a single -glyph or a string of glyphs in user-space coordinates. Because text -extents are in user-space coordinates, they are mostly, but not -entirely, independent of the current transformation matrix. If you call -cairo_scale(cr, 2.0, 2.0), text will -be drawn twice as big, but the reported text extents will not be -doubled. They will change slightly due to hinting (so you can't -assume that metrics are independent of the transformation matrix), -but otherwise will remain unchanged. - -double x_bearing; -the horizontal distance from the origin to the -leftmost part of the glyphs as drawn. Positive if the -glyphs lie entirely to the right of the origin. - -double y_bearing; -the vertical distance from the origin to the -topmost part of the glyphs as drawn. Positive only if the -glyphs lie completely below the origin; will usually be -negative. - -double width; -width of the glyphs as drawn - -double height; -height of the glyphs as drawn - -double x_advance; -distance to advance in the X direction -after drawing these glyphs - -double y_advance; -distance to advance in the Y direction -after drawing these glyphs. Will typically be zero except -for vertical text layout as found in East-Asian languages. - -Since 1.0 +void +cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, + cairo_font_extents_t *extents); +Gets the metrics for a cairo_scaled_font_t. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +extents +a cairo_font_extents_t which to store the retrieved extents. + + +Since 1.0 -cairo_scaled_font_text_extents () +cairo_scaled_font_text_extents () cairo_scaled_font_text_extents -void cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents); - -Gets the extents for a string of text. The extents describe a +void +cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, + const char *utf8, + cairo_text_extents_t *extents); +Gets the extents for a string of text. The extents describe a user-space rectangle that encloses the "inked" portion of the text drawn at the origin (0,0) (as it would be drawn by cairo_show_text() if the cairo graphics state were set to the same font_face, -font_matrix, ctm, and font_options as scaled_font). Additionally, +font_matrix, ctm, and font_options as scaled_font +). Additionally, the x_advance and y_advance values indicate the amount by which the -current point would be advanced by cairo_show_text(). - - -Note that whitespace characters do not directly contribute to the +current point would be advanced by cairo_show_text(). +Note that whitespace characters do not directly contribute to the size of the rectangle (extents.width and extents.height). They do contribute indirectly by changing the position of non-whitespace characters. In particular, trailing whitespace characters are likely to not affect the size of the rectangle, though they will -affect the x_advance and y_advance values. - -scaled_font : -a cairo_scaled_font_t -utf8 : -a NUL-terminated string of text, encoded in UTF-8 -extents : -a cairo_text_extents_t which to store the retrieved extents. -Since 1.2 +affect the x_advance and y_advance values. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +utf8 +a NUL-terminated string of text, encoded in UTF-8 + +extents +a cairo_text_extents_t which to store the retrieved extents. + + +Since 1.2 -cairo_scaled_font_glyph_extents () +cairo_scaled_font_glyph_extents () cairo_scaled_font_glyph_extents -void cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -Gets the extents for an array of glyphs. The extents describe a +void +cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, + const cairo_glyph_t *glyphs, + int num_glyphs, + cairo_text_extents_t *extents); +Gets the extents for an array of glyphs. The extents describe a user-space rectangle that encloses the "inked" portion of the glyphs, (as they would be drawn by cairo_show_glyphs() if the cairo graphics state were set to the same font_face, font_matrix, ctm, -and font_options as scaled_font). Additionally, the x_advance and +and font_options as scaled_font +). Additionally, the x_advance and y_advance values indicate the amount by which the current point -would be advanced by cairo_show_glyphs(). - - -Note that whitespace glyphs do not contribute to the size of the -rectangle (extents.width and extents.height). - -scaled_font : -a cairo_scaled_font_t -glyphs : -an array of glyph IDs with X and Y offsets. -num_glyphs : -the number of glyphs in the glyphs array -extents : -a cairo_text_extents_t which to store the retrieved extents. -Since 1.0 +would be advanced by cairo_show_glyphs(). +Note that whitespace glyphs do not contribute to the size of the +rectangle (extents.width and extents.height). + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +glyphs +an array of glyph IDs with X and Y offsets. + +num_glyphs +the number of glyphs in the glyphs +array + +extents +a cairo_text_extents_t which to store the retrieved extents. + + +Since 1.0 -cairo_scaled_font_text_to_glyphs () +cairo_scaled_font_text_to_glyphs () cairo_scaled_font_text_to_glyphs -cairo_status_t cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -Converts UTF-8 text to an array of glyphs, optionally with cluster -mapping, that can be used to render later using scaled_font. - - -If glyphs initially points to a non-NULL value, that array is used -as a glyph buffer, and num_glyphs should point to the number of glyph +cairo_status_t +cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, + double x, + double y, + const char *utf8, + int utf8_len, + cairo_glyph_t **glyphs, + int *num_glyphs, + cairo_text_cluster_t **clusters, + int *num_clusters, + cairo_text_cluster_flags_t *cluster_flags); +Converts UTF-8 text to an array of glyphs, optionally with cluster +mapping, that can be used to render later using scaled_font +. +If glyphs + initially points to a non-NULL value, that array is used +as a glyph buffer, and num_glyphs + should point to the number of glyph entries available there. If the provided glyph array is too short for the conversion, a new glyph array is allocated using cairo_glyph_allocate() -and placed in glyphs. Upon return, num_glyphs always contains the -number of generated glyphs. If the value glyphs points to has changed +and placed in glyphs +. Upon return, num_glyphs + always contains the +number of generated glyphs. If the value glyphs + points to has changed after the call, the user is responsible for freeing the allocated glyph array using cairo_glyph_free(). This may happen even if the provided -array was large enough. - - -If clusters is not NULL, num_clusters and cluster_flags should not be NULL, +array was large enough. +If clusters + is not NULL, num_clusters + and cluster_flags + should not be NULL, and cluster mapping will be computed. The semantics of how cluster array allocation works is similar to the glyph array. That is, -if clusters initially points to a non-NULL value, that array is used -as a cluster buffer, and num_clusters should point to the number of cluster +if clusters + initially points to a non-NULL value, that array is used +as a cluster buffer, and num_clusters + should point to the number of cluster entries available there. If the provided cluster array is too short for the conversion, a new cluster array is allocated using cairo_text_cluster_allocate() -and placed in clusters. Upon return, num_clusters always contains the -number of generated clusters. If the value clusters points at has changed +and placed in clusters +. Upon return, num_clusters + always contains the +number of generated clusters. If the value clusters + points at has changed after the call, the user is responsible for freeing the allocated cluster array using cairo_text_cluster_free(). This may happen even if the provided -array was large enough. - - -In the simplest case, glyphs and clusters can point to NULL initially -and a suitable array will be allocated. In code: +array was large enough. +In the simplest case, glyphs + and clusters + can point to NULL initially +and a suitable array will be allocated. In code: cairo_status_t status; @@ -425,9 +399,7 @@ cairo_text_cluster_free (clusters); } - - -If no cluster mapping is needed: +If no cluster mapping is needed: cairo_status_t status; @@ -446,10 +418,8 @@ cairo_glyph_free (glyphs); } - - -If stack-based glyph and cluster arrays are to be used for small -arrays: +If stack-based glyph and cluster arrays are to be used for small +arrays: cairo_status_t status; @@ -479,190 +449,537 @@ cairo_text_cluster_free (clusters); } - - -For details of how clusters, num_clusters, and cluster_flags map input -UTF-8 text to the output glyphs see cairo_show_text_glyphs(). - - -The output values can be readily passed to cairo_show_text_glyphs() +For details of how clusters +, num_clusters +, and cluster_flags + map input +UTF-8 text to the output glyphs see cairo_show_text_glyphs(). +The output values can be readily passed to cairo_show_text_glyphs() cairo_show_glyphs(), or related functions, assuming that the exact -same scaled_font is used for the operation. - -scaled_font : -a cairo_scaled_font_t -x : -X position to place first glyph -y : -Y position to place first glyph -utf8 : -a string of text encoded in UTF-8 -utf8_len : -length of utf8 in bytes, or -1 if it is NUL-terminated -glyphs : -pointer to array of glyphs to fill -num_glyphs : -pointer to number of glyphs -clusters : -pointer to array of cluster mapping information to fill, or NULL -num_clusters : -pointer to number of clusters, or NULL -cluster_flags : -pointer to location to store cluster flags corresponding to the -output clusters, or NULL -Returns :CAIRO_STATUS_SUCCESS upon success, or an error status +same scaled_font + is used for the operation. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +x +X position to place first glyph + +y +Y position to place first glyph + +utf8 +a string of text encoded in UTF-8 + +utf8_len +length of utf8 +in bytes, or -1 if it is NUL-terminated + +glyphs +pointer to array of glyphs to fill + +num_glyphs +pointer to number of glyphs + +clusters +pointer to array of cluster mapping information to fill, or NULL + +num_clusters +pointer to number of clusters, or NULL + +cluster_flags +pointer to location to store cluster flags corresponding to the +output clusters +, or NULL + + + +Returns + CAIRO_STATUS_SUCCESS upon success, or an error status if the input values are wrong or if conversion failed. If the input values are correct but the conversion failed, the error status is also -set on scaled_font. -Since 1.8 +set on scaled_font +. + +Since 1.8 -cairo_scaled_font_get_font_face () +cairo_scaled_font_get_font_face () cairo_scaled_font_get_font_face -cairo_font_face_t * cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); - -Gets the font face that this scaled font uses. This might be the +cairo_font_face_t * +cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); +Gets the font face that this scaled font uses. This might be the font face passed to cairo_scaled_font_create(), but this does not -hold true for all possible cases. - -scaled_font : -a cairo_scaled_font_t -Returns :The cairo_font_face_t with which scaled_font was +hold true for all possible cases. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + + + +Returns + The cairo_font_face_t with which scaled_font +was created. This object is owned by cairo. To keep a reference to it, -you must call cairo_scaled_font_reference(). -Since 1.2 +you must call cairo_scaled_font_reference(). + +Since 1.2 -cairo_scaled_font_get_font_options () +cairo_scaled_font_get_font_options () cairo_scaled_font_get_font_options -void cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options); - -Stores the font options with which scaled_font was created into -options. - -scaled_font : -a cairo_scaled_font_t -options : -return value for the font options -Since 1.2 +void +cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, + cairo_font_options_t *options); +Stores the font options with which scaled_font + was created into +options +. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +options +return value for the font options + + +Since 1.2 -cairo_scaled_font_get_font_matrix () +cairo_scaled_font_get_font_matrix () cairo_scaled_font_get_font_matrix -void cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix); - -Stores the font matrix with which scaled_font was created into -matrix. - -scaled_font : -a cairo_scaled_font_t -font_matrix : -return value for the matrix -Since 1.2 +void +cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, + cairo_matrix_t *font_matrix); +Stores the font matrix with which scaled_font + was created into +matrix +. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +font_matrix +return value for the matrix + + +Since 1.2 -cairo_scaled_font_get_ctm () +cairo_scaled_font_get_ctm () cairo_scaled_font_get_ctm -void cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm); - -Stores the CTM with which scaled_font was created into ctm. +void +cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, + cairo_matrix_t *ctm); +Stores the CTM with which scaled_font + was created into ctm +. Note that the translation offsets (x0, y0) of the CTM are ignored by cairo_scaled_font_create(). So, the matrix this -function returns always has 0,0 as x0,y0. - -scaled_font : -a cairo_scaled_font_t -ctm : -return value for the CTM -Since 1.2 +function returns always has 0,0 as x0,y0. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +ctm +return value for the CTM + + +Since 1.2 -cairo_scaled_font_get_scale_matrix () +cairo_scaled_font_get_scale_matrix () cairo_scaled_font_get_scale_matrix -void cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *scale_matrix); - -Stores the scale matrix of scaled_font into matrix. +void +cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, + cairo_matrix_t *scale_matrix); +Stores the scale matrix of scaled_font + into matrix +. The scale matrix is product of the font matrix and the ctm associated with the scaled font, and hence is the matrix mapping from -font space to device space. - -scaled_font : -a cairo_scaled_font_t -scale_matrix : -return value for the matrix -Since 1.8 +font space to device space. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +scale_matrix +return value for the matrix + + +Since 1.8 -cairo_scaled_font_get_type () +cairo_scaled_font_get_type () cairo_scaled_font_get_type -cairo_font_type_t cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); - -This function returns the type of the backend used to create +cairo_font_type_t +cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); +This function returns the type of the backend used to create a scaled font. See cairo_font_type_t for available types. -However, this function never returns CAIRO_FONT_TYPE_TOY. - -scaled_font : -a cairo_scaled_font_t -Returns :The type of scaled_font. -Since 1.2 +However, this function never returns CAIRO_FONT_TYPE_TOY. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + + + +Returns + The type of scaled_font +. + +Since 1.2 -cairo_scaled_font_get_reference_count () +cairo_scaled_font_get_reference_count () cairo_scaled_font_get_reference_count -unsigned int cairo_scaled_font_get_reference_count - (cairo_scaled_font_t *scaled_font); - -Returns the current reference count of scaled_font. - -scaled_font : -a cairo_scaled_font_t -Returns :the current reference count of scaled_font. If the -object is a nil object, 0 will be returned. -Since 1.4 +unsigned int +cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font); +Returns the current reference count of scaled_font +. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + + + +Returns + the current reference count of scaled_font +. If the +object is a nil object, 0 will be returned. + +Since 1.4 -cairo_scaled_font_set_user_data () +cairo_scaled_font_set_user_data () cairo_scaled_font_set_user_data -cairo_status_t cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to scaled_font. To remove user data from a surface, +cairo_status_t +cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to scaled_font +. To remove user data from a surface, call this function with the key that was used to set it and NULL -for data. - -scaled_font : -a cairo_scaled_font_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the cairo_scaled_font_t -destroy : -a cairo_destroy_func_t which will be called when the +for data +. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the cairo_scaled_font_t + +destroy +a cairo_destroy_func_t which will be called when the cairo_t is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.4 +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.4 -cairo_scaled_font_get_user_data () +cairo_scaled_font_get_user_data () cairo_scaled_font_get_user_data -void * cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key); - -Return user data previously attached to scaled_font using the +void * +cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, + const cairo_user_data_key_t *key); +Return user data previously attached to scaled_font + using the specified key. If no user data has been attached with the given -key this function returns NULL. - -scaled_font : -a cairo_scaled_font_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.4 +key this function returns NULL. + +Parameters + + + + + + +scaled_font +a cairo_scaled_font_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.4 + + + +Types and Values + +cairo_scaled_font_t +cairo_scaled_font_t +typedef struct _cairo_scaled_font cairo_scaled_font_t; + +A cairo_scaled_font_t is a font scaled to a particular size and device +resolution. A cairo_scaled_font_t is most useful for low-level font +usage where a library or application wants to cache a reference +to a scaled font to speed up the computation of metrics. +There are various types of scaled fonts, depending on the +font backend they use. The type of a +scaled font can be queried using cairo_scaled_font_get_type(). +Memory management of cairo_scaled_font_t is done with +cairo_scaled_font_reference() and cairo_scaled_font_destroy(). +Since 1.0 + +cairo_font_extents_t +cairo_font_extents_t +typedef struct { + double ascent; + double descent; + double height; + double max_x_advance; + double max_y_advance; +} cairo_font_extents_t; + +The cairo_font_extents_t structure stores metric information for +a font. Values are given in the current user-space coordinate +system. +Because font metrics are in user-space coordinates, they are +mostly, but not entirely, independent of the current transformation +matrix. If you call cairo_scale(cr, 2.0, 2.0), +text will be drawn twice as big, but the reported text extents will +not be doubled. They will change slightly due to hinting (so you +can't assume that metrics are independent of the transformation +matrix), but otherwise will remain unchanged. + +Members + + + + + + +double ascent; +the distance that the font extends above the baseline. +Note that this is not always exactly equal to the maximum +of the extents of all the glyphs in the font, but rather +is picked to express the font designer's intent as to +how the font should align with elements above it. +the distance that the font extends above the baseline. +Note that this is not always exactly equal to the maximum +of the extents of all the glyphs in the font, but rather +is picked to express the font designer's intent as to +how the font should align with elements above it. + + +double descent; +the distance that the font extends below the baseline. +This value is positive for typical fonts that include +portions below the baseline. Note that this is not always +exactly equal to the maximum of the extents of all the +glyphs in the font, but rather is picked to express the +font designer's intent as to how the font should +align with elements below it. +the distance that the font extends below the baseline. +This value is positive for typical fonts that include +portions below the baseline. Note that this is not always +exactly equal to the maximum of the extents of all the +glyphs in the font, but rather is picked to express the +font designer's intent as to how the font should +align with elements below it. + + +double height; +the recommended vertical distance between baselines when +setting consecutive lines of text with the font. This +is greater than ascent ++descent +by a +quantity known as the line spacing +or external leading. When space +is at a premium, most fonts can be set with only +a distance of ascent ++descent +between lines. +the recommended vertical distance between baselines when +setting consecutive lines of text with the font. This +is greater than ascent ++descent +by a +quantity known as the line spacing +or external leading. When space +is at a premium, most fonts can be set with only +a distance of ascent ++descent +between lines. + + +double max_x_advance; +the maximum distance in the X direction that +the origin is advanced for any glyph in the font. +the maximum distance in the X direction that +the origin is advanced for any glyph in the font. + + +double max_y_advance; +the maximum distance in the Y direction that +the origin is advanced for any glyph in the font. +This will be zero for normal fonts used for horizontal +writing. (The scripts of East Asia are sometimes written +vertically.) +the maximum distance in the Y direction that +the origin is advanced for any glyph in the font. +This will be zero for normal fonts used for horizontal +writing. (The scripts of East Asia are sometimes written +vertically.) + + + + +Since 1.0 + +cairo_text_extents_t +cairo_text_extents_t +typedef struct { + double x_bearing; + double y_bearing; + double width; + double height; + double x_advance; + double y_advance; +} cairo_text_extents_t; + +The cairo_text_extents_t structure stores the extents of a single +glyph or a string of glyphs in user-space coordinates. Because text +extents are in user-space coordinates, they are mostly, but not +entirely, independent of the current transformation matrix. If you call +cairo_scale(cr, 2.0, 2.0), text will +be drawn twice as big, but the reported text extents will not be +doubled. They will change slightly due to hinting (so you can't +assume that metrics are independent of the transformation matrix), +but otherwise will remain unchanged. + +Members + + + + + + +double x_bearing; +the horizontal distance from the origin to the +leftmost part of the glyphs as drawn. Positive if the +glyphs lie entirely to the right of the origin. +the horizontal distance from the origin to the +leftmost part of the glyphs as drawn. Positive if the +glyphs lie entirely to the right of the origin. + + +double y_bearing; +the vertical distance from the origin to the +topmost part of the glyphs as drawn. Positive only if the +glyphs lie completely below the origin; will usually be +negative. +the vertical distance from the origin to the +topmost part of the glyphs as drawn. Positive only if the +glyphs lie completely below the origin; will usually be +negative. + + +double width; +width of the glyphs as drawn +width of the glyphs as drawn + + +double height; +height of the glyphs as drawn +height of the glyphs as drawn + + +double x_advance; +distance to advance in the X direction +after drawing these glyphs +distance to advance in the X direction +after drawing these glyphs + + +double y_advance; +distance to advance in the Y direction +after drawing these glyphs. Will typically be zero except +for vertical text layout as found in East-Asian languages. +distance to advance in the Y direction +after drawing these glyphs. Will typically be zero except +for vertical text layout as found in East-Asian languages. + + + + +Since 1.0 See Also -cairo_font_face_t, cairo_matrix_t, cairo_font_options_t +cairo_font_face_t, cairo_matrix_t, cairo_font_options_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-script.xml cairo-1.14.2/doc/public/xml/cairo-script.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-script.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-script.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,216 +16,347 @@ Rendering to replayable scripts - -Synopsis + +Functions + + + + + +cairo_device_t * +cairo_script_create () +cairo_device_t * +cairo_script_create_for_stream () +cairo_status_t +cairo_script_from_recording_surface () +cairo_script_mode_t +cairo_script_get_mode () +void +cairo_script_set_mode () +cairo_surface_t * +cairo_script_surface_create () +cairo_surface_t * +cairo_script_surface_create_for_target () +void +cairo_script_write_comment () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_SCRIPT_SURFACE +enumcairo_script_mode_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_SCRIPT_SURFACE -cairo_device_t * cairo_script_create (const char *filename); -cairo_device_t * cairo_script_create_for_stream (cairo_write_func_t write_func, - void *closure); -cairo_status_t cairo_script_from_recording_surface (cairo_device_t *script, - cairo_surface_t *recording_surface); -cairo_script_mode_t cairo_script_get_mode (cairo_device_t *script); -enum cairo_script_mode_t; -void cairo_script_set_mode (cairo_device_t *script, - cairo_script_mode_t mode); -cairo_surface_t * cairo_script_surface_create (cairo_device_t *script, - cairo_content_t content, - double width, - double height); -cairo_surface_t * cairo_script_surface_create_for_target - (cairo_device_t *script, - cairo_surface_t *target); -void cairo_script_write_comment (cairo_device_t *script, - const char *comment, - int len); - - Description - -The script surface provides the ability to render to a native +The script surface provides the ability to render to a native script that matches the cairo drawing model. The scripts can be replayed using tools under the util/cairo-script directoriy, -or with cairo-perf-trace. - +or with cairo-perf-trace. + - -Details - -CAIRO_HAS_SCRIPT_SURFACE -CAIRO_HAS_SCRIPT_SURFACE -#define CAIRO_HAS_SCRIPT_SURFACE 1 - - -Defined if the script surface backend is available. -The script surface backend is always built in since 1.12. -Since 1.12 + +Functions -cairo_script_create () +cairo_script_create () cairo_script_create -cairo_device_t * cairo_script_create (const char *filename); - -Creates a output device for emitting the script, used when -creating the individual surfaces. - -filename : -the name (path) of the file to write the script to -Returns :a pointer to the newly created device. The caller +cairo_device_t * +cairo_script_create (const char *filename); +Creates a output device for emitting the script, used when +creating the individual surfaces. + +Parameters + + + + + + +filename +the name (path) of the file to write the script to + + + +Returns + a pointer to the newly created device. The caller owns the surface and should call cairo_device_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" device if an error such as out of memory -occurs. You can use cairo_device_status() to check for this. -Since 1.12 +occurs. You can use cairo_device_status() to check for this. + +Since 1.12 -cairo_script_create_for_stream () +cairo_script_create_for_stream () cairo_script_create_for_stream -cairo_device_t * cairo_script_create_for_stream (cairo_write_func_t write_func, - void *closure); - -Creates a output device for emitting the script, used when -creating the individual surfaces. - -write_func : -callback function passed the bytes written to the script -closure : -user data to be passed to the callback -Returns :a pointer to the newly created device. The caller +cairo_device_t * +cairo_script_create_for_stream (cairo_write_func_t write_func, + void *closure); +Creates a output device for emitting the script, used when +creating the individual surfaces. + +Parameters + + + + + + +write_func +callback function passed the bytes written to the script + +closure +user data to be passed to the callback + + + +Returns + a pointer to the newly created device. The caller owns the surface and should call cairo_device_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" device if an error such as out of memory -occurs. You can use cairo_device_status() to check for this. -Since 1.12 +occurs. You can use cairo_device_status() to check for this. + +Since 1.12 -cairo_script_from_recording_surface () +cairo_script_from_recording_surface () cairo_script_from_recording_surface -cairo_status_t cairo_script_from_recording_surface (cairo_device_t *script, - cairo_surface_t *recording_surface); - -Converts the record operations in recording_surface into a script. - -script : -the script (output device) -recording_surface : -the recording surface to replay -Returns :CAIRO_STATUS_SUCCESS on successful completion or an error code. -Since 1.12 +cairo_status_t +cairo_script_from_recording_surface (cairo_device_t *script, + cairo_surface_t *recording_surface); +Converts the record operations in recording_surface + into a script. + +Parameters + + + + + + +script +the script (output device) + +recording_surface +the recording surface to replay + + + +Returns + CAIRO_STATUS_SUCCESS on successful completion or an error code. + +Since 1.12 -cairo_script_get_mode () +cairo_script_get_mode () cairo_script_get_mode -cairo_script_mode_t cairo_script_get_mode (cairo_device_t *script); - -Queries the script for its current output mode. - -script : -The script (output device) to query -Returns :the current output mode of the script -Since 1.12 - -enum cairo_script_mode_t -cairo_script_mode_t -typedef enum { - CAIRO_SCRIPT_MODE_ASCII, - CAIRO_SCRIPT_MODE_BINARY -} cairo_script_mode_t; - - -A set of script output variants. - - -CAIRO_SCRIPT_MODE_ASCII -the output will be in readable text (default). (Since 1.12) - - - -CAIRO_SCRIPT_MODE_BINARY -the output will use byte codes. (Since 1.12) - - -Since 1.12 +cairo_script_mode_t +cairo_script_get_mode (cairo_device_t *script); +Queries the script for its current output mode. + +Parameters + + + + + + +script +The script (output device) to query + + + +Returns + the current output mode of the script + +Since 1.12 -cairo_script_set_mode () +cairo_script_set_mode () cairo_script_set_mode -void cairo_script_set_mode (cairo_device_t *script, - cairo_script_mode_t mode); - -Change the output mode of the script - -script : -The script (output device) -mode : -the new mode -Since 1.12 +void +cairo_script_set_mode (cairo_device_t *script, + cairo_script_mode_t mode); +Change the output mode of the script + +Parameters + + + + + + +script +The script (output device) + +mode +the new mode + + +Since 1.12 -cairo_script_surface_create () +cairo_script_surface_create () cairo_script_surface_create -cairo_surface_t * cairo_script_surface_create (cairo_device_t *script, - cairo_content_t content, - double width, - double height); - -Create a new surface that will emit its rendering through script - -script : -the script (output device) -content : -the content of the surface -width : -width in pixels -height : -height in pixels -Returns :a pointer to the newly created surface. The caller +cairo_surface_t * +cairo_script_surface_create (cairo_device_t *script, + cairo_content_t content, + double width, + double height); +Create a new surface that will emit its rendering through script + + +Parameters + + + + + + +script +the script (output device) + +content +the content of the surface + +width +width in pixels + +height +height in pixels + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.12 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.12 -cairo_script_surface_create_for_target () +cairo_script_surface_create_for_target () cairo_script_surface_create_for_target -cairo_surface_t * cairo_script_surface_create_for_target - (cairo_device_t *script, - cairo_surface_t *target); - -Create a pxoy surface that will render to target and record -the operations to device. - -script : -the script (output device) -target : -a target surface to wrap -Returns :a pointer to the newly created surface. The caller +cairo_surface_t * +cairo_script_surface_create_for_target + (cairo_device_t *script, + cairo_surface_t *target); +Create a pxoy surface that will render to target + and record +the operations to device +. + +Parameters + + + + + + +script +the script (output device) + +target +a target surface to wrap + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.12 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.12 -cairo_script_write_comment () +cairo_script_write_comment () cairo_script_write_comment -void cairo_script_write_comment (cairo_device_t *script, - const char *comment, - int len); - -Emit a string verbatim into the script. - -script : -the script (output device) -comment : -the string to emit -len : -the length of the sting to write, or -1 to use strlen() -Since 1.12 +void +cairo_script_write_comment (cairo_device_t *script, + const char *comment, + int len); +Emit a string verbatim into the script. + +Parameters + + + + + + +script +the script (output device) + +comment +the string to emit + +len +the length of the sting to write, or -1 to use strlen() + + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_SCRIPT_SURFACE +CAIRO_HAS_SCRIPT_SURFACE +#define CAIRO_HAS_SCRIPT_SURFACE 1 + +Defined if the script surface backend is available. +The script surface backend is always built in since 1.12. +Since 1.12 + +enum cairo_script_mode_t +cairo_script_mode_t +A set of script output variants. + +Members + + + + + + +CAIRO_SCRIPT_MODE_ASCII +the output will be in readable text (default). (Since 1.12) + + + +CAIRO_SCRIPT_MODE_BINARY +the output will use byte codes. (Since 1.12) + + + + +Since 1.12 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-skia.xml cairo-1.14.2/doc/public/xml/cairo-skia.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-skia.xml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-skia.xml 2015-03-11 02:02:37.000000000 +0000 @@ -0,0 +1,99 @@ + + +]> + + +cairo-skia +3 + + CAIRO Library + + + +cairo-skia + + + + +Functions + + + + + +bool +format_to_sk_config () + + + + + + +Types and Values + + + + + +typedefcairo_skia_context_t +typedefcairo_skia_surface_t + + + + + + +Object Hierarchy + + + + + + +Description + + + + + +Functions + +format_to_sk_config () +format_to_sk_config +bool +format_to_sk_config (cairo_format_t format); + + + +Returns + + + + + + +Types and Values + +cairo_skia_context_t +cairo_skia_context_t +typedef struct _cairo_skia_context cairo_skia_context_t; + +A cairo_skia_context_t includes handles to Skia's canvas, +paint, and path objects along with the Cairo source surfaces +and matrix, and the original and target cairo_skia_surface_t +objects. +Since 1.10 + +cairo_skia_surface_t +cairo_skia_surface_t +typedef struct _cairo_skia_surface cairo_skia_surface_t; + +A cairo_skia_surface_t is a container for the underlying +SkBitmap and the corresponding Cairo image surface. +Since 1.10 + + + + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-status.xml cairo-1.14.2/doc/public/xml/cairo-status.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-status.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-status.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,342 +16,339 @@ Decoding cairo's status - -Synopsis + +Functions + + + + + +const char * +cairo_status_to_string () +void +cairo_debug_reset_static_data () + + + + + + +Types and Values + + + + + +enumcairo_status_t + + + + + + +Object Hierarchy + + + -enum cairo_status_t; -const char * cairo_status_to_string (cairo_status_t status); -void cairo_debug_reset_static_data (void); - - Description - -Cairo uses a single status type to represent all kinds of errors. A status +Cairo uses a single status type to represent all kinds of errors. A status value of CAIRO_STATUS_SUCCESS represents no error and has an integer value -of zero. All other status values represent an error. - - -Cairo's error handling is designed to be easy to use and safe. All major +of zero. All other status values represent an error. +Cairo's error handling is designed to be easy to use and safe. All major cairo objects retain an error status internally which can be queried anytime by the users using cairo*_status() calls. In the mean time, it is safe to call all cairo functions normally even if the underlying object is in an error status. This means that no error handling -code is required before or after each individual cairo function call. - - - -Details - -enum cairo_status_t -cairo_status_t -typedef enum { - CAIRO_STATUS_SUCCESS = 0, - - CAIRO_STATUS_NO_MEMORY, - CAIRO_STATUS_INVALID_RESTORE, - CAIRO_STATUS_INVALID_POP_GROUP, - CAIRO_STATUS_NO_CURRENT_POINT, - CAIRO_STATUS_INVALID_MATRIX, - CAIRO_STATUS_INVALID_STATUS, - CAIRO_STATUS_NULL_POINTER, - CAIRO_STATUS_INVALID_STRING, - CAIRO_STATUS_INVALID_PATH_DATA, - CAIRO_STATUS_READ_ERROR, - CAIRO_STATUS_WRITE_ERROR, - CAIRO_STATUS_SURFACE_FINISHED, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH, - CAIRO_STATUS_PATTERN_TYPE_MISMATCH, - CAIRO_STATUS_INVALID_CONTENT, - CAIRO_STATUS_INVALID_FORMAT, - CAIRO_STATUS_INVALID_VISUAL, - CAIRO_STATUS_FILE_NOT_FOUND, - CAIRO_STATUS_INVALID_DASH, - CAIRO_STATUS_INVALID_DSC_COMMENT, - CAIRO_STATUS_INVALID_INDEX, - CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, - CAIRO_STATUS_TEMP_FILE_ERROR, - CAIRO_STATUS_INVALID_STRIDE, - CAIRO_STATUS_FONT_TYPE_MISMATCH, - CAIRO_STATUS_USER_FONT_IMMUTABLE, - CAIRO_STATUS_USER_FONT_ERROR, - CAIRO_STATUS_NEGATIVE_COUNT, - CAIRO_STATUS_INVALID_CLUSTERS, - CAIRO_STATUS_INVALID_SLANT, - CAIRO_STATUS_INVALID_WEIGHT, - CAIRO_STATUS_INVALID_SIZE, - CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, - CAIRO_STATUS_DEVICE_TYPE_MISMATCH, - CAIRO_STATUS_DEVICE_ERROR, - CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, - CAIRO_STATUS_DEVICE_FINISHED, - CAIRO_STATUS_JBIG2_GLOBAL_MISSING, +code is required before or after each individual cairo function call. - CAIRO_STATUS_LAST_STATUS -} cairo_status_t; - - -cairo_status_t is used to indicate errors that can occur when -using Cairo. In some cases it is returned directly by functions. -but when using cairo_t, the last error, if any, is stored in -the context and can be retrieved with cairo_status(). - - -New entries may be added in future versions. Use cairo_status_to_string() -to get a human-readable representation of an error message. - - -CAIRO_STATUS_SUCCESS -no error has occurred (Since 1.0) - - - -CAIRO_STATUS_NO_MEMORY -out of memory (Since 1.0) - - - -CAIRO_STATUS_INVALID_RESTORE -cairo_restore() called without matching cairo_save() (Since 1.0) - - - -CAIRO_STATUS_INVALID_POP_GROUP -no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0) - - - -CAIRO_STATUS_NO_CURRENT_POINT -no current point defined (Since 1.0) - - - -CAIRO_STATUS_INVALID_MATRIX -invalid matrix (not invertible) (Since 1.0) - - - -CAIRO_STATUS_INVALID_STATUS -invalid value for an input cairo_status_t (Since 1.0) - - - -CAIRO_STATUS_NULL_POINTER -NULL pointer (Since 1.0) - - - -CAIRO_STATUS_INVALID_STRING -input string not valid UTF-8 (Since 1.0) - - - -CAIRO_STATUS_INVALID_PATH_DATA -input path data not valid (Since 1.0) - - - -CAIRO_STATUS_READ_ERROR -error while reading from input stream (Since 1.0) - - - -CAIRO_STATUS_WRITE_ERROR -error while writing to output stream (Since 1.0) - - - -CAIRO_STATUS_SURFACE_FINISHED -target surface has been finished (Since 1.0) - - - -CAIRO_STATUS_SURFACE_TYPE_MISMATCH -the surface type is not appropriate for the operation (Since 1.0) - - - -CAIRO_STATUS_PATTERN_TYPE_MISMATCH -the pattern type is not appropriate for the operation (Since 1.0) - - - -CAIRO_STATUS_INVALID_CONTENT -invalid value for an input cairo_content_t (Since 1.0) - - - -CAIRO_STATUS_INVALID_FORMAT -invalid value for an input cairo_format_t (Since 1.0) - - - -CAIRO_STATUS_INVALID_VISUAL -invalid value for an input Visual* (Since 1.0) - - - -CAIRO_STATUS_FILE_NOT_FOUND -file not found (Since 1.0) - - - -CAIRO_STATUS_INVALID_DASH -invalid value for a dash setting (Since 1.0) - - - -CAIRO_STATUS_INVALID_DSC_COMMENT -invalid value for a DSC comment (Since 1.2) - - - -CAIRO_STATUS_INVALID_INDEX -invalid index passed to getter (Since 1.4) - - - -CAIRO_STATUS_CLIP_NOT_REPRESENTABLE -clip region not representable in desired format (Since 1.4) - - - -CAIRO_STATUS_TEMP_FILE_ERROR -error creating or writing to a temporary file (Since 1.6) - - - -CAIRO_STATUS_INVALID_STRIDE -invalid value for stride (Since 1.6) - - - -CAIRO_STATUS_FONT_TYPE_MISMATCH -the font type is not appropriate for the operation (Since 1.8) - - - -CAIRO_STATUS_USER_FONT_IMMUTABLE -the user-font is immutable (Since 1.8) - - - -CAIRO_STATUS_USER_FONT_ERROR -error occurred in a user-font callback function (Since 1.8) - - - -CAIRO_STATUS_NEGATIVE_COUNT -negative number used where it is not allowed (Since 1.8) - - - -CAIRO_STATUS_INVALID_CLUSTERS -input clusters do not represent the accompanying text and glyph array (Since 1.8) - - - -CAIRO_STATUS_INVALID_SLANT -invalid value for an input cairo_font_slant_t (Since 1.8) - - - -CAIRO_STATUS_INVALID_WEIGHT -invalid value for an input cairo_font_weight_t (Since 1.8) - - - -CAIRO_STATUS_INVALID_SIZE -invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10) - - - -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_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() - pair (Since 1.12) - - - -CAIRO_STATUS_DEVICE_FINISHED -target device has been finished (Since 1.12) - - - -CAIRO_STATUS_JBIG2_GLOBAL_MISSING -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID has been used on at least one image - but no image provided CAIRO_MIME_TYPE_JBIG2_GLOBAL (Since 1.14) - - - -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 - defined than the value of this symbol at compile-time. (Since 1.10) - - -Since 1.0 + + +Functions -cairo_status_to_string () +cairo_status_to_string () cairo_status_to_string -const char * cairo_status_to_string (cairo_status_t status); - -Provides a human-readable description of a cairo_status_t. - -status : -a cairo status -Returns :a string representation of the status -Since 1.0 +const char * +cairo_status_to_string (cairo_status_t status); +Provides a human-readable description of a cairo_status_t. + +Parameters + + + + + + +status +a cairo status + + + +Returns + a string representation of the status + +Since 1.0 -cairo_debug_reset_static_data () +cairo_debug_reset_static_data () cairo_debug_reset_static_data -void cairo_debug_reset_static_data (void); - -Resets all static data within cairo to its original state, +void +cairo_debug_reset_static_data (void); +Resets all static data within cairo to its original state, (ie. identical to the state at the time of program invocation). For -example, all caches within cairo will be flushed empty. - - -This function is intended to be useful when using memory-checking +example, all caches within cairo will be flushed empty. +This function is intended to be useful when using memory-checking tools such as valgrind. When valgrind's memcheck analyzes a cairo-using program without a call to cairo_debug_reset_static_data(), it will report all data reachable via cairo's static objects as "still reachable". Calling cairo_debug_reset_static_data() just prior to program termination will make it easier to get squeaky clean -reports from valgrind. - - -WARNING: It is only safe to call this function when there are no +reports from valgrind. +WARNING: It is only safe to call this function when there are no active cairo objects remaining, (ie. the appropriate destroy functions have been called as necessary). If there are active cairo objects, this call is likely to cause a crash, (eg. an assertion -failure due to a hash table being destroyed when non-empty). -Since 1.0 +failure due to a hash table being destroyed when non-empty). +Since 1.0 + + + +Types and Values + +enum cairo_status_t +cairo_status_t +cairo_status_t is used to indicate errors that can occur when +using Cairo. In some cases it is returned directly by functions. +but when using cairo_t, the last error, if any, is stored in +the context and can be retrieved with cairo_status(). +New entries may be added in future versions. Use cairo_status_to_string() +to get a human-readable representation of an error message. + +Members + + + + + + +CAIRO_STATUS_SUCCESS +no error has occurred (Since 1.0) + + + +CAIRO_STATUS_NO_MEMORY +out of memory (Since 1.0) + + + +CAIRO_STATUS_INVALID_RESTORE +cairo_restore() called without matching cairo_save() (Since 1.0) + + + +CAIRO_STATUS_INVALID_POP_GROUP +no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0) + + + +CAIRO_STATUS_NO_CURRENT_POINT +no current point defined (Since 1.0) + + + +CAIRO_STATUS_INVALID_MATRIX +invalid matrix (not invertible) (Since 1.0) + + + +CAIRO_STATUS_INVALID_STATUS +invalid value for an input cairo_status_t (Since 1.0) + + + +CAIRO_STATUS_NULL_POINTER +NULL pointer (Since 1.0) + + + +CAIRO_STATUS_INVALID_STRING +input string not valid UTF-8 (Since 1.0) + + + +CAIRO_STATUS_INVALID_PATH_DATA +input path data not valid (Since 1.0) + + + +CAIRO_STATUS_READ_ERROR +error while reading from input stream (Since 1.0) + + + +CAIRO_STATUS_WRITE_ERROR +error while writing to output stream (Since 1.0) + + + +CAIRO_STATUS_SURFACE_FINISHED +target surface has been finished (Since 1.0) + + + +CAIRO_STATUS_SURFACE_TYPE_MISMATCH +the surface type is not appropriate for the operation (Since 1.0) + + + +CAIRO_STATUS_PATTERN_TYPE_MISMATCH +the pattern type is not appropriate for the operation (Since 1.0) + + + +CAIRO_STATUS_INVALID_CONTENT +invalid value for an input cairo_content_t (Since 1.0) + + + +CAIRO_STATUS_INVALID_FORMAT +invalid value for an input cairo_format_t (Since 1.0) + + + +CAIRO_STATUS_INVALID_VISUAL +invalid value for an input Visual* (Since 1.0) + + + +CAIRO_STATUS_FILE_NOT_FOUND +file not found (Since 1.0) + + + +CAIRO_STATUS_INVALID_DASH +invalid value for a dash setting (Since 1.0) + + + +CAIRO_STATUS_INVALID_DSC_COMMENT +invalid value for a DSC comment (Since 1.2) + + + +CAIRO_STATUS_INVALID_INDEX +invalid index passed to getter (Since 1.4) + + + +CAIRO_STATUS_CLIP_NOT_REPRESENTABLE +clip region not representable in desired format (Since 1.4) + + + +CAIRO_STATUS_TEMP_FILE_ERROR +error creating or writing to a temporary file (Since 1.6) + + + +CAIRO_STATUS_INVALID_STRIDE +invalid value for stride (Since 1.6) + + + +CAIRO_STATUS_FONT_TYPE_MISMATCH +the font type is not appropriate for the operation (Since 1.8) + + + +CAIRO_STATUS_USER_FONT_IMMUTABLE +the user-font is immutable (Since 1.8) + + + +CAIRO_STATUS_USER_FONT_ERROR +error occurred in a user-font callback function (Since 1.8) + + + +CAIRO_STATUS_NEGATIVE_COUNT +negative number used where it is not allowed (Since 1.8) + + + +CAIRO_STATUS_INVALID_CLUSTERS +input clusters do not represent the accompanying text and glyph array (Since 1.8) + + + +CAIRO_STATUS_INVALID_SLANT +invalid value for an input cairo_font_slant_t (Since 1.8) + + + +CAIRO_STATUS_INVALID_WEIGHT +invalid value for an input cairo_font_weight_t (Since 1.8) + + + +CAIRO_STATUS_INVALID_SIZE +invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10) + + + +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_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() + pair (Since 1.12) + + + +CAIRO_STATUS_DEVICE_FINISHED +target device has been finished (Since 1.12) + + + +CAIRO_STATUS_JBIG2_GLOBAL_MISSING +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID has been used on at least one image + but no image provided CAIRO_MIME_TYPE_JBIG2_GLOBAL (Since 1.14) + + + +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 + defined than the value of this symbol at compile-time. (Since 1.10) + + + + +Since 1.0 See Also -cairo_status(), cairo_surface_status(), cairo_pattern_status(), +cairo_status(), cairo_surface_status(), cairo_pattern_status(), cairo_font_face_status(), cairo_scaled_font_status(), - cairo_region_status() + cairo_region_status() + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-surface-observer.xml cairo-1.14.2/doc/public/xml/cairo-surface-observer.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-surface-observer.xml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-surface-observer.xml 2015-03-11 02:02:37.000000000 +0000 @@ -0,0 +1,301 @@ + + +]> + + +cairo-surface-observer +3 + + CAIRO Library + + + +cairo-surface-observer + + + + +Functions + + + + + +cairo_surface_t * +cairo_surface_create_observer () +cairo_status_t +cairo_surface_observer_add_fill_callback () +cairo_status_t +cairo_surface_observer_add_finish_callback () +cairo_status_t +cairo_surface_observer_add_flush_callback () +cairo_status_t +cairo_surface_observer_add_glyphs_callback () +cairo_status_t +cairo_surface_observer_add_mask_callback () +cairo_status_t +cairo_surface_observer_add_paint_callback () +cairo_status_t +cairo_surface_observer_add_stroke_callback () +void +(*cairo_surface_observer_callback_t) () +double +cairo_surface_observer_elapsed () +cairo_status_t +cairo_surface_observer_print () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_OBSERVER_SURFACE +enumcairo_surface_observer_mode_t + + + + + + +Object Hierarchy + + + + + + +Description + + + + + +Functions + +cairo_surface_create_observer () +cairo_surface_create_observer +cairo_surface_t * +cairo_surface_create_observer (cairo_surface_t *target, + cairo_surface_observer_mode_t mode); +Create a new surface that exists solely to watch another is doing. In +the process it will log operations and times, which are fast, which are +slow, which are frequent, etc. +The mode + parameter can be set to either CAIRO_SURFACE_OBSERVER_NORMAL +or CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS, to control whether or not +the internal observer should record operations. + +Parameters + + + + + + +target +an existing surface for which the observer will watch + +mode +sets the mode of operation (normal vs. record) + + + +Returns + a pointer to the newly allocated surface. The caller +owns the surface and should call cairo_surface_destroy() when done +with it. +This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs. + +Since 1.12 + +cairo_surface_observer_add_fill_callback () +cairo_surface_observer_add_fill_callback +cairo_status_t +cairo_surface_observer_add_fill_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_finish_callback () +cairo_surface_observer_add_finish_callback +cairo_status_t +cairo_surface_observer_add_finish_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_flush_callback () +cairo_surface_observer_add_flush_callback +cairo_status_t +cairo_surface_observer_add_flush_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_glyphs_callback () +cairo_surface_observer_add_glyphs_callback +cairo_status_t +cairo_surface_observer_add_glyphs_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_mask_callback () +cairo_surface_observer_add_mask_callback +cairo_status_t +cairo_surface_observer_add_mask_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_paint_callback () +cairo_surface_observer_add_paint_callback +cairo_status_t +cairo_surface_observer_add_paint_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_add_stroke_callback () +cairo_surface_observer_add_stroke_callback +cairo_status_t +cairo_surface_observer_add_stroke_callback + (cairo_surface_t *abstract_surface, + cairo_surface_observer_callback_t func, + void *data); + + + +Returns + + + + +cairo_surface_observer_callback_t () +cairo_surface_observer_callback_t +void +(*cairo_surface_observer_callback_t) (cairo_surface_t *observer, + cairo_surface_t *target, + void *data); + + + + +cairo_surface_observer_elapsed () +cairo_surface_observer_elapsed +double +cairo_surface_observer_elapsed (cairo_surface_t *surface); + + + +Returns + + + + +cairo_surface_observer_print () +cairo_surface_observer_print +cairo_status_t +cairo_surface_observer_print (cairo_surface_t *surface, + cairo_write_func_t write_func, + void *closure); + + + +Returns + + + + + + +Types and Values + +CAIRO_HAS_OBSERVER_SURFACE +CAIRO_HAS_OBSERVER_SURFACE +#define CAIRO_HAS_OBSERVER_SURFACE 1 + + + + + +enum cairo_surface_observer_mode_t +cairo_surface_observer_mode_t +Whether operations should be recorded. + +Members + + + + + + +CAIRO_SURFACE_OBSERVER_NORMAL +no recording is done + + + +CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS +operations are recorded + + + + +Since 1.12 + + + + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-surface.xml cairo-1.14.2/doc/public/xml/cairo-surface.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-surface.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-surface.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,107 +16,123 @@ Base class for surfaces - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_surface_create_similar () +cairo_surface_t * +cairo_surface_create_similar_image () +cairo_surface_t * +cairo_surface_create_for_rectangle () +cairo_surface_t * +cairo_surface_reference () +void +cairo_surface_destroy () +cairo_status_t +cairo_surface_status () +void +cairo_surface_finish () +void +cairo_surface_flush () +cairo_device_t * +cairo_surface_get_device () +void +cairo_surface_get_font_options () +cairo_content_t +cairo_surface_get_content () +void +cairo_surface_mark_dirty () +void +cairo_surface_mark_dirty_rectangle () +void +cairo_surface_set_device_offset () +void +cairo_surface_get_device_offset () +void +cairo_surface_get_device_scale () +void +cairo_surface_set_device_scale () +void +cairo_surface_set_fallback_resolution () +void +cairo_surface_get_fallback_resolution () +cairo_surface_type_t +cairo_surface_get_type () +unsigned int +cairo_surface_get_reference_count () +cairo_status_t +cairo_surface_set_user_data () +void * +cairo_surface_get_user_data () +void +cairo_surface_copy_page () +void +cairo_surface_show_page () +cairo_bool_t +cairo_surface_has_show_text_glyphs () +cairo_status_t +cairo_surface_set_mime_data () +void +cairo_surface_get_mime_data () +cairo_bool_t +cairo_surface_supports_mime_type () +cairo_surface_t * +cairo_surface_map_to_image () +void +cairo_surface_unmap_image () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_MIME_SURFACE +#defineCAIRO_MIME_TYPE_JBIG2 +#defineCAIRO_MIME_TYPE_JBIG2_GLOBAL +#defineCAIRO_MIME_TYPE_JBIG2_GLOBAL_ID +#defineCAIRO_MIME_TYPE_JP2 +#defineCAIRO_MIME_TYPE_JPEG +#defineCAIRO_MIME_TYPE_PNG +#defineCAIRO_MIME_TYPE_URI +#defineCAIRO_MIME_TYPE_UNIQUE_ID +typedefcairo_surface_t +enumcairo_content_t +enumcairo_surface_type_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_MIME_SURFACE -#define CAIRO_MIME_TYPE_JP2 -#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, - cairo_content_t content, - int width, - int height); -cairo_surface_t * cairo_surface_create_similar_image (cairo_surface_t *other, - cairo_format_t format, - int width, - int height); -cairo_surface_t * cairo_surface_create_for_rectangle (cairo_surface_t *target, - double x, - double y, - double width, - double height); -cairo_surface_t * cairo_surface_reference (cairo_surface_t *surface); -void cairo_surface_destroy (cairo_surface_t *surface); -cairo_status_t cairo_surface_status (cairo_surface_t *surface); -void cairo_surface_finish (cairo_surface_t *surface); -void cairo_surface_flush (cairo_surface_t *surface); -cairo_device_t * cairo_surface_get_device (cairo_surface_t *surface); -void cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); -cairo_content_t cairo_surface_get_content (cairo_surface_t *surface); -void cairo_surface_mark_dirty (cairo_surface_t *surface); -void cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height); -void cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset); -void cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset); -void cairo_surface_set_fallback_resolution - (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch); -void cairo_surface_get_fallback_resolution - (cairo_surface_t *surface, - double *x_pixels_per_inch, - double *y_pixels_per_inch); -enum cairo_surface_type_t; -cairo_surface_type_t cairo_surface_get_type (cairo_surface_t *surface); -unsigned int cairo_surface_get_reference_count (cairo_surface_t *surface); -cairo_status_t cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key); -void cairo_surface_copy_page (cairo_surface_t *surface); -void cairo_surface_show_page (cairo_surface_t *surface); -cairo_bool_t cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); -cairo_status_t cairo_surface_set_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char *data, - unsigned long length, - cairo_destroy_func_t destroy, - void *closure); -void cairo_surface_get_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char **data, - unsigned long *length); -cairo_bool_t cairo_surface_supports_mime_type (cairo_surface_t *surface, - const char *mime_type); -cairo_surface_t * cairo_surface_map_to_image (cairo_surface_t *surface, - const cairo_rectangle_int_t *extents); -void cairo_surface_unmap_image (cairo_surface_t *surface, - cairo_surface_t *image); - - Description - -cairo_surface_t is the abstract type representing all different drawing +cairo_surface_t is the abstract type representing all different drawing targets that cairo can render to. The actual drawings are -performed using a cairo context. - - -A cairo surface is created by using backend-specific +performed using a cairo context. +A cairo surface is created by using backend-specific constructors, typically of the form -cairo_backend_surface_create(). - - -Most surface types allow accessing the surface without using Cairo +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 cairo_surface_flush() before reading from or writing to the surface and that -you must use cairo_surface_mark_dirty() after modifying it. +you must use cairo_surface_mark_dirty() after modifying it. Directly modifying an image surface @@ -141,288 +157,251 @@ } -Note that for other surface types it might be necessary to acquire the +Note that for other surface types it might be necessary to acquire the surface's device first. See cairo_device_acquire() for a discussion of -devices. - +devices. + - -Details - -CAIRO_HAS_MIME_SURFACE -CAIRO_HAS_MIME_SURFACE -#define CAIRO_HAS_MIME_SURFACE 1 - - - - -CAIRO_MIME_TYPE_JP2 -CAIRO_MIME_TYPE_JP2 -#define CAIRO_MIME_TYPE_JP2 "image/jp2" - - -The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1). -Since 1.10 - -CAIRO_MIME_TYPE_JPEG -CAIRO_MIME_TYPE_JPEG -#define CAIRO_MIME_TYPE_JPEG "image/jpeg" - - -The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1). -Since 1.10 - -CAIRO_MIME_TYPE_PNG -CAIRO_MIME_TYPE_PNG -#define CAIRO_MIME_TYPE_PNG "image/png" - - -The Portable Network Graphics image file format (ISO/IEC 15948). -Since 1.10 - -CAIRO_MIME_TYPE_URI -CAIRO_MIME_TYPE_URI -#define CAIRO_MIME_TYPE_URI "text/x-uri" - - -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 -typedef struct _cairo_surface cairo_surface_t; - - -A cairo_surface_t represents an image, either as the destination -of a drawing operation or as source when drawing onto another -surface. To draw to a cairo_surface_t, create a cairo context -with the surface as the target, using cairo_create(). - - -There are different subtypes of cairo_surface_t for -different drawing backends; for example, cairo_image_surface_create() -creates a bitmap image in memory. -The type of a surface can be queried with cairo_surface_get_type(). - - -The initial contents of a surface after creation depend upon the manner -of its creation. If cairo creates the surface and backing storage for -the user, it will be initially cleared; for example, -cairo_image_surface_create() and cairo_surface_create_similar(). -Alternatively, if the user passes in a reference to some backing storage -and asks cairo to wrap that in a cairo_surface_t, then the contents are -not modified; for example, cairo_image_surface_create_for_data() and -cairo_xlib_surface_create(). - - -Memory management of cairo_surface_t is done with -cairo_surface_reference() and cairo_surface_destroy(). -Since 1.0 - -enum cairo_content_t -cairo_content_t -typedef enum { - CAIRO_CONTENT_COLOR = 0x1000, - CAIRO_CONTENT_ALPHA = 0x2000, - CAIRO_CONTENT_COLOR_ALPHA = 0x3000 -} cairo_content_t; - - -cairo_content_t is used to describe the content that a surface will -contain, whether color information, alpha information (translucence -vs. opacity), or both. - - -Note: The large values here are designed to keep cairo_content_t -values distinct from cairo_format_t values so that the -implementation can detect the error if users confuse the two types. - - -CAIRO_CONTENT_COLOR -The surface will hold color content only. (Since 1.0) - - - -CAIRO_CONTENT_ALPHA -The surface will hold alpha content only. (Since 1.0) - - - -CAIRO_CONTENT_COLOR_ALPHA -The surface will hold color and alpha content. (Since 1.0) - - -Since 1.0 + +Functions -cairo_surface_create_similar () +cairo_surface_create_similar () cairo_surface_create_similar -cairo_surface_t * cairo_surface_create_similar (cairo_surface_t *other, - cairo_content_t content, - int width, - int height); - -Create a new surface that is as compatible as possible with an +cairo_surface_t * +cairo_surface_create_similar (cairo_surface_t *other, + cairo_content_t content, + int width, + int height); +Create a new surface that is as compatible as possible with an existing surface. For example the new surface will have the same -fallback resolution and font options as other. Generally, the new -surface will also use the same backend as other, unless that is +fallback resolution and font options as other +. Generally, the new +surface will also use the same backend as other +, unless that is not possible for some reason. The type of the returned surface may -be examined with cairo_surface_get_type(). - - -Initially the surface contents are all 0 (transparent if contents -have transparency, black otherwise.) - - -Use cairo_surface_create_similar_image() if you need an image surface -which can be painted quickly to the target surface. - -other : -an existing surface used to select the backend of the new surface -content : -the content for the new surface -width : -width of the new surface, (in device-space units) -height : -height of the new surface (in device-space units) -Returns :a pointer to the newly allocated surface. The caller +be examined with cairo_surface_get_type(). +Initially the surface contents are all 0 (transparent if contents +have transparency, black otherwise.) +Use cairo_surface_create_similar_image() if you need an image surface +which can be painted quickly to the target surface. + +Parameters + + + + + + +other +an existing surface used to select the backend of the new surface + +content +the content for the new surface + +width +width of the new surface, (in device-space units) + +height +height of the new surface (in device-space units) + + + +Returns + a pointer to the newly allocated surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs. -Since 1.0 +with it. +This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs. + +Since 1.0 -cairo_surface_create_similar_image () +cairo_surface_create_similar_image () cairo_surface_create_similar_image -cairo_surface_t * cairo_surface_create_similar_image (cairo_surface_t *other, - cairo_format_t format, - int width, - int height); - -Create a new image surface that is as compatible as possible for uploading +cairo_surface_t * +cairo_surface_create_similar_image (cairo_surface_t *other, + cairo_format_t format, + int width, + int height); +Create a new image surface that is as compatible as possible for uploading to and the use in conjunction with an existing surface. However, this surface -can still be used like any normal image surface. - - -Initially the surface contents are all 0 (transparent if contents -have transparency, black otherwise.) - - -Use cairo_surface_create_similar() if you don't need an image surface. - -other : -an existing surface used to select the preference of the new surface -format : -the format for the new surface -width : -width of the new surface, (in device-space units) -height : -height of the new surface (in device-space units) -Returns :a pointer to the newly allocated image surface. The caller +can still be used like any normal image surface. +Initially the surface contents are all 0 (transparent if contents +have transparency, black otherwise.) +Use cairo_surface_create_similar() if you don't need an image surface. + +Parameters + + + + + + +other +an existing surface used to select the preference of the new surface + +format +the format for the new surface + +width +width of the new surface, (in device-space units) + +height +height of the new surface (in device-space units) + + + +Returns + a pointer to the newly allocated image surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs. -Since 1.12 +with it. +This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs. + +Since 1.12 -cairo_surface_create_for_rectangle () +cairo_surface_create_for_rectangle () cairo_surface_create_for_rectangle -cairo_surface_t * cairo_surface_create_for_rectangle (cairo_surface_t *target, - double x, - double y, - double width, - double height); - -Create a new surface that is a rectangle within the target surface. +cairo_surface_t * +cairo_surface_create_for_rectangle (cairo_surface_t *target, + double x, + double y, + double width, + double height); +Create a new surface that is a rectangle within the target surface. All operations drawn to this surface are then clipped and translated onto the target surface. Nothing drawn via this sub-surface outside of its bounds is drawn onto the target surface, making this a useful method for passing constrained child surfaces to library routines that draw directly onto the parent surface, i.e. with no further backend allocations, -double buffering or copies. - - +double buffering or copies. The semantics of subsurfaces have not been finalized yet unless the rectangle is in full device units, is contained within the extents of the target surface, and the target or subsurface's device transforms are not changed. - -target : -an existing surface for which the sub-surface will point to -x : -the x-origin of the sub-surface from the top-left of the target surface (in device-space units) -y : -the y-origin of the sub-surface from the top-left of the target surface (in device-space units) -width : -width of the sub-surface (in device-space units) -height : -height of the sub-surface (in device-space units) -Returns :a pointer to the newly allocated surface. The caller + +Parameters + + + + + + +target +an existing surface for which the sub-surface will point to + +x +the x-origin of the sub-surface from the top-left of the target surface (in device-space units) + +y +the y-origin of the sub-surface from the top-left of the target surface (in device-space units) + +width +width of the sub-surface (in device-space units) + +height +height of the sub-surface (in device-space units) + + + +Returns + a pointer to the newly allocated surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state -or any other error occurs. -Since 1.10 +with it. +This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state +or any other error occurs. + +Since 1.10 -cairo_surface_reference () +cairo_surface_reference () cairo_surface_reference -cairo_surface_t * cairo_surface_reference (cairo_surface_t *surface); - -Increases the reference count on surface by one. This prevents -surface from being destroyed until a matching call to -cairo_surface_destroy() is made. - - -The number of references to a cairo_surface_t can be get using -cairo_surface_get_reference_count(). - -surface : -a cairo_surface_t -Returns :the referenced cairo_surface_t. -Since 1.0 +cairo_surface_t * +cairo_surface_reference (cairo_surface_t *surface); +Increases the reference count on surface + by one. This prevents +surface + from being destroyed until a matching call to +cairo_surface_destroy() is made. +The number of references to a cairo_surface_t can be get using +cairo_surface_get_reference_count(). + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + the referenced cairo_surface_t. + +Since 1.0 -cairo_surface_destroy () +cairo_surface_destroy () cairo_surface_destroy -void cairo_surface_destroy (cairo_surface_t *surface); - -Decreases the reference count on surface by one. If the result is -zero, then surface and all associated resources are freed. See -cairo_surface_reference(). - -surface : -a cairo_surface_t -Since 1.0 +void +cairo_surface_destroy (cairo_surface_t *surface); +Decreases the reference count on surface + by one. If the result is +zero, then surface + and all associated resources are freed. See +cairo_surface_reference(). + +Parameters + + + + + + +surface +a cairo_surface_t + + +Since 1.0 -cairo_surface_status () +cairo_surface_status () cairo_surface_status -cairo_status_t cairo_surface_status (cairo_surface_t *surface); - -Checks whether an error has previously occurred for this -surface. - -surface : -a cairo_surface_t -Returns :CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NULL_POINTER, +cairo_status_t +cairo_surface_status (cairo_surface_t *surface); +Checks whether an error has previously occurred for this +surface. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + CAIRO_STATUS_SUCCESS, CAIRO_STATUS_NULL_POINTER, CAIRO_STATUS_NO_MEMORY, CAIRO_STATUS_READ_ERROR, CAIRO_STATUS_INVALID_CONTENT, CAIRO_STATUS_INVALID_FORMAT, or -CAIRO_STATUS_INVALID_VISUAL. -Since 1.0 +CAIRO_STATUS_INVALID_VISUAL. + +Since 1.0 -cairo_surface_finish () +cairo_surface_finish () cairo_surface_finish -void cairo_surface_finish (cairo_surface_t *surface); - -This function finishes the surface and drops all references to +void +cairo_surface_finish (cairo_surface_t *surface); +This function finishes the surface and drops all references to external resources. For example, for the Xlib backend it means that cairo will no longer access the drawable, which can be freed. After calling cairo_surface_finish() the only valid operations on a @@ -430,675 +409,1102 @@ destroying, and flushing and finishing it. Further drawing to the surface will not affect the surface but will instead trigger a CAIRO_STATUS_SURFACE_FINISHED -error. - - -When the last call to cairo_surface_destroy() decreases the +error. +When the last call to cairo_surface_destroy() decreases the reference count to zero, cairo will call cairo_surface_finish() if it hasn't been called already, before freeing the resources -associated with the surface. - -surface : -the cairo_surface_t to finish -Since 1.0 +associated with the surface. + +Parameters + + + + + + +surface +the cairo_surface_t to finish + + +Since 1.0 -cairo_surface_flush () +cairo_surface_flush () cairo_surface_flush -void cairo_surface_flush (cairo_surface_t *surface); - -Do any pending drawing for the surface and also restore any +void +cairo_surface_flush (cairo_surface_t *surface); +Do any pending drawing for the surface and also restore any temporary modifications cairo has made to the surface's state. This function must be called before switching from drawing on the surface with cairo to drawing on it directly with native APIs. If the surface doesn't support direct access, -then this function does nothing. - -surface : -a cairo_surface_t -Since 1.0 +then this function does nothing. + +Parameters + + + + + + +surface +a cairo_surface_t + + +Since 1.0 -cairo_surface_get_device () +cairo_surface_get_device () cairo_surface_get_device -cairo_device_t * cairo_surface_get_device (cairo_surface_t *surface); - -This function returns the device for a surface. -See cairo_device_t. - -surface : -a cairo_surface_t -Returns :The device for surface or NULL if the surface does -not have an associated device. -Since 1.10 +cairo_device_t * +cairo_surface_get_device (cairo_surface_t *surface); +This function returns the device for a surface +. +See cairo_device_t. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + The device for surface +or NULL if the surface does +not have an associated device. + +Since 1.10 -cairo_surface_get_font_options () +cairo_surface_get_font_options () cairo_surface_get_font_options -void cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); - -Retrieves the default font rendering options for the surface. +void +cairo_surface_get_font_options (cairo_surface_t *surface, + cairo_font_options_t *options); +Retrieves the default font rendering options for the surface. This allows display surfaces to report the correct subpixel order for rendering on them, print surfaces to disable hinting of metrics and so forth. The result can then be used with -cairo_scaled_font_create(). - -surface : -a cairo_surface_t -options : -a cairo_font_options_t object into which to store -the retrieved options. All existing values are overwritten -Since 1.0 +cairo_scaled_font_create(). + +Parameters + + + + + + +surface +a cairo_surface_t + +options +a cairo_font_options_t object into which to store +the retrieved options. All existing values are overwritten + + +Since 1.0 -cairo_surface_get_content () +cairo_surface_get_content () cairo_surface_get_content -cairo_content_t cairo_surface_get_content (cairo_surface_t *surface); - -This function returns the content type of surface which indicates +cairo_content_t +cairo_surface_get_content (cairo_surface_t *surface); +This function returns the content type of surface + which indicates whether the surface contains color and/or alpha information. See -cairo_content_t. - -surface : -a cairo_surface_t -Returns :The content type of surface. -Since 1.2 +cairo_content_t. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + The content type of surface +. + +Since 1.2 -cairo_surface_mark_dirty () +cairo_surface_mark_dirty () cairo_surface_mark_dirty -void cairo_surface_mark_dirty (cairo_surface_t *surface); - -Tells cairo that drawing has been done to surface using means other +void +cairo_surface_mark_dirty (cairo_surface_t *surface); +Tells cairo that drawing has been done to surface using means other than cairo, and that cairo should reread any cached areas. Note -that you must call cairo_surface_flush() before doing such drawing. - -surface : -a cairo_surface_t -Since 1.0 +that you must call cairo_surface_flush() before doing such drawing. + +Parameters + + + + + + +surface +a cairo_surface_t + + +Since 1.0 -cairo_surface_mark_dirty_rectangle () +cairo_surface_mark_dirty_rectangle () cairo_surface_mark_dirty_rectangle -void cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height); - -Like cairo_surface_mark_dirty(), but drawing has been done only to +void +cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, + int x, + int y, + int width, + int height); +Like cairo_surface_mark_dirty(), but drawing has been done only to the specified rectangle, so that cairo can retain cached contents -for other parts of the surface. - - -Any cached clip set on the surface will be reset by this function, +for other parts of the surface. +Any cached clip set on the surface will be reset by this function, to make sure that future cairo calls have the clip set that they -expect. - -surface : -a cairo_surface_t -x : -X coordinate of dirty rectangle -y : -Y coordinate of dirty rectangle -width : -width of dirty rectangle -height : -height of dirty rectangle -Since 1.0 +expect. + +Parameters + + + + + + +surface +a cairo_surface_t + +x +X coordinate of dirty rectangle + +y +Y coordinate of dirty rectangle + +width +width of dirty rectangle + +height +height of dirty rectangle + + +Since 1.0 -cairo_surface_set_device_offset () +cairo_surface_set_device_offset () cairo_surface_set_device_offset -void cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset); - -Sets an offset that is added to the device coordinates determined -by the CTM when drawing to surface. One use case for this function +void +cairo_surface_set_device_offset (cairo_surface_t *surface, + double x_offset, + double y_offset); +Sets an offset that is added to the device coordinates determined +by the CTM when drawing to surface +. One use case for this function is when we want to create a cairo_surface_t that redirects drawing for a portion of an onscreen surface to an offscreen surface in a way that is completely invisible to the user of the cairo API. Setting a transformation via cairo_translate() isn't sufficient to do this, since functions like -cairo_device_to_user() will expose the hidden offset. - - -Note that the offset affects drawing to the surface as well as -using the surface in a source pattern. - -surface : -a cairo_surface_t -x_offset : -the offset in the X direction, in device units -y_offset : -the offset in the Y direction, in device units -Since 1.0 +cairo_device_to_user() will expose the hidden offset. +Note that the offset affects drawing to the surface as well as +using the surface in a source pattern. + +Parameters + + + + + + +surface +a cairo_surface_t + +x_offset +the offset in the X direction, in device units + +y_offset +the offset in the Y direction, in device units + + +Since 1.0 -cairo_surface_get_device_offset () +cairo_surface_get_device_offset () cairo_surface_get_device_offset -void cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset); - -This function returns the previous device offset set by -cairo_surface_set_device_offset(). - -surface : -a cairo_surface_t -x_offset : -the offset in the X direction, in device units -y_offset : -the offset in the Y direction, in device units -Since 1.2 +void +cairo_surface_get_device_offset (cairo_surface_t *surface, + double *x_offset, + double *y_offset); +This function returns the previous device offset set by +cairo_surface_set_device_offset(). + +Parameters + + + + + + +surface +a cairo_surface_t + +x_offset +the offset in the X direction, in device units + +y_offset +the offset in the Y direction, in device units + + +Since 1.2 + +cairo_surface_get_device_scale () +cairo_surface_get_device_scale +void +cairo_surface_get_device_scale (cairo_surface_t *surface, + double *x_scale, + double *y_scale); +This function returns the previous device offset set by +cairo_surface_set_device_scale(). + +Parameters + + + + + + +surface +a cairo_surface_t + +x_scale +the scale in the X direction, in device units + +y_scale +the scale in the Y direction, in device units + + +Since 1.14 + +cairo_surface_set_device_scale () +cairo_surface_set_device_scale +void +cairo_surface_set_device_scale (cairo_surface_t *surface, + double x_scale, + double y_scale); +Sets a scale that is multiplied to the device coordinates determined +by the CTM when drawing to surface +. One common use for this is to +render to very high resolution display devices at a scale factor, so +that code that assumes 1 pixel will be a certain size will still work. +Setting a transformation via cairo_translate() isn't +sufficient to do this, since functions like +cairo_device_to_user() will expose the hidden scale. +Note that the scale affects drawing to the surface as well as +using the surface in a source pattern. + +Parameters + + + + + + +surface +a cairo_surface_t + +x_scale +a scale factor in the X direction + +y_scale +a scale factor in the Y direction + + +Since 1.14 -cairo_surface_set_fallback_resolution () +cairo_surface_set_fallback_resolution () cairo_surface_set_fallback_resolution -void cairo_surface_set_fallback_resolution - (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch); - -Set the horizontal and vertical resolution for image fallbacks. - - -When certain operations aren't supported natively by a backend, +void +cairo_surface_set_fallback_resolution (cairo_surface_t *surface, + double x_pixels_per_inch, + double y_pixels_per_inch); +Set the horizontal and vertical resolution for image fallbacks. +When certain operations aren't supported natively by a backend, cairo will fallback by rendering operations to an image and then overlaying that image onto the output. For backends that are natively vector-oriented, this function can be used to set the resolution used for these image fallbacks, (larger values will -result in more detailed images, but also larger file sizes). - - -Some examples of natively vector-oriented backends are the ps, pdf, -and svg backends. - - -For backends that are natively raster-oriented, image fallbacks are +result in more detailed images, but also larger file sizes). +Some examples of natively vector-oriented backends are the ps, pdf, +and svg backends. +For backends that are natively raster-oriented, image fallbacks are still possible, but they are always performed at the native device resolution. So this function has no effect on those -backends. - - -Note: The fallback resolution only takes effect at the time of +backends. +Note: The fallback resolution only takes effect at the time of completing a page (with cairo_show_page() or cairo_copy_page()) so there is currently no way to have more than one fallback resolution -in effect on a single page. - - -The default fallback resoultion is 300 pixels per inch in both -dimensions. - -surface : -a cairo_surface_t -x_pixels_per_inch : -horizontal setting for pixels per inch -y_pixels_per_inch : -vertical setting for pixels per inch -Since 1.2 +in effect on a single page. +The default fallback resoultion is 300 pixels per inch in both +dimensions. + +Parameters + + + + + + +surface +a cairo_surface_t + +x_pixels_per_inch +horizontal setting for pixels per inch + +y_pixels_per_inch +vertical setting for pixels per inch + + +Since 1.2 -cairo_surface_get_fallback_resolution () +cairo_surface_get_fallback_resolution () cairo_surface_get_fallback_resolution -void cairo_surface_get_fallback_resolution - (cairo_surface_t *surface, - double *x_pixels_per_inch, - double *y_pixels_per_inch); - -This function returns the previous fallback resolution set by +void +cairo_surface_get_fallback_resolution (cairo_surface_t *surface, + double *x_pixels_per_inch, + double *y_pixels_per_inch); +This function returns the previous fallback resolution set by cairo_surface_set_fallback_resolution(), or default fallback -resolution if never set. - -surface : -a cairo_surface_t -x_pixels_per_inch : -horizontal pixels per inch -y_pixels_per_inch : -vertical pixels per inch -Since 1.8 - -enum cairo_surface_type_t -cairo_surface_type_t -typedef enum { - CAIRO_SURFACE_TYPE_IMAGE, - CAIRO_SURFACE_TYPE_PDF, - CAIRO_SURFACE_TYPE_PS, - CAIRO_SURFACE_TYPE_XLIB, - CAIRO_SURFACE_TYPE_XCB, - CAIRO_SURFACE_TYPE_GLITZ, - CAIRO_SURFACE_TYPE_QUARTZ, - CAIRO_SURFACE_TYPE_WIN32, - CAIRO_SURFACE_TYPE_BEOS, - CAIRO_SURFACE_TYPE_DIRECTFB, - CAIRO_SURFACE_TYPE_SVG, - CAIRO_SURFACE_TYPE_OS2, - CAIRO_SURFACE_TYPE_WIN32_PRINTING, - CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, - CAIRO_SURFACE_TYPE_SCRIPT, - CAIRO_SURFACE_TYPE_QT, - CAIRO_SURFACE_TYPE_RECORDING, - CAIRO_SURFACE_TYPE_VG, - CAIRO_SURFACE_TYPE_GL, - CAIRO_SURFACE_TYPE_DRM, - CAIRO_SURFACE_TYPE_TEE, - CAIRO_SURFACE_TYPE_XML, - CAIRO_SURFACE_TYPE_SKIA, - CAIRO_SURFACE_TYPE_SUBSURFACE, - CAIRO_SURFACE_TYPE_COGL -} cairo_surface_type_t; - - -cairo_surface_type_t is used to describe the type of a given -surface. The surface types are also known as "backends" or "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(), -(though see cairo_surface_create_similar() as well). - - -The surface type can be queried with cairo_surface_get_type() - - -The various cairo_surface_t functions can be used with surfaces of -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(). - - -The behavior of calling a type-specific function with a surface of -the wrong type is undefined. - - -New entries may be added in future versions. - - -CAIRO_SURFACE_TYPE_IMAGE -The surface is of type image, since 1.2 - - - -CAIRO_SURFACE_TYPE_PDF -The surface is of type pdf, since 1.2 - - - -CAIRO_SURFACE_TYPE_PS -The surface is of type ps, since 1.2 - - - -CAIRO_SURFACE_TYPE_XLIB -The surface is of type xlib, since 1.2 - - - -CAIRO_SURFACE_TYPE_XCB -The surface is of type xcb, since 1.2 - - - -CAIRO_SURFACE_TYPE_GLITZ -The surface is of type glitz, since 1.2 - - - -CAIRO_SURFACE_TYPE_QUARTZ -The surface is of type quartz, since 1.2 - - - -CAIRO_SURFACE_TYPE_WIN32 -The surface is of type win32, since 1.2 - - - -CAIRO_SURFACE_TYPE_BEOS -The surface is of type beos, since 1.2 - - - -CAIRO_SURFACE_TYPE_DIRECTFB -The surface is of type directfb, since 1.2 - - - -CAIRO_SURFACE_TYPE_SVG -The surface is of type svg, since 1.2 - - - -CAIRO_SURFACE_TYPE_OS2 -The surface is of type os2, since 1.4 - - - -CAIRO_SURFACE_TYPE_WIN32_PRINTING -The surface is a win32 printing surface, since 1.6 - - - -CAIRO_SURFACE_TYPE_QUARTZ_IMAGE -The surface is of type quartz_image, since 1.6 - - - -CAIRO_SURFACE_TYPE_SCRIPT -The surface is of type script, since 1.10 - - - -CAIRO_SURFACE_TYPE_QT -The surface is of type Qt, since 1.10 - - - -CAIRO_SURFACE_TYPE_RECORDING -The surface is of type recording, since 1.10 - - - -CAIRO_SURFACE_TYPE_VG -The surface is a OpenVG surface, since 1.10 - - - -CAIRO_SURFACE_TYPE_GL -The surface is of type OpenGL, since 1.10 - - - -CAIRO_SURFACE_TYPE_DRM -The surface is of type Direct Render Manager, since 1.10 - - - -CAIRO_SURFACE_TYPE_TEE -The surface is of type 'tee' (a multiplexing surface), since 1.10 - - - -CAIRO_SURFACE_TYPE_XML -The surface is of type XML (for debugging), since 1.10 - - - -CAIRO_SURFACE_TYPE_SKIA -The surface is of type Skia, since 1.10 - - - -CAIRO_SURFACE_TYPE_SUBSURFACE -The surface is a subsurface created with - cairo_surface_create_for_rectangle(), since 1.10 - - - -CAIRO_SURFACE_TYPE_COGL -This surface is of type Cogl, since 1.12 - - -Since 1.2 +resolution if never set. + +Parameters + + + + + + +surface +a cairo_surface_t + +x_pixels_per_inch +horizontal pixels per inch + +y_pixels_per_inch +vertical pixels per inch + + +Since 1.8 -cairo_surface_get_type () +cairo_surface_get_type () cairo_surface_get_type -cairo_surface_type_t cairo_surface_get_type (cairo_surface_t *surface); - -This function returns the type of the backend used to create -a surface. See cairo_surface_type_t for available types. - -surface : -a cairo_surface_t -Returns :The type of surface. -Since 1.2 +cairo_surface_type_t +cairo_surface_get_type (cairo_surface_t *surface); +This function returns the type of the backend used to create +a surface. See cairo_surface_type_t for available types. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + The type of surface +. + +Since 1.2 -cairo_surface_get_reference_count () +cairo_surface_get_reference_count () cairo_surface_get_reference_count -unsigned int cairo_surface_get_reference_count (cairo_surface_t *surface); - -Returns the current reference count of surface. - -surface : -a cairo_surface_t -Returns :the current reference count of surface. If the -object is a nil object, 0 will be returned. -Since 1.4 +unsigned int +cairo_surface_get_reference_count (cairo_surface_t *surface); +Returns the current reference count of surface +. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + the current reference count of surface +. If the +object is a nil object, 0 will be returned. + +Since 1.4 -cairo_surface_set_user_data () +cairo_surface_set_user_data () cairo_surface_set_user_data -cairo_status_t cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to surface. To remove user data from a surface, +cairo_status_t +cairo_surface_set_user_data (cairo_surface_t *surface, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to surface +. To remove user data from a surface, call this function with the key that was used to set it and NULL -for data. - -surface : -a cairo_surface_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the surface -destroy : -a cairo_destroy_func_t which will be called when the +for data +. + +Parameters + + + + + + +surface +a cairo_surface_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the surface + +destroy +a cairo_destroy_func_t which will be called when the surface is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.0 +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.0 -cairo_surface_get_user_data () +cairo_surface_get_user_data () cairo_surface_get_user_data -void * cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key); - -Return user data previously attached to surface using the specified +void * +cairo_surface_get_user_data (cairo_surface_t *surface, + const cairo_user_data_key_t *key); +Return user data previously attached to surface + using the specified key. If no user data has been attached with the given key this -function returns NULL. - -surface : -a cairo_surface_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.0 +function returns NULL. + +Parameters + + + + + + +surface +a cairo_surface_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.0 -cairo_surface_copy_page () +cairo_surface_copy_page () cairo_surface_copy_page -void cairo_surface_copy_page (cairo_surface_t *surface); - -Emits the current page for backends that support multiple pages, +void +cairo_surface_copy_page (cairo_surface_t *surface); +Emits the current page for backends that support multiple pages, but doesn't clear it, so that the contents of the current page will be retained for the next page. Use cairo_surface_show_page() if you -want to get an empty page after the emission. - - -There is a convenience function for this that takes a cairo_t, -namely cairo_copy_page(). - -surface : -a cairo_surface_t -Since 1.6 +want to get an empty page after the emission. +There is a convenience function for this that takes a cairo_t, +namely cairo_copy_page(). + +Parameters + + + + + + +surface +a cairo_surface_t + + +Since 1.6 -cairo_surface_show_page () +cairo_surface_show_page () cairo_surface_show_page -void cairo_surface_show_page (cairo_surface_t *surface); - -Emits and clears the current page for backends that support multiple -pages. Use cairo_surface_copy_page() if you don't want to clear the page. - - -There is a convenience function for this that takes a cairo_t, -namely cairo_show_page(). - -surface : -a cairo_Surface_t -Since 1.6 +void +cairo_surface_show_page (cairo_surface_t *surface); +Emits and clears the current page for backends that support multiple +pages. Use cairo_surface_copy_page() if you don't want to clear the page. +There is a convenience function for this that takes a cairo_t, +namely cairo_show_page(). + +Parameters + + + + + + +surface +a cairo_Surface_t + + +Since 1.6 -cairo_surface_has_show_text_glyphs () +cairo_surface_has_show_text_glyphs () cairo_surface_has_show_text_glyphs -cairo_bool_t cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); - -Returns whether the surface supports +cairo_bool_t +cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); +Returns whether the surface supports sophisticated cairo_show_text_glyphs() operations. That is, whether it actually uses the provided text and cluster data -to a cairo_show_text_glyphs() call. - - -Note: Even if this function returns FALSE, a -cairo_show_text_glyphs() operation targeted at surface will +to a cairo_show_text_glyphs() call. +Note: Even if this function returns FALSE, a +cairo_show_text_glyphs() operation targeted at surface + will still succeed. It just will act like a cairo_show_glyphs() operation. Users can use this function to avoid computing UTF-8 text and cluster mapping if the -target surface does not use it. - -surface : -a cairo_surface_t -Returns :TRUE if surface supports -cairo_show_text_glyphs(), FALSE otherwise -Since 1.8 +target surface does not use it. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + TRUE if surface +supports +cairo_show_text_glyphs(), FALSE otherwise + +Since 1.8 -cairo_surface_set_mime_data () +cairo_surface_set_mime_data () cairo_surface_set_mime_data -cairo_status_t cairo_surface_set_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char *data, - unsigned long length, - cairo_destroy_func_t destroy, - void *closure); - -Attach an image in the format mime_type to surface. To remove +cairo_status_t +cairo_surface_set_mime_data (cairo_surface_t *surface, + const char *mime_type, + const unsigned char *data, + unsigned long length, + cairo_destroy_func_t destroy, + void *closure); +Attach an image in the format mime_type + to surface +. To remove the data from a surface, call this function with same mime type -and NULL for data. - - -The attached image (or filename) data can later be used by backends +and NULL for data +. +The attached image (or filename) data can later be used by backends which support it (currently: PDF, PS, SVG and Win32 Printing surfaces) to emit this data instead of making a snapshot of the -surface. This approach tends to be faster and requires less -memory and disk space. - - -The recognized MIME types are the following: CAIRO_MIME_TYPE_JPEG, +surface +. This approach tends to be faster and requires less +memory and disk space. +The recognized MIME types are the following: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_JBIG2, -CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. - - -See corresponding backend surface docs for details about which MIME +CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. +See corresponding backend surface docs for details about which MIME types it can handle. Caution: the associated MIME data will be discarded if you draw on the surface afterwards. Use this function -with care. - -surface : -a cairo_surface_t -mime_type : -the MIME type of the image data -data : -the image data to attach to the surface -length : -the length of the image data -destroy : -a cairo_destroy_func_t which will be called when the +with care. +Even if a backend supports a MIME type, that does not mean cairo +will always be able to use the attached MIME data. For example, if +the backend does not natively support the compositing operation used +to apply the MIME data to the backend. In that case, the MIME data +will be ignored. Therefore, to apply an image in all cases, it is best +to create an image surface which contains the decoded image data and +then attach the MIME data to that. This ensures the image will always +be used while still allowing the MIME data to be used whenever +possible. + +Parameters + + + + + + +surface +a cairo_surface_t + +mime_type +the MIME type of the image data + +data +the image data to attach to the surface + +length +the length of the image data + +destroy +a cairo_destroy_func_t which will be called when the surface is destroyed or when new image data is attached using the -same mime type. -closure : -the data to be passed to the destroy notifier -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.10 +same mime type. + +closure +the data to be passed to the destroy +notifier + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.10 -cairo_surface_get_mime_data () +cairo_surface_get_mime_data () cairo_surface_get_mime_data -void cairo_surface_get_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char **data, - unsigned long *length); - -Return mime data previously attached to surface using the +void +cairo_surface_get_mime_data (cairo_surface_t *surface, + const char *mime_type, + const unsigned char **data, + unsigned long *length); +Return mime data previously attached to surface + using the specified mime type. If no data has been attached with the given -mime type, data is set NULL. - -surface : -a cairo_surface_t -mime_type : -the mime type of the image data -data : -the image data to attached to the surface -length : -the length of the image data -Since 1.10 +mime type, data + is set NULL. + +Parameters + + + + + + +surface +a cairo_surface_t + +mime_type +the mime type of the image data + +data +the image data to attached to the surface + +length +the length of the image data + + +Since 1.10 -cairo_surface_supports_mime_type () +cairo_surface_supports_mime_type () cairo_surface_supports_mime_type -cairo_bool_t cairo_surface_supports_mime_type (cairo_surface_t *surface, - const char *mime_type); - -Return whether surface supports mime_type. - -surface : -a cairo_surface_t -mime_type : -the mime type -Returns :TRUE if surface supports -mime_type, FALSE otherwise -Since 1.12 +cairo_bool_t +cairo_surface_supports_mime_type (cairo_surface_t *surface, + const char *mime_type); +Return whether surface + supports mime_type +. + +Parameters + + + + + + +surface +a cairo_surface_t + +mime_type +the mime type + + + +Returns + TRUE if surface +supports +mime_type +, FALSE otherwise + +Since 1.12 -cairo_surface_map_to_image () +cairo_surface_map_to_image () cairo_surface_map_to_image -cairo_surface_t * cairo_surface_map_to_image (cairo_surface_t *surface, - const cairo_rectangle_int_t *extents); - -Returns an image surface that is the most efficient mechanism for +cairo_surface_t * +cairo_surface_map_to_image (cairo_surface_t *surface, + const cairo_rectangle_int_t *extents); +Returns an image surface that is the most efficient mechanism for modifying the backing store of the target surface. The region retrieved -may be limited to the extents or NULL for the whole surface - - -Note, the use of the original surface as a target or source whilst +may be limited to the extents + or NULL for the whole surface +Note, the use of the original surface as a target or source whilst it is mapped is undefined. The result of mapping the surface multiple times is undefined. Calling cairo_surface_destroy() or cairo_surface_finish() on the resulting image surface results in undefined behavior. Changing the device transform of the image -surface or of surface before the image surface is unmapped results -in undefined behavior. - -surface : -an existing surface used to extract the image from -extents : -limit the extraction to an rectangular region -Returns :a pointer to the newly allocated image surface. The caller -must use cairo_surface_unmap_image() to destroy this image surface. -This function always returns a valid pointer, but it will return a -pointer to a "nil" surface if other is already in an error state +surface or of surface + before the image surface is unmapped results +in undefined behavior. + +Parameters + + + + + + +surface +an existing surface used to extract the image from + +extents +limit the extraction to an rectangular region + + + +Returns + a pointer to the newly allocated image surface. The caller +must use cairo_surface_unmap_image() to destroy this image surface. +This function always returns a valid pointer, but it will return a +pointer to a "nil" surface if other +is already in an error state or any other error occurs. If the returned pointer does not have an error status, it is guaranteed to be an image surface whose format -is not CAIRO_FORMAT_INVALID. -Since 1.12 +is not CAIRO_FORMAT_INVALID. + +Since 1.12 -cairo_surface_unmap_image () +cairo_surface_unmap_image () cairo_surface_unmap_image -void cairo_surface_unmap_image (cairo_surface_t *surface, - cairo_surface_t *image); - -Unmaps the image surface as returned from #cairo_surface_map_to_image(). - +void +cairo_surface_unmap_image (cairo_surface_t *surface, + cairo_surface_t *image); +Unmaps the image surface as returned from cairo_surface_map_to_image(). +The content of the image will be uploaded to the target surface. +Afterwards, the image is destroyed. +Using an image surface which wasn't returned by cairo_surface_map_to_image() +results in undefined behavior. + +Parameters + + + + + + +surface +the surface passed to cairo_surface_map_to_image(). + +image +the currently mapped image + + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_MIME_SURFACE +CAIRO_HAS_MIME_SURFACE +#define CAIRO_HAS_MIME_SURFACE 1 + -The content of the image will be uploaded to the target surface. -Afterwards, the image is destroyed. - -Using an image surface which wasn't returned by cairo_surface_map_to_image() -results in undefined behavior. - -surface : -the surface passed to cairo_surface_map_to_image(). -image : -the currently mapped image -Since 1.12 + + +CAIRO_MIME_TYPE_JBIG2 +CAIRO_MIME_TYPE_JBIG2 +#define CAIRO_MIME_TYPE_JBIG2 "application/x-cairo.jbig2" + +Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544). +Since 1.14 + +CAIRO_MIME_TYPE_JBIG2_GLOBAL +CAIRO_MIME_TYPE_JBIG2_GLOBAL +#define CAIRO_MIME_TYPE_JBIG2_GLOBAL "application/x-cairo.jbig2-global" + +Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544) global segment. +Since 1.14 + +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID +#define CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID "application/x-cairo.jbig2-global-id" + +An unique identifier shared by a JBIG2 global segment and all JBIG2 images +that depend on the global segment. +Since 1.14 + +CAIRO_MIME_TYPE_JP2 +CAIRO_MIME_TYPE_JP2 +#define CAIRO_MIME_TYPE_JP2 "image/jp2" + +The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1). +Since 1.10 + +CAIRO_MIME_TYPE_JPEG +CAIRO_MIME_TYPE_JPEG +#define CAIRO_MIME_TYPE_JPEG "image/jpeg" + +The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1). +Since 1.10 + +CAIRO_MIME_TYPE_PNG +CAIRO_MIME_TYPE_PNG +#define CAIRO_MIME_TYPE_PNG "image/png" + +The Portable Network Graphics image file format (ISO/IEC 15948). +Since 1.10 + +CAIRO_MIME_TYPE_URI +CAIRO_MIME_TYPE_URI +#define CAIRO_MIME_TYPE_URI "text/x-uri" + +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). All surfaces with +the same unique identifier will only be embedded once. +Since 1.12 + +cairo_surface_t +cairo_surface_t +typedef struct _cairo_surface cairo_surface_t; + +A cairo_surface_t represents an image, either as the destination +of a drawing operation or as source when drawing onto another +surface. To draw to a cairo_surface_t, create a cairo context +with the surface as the target, using cairo_create(). +There are different subtypes of cairo_surface_t for +different drawing backends; for example, cairo_image_surface_create() +creates a bitmap image in memory. +The type of a surface can be queried with cairo_surface_get_type(). +The initial contents of a surface after creation depend upon the manner +of its creation. If cairo creates the surface and backing storage for +the user, it will be initially cleared; for example, +cairo_image_surface_create() and cairo_surface_create_similar(). +Alternatively, if the user passes in a reference to some backing storage +and asks cairo to wrap that in a cairo_surface_t, then the contents are +not modified; for example, cairo_image_surface_create_for_data() and +cairo_xlib_surface_create(). +Memory management of cairo_surface_t is done with +cairo_surface_reference() and cairo_surface_destroy(). +Since 1.0 + +enum cairo_content_t +cairo_content_t +cairo_content_t is used to describe the content that a surface will +contain, whether color information, alpha information (translucence +vs. opacity), or both. +Note: The large values here are designed to keep cairo_content_t +values distinct from cairo_format_t values so that the +implementation can detect the error if users confuse the two types. + +Members + + + + + + +CAIRO_CONTENT_COLOR +The surface will hold color content only. (Since 1.0) + + + +CAIRO_CONTENT_ALPHA +The surface will hold alpha content only. (Since 1.0) + + + +CAIRO_CONTENT_COLOR_ALPHA +The surface will hold color and alpha content. (Since 1.0) + + + + +Since 1.0 + +enum cairo_surface_type_t +cairo_surface_type_t +cairo_surface_type_t is used to describe the type of a given +surface. The surface types are also known as "backends" or "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(), +(though see cairo_surface_create_similar() as well). +The surface type can be queried with cairo_surface_get_type() +The various cairo_surface_t functions can be used with surfaces of +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(). +The behavior of calling a type-specific function with a surface of +the wrong type is undefined. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_SURFACE_TYPE_IMAGE +The surface is of type image, since 1.2 + + + +CAIRO_SURFACE_TYPE_PDF +The surface is of type pdf, since 1.2 + + + +CAIRO_SURFACE_TYPE_PS +The surface is of type ps, since 1.2 + + + +CAIRO_SURFACE_TYPE_XLIB +The surface is of type xlib, since 1.2 + + + +CAIRO_SURFACE_TYPE_XCB +The surface is of type xcb, since 1.2 + + + +CAIRO_SURFACE_TYPE_GLITZ +The surface is of type glitz, since 1.2 + + + +CAIRO_SURFACE_TYPE_QUARTZ +The surface is of type quartz, since 1.2 + + + +CAIRO_SURFACE_TYPE_WIN32 +The surface is of type win32, since 1.2 + + + +CAIRO_SURFACE_TYPE_BEOS +The surface is of type beos, since 1.2 + + + +CAIRO_SURFACE_TYPE_DIRECTFB +The surface is of type directfb, since 1.2 + + + +CAIRO_SURFACE_TYPE_SVG +The surface is of type svg, since 1.2 + + + +CAIRO_SURFACE_TYPE_OS2 +The surface is of type os2, since 1.4 + + + +CAIRO_SURFACE_TYPE_WIN32_PRINTING +The surface is a win32 printing surface, since 1.6 + + + +CAIRO_SURFACE_TYPE_QUARTZ_IMAGE +The surface is of type quartz_image, since 1.6 + + + +CAIRO_SURFACE_TYPE_SCRIPT +The surface is of type script, since 1.10 + + + +CAIRO_SURFACE_TYPE_QT +The surface is of type Qt, since 1.10 + + + +CAIRO_SURFACE_TYPE_RECORDING +The surface is of type recording, since 1.10 + + + +CAIRO_SURFACE_TYPE_VG +The surface is a OpenVG surface, since 1.10 + + + +CAIRO_SURFACE_TYPE_GL +The surface is of type OpenGL, since 1.10 + + + +CAIRO_SURFACE_TYPE_DRM +The surface is of type Direct Render Manager, since 1.10 + + + +CAIRO_SURFACE_TYPE_TEE +The surface is of type 'tee' (a multiplexing surface), since 1.10 + + + +CAIRO_SURFACE_TYPE_XML +The surface is of type XML (for debugging), since 1.10 + + + +CAIRO_SURFACE_TYPE_SKIA +The surface is of type Skia, since 1.10 + + + +CAIRO_SURFACE_TYPE_SUBSURFACE +The surface is a subsurface created with + cairo_surface_create_for_rectangle(), since 1.10 + + + +CAIRO_SURFACE_TYPE_COGL +This surface is of type Cogl, since 1.12 + + + + +Since 1.2 See Also -cairo_t, cairo_pattern_t +cairo_t, cairo_pattern_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-svg.xml cairo-1.14.2/doc/public/xml/cairo-svg.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-svg.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-svg.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,195 +16,283 @@ Rendering SVG documents - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_svg_surface_create () +cairo_surface_t * +cairo_svg_surface_create_for_stream () +void +cairo_svg_surface_restrict_to_version () +void +cairo_svg_get_versions () +const char * +cairo_svg_version_to_string () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_SVG_SURFACE +enumcairo_svg_version_t + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_SVG_SURFACE -cairo_surface_t * cairo_svg_surface_create (const char *filename, - double width_in_points, - double height_in_points); -cairo_surface_t * cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); -void cairo_svg_surface_restrict_to_version - (cairo_surface_t *surface, - cairo_svg_version_t version); -enum cairo_svg_version_t; -void cairo_svg_get_versions (cairo_svg_version_t const **versions, - int *num_versions); -const char * cairo_svg_version_to_string (cairo_svg_version_t version); - - Description - -The SVG surface is used to render cairo graphics to -SVG files and is a multi-page vector surface backend. - +The SVG surface is used to render cairo graphics to +SVG files and is a multi-page vector surface backend. + - -Details - -CAIRO_HAS_SVG_SURFACE -CAIRO_HAS_SVG_SURFACE -#define CAIRO_HAS_SVG_SURFACE 1 - - -Defined if the SVG surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.2 + +Functions -cairo_svg_surface_create () +cairo_svg_surface_create () cairo_svg_surface_create -cairo_surface_t * cairo_svg_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -Creates a SVG surface of the specified size in points to be written -to filename. - - -The SVG surface backend recognizes the following MIME types for the +cairo_surface_t * +cairo_svg_surface_create (const char *filename, + double width_in_points, + double height_in_points); +Creates a SVG surface of the specified size in points to be written +to filename +. +The SVG surface backend recognizes the following MIME types for the data attached to a surface (see cairo_surface_set_mime_data()) when it is used as a source pattern for drawing on this surface: CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_URI. If any of them is specified, the SVG backend emits a href with the content of MIME data instead of a surface -snapshot (PNG, Base64-encoded) in the corresponding image tag. - - -The unofficial MIME type CAIRO_MIME_TYPE_URI is examined +snapshot (PNG, Base64-encoded) in the corresponding image tag. +The unofficial MIME type CAIRO_MIME_TYPE_URI is examined first. If present, the URI is emitted as is: assuring the -correctness of URI is left to the client code. - - -If CAIRO_MIME_TYPE_URI is not present, but CAIRO_MIME_TYPE_JPEG +correctness of URI is left to the client code. +If CAIRO_MIME_TYPE_URI is not present, but CAIRO_MIME_TYPE_JPEG or CAIRO_MIME_TYPE_PNG is specified, the corresponding data is -Base64-encoded and emitted. - -filename : -a filename for the SVG output (must be writable), NULL may be +Base64-encoded and emitted. + +Parameters + + + + + + +filename +a filename for the SVG output (must be writable), NULL may be used to specify no output. This will generate a SVG surface that may be queried and used as a source, without generating a -temporary file. -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +temporary file. + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_svg_surface_create_for_stream () +cairo_svg_surface_create_for_stream () cairo_svg_surface_create_for_stream -cairo_surface_t * cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -Creates a SVG surface of the specified size in points to be written -incrementally to the stream represented by write_func and closure. - -write_func : -a cairo_write_func_t to accept the output data, may be NULL -to indicate a no-op write_func. With a no-op write_func, +cairo_surface_t * +cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, + void *closure, + double width_in_points, + double height_in_points); +Creates a SVG surface of the specified size in points to be written +incrementally to the stream represented by write_func + and closure +. + +Parameters + + + + + + +write_func +a cairo_write_func_t to accept the output data, may be NULL +to indicate a no-op write_func +. With a no-op write_func +, the surface may be queried or used as a source without -generating any temporary files. -closure : -the closure argument for write_func -width_in_points : -width of the surface, in points (1 point == 1/72.0 inch) -height_in_points : -height of the surface, in points (1 point == 1/72.0 inch) -Returns :a pointer to the newly created surface. The caller +generating any temporary files. + +closure +the closure argument for write_func + + +width_in_points +width of the surface, in points (1 point == 1/72.0 inch) + +height_in_points +height of the surface, in points (1 point == 1/72.0 inch) + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.2 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.2 -cairo_svg_surface_restrict_to_version () +cairo_svg_surface_restrict_to_version () cairo_svg_surface_restrict_to_version -void cairo_svg_surface_restrict_to_version - (cairo_surface_t *surface, - cairo_svg_version_t version); - -Restricts the generated SVG file to version. See cairo_svg_get_versions() -for a list of available version values that can be used here. - - -This function should only be called before any drawing operations +void +cairo_svg_surface_restrict_to_version (cairo_surface_t *surface, + cairo_svg_version_t version); +Restricts the generated SVG file to version +. See cairo_svg_get_versions() +for a list of available version values that can be used here. +This function should only be called before any drawing operations have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the -surface. - -surface : -a SVG cairo_surface_t -version : -SVG version -Since 1.2 - -enum cairo_svg_version_t -cairo_svg_version_t -typedef enum { - CAIRO_SVG_VERSION_1_1, - CAIRO_SVG_VERSION_1_2 -} cairo_svg_version_t; - - -cairo_svg_version_t is used to describe the version number of the SVG -specification that a generated SVG file will conform to. - - -CAIRO_SVG_VERSION_1_1 -The version 1.1 of the SVG specification. (Since 1.2) - - - -CAIRO_SVG_VERSION_1_2 -The version 1.2 of the SVG specification. (Since 1.2) - - -Since 1.2 +surface. + +Parameters + + + + + + +surface +a SVG cairo_surface_t + +version +SVG version + + +Since 1.2 -cairo_svg_get_versions () +cairo_svg_get_versions () cairo_svg_get_versions -void cairo_svg_get_versions (cairo_svg_version_t const **versions, - int *num_versions); - -Used to retrieve the list of supported versions. See -cairo_svg_surface_restrict_to_version(). - -versions : -supported version list -num_versions : -list length -Since 1.2 +void +cairo_svg_get_versions (cairo_svg_version_t const **versions, + int *num_versions); +Used to retrieve the list of supported versions. See +cairo_svg_surface_restrict_to_version(). + +Parameters + + + + + + +versions +supported version list + +num_versions +list length + + +Since 1.2 -cairo_svg_version_to_string () +cairo_svg_version_to_string () cairo_svg_version_to_string -const char * cairo_svg_version_to_string (cairo_svg_version_t version); - -Get the string representation of the given version id. This function -will return NULL if version isn't valid. See cairo_svg_get_versions() -for a way to get the list of valid version ids. - -version : -a version id -Returns :the string associated to given version. -Since 1.2 +const char * +cairo_svg_version_to_string (cairo_svg_version_t version); +Get the string representation of the given version + id. This function +will return NULL if version + isn't valid. See cairo_svg_get_versions() +for a way to get the list of valid version ids. + +Parameters + + + + + + +version +a version id + + + +Returns + the string associated to given version. + +Since 1.2 + + + +Types and Values + +CAIRO_HAS_SVG_SURFACE +CAIRO_HAS_SVG_SURFACE +#define CAIRO_HAS_SVG_SURFACE 1 + +Defined if the SVG surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.2 + +enum cairo_svg_version_t +cairo_svg_version_t +cairo_svg_version_t is used to describe the version number of the SVG +specification that a generated SVG file will conform to. + +Members + + + + + + +CAIRO_SVG_VERSION_1_1 +The version 1.1 of the SVG specification. (Since 1.2) + + + +CAIRO_SVG_VERSION_1_2 +The version 1.2 of the SVG specification. (Since 1.2) + + + + +Since 1.2 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-text.xml cairo-1.14.2/doc/public/xml/cairo-text.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-text.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-text.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,73 +16,93 @@ Rendering text and glyphs - -Synopsis + +Functions + + + + + +void +cairo_select_font_face () +void +cairo_set_font_size () +void +cairo_set_font_matrix () +void +cairo_get_font_matrix () +void +cairo_set_font_options () +void +cairo_get_font_options () +void +cairo_set_font_face () +cairo_font_face_t * +cairo_get_font_face () +void +cairo_set_scaled_font () +cairo_scaled_font_t * +cairo_get_scaled_font () +void +cairo_show_text () +void +cairo_show_glyphs () +void +cairo_show_text_glyphs () +void +cairo_font_extents () +void +cairo_text_extents () +void +cairo_glyph_extents () +cairo_font_face_t * +cairo_toy_font_face_create () +const char * +cairo_toy_font_face_get_family () +cairo_font_slant_t +cairo_toy_font_face_get_slant () +cairo_font_weight_t +cairo_toy_font_face_get_weight () +cairo_glyph_t * +cairo_glyph_allocate () +void +cairo_glyph_free () +cairo_text_cluster_t * +cairo_text_cluster_allocate () +void +cairo_text_cluster_free () + + + + + + +Types and Values + + + + + +cairo_glyph_t +enumcairo_font_slant_t +enumcairo_font_weight_t +cairo_text_cluster_t +enumcairo_text_cluster_flags_t + + + + + + +Object Hierarchy + + + - cairo_glyph_t; -enum cairo_font_slant_t; -enum cairo_font_weight_t; - cairo_text_cluster_t; -enum cairo_text_cluster_flags_t; -void cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); -void cairo_set_font_size (cairo_t *cr, - double size); -void cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); -void cairo_get_font_matrix (cairo_t *cr, - cairo_matrix_t *matrix); -void cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options); -void cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options); -void cairo_set_font_face (cairo_t *cr, - cairo_font_face_t *font_face); -cairo_font_face_t * cairo_get_font_face (cairo_t *cr); -void cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font); -cairo_scaled_font_t * cairo_get_scaled_font (cairo_t *cr); -void cairo_show_text (cairo_t *cr, - const char *utf8); -void cairo_show_glyphs (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs); -void cairo_show_text_glyphs (cairo_t *cr, - const char *utf8, - int utf8_len, - const cairo_glyph_t *glyphs, - int num_glyphs, - const cairo_text_cluster_t *clusters, - int num_clusters, - cairo_text_cluster_flags_t cluster_flags); -void cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents); -void cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents); -void cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); -cairo_font_face_t * cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); -const char * cairo_toy_font_face_get_family (cairo_font_face_t *font_face); -cairo_font_slant_t cairo_toy_font_face_get_slant (cairo_font_face_t *font_face); -cairo_font_weight_t cairo_toy_font_face_get_weight (cairo_font_face_t *font_face); -cairo_glyph_t * cairo_glyph_allocate (int num_glyphs); -void cairo_glyph_free (cairo_glyph_t *glyphs); -cairo_text_cluster_t * cairo_text_cluster_allocate (int num_clusters); -void cairo_text_cluster_free (cairo_text_cluster_t *clusters); - - Description - -The functions with text in their name form cairo's +The functions with text in their name form cairo's toy text API. The toy API takes UTF-8 encoded text and is limited in its functionality to rendering simple left-to-right text with no advanced features. That means for example @@ -91,708 +111,1003 @@ either. The font selection is pretty limited too and doesn't handle the case that the selected font does not cover the characters in the text. This set of functions are really that, a toy text API, for testing and -demonstration purposes. Any serious application should avoid them. - - -The functions with glyphs in their name form cairo's +demonstration purposes. Any serious application should avoid them. +The functions with glyphs in their name form cairo's low-level text API. The low-level API relies on the user to convert text to a set of glyph indexes and positions. This is a very hard problem and is best handled by external libraries, like the pangocairo that is part of the Pango text layout and rendering library. Pango is available from http://www.pango.org/. - +url="http://www.pango.org/">http://www.pango.org/. + - -Details - -cairo_glyph_t -cairo_glyph_t -typedef struct { - unsigned long index; - double x; - double y; -} cairo_glyph_t; - - -The cairo_glyph_t structure holds information about a single glyph -when drawing or measuring text. A font is (in simple terms) a -collection of shapes used to draw text. A glyph is one of these -shapes. There can be multiple glyphs for a single character -(alternates to be used in different contexts, for example), or a -glyph can be a ligature of multiple -characters. Cairo doesn't expose any way of converting input text -into glyphs, so in order to use the Cairo interfaces that take -arrays of glyphs, you must directly access the appropriate -underlying font system. - - -Note that the offsets given by x and y are not cumulative. When -drawing or measuring text, each glyph is individually positioned -with respect to the overall origin - -unsigned long index; -glyph index in the font. The exact interpretation of the -glyph index depends on the font technology being used. - -double x; -the offset in the X direction between the origin used for -drawing or measuring the string and the origin of this glyph. - -double y; -the offset in the Y direction between the origin used for -drawing or measuring the string and the origin of this glyph. - -Since 1.0 - -enum cairo_font_slant_t -cairo_font_slant_t -typedef enum { - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_SLANT_ITALIC, - CAIRO_FONT_SLANT_OBLIQUE -} cairo_font_slant_t; - - -Specifies variants of a font face based on their slant. - - -CAIRO_FONT_SLANT_NORMAL -Upright font style, since 1.0 - - - -CAIRO_FONT_SLANT_ITALIC -Italic font style, since 1.0 - - - -CAIRO_FONT_SLANT_OBLIQUE -Oblique font style, since 1.0 - - -Since 1.0 - -enum cairo_font_weight_t -cairo_font_weight_t -typedef enum { - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD -} cairo_font_weight_t; - - -Specifies variants of a font face based on their weight. - - -CAIRO_FONT_WEIGHT_NORMAL -Normal font weight, since 1.0 - - - -CAIRO_FONT_WEIGHT_BOLD -Bold font weight, since 1.0 - - -Since 1.0 - -cairo_text_cluster_t -cairo_text_cluster_t -typedef struct { - int num_bytes; - int num_glyphs; -} cairo_text_cluster_t; - - -The cairo_text_cluster_t structure holds information about a single -text cluster. A text cluster is a minimal -mapping of some glyphs corresponding to some UTF-8 text. - - -For a cluster to be valid, both num_bytes and num_glyphs should -be non-negative, and at least one should be non-zero. -Note that clusters with zero glyphs are not as well supported as -normal clusters. For example, PDF rendering applications typically -ignore those clusters when PDF text is being selected. - - -See cairo_show_text_glyphs() for how clusters are used in advanced -text operations. - -int num_bytes; -the number of bytes of UTF-8 text covered by cluster - -int num_glyphs; -the number of glyphs covered by cluster - -Since 1.8 - -enum cairo_text_cluster_flags_t -cairo_text_cluster_flags_t -typedef enum { - CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001 -} cairo_text_cluster_flags_t; - - -Specifies properties of a text cluster mapping. - - -CAIRO_TEXT_CLUSTER_FLAG_BACKWARD -The clusters in the cluster array -map to glyphs in the glyph array from end to start. (Since 1.8) - - -Since 1.8 + +Functions -cairo_select_font_face () +cairo_select_font_face () cairo_select_font_face -void cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -Note: The cairo_select_font_face() function call is part of what +void +cairo_select_font_face (cairo_t *cr, + const char *family, + cairo_font_slant_t slant, + cairo_font_weight_t weight); +Note: The cairo_select_font_face() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be -adequate for serious text-using applications. - - -Selects a family and style of font from a simplified description as +adequate for serious text-using applications. +Selects a family and style of font from a simplified description as a family name, slant and weight. Cairo provides no operation to list available family names on the system (this is a "toy", remember), but the standard CSS2 generic family names, ("serif", "sans-serif", "cursive", "fantasy", "monospace"), are likely to -work as expected. - - -If family starts with the string "cairo:", or if no native font +work as expected. +If family + starts with the string "cairo +:", or if no native font backends are compiled in, cairo will use an internal font family. The internal font family recognizes many modifiers in the family + string, most notably, it recognizes the string "monospace". That is, -the family name "cairo:monospace" will use the monospace version of -the internal font family. - - -For "real" font selection, see the font-backend-specific +the family name "cairo +:monospace" will use the monospace version of +the internal font family. +For "real" font selection, see the font-backend-specific font_face_create functions for the font backend you are using. (For example, if you are using the freetype-based cairo-ft font backend, see cairo_ft_font_face_create_for_ft_face() or cairo_ft_font_face_create_for_pattern().) The resulting font face could then be used with cairo_scaled_font_create() and -cairo_set_scaled_font(). - - -Similarly, when using the "real" font support, you can call +cairo_set_scaled_font(). +Similarly, when using the "real" font support, you can call directly into the underlying font system, (such as fontconfig or -freetype), for operations such as listing available fonts, etc. - - -It is expected that most applications will need to use a more +freetype), for operations such as listing available fonts, etc. +It is expected that most applications will need to use a more comprehensive font handling and text layout library, (for example, -pango), in conjunction with cairo. - - -If text is drawn without a call to cairo_select_font_face(), (nor +pango), in conjunction with cairo. +If text is drawn without a call to cairo_select_font_face(), (nor cairo_set_font_face() nor cairo_set_scaled_font()), the default family is platform-specific, but is essentially "sans-serif". Default slant is CAIRO_FONT_SLANT_NORMAL, and default weight is -CAIRO_FONT_WEIGHT_NORMAL. - - -This function is equivalent to a call to cairo_toy_font_face_create() -followed by cairo_set_font_face(). - -cr : -a cairo_t -family : -a font family name, encoded in UTF-8 -slant : -the slant for the font -weight : -the weight for the font -Since 1.0 +CAIRO_FONT_WEIGHT_NORMAL. +This function is equivalent to a call to cairo_toy_font_face_create() +followed by cairo_set_font_face(). + +Parameters + + + + + + +cr +a cairo_t + +family +a font family name, encoded in UTF-8 + +slant +the slant for the font + +weight +the weight for the font + + +Since 1.0 -cairo_set_font_size () +cairo_set_font_size () cairo_set_font_size -void cairo_set_font_size (cairo_t *cr, - double size); - -Sets the current font matrix to a scale by a factor of size, replacing +void +cairo_set_font_size (cairo_t *cr, + double size); +Sets the current font matrix to a scale by a factor of size +, replacing any font matrix previously set with cairo_set_font_size() or -cairo_set_font_matrix(). This results in a font size of size user space +cairo_set_font_matrix(). This results in a font size of size + user space units. (More precisely, this matrix will result in the font's -em-square being a size by size square in user space.) - - -If text is drawn without a call to cairo_set_font_size(), (nor +em-square being a size + by size + square in user space.) +If text is drawn without a call to cairo_set_font_size(), (nor cairo_set_font_matrix() nor cairo_set_scaled_font()), the default -font size is 10.0. - -cr : -a cairo_t -size : -the new font size, in user space units -Since 1.0 +font size is 10.0. + +Parameters + + + + + + +cr +a cairo_t + +size +the new font size, in user space units + + +Since 1.0 -cairo_set_font_matrix () +cairo_set_font_matrix () cairo_set_font_matrix -void cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -Sets the current font matrix to matrix. The font matrix gives a +void +cairo_set_font_matrix (cairo_t *cr, + const cairo_matrix_t *matrix); +Sets the current font matrix to matrix +. The font matrix gives a transformation from the design space of the font (in this space, the em-square is 1 unit by 1 unit) to user space. Normally, a simple scale is used (see cairo_set_font_size()), but a more complex font matrix can be used to shear the font -or stretch it unequally along the two axes - -cr : -a cairo_t -matrix : -a cairo_matrix_t describing a transform to be applied to -the current font. -Since 1.0 +or stretch it unequally along the two axes + +Parameters + + + + + + +cr +a cairo_t + +matrix +a cairo_matrix_t describing a transform to be applied to +the current font. + + +Since 1.0 -cairo_get_font_matrix () +cairo_get_font_matrix () cairo_get_font_matrix -void cairo_get_font_matrix (cairo_t *cr, - cairo_matrix_t *matrix); - -Stores the current font matrix into matrix. See -cairo_set_font_matrix(). - -cr : -a cairo_t -matrix : -return value for the matrix -Since 1.0 +void +cairo_get_font_matrix (cairo_t *cr, + cairo_matrix_t *matrix); +Stores the current font matrix into matrix +. See +cairo_set_font_matrix(). + +Parameters + + + + + + +cr +a cairo_t + +matrix +return value for the matrix + + +Since 1.0 -cairo_set_font_options () +cairo_set_font_options () cairo_set_font_options -void cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options); - -Sets a set of custom font rendering options for the cairo_t. +void +cairo_set_font_options (cairo_t *cr, + const cairo_font_options_t *options); +Sets a set of custom font rendering options for the cairo_t. Rendering options are derived by merging these options with the options derived from underlying surface; if the value in options + has a default value (like CAIRO_ANTIALIAS_DEFAULT), then the value -from the surface is used. - -cr : -a cairo_t -options : -font options to use -Since 1.0 +from the surface is used. + +Parameters + + + + + + +cr +a cairo_t + +options +font options to use + + +Since 1.0 -cairo_get_font_options () +cairo_get_font_options () cairo_get_font_options -void cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options); - -Retrieves font rendering options set via cairo_set_font_options. +void +cairo_get_font_options (cairo_t *cr, + cairo_font_options_t *options); +Retrieves font rendering options set via cairo_set_font_options. Note that the returned options do not include any options derived from the underlying surface; they are literally the options -passed to cairo_set_font_options(). - -cr : -a cairo_t -options : -a cairo_font_options_t object into which to store -the retrieved options. All existing values are overwritten -Since 1.0 +passed to cairo_set_font_options(). + +Parameters + + + + + + +cr +a cairo_t + +options +a cairo_font_options_t object into which to store +the retrieved options. All existing values are overwritten + + +Since 1.0 -cairo_set_font_face () +cairo_set_font_face () cairo_set_font_face -void cairo_set_font_face (cairo_t *cr, - cairo_font_face_t *font_face); - -Replaces the current cairo_font_face_t object in the cairo_t with -font_face. The replaced font face in the cairo_t will be -destroyed if there are no other references to it. - -cr : -a cairo_t -font_face : -a cairo_font_face_t, or NULL to restore to the default font -Since 1.0 +void +cairo_set_font_face (cairo_t *cr, + cairo_font_face_t *font_face); +Replaces the current cairo_font_face_t object in the cairo_t with +font_face +. The replaced font face in the cairo_t will be +destroyed if there are no other references to it. + +Parameters + + + + + + +cr +a cairo_t + +font_face +a cairo_font_face_t, or NULL to restore to the default font + + +Since 1.0 -cairo_get_font_face () +cairo_get_font_face () cairo_get_font_face -cairo_font_face_t * cairo_get_font_face (cairo_t *cr); - -Gets the current font face for a cairo_t. - -cr : -a cairo_t -Returns :the current font face. This object is owned by +cairo_font_face_t * +cairo_get_font_face (cairo_t *cr); +Gets the current font face for a cairo_t. + +Parameters + + + + + + +cr +a cairo_t + + + +Returns + the current font face. This object is owned by cairo. To keep a reference to it, you must call -cairo_font_face_reference(). -This function never returns NULL. If memory cannot be allocated, a +cairo_font_face_reference(). +This function never returns NULL. If memory cannot be allocated, a special "nil" cairo_font_face_t object will be returned on which cairo_font_face_status() returns CAIRO_STATUS_NO_MEMORY. Using this nil object will cause its error state to propagate to other objects it is passed to, (for example, calling cairo_set_font_face() with a nil font will trigger an error that -will shutdown the cairo_t object). -Since 1.0 +will shutdown the cairo_t object). + +Since 1.0 -cairo_set_scaled_font () +cairo_set_scaled_font () cairo_set_scaled_font -void cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font); - -Replaces the current font face, font matrix, and font options in +void +cairo_set_scaled_font (cairo_t *cr, + const cairo_scaled_font_t *scaled_font); +Replaces the current font face, font matrix, and font options in the cairo_t with those of the cairo_scaled_font_t. Except for some translation, the current CTM of the cairo_t should be the same as that of the cairo_scaled_font_t, which can be accessed -using cairo_scaled_font_get_ctm(). - -cr : -a cairo_t -scaled_font : -a cairo_scaled_font_t -Since 1.2 +using cairo_scaled_font_get_ctm(). + +Parameters + + + + + + +cr +a cairo_t + +scaled_font +a cairo_scaled_font_t + + +Since 1.2 -cairo_get_scaled_font () +cairo_get_scaled_font () cairo_get_scaled_font -cairo_scaled_font_t * cairo_get_scaled_font (cairo_t *cr); - -Gets the current scaled font for a cairo_t. - -cr : -a cairo_t -Returns :the current scaled font. This object is owned by +cairo_scaled_font_t * +cairo_get_scaled_font (cairo_t *cr); +Gets the current scaled font for a cairo_t. + +Parameters + + + + + + +cr +a cairo_t + + + +Returns + the current scaled font. This object is owned by cairo. To keep a reference to it, you must call -cairo_scaled_font_reference(). -This function never returns NULL. If memory cannot be allocated, a +cairo_scaled_font_reference(). +This function never returns NULL. If memory cannot be allocated, a special "nil" cairo_scaled_font_t object will be returned on which cairo_scaled_font_status() returns CAIRO_STATUS_NO_MEMORY. Using this nil object will cause its error state to propagate to other objects it is passed to, (for example, calling cairo_set_scaled_font() with a nil font will trigger an error that -will shutdown the cairo_t object). -Since 1.4 +will shutdown the cairo_t object). + +Since 1.4 -cairo_show_text () +cairo_show_text () cairo_show_text -void cairo_show_text (cairo_t *cr, - const char *utf8); - -A drawing operator that generates the shape from a string of UTF-8 +void +cairo_show_text (cairo_t *cr, + const char *utf8); +A drawing operator that generates the shape from a string of UTF-8 characters, rendered according to the current font_face, font_size -(font_matrix), and font_options. - - -This function first computes a set of glyphs for the string of +(font_matrix), and font_options. +This function first computes a set of glyphs for the string of text. The first glyph is placed so that its origin is at the current point. The origin of each subsequent glyph is offset from that of the previous glyph by the advance values of the previous -glyph. - - -After this call the current point is moved to the origin of where +glyph. +After this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. This allows for easy display of a single -logical string with multiple calls to cairo_show_text(). - - -Note: The cairo_show_text() function call is part of what the cairo +logical string with multiple calls to cairo_show_text(). +Note: The cairo_show_text() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for serious text-using applications. See cairo_show_glyphs() for the -"real" text display API in cairo. - -cr : -a cairo context -utf8 : -a NUL-terminated string of text encoded in UTF-8, or NULL -Since 1.0 +"real" text display API in cairo. + +Parameters + + + + + + +cr +a cairo context + +utf8 +a NUL-terminated string of text encoded in UTF-8, or NULL + + +Since 1.0 -cairo_show_glyphs () +cairo_show_glyphs () cairo_show_glyphs -void cairo_show_glyphs (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs); - -A drawing operator that generates the shape from an array of glyphs, +void +cairo_show_glyphs (cairo_t *cr, + const cairo_glyph_t *glyphs, + int num_glyphs); +A drawing operator that generates the shape from an array of glyphs, rendered according to the current font face, font size -(font matrix), and font options. - -cr : -a cairo context -glyphs : -array of glyphs to show -num_glyphs : -number of glyphs to show -Since 1.0 +(font matrix), and font options. + +Parameters + + + + + + +cr +a cairo context + +glyphs +array of glyphs to show + +num_glyphs +number of glyphs to show + + +Since 1.0 -cairo_show_text_glyphs () +cairo_show_text_glyphs () cairo_show_text_glyphs -void cairo_show_text_glyphs (cairo_t *cr, - const char *utf8, - int utf8_len, - const cairo_glyph_t *glyphs, - int num_glyphs, - const cairo_text_cluster_t *clusters, - int num_clusters, - cairo_text_cluster_flags_t cluster_flags); - -This operation has rendering effects similar to cairo_show_glyphs() +void +cairo_show_text_glyphs (cairo_t *cr, + const char *utf8, + int utf8_len, + const cairo_glyph_t *glyphs, + int num_glyphs, + const cairo_text_cluster_t *clusters, + int num_clusters, + cairo_text_cluster_flags_t cluster_flags); +This operation has rendering effects similar to cairo_show_glyphs() but, if the target surface supports it, uses the provided text and cluster mapping to embed the text for the glyphs shown in the output. If the target does not support the extended attributes, this function acts like the basic cairo_show_glyphs() as if it had been passed -glyphs and num_glyphs. - - -The mapping between utf8 and glyphs is provided by an array of +glyphs + and num_glyphs +. +The mapping between utf8 + and glyphs + is provided by an array of clusters. Each cluster covers a number of text bytes and glyphs, and neighboring clusters cover neighboring -areas of utf8 and glyphs. The clusters should collectively cover utf8 -and glyphs in entirety. - - -The first cluster always covers bytes from the beginning of utf8. -If cluster_flags do not have the CAIRO_TEXT_CLUSTER_FLAG_BACKWARD +areas of utf8 + and glyphs +. The clusters should collectively cover utf8 + +and glyphs + in entirety. +The first cluster always covers bytes from the beginning of utf8 +. +If cluster_flags + do not have the CAIRO_TEXT_CLUSTER_FLAG_BACKWARD set, the first cluster also covers the beginning -of glyphs, otherwise it covers the end of the glyphs array and -following clusters move backward. - - -See cairo_text_cluster_t for constraints on valid clusters. - -cr : -a cairo context -utf8 : -a string of text encoded in UTF-8 -utf8_len : -length of utf8 in bytes, or -1 if it is NUL-terminated -glyphs : -array of glyphs to show -num_glyphs : -number of glyphs to show -clusters : -array of cluster mapping information -num_clusters : -number of clusters in the mapping -cluster_flags : -cluster mapping flags -Since 1.8 +of glyphs +, otherwise it covers the end of the glyphs + array and +following clusters move backward. +See cairo_text_cluster_t for constraints on valid clusters. + +Parameters + + + + + + +cr +a cairo context + +utf8 +a string of text encoded in UTF-8 + +utf8_len +length of utf8 +in bytes, or -1 if it is NUL-terminated + +glyphs +array of glyphs to show + +num_glyphs +number of glyphs to show + +clusters +array of cluster mapping information + +num_clusters +number of clusters in the mapping + +cluster_flags +cluster mapping flags + + +Since 1.8 -cairo_font_extents () +cairo_font_extents () cairo_font_extents -void cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents); - -Gets the font extents for the currently selected font. - -cr : -a cairo_t -extents : -a cairo_font_extents_t object into which the results -will be stored. -Since 1.0 +void +cairo_font_extents (cairo_t *cr, + cairo_font_extents_t *extents); +Gets the font extents for the currently selected font. + +Parameters + + + + + + +cr +a cairo_t + +extents +a cairo_font_extents_t object into which the results +will be stored. + + +Since 1.0 -cairo_text_extents () +cairo_text_extents () cairo_text_extents -void cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents); - -Gets the extents for a string of text. The extents describe a +void +cairo_text_extents (cairo_t *cr, + const char *utf8, + cairo_text_extents_t *extents); +Gets the extents for a string of text. The extents describe a user-space rectangle that encloses the "inked" portion of the text, (as it would be drawn by cairo_show_text()). Additionally, the x_advance and y_advance values indicate the amount by which the -current point would be advanced by cairo_show_text(). - - -Note that whitespace characters do not directly contribute to the +current point would be advanced by cairo_show_text(). +Note that whitespace characters do not directly contribute to the size of the rectangle (extents.width and extents.height). They do contribute indirectly by changing the position of non-whitespace characters. In particular, trailing whitespace characters are likely to not affect the size of the rectangle, though they will -affect the x_advance and y_advance values. - -cr : -a cairo_t -utf8 : -a NUL-terminated string of text encoded in UTF-8, or NULL -extents : -a cairo_text_extents_t object into which the results -will be stored -Since 1.0 +affect the x_advance and y_advance values. + +Parameters + + + + + + +cr +a cairo_t + +utf8 +a NUL-terminated string of text encoded in UTF-8, or NULL + +extents +a cairo_text_extents_t object into which the results +will be stored + + +Since 1.0 -cairo_glyph_extents () +cairo_glyph_extents () cairo_glyph_extents -void cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -Gets the extents for an array of glyphs. The extents describe a +void +cairo_glyph_extents (cairo_t *cr, + const cairo_glyph_t *glyphs, + int num_glyphs, + cairo_text_extents_t *extents); +Gets the extents for an array of glyphs. The extents describe a user-space rectangle that encloses the "inked" portion of the glyphs, (as they would be drawn by cairo_show_glyphs()). Additionally, the x_advance and y_advance values indicate the amount by which the current point would be advanced by -cairo_show_glyphs(). - - -Note that whitespace glyphs do not contribute to the size of the -rectangle (extents.width and extents.height). - -cr : -a cairo_t -glyphs : -an array of cairo_glyph_t objects -num_glyphs : -the number of elements in glyphs -extents : -a cairo_text_extents_t object into which the results -will be stored -Since 1.0 +cairo_show_glyphs(). +Note that whitespace glyphs do not contribute to the size of the +rectangle (extents.width and extents.height). + +Parameters + + + + + + +cr +a cairo_t + +glyphs +an array of cairo_glyph_t objects + +num_glyphs +the number of elements in glyphs + + +extents +a cairo_text_extents_t object into which the results +will be stored + + +Since 1.0 -cairo_toy_font_face_create () +cairo_toy_font_face_create () cairo_toy_font_face_create -cairo_font_face_t * cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -Creates a font face from a triplet of family, slant, and weight. +cairo_font_face_t * +cairo_toy_font_face_create (const char *family, + cairo_font_slant_t slant, + cairo_font_weight_t weight); +Creates a font face from a triplet of family, slant, and weight. These font faces are used in implementation of the the cairo_t "toy" -font API. - - -If family is the zero-length string "", the platform-specific default +font API. +If family + is the zero-length string "", the platform-specific default family is assumed. The default family then can be queried using -cairo_toy_font_face_get_family(). - - -The cairo_select_font_face() function uses this to create font faces. -See that function for limitations and other details of toy font faces. - -family : -a font family name, encoded in UTF-8 -slant : -the slant for the font -weight : -the weight for the font -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.8 +cairo_toy_font_face_get_family(). +The cairo_select_font_face() function uses this to create font faces. +See that function for limitations and other details of toy font faces. + +Parameters + + + + + + +family +a font family name, encoded in UTF-8 + +slant +the slant for the font + +weight +the weight for the font + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.8 -cairo_toy_font_face_get_family () +cairo_toy_font_face_get_family () cairo_toy_font_face_get_family -const char * cairo_toy_font_face_get_family (cairo_font_face_t *font_face); - -Gets the familly name of a toy font. - -font_face : -A toy font face -Returns :The family name. This string is owned by the font face -and remains valid as long as the font face is alive (referenced). -Since 1.8 +const char * +cairo_toy_font_face_get_family (cairo_font_face_t *font_face); +Gets the familly name of a toy font. + +Parameters + + + + + + +font_face +A toy font face + + + +Returns + The family name. This string is owned by the font face +and remains valid as long as the font face is alive (referenced). + +Since 1.8 -cairo_toy_font_face_get_slant () +cairo_toy_font_face_get_slant () cairo_toy_font_face_get_slant -cairo_font_slant_t cairo_toy_font_face_get_slant (cairo_font_face_t *font_face); - -Gets the slant a toy font. - -font_face : -A toy font face -Returns :The slant value -Since 1.8 +cairo_font_slant_t +cairo_toy_font_face_get_slant (cairo_font_face_t *font_face); +Gets the slant a toy font. + +Parameters + + + + + + +font_face +A toy font face + + + +Returns + The slant value + +Since 1.8 -cairo_toy_font_face_get_weight () +cairo_toy_font_face_get_weight () cairo_toy_font_face_get_weight -cairo_font_weight_t cairo_toy_font_face_get_weight (cairo_font_face_t *font_face); - -Gets the weight a toy font. - -font_face : -A toy font face -Returns :The weight value -Since 1.8 +cairo_font_weight_t +cairo_toy_font_face_get_weight (cairo_font_face_t *font_face); +Gets the weight a toy font. + +Parameters + + + + + + +font_face +A toy font face + + + +Returns + The weight value + +Since 1.8 -cairo_glyph_allocate () +cairo_glyph_allocate () cairo_glyph_allocate -cairo_glyph_t * cairo_glyph_allocate (int num_glyphs); - -Allocates an array of cairo_glyph_t's. +cairo_glyph_t * +cairo_glyph_allocate (int num_glyphs); +Allocates an array of cairo_glyph_t's. This function is only useful in implementations of cairo_user_scaled_font_text_to_glyphs_func_t where the user needs to allocate an array of glyphs that cairo will free. For all other uses, user can use their own allocation method -for glyphs. - - -This function returns NULL if num_glyphs is not positive, +for glyphs. +This function returns NULL if num_glyphs + is not positive, or if out of memory. That means, the NULL return value -signals out-of-memory only if num_glyphs was positive. - -num_glyphs : -number of glyphs to allocate -Returns :the newly allocated array of glyphs that should be -freed using cairo_glyph_free() -Since 1.8 +signals out-of-memory only if num_glyphs + was positive. + +Parameters + + + + + + +num_glyphs +number of glyphs to allocate + + + +Returns + the newly allocated array of glyphs that should be +freed using cairo_glyph_free() + +Since 1.8 -cairo_glyph_free () +cairo_glyph_free () cairo_glyph_free -void cairo_glyph_free (cairo_glyph_t *glyphs); - -Frees an array of cairo_glyph_t's allocated using cairo_glyph_allocate(). +void +cairo_glyph_free (cairo_glyph_t *glyphs); +Frees an array of cairo_glyph_t's allocated using cairo_glyph_allocate(). This function is only useful to free glyph array returned by cairo_scaled_font_text_to_glyphs() where cairo returns an array of glyphs that the user will free. For all other uses, user can use their own allocation method -for glyphs. - -glyphs : -array of glyphs to free, or NULL -Since 1.8 +for glyphs. + +Parameters + + + + + + +glyphs +array of glyphs to free, or NULL + + +Since 1.8 -cairo_text_cluster_allocate () +cairo_text_cluster_allocate () cairo_text_cluster_allocate -cairo_text_cluster_t * cairo_text_cluster_allocate (int num_clusters); - -Allocates an array of cairo_text_cluster_t's. +cairo_text_cluster_t * +cairo_text_cluster_allocate (int num_clusters); +Allocates an array of cairo_text_cluster_t's. This function is only useful in implementations of cairo_user_scaled_font_text_to_glyphs_func_t where the user needs to allocate an array of text clusters that cairo will free. For all other uses, user can use their own allocation method -for text clusters. - - -This function returns NULL if num_clusters is not positive, +for text clusters. +This function returns NULL if num_clusters + is not positive, or if out of memory. That means, the NULL return value -signals out-of-memory only if num_clusters was positive. - -num_clusters : -number of text_clusters to allocate -Returns :the newly allocated array of text clusters that should be -freed using cairo_text_cluster_free() -Since 1.8 +signals out-of-memory only if num_clusters + was positive. + +Parameters + + + + + + +num_clusters +number of text_clusters to allocate + + + +Returns + the newly allocated array of text clusters that should be +freed using cairo_text_cluster_free() + +Since 1.8 -cairo_text_cluster_free () +cairo_text_cluster_free () cairo_text_cluster_free -void cairo_text_cluster_free (cairo_text_cluster_t *clusters); - -Frees an array of cairo_text_cluster's allocated using cairo_text_cluster_allocate(). +void +cairo_text_cluster_free (cairo_text_cluster_t *clusters); +Frees an array of cairo_text_cluster's allocated using cairo_text_cluster_allocate(). This function is only useful to free text cluster array returned by cairo_scaled_font_text_to_glyphs() where cairo returns an array of text clusters that the user will free. For all other uses, user can use their own allocation method -for text clusters. - -clusters : -array of text clusters to free, or NULL -Since 1.8 +for text clusters. + +Parameters + + + + + + +clusters +array of text clusters to free, or NULL + + +Since 1.8 + + + +Types and Values + +cairo_glyph_t +cairo_glyph_t +typedef struct { + unsigned long index; + double x; + double y; +} cairo_glyph_t; + +The cairo_glyph_t structure holds information about a single glyph +when drawing or measuring text. A font is (in simple terms) a +collection of shapes used to draw text. A glyph is one of these +shapes. There can be multiple glyphs for a single character +(alternates to be used in different contexts, for example), or a +glyph can be a ligature of multiple +characters. Cairo doesn't expose any way of converting input text +into glyphs, so in order to use the Cairo interfaces that take +arrays of glyphs, you must directly access the appropriate +underlying font system. +Note that the offsets given by x + and y + are not cumulative. When +drawing or measuring text, each glyph is individually positioned +with respect to the overall origin + +Members + + + + + + +unsigned long index; +glyph index in the font. The exact interpretation of the +glyph index depends on the font technology being used. +glyph index in the font. The exact interpretation of the +glyph index depends on the font technology being used. + + +double x; +the offset in the X direction between the origin used for +drawing or measuring the string and the origin of this glyph. +the offset in the X direction between the origin used for +drawing or measuring the string and the origin of this glyph. + + +double y; +the offset in the Y direction between the origin used for +drawing or measuring the string and the origin of this glyph. +the offset in the Y direction between the origin used for +drawing or measuring the string and the origin of this glyph. + + + + +Since 1.0 + +enum cairo_font_slant_t +cairo_font_slant_t +Specifies variants of a font face based on their slant. + +Members + + + + + + +CAIRO_FONT_SLANT_NORMAL +Upright font style, since 1.0 + + + +CAIRO_FONT_SLANT_ITALIC +Italic font style, since 1.0 + + + +CAIRO_FONT_SLANT_OBLIQUE +Oblique font style, since 1.0 + + + + +Since 1.0 + +enum cairo_font_weight_t +cairo_font_weight_t +Specifies variants of a font face based on their weight. + +Members + + + + + + +CAIRO_FONT_WEIGHT_NORMAL +Normal font weight, since 1.0 + + + +CAIRO_FONT_WEIGHT_BOLD +Bold font weight, since 1.0 + + + + +Since 1.0 + +cairo_text_cluster_t +cairo_text_cluster_t +typedef struct { + int num_bytes; + int num_glyphs; +} cairo_text_cluster_t; + +The cairo_text_cluster_t structure holds information about a single +text cluster. A text cluster is a minimal +mapping of some glyphs corresponding to some UTF-8 text. +For a cluster to be valid, both num_bytes + and num_glyphs + should +be non-negative, and at least one should be non-zero. +Note that clusters with zero glyphs are not as well supported as +normal clusters. For example, PDF rendering applications typically +ignore those clusters when PDF text is being selected. +See cairo_show_text_glyphs() for how clusters are used in advanced +text operations. + +Members + + + + + + +int num_bytes; +the number of bytes of UTF-8 text covered by cluster +the number of bytes of UTF-8 text covered by cluster + + +int num_glyphs; +the number of glyphs covered by cluster +the number of glyphs covered by cluster + + + + +Since 1.8 + +enum cairo_text_cluster_flags_t +cairo_text_cluster_flags_t +Specifies properties of a text cluster mapping. + +Members + + + + + + +CAIRO_TEXT_CLUSTER_FLAG_BACKWARD +The clusters in the cluster array +map to glyphs in the glyph array from end to start. (Since 1.8) + + + + +Since 1.8 See Also -cairo_font_face_t, cairo_scaled_font_t, cairo_text_path(), - cairo_glyph_path() +cairo_font_face_t, cairo_scaled_font_t, cairo_text_path(), + cairo_glyph_path() + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-transforms.xml cairo-1.14.2/doc/public/xml/cairo-transforms.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-transforms.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-transforms.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,242 +16,381 @@ Manipulating the current transformation matrix - -Synopsis + +Functions + + + + + +void +cairo_translate () +void +cairo_scale () +void +cairo_rotate () +void +cairo_transform () +void +cairo_set_matrix () +void +cairo_get_matrix () +void +cairo_identity_matrix () +void +cairo_user_to_device () +void +cairo_user_to_device_distance () +void +cairo_device_to_user () +void +cairo_device_to_user_distance () + + + + + + +Object Hierarchy + + + -void cairo_translate (cairo_t *cr, - double tx, - double ty); -void cairo_scale (cairo_t *cr, - double sx, - double sy); -void cairo_rotate (cairo_t *cr, - double angle); -void cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix); -void cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); -void cairo_get_matrix (cairo_t *cr, - cairo_matrix_t *matrix); -void cairo_identity_matrix (cairo_t *cr); -void cairo_user_to_device (cairo_t *cr, - double *x, - double *y); -void cairo_user_to_device_distance (cairo_t *cr, - double *dx, - double *dy); -void cairo_device_to_user (cairo_t *cr, - double *x, - double *y); -void cairo_device_to_user_distance (cairo_t *cr, - double *dx, - double *dy); - - Description - -The current transformation matrix, ctm, is a +The current transformation matrix, ctm, is a two-dimensional affine transformation that maps all coordinates and other drawing instruments from the user space into the surface's canonical coordinate system, also known as the device -space. - +space. + - -Details + +Functions -cairo_translate () +cairo_translate () cairo_translate -void cairo_translate (cairo_t *cr, - double tx, - double ty); - -Modifies the current transformation matrix (CTM) by translating the -user-space origin by (tx, ty). This offset is interpreted as a +void +cairo_translate (cairo_t *cr, + double tx, + double ty); +Modifies the current transformation matrix (CTM) by translating the +user-space origin by (tx +, ty +). This offset is interpreted as a user-space coordinate according to the CTM in place before the new call to cairo_translate(). In other words, the translation of the -user-space origin takes place after any existing transformation. - -cr : -a cairo context -tx : -amount to translate in the X direction -ty : -amount to translate in the Y direction -Since 1.0 +user-space origin takes place after any existing transformation. + +Parameters + + + + + + +cr +a cairo context + +tx +amount to translate in the X direction + +ty +amount to translate in the Y direction + + +Since 1.0 -cairo_scale () +cairo_scale () cairo_scale -void cairo_scale (cairo_t *cr, - double sx, - double sy); - -Modifies the current transformation matrix (CTM) by scaling the X -and Y user-space axes by sx and sy respectively. The scaling of +void +cairo_scale (cairo_t *cr, + double sx, + double sy); +Modifies the current transformation matrix (CTM) by scaling the X +and Y user-space axes by sx + and sy + respectively. The scaling of the axes takes place after any existing transformation of user -space. - -cr : -a cairo context -sx : -scale factor for the X dimension -sy : -scale factor for the Y dimension -Since 1.0 +space. + +Parameters + + + + + + +cr +a cairo context + +sx +scale factor for the X dimension + +sy +scale factor for the Y dimension + + +Since 1.0 -cairo_rotate () +cairo_rotate () cairo_rotate -void cairo_rotate (cairo_t *cr, - double angle); - -Modifies the current transformation matrix (CTM) by rotating the -user-space axes by angle radians. The rotation of the axes takes +void +cairo_rotate (cairo_t *cr, + double angle); +Modifies the current transformation matrix (CTM) by rotating the +user-space axes by angle + radians. The rotation of the axes takes places after any existing transformation of user space. The rotation direction for positive angles is from the positive X axis -toward the positive Y axis. - -cr : -a cairo context -angle : -angle (in radians) by which the user-space axes will be -rotated -Since 1.0 +toward the positive Y axis. + +Parameters + + + + + + +cr +a cairo context + +angle +angle (in radians) by which the user-space axes will be +rotated + + +Since 1.0 -cairo_transform () +cairo_transform () cairo_transform -void cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix); - -Modifies the current transformation matrix (CTM) by applying -matrix as an additional transformation. The new transformation of -user space takes place after any existing transformation. - -cr : -a cairo context -matrix : -a transformation to be applied to the user-space axes -Since 1.0 +void +cairo_transform (cairo_t *cr, + const cairo_matrix_t *matrix); +Modifies the current transformation matrix (CTM) by applying +matrix + as an additional transformation. The new transformation of +user space takes place after any existing transformation. + +Parameters + + + + + + +cr +a cairo context + +matrix +a transformation to be applied to the user-space axes + + +Since 1.0 -cairo_set_matrix () +cairo_set_matrix () cairo_set_matrix -void cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -Modifies the current transformation matrix (CTM) by setting it -equal to matrix. - -cr : -a cairo context -matrix : -a transformation matrix from user space to device space -Since 1.0 +void +cairo_set_matrix (cairo_t *cr, + const cairo_matrix_t *matrix); +Modifies the current transformation matrix (CTM) by setting it +equal to matrix +. + +Parameters + + + + + + +cr +a cairo context + +matrix +a transformation matrix from user space to device space + + +Since 1.0 -cairo_get_matrix () +cairo_get_matrix () cairo_get_matrix -void cairo_get_matrix (cairo_t *cr, - cairo_matrix_t *matrix); - -Stores the current transformation matrix (CTM) into matrix. - -cr : -a cairo context -matrix : -return value for the matrix -Since 1.0 +void +cairo_get_matrix (cairo_t *cr, + cairo_matrix_t *matrix); +Stores the current transformation matrix (CTM) into matrix +. + +Parameters + + + + + + +cr +a cairo context + +matrix +return value for the matrix + + +Since 1.0 -cairo_identity_matrix () +cairo_identity_matrix () cairo_identity_matrix -void cairo_identity_matrix (cairo_t *cr); - -Resets the current transformation matrix (CTM) by setting it equal +void +cairo_identity_matrix (cairo_t *cr); +Resets the current transformation matrix (CTM) by setting it equal to the identity matrix. That is, the user-space and device-space axes will be aligned and one user-space unit will transform to one -device-space unit. - -cr : -a cairo context -Since 1.0 +device-space unit. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_user_to_device () +cairo_user_to_device () cairo_user_to_device -void cairo_user_to_device (cairo_t *cr, - double *x, - double *y); - -Transform a coordinate from user space to device space by +void +cairo_user_to_device (cairo_t *cr, + double *x, + double *y); +Transform a coordinate from user space to device space by multiplying the given point by the current transformation matrix -(CTM). - -cr : -a cairo context -x : -X value of coordinate (in/out parameter) -y : -Y value of coordinate (in/out parameter) -Since 1.0 +(CTM). + +Parameters + + + + + + +cr +a cairo context + +x +X value of coordinate (in/out parameter) + +y +Y value of coordinate (in/out parameter) + + +Since 1.0 -cairo_user_to_device_distance () +cairo_user_to_device_distance () cairo_user_to_device_distance -void cairo_user_to_device_distance (cairo_t *cr, - double *dx, - double *dy); - -Transform a distance vector from user space to device space. This +void +cairo_user_to_device_distance (cairo_t *cr, + double *dx, + double *dy); +Transform a distance vector from user space to device space. This function is similar to cairo_user_to_device() except that the translation components of the CTM will be ignored when transforming -(dx,dy). - -cr : -a cairo context -dx : -X component of a distance vector (in/out parameter) -dy : -Y component of a distance vector (in/out parameter) -Since 1.0 +(dx +,dy +). + +Parameters + + + + + + +cr +a cairo context + +dx +X component of a distance vector (in/out parameter) + +dy +Y component of a distance vector (in/out parameter) + + +Since 1.0 -cairo_device_to_user () +cairo_device_to_user () cairo_device_to_user -void cairo_device_to_user (cairo_t *cr, - double *x, - double *y); - -Transform a coordinate from device space to user space by +void +cairo_device_to_user (cairo_t *cr, + double *x, + double *y); +Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current -transformation matrix (CTM). - -cr : -a cairo -x : -X value of coordinate (in/out parameter) -y : -Y value of coordinate (in/out parameter) -Since 1.0 +transformation matrix (CTM). + +Parameters + + + + + + +cr +a cairo + +x +X value of coordinate (in/out parameter) + +y +Y value of coordinate (in/out parameter) + + +Since 1.0 -cairo_device_to_user_distance () +cairo_device_to_user_distance () cairo_device_to_user_distance -void cairo_device_to_user_distance (cairo_t *cr, - double *dx, - double *dy); - -Transform a distance vector from device space to user space. This +void +cairo_device_to_user_distance (cairo_t *cr, + double *dx, + double *dy); +Transform a distance vector from device space to user space. This function is similar to cairo_device_to_user() except that the translation components of the inverse CTM will be ignored when -transforming (dx,dy). - -cr : -a cairo context -dx : -X component of a distance vector (in/out parameter) -dy : -Y component of a distance vector (in/out parameter) -Since 1.0 +transforming (dx +,dy +). + +Parameters + + + + + + +cr +a cairo context + +dx +X component of a distance vector (in/out parameter) + +dy +Y component of a distance vector (in/out parameter) + + +Since 1.0 + + + +Types and Values See Also -cairo_matrix_t +cairo_matrix_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-types.xml cairo-1.14.2/doc/public/xml/cairo-types.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-types.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-types.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,96 +16,157 @@ Generic data types - -Synopsis + +Functions + + + + + +void +(*cairo_destroy_func_t) () + + + + + + +Types and Values + + + + + +typedefcairo_bool_t +cairo_user_data_key_t +cairo_rectangle_int_t + + + + + + +Object Hierarchy + + + -typedef cairo_bool_t; - cairo_user_data_key_t; -void (*cairo_destroy_func_t) (void *data); - cairo_rectangle_int_t; - - Description - -This section lists generic data types used in the cairo API. - +This section lists generic data types used in the cairo API. + + + +Functions + +cairo_destroy_func_t () +cairo_destroy_func_t +void +(*cairo_destroy_func_t) (void *data); +cairo_destroy_func_t the type of function which is called when a +data element is destroyed. It is passed the pointer to the data +element and should free any memory and resources allocated for it. + +Parameters + + + + + + +data +The data element being destroyed. + + +Since 1.0 + - -Details + +Types and Values cairo_bool_t cairo_bool_t -typedef int cairo_bool_t; +typedef int cairo_bool_t; - -cairo_bool_t is used for boolean values. Returns of type +cairo_bool_t is used for boolean values. Returns of type cairo_bool_t will always be either 0 or 1, but testing against these values explicitly is not encouraged; just use the -value as a boolean condition. - - +value as a boolean condition. if (cairo_in_stroke (cr, x, y)) { /* do something */ } -Since 1.0 +Since 1.0 cairo_user_data_key_t cairo_user_data_key_t -typedef struct { +typedef struct { int unused; } cairo_user_data_key_t; - -cairo_user_data_key_t is used for attaching user data to cairo +cairo_user_data_key_t is used for attaching user data to cairo data structures. The actual contents of the struct is never used, and there is no need to initialize the object; only the unique address of a cairo_data_key_t object is used. Typically, you -would just use the address of a static cairo_data_key_t object. - -int unused; -not used; ignore. - -Since 1.0 - -cairo_destroy_func_t () -cairo_destroy_func_t -void (*cairo_destroy_func_t) (void *data); - -cairo_destroy_func_t the type of function which is called when a -data element is destroyed. It is passed the pointer to the data -element and should free any memory and resources allocated for it. - -data : -The data element being destroyed. -Since 1.0 +would just use the address of a static cairo_data_key_t object. + +Members + + + + + + +int unused; +not used; ignore. +not used; ignore. + + + + +Since 1.0 cairo_rectangle_int_t cairo_rectangle_int_t -typedef struct { +typedef struct { int x, y; int width, height; } cairo_rectangle_int_t; - -A data structure for holding a rectangle with integer coordinates. - -int x; -X coordinate of the left side of the rectangle - -int y; -Y coordinate of the the top side of the rectangle - -int width; -width of the rectangle - -int height; -height of the rectangle - -Since 1.10 +A data structure for holding a rectangle with integer coordinates. + +Members + + + + + + +int x; +X coordinate of the left side of the rectangle +X coordinate of the left side of the rectangle + + +int y; +Y coordinate of the the top side of the rectangle +Y coordinate of the the top side of the rectangle + + +int width; +width of the rectangle +width of the rectangle + + +int height; +height of the rectangle +height of the rectangle + + + + +Since 1.10 diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-user-fonts.xml cairo-1.14.2/doc/public/xml/cairo-user-fonts.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-user-fonts.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-user-fonts.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,149 +16,164 @@ Font support with font data provided by the user - -Synopsis + +Functions + + + + + +cairo_status_t +(*cairo_user_scaled_font_init_func_t) () +cairo_status_t +(*cairo_user_scaled_font_render_glyph_func_t) () +cairo_status_t +(*cairo_user_scaled_font_text_to_glyphs_func_t) () +cairo_status_t +(*cairo_user_scaled_font_unicode_to_glyph_func_t) () +cairo_font_face_t * +cairo_user_font_face_create () +void +cairo_user_font_face_set_init_func () +cairo_user_scaled_font_init_func_t +cairo_user_font_face_get_init_func () +void +cairo_user_font_face_set_render_glyph_func () +cairo_user_scaled_font_render_glyph_func_t +cairo_user_font_face_get_render_glyph_func () +void +cairo_user_font_face_set_unicode_to_glyph_func () +cairo_user_scaled_font_unicode_to_glyph_func_t +cairo_user_font_face_get_unicode_to_glyph_func () +void +cairo_user_font_face_set_text_to_glyphs_func () +cairo_user_scaled_font_text_to_glyphs_func_t +cairo_user_font_face_get_text_to_glyphs_func () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_USER_FONT + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_USER_FONT -cairo_status_t (*cairo_user_scaled_font_init_func_t) - (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *extents); -cairo_status_t (*cairo_user_scaled_font_render_glyph_func_t) - (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *extents); -cairo_status_t (*cairo_user_scaled_font_text_to_glyphs_func_t) - (cairo_scaled_font_t *scaled_font, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); -cairo_status_t (*cairo_user_scaled_font_unicode_to_glyph_func_t) - (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph_index); -cairo_font_face_t * cairo_user_font_face_create (void); -void cairo_user_font_face_set_init_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_init_func_t init_func); -cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func - (cairo_font_face_t *font_face); -void cairo_user_font_face_set_render_glyph_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_render_glyph_func_t render_glyph_func); -cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func - (cairo_font_face_t *font_face); -void cairo_user_font_face_set_unicode_to_glyph_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func); -cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func - (cairo_font_face_t *font_face); -void cairo_user_font_face_set_text_to_glyphs_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func); -cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func - (cairo_font_face_t *font_face); - - Description - -The user-font feature allows the cairo user to provide drawings for glyphs +The user-font feature allows the cairo user to provide drawings for glyphs in a font. This is most useful in implementing fonts in non-standard formats, like SVG fonts and Flash fonts, but can also be used by games and -other application to draw "funky" fonts. - +other application to draw "funky" fonts. + - -Details - -CAIRO_HAS_USER_FONT -CAIRO_HAS_USER_FONT -#define CAIRO_HAS_USER_FONT 1 - - -Defined if the user font backend is available. -This macro can be used to conditionally compile backend-specific code. -The user font backend is always built in versions of cairo that support -this feature (1.8 and later). -Since 1.8 + +Functions -cairo_user_scaled_font_init_func_t () +cairo_user_scaled_font_init_func_t () cairo_user_scaled_font_init_func_t -cairo_status_t (*cairo_user_scaled_font_init_func_t) - (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *extents); - -cairo_user_scaled_font_init_func_t is the type of function which is -called when a scaled-font needs to be created for a user font-face. - - -The cairo context cr is not used by the caller, but is prepared in font +cairo_status_t +(*cairo_user_scaled_font_init_func_t) (cairo_scaled_font_t *scaled_font, + cairo_t *cr, + cairo_font_extents_t *extents); +cairo_user_scaled_font_init_func_t is the type of function which is +called when a scaled-font needs to be created for a user font-face. +The cairo context cr + is not used by the caller, but is prepared in font space, similar to what the cairo contexts passed to the render_glyph method will look like. The callback can use this context for extents -computation for example. After the callback is called, cr is checked -for any error status. - - -The extents argument is where the user font sets the font extents for -scaled_font. It is in font space, which means that for most cases its -ascent and descent members should add to 1.0. extents is preset to +computation for example. After the callback is called, cr + is checked +for any error status. +The extents + argument is where the user font sets the font extents for +scaled_font +. It is in font space, which means that for most cases its +ascent and descent members should add to 1.0. extents + is preset to hold a value of 1.0 for ascent, height, and max_x_advance, and 0.0 for -descent and max_y_advance members. - - -The callback is optional. If not set, default font extents as described -in the previous paragraph will be used. - - -Note that scaled_font is not fully initialized at this +descent and max_y_advance members. +The callback is optional. If not set, default font extents as described +in the previous paragraph will be used. +Note that scaled_font + is not fully initialized at this point and trying to use it for text operations in the callback will result -in deadlock. - -scaled_font : -the scaled-font being created -cr : -a cairo context, in font space -extents : -font extents to fill in, in font space -Returns :CAIRO_STATUS_SUCCESS upon success, or an error status on error. -Since 1.8 +in deadlock. + +Parameters + + + + + + +scaled_font +the scaled-font being created + +cr +a cairo context, in font space + +extents +font extents to fill in, in font space + + + +Returns + CAIRO_STATUS_SUCCESS upon success, or an error status on error. + +Since 1.8 -cairo_user_scaled_font_render_glyph_func_t () +cairo_user_scaled_font_render_glyph_func_t () cairo_user_scaled_font_render_glyph_func_t -cairo_status_t (*cairo_user_scaled_font_render_glyph_func_t) - (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *extents); - -cairo_user_scaled_font_render_glyph_func_t is the type of function which -is called when a user scaled-font needs to render a glyph. - - -The callback is mandatory, and expected to draw the glyph with code glyph to -the cairo context cr. cr is prepared such that the glyph drawing is done in -font space. That is, the matrix set on cr is the scale matrix of scaled_font, -The extents argument is where the user font sets the font extents for -scaled_font. However, if user prefers to draw in user space, they can -achieve that by changing the matrix on cr. All cairo rendering operations -to cr are permitted, however, the result is undefined if any source other -than the default source on cr is used. That means, glyph bitmaps should -be rendered using cairo_mask() instead of cairo_paint(). - - -Other non-default settings on cr include a font size of 1.0 (given that +cairo_status_t +(*cairo_user_scaled_font_render_glyph_func_t) + (cairo_scaled_font_t *scaled_font, + unsigned long glyph, + cairo_t *cr, + cairo_text_extents_t *extents); +cairo_user_scaled_font_render_glyph_func_t is the type of function which +is called when a user scaled-font needs to render a glyph. +The callback is mandatory, and expected to draw the glyph with code glyph + to +the cairo context cr +. cr + is prepared such that the glyph drawing is done in +font space. That is, the matrix set on cr + is the scale matrix of scaled_font +, +The extents + argument is where the user font sets the font extents for +scaled_font +. However, if user prefers to draw in user space, they can +achieve that by changing the matrix on cr +. All cairo rendering operations +to cr + are permitted, however, the result is undefined if any source other +than the default source on cr + is used. That means, glyph bitmaps should +be rendered using cairo_mask() instead of cairo_paint(). +Other non-default settings on cr + include a font size of 1.0 (given that it is set up to be in font space), and font options corresponding to -scaled_font. - - -The extents argument is preset to have x_bearing, +scaled_font +. +The extents + argument is preset to have x_bearing, width, and y_advance of zero, y_bearing set to -font_extents.ascent, height to font_extents.ascent+font_extents.descent, @@ -167,316 +182,460 @@ x_advance. If the width field is zero upon the callback returning (which is its preset value), the glyph extents are automatically computed -based on the drawings done to cr. This is in most cases exactly what the +based on the drawings done to cr +. This is in most cases exactly what the desired behavior is. However, if for any reason the callback sets the extents, it must be ink extents, and include the extents of all drawing -done to cr in the callback. - -scaled_font : -user scaled-font -glyph : -glyph code to render -cr : -cairo context to draw to, in font space -extents : -glyph extents to fill in, in font space -Returns :CAIRO_STATUS_SUCCESS upon success, or -CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. -Since 1.8 +done to cr + in the callback. + +Parameters + + + + + + +scaled_font +user scaled-font + +glyph +glyph code to render + +cr +cairo context to draw to, in font space + +extents +glyph extents to fill in, in font space + + + +Returns + CAIRO_STATUS_SUCCESS upon success, or +CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. + +Since 1.8 -cairo_user_scaled_font_text_to_glyphs_func_t () +cairo_user_scaled_font_text_to_glyphs_func_t () cairo_user_scaled_font_text_to_glyphs_func_t -cairo_status_t (*cairo_user_scaled_font_text_to_glyphs_func_t) - (cairo_scaled_font_t *scaled_font, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which +cairo_status_t +(*cairo_user_scaled_font_text_to_glyphs_func_t) + (cairo_scaled_font_t *scaled_font, + const char *utf8, + int utf8_len, + cairo_glyph_t **glyphs, + int *num_glyphs, + cairo_text_cluster_t **clusters, + int *num_clusters, + cairo_text_cluster_flags_t *cluster_flags); +cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which is called to convert input text to an array of glyphs. This is used by the -cairo_show_text() operation. - - -Using this callback the user-font has full control on glyphs and their +cairo_show_text() operation. +Using this callback the user-font has full control on glyphs and their positions. That means, it allows for features like ligatures and kerning, as well as complex shaping required for scripts like -Arabic and Indic. - - -The num_glyphs argument is preset to the number of glyph entries available -in the glyphs buffer. If the glyphs buffer is NULL, the value of -num_glyphs will be zero. If the provided glyph array is too short for +Arabic and Indic. +The num_glyphs + argument is preset to the number of glyph entries available +in the glyphs + buffer. If the glyphs + buffer is NULL, the value of +num_glyphs + will be zero. If the provided glyph array is too short for the conversion (or for convenience), a new glyph array may be allocated -using cairo_glyph_allocate() and placed in glyphs. Upon return, -num_glyphs should contain the number of generated glyphs. If the value -glyphs points at has changed after the call, the caller will free the +using cairo_glyph_allocate() and placed in glyphs +. Upon return, +num_glyphs + should contain the number of generated glyphs. If the value +glyphs + points at has changed after the call, the caller will free the allocated glyph array using cairo_glyph_free(). The caller will also free -the original value of glyphs, so the callback shouldn't do so. +the original value of glyphs +, so the callback shouldn't do so. The callback should populate the glyph indices and positions (in font space) -assuming that the text is to be shown at the origin. - - -If clusters is not NULL, num_clusters and cluster_flags are also +assuming that the text is to be shown at the origin. +If clusters + is not NULL, num_clusters + and cluster_flags + are also non-NULL, and cluster mapping should be computed. The semantics of how cluster array allocation works is similar to the glyph array. That is, -if clusters initially points to a non-NULL value, that array may be used -as a cluster buffer, and num_clusters points to the number of cluster +if clusters + initially points to a non-NULL value, that array may be used +as a cluster buffer, and num_clusters + points to the number of cluster entries available there. If the provided cluster array is too short for the conversion (or for convenience), a new cluster array may be allocated -using cairo_text_cluster_allocate() and placed in clusters. In this case, -the original value of clusters will still be freed by the caller. Upon -return, num_clusters should contain the number of generated clusters. -If the value clusters points at has changed after the call, the caller -will free the allocated cluster array using cairo_text_cluster_free(). - - -The callback is optional. If num_glyphs is negative upon +using cairo_text_cluster_allocate() and placed in clusters +. In this case, +the original value of clusters + will still be freed by the caller. Upon +return, num_clusters + should contain the number of generated clusters. +If the value clusters + points at has changed after the call, the caller +will free the allocated cluster array using cairo_text_cluster_free(). +The callback is optional. If num_glyphs + is negative upon the callback returning or if the return value is CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callback -is tried. See cairo_user_scaled_font_unicode_to_glyph_func_t. - - -Note: While cairo does not impose any limitation on glyph indices, +is tried. See cairo_user_scaled_font_unicode_to_glyph_func_t. +Note: While cairo does not impose any limitation on glyph indices, some applications may assume that a glyph index fits in a 16-bit unsigned integer. As such, it is advised that user-fonts keep their glyphs in the 0 to 65535 range. Furthermore, some applications may assume that glyph 0 is a special glyph-not-found glyph. User-fonts are advised to use glyph 0 for such purposes and do not use that -glyph value for other purposes. - -scaled_font : -the scaled-font being created -utf8 : -a string of text encoded in UTF-8 -utf8_len : -length of utf8 in bytes -glyphs : -pointer to array of glyphs to fill, in font space -num_glyphs : -pointer to number of glyphs -clusters : -pointer to array of cluster mapping information to fill, or NULL -num_clusters : -pointer to number of clusters -cluster_flags : -pointer to location to store cluster flags corresponding to the -output clusters -Returns :CAIRO_STATUS_SUCCESS upon success, +glyph value for other purposes. + +Parameters + + + + + + +scaled_font +the scaled-font being created + +utf8 +a string of text encoded in UTF-8 + +utf8_len +length of utf8 +in bytes + +glyphs +pointer to array of glyphs to fill, in font space + +num_glyphs +pointer to number of glyphs + +clusters +pointer to array of cluster mapping information to fill, or NULL + +num_clusters +pointer to number of clusters + +cluster_flags +pointer to location to store cluster flags corresponding to the +output clusters + + + + +Returns + CAIRO_STATUS_SUCCESS upon success, CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, -or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. -Since 1.8 +or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. + +Since 1.8 -cairo_user_scaled_font_unicode_to_glyph_func_t () +cairo_user_scaled_font_unicode_to_glyph_func_t () cairo_user_scaled_font_unicode_to_glyph_func_t -cairo_status_t (*cairo_user_scaled_font_unicode_to_glyph_func_t) - (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph_index); - -cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which +cairo_status_t +(*cairo_user_scaled_font_unicode_to_glyph_func_t) + (cairo_scaled_font_t *scaled_font, + unsigned long unicode, + unsigned long *glyph_index); +cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which is called to convert an input Unicode character to a single glyph. -This is used by the cairo_show_text() operation. - - -This callback is used to provide the same functionality as the +This is used by the cairo_show_text() operation. +This callback is used to provide the same functionality as the text_to_glyphs callback does (see cairo_user_scaled_font_text_to_glyphs_func_t) but has much less control on the output, in exchange for increased ease of use. The inherent assumption to using this callback is that each character maps to one glyph, and that the mapping is context independent. It also assumes that glyphs are positioned according to their advance width. These mean no ligatures, kerning, or -complex scripts can be implemented using this callback. - - -The callback is optional, and only used if text_to_glyphs callback is not +complex scripts can be implemented using this callback. +The callback is optional, and only used if text_to_glyphs callback is not set or fails to return glyphs. If this callback is not set or if it returns CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, an identity mapping from Unicode -code-points to glyph indices is assumed. - - -Note: While cairo does not impose any limitation on glyph indices, +code-points to glyph indices is assumed. +Note: While cairo does not impose any limitation on glyph indices, some applications may assume that a glyph index fits in a 16-bit unsigned integer. As such, it is advised that user-fonts keep their glyphs in the 0 to 65535 range. Furthermore, some applications may assume that glyph 0 is a special glyph-not-found glyph. User-fonts are advised to use glyph 0 for such purposes and do not use that -glyph value for other purposes. - -scaled_font : -the scaled-font being created -unicode : -input unicode character code-point -glyph_index : -output glyph index -Returns :CAIRO_STATUS_SUCCESS upon success, +glyph value for other purposes. + +Parameters + + + + + + +scaled_font +the scaled-font being created + +unicode +input unicode character code-point + +glyph_index +output glyph index + + + +Returns + CAIRO_STATUS_SUCCESS upon success, CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, -or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. -Since 1.8 +or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. + +Since 1.8 -cairo_user_font_face_create () +cairo_user_font_face_create () cairo_user_font_face_create -cairo_font_face_t * cairo_user_font_face_create (void); - -Creates a new user font-face. - - -Use the setter functions to associate callbacks with the returned -user font. The only mandatory callback is render_glyph. - - -After the font-face is created, the user can attach arbitrary data +cairo_font_face_t * +cairo_user_font_face_create (void); +Creates a new user font-face. +Use the setter functions to associate callbacks with the returned +user font. The only mandatory callback is render_glyph. +After the font-face is created, the user can attach arbitrary data (the actual font data) to it using cairo_font_face_set_user_data() and access it from the user-font callbacks by using cairo_scaled_font_get_font_face() followed by -cairo_font_face_get_user_data(). - -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.8 +cairo_font_face_get_user_data(). + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.8 -cairo_user_font_face_set_init_func () +cairo_user_font_face_set_init_func () cairo_user_font_face_set_init_func -void cairo_user_font_face_set_init_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_init_func_t init_func); - -Sets the scaled-font initialization function of a user-font. +void +cairo_user_font_face_set_init_func (cairo_font_face_t *font_face, + cairo_user_scaled_font_init_func_t init_func); +Sets the scaled-font initialization function of a user-font. See cairo_user_scaled_font_init_func_t for details of how the callback -works. - - -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +works. +The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. - -font_face : -A user font face -init_func : -The init callback, or NULL -Since 1.8 +is created from it. + +Parameters + + + + + + +font_face +A user font face + +init_func +The init callback, or NULL + + +Since 1.8 -cairo_user_font_face_get_init_func () +cairo_user_font_face_get_init_func () cairo_user_font_face_get_init_func -cairo_user_scaled_font_init_func_t cairo_user_font_face_get_init_func - (cairo_font_face_t *font_face); - -Gets the scaled-font initialization function of a user-font. - -font_face : -A user font face -Returns :The init callback of font_face -or NULL if none set or an error has occurred. -Since 1.8 +cairo_user_scaled_font_init_func_t +cairo_user_font_face_get_init_func (cairo_font_face_t *font_face); +Gets the scaled-font initialization function of a user-font. + +Parameters + + + + + + +font_face +A user font face + + + +Returns + The init callback of font_face +or NULL if none set or an error has occurred. + +Since 1.8 -cairo_user_font_face_set_render_glyph_func () +cairo_user_font_face_set_render_glyph_func () cairo_user_font_face_set_render_glyph_func -void cairo_user_font_face_set_render_glyph_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_render_glyph_func_t render_glyph_func); - -Sets the glyph rendering function of a user-font. +void +cairo_user_font_face_set_render_glyph_func + (cairo_font_face_t *font_face, + cairo_user_scaled_font_render_glyph_func_t render_glyph_func); +Sets the glyph rendering function of a user-font. See cairo_user_scaled_font_render_glyph_func_t for details of how the callback -works. - - -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +works. +The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. - - -The render_glyph callback is the only mandatory callback of a user-font. +is created from it. +The render_glyph callback is the only mandatory callback of a user-font. If the callback is NULL and a glyph is tried to be rendered using -font_face, a CAIRO_STATUS_USER_FONT_ERROR will occur. - -font_face : -A user font face -render_glyph_func : -The render_glyph callback, or NULL -Since 1.8 +font_face +, a CAIRO_STATUS_USER_FONT_ERROR will occur. + +Parameters + + + + + + +font_face +A user font face + +render_glyph_func +The render_glyph callback, or NULL + + +Since 1.8 -cairo_user_font_face_get_render_glyph_func () +cairo_user_font_face_get_render_glyph_func () cairo_user_font_face_get_render_glyph_func -cairo_user_scaled_font_render_glyph_func_t cairo_user_font_face_get_render_glyph_func - (cairo_font_face_t *font_face); - -Gets the glyph rendering function of a user-font. - -font_face : -A user font face -Returns :The render_glyph callback of font_face -or NULL if none set or an error has occurred. -Since 1.8 +cairo_user_scaled_font_render_glyph_func_t +cairo_user_font_face_get_render_glyph_func + (cairo_font_face_t *font_face); +Gets the glyph rendering function of a user-font. + +Parameters + + + + + + +font_face +A user font face + + + +Returns + The render_glyph callback of font_face +or NULL if none set or an error has occurred. + +Since 1.8 -cairo_user_font_face_set_unicode_to_glyph_func () +cairo_user_font_face_set_unicode_to_glyph_func () cairo_user_font_face_set_unicode_to_glyph_func -void cairo_user_font_face_set_unicode_to_glyph_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func); - -Sets the unicode-to-glyph conversion function of a user-font. +void +cairo_user_font_face_set_unicode_to_glyph_func + (cairo_font_face_t *font_face, + cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func); +Sets the unicode-to-glyph conversion function of a user-font. See cairo_user_scaled_font_unicode_to_glyph_func_t for details of how the callback -works. - - -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +works. +The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. - -font_face : -A user font face -unicode_to_glyph_func : -The unicode_to_glyph callback, or NULL -Since 1.8 +is created from it. + +Parameters + + + + + + +font_face +A user font face + +unicode_to_glyph_func +The unicode_to_glyph callback, or NULL + + +Since 1.8 -cairo_user_font_face_get_unicode_to_glyph_func () +cairo_user_font_face_get_unicode_to_glyph_func () cairo_user_font_face_get_unicode_to_glyph_func -cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_get_unicode_to_glyph_func - (cairo_font_face_t *font_face); - -Gets the unicode-to-glyph conversion function of a user-font. - -font_face : -A user font face -Returns :The unicode_to_glyph callback of font_face -or NULL if none set or an error occurred. -Since 1.8 +cairo_user_scaled_font_unicode_to_glyph_func_t +cairo_user_font_face_get_unicode_to_glyph_func + (cairo_font_face_t *font_face); +Gets the unicode-to-glyph conversion function of a user-font. + +Parameters + + + + + + +font_face +A user font face + + + +Returns + The unicode_to_glyph callback of font_face +or NULL if none set or an error occurred. + +Since 1.8 -cairo_user_font_face_set_text_to_glyphs_func () +cairo_user_font_face_set_text_to_glyphs_func () cairo_user_font_face_set_text_to_glyphs_func -void cairo_user_font_face_set_text_to_glyphs_func - (cairo_font_face_t *font_face, - cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func); - -Sets th text-to-glyphs conversion function of a user-font. +void +cairo_user_font_face_set_text_to_glyphs_func + (cairo_font_face_t *font_face, + cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func); +Sets th text-to-glyphs conversion function of a user-font. See cairo_user_scaled_font_text_to_glyphs_func_t for details of how the callback -works. - - -The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE +works. +The font-face should not be immutable or a CAIRO_STATUS_USER_FONT_IMMUTABLE error will occur. A user font-face is immutable as soon as a scaled-font -is created from it. - -font_face : -A user font face -text_to_glyphs_func : -The text_to_glyphs callback, or NULL -Since 1.8 +is created from it. + +Parameters + + + + + + +font_face +A user font face + +text_to_glyphs_func +The text_to_glyphs callback, or NULL + + +Since 1.8 -cairo_user_font_face_get_text_to_glyphs_func () +cairo_user_font_face_get_text_to_glyphs_func () cairo_user_font_face_get_text_to_glyphs_func -cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_font_face_get_text_to_glyphs_func - (cairo_font_face_t *font_face); - -Gets the text-to-glyphs conversion function of a user-font. - -font_face : -A user font face -Returns :The text_to_glyphs callback of font_face -or NULL if none set or an error occurred. -Since 1.8 +cairo_user_scaled_font_text_to_glyphs_func_t +cairo_user_font_face_get_text_to_glyphs_func + (cairo_font_face_t *font_face); +Gets the text-to-glyphs conversion function of a user-font. + +Parameters + + + + + + +font_face +A user font face + + + +Returns + The text_to_glyphs callback of font_face +or NULL if none set or an error occurred. + +Since 1.8 + + + +Types and Values + +CAIRO_HAS_USER_FONT +CAIRO_HAS_USER_FONT +#define CAIRO_HAS_USER_FONT 1 + +Defined if the user font backend is available. +This macro can be used to conditionally compile backend-specific code. +The user font backend is always built in versions of cairo that support +this feature (1.8 and later). +Since 1.8 diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-version.xml cairo-1.14.2/doc/public/xml/cairo-version.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-version.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-version.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,34 +16,54 @@ Compile-time and run-time version checks. - -Synopsis + +Functions + + + + + +#defineCAIRO_VERSION_ENCODE() +#defineCAIRO_VERSION_STRINGIZE() +int +cairo_version () +const char * +cairo_version_string () + + + + + + +Types and Values + + + + + +#defineCAIRO_VERSION +#defineCAIRO_VERSION_MAJOR +#defineCAIRO_VERSION_MINOR +#defineCAIRO_VERSION_MICRO +#defineCAIRO_VERSION_STRING + + + + + + +Object Hierarchy + + + -#define CAIRO_VERSION -#define CAIRO_VERSION_MAJOR -#define CAIRO_VERSION_MINOR -#define CAIRO_VERSION_MICRO -#define CAIRO_VERSION_STRING -#define CAIRO_VERSION_ENCODE (major, - minor, - micro) -#define CAIRO_VERSION_STRINGIZE (major, - minor, - micro) -int cairo_version (void); -const char * cairo_version_string (void); - - Description - -Cairo has a three-part version number scheme. In this scheme, we use +Cairo has a three-part version number scheme. In this scheme, we use even vs. odd numbers to distinguish fixed points in the software vs. in-progress development, (such as from git instead of a tar file, -or as a "snapshot" tar file as opposed to a "release" tar file). - - +or as a "snapshot" tar file as opposed to a "release" tar file). _____ Major. Always 1, until we invent a new scheme. / ___ Minor. Even/Odd = Release/Snapshot (tar files) or Branch/Head (git) @@ -51,9 +71,7 @@ | | / 1.0.0 - - -Here are a few examples of versions that one might see. +Here are a few examples of versions that one might see. Releases -------- @@ -70,43 +88,38 @@ 1.0.1 - Development on a maintenance branch (toward 1.0.2 release) 1.1.1 - Development on head (toward 1.1.2 snapshot and 1.2.0 release) - Compatibility - + The API/ABI compatibility guarantees for various versions are as follows. First, let's assume some cairo-using application code that is successfully using the API/ABI "from" one version of cairo. Then let's ask the question whether this same code can be moved "to" the API/ABI of another version of cairo. - - + Moving from a release to any later version (release, snapshot, development) is always guaranteed to provide compatibility. - - + Moving from a snapshot to any later version is not guaranteed to provide compatibility, since snapshots may introduce new API that ends up being removed before the next release. - - + Moving from an in-development version (odd micro component) to any later version is not guaranteed to provide compatibility. In fact, there's not even a guarantee that the code will even continue to work with the same in-development version number. This is because these numbers don't correspond to any fixed state of the software, but rather the many states between snapshots and releases. - + Examining the version - + 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 an encoded form suitable for direct comparison. Cairo also provides the macro CAIRO_VERSION_ENCODE() to perform the encoding. - - + Compile-time ------------ @@ -118,12 +131,10 @@ cairo_version_string() Human-readable cairo_version() Encoded, suitable for comparison - - + For example, checking that the cairo version is greater than or equal to 1.0.0 could be achieved at compile-time or run-time as follows: - - + ##if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 0, 0) printf ("Compiling with suitable cairo version: %s\n", %CAIRO_VERSION_STRING); @@ -132,126 +143,146 @@ if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 0, 0)) printf ("Running with suitable cairo version: %s\n", cairo_version_string ()); - + - - + + + +Functions + +CAIRO_VERSION_ENCODE() +CAIRO_VERSION_ENCODE +#define CAIRO_VERSION_ENCODE(major, minor, micro) +This macro encodes the given cairo version into an integer. The numbers +returned by CAIRO_VERSION and cairo_version() are encoded using this macro. +Two encoded version numbers can be compared as integers. The encoding ensures +that later versions compare greater than earlier versions. + +Parameters + + + + + + +major +the major component of the version number + +minor +the minor component of the version number + +micro +the micro component of the version number + + + +Returns + the encoded version. + +Since 1.0 + +CAIRO_VERSION_STRINGIZE() +CAIRO_VERSION_STRINGIZE +#define CAIRO_VERSION_STRINGIZE(major, minor, micro) +This macro encodes the given cairo version into an string. The numbers +returned by CAIRO_VERSION_STRING and cairo_version_string() are encoded using this macro. +The parameters to this macro must expand to numerical literals. + +Parameters + + + + + + +major +the major component of the version number + +minor +the minor component of the version number + +micro +the micro component of the version number + + + +Returns + a string literal containing the version. + +Since 1.8 + +cairo_version () +cairo_version +int +cairo_version (void); +Returns the version of the cairo library encoded in a single +integer as per CAIRO_VERSION_ENCODE. The encoding ensures that +later versions compare greater than earlier versions. +A run-time comparison to check that cairo's version is greater than +or equal to version X.Y.Z could be performed as follows: + +if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...} + +See also cairo_version_string() as well as the compile-time +equivalents CAIRO_VERSION and CAIRO_VERSION_STRING. + +Returns + the encoded version. + +Since 1.0 + +cairo_version_string () +cairo_version_string +const char * +cairo_version_string (void); +Returns the version of the cairo library as a human-readable string +of the form "X.Y.Z". +See also cairo_version() as well as the compile-time equivalents +CAIRO_VERSION_STRING and CAIRO_VERSION. + +Returns + a string containing the version. + +Since 1.0 + - -Details + +Types and Values CAIRO_VERSION CAIRO_VERSION -#define CAIRO_VERSION - -The version of cairo available at compile-time, encoded using -CAIRO_VERSION_ENCODE(). -Since 1.0 +#define CAIRO_VERSION +The version of cairo available at compile-time, encoded using +CAIRO_VERSION_ENCODE(). +Since 1.0 CAIRO_VERSION_MAJOR CAIRO_VERSION_MAJOR -#define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD +#define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD - -The major component of the version of cairo available at compile-time. -Since 1.0 +The major component of the version of cairo available at compile-time. +Since 1.0 CAIRO_VERSION_MINOR CAIRO_VERSION_MINOR -#define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD +#define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD - -The minor component of the version of cairo available at compile-time. -Since 1.0 +The minor component of the version of cairo available at compile-time. +Since 1.0 CAIRO_VERSION_MICRO CAIRO_VERSION_MICRO -#define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD +#define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD - -The micro component of the version of cairo available at compile-time. -Since 1.0 +The micro component of the version of cairo available at compile-time. +Since 1.0 CAIRO_VERSION_STRING CAIRO_VERSION_STRING -#define CAIRO_VERSION_STRING - -A human-readable string literal containing the version of cairo available -at compile-time, in the form of "X.Y.Z". -Since 1.8 - -CAIRO_VERSION_ENCODE() -CAIRO_VERSION_ENCODE -#define CAIRO_VERSION_ENCODE(major, minor, micro) - -This macro encodes the given cairo version into an integer. The numbers -returned by CAIRO_VERSION and cairo_version() are encoded using this macro. -Two encoded version numbers can be compared as integers. The encoding ensures -that later versions compare greater than earlier versions. - -major : -the major component of the version number -minor : -the minor component of the version number -micro : -the micro component of the version number -Returns :the encoded version. -Since 1.0 - -CAIRO_VERSION_STRINGIZE() -CAIRO_VERSION_STRINGIZE -#define CAIRO_VERSION_STRINGIZE(major, minor, micro) - -This macro encodes the given cairo version into an string. The numbers -returned by CAIRO_VERSION_STRING and cairo_version_string() are encoded using this macro. -The parameters to this macro must expand to numerical literals. - -major : -the major component of the version number -minor : -the minor component of the version number -micro : -the micro component of the version number -Returns :a string literal containing the version. -Since 1.8 - -cairo_version () -cairo_version -int cairo_version (void); - -Returns the version of the cairo library encoded in a single -integer as per CAIRO_VERSION_ENCODE. The encoding ensures that -later versions compare greater than earlier versions. - - -A run-time comparison to check that cairo's version is greater than -or equal to version X.Y.Z could be performed as follows: - - - -if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...} - - - -See also cairo_version_string() as well as the compile-time -equivalents CAIRO_VERSION and CAIRO_VERSION_STRING. - -Returns :the encoded version. -Since 1.0 - -cairo_version_string () -cairo_version_string -const char * cairo_version_string (void); - -Returns the version of the cairo library as a human-readable string -of the form "X.Y.Z". - - -See also cairo_version() as well as the compile-time equivalents -CAIRO_VERSION_STRING and CAIRO_VERSION. - -Returns :a string containing the version. -Since 1.0 +#define CAIRO_VERSION_STRING +A human-readable string literal containing the version of cairo available +at compile-time, in the form of "X.Y.Z". +Since 1.8 diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-win32-fonts.xml cairo-1.14.2/doc/public/xml/cairo-win32-fonts.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-win32-fonts.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-win32-fonts.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,204 +16,320 @@ Font support for Microsoft Windows - -Synopsis + +Functions + + + + + +cairo_font_face_t * +cairo_win32_font_face_create_for_logfontw () +cairo_font_face_t * +cairo_win32_font_face_create_for_hfont () +cairo_font_face_t * +cairo_win32_font_face_create_for_logfontw_hfont () +cairo_status_t +cairo_win32_scaled_font_select_font () +void +cairo_win32_scaled_font_done_font () +double +cairo_win32_scaled_font_get_metrics_factor () +void +cairo_win32_scaled_font_get_logical_to_device () +void +cairo_win32_scaled_font_get_device_to_logical () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_WIN32_FONT + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_WIN32_FONT -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw - (LOGFONTW *logfont); -cairo_font_face_t * cairo_win32_font_face_create_for_hfont - (HFONT font); -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw_hfont - (LOGFONTW *logfont, - HFONT font); -cairo_status_t cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, - HDC hdc); -void cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font); -double cairo_win32_scaled_font_get_metrics_factor - (cairo_scaled_font_t *scaled_font); -void cairo_win32_scaled_font_get_logical_to_device - (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *logical_to_device); -void cairo_win32_scaled_font_get_device_to_logical - (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *device_to_logical); - - Description - -The Microsoft Windows font backend is primarily used to render text on -Microsoft Windows systems. - +The Microsoft Windows font backend is primarily used to render text on +Microsoft Windows systems. + - -Details - -CAIRO_HAS_WIN32_FONT -CAIRO_HAS_WIN32_FONT -#define CAIRO_HAS_WIN32_FONT 1 - - -Defined if the Microsoft Windows font backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.8 + +Functions -cairo_win32_font_face_create_for_logfontw () +cairo_win32_font_face_create_for_logfontw () cairo_win32_font_face_create_for_logfontw -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw - (LOGFONTW *logfont); - -Creates a new font for the Win32 font backend based on a +cairo_font_face_t * +cairo_win32_font_face_create_for_logfontw + (LOGFONTW *logfont); +Creates a new font for the Win32 font backend based on a LOGFONT. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). - -logfont : -A LOGFONTW structure specifying the font to use. +and can be used with functions such as cairo_win32_scaled_font_select_font(). + +Parameters + + + + + + +logfont +A LOGFONTW structure specifying the font to use. The lfHeight, lfWidth, lfOrientation and lfEscapement -fields of this structure are ignored. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.0 +fields of this structure are ignored. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.0 -cairo_win32_font_face_create_for_hfont () +cairo_win32_font_face_create_for_hfont () cairo_win32_font_face_create_for_hfont -cairo_font_face_t * cairo_win32_font_face_create_for_hfont - (HFONT font); - -Creates a new font for the Win32 font backend based on a +cairo_font_face_t * +cairo_win32_font_face_create_for_hfont + (HFONT font); +Creates a new font for the Win32 font backend based on a HFONT. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). - -font : -An HFONT structure specifying the font to use. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.2 +and can be used with functions such as cairo_win32_scaled_font_select_font(). + +Parameters + + + + + + +font +An HFONT structure specifying the font to use. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.2 -cairo_win32_font_face_create_for_logfontw_hfont () +cairo_win32_font_face_create_for_logfontw_hfont () cairo_win32_font_face_create_for_logfontw_hfont -cairo_font_face_t * cairo_win32_font_face_create_for_logfontw_hfont - (LOGFONTW *logfont, - HFONT font); - -Creates a new font for the Win32 font backend based on a +cairo_font_face_t * +cairo_win32_font_face_create_for_logfontw_hfont + (LOGFONTW *logfont, + HFONT font); +Creates a new font for the Win32 font backend based on a LOGFONT. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create(). The cairo_scaled_font_t returned from cairo_scaled_font_create() is also for the Win32 backend -and can be used with functions such as cairo_win32_scaled_font_select_font(). - -logfont : -A LOGFONTW structure specifying the font to use. -If font is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement +and can be used with functions such as cairo_win32_scaled_font_select_font(). + +Parameters + + + + + + +logfont +A LOGFONTW structure specifying the font to use. +If font +is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement fields of this structure are ignored. Otherwise lfWidth, lfOrientation and -lfEscapement must be zero. -font : -An HFONT that can be used when the font matrix is a scale by --lfHeight and the CTM is identity. -Returns :a newly created cairo_font_face_t. Free with -cairo_font_face_destroy() when you are done using it. -Since 1.6 +lfEscapement must be zero. + +font +An HFONT that can be used when the font matrix is a scale by +-lfHeight and the CTM is identity. + + + +Returns + a newly created cairo_font_face_t. Free with +cairo_font_face_destroy() when you are done using it. + +Since 1.6 -cairo_win32_scaled_font_select_font () +cairo_win32_scaled_font_select_font () cairo_win32_scaled_font_select_font -cairo_status_t cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, - HDC hdc); - -Selects the font into the given device context and changes the +cairo_status_t +cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, + HDC hdc); +Selects the font into the given device context and changes the map mode and world transformation of the device context to match that of the font. This function is intended for use when using layout APIs such as Uniscribe to do text layout with the cairo font. After finishing using the device context, you must call cairo_win32_scaled_font_done_font() to release any resources allocated -by this function. - - -See cairo_win32_scaled_font_get_metrics_factor() for converting logical -coordinates from the device context to font space. - - -Normally, calls to SaveDC() and RestoreDC() would be made around -the use of this function to preserve the original graphics state. - -scaled_font : -A cairo_scaled_font_t from the Win32 font backend. Such an -object can be created with cairo_win32_font_face_create_for_logfontw(). -hdc : -a device context -Returns :CAIRO_STATUS_SUCCESS if the operation succeeded. +by this function. +See cairo_win32_scaled_font_get_metrics_factor() for converting logical +coordinates from the device context to font space. +Normally, calls to SaveDC() and RestoreDC() would be made around +the use of this function to preserve the original graphics state. + +Parameters + + + + + + +scaled_font +A cairo_scaled_font_t from the Win32 font backend. Such an +object can be created with cairo_win32_font_face_create_for_logfontw(). + +hdc +a device context + + + +Returns + CAIRO_STATUS_SUCCESS if the operation succeeded. otherwise an error such as CAIRO_STATUS_NO_MEMORY and -the device context is unchanged. -Since 1.0 +the device context is unchanged. + +Since 1.0 -cairo_win32_scaled_font_done_font () +cairo_win32_scaled_font_done_font () cairo_win32_scaled_font_done_font -void cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font); - -Releases any resources allocated by cairo_win32_scaled_font_select_font() - -scaled_font : -A scaled font from the Win32 font backend. -Since 1.0 +void +cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font); +Releases any resources allocated by cairo_win32_scaled_font_select_font() + +Parameters + + + + + + +scaled_font +A scaled font from the Win32 font backend. + + +Since 1.0 -cairo_win32_scaled_font_get_metrics_factor () +cairo_win32_scaled_font_get_metrics_factor () cairo_win32_scaled_font_get_metrics_factor -double cairo_win32_scaled_font_get_metrics_factor - (cairo_scaled_font_t *scaled_font); - -Gets a scale factor between logical coordinates in the coordinate +double +cairo_win32_scaled_font_get_metrics_factor + (cairo_scaled_font_t *scaled_font); +Gets a scale factor between logical coordinates in the coordinate space used by cairo_win32_scaled_font_select_font() (that is, the coordinate system used by the Windows functions to return metrics) and -font space coordinates. - -scaled_font : -a scaled font from the Win32 font backend -Returns :factor to multiply logical units by to get font space -coordinates. -Since 1.0 +font space coordinates. + +Parameters + + + + + + +scaled_font +a scaled font from the Win32 font backend + + + +Returns + factor to multiply logical units by to get font space +coordinates. + +Since 1.0 -cairo_win32_scaled_font_get_logical_to_device () +cairo_win32_scaled_font_get_logical_to_device () cairo_win32_scaled_font_get_logical_to_device -void cairo_win32_scaled_font_get_logical_to_device - (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *logical_to_device); - -Gets the transformation mapping the logical space used by scaled_font -to device space. - -scaled_font : -a scaled font from the Win32 font backend -logical_to_device : -matrix to return -Since 1.4 +void +cairo_win32_scaled_font_get_logical_to_device + (cairo_scaled_font_t *scaled_font, + cairo_matrix_t *logical_to_device); +Gets the transformation mapping the logical space used by scaled_font + +to device space. + +Parameters + + + + + + +scaled_font +a scaled font from the Win32 font backend + +logical_to_device +matrix to return + + +Since 1.4 -cairo_win32_scaled_font_get_device_to_logical () +cairo_win32_scaled_font_get_device_to_logical () cairo_win32_scaled_font_get_device_to_logical -void cairo_win32_scaled_font_get_device_to_logical - (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *device_to_logical); - -Gets the transformation mapping device space to the logical space -used by scaled_font. - -scaled_font : -a scaled font from the Win32 font backend -device_to_logical : -matrix to return -Since 1.4 +void +cairo_win32_scaled_font_get_device_to_logical + (cairo_scaled_font_t *scaled_font, + cairo_matrix_t *device_to_logical); +Gets the transformation mapping device space to the logical space +used by scaled_font +. + +Parameters + + + + + + +scaled_font +a scaled font from the Win32 font backend + +device_to_logical +matrix to return + + +Since 1.4 + + + +Types and Values + +CAIRO_HAS_WIN32_FONT +CAIRO_HAS_WIN32_FONT +#define CAIRO_HAS_WIN32_FONT 1 + +Defined if the Microsoft Windows font backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.8 See Also -cairo_font_face_t +cairo_font_face_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-win32.xml cairo-1.14.2/doc/public/xml/cairo-win32.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-win32.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-win32.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,166 +16,264 @@ Microsoft Windows surface support - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_win32_surface_create () +cairo_surface_t * +cairo_win32_surface_create_with_dib () +cairo_surface_t * +cairo_win32_surface_create_with_ddb () +cairo_surface_t * +cairo_win32_printing_surface_create () +HDC +cairo_win32_surface_get_dc () +cairo_surface_t * +cairo_win32_surface_get_image () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_WIN32_SURFACE + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_WIN32_SURFACE -cairo_surface_t * cairo_win32_surface_create (HDC hdc); -cairo_surface_t * cairo_win32_surface_create_with_dib (cairo_format_t format, - int width, - int height); -cairo_surface_t * cairo_win32_surface_create_with_ddb (HDC hdc, - cairo_format_t format, - int width, - int height); -cairo_surface_t * cairo_win32_printing_surface_create (HDC hdc); -HDC cairo_win32_surface_get_dc (cairo_surface_t *surface); -cairo_surface_t * cairo_win32_surface_get_image (cairo_surface_t *surface); - - Description - -The Microsoft Windows surface is used to render cairo graphics to -Microsoft Windows windows, bitmaps, and printing device contexts. - - -The surface returned by cairo_win32_printing_surface_create() is of surface +The Microsoft Windows surface is used to render cairo graphics to +Microsoft Windows windows, bitmaps, and printing device contexts. +The surface returned by cairo_win32_printing_surface_create() is of surface type CAIRO_SURFACE_TYPE_WIN32_PRINTING and is a multi-page vector surface -type. - - -The surface returned by the other win32 constructors is of surface type -CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type. - +type. +The surface returned by the other win32 constructors is of surface type +CAIRO_SURFACE_TYPE_WIN32 and is a raster surface type. + - -Details - -CAIRO_HAS_WIN32_SURFACE -CAIRO_HAS_WIN32_SURFACE -#define CAIRO_HAS_WIN32_SURFACE 1 - - -Defined if the Microsoft Windows surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.0 + +Functions -cairo_win32_surface_create () +cairo_win32_surface_create () cairo_win32_surface_create -cairo_surface_t * cairo_win32_surface_create (HDC hdc); - -Creates a cairo surface that targets the given DC. The DC will be +cairo_surface_t * +cairo_win32_surface_create (HDC hdc); +Creates a cairo surface that targets the given DC. The DC will be queried for its initial clip extents, and this will be used as the size of the cairo surface. The resulting surface will always be of format CAIRO_FORMAT_RGB24; should you need another surface format, you will need to create one through -cairo_win32_surface_create_with_dib(). - -hdc : -the DC to create a surface for -Returns :the newly created surface -Since 1.0 +cairo_win32_surface_create_with_dib(). + +Parameters + + + + + + +hdc +the DC to create a surface for + + + +Returns + the newly created surface + +Since 1.0 -cairo_win32_surface_create_with_dib () +cairo_win32_surface_create_with_dib () cairo_win32_surface_create_with_dib -cairo_surface_t * cairo_win32_surface_create_with_dib (cairo_format_t format, - int width, - int height); - -Creates a device-independent-bitmap surface not associated with +cairo_surface_t * +cairo_win32_surface_create_with_dib (cairo_format_t format, + int width, + int height); +Creates a device-independent-bitmap surface not associated with any particular existing surface or device context. The created -bitmap will be uninitialized. - -format : -format of pixels in the surface to create -width : -width of the surface, in pixels -height : -height of the surface, in pixels -Returns :the newly created surface -Since 1.2 +bitmap will be uninitialized. + +Parameters + + + + + + +format +format of pixels in the surface to create + +width +width of the surface, in pixels + +height +height of the surface, in pixels + + + +Returns + the newly created surface + +Since 1.2 -cairo_win32_surface_create_with_ddb () +cairo_win32_surface_create_with_ddb () cairo_win32_surface_create_with_ddb -cairo_surface_t * cairo_win32_surface_create_with_ddb (HDC hdc, - cairo_format_t format, - int width, - int height); - -Creates a device-dependent-bitmap surface not associated with +cairo_surface_t * +cairo_win32_surface_create_with_ddb (HDC hdc, + cairo_format_t format, + int width, + int height); +Creates a device-dependent-bitmap surface not associated with any particular existing surface or device context. The created -bitmap will be uninitialized. - -hdc : -a DC compatible with the surface to create -format : -format of pixels in the surface to create -width : -width of the surface, in pixels -height : -height of the surface, in pixels -Returns :the newly created surface -Since 1.4 +bitmap will be uninitialized. + +Parameters + + + + + + +hdc +a DC compatible with the surface to create + +format +format of pixels in the surface to create + +width +width of the surface, in pixels + +height +height of the surface, in pixels + + + +Returns + the newly created surface + +Since 1.4 -cairo_win32_printing_surface_create () +cairo_win32_printing_surface_create () cairo_win32_printing_surface_create -cairo_surface_t * cairo_win32_printing_surface_create (HDC hdc); - -Creates a cairo surface that targets the given DC. The DC will be +cairo_surface_t * +cairo_win32_printing_surface_create (HDC hdc); +Creates a cairo surface that targets the given DC. The DC will be queried for its initial clip extents, and this will be used as the size of the cairo surface. The DC should be a printing DC; antialiasing will be ignored, and GDI will be used as much as -possible to draw to the surface. - - -The returned surface will be wrapped using the paginated surface to +possible to draw to the surface. +The returned surface will be wrapped using the paginated surface to provide correct complex rendering behaviour; cairo_surface_show_page() and -associated methods must be used for correct output. - -hdc : -the DC to create a surface for -Returns :the newly created surface -Since 1.6 +associated methods must be used for correct output. + +Parameters + + + + + + +hdc +the DC to create a surface for + + + +Returns + the newly created surface + +Since 1.6 -cairo_win32_surface_get_dc () +cairo_win32_surface_get_dc () cairo_win32_surface_get_dc -HDC cairo_win32_surface_get_dc (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 +HDC +cairo_win32_surface_get_dc (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. - -surface : -a cairo_surface_t -Returns :HDC or NULL if no HDC available. -Since 1.2 +the content of the HDC has been modified. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + HDC or NULL if no HDC available. + +Since 1.2 -cairo_win32_surface_get_image () +cairo_win32_surface_get_image () cairo_win32_surface_get_image -cairo_surface_t * cairo_win32_surface_get_image (cairo_surface_t *surface); - -Returns a cairo_surface_t image surface that refers to the same bits +cairo_surface_t * +cairo_win32_surface_get_image (cairo_surface_t *surface); +Returns a cairo_surface_t image surface that refers to the same bits as the DIB of the Win32 surface. If the passed-in win32 surface -is not a DIB surface, NULL is returned. - -surface : -a cairo_surface_t -Returns :a cairo_surface_t (owned by the win32 cairo_surface_t), -or NULL if the win32 surface is not a DIB. -Since 1.4 +is not a DIB surface, NULL is returned. + +Parameters + + + + + + +surface +a cairo_surface_t + + + +Returns + a cairo_surface_t (owned by the win32 cairo_surface_t), +or NULL if the win32 surface is not a DIB. + +Since 1.4 + + + +Types and Values + +CAIRO_HAS_WIN32_SURFACE +CAIRO_HAS_WIN32_SURFACE +#define CAIRO_HAS_WIN32_SURFACE 1 + +Defined if the Microsoft Windows surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.0 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-xcb.xml cairo-1.14.2/doc/public/xml/cairo-xcb.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-xcb.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-xcb.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,341 +16,473 @@ X Window System rendering using the XCB library - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_xcb_surface_create () +cairo_surface_t * +cairo_xcb_surface_create_for_bitmap () +cairo_surface_t * +cairo_xcb_surface_create_with_xrender_format () +void +cairo_xcb_surface_set_size () +void +cairo_xcb_surface_set_drawable () +xcb_connection_t * +cairo_xcb_device_get_connection () +void +cairo_xcb_device_debug_cap_xrender_version () +void +cairo_xcb_device_debug_cap_xshm_version () +int +cairo_xcb_device_debug_get_precision () +void +cairo_xcb_device_debug_set_precision () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_XCB_SURFACE +#defineCAIRO_HAS_XCB_SHM_FUNCTIONS + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_XCB_SURFACE -#define CAIRO_HAS_XCB_SHM_FUNCTIONS -cairo_surface_t * cairo_xcb_surface_create (xcb_connection_t *connection, - xcb_drawable_t drawable, - xcb_visualtype_t *visual, - int width, - int height); -cairo_surface_t * cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection, - xcb_screen_t *screen, - xcb_pixmap_t bitmap, - int width, - int height); -cairo_surface_t * cairo_xcb_surface_create_with_xrender_format - (xcb_connection_t *connection, - xcb_screen_t *screen, - xcb_drawable_t drawable, - xcb_render_pictforminfo_t *format, - int width, - int height); -void cairo_xcb_surface_set_size (cairo_surface_t *surface, - int width, - int height); -void cairo_xcb_surface_set_drawable (cairo_surface_t *surface, - xcb_drawable_t drawable, - int width, - int height); -xcb_connection_t * cairo_xcb_device_get_connection (cairo_device_t *device); -void cairo_xcb_device_debug_cap_xrender_version - (cairo_device_t *device, - int major_version, - int minor_version); -void cairo_xcb_device_debug_cap_xshm_version - (cairo_device_t *device, - int major_version, - int minor_version); -int cairo_xcb_device_debug_get_precision - (cairo_device_t *device); -void cairo_xcb_device_debug_set_precision - (cairo_device_t *device, - int precision); - - Description - -The XCB surface is used to render cairo graphics to X Window System -windows and pixmaps using the XCB library. - - -Note that the XCB surface automatically takes advantage of the X render -extension if it is available. - +The XCB surface is used to render cairo graphics to X Window System +windows and pixmaps using the XCB library. +Note that the XCB surface automatically takes advantage of the X render +extension if it is available. + - -Details - -CAIRO_HAS_XCB_SURFACE -CAIRO_HAS_XCB_SURFACE -#define CAIRO_HAS_XCB_SURFACE 1 - - -Defined if the xcb surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.12 - -CAIRO_HAS_XCB_SHM_FUNCTIONS -CAIRO_HAS_XCB_SHM_FUNCTIONS -#define CAIRO_HAS_XCB_SHM_FUNCTIONS 1 - - - + +Functions -cairo_xcb_surface_create () +cairo_xcb_surface_create () cairo_xcb_surface_create -cairo_surface_t * cairo_xcb_surface_create (xcb_connection_t *connection, - xcb_drawable_t drawable, - xcb_visualtype_t *visual, - int width, - int height); - -Creates an XCB surface that draws to the given drawable. +cairo_surface_t * +cairo_xcb_surface_create (xcb_connection_t *connection, + xcb_drawable_t drawable, + xcb_visualtype_t *visual, + int width, + int height); +Creates an XCB surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided visual. - - -Note: If drawable is a Window, then the function +by the provided visual. +Note: If drawable + is a Window, then the function cairo_xcb_surface_set_size() must be called whenever the size of the -window changes. - - -When drawable is a Window containing child windows then drawing to +window changes. +When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. - -connection : -an XCB connection -drawable : -an XCB drawable -visual : -the visual to use for drawing to drawable. The depth +children will be included. + +Parameters + + + + + + +connection +an XCB connection + +drawable +an XCB drawable + +visual +the visual to use for drawing to drawable +. The depth of the visual must match the depth of the drawable. -Currently, only TrueColor visuals are fully supported. -width : -the current width of drawable -height : -the current height of drawable -Returns :a pointer to the newly created surface. The caller +Currently, only TrueColor visuals are fully supported. + +width +the current width of drawable + + +height +the current height of drawable + + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.12 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.12 -cairo_xcb_surface_create_for_bitmap () +cairo_xcb_surface_create_for_bitmap () cairo_xcb_surface_create_for_bitmap -cairo_surface_t * cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection, - xcb_screen_t *screen, - xcb_pixmap_t bitmap, - int width, - int height); - -Creates an XCB surface that draws to the given bitmap. -This will be drawn to as a CAIRO_FORMAT_A1 object. - -connection : -an XCB connection -screen : -the XCB screen associated with bitmap -bitmap : -an XCB drawable (a Pixmap with depth 1) -width : -the current width of bitmap -height : -the current height of bitmap -Returns :a pointer to the newly created surface. The caller +cairo_surface_t * +cairo_xcb_surface_create_for_bitmap (xcb_connection_t *connection, + xcb_screen_t *screen, + xcb_pixmap_t bitmap, + int width, + int height); +Creates an XCB surface that draws to the given bitmap. +This will be drawn to as a CAIRO_FORMAT_A1 object. + +Parameters + + + + + + +connection +an XCB connection + +screen +the XCB screen associated with bitmap + + +bitmap +an XCB drawable (a Pixmap with depth 1) + +width +the current width of bitmap + + +height +the current height of bitmap + + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.12 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.12 -cairo_xcb_surface_create_with_xrender_format () +cairo_xcb_surface_create_with_xrender_format () cairo_xcb_surface_create_with_xrender_format -cairo_surface_t * cairo_xcb_surface_create_with_xrender_format - (xcb_connection_t *connection, - xcb_screen_t *screen, - xcb_drawable_t drawable, - xcb_render_pictforminfo_t *format, - int width, - int height); - -Creates an XCB surface that draws to the given drawable. +cairo_surface_t * +cairo_xcb_surface_create_with_xrender_format + (xcb_connection_t *connection, + xcb_screen_t *screen, + xcb_drawable_t drawable, + xcb_render_pictforminfo_t *format, + int width, + int height); +Creates an XCB surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided picture format. - - -Note: If drawable is a Window, then the function +by the provided picture format. +Note: If drawable + is a Window, then the function cairo_xcb_surface_set_size() must be called whenever the size of the -window changes. - - -When drawable is a Window containing child windows then drawing to +window changes. +When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. - -connection : -an XCB connection -screen : -the XCB screen associated with drawable -drawable : -an XCB drawable -format : -the picture format to use for drawing to drawable. The -depth of format mush match the depth of the drawable. -width : -the current width of drawable -height : -the current height of drawable -Returns :a pointer to the newly created surface. The caller +children will be included. + +Parameters + + + + + + +connection +an XCB connection + +screen +the XCB screen associated with drawable + + +drawable +an XCB drawable + +format +the picture format to use for drawing to drawable +. The +depth of format +mush match the depth of the drawable. + +width +the current width of drawable + + +height +the current height of drawable + + + + +Returns + a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done -with it. -This function always returns a valid pointer, but it will return a +with it. +This function always returns a valid pointer, but it will return a pointer to a "nil" surface if an error such as out of memory -occurs. You can use cairo_surface_status() to check for this. -Since 1.12 +occurs. You can use cairo_surface_status() to check for this. + +Since 1.12 -cairo_xcb_surface_set_size () +cairo_xcb_surface_set_size () cairo_xcb_surface_set_size -void cairo_xcb_surface_set_size (cairo_surface_t *surface, - int width, - int height); - -Informs cairo of the new size of the XCB drawable underlying the +void +cairo_xcb_surface_set_size (cairo_surface_t *surface, + int width, + int height); +Informs cairo of the new size of the XCB drawable underlying the surface. For a surface created for a window (rather than a pixmap), this function must be called each time the size of the window changes. (For a subwindow, you are normally resizing the window yourself, but for a toplevel window, it is necessary to listen for -ConfigureNotify events.) - - -A pixmap can never change size, so it is never necessary to call -this function on a surface created for a pixmap. - - -If cairo_surface_flush() wasn't called, some pending operations -might be discarded. - -surface : -a cairo_surface_t for the XCB backend -width : -the new width of the surface -height : -the new height of the surface -Since 1.12 +ConfigureNotify events.) +A pixmap can never change size, so it is never necessary to call +this function on a surface created for a pixmap. +If cairo_surface_flush() wasn't called, some pending operations +might be discarded. + +Parameters + + + + + + +surface +a cairo_surface_t for the XCB backend + +width +the new width of the surface + +height +the new height of the surface + + +Since 1.12 -cairo_xcb_surface_set_drawable () +cairo_xcb_surface_set_drawable () cairo_xcb_surface_set_drawable -void cairo_xcb_surface_set_drawable (cairo_surface_t *surface, - xcb_drawable_t drawable, - int width, - int height); - -Informs cairo of the new drawable and size of the XCB drawable underlying the -surface. - - -If cairo_surface_flush() wasn't called, some pending operations -might be discarded. - -surface : -a cairo_surface_t for the XCB backend -drawable : -the new drawable of the surface -width : -the new width of the surface -height : -the new height of the surface -Since 1.12 +void +cairo_xcb_surface_set_drawable (cairo_surface_t *surface, + xcb_drawable_t drawable, + int width, + int height); +Informs cairo of the new drawable and size of the XCB drawable underlying the +surface. +If cairo_surface_flush() wasn't called, some pending operations +might be discarded. + +Parameters + + + + + + +surface +a cairo_surface_t for the XCB backend + +drawable +the new drawable of the surface + +width +the new width of the surface + +height +the new height of the surface + + +Since 1.12 -cairo_xcb_device_get_connection () +cairo_xcb_device_get_connection () cairo_xcb_device_get_connection -xcb_connection_t * cairo_xcb_device_get_connection (cairo_device_t *device); - -Get the connection for the XCB device. - -device : -a cairo_device_t for the XCB backend -Returns :the xcb_connection_t for the connection -Since 1.12 +xcb_connection_t * +cairo_xcb_device_get_connection (cairo_device_t *device); +Get the connection for the XCB device. + +Parameters + + + + + + +device +a cairo_device_t for the XCB backend + + + +Returns + the xcb_connection_t for the connection + +Since 1.12 -cairo_xcb_device_debug_cap_xrender_version () +cairo_xcb_device_debug_cap_xrender_version () cairo_xcb_device_debug_cap_xrender_version -void cairo_xcb_device_debug_cap_xrender_version - (cairo_device_t *device, - int major_version, - int minor_version); - -Restricts all future XCB surfaces for this devices to the specified version +void +cairo_xcb_device_debug_cap_xrender_version + (cairo_device_t *device, + int major_version, + int minor_version); +Restricts all future XCB surfaces for this devices to the specified version of the RENDER extension. This function exists solely for debugging purpose. It let's you find out how cairo would behave with an older version of -the RENDER extension. - - -Use the special values -1 and -1 for disabling the RENDER extension. - -device : -a cairo_device_t for the XCB backend -major_version : -major version to restrict to -minor_version : -minor version to restrict to -Since 1.12 +the RENDER extension. +Use the special values -1 and -1 for disabling the RENDER extension. + +Parameters + + + + + + +device +a cairo_device_t for the XCB backend + +major_version +major version to restrict to + +minor_version +minor version to restrict to + + +Since 1.12 -cairo_xcb_device_debug_cap_xshm_version () +cairo_xcb_device_debug_cap_xshm_version () cairo_xcb_device_debug_cap_xshm_version -void cairo_xcb_device_debug_cap_xshm_version - (cairo_device_t *device, - int major_version, - int minor_version); - -Restricts all future XCB surfaces for this devices to the specified version +void +cairo_xcb_device_debug_cap_xshm_version + (cairo_device_t *device, + int major_version, + int minor_version); +Restricts all future XCB surfaces for this devices to the specified version of the SHM extension. This function exists solely for debugging purpose. It let's you find out how cairo would behave with an older version of -the SHM extension. - - -Use the special values -1 and -1 for disabling the SHM extension. - -device : -a cairo_device_t for the XCB backend -major_version : -major version to restrict to -minor_version : -minor version to restrict to -Since 1.12 +the SHM extension. +Use the special values -1 and -1 for disabling the SHM extension. + +Parameters + + + + + + +device +a cairo_device_t for the XCB backend + +major_version +major version to restrict to + +minor_version +minor version to restrict to + + +Since 1.12 -cairo_xcb_device_debug_get_precision () +cairo_xcb_device_debug_get_precision () cairo_xcb_device_debug_get_precision -int cairo_xcb_device_debug_get_precision - (cairo_device_t *device); - -Get the Xrender precision mode. - -device : -a cairo_device_t for the XCB backend -Returns :the render precision mode -Since 1.12 +int +cairo_xcb_device_debug_get_precision (cairo_device_t *device); +Get the Xrender precision mode. + +Parameters + + + + + + +device +a cairo_device_t for the XCB backend + + + +Returns + the render precision mode + +Since 1.12 -cairo_xcb_device_debug_set_precision () +cairo_xcb_device_debug_set_precision () cairo_xcb_device_debug_set_precision -void cairo_xcb_device_debug_set_precision - (cairo_device_t *device, - int precision); +void +cairo_xcb_device_debug_set_precision (cairo_device_t *device, + int precision); +Render supports two modes of precision when rendering trapezoids. Set +the precision to the desired mode. + +Parameters + + + + + + +device +a cairo_device_t for the XCB backend + +precision +the precision to use + + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_XCB_SURFACE +CAIRO_HAS_XCB_SURFACE +#define CAIRO_HAS_XCB_SURFACE 1 + +Defined if the xcb surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.12 + +CAIRO_HAS_XCB_SHM_FUNCTIONS +CAIRO_HAS_XCB_SHM_FUNCTIONS +#define CAIRO_HAS_XCB_SHM_FUNCTIONS 1 + -Render supports two modes of precision when rendering trapezoids. Set -the precision to the desired mode. - -device : -a cairo_device_t for the XCB backend -precision : -the precision to use -Since 1.12 + + See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-xlib.xml cairo-1.14.2/doc/public/xml/cairo-xlib.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-xlib.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-xlib.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,317 +16,509 @@ X Window System rendering using XLib - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_xlib_surface_create () +cairo_surface_t * +cairo_xlib_surface_create_for_bitmap () +void +cairo_xlib_surface_set_size () +Display * +cairo_xlib_surface_get_display () +Screen * +cairo_xlib_surface_get_screen () +void +cairo_xlib_surface_set_drawable () +Drawable +cairo_xlib_surface_get_drawable () +Visual * +cairo_xlib_surface_get_visual () +int +cairo_xlib_surface_get_width () +int +cairo_xlib_surface_get_height () +int +cairo_xlib_surface_get_depth () +void +cairo_xlib_device_debug_cap_xrender_version () +int +cairo_xlib_device_debug_get_precision () +void +cairo_xlib_device_debug_set_precision () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_XLIB_SURFACE + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_XLIB_SURFACE -cairo_surface_t * cairo_xlib_surface_create (Display *dpy, - Drawable drawable, - Visual *visual, - int width, - int height); -cairo_surface_t * cairo_xlib_surface_create_for_bitmap - (Display *dpy, - Pixmap bitmap, - Screen *screen, - int width, - int height); -void cairo_xlib_surface_set_size (cairo_surface_t *surface, - int width, - int height); -Display * cairo_xlib_surface_get_display (cairo_surface_t *surface); -Screen * cairo_xlib_surface_get_screen (cairo_surface_t *surface); -void cairo_xlib_surface_set_drawable (cairo_surface_t *surface, - Drawable drawable, - int width, - int height); -Drawable cairo_xlib_surface_get_drawable (cairo_surface_t *surface); -Visual * cairo_xlib_surface_get_visual (cairo_surface_t *surface); -int cairo_xlib_surface_get_width (cairo_surface_t *surface); -int cairo_xlib_surface_get_height (cairo_surface_t *surface); -int cairo_xlib_surface_get_depth (cairo_surface_t *surface); -void cairo_xlib_device_debug_cap_xrender_version - (cairo_device_t *device, - int major_version, - int minor_version); -int cairo_xlib_device_debug_get_precision - (cairo_device_t *device); -void cairo_xlib_device_debug_set_precision - (cairo_device_t *device, - int precision); - - Description - -The XLib surface is used to render cairo graphics to X Window System -windows and pixmaps using the XLib library. - - -Note that the XLib surface automatically takes advantage of X render extension -if it is available. - +The XLib surface is used to render cairo graphics to X Window System +windows and pixmaps using the XLib library. +Note that the XLib surface automatically takes advantage of X render extension +if it is available. + - -Details - -CAIRO_HAS_XLIB_SURFACE -CAIRO_HAS_XLIB_SURFACE -#define CAIRO_HAS_XLIB_SURFACE 1 - - -Defined if the Xlib surface backend is available. -This macro can be used to conditionally compile backend-specific code. -Since 1.0 + +Functions -cairo_xlib_surface_create () +cairo_xlib_surface_create () cairo_xlib_surface_create -cairo_surface_t * cairo_xlib_surface_create (Display *dpy, - Drawable drawable, - Visual *visual, - int width, - int height); - -Creates an Xlib surface that draws to the given drawable. +cairo_surface_t * +cairo_xlib_surface_create (Display *dpy, + Drawable drawable, + Visual *visual, + int width, + int height); +Creates an Xlib surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided visual. - - -Note: If drawable is a Window, then the function +by the provided visual. +Note: If drawable + is a Window, then the function cairo_xlib_surface_set_size() must be called whenever the size of the -window changes. - - -When drawable is a Window containing child windows then drawing to +window changes. +When drawable + is a Window containing child windows then drawing to the created surface will be clipped by those child windows. When the created surface is used as a source, the contents of the -children will be included. - -dpy : -an X Display -drawable : -an X Drawable, (a Pixmap or a Window) -visual : -the visual to use for drawing to drawable. The depth +children will be included. + +Parameters + + + + + + +dpy +an X Display + +drawable +an X Drawable, (a Pixmap or a Window) + +visual +the visual to use for drawing to drawable +. The depth of the visual must match the depth of the drawable. -Currently, only TrueColor visuals are fully supported. -width : -the current width of drawable. -height : -the current height of drawable. -Returns :the newly created surface -Since 1.0 +Currently, only TrueColor visuals are fully supported. + +width +the current width of drawable +. + +height +the current height of drawable +. + + + +Returns + the newly created surface + +Since 1.0 -cairo_xlib_surface_create_for_bitmap () +cairo_xlib_surface_create_for_bitmap () cairo_xlib_surface_create_for_bitmap -cairo_surface_t * cairo_xlib_surface_create_for_bitmap - (Display *dpy, - Pixmap bitmap, - Screen *screen, - int width, - int height); - -Creates an Xlib surface that draws to the given bitmap. -This will be drawn to as a CAIRO_FORMAT_A1 object. - -dpy : -an X Display -bitmap : -an X Drawable, (a depth-1 Pixmap) -screen : -the X Screen associated with bitmap -width : -the current width of bitmap. -height : -the current height of bitmap. -Returns :the newly created surface -Since 1.0 +cairo_surface_t * +cairo_xlib_surface_create_for_bitmap (Display *dpy, + Pixmap bitmap, + Screen *screen, + int width, + int height); +Creates an Xlib surface that draws to the given bitmap. +This will be drawn to as a CAIRO_FORMAT_A1 object. + +Parameters + + + + + + +dpy +an X Display + +bitmap +an X Drawable, (a depth-1 Pixmap) + +screen +the X Screen associated with bitmap + + +width +the current width of bitmap +. + +height +the current height of bitmap +. + + + +Returns + the newly created surface + +Since 1.0 -cairo_xlib_surface_set_size () +cairo_xlib_surface_set_size () cairo_xlib_surface_set_size -void cairo_xlib_surface_set_size (cairo_surface_t *surface, - int width, - int height); - -Informs cairo of the new size of the X Drawable underlying the +void +cairo_xlib_surface_set_size (cairo_surface_t *surface, + int width, + int height); +Informs cairo of the new size of the X Drawable underlying the surface. For a surface created for a Window (rather than a Pixmap), this function must be called each time the size of the window changes. (For a subwindow, you are normally resizing the window yourself, but for a toplevel window, it is necessary to listen for -ConfigureNotify events.) - - -A Pixmap can never change size, so it is never necessary to call -this function on a surface created for a Pixmap. - -surface : -a cairo_surface_t for the XLib backend -width : -the new width of the surface -height : -the new height of the surface -Since 1.0 +ConfigureNotify events.) +A Pixmap can never change size, so it is never necessary to call +this function on a surface created for a Pixmap. + +Parameters + + + + + + +surface +a cairo_surface_t for the XLib backend + +width +the new width of the surface + +height +the new height of the surface + + +Since 1.0 -cairo_xlib_surface_get_display () +cairo_xlib_surface_get_display () cairo_xlib_surface_get_display -Display * cairo_xlib_surface_get_display (cairo_surface_t *surface); - -Get the X Display for the underlying X Drawable. - -surface : -a cairo_xlib_surface_t -Returns :the display. -Since 1.2 +Display * +cairo_xlib_surface_get_display (cairo_surface_t *surface); +Get the X Display for the underlying X Drawable. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the display. + +Since 1.2 -cairo_xlib_surface_get_screen () +cairo_xlib_surface_get_screen () cairo_xlib_surface_get_screen -Screen * cairo_xlib_surface_get_screen (cairo_surface_t *surface); - -Get the X Screen for the underlying X Drawable. - -surface : -a cairo_xlib_surface_t -Returns :the screen. -Since 1.2 +Screen * +cairo_xlib_surface_get_screen (cairo_surface_t *surface); +Get the X Screen for the underlying X Drawable. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the screen. + +Since 1.2 -cairo_xlib_surface_set_drawable () +cairo_xlib_surface_set_drawable () cairo_xlib_surface_set_drawable -void cairo_xlib_surface_set_drawable (cairo_surface_t *surface, - Drawable drawable, - int width, - int height); - -Informs cairo of a new X Drawable underlying the +void +cairo_xlib_surface_set_drawable (cairo_surface_t *surface, + Drawable drawable, + int width, + int height); +Informs cairo of a new X Drawable underlying the surface. The drawable must match the display, screen and format of the existing drawable or the application will get X protocol errors and will probably terminate. No checks are done by this function to ensure this -compatibility. - -surface : -a cairo_surface_t for the XLib backend -drawable : -the new drawable for the surface -width : -the width of the new drawable -height : -the height of the new drawable -Since 1.0 +compatibility. + +Parameters + + + + + + +surface +a cairo_surface_t for the XLib backend + +drawable +the new drawable for the surface + +width +the width of the new drawable + +height +the height of the new drawable + + +Since 1.0 -cairo_xlib_surface_get_drawable () +cairo_xlib_surface_get_drawable () cairo_xlib_surface_get_drawable -Drawable cairo_xlib_surface_get_drawable (cairo_surface_t *surface); - -Get the underlying X Drawable used for the surface. - -surface : -a cairo_xlib_surface_t -Returns :the drawable. -Since 1.2 +Drawable +cairo_xlib_surface_get_drawable (cairo_surface_t *surface); +Get the underlying X Drawable used for the surface. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the drawable. + +Since 1.2 -cairo_xlib_surface_get_visual () +cairo_xlib_surface_get_visual () cairo_xlib_surface_get_visual -Visual * cairo_xlib_surface_get_visual (cairo_surface_t *surface); - -Gets the X Visual associated with surface, suitable for use with the -underlying X Drawable. If surface was created by +Visual * +cairo_xlib_surface_get_visual (cairo_surface_t *surface); +Gets the X Visual associated with surface +, suitable for use with the +underlying X Drawable. If surface + was created by cairo_xlib_surface_create(), the return value is the Visual passed to that -constructor. - -surface : -a cairo_xlib_surface_t -Returns :the Visual or NULL if there is no appropriate Visual for -surface. -Since 1.2 +constructor. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the Visual or NULL if there is no appropriate Visual for +surface +. + +Since 1.2 -cairo_xlib_surface_get_width () +cairo_xlib_surface_get_width () cairo_xlib_surface_get_width -int cairo_xlib_surface_get_width (cairo_surface_t *surface); - -Get the width of the X Drawable underlying the surface in pixels. - -surface : -a cairo_xlib_surface_t -Returns :the width of the surface in pixels. -Since 1.2 +int +cairo_xlib_surface_get_width (cairo_surface_t *surface); +Get the width of the X Drawable underlying the surface in pixels. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the width of the surface in pixels. + +Since 1.2 -cairo_xlib_surface_get_height () +cairo_xlib_surface_get_height () cairo_xlib_surface_get_height -int cairo_xlib_surface_get_height (cairo_surface_t *surface); - -Get the height of the X Drawable underlying the surface in pixels. - -surface : -a cairo_xlib_surface_t -Returns :the height of the surface in pixels. -Since 1.2 +int +cairo_xlib_surface_get_height (cairo_surface_t *surface); +Get the height of the X Drawable underlying the surface in pixels. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the height of the surface in pixels. + +Since 1.2 -cairo_xlib_surface_get_depth () +cairo_xlib_surface_get_depth () cairo_xlib_surface_get_depth -int cairo_xlib_surface_get_depth (cairo_surface_t *surface); - -Get the number of bits used to represent each pixel value. - -surface : -a cairo_xlib_surface_t -Returns :the depth of the surface in bits. -Since 1.2 +int +cairo_xlib_surface_get_depth (cairo_surface_t *surface); +Get the number of bits used to represent each pixel value. + +Parameters + + + + + + +surface +a cairo_xlib_surface_t + + + +Returns + the depth of the surface in bits. + +Since 1.2 -cairo_xlib_device_debug_cap_xrender_version () +cairo_xlib_device_debug_cap_xrender_version () cairo_xlib_device_debug_cap_xrender_version -void cairo_xlib_device_debug_cap_xrender_version - (cairo_device_t *device, - int major_version, - int minor_version); - -Restricts all future Xlib surfaces for this devices to the specified version +void +cairo_xlib_device_debug_cap_xrender_version + (cairo_device_t *device, + int major_version, + int minor_version); +Restricts all future Xlib surfaces for this devices to the specified version of the RENDER extension. This function exists solely for debugging purpose. -It let's you find out how cairo would behave with an older version of -the RENDER extension. - - -Use the special values -1 and -1 for disabling the RENDER extension. - -device : -a cairo_device_t for the Xlib backend -major_version : -major version to restrict to -minor_version : -minor version to restrict to -Since 1.12 +It lets you find out how cairo would behave with an older version of +the RENDER extension. +Use the special values -1 and -1 for disabling the RENDER extension. + +Parameters + + + + + + +device +a cairo_device_t for the Xlib backend + +major_version +major version to restrict to + +minor_version +minor version to restrict to + + +Since 1.12 -cairo_xlib_device_debug_get_precision () +cairo_xlib_device_debug_get_precision () cairo_xlib_device_debug_get_precision -int cairo_xlib_device_debug_get_precision - (cairo_device_t *device); - -Get the Xrender precision mode. - -device : -a cairo_device_t for the Xlib backend -Returns :the render precision mode -Since 1.12 +int +cairo_xlib_device_debug_get_precision (cairo_device_t *device); +Get the Xrender precision mode. + +Parameters + + + + + + +device +a cairo_device_t for the Xlib backend + + + +Returns + the render precision mode + +Since 1.12 -cairo_xlib_device_debug_set_precision () +cairo_xlib_device_debug_set_precision () cairo_xlib_device_debug_set_precision -void cairo_xlib_device_debug_set_precision - (cairo_device_t *device, - int precision); - -Render supports two modes of precision when rendering trapezoids. Set -the precision to the desired mode. - -device : -a cairo_device_t for the Xlib backend -precision : -the precision to use -Since 1.12 +void +cairo_xlib_device_debug_set_precision (cairo_device_t *device, + int precision); +Render supports two modes of precision when rendering trapezoids. Set +the precision to the desired mode. + +Parameters + + + + + + +device +a cairo_device_t for the Xlib backend + +precision +the precision to use + + +Since 1.12 + + + +Types and Values + +CAIRO_HAS_XLIB_SURFACE +CAIRO_HAS_XLIB_SURFACE +#define CAIRO_HAS_XLIB_SURFACE 1 + +Defined if the Xlib surface backend is available. +This macro can be used to conditionally compile backend-specific code. +Since 1.0 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo-xlib-xrender.xml cairo-1.14.2/doc/public/xml/cairo-xlib-xrender.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo-xlib-xrender.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo-xlib-xrender.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,101 +16,156 @@ X Window System rendering using XLib and the X Render extension - -Synopsis + +Functions + + + + + +cairo_surface_t * +cairo_xlib_surface_create_with_xrender_format () +XRenderPictFormat * +cairo_xlib_surface_get_xrender_format () + + + + + + +Types and Values + + + + + +#defineCAIRO_HAS_XLIB_XRENDER_SURFACE + + + + + + +Object Hierarchy + + + -#define CAIRO_HAS_XLIB_XRENDER_SURFACE -cairo_surface_t * cairo_xlib_surface_create_with_xrender_format - (Display *dpy, - Drawable drawable, - Screen *screen, - XRenderPictFormat *format, - int width, - int height); -XRenderPictFormat * cairo_xlib_surface_get_xrender_format - (cairo_surface_t *surface); - - Description - -The XLib surface is used to render cairo graphics to X Window System -windows and pixmaps using the XLib and Xrender libraries. - - -Note that the XLib surface automatically takes advantage of X Render extension -if it is available. - +The XLib surface is used to render cairo graphics to X Window System +windows and pixmaps using the XLib and Xrender libraries. +Note that the XLib surface automatically takes advantage of X Render extension +if it is available. + - -Details - -CAIRO_HAS_XLIB_XRENDER_SURFACE -CAIRO_HAS_XLIB_XRENDER_SURFACE -#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1 - - -Defined if the XLib/XRender surface functions are available. -This macro can be used to conditionally compile backend-specific code. -Since 1.6 + +Functions -cairo_xlib_surface_create_with_xrender_format () +cairo_xlib_surface_create_with_xrender_format () cairo_xlib_surface_create_with_xrender_format -cairo_surface_t * cairo_xlib_surface_create_with_xrender_format - (Display *dpy, - Drawable drawable, - Screen *screen, - XRenderPictFormat *format, - int width, - int height); - -Creates an Xlib surface that draws to the given drawable. +cairo_surface_t * +cairo_xlib_surface_create_with_xrender_format + (Display *dpy, + Drawable drawable, + Screen *screen, + XRenderPictFormat *format, + int width, + int height); +Creates an Xlib surface that draws to the given drawable. The way that colors are represented in the drawable is specified -by the provided picture format. - - -Note: If drawable is a Window, then the function +by the provided picture format. +Note: If drawable + is a Window, then the function cairo_xlib_surface_set_size() must be called whenever the size of the -window changes. - -dpy : -an X Display -drawable : -an X Drawable, (a Pixmap or a Window) -screen : -the X Screen associated with drawable -format : -the picture format to use for drawing to drawable. The depth -of format must match the depth of the drawable. -width : -the current width of drawable. -height : -the current height of drawable. -Returns :the newly created surface -Since 1.0 +window changes. + +Parameters + + + + + + +dpy +an X Display + +drawable +an X Drawable, (a Pixmap or a Window) + +screen +the X Screen associated with drawable + + +format +the picture format to use for drawing to drawable +. The depth +of format +must match the depth of the drawable. + +width +the current width of drawable +. + +height +the current height of drawable +. + + + +Returns + the newly created surface + +Since 1.0 -cairo_xlib_surface_get_xrender_format () +cairo_xlib_surface_get_xrender_format () cairo_xlib_surface_get_xrender_format -XRenderPictFormat * cairo_xlib_surface_get_xrender_format - (cairo_surface_t *surface); - -Gets the X Render picture format that surface uses for rendering with the +XRenderPictFormat * +cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface); +Gets the X Render picture format that surface + uses for rendering with the X Render extension. If the surface was created by cairo_xlib_surface_create_with_xrender_format() originally, the return -value is the format passed to that constructor. - -surface : -an xlib surface -Returns :the XRenderPictFormat* associated with surface, +value is the format passed to that constructor. + +Parameters + + + + + + +surface +an xlib surface + + + +Returns + the XRenderPictFormat* associated with surface +, or NULL if the surface is not an xlib surface -or if the X Render extension is not available. -Since 1.6 +or if the X Render extension is not available. + +Since 1.6 + + + +Types and Values + +CAIRO_HAS_XLIB_XRENDER_SURFACE +CAIRO_HAS_XLIB_XRENDER_SURFACE +#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1 + +Defined if the XLib/XRender surface functions are available. +This macro can be used to conditionally compile backend-specific code. +Since 1.6 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/doc/public/xml/cairo.xml cairo-1.14.2/doc/public/xml/cairo.xml --- cairo-1.13.0~20140204/doc/public/xml/cairo.xml 2014-02-04 10:45:08.000000000 +0000 +++ cairo-1.14.2/doc/public/xml/cairo.xml 2015-03-11 02:02:37.000000000 +0000 @@ -16,187 +16,210 @@ The cairo drawing context - -Synopsis + +Functions + + + + + +cairo_t * +cairo_create () +cairo_t * +cairo_reference () +void +cairo_destroy () +cairo_status_t +cairo_status () +void +cairo_save () +void +cairo_restore () +cairo_surface_t * +cairo_get_target () +void +cairo_push_group () +void +cairo_push_group_with_content () +cairo_pattern_t * +cairo_pop_group () +void +cairo_pop_group_to_source () +cairo_surface_t * +cairo_get_group_target () +void +cairo_set_source_rgb () +void +cairo_set_source_rgba () +void +cairo_set_source () +void +cairo_set_source_surface () +cairo_pattern_t * +cairo_get_source () +void +cairo_set_antialias () +cairo_antialias_t +cairo_get_antialias () +void +cairo_set_dash () +int +cairo_get_dash_count () +void +cairo_get_dash () +void +cairo_set_fill_rule () +cairo_fill_rule_t +cairo_get_fill_rule () +void +cairo_set_line_cap () +cairo_line_cap_t +cairo_get_line_cap () +void +cairo_set_line_join () +cairo_line_join_t +cairo_get_line_join () +void +cairo_set_line_width () +double +cairo_get_line_width () +void +cairo_set_miter_limit () +double +cairo_get_miter_limit () +void +cairo_set_operator () +cairo_operator_t +cairo_get_operator () +void +cairo_set_tolerance () +double +cairo_get_tolerance () +void +cairo_clip () +void +cairo_clip_preserve () +void +cairo_clip_extents () +cairo_bool_t +cairo_in_clip () +void +cairo_reset_clip () +void +cairo_rectangle_list_destroy () +cairo_rectangle_list_t * +cairo_copy_clip_rectangle_list () +void +cairo_fill () +void +cairo_fill_preserve () +void +cairo_fill_extents () +cairo_bool_t +cairo_in_fill () +void +cairo_mask () +void +cairo_mask_surface () +void +cairo_paint () +void +cairo_paint_with_alpha () +void +cairo_stroke () +void +cairo_stroke_preserve () +void +cairo_stroke_extents () +cairo_bool_t +cairo_in_stroke () +void +cairo_copy_page () +void +cairo_show_page () +unsigned int +cairo_get_reference_count () +cairo_status_t +cairo_set_user_data () +void * +cairo_get_user_data () + + + + + + +Types and Values + + + + + +typedefcairo_t +enumcairo_antialias_t +enumcairo_fill_rule_t +enumcairo_line_cap_t +enumcairo_line_join_t +enumcairo_operator_t +cairo_rectangle_t +cairo_rectangle_list_t + + + + + + +Object Hierarchy + + + -typedef cairo_t; -cairo_t * cairo_create (cairo_surface_t *target); -cairo_t * cairo_reference (cairo_t *cr); -void cairo_destroy (cairo_t *cr); -cairo_status_t cairo_status (cairo_t *cr); -void cairo_save (cairo_t *cr); -void cairo_restore (cairo_t *cr); -cairo_surface_t * cairo_get_target (cairo_t *cr); -void cairo_push_group (cairo_t *cr); -void cairo_push_group_with_content (cairo_t *cr, - cairo_content_t content); -cairo_pattern_t * cairo_pop_group (cairo_t *cr); -void cairo_pop_group_to_source (cairo_t *cr); -cairo_surface_t * cairo_get_group_target (cairo_t *cr); -void cairo_set_source_rgb (cairo_t *cr, - double red, - double green, - double blue); -void cairo_set_source_rgba (cairo_t *cr, - double red, - double green, - double blue, - double alpha); -void cairo_set_source (cairo_t *cr, - cairo_pattern_t *source); -void cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y); -cairo_pattern_t * cairo_get_source (cairo_t *cr); -enum cairo_antialias_t; -void cairo_set_antialias (cairo_t *cr, - cairo_antialias_t antialias); -cairo_antialias_t cairo_get_antialias (cairo_t *cr); -void cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset); -int cairo_get_dash_count (cairo_t *cr); -void cairo_get_dash (cairo_t *cr, - double *dashes, - double *offset); -enum cairo_fill_rule_t; -void cairo_set_fill_rule (cairo_t *cr, - cairo_fill_rule_t fill_rule); -cairo_fill_rule_t cairo_get_fill_rule (cairo_t *cr); -enum cairo_line_cap_t; -void cairo_set_line_cap (cairo_t *cr, - cairo_line_cap_t line_cap); -cairo_line_cap_t cairo_get_line_cap (cairo_t *cr); -enum cairo_line_join_t; -void cairo_set_line_join (cairo_t *cr, - cairo_line_join_t line_join); -cairo_line_join_t cairo_get_line_join (cairo_t *cr); -void cairo_set_line_width (cairo_t *cr, - double width); -double cairo_get_line_width (cairo_t *cr); -void cairo_set_miter_limit (cairo_t *cr, - double limit); -double cairo_get_miter_limit (cairo_t *cr); -enum cairo_operator_t; -void cairo_set_operator (cairo_t *cr, - cairo_operator_t op); -cairo_operator_t cairo_get_operator (cairo_t *cr); -void cairo_set_tolerance (cairo_t *cr, - double tolerance); -double cairo_get_tolerance (cairo_t *cr); -void cairo_clip (cairo_t *cr); -void cairo_clip_preserve (cairo_t *cr); -void cairo_clip_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); -cairo_bool_t cairo_in_clip (cairo_t *cr, - double x, - double y); -void cairo_reset_clip (cairo_t *cr); - cairo_rectangle_t; - cairo_rectangle_list_t; -void cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); -cairo_rectangle_list_t * cairo_copy_clip_rectangle_list (cairo_t *cr); -void cairo_fill (cairo_t *cr); -void cairo_fill_preserve (cairo_t *cr); -void cairo_fill_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); -cairo_bool_t cairo_in_fill (cairo_t *cr, - double x, - double y); -void cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern); -void cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y); -void cairo_paint (cairo_t *cr); -void cairo_paint_with_alpha (cairo_t *cr, - double alpha); -void cairo_stroke (cairo_t *cr); -void cairo_stroke_preserve (cairo_t *cr); -void cairo_stroke_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); -cairo_bool_t cairo_in_stroke (cairo_t *cr, - double x, - double y); -void cairo_copy_page (cairo_t *cr); -void cairo_show_page (cairo_t *cr); -unsigned int cairo_get_reference_count (cairo_t *cr); -cairo_status_t cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); -void * cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key); - - Description - -cairo_t is the main object used when drawing with cairo. To +cairo_t is the main object used when drawing with cairo. To draw with cairo, you create a cairo_t, set the target surface, and drawing options for the cairo_t, create shapes with functions like cairo_move_to() and cairo_line_to(), and then -draw shapes with cairo_stroke() or cairo_fill(). - - -cairo_t's can be pushed to a stack via cairo_save(). +draw shapes with cairo_stroke() or cairo_fill(). +cairo_t's can be pushed to a stack via cairo_save(). They may then safely be changed, without losing the current state. -Use cairo_restore() to restore to the saved state. - +Use cairo_restore() to restore to the saved state. + - -Details - -cairo_t -cairo_t -typedef struct _cairo cairo_t; - - -A cairo_t contains the current state of the rendering device, -including coordinates of yet to be drawn shapes. - - -Cairo contexts, as cairo_t objects are named, are central to -cairo and all drawing with cairo is always done to a cairo_t -object. - - -Memory management of cairo_t is done with -cairo_reference() and cairo_destroy(). -Since 1.0 + +Functions -cairo_create () +cairo_create () cairo_create -cairo_t * cairo_create (cairo_surface_t *target); - -Creates a new cairo_t with all graphics state parameters set to -default values and with target as a target surface. The target +cairo_t * +cairo_create (cairo_surface_t *target); +Creates a new cairo_t with all graphics state parameters set to +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). - - -This function references target, so you can immediately +variant). +This function references target +, so you can immediately call cairo_surface_destroy() on it if you don't need to -maintain a separate reference to it. - -target : -target surface for the context -Returns :a newly allocated cairo_t with a reference +maintain a separate reference to it. + +Parameters + + + + + + +target +target surface for the context + + + +Returns + a newly allocated cairo_t with a reference count of 1. The initial reference count should be released with cairo_destroy() when you are done using the cairo_t. This function never returns NULL. If memory cannot be @@ -205,140 +228,195 @@ you attempt to target a surface which does not support writing (such as cairo_mime_surface_t) then a CAIRO_STATUS_WRITE_ERROR will be raised. You can use this -object normally, but no drawing will be done. -Since 1.0 +object normally, but no drawing will be done. + +Since 1.0 -cairo_reference () +cairo_reference () cairo_reference -cairo_t * cairo_reference (cairo_t *cr); - -Increases the reference count on cr by one. This prevents -cr from being destroyed until a matching call to cairo_destroy() -is made. - - -The number of references to a cairo_t can be get using -cairo_get_reference_count(). - -cr : -a cairo_t -Returns :the referenced cairo_t. -Since 1.0 +cairo_t * +cairo_reference (cairo_t *cr); +Increases the reference count on cr + by one. This prevents +cr + from being destroyed until a matching call to cairo_destroy() +is made. +The number of references to a cairo_t can be get using +cairo_get_reference_count(). + +Parameters + + + + + + +cr +a cairo_t + + + +Returns + the referenced cairo_t. + +Since 1.0 -cairo_destroy () +cairo_destroy () cairo_destroy -void cairo_destroy (cairo_t *cr); - -Decreases the reference count on cr by one. If the result -is zero, then cr and all associated resources are freed. -See cairo_reference(). - -cr : -a cairo_t -Since 1.0 +void +cairo_destroy (cairo_t *cr); +Decreases the reference count on cr + by one. If the result +is zero, then cr + and all associated resources are freed. +See cairo_reference(). + +Parameters + + + + + + +cr +a cairo_t + + +Since 1.0 -cairo_status () +cairo_status () cairo_status -cairo_status_t cairo_status (cairo_t *cr); - -Checks whether an error has previously occurred for this context. - -cr : -a cairo context -Returns :the current status of this context, see cairo_status_t -Since 1.0 +cairo_status_t +cairo_status (cairo_t *cr); +Checks whether an error has previously occurred for this context. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current status of this context, see cairo_status_t + +Since 1.0 -cairo_save () +cairo_save () cairo_save -void cairo_save (cairo_t *cr); - -Makes a copy of the current state of cr and saves it -on an internal stack of saved states for cr. When -cairo_restore() is called, cr will be restored to +void +cairo_save (cairo_t *cr); +Makes a copy of the current state of cr + and saves it +on an internal stack of saved states for cr +. When +cairo_restore() is called, cr + will be restored to the saved state. Multiple calls to cairo_save() and cairo_restore() can be nested; each call to cairo_restore() -restores the state from the matching paired cairo_save(). - - -It isn't necessary to clear all saved states before +restores the state from the matching paired cairo_save(). +It isn't necessary to clear all saved states before a cairo_t is freed. If the reference count of a cairo_t drops to zero in response to a call to cairo_destroy(), -any saved states will be freed along with the cairo_t. - -cr : -a cairo_t -Since 1.0 +any saved states will be freed along with the cairo_t. + +Parameters + + + + + + +cr +a cairo_t + + +Since 1.0 -cairo_restore () +cairo_restore () cairo_restore -void cairo_restore (cairo_t *cr); - -Restores cr to the state saved by a preceding call to +void +cairo_restore (cairo_t *cr); +Restores cr + to the state saved by a preceding call to cairo_save() and removes that state from the stack of -saved states. - -cr : -a cairo_t -Since 1.0 +saved states. + +Parameters + + + + + + +cr +a cairo_t + + +Since 1.0 -cairo_get_target () +cairo_get_target () cairo_get_target -cairo_surface_t * cairo_get_target (cairo_t *cr); - -Gets the target surface for the cairo context as passed to -cairo_create(). - - -This function will always return a valid pointer, but the result -can be a "nil" surface if cr is already in an error state, +cairo_surface_t * +cairo_get_target (cairo_t *cr); +Gets the target surface for the cairo context as passed to +cairo_create(). +This function will always return a valid pointer, but the result +can be a "nil" surface if cr + is already in an error state, (ie. cairo_status() != CAIRO_STATUS_SUCCESS). A nil surface is indicated by cairo_surface_status() -!= CAIRO_STATUS_SUCCESS. - -cr : -a cairo context -Returns :the target surface. This object is owned by cairo. To -keep a reference to it, you must call cairo_surface_reference(). -Since 1.0 +!= CAIRO_STATUS_SUCCESS. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the target surface. This object is owned by cairo. To +keep a reference to it, you must call cairo_surface_reference(). + +Since 1.0 -cairo_push_group () +cairo_push_group () cairo_push_group -void cairo_push_group (cairo_t *cr); - -Temporarily redirects drawing to an intermediate surface known as a +void +cairo_push_group (cairo_t *cr); +Temporarily redirects drawing to an intermediate surface known as a group. The redirection lasts until the group is completed by a call to cairo_pop_group() or cairo_pop_group_to_source(). These calls provide the result of any drawing to the group as a pattern, -(either as an explicit object, or set as the source pattern). - - -This group functionality can be convenient for performing +(either as an explicit object, or set as the source pattern). +This group functionality can be convenient for performing intermediate compositing. One common use of a group is to render objects as opaque within the group, (so that they occlude each other), and then blend the result with translucence onto the -destination. - - -Groups can be nested arbitrarily deep by making balanced calls to +destination. +Groups can be nested arbitrarily deep by making balanced calls to cairo_push_group()/cairo_pop_group(). Each call pushes/pops the new -target group onto/from a stack. - - -The cairo_push_group() function calls cairo_save() so that any +target group onto/from a stack. +The cairo_push_group() function calls cairo_save() so that any changes to the graphics state will not be visible outside the -group, (the pop_group functions call cairo_restore()). - - -By default the intermediate group will have a content type of +group, (the pop_group functions call cairo_restore()). +By default the intermediate group will have a content type of CAIRO_CONTENT_COLOR_ALPHA. Other content types can be chosen for -the group by using cairo_push_group_with_content() instead. - - -As an example, here is how one might fill and stroke a path with +the group by using cairo_push_group_with_content() instead. +As an example, here is how one might fill and stroke a path with translucence, but without any portion of the fill being visible -under the stroke: - - +under the stroke: cairo_push_group (cr); cairo_set_source (cr, fill_pattern); @@ -348,1627 +426,2150 @@ cairo_pop_group_to_source (cr); cairo_paint_with_alpha (cr, alpha); - -cr : -a cairo context -Since 1.2 + +Parameters + + + + + + +cr +a cairo context + + +Since 1.2 -cairo_push_group_with_content () +cairo_push_group_with_content () cairo_push_group_with_content -void cairo_push_group_with_content (cairo_t *cr, - cairo_content_t content); - -Temporarily redirects drawing to an intermediate surface known as a +void +cairo_push_group_with_content (cairo_t *cr, + cairo_content_t content); +Temporarily redirects drawing to an intermediate surface known as a group. The redirection lasts until the group is completed by a call to cairo_pop_group() or cairo_pop_group_to_source(). These calls provide the result of any drawing to the group as a pattern, -(either as an explicit object, or set as the source pattern). - - -The group will have a content type of content. The ability to +(either as an explicit object, or set as the source pattern). +The group will have a content type of content +. The ability to control this content type is the only distinction between this function and cairo_push_group() which you should see for a more -detailed description of group rendering. - -cr : -a cairo context -content : -a cairo_content_t indicating the type of group that -will be created -Since 1.2 +detailed description of group rendering. + +Parameters + + + + + + +cr +a cairo context + +content +a cairo_content_t indicating the type of group that +will be created + + +Since 1.2 -cairo_pop_group () +cairo_pop_group () cairo_pop_group -cairo_pattern_t * cairo_pop_group (cairo_t *cr); - -Terminates the redirection begun by a call to cairo_push_group() or +cairo_pattern_t * +cairo_pop_group (cairo_t *cr); +Terminates the redirection begun by a call to cairo_push_group() or cairo_push_group_with_content() and returns a new pattern containing the results of all drawing operations performed to the -group. - - -The cairo_pop_group() function calls cairo_restore(), (balancing a +group. +The cairo_pop_group() function calls cairo_restore(), (balancing a call to cairo_save() by the push_group function), so that any changes to the graphics state will not be visible outside the -group. - -cr : -a cairo context -Returns :a newly created (surface) pattern containing the +group. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + a newly created (surface) pattern containing the results of all drawing operations performed to the group. The caller owns the returned object and should call -cairo_pattern_destroy() when finished with it. -Since 1.2 +cairo_pattern_destroy() when finished with it. + +Since 1.2 -cairo_pop_group_to_source () +cairo_pop_group_to_source () cairo_pop_group_to_source -void cairo_pop_group_to_source (cairo_t *cr); - -Terminates the redirection begun by a call to cairo_push_group() or +void +cairo_pop_group_to_source (cairo_t *cr); +Terminates the redirection begun by a call to cairo_push_group() or cairo_push_group_with_content() and installs the resulting pattern -as the source pattern in the given cairo context. - - -The behavior of this function is equivalent to the sequence of -operations: - - +as the source pattern in the given cairo context. +The behavior of this function is equivalent to the sequence of +operations: cairo_pattern_t *group = cairo_pop_group (cr); cairo_set_source (cr, group); cairo_pattern_destroy (group); - - -but is more convenient as their is no need for a variable to store -the short-lived pointer to the pattern. - - -The cairo_pop_group() function calls cairo_restore(), (balancing a +but is more convenient as their is no need for a variable to store +the short-lived pointer to the pattern. +The cairo_pop_group() function calls cairo_restore(), (balancing a call to cairo_save() by the push_group function), so that any changes to the graphics state will not be visible outside the -group. - -cr : -a cairo context -Since 1.2 +group. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.2 -cairo_get_group_target () +cairo_get_group_target () cairo_get_group_target -cairo_surface_t * cairo_get_group_target (cairo_t *cr); - -Gets the current destination surface for the context. This is either +cairo_surface_t * +cairo_get_group_target (cairo_t *cr); +Gets the current destination surface for the context. This is either the original target surface as passed to cairo_create() or the target surface for the current group as started by the most recent call to -cairo_push_group() or cairo_push_group_with_content(). - - -This function will always return a valid pointer, but the result -can be a "nil" surface if cr is already in an error state, +cairo_push_group() or cairo_push_group_with_content(). +This function will always return a valid pointer, but the result +can be a "nil" surface if cr + is already in an error state, (ie. cairo_status() != CAIRO_STATUS_SUCCESS). A nil surface is indicated by cairo_surface_status() -!= CAIRO_STATUS_SUCCESS. - -cr : -a cairo context -Returns :the target surface. This object is owned by cairo. To -keep a reference to it, you must call cairo_surface_reference(). -Since 1.2 +!= CAIRO_STATUS_SUCCESS. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the target surface. This object is owned by cairo. To +keep a reference to it, you must call cairo_surface_reference(). + +Since 1.2 -cairo_set_source_rgb () +cairo_set_source_rgb () cairo_set_source_rgb -void cairo_set_source_rgb (cairo_t *cr, - double red, - double green, - double blue); - -Sets the source pattern within cr to an opaque color. This opaque +void +cairo_set_source_rgb (cairo_t *cr, + double red, + double green, + double blue); +Sets the source pattern within cr + to an opaque color. This opaque color will then be used for any subsequent drawing operation until -a new source pattern is set. - - -The color components are floating point numbers in the range 0 to -1. If the values passed in are outside that range, they will be -clamped. - - -The default source pattern is opaque black, (that is, it is -equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)). - -cr : -a cairo context -red : -red component of color -green : -green component of color -blue : -blue component of color -Since 1.0 +a new source pattern is set. +The color components are floating point numbers in the range 0 to + + +If the values passed in are outside that range, they will be +clamped. + + +The default source pattern is opaque black, (that is, it is +equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)). + +Parameters + + + + + + +cr +a cairo context + +red +red component of color + +green +green component of color + +blue +blue component of color + + +Since 1.0 -cairo_set_source_rgba () +cairo_set_source_rgba () cairo_set_source_rgba -void cairo_set_source_rgba (cairo_t *cr, - double red, - double green, - double blue, - double alpha); - -Sets the source pattern within cr to a translucent color. This +void +cairo_set_source_rgba (cairo_t *cr, + double red, + double green, + double blue, + double alpha); +Sets the source pattern within cr + to a translucent color. This color will then be used for any subsequent drawing operation until -a new source pattern is set. - - -The color and alpha components are floating point numbers in the +a new source pattern is set. +The color and alpha components are floating point numbers in the range 0 to 1. If the values passed in are outside that range, they -will be clamped. - - -The default source pattern is opaque black, (that is, it is -equivalent to cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0)). - -cr : -a cairo context -red : -red component of color -green : -green component of color -blue : -blue component of color -alpha : -alpha component of color -Since 1.0 +will be clamped. +The default source pattern is opaque black, (that is, it is +equivalent to cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 1.0)). + +Parameters + + + + + + +cr +a cairo context + +red +red component of color + +green +green component of color + +blue +blue component of color + +alpha +alpha component of color + + +Since 1.0 -cairo_set_source () +cairo_set_source () cairo_set_source -void cairo_set_source (cairo_t *cr, - cairo_pattern_t *source); - -Sets the source pattern within cr to source. This pattern +void +cairo_set_source (cairo_t *cr, + cairo_pattern_t *source); +Sets the source pattern within cr + to source +. This pattern will then be used for any subsequent drawing operation until a new -source pattern is set. - - -Note: The pattern's transformation matrix will be locked to the +source pattern is set. +Note: The pattern's transformation matrix will be locked to the user space in effect at the time of cairo_set_source(). This means that further modifications of the current transformation matrix -will not affect the source pattern. See cairo_pattern_set_matrix(). - - -The default source pattern is a solid pattern that is opaque black, +will not affect the source pattern. See cairo_pattern_set_matrix(). +The default source pattern is a solid pattern that is opaque black, (that is, it is equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, -0.0)). - -cr : -a cairo context -source : -a cairo_pattern_t to be used as the source for -subsequent drawing operations. -Since 1.0 +0.0)). + +Parameters + + + + + + +cr +a cairo context + +source +a cairo_pattern_t to be used as the source for +subsequent drawing operations. + + +Since 1.0 -cairo_set_source_surface () +cairo_set_source_surface () cairo_set_source_surface -void cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y); - -This is a convenience function for creating a pattern from surface -and setting it as the source in cr with cairo_set_source(). - - -The x and y parameters give the user-space coordinate at which +void +cairo_set_source_surface (cairo_t *cr, + cairo_surface_t *surface, + double x, + double y); +This is a convenience function for creating a pattern from surface + +and setting it as the source in cr + with cairo_set_source(). +The x + and y + parameters give the user-space coordinate at which the surface origin should appear. (The surface origin is its upper-left corner before any transformation has been applied.) The -x and y parameters are negated and then set as translation values -in the pattern matrix. - - -Other than the initial translation pattern matrix, as described +x + and y + parameters are negated and then set as translation values +in the pattern matrix. +Other than the initial translation pattern matrix, as described above, all other pattern attributes, (such as its extend mode), are set to the default values as in cairo_pattern_create_for_surface(). The resulting pattern can be queried with cairo_get_source() so that these attributes can be modified if desired, (eg. to create a -repeating pattern with cairo_pattern_set_extend()). - -cr : -a cairo context -surface : -a surface to be used to set the source pattern -x : -User-space X coordinate for surface origin -y : -User-space Y coordinate for surface origin -Since 1.0 +repeating pattern with cairo_pattern_set_extend()). + +Parameters + + + + + + +cr +a cairo context + +surface +a surface to be used to set the source pattern + +x +User-space X coordinate for surface origin + +y +User-space Y coordinate for surface origin + + +Since 1.0 -cairo_get_source () +cairo_get_source () cairo_get_source -cairo_pattern_t * cairo_get_source (cairo_t *cr); - -Gets the current source pattern for cr. - -cr : -a cairo context -Returns :the current source pattern. This object is owned by +cairo_pattern_t * +cairo_get_source (cairo_t *cr); +Gets the current source pattern for cr +. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current source pattern. This object is owned by cairo. To keep a reference to it, you must call -cairo_pattern_reference(). -Since 1.0 - -enum cairo_antialias_t -cairo_antialias_t -typedef enum { - CAIRO_ANTIALIAS_DEFAULT, - - /* method */ - CAIRO_ANTIALIAS_NONE, - CAIRO_ANTIALIAS_GRAY, - CAIRO_ANTIALIAS_SUBPIXEL, - - /* hints */ - CAIRO_ANTIALIAS_FAST, - CAIRO_ANTIALIAS_GOOD, - CAIRO_ANTIALIAS_BEST -} cairo_antialias_t; - - -Specifies the type of antialiasing to do when rendering text or shapes. - - -As it is not necessarily clear from the above what advantages a particular -antialias method provides, since 1.12, there is also a set of hints: -CAIRO_ANTIALIAS_FAST: Allow the backend to degrade raster quality for speed -CAIRO_ANTIALIAS_GOOD: A balance between speed and quality -CAIRO_ANTIALIAS_BEST: A high-fidelity, but potentially slow, raster mode - - -These make no guarantee on how the backend will perform its rasterisation -(if it even rasterises!), nor that they have any differing effect other -than to enable some form of antialiasing. In the case of glyph rendering, -CAIRO_ANTIALIAS_FAST and CAIRO_ANTIALIAS_GOOD will be mapped to -CAIRO_ANTIALIAS_GRAY, with CAIRO_ANTALIAS_BEST being equivalent to -CAIRO_ANTIALIAS_SUBPIXEL. - - -The interpretation of CAIRO_ANTIALIAS_DEFAULT is left entirely up to -the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD. - - -CAIRO_ANTIALIAS_DEFAULT -Use the default antialiasing for - the subsystem and target device, since 1.0 - - - -CAIRO_ANTIALIAS_NONE -Use a bilevel alpha mask, since 1.0 - - - -CAIRO_ANTIALIAS_GRAY -Perform single-color antialiasing (using - shades of gray for black text on a white background, for example), since 1.0 - - - -CAIRO_ANTIALIAS_SUBPIXEL -Perform antialiasing by taking - advantage of the order of subpixel elements on devices - such as LCD panels, since 1.0 - - - -CAIRO_ANTIALIAS_FAST -Hint that the backend should perform some -antialiasing but prefer speed over quality, since 1.12 - - - -CAIRO_ANTIALIAS_GOOD -The backend should balance quality against -performance, since 1.12 - - - -CAIRO_ANTIALIAS_BEST -Hint that the backend should render at the highest -quality, sacrificing speed if necessary, since 1.12 - - -Since 1.0 +cairo_pattern_reference(). + +Since 1.0 -cairo_set_antialias () +cairo_set_antialias () cairo_set_antialias -void cairo_set_antialias (cairo_t *cr, - cairo_antialias_t antialias); - -Set the antialiasing mode of the rasterizer used for drawing shapes. +void +cairo_set_antialias (cairo_t *cr, + cairo_antialias_t antialias); +Set the antialiasing mode of the rasterizer used for drawing shapes. This value is a hint, and a particular backend may or may not support a particular value. At the current time, no backend supports -CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes. - - -Note that this option does not affect text rendering, instead see -cairo_font_options_set_antialias(). - -cr : -a cairo_t -antialias : -the new antialiasing mode -Since 1.0 +CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes. +Note that this option does not affect text rendering, instead see +cairo_font_options_set_antialias(). + +Parameters + + + + + + +cr +a cairo_t + +antialias +the new antialiasing mode + + +Since 1.0 -cairo_get_antialias () +cairo_get_antialias () cairo_get_antialias -cairo_antialias_t cairo_get_antialias (cairo_t *cr); - -Gets the current shape antialiasing mode, as set by -cairo_set_antialias(). - -cr : -a cairo context -Returns :the current shape antialiasing mode. -Since 1.0 +cairo_antialias_t +cairo_get_antialias (cairo_t *cr); +Gets the current shape antialiasing mode, as set by +cairo_set_antialias(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current shape antialiasing mode. + +Since 1.0 -cairo_set_dash () +cairo_set_dash () cairo_set_dash -void cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset); - -Sets the dash pattern to be used by cairo_stroke(). A dash pattern -is specified by dashes, an array of positive values. Each value +void +cairo_set_dash (cairo_t *cr, + const double *dashes, + int num_dashes, + double offset); +Sets the dash pattern to be used by cairo_stroke(). A dash pattern +is specified by dashes +, an array of positive values. Each value provides the length of alternate "on" and "off" portions of the -stroke. The offset specifies an offset into the pattern at which -the stroke begins. - - -Each "on" segment will have caps applied as if the segment were a +stroke. The offset + specifies an offset into the pattern at which +the stroke begins. +Each "on" segment will have caps applied as if the segment were a separate sub-path. In particular, it is valid to use an "on" length of 0.0 with CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE in order -to distributed dots or squares along a path. - - -Note: The length values are in user-space units as evaluated at the +to distributed dots or squares along a path. +Note: The length values are in user-space units as evaluated at the time of stroking. This is not necessarily the same as the user -space at the time of cairo_set_dash(). - - -If num_dashes is 0 dashing is disabled. - - -If num_dashes is 1 a symmetric pattern is assumed with alternating +space at the time of cairo_set_dash(). +If num_dashes + is 0 dashing is disabled. +If num_dashes + is 1 a symmetric pattern is assumed with alternating on and off portions of the size specified by the single value in -dashes. - - -If any value in dashes is negative, or if all values are 0, then -cr will be put into an error state with a status of -CAIRO_STATUS_INVALID_DASH. - -cr : -a cairo context -dashes : -an array specifying alternate lengths of on and off stroke portions -num_dashes : -the length of the dashes array -offset : -an offset into the dash pattern at which the stroke should start -Since 1.0 +dashes +. +If any value in dashes + is negative, or if all values are 0, then +cr + will be put into an error state with a status of +CAIRO_STATUS_INVALID_DASH. + +Parameters + + + + + + +cr +a cairo context + +dashes +an array specifying alternate lengths of on and off stroke portions + +num_dashes +the length of the dashes array + +offset +an offset into the dash pattern at which the stroke should start + + +Since 1.0 -cairo_get_dash_count () +cairo_get_dash_count () cairo_get_dash_count -int cairo_get_dash_count (cairo_t *cr); - -This function returns the length of the dash array in cr (0 if dashing -is not currently in effect). - - -See also cairo_set_dash() and cairo_get_dash(). - -cr : -a cairo_t -Returns :the length of the dash array, or 0 if no dash array set. -Since 1.4 +int +cairo_get_dash_count (cairo_t *cr); +This function returns the length of the dash array in cr + (0 if dashing +is not currently in effect). +See also cairo_set_dash() and cairo_get_dash(). + +Parameters + + + + + + +cr +a cairo_t + + + +Returns + the length of the dash array, or 0 if no dash array set. + +Since 1.4 -cairo_get_dash () +cairo_get_dash () cairo_get_dash -void cairo_get_dash (cairo_t *cr, - double *dashes, - double *offset); - -Gets the current dash array. If not NULL, dashes should be big +void +cairo_get_dash (cairo_t *cr, + double *dashes, + double *offset); +Gets the current dash array. If not NULL, dashes + should be big enough to hold at least the number of values returned by -cairo_get_dash_count(). - -cr : -a cairo_t -dashes : -return value for the dash array, or NULL -offset : -return value for the current dash offset, or NULL -Since 1.4 - -enum cairo_fill_rule_t -cairo_fill_rule_t -typedef enum { - CAIRO_FILL_RULE_WINDING, - CAIRO_FILL_RULE_EVEN_ODD -} cairo_fill_rule_t; - - -cairo_fill_rule_t is used to select how paths are filled. For both -fill rules, whether or not a point is included in the fill is -determined by taking a ray from that point to infinity and looking -at intersections with the path. The ray can be in any direction, -as long as it doesn't pass through the end point of a segment -or have a tricky intersection such as intersecting tangent to the path. -(Note that filling is not actually implemented in this way. This -is just a description of the rule that is applied.) - - -The default fill rule is CAIRO_FILL_RULE_WINDING. - - -New entries may be added in future versions. - - -CAIRO_FILL_RULE_WINDING -If the path crosses the ray from -left-to-right, counts +1. If the path crosses the ray -from right to left, counts -1. (Left and right are determined -from the perspective of looking along the ray from the starting -point.) If the total count is non-zero, the point will be filled. (Since 1.0) - - - -CAIRO_FILL_RULE_EVEN_ODD -Counts the total number of -intersections, without regard to the orientation of the contour. If -the total number of intersections is odd, the point will be -filled. (Since 1.0) - - -Since 1.0 +cairo_get_dash_count(). + +Parameters + + + + + + +cr +a cairo_t + +dashes +return value for the dash array, or NULL + +offset +return value for the current dash offset, or NULL + + +Since 1.4 -cairo_set_fill_rule () +cairo_set_fill_rule () cairo_set_fill_rule -void cairo_set_fill_rule (cairo_t *cr, - cairo_fill_rule_t fill_rule); - -Set the current fill rule within the cairo context. The fill rule +void +cairo_set_fill_rule (cairo_t *cr, + cairo_fill_rule_t fill_rule); +Set the current fill rule within the cairo context. The fill rule is used to determine which regions are inside or outside a complex (potentially self-intersecting) path. The current fill rule affects both cairo_fill() and cairo_clip(). See cairo_fill_rule_t for details -on the semantics of each available fill rule. - - -The default fill rule is CAIRO_FILL_RULE_WINDING. - -cr : -a cairo_t -fill_rule : -a fill rule, specified as a cairo_fill_rule_t -Since 1.0 +on the semantics of each available fill rule. +The default fill rule is CAIRO_FILL_RULE_WINDING. + +Parameters + + + + + + +cr +a cairo_t + +fill_rule +a fill rule, specified as a cairo_fill_rule_t + + +Since 1.0 -cairo_get_fill_rule () +cairo_get_fill_rule () cairo_get_fill_rule -cairo_fill_rule_t cairo_get_fill_rule (cairo_t *cr); - -Gets the current fill rule, as set by cairo_set_fill_rule(). - -cr : -a cairo context -Returns :the current fill rule. -Since 1.0 - -enum cairo_line_cap_t -cairo_line_cap_t -typedef enum { - CAIRO_LINE_CAP_BUTT, - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_CAP_SQUARE -} cairo_line_cap_t; - - -Specifies how to render the endpoints of the path when stroking. - - -The default line cap style is CAIRO_LINE_CAP_BUTT. - - -CAIRO_LINE_CAP_BUTT -start(stop) the line exactly at the start(end) point (Since 1.0) - - - -CAIRO_LINE_CAP_ROUND -use a round ending, the center of the circle is the end point (Since 1.0) - - - -CAIRO_LINE_CAP_SQUARE -use squared ending, the center of the square is the end point (Since 1.0) - - -Since 1.0 +cairo_fill_rule_t +cairo_get_fill_rule (cairo_t *cr); +Gets the current fill rule, as set by cairo_set_fill_rule(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current fill rule. + +Since 1.0 -cairo_set_line_cap () +cairo_set_line_cap () cairo_set_line_cap -void cairo_set_line_cap (cairo_t *cr, - cairo_line_cap_t line_cap); - -Sets the current line cap style within the cairo context. See +void +cairo_set_line_cap (cairo_t *cr, + cairo_line_cap_t line_cap); +Sets the current line cap style within the cairo context. See cairo_line_cap_t for details about how the available line cap -styles are drawn. - - -As with the other stroke parameters, the current line cap style is +styles are drawn. +As with the other stroke parameters, the current line cap style is examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. - - -The default line cap style is CAIRO_LINE_CAP_BUTT. - -cr : -a cairo context -line_cap : -a line cap style -Since 1.0 +construction. +The default line cap style is CAIRO_LINE_CAP_BUTT. + +Parameters + + + + + + +cr +a cairo context + +line_cap +a line cap style + + +Since 1.0 -cairo_get_line_cap () +cairo_get_line_cap () cairo_get_line_cap -cairo_line_cap_t cairo_get_line_cap (cairo_t *cr); - -Gets the current line cap style, as set by cairo_set_line_cap(). - -cr : -a cairo context -Returns :the current line cap style. -Since 1.0 - -enum cairo_line_join_t -cairo_line_join_t -typedef enum { - CAIRO_LINE_JOIN_MITER, - CAIRO_LINE_JOIN_ROUND, - CAIRO_LINE_JOIN_BEVEL -} cairo_line_join_t; - - -Specifies how to render the junction of two lines when stroking. - - -The default line join style is CAIRO_LINE_JOIN_MITER. - - -CAIRO_LINE_JOIN_MITER -use a sharp (angled) corner, see -cairo_set_miter_limit() (Since 1.0) - - - -CAIRO_LINE_JOIN_ROUND -use a rounded join, the center of the circle is the -joint point (Since 1.0) - - - -CAIRO_LINE_JOIN_BEVEL -use a cut-off join, the join is cut off at half -the line width from the joint point (Since 1.0) - - -Since 1.0 +cairo_line_cap_t +cairo_get_line_cap (cairo_t *cr); +Gets the current line cap style, as set by cairo_set_line_cap(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current line cap style. + +Since 1.0 -cairo_set_line_join () +cairo_set_line_join () cairo_set_line_join -void cairo_set_line_join (cairo_t *cr, - cairo_line_join_t line_join); - -Sets the current line join style within the cairo context. See +void +cairo_set_line_join (cairo_t *cr, + cairo_line_join_t line_join); +Sets the current line join style within the cairo context. See cairo_line_join_t for details about how the available line join -styles are drawn. - - -As with the other stroke parameters, the current line join style is +styles are drawn. +As with the other stroke parameters, the current line join style is examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. - - -The default line join style is CAIRO_LINE_JOIN_MITER. - -cr : -a cairo context -line_join : -a line join style -Since 1.0 +construction. +The default line join style is CAIRO_LINE_JOIN_MITER. + +Parameters + + + + + + +cr +a cairo context + +line_join +a line join style + + +Since 1.0 -cairo_get_line_join () +cairo_get_line_join () cairo_get_line_join -cairo_line_join_t cairo_get_line_join (cairo_t *cr); - -Gets the current line join style, as set by cairo_set_line_join(). - -cr : -a cairo context -Returns :the current line join style. -Since 1.0 +cairo_line_join_t +cairo_get_line_join (cairo_t *cr); +Gets the current line join style, as set by cairo_set_line_join(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current line join style. + +Since 1.0 -cairo_set_line_width () +cairo_set_line_width () cairo_set_line_width -void cairo_set_line_width (cairo_t *cr, - double width); - -Sets the current line width within the cairo context. The line +void +cairo_set_line_width (cairo_t *cr, + double width); +Sets the current line width within the cairo context. The line width value specifies the diameter of a pen that is circular in user space, (though device-space pen may be an ellipse in general -due to scaling/shear/rotation of the CTM). - - -Note: When the description above refers to user space and CTM it +due to scaling/shear/rotation of the CTM). +Note: When the description above refers to user space and CTM it refers to the user space and CTM in effect at the time of the stroking operation, not the user space and CTM in effect at the time of the call to cairo_set_line_width(). The simplest usage makes both of these spaces identical. That is, if there is no change to the CTM between a call to cairo_set_line_width() and the stroking operation, then one can just pass user-space values to -cairo_set_line_width() and ignore this note. - - -As with the other stroke parameters, the current line width is +cairo_set_line_width() and ignore this note. +As with the other stroke parameters, the current line width is examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. - - -The default line width value is 2.0. - -cr : -a cairo_t -width : -a line width -Since 1.0 +construction. +The default line width value is 2.0. + +Parameters + + + + + + +cr +a cairo_t + +width +a line width + + +Since 1.0 -cairo_get_line_width () +cairo_get_line_width () cairo_get_line_width -double cairo_get_line_width (cairo_t *cr); - -This function returns the current line width value exactly as set by +double +cairo_get_line_width (cairo_t *cr); +This function returns the current line width value exactly as set by cairo_set_line_width(). Note that the value is unchanged even if the CTM has changed between the calls to cairo_set_line_width() and -cairo_get_line_width(). - -cr : -a cairo context -Returns :the current line width. -Since 1.0 +cairo_get_line_width(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current line width. + +Since 1.0 -cairo_set_miter_limit () +cairo_set_miter_limit () cairo_set_miter_limit -void cairo_set_miter_limit (cairo_t *cr, - double limit); - -Sets the current miter limit within the cairo context. - - -If the current line join style is set to CAIRO_LINE_JOIN_MITER +void +cairo_set_miter_limit (cairo_t *cr, + double limit); +Sets the current miter limit within the cairo context. +If the current line join style is set to CAIRO_LINE_JOIN_MITER (see cairo_set_line_join()), the miter limit is used to determine whether the lines should be joined with a bevel instead of a miter. Cairo divides the length of the miter by the line width. If the result is greater than the miter limit, the style is -converted to a bevel. - - -As with the other stroke parameters, the current line miter limit is +converted to a bevel. +As with the other stroke parameters, the current line miter limit is examined by cairo_stroke(), cairo_stroke_extents(), and cairo_stroke_to_path(), but does not have any effect during path -construction. - - -The default miter limit value is 10.0, which will convert joins +construction. +The default miter limit value is 10.0, which will convert joins with interior angles less than 11 degrees to bevels instead of miters. For reference, a miter limit of 2.0 makes the miter cutoff at 60 degrees, and a miter limit of 1.414 makes the cutoff at 90 -degrees. - - -A miter limit for a desired angle can be computed as: miter limit = -1/sin(angle/2) - -cr : -a cairo context -limit : -miter limit to set -Since 1.0 +degrees. +A miter limit for a desired angle can be computed as: miter limit = +1/sin(angle/2) + +Parameters + + + + + + +cr +a cairo context + +limit +miter limit to set + + +Since 1.0 -cairo_get_miter_limit () +cairo_get_miter_limit () cairo_get_miter_limit -double cairo_get_miter_limit (cairo_t *cr); - -Gets the current miter limit, as set by cairo_set_miter_limit(). - -cr : -a cairo context -Returns :the current miter limit. -Since 1.0 - -enum cairo_operator_t -cairo_operator_t -typedef enum { - CAIRO_OPERATOR_CLEAR, - - CAIRO_OPERATOR_SOURCE, - CAIRO_OPERATOR_OVER, - CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_OUT, - CAIRO_OPERATOR_ATOP, - - CAIRO_OPERATOR_DEST, - CAIRO_OPERATOR_DEST_OVER, - CAIRO_OPERATOR_DEST_IN, - CAIRO_OPERATOR_DEST_OUT, - CAIRO_OPERATOR_DEST_ATOP, - - CAIRO_OPERATOR_XOR, - CAIRO_OPERATOR_ADD, - CAIRO_OPERATOR_SATURATE, - - CAIRO_OPERATOR_MULTIPLY, - CAIRO_OPERATOR_SCREEN, - CAIRO_OPERATOR_OVERLAY, - CAIRO_OPERATOR_DARKEN, - CAIRO_OPERATOR_LIGHTEN, - CAIRO_OPERATOR_COLOR_DODGE, - CAIRO_OPERATOR_COLOR_BURN, - CAIRO_OPERATOR_HARD_LIGHT, - CAIRO_OPERATOR_SOFT_LIGHT, - CAIRO_OPERATOR_DIFFERENCE, - CAIRO_OPERATOR_EXCLUSION, - CAIRO_OPERATOR_HSL_HUE, - CAIRO_OPERATOR_HSL_SATURATION, - CAIRO_OPERATOR_HSL_COLOR, - CAIRO_OPERATOR_HSL_LUMINOSITY -} cairo_operator_t; - - -cairo_operator_t is used to set the compositing operator for all cairo -drawing operations. - - -The default operator is CAIRO_OPERATOR_OVER. - - -The operators marked as unbounded modify their -destination even outside of the mask layer (that is, their effect is not -bound by the mask layer). However, their effect can still be limited by -way of clipping. - - -To keep things simple, the operator descriptions here -document the behavior for when both source and destination are either fully -transparent or fully opaque. The actual implementation works for -translucent layers too. -For a more detailed explanation of the effects of each operator, including -the mathematical definitions, see -http://cairographics.org/operators/. - - -CAIRO_OPERATOR_CLEAR -clear destination layer (bounded) (Since 1.0) - - - -CAIRO_OPERATOR_SOURCE -replace destination layer (bounded) (Since 1.0) - - - -CAIRO_OPERATOR_OVER -draw source layer on top of destination layer -(bounded) (Since 1.0) - - - -CAIRO_OPERATOR_IN -draw source where there was destination content -(unbounded) (Since 1.0) - - - -CAIRO_OPERATOR_OUT -draw source where there was no destination -content (unbounded) (Since 1.0) - - - -CAIRO_OPERATOR_ATOP -draw source on top of destination content and -only there (Since 1.0) - - - -CAIRO_OPERATOR_DEST -ignore the source (Since 1.0) - - - -CAIRO_OPERATOR_DEST_OVER -draw destination on top of source (Since 1.0) - - - -CAIRO_OPERATOR_DEST_IN -leave destination only where there was -source content (unbounded) (Since 1.0) - - - -CAIRO_OPERATOR_DEST_OUT -leave destination only where there was no -source content (Since 1.0) - - - -CAIRO_OPERATOR_DEST_ATOP -leave destination on top of source content -and only there (unbounded) (Since 1.0) - - - -CAIRO_OPERATOR_XOR -source and destination are shown where there is only -one of them (Since 1.0) - - - -CAIRO_OPERATOR_ADD -source and destination layers are accumulated (Since 1.0) - - - -CAIRO_OPERATOR_SATURATE -like over, but assuming source and dest are -disjoint geometries (Since 1.0) - - - -CAIRO_OPERATOR_MULTIPLY -source and destination layers are multiplied. -This causes the result to be at least as dark as the darker inputs. (Since 1.10) - - - -CAIRO_OPERATOR_SCREEN -source and destination are complemented and -multiplied. This causes the result to be at least as light as the lighter -inputs. (Since 1.10) - - - -CAIRO_OPERATOR_OVERLAY -multiplies or screens, depending on the -lightness of the destination color. (Since 1.10) - - - -CAIRO_OPERATOR_DARKEN -replaces the destination with the source if it -is darker, otherwise keeps the source. (Since 1.10) - - - -CAIRO_OPERATOR_LIGHTEN -replaces the destination with the source if it -is lighter, otherwise keeps the source. (Since 1.10) - - - -CAIRO_OPERATOR_COLOR_DODGE -brightens the destination color to reflect -the source color. (Since 1.10) - - - -CAIRO_OPERATOR_COLOR_BURN -darkens the destination color to reflect -the source color. (Since 1.10) - - - -CAIRO_OPERATOR_HARD_LIGHT -Multiplies or screens, dependent on source -color. (Since 1.10) - - - -CAIRO_OPERATOR_SOFT_LIGHT -Darkens or lightens, dependent on source -color. (Since 1.10) - - - -CAIRO_OPERATOR_DIFFERENCE -Takes the difference of the source and -destination color. (Since 1.10) - - - -CAIRO_OPERATOR_EXCLUSION -Produces an effect similar to difference, but -with lower contrast. (Since 1.10) - - - -CAIRO_OPERATOR_HSL_HUE -Creates a color with the hue of the source -and the saturation and luminosity of the target. (Since 1.10) - - - -CAIRO_OPERATOR_HSL_SATURATION -Creates a color with the saturation -of the source and the hue and luminosity of the target. Painting with -this mode onto a gray area produces no change. (Since 1.10) - - - -CAIRO_OPERATOR_HSL_COLOR -Creates a color with the hue and saturation -of the source and the luminosity of the target. This preserves the gray -levels of the target and is useful for coloring monochrome images or -tinting color images. (Since 1.10) - - - -CAIRO_OPERATOR_HSL_LUMINOSITY -Creates a color with the luminosity of -the source and the hue and saturation of the target. This produces an -inverse effect to CAIRO_OPERATOR_HSL_COLOR. (Since 1.10) - - -Since 1.0 +double +cairo_get_miter_limit (cairo_t *cr); +Gets the current miter limit, as set by cairo_set_miter_limit(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current miter limit. + +Since 1.0 -cairo_set_operator () +cairo_set_operator () cairo_set_operator -void cairo_set_operator (cairo_t *cr, - cairo_operator_t op); - -Sets the compositing operator to be used for all drawing +void +cairo_set_operator (cairo_t *cr, + cairo_operator_t op); +Sets the compositing operator to be used for all drawing operations. See cairo_operator_t for details on the semantics of -each available compositing operator. - - -The default operator is CAIRO_OPERATOR_OVER. - -cr : -a cairo_t -op : -a compositing operator, specified as a cairo_operator_t -Since 1.0 +each available compositing operator. +The default operator is CAIRO_OPERATOR_OVER. + +Parameters + + + + + + +cr +a cairo_t + +op +a compositing operator, specified as a cairo_operator_t + + +Since 1.0 -cairo_get_operator () +cairo_get_operator () cairo_get_operator -cairo_operator_t cairo_get_operator (cairo_t *cr); - -Gets the current compositing operator for a cairo context. - -cr : -a cairo context -Returns :the current compositing operator. -Since 1.0 +cairo_operator_t +cairo_get_operator (cairo_t *cr); +Gets the current compositing operator for a cairo context. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current compositing operator. + +Since 1.0 -cairo_set_tolerance () +cairo_set_tolerance () cairo_set_tolerance -void cairo_set_tolerance (cairo_t *cr, - double tolerance); - -Sets the tolerance used when converting paths into trapezoids. +void +cairo_set_tolerance (cairo_t *cr, + double tolerance); +Sets the tolerance used when converting paths into trapezoids. Curved segments of the path will be subdivided until the maximum deviation between the original path and the polygonal approximation -is less than tolerance. The default value is 0.1. A larger +is less than tolerance +. The default value is 0.1. A larger value will give better performance, a smaller value, better appearance. (Reducing the value from the default value of 0.1 is unlikely to improve appearance significantly.) The accuracy of paths within Cairo is limited by the precision of its internal arithmetic, and -the prescribed tolerance is restricted to the smallest -representable internal value. - -cr : -a cairo_t -tolerance : -the tolerance, in device units (typically pixels) -Since 1.0 +the prescribed tolerance + is restricted to the smallest +representable internal value. + +Parameters + + + + + + +cr +a cairo_t + +tolerance +the tolerance, in device units (typically pixels) + + +Since 1.0 -cairo_get_tolerance () +cairo_get_tolerance () cairo_get_tolerance -double cairo_get_tolerance (cairo_t *cr); - -Gets the current tolerance value, as set by cairo_set_tolerance(). - -cr : -a cairo context -Returns :the current tolerance value. -Since 1.0 +double +cairo_get_tolerance (cairo_t *cr); +Gets the current tolerance value, as set by cairo_set_tolerance(). + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current tolerance value. + +Since 1.0 -cairo_clip () +cairo_clip () cairo_clip -void cairo_clip (cairo_t *cr); - -Establishes a new clip region by intersecting the current clip +void +cairo_clip (cairo_t *cr); +Establishes a new clip region by intersecting the current clip region with the current path as it would be filled by cairo_fill() -and according to the current fill rule (see cairo_set_fill_rule()). - - -After cairo_clip(), the current path will be cleared from the cairo -context. - - -The current clip region affects all drawing operations by +and according to the current fill rule (see cairo_set_fill_rule()). +After cairo_clip(), the current path will be cleared from the cairo +context. +The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside -the current clip region. - - -Calling cairo_clip() can only make the clip region smaller, never +the current clip region. +Calling cairo_clip() can only make the clip region smaller, never larger. But the current clip is part of the graphics state, so a temporary restriction of the clip region can be achieved by calling cairo_clip() within a cairo_save()/cairo_restore() pair. The only other means of increasing the size of the clip -region is cairo_reset_clip(). - -cr : -a cairo context -Since 1.0 +region is cairo_reset_clip(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_clip_preserve () +cairo_clip_preserve () cairo_clip_preserve -void cairo_clip_preserve (cairo_t *cr); - -Establishes a new clip region by intersecting the current clip +void +cairo_clip_preserve (cairo_t *cr); +Establishes a new clip region by intersecting the current clip region with the current path as it would be filled by cairo_fill() -and according to the current fill rule (see cairo_set_fill_rule()). - - -Unlike cairo_clip(), cairo_clip_preserve() preserves the path within -the cairo context. - - -The current clip region affects all drawing operations by +and according to the current fill rule (see cairo_set_fill_rule()). +Unlike cairo_clip(), cairo_clip_preserve() preserves the path within +the cairo context. +The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside -the current clip region. - - -Calling cairo_clip_preserve() can only make the clip region smaller, never +the current clip region. +Calling cairo_clip_preserve() can only make the clip region smaller, never larger. But the current clip is part of the graphics state, so a temporary restriction of the clip region can be achieved by calling cairo_clip_preserve() within a cairo_save()/cairo_restore() pair. The only other means of increasing the size of the clip -region is cairo_reset_clip(). - -cr : -a cairo context -Since 1.0 +region is cairo_reset_clip(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_clip_extents () +cairo_clip_extents () cairo_clip_extents -void cairo_clip_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); - -Computes a bounding box in user coordinates covering the area inside the -current clip. - -cr : -a cairo context -x1 : -left of the resulting extents -y1 : -top of the resulting extents -x2 : -right of the resulting extents -y2 : -bottom of the resulting extents -Since 1.4 +void +cairo_clip_extents (cairo_t *cr, + double *x1, + double *y1, + double *x2, + double *y2); +Computes a bounding box in user coordinates covering the area inside the +current clip. + +Parameters + + + + + + +cr +a cairo context + +x1 +left of the resulting extents + +y1 +top of the resulting extents + +x2 +right of the resulting extents + +y2 +bottom of the resulting extents + + +Since 1.4 -cairo_in_clip () +cairo_in_clip () cairo_in_clip -cairo_bool_t cairo_in_clip (cairo_t *cr, - double x, - double y); - -Tests whether the given point is inside the area that would be +cairo_bool_t +cairo_in_clip (cairo_t *cr, + double x, + double y); +Tests whether the given point is inside the area that would be visible through the current clip, i.e. the area that would be filled by -a cairo_paint() operation. - - -See cairo_clip(), and cairo_clip_preserve(). - -cr : -a cairo context -x : -X coordinate of the point to test -y : -Y coordinate of the point to test -Returns :A non-zero value if the point is inside, or zero if -outside. -Since 1.10 +a cairo_paint() operation. +See cairo_clip(), and cairo_clip_preserve(). + +Parameters + + + + + + +cr +a cairo context + +x +X coordinate of the point to test + +y +Y coordinate of the point to test + + + +Returns + A non-zero value if the point is inside, or zero if +outside. + +Since 1.10 -cairo_reset_clip () +cairo_reset_clip () cairo_reset_clip -void cairo_reset_clip (cairo_t *cr); - -Reset the current clip region to its original, unrestricted +void +cairo_reset_clip (cairo_t *cr); +Reset the current clip region to its original, unrestricted state. That is, set the clip region to an infinitely large shape containing the target surface. Equivalently, if infinity is too hard to grasp, one can imagine the clip region being reset to the -exact bounds of the target surface. - - -Note that code meant to be reusable should not call +exact bounds of the target surface. +Note that code meant to be reusable should not call cairo_reset_clip() as it will cause results unexpected by higher-level code which calls cairo_clip(). Consider using cairo_save() and cairo_restore() around cairo_clip() as a more -robust means of temporarily restricting the clip region. - -cr : -a cairo context -Since 1.0 - -cairo_rectangle_t -cairo_rectangle_t -typedef struct { - double x, y, width, height; -} cairo_rectangle_t; - - -A data structure for holding a rectangle. - -double x; -X coordinate of the left side of the rectangle - -double y; -Y coordinate of the the top side of the rectangle - -double width; -width of the rectangle - -double height; -height of the rectangle - -Since 1.4 - -cairo_rectangle_list_t -cairo_rectangle_list_t -typedef struct { - cairo_status_t status; - cairo_rectangle_t *rectangles; - int num_rectangles; -} cairo_rectangle_list_t; - - -A data structure for holding a dynamically allocated -array of rectangles. - -cairo_status_t status; -Error status of the rectangle list - -cairo_rectangle_t *rectangles; -Array containing the rectangles - -int num_rectangles; -Number of rectangles in this list - -Since 1.4 +robust means of temporarily restricting the clip region. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_rectangle_list_destroy () +cairo_rectangle_list_destroy () cairo_rectangle_list_destroy -void cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); - -Unconditionally frees rectangle_list and all associated -references. After this call, the rectangle_list pointer must not -be dereferenced. - -rectangle_list : -a rectangle list, as obtained from cairo_copy_clip_rectangle_list() -Since 1.4 +void +cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); +Unconditionally frees rectangle_list + and all associated +references. After this call, the rectangle_list + pointer must not +be dereferenced. + +Parameters + + + + + + +rectangle_list +a rectangle list, as obtained from cairo_copy_clip_rectangle_list() + + +Since 1.4 -cairo_copy_clip_rectangle_list () +cairo_copy_clip_rectangle_list () cairo_copy_clip_rectangle_list -cairo_rectangle_list_t * cairo_copy_clip_rectangle_list (cairo_t *cr); - -Gets the current clip region as a list of rectangles in user coordinates. -Never returns NULL. - - -The status in the list may be CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to +cairo_rectangle_list_t * +cairo_copy_clip_rectangle_list (cairo_t *cr); +Gets the current clip region as a list of rectangles in user coordinates. +Never returns NULL. +The status in the list may be CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to indicate that the clip region cannot be represented as a list of user-space rectangles. The status may have other values to indicate -other errors. - -cr : -a cairo context -Returns :the current clip region as a list of rectangles in user coordinates, -which should be destroyed using cairo_rectangle_list_destroy(). -Since 1.4 +other errors. + +Parameters + + + + + + +cr +a cairo context + + + +Returns + the current clip region as a list of rectangles in user coordinates, +which should be destroyed using cairo_rectangle_list_destroy(). + +Since 1.4 -cairo_fill () +cairo_fill () cairo_fill -void cairo_fill (cairo_t *cr); - -A drawing operator that fills the current path according to the +void +cairo_fill (cairo_t *cr); +A drawing operator that fills the current path according to the current fill rule, (each sub-path is implicitly closed before being filled). After cairo_fill(), the current path will be cleared from the cairo context. See cairo_set_fill_rule() and -cairo_fill_preserve(). - -cr : -a cairo context -Since 1.0 +cairo_fill_preserve(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_fill_preserve () +cairo_fill_preserve () cairo_fill_preserve -void cairo_fill_preserve (cairo_t *cr); - -A drawing operator that fills the current path according to the +void +cairo_fill_preserve (cairo_t *cr); +A drawing operator that fills the current path according to the current fill rule, (each sub-path is implicitly closed before being filled). Unlike cairo_fill(), cairo_fill_preserve() preserves the -path within the cairo context. - - -See cairo_set_fill_rule() and cairo_fill(). - -cr : -a cairo context -Since 1.0 +path within the cairo context. +See cairo_set_fill_rule() and cairo_fill(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_fill_extents () +cairo_fill_extents () cairo_fill_extents -void cairo_fill_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); - -Computes a bounding box in user coordinates covering the area that +void +cairo_fill_extents (cairo_t *cr, + double *x1, + double *y1, + double *x2, + double *y2); +Computes a bounding box in user coordinates covering the area that would be affected, (the "inked" area), by a cairo_fill() operation given the current path and fill parameters. If the current path is empty, returns an empty rectangle ((0,0), (0,0)). Surface -dimensions and clipping are not taken into account. - - -Contrast with cairo_path_extents(), which is similar, but returns +dimensions and clipping are not taken into account. +Contrast with cairo_path_extents(), which is similar, but returns non-zero extents for some paths with no inked area, (such as a -simple line segment). - - -Note that cairo_fill_extents() must necessarily do more work to +simple line segment). +Note that cairo_fill_extents() must necessarily do more work to compute the precise inked areas in light of the fill rule, so cairo_path_extents() may be more desirable for sake of performance -if the non-inked path extents are desired. - - -See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). - -cr : -a cairo context -x1 : -left of the resulting extents -y1 : -top of the resulting extents -x2 : -right of the resulting extents -y2 : -bottom of the resulting extents -Since 1.0 +if the non-inked path extents are desired. +See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). + +Parameters + + + + + + +cr +a cairo context + +x1 +left of the resulting extents + +y1 +top of the resulting extents + +x2 +right of the resulting extents + +y2 +bottom of the resulting extents + + +Since 1.0 -cairo_in_fill () +cairo_in_fill () cairo_in_fill -cairo_bool_t cairo_in_fill (cairo_t *cr, - double x, - double y); - -Tests whether the given point is inside the area that would be +cairo_bool_t +cairo_in_fill (cairo_t *cr, + double x, + double y); +Tests whether the given point is inside the area that would be affected by a cairo_fill() operation given the current path and filling parameters. Surface dimensions and clipping are not taken -into account. - - -See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). - -cr : -a cairo context -x : -X coordinate of the point to test -y : -Y coordinate of the point to test -Returns :A non-zero value if the point is inside, or zero if -outside. -Since 1.0 +into account. +See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). + +Parameters + + + + + + +cr +a cairo context + +x +X coordinate of the point to test + +y +Y coordinate of the point to test + + + +Returns + A non-zero value if the point is inside, or zero if +outside. + +Since 1.0 -cairo_mask () +cairo_mask () cairo_mask -void cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern); - -A drawing operator that paints the current source -using the alpha channel of pattern as a mask. (Opaque -areas of pattern are painted with the source, transparent -areas are not painted.) - -cr : -a cairo context -pattern : -a cairo_pattern_t -Since 1.0 +void +cairo_mask (cairo_t *cr, + cairo_pattern_t *pattern); +A drawing operator that paints the current source +using the alpha channel of pattern + as a mask. (Opaque +areas of pattern + are painted with the source, transparent +areas are not painted.) + +Parameters + + + + + + +cr +a cairo context + +pattern +a cairo_pattern_t + + +Since 1.0 -cairo_mask_surface () +cairo_mask_surface () cairo_mask_surface -void cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y); - -A drawing operator that paints the current source -using the alpha channel of surface as a mask. (Opaque -areas of surface are painted with the source, transparent -areas are not painted.) - -cr : -a cairo context -surface : -a cairo_surface_t -surface_x : -X coordinate at which to place the origin of surface -surface_y : -Y coordinate at which to place the origin of surface -Since 1.0 +void +cairo_mask_surface (cairo_t *cr, + cairo_surface_t *surface, + double surface_x, + double surface_y); +A drawing operator that paints the current source +using the alpha channel of surface + as a mask. (Opaque +areas of surface + are painted with the source, transparent +areas are not painted.) + +Parameters + + + + + + +cr +a cairo context + +surface +a cairo_surface_t + +surface_x +X coordinate at which to place the origin of surface + + +surface_y +Y coordinate at which to place the origin of surface + + + +Since 1.0 -cairo_paint () +cairo_paint () cairo_paint -void cairo_paint (cairo_t *cr); - -A drawing operator that paints the current source everywhere within -the current clip region. - -cr : -a cairo context -Since 1.0 +void +cairo_paint (cairo_t *cr); +A drawing operator that paints the current source everywhere within +the current clip region. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_paint_with_alpha () +cairo_paint_with_alpha () cairo_paint_with_alpha -void cairo_paint_with_alpha (cairo_t *cr, - double alpha); - -A drawing operator that paints the current source everywhere within +void +cairo_paint_with_alpha (cairo_t *cr, + double alpha); +A drawing operator that paints the current source everywhere within the current clip region using a mask of constant alpha value -alpha. The effect is similar to cairo_paint(), but the drawing -is faded out using the alpha value. - -cr : -a cairo context -alpha : -alpha value, between 0 (transparent) and 1 (opaque) -Since 1.0 +alpha +. The effect is similar to cairo_paint(), but the drawing +is faded out using the alpha value. + +Parameters + + + + + + +cr +a cairo context + +alpha +alpha value, between 0 (transparent) and 1 (opaque) + + +Since 1.0 -cairo_stroke () +cairo_stroke () cairo_stroke -void cairo_stroke (cairo_t *cr); - -A drawing operator that strokes the current path according to the +void +cairo_stroke (cairo_t *cr); +A drawing operator that strokes the current path according to the current line width, line join, line cap, and dash settings. After cairo_stroke(), the current path will be cleared from the cairo context. See cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). - - -Note: Degenerate segments and sub-paths are treated specially and +cairo_stroke_preserve(). +Note: Degenerate segments and sub-paths are treated specially and provide a useful result. These can result in two different -situations: - - -1. Zero-length "on" segments set in cairo_set_dash(). If the cap +situations: + + +Zero-length "on" segments set in cairo_set_dash(). If the cap style is CAIRO_LINE_CAP_ROUND or CAIRO_LINE_CAP_SQUARE then these segments will be drawn as circular dots or squares respectively. In the case of CAIRO_LINE_CAP_SQUARE, the orientation of the squares -is determined by the direction of the underlying path. - - -2. A sub-path created by cairo_move_to() followed by either a +is determined by the direction of the underlying path. + + +A sub-path created by cairo_move_to() followed by either a cairo_close_path() or one or more calls to cairo_line_to() to the same coordinate as the cairo_move_to(). If the cap style is CAIRO_LINE_CAP_ROUND then these sub-paths will be drawn as circular dots. Note that in the case of CAIRO_LINE_CAP_SQUARE a degenerate sub-path will not be drawn at all, (since the correct orientation -is indeterminate). - - -In no case will a cap style of CAIRO_LINE_CAP_BUTT cause anything -to be drawn in the case of either degenerate segments or sub-paths. - -cr : -a cairo context -Since 1.0 +is indeterminate). + + +In no case will a cap style of CAIRO_LINE_CAP_BUTT cause anything +to be drawn in the case of either degenerate segments or sub-paths. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_stroke_preserve () +cairo_stroke_preserve () cairo_stroke_preserve -void cairo_stroke_preserve (cairo_t *cr); - -A drawing operator that strokes the current path according to the +void +cairo_stroke_preserve (cairo_t *cr); +A drawing operator that strokes the current path according to the current line width, line join, line cap, and dash settings. Unlike cairo_stroke(), cairo_stroke_preserve() preserves the path within the -cairo context. - - -See cairo_set_line_width(), cairo_set_line_join(), +cairo context. +See cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). - -cr : -a cairo context -Since 1.0 +cairo_stroke_preserve(). + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_stroke_extents () +cairo_stroke_extents () cairo_stroke_extents -void cairo_stroke_extents (cairo_t *cr, - double *x1, - double *y1, - double *x2, - double *y2); - -Computes a bounding box in user coordinates covering the area that +void +cairo_stroke_extents (cairo_t *cr, + double *x1, + double *y1, + double *x2, + double *y2); +Computes a bounding box in user coordinates covering the area that would be affected, (the "inked" area), by a cairo_stroke() operation given the current path and stroke parameters. If the current path is empty, returns an empty rectangle ((0,0), (0,0)). -Surface dimensions and clipping are not taken into account. - - -Note that if the line width is set to exactly zero, then +Surface dimensions and clipping are not taken into account. +Note that if the line width is set to exactly zero, then cairo_stroke_extents() will return an empty rectangle. Contrast with cairo_path_extents() which can be used to compute the non-empty -bounds as the line width approaches zero. - - -Note that cairo_stroke_extents() must necessarily do more work to +bounds as the line width approaches zero. +Note that cairo_stroke_extents() must necessarily do more work to compute the precise inked areas in light of the stroke parameters, so cairo_path_extents() may be more desirable for sake of -performance if non-inked path extents are desired. - - -See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), +performance if non-inked path extents are desired. +See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). - -cr : -a cairo context -x1 : -left of the resulting extents -y1 : -top of the resulting extents -x2 : -right of the resulting extents -y2 : -bottom of the resulting extents -Since 1.0 +cairo_stroke_preserve(). + +Parameters + + + + + + +cr +a cairo context + +x1 +left of the resulting extents + +y1 +top of the resulting extents + +x2 +right of the resulting extents + +y2 +bottom of the resulting extents + + +Since 1.0 -cairo_in_stroke () +cairo_in_stroke () cairo_in_stroke -cairo_bool_t cairo_in_stroke (cairo_t *cr, - double x, - double y); - -Tests whether the given point is inside the area that would be +cairo_bool_t +cairo_in_stroke (cairo_t *cr, + double x, + double y); +Tests whether the given point is inside the area that would be affected by a cairo_stroke() operation given the current path and stroking parameters. Surface dimensions and clipping are not taken -into account. - - -See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), +into account. +See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and -cairo_stroke_preserve(). - -cr : -a cairo context -x : -X coordinate of the point to test -y : -Y coordinate of the point to test -Returns :A non-zero value if the point is inside, or zero if -outside. -Since 1.0 +cairo_stroke_preserve(). + +Parameters + + + + + + +cr +a cairo context + +x +X coordinate of the point to test + +y +Y coordinate of the point to test + + + +Returns + A non-zero value if the point is inside, or zero if +outside. + +Since 1.0 -cairo_copy_page () +cairo_copy_page () cairo_copy_page -void cairo_copy_page (cairo_t *cr); - -Emits the current page for backends that support multiple pages, but +void +cairo_copy_page (cairo_t *cr); +Emits the current page for backends that support multiple pages, but doesn't clear it, so, the contents of the current page will be retained for the next page too. Use cairo_show_page() if you want to get an -empty page after the emission. - - -This is a convenience function that simply calls -cairo_surface_copy_page() on cr's target. - -cr : -a cairo context -Since 1.0 +empty page after the emission. +This is a convenience function that simply calls +cairo_surface_copy_page() on cr +'s target. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_show_page () +cairo_show_page () cairo_show_page -void cairo_show_page (cairo_t *cr); - -Emits and clears the current page for backends that support multiple -pages. Use cairo_copy_page() if you don't want to clear the page. - - -This is a convenience function that simply calls -cairo_surface_show_page() on cr's target. - -cr : -a cairo context -Since 1.0 +void +cairo_show_page (cairo_t *cr); +Emits and clears the current page for backends that support multiple +pages. Use cairo_copy_page() if you don't want to clear the page. +This is a convenience function that simply calls +cairo_surface_show_page() on cr +'s target. + +Parameters + + + + + + +cr +a cairo context + + +Since 1.0 -cairo_get_reference_count () +cairo_get_reference_count () cairo_get_reference_count -unsigned int cairo_get_reference_count (cairo_t *cr); - -Returns the current reference count of cr. - -cr : -a cairo_t -Returns :the current reference count of cr. If the -object is a nil object, 0 will be returned. -Since 1.4 +unsigned int +cairo_get_reference_count (cairo_t *cr); +Returns the current reference count of cr +. + +Parameters + + + + + + +cr +a cairo_t + + + +Returns + the current reference count of cr +. If the +object is a nil object, 0 will be returned. + +Since 1.4 -cairo_set_user_data () +cairo_set_user_data () cairo_set_user_data -cairo_status_t cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -Attach user data to cr. To remove user data from a surface, +cairo_status_t +cairo_set_user_data (cairo_t *cr, + const cairo_user_data_key_t *key, + void *user_data, + cairo_destroy_func_t destroy); +Attach user data to cr +. To remove user data from a surface, call this function with the key that was used to set it and NULL -for data. - -cr : -a cairo_t -key : -the address of a cairo_user_data_key_t to attach the user data to -user_data : -the user data to attach to the cairo_t -destroy : -a cairo_destroy_func_t which will be called when the +for data +. + +Parameters + + + + + + +cr +a cairo_t + +key +the address of a cairo_user_data_key_t to attach the user data to + +user_data +the user data to attach to the cairo_t + +destroy +a cairo_destroy_func_t which will be called when the cairo_t is destroyed or when new user data is attached using the -same key. -Returns :CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a -slot could not be allocated for the user data. -Since 1.4 +same key. + + + +Returns + CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a +slot could not be allocated for the user data. + +Since 1.4 -cairo_get_user_data () +cairo_get_user_data () cairo_get_user_data -void * cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key); - -Return user data previously attached to cr using the specified +void * +cairo_get_user_data (cairo_t *cr, + const cairo_user_data_key_t *key); +Return user data previously attached to cr + using the specified key. If no user data has been attached with the given key this -function returns NULL. - -cr : -a cairo_t -key : -the address of the cairo_user_data_key_t the user data was -attached to -Returns :the user data previously attached or NULL. -Since 1.4 +function returns NULL. + +Parameters + + + + + + +cr +a cairo_t + +key +the address of the cairo_user_data_key_t the user data was +attached to + + + +Returns + the user data previously attached or NULL. + +Since 1.4 + + + +Types and Values + +cairo_t +cairo_t +typedef struct _cairo cairo_t; + +A cairo_t contains the current state of the rendering device, +including coordinates of yet to be drawn shapes. +Cairo contexts, as cairo_t objects are named, are central to +cairo and all drawing with cairo is always done to a cairo_t +object. +Memory management of cairo_t is done with +cairo_reference() and cairo_destroy(). +Since 1.0 + +enum cairo_antialias_t +cairo_antialias_t +Specifies the type of antialiasing to do when rendering text or shapes. +As it is not necessarily clear from the above what advantages a particular +antialias method provides, since 1.12, there is also a set of hints: +CAIRO_ANTIALIAS_FAST +: Allow the backend to degrade raster quality for speed +CAIRO_ANTIALIAS_GOOD +: A balance between speed and quality +CAIRO_ANTIALIAS_BEST +: A high-fidelity, but potentially slow, raster mode +These make no guarantee on how the backend will perform its rasterisation +(if it even rasterises!), nor that they have any differing effect other +than to enable some form of antialiasing. In the case of glyph rendering, +CAIRO_ANTIALIAS_FAST + and CAIRO_ANTIALIAS_GOOD + will be mapped to +CAIRO_ANTIALIAS_GRAY +, with CAIRO_ANTALIAS_BEST + being equivalent to +CAIRO_ANTIALIAS_SUBPIXEL +. +The interpretation of CAIRO_ANTIALIAS_DEFAULT + is left entirely up to +the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD +. + +Members + + + + + + +CAIRO_ANTIALIAS_DEFAULT +Use the default antialiasing for + the subsystem and target device, since 1.0 + + + +CAIRO_ANTIALIAS_NONE +Use a bilevel alpha mask, since 1.0 + + + +CAIRO_ANTIALIAS_GRAY +Perform single-color antialiasing (using + shades of gray for black text on a white background, for example), since 1.0 + + + +CAIRO_ANTIALIAS_SUBPIXEL +Perform antialiasing by taking + advantage of the order of subpixel elements on devices + such as LCD panels, since 1.0 + + + +CAIRO_ANTIALIAS_FAST +Hint that the backend should perform some +antialiasing but prefer speed over quality, since 1.12 + + + +CAIRO_ANTIALIAS_GOOD +The backend should balance quality against +performance, since 1.12 + + + +CAIRO_ANTIALIAS_BEST +Hint that the backend should render at the highest +quality, sacrificing speed if necessary, since 1.12 + + + + +Since 1.0 + +enum cairo_fill_rule_t +cairo_fill_rule_t +cairo_fill_rule_t is used to select how paths are filled. For both +fill rules, whether or not a point is included in the fill is +determined by taking a ray from that point to infinity and looking +at intersections with the path. The ray can be in any direction, +as long as it doesn't pass through the end point of a segment +or have a tricky intersection such as intersecting tangent to the path. +(Note that filling is not actually implemented in this way. This +is just a description of the rule that is applied.) +The default fill rule is CAIRO_FILL_RULE_WINDING. +New entries may be added in future versions. + +Members + + + + + + +CAIRO_FILL_RULE_WINDING +If the path crosses the ray from +left-to-right, counts +1. If the path crosses the ray +from right to left, counts -1. (Left and right are determined +from the perspective of looking along the ray from the starting +point.) If the total count is non-zero, the point will be filled. (Since 1.0) + + + +CAIRO_FILL_RULE_EVEN_ODD +Counts the total number of +intersections, without regard to the orientation of the contour. If +the total number of intersections is odd, the point will be +filled. (Since 1.0) + + + + +Since 1.0 + +enum cairo_line_cap_t +cairo_line_cap_t +Specifies how to render the endpoints of the path when stroking. +The default line cap style is CAIRO_LINE_CAP_BUTT. + +Members + + + + + + +CAIRO_LINE_CAP_BUTT +start(stop) the line exactly at the start(end) point (Since 1.0) + + + +CAIRO_LINE_CAP_ROUND +use a round ending, the center of the circle is the end point (Since 1.0) + + + +CAIRO_LINE_CAP_SQUARE +use squared ending, the center of the square is the end point (Since 1.0) + + + + +Since 1.0 + +enum cairo_line_join_t +cairo_line_join_t +Specifies how to render the junction of two lines when stroking. +The default line join style is CAIRO_LINE_JOIN_MITER. + +Members + + + + + + +CAIRO_LINE_JOIN_MITER +use a sharp (angled) corner, see +cairo_set_miter_limit() (Since 1.0) + + + +CAIRO_LINE_JOIN_ROUND +use a rounded join, the center of the circle is the +joint point (Since 1.0) + + + +CAIRO_LINE_JOIN_BEVEL +use a cut-off join, the join is cut off at half +the line width from the joint point (Since 1.0) + + + + +Since 1.0 + +enum cairo_operator_t +cairo_operator_t +cairo_operator_t is used to set the compositing operator for all cairo +drawing operations. +The default operator is CAIRO_OPERATOR_OVER. +The operators marked as unbounded modify their +destination even outside of the mask layer (that is, their effect is not +bound by the mask layer). However, their effect can still be limited by +way of clipping. +To keep things simple, the operator descriptions here +document the behavior for when both source and destination are either fully +transparent or fully opaque. The actual implementation works for +translucent layers too. +For a more detailed explanation of the effects of each operator, including +the mathematical definitions, see +http://cairographics.org/operators/. + +Members + + + + + + +CAIRO_OPERATOR_CLEAR +clear destination layer (bounded) (Since 1.0) + + + +CAIRO_OPERATOR_SOURCE +replace destination layer (bounded) (Since 1.0) + + + +CAIRO_OPERATOR_OVER +draw source layer on top of destination layer +(bounded) (Since 1.0) + + + +CAIRO_OPERATOR_IN +draw source where there was destination content +(unbounded) (Since 1.0) + + + +CAIRO_OPERATOR_OUT +draw source where there was no destination +content (unbounded) (Since 1.0) + + + +CAIRO_OPERATOR_ATOP +draw source on top of destination content and +only there (Since 1.0) + + + +CAIRO_OPERATOR_DEST +ignore the source (Since 1.0) + + + +CAIRO_OPERATOR_DEST_OVER +draw destination on top of source (Since 1.0) + + + +CAIRO_OPERATOR_DEST_IN +leave destination only where there was +source content (unbounded) (Since 1.0) + + + +CAIRO_OPERATOR_DEST_OUT +leave destination only where there was no +source content (Since 1.0) + + + +CAIRO_OPERATOR_DEST_ATOP +leave destination on top of source content +and only there (unbounded) (Since 1.0) + + + +CAIRO_OPERATOR_XOR +source and destination are shown where there is only +one of them (Since 1.0) + + + +CAIRO_OPERATOR_ADD +source and destination layers are accumulated (Since 1.0) + + + +CAIRO_OPERATOR_SATURATE +like over, but assuming source and dest are +disjoint geometries (Since 1.0) + + + +CAIRO_OPERATOR_MULTIPLY +source and destination layers are multiplied. +This causes the result to be at least as dark as the darker inputs. (Since 1.10) + + + +CAIRO_OPERATOR_SCREEN +source and destination are complemented and +multiplied. This causes the result to be at least as light as the lighter +inputs. (Since 1.10) + + + +CAIRO_OPERATOR_OVERLAY +multiplies or screens, depending on the +lightness of the destination color. (Since 1.10) + + + +CAIRO_OPERATOR_DARKEN +replaces the destination with the source if it +is darker, otherwise keeps the source. (Since 1.10) + + + +CAIRO_OPERATOR_LIGHTEN +replaces the destination with the source if it +is lighter, otherwise keeps the source. (Since 1.10) + + + +CAIRO_OPERATOR_COLOR_DODGE +brightens the destination color to reflect +the source color. (Since 1.10) + + + +CAIRO_OPERATOR_COLOR_BURN +darkens the destination color to reflect +the source color. (Since 1.10) + + + +CAIRO_OPERATOR_HARD_LIGHT +Multiplies or screens, dependent on source +color. (Since 1.10) + + + +CAIRO_OPERATOR_SOFT_LIGHT +Darkens or lightens, dependent on source +color. (Since 1.10) + + + +CAIRO_OPERATOR_DIFFERENCE +Takes the difference of the source and +destination color. (Since 1.10) + + + +CAIRO_OPERATOR_EXCLUSION +Produces an effect similar to difference, but +with lower contrast. (Since 1.10) + + + +CAIRO_OPERATOR_HSL_HUE +Creates a color with the hue of the source +and the saturation and luminosity of the target. (Since 1.10) + + + +CAIRO_OPERATOR_HSL_SATURATION +Creates a color with the saturation +of the source and the hue and luminosity of the target. Painting with +this mode onto a gray area produces no change. (Since 1.10) + + + +CAIRO_OPERATOR_HSL_COLOR +Creates a color with the hue and saturation +of the source and the luminosity of the target. This preserves the gray +levels of the target and is useful for coloring monochrome images or +tinting color images. (Since 1.10) + + + +CAIRO_OPERATOR_HSL_LUMINOSITY +Creates a color with the luminosity of +the source and the hue and saturation of the target. This produces an +inverse effect to CAIRO_OPERATOR_HSL_COLOR +. (Since 1.10) + + + + +Since 1.0 + +cairo_rectangle_t +cairo_rectangle_t +typedef struct { + double x, y, width, height; +} cairo_rectangle_t; + +A data structure for holding a rectangle. + +Members + + + + + + +double x; +X coordinate of the left side of the rectangle +X coordinate of the left side of the rectangle + + +double y; +Y coordinate of the the top side of the rectangle +Y coordinate of the the top side of the rectangle + + +double width; +width of the rectangle +width of the rectangle + + +double height; +height of the rectangle +height of the rectangle + + + + +Since 1.4 + +cairo_rectangle_list_t +cairo_rectangle_list_t +typedef struct { + cairo_status_t status; + cairo_rectangle_t *rectangles; + int num_rectangles; +} cairo_rectangle_list_t; + +A data structure for holding a dynamically allocated +array of rectangles. + +Members + + + + + + +cairo_status_t status; +Error status of the rectangle list +Error status of the rectangle list + + +cairo_rectangle_t *rectangles; +Array containing the rectangles +Array containing the rectangles + + +int num_rectangles; +Number of rectangles in this list +Number of rectangles in this list + + + + +Since 1.4 See Also -cairo_surface_t +cairo_surface_t + diff -Nru cairo-1.13.0~20140204/HACKING cairo-1.14.2/HACKING --- cairo-1.13.0~20140204/HACKING 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/HACKING 2015-03-10 22:21:07.000000000 +0000 @@ -73,9 +73,9 @@ http://cairographics.org/download/ -TODO: -Add links to some git tutorials or better, write a few paragraphs -about how to use git to efficiently hack on cairo. +For more information on using git, see: + + http://freedesktop.org/wiki/Infrastructure/git/ Build System @@ -103,10 +103,9 @@ Copyrights and Licensing ------------------------ -The cairo library is dual-licensed under LGPL and MPL. See file named -COPYING for details. The test suites are more liberal. For example, -GPL code is allowed in the test suites, though it's always better to -keep things simple. +The cairo library is dual-licensed under LGPL and MPL. See the file +named COPYING for details. The test suites are more liberal, and are +allowed to include GPL code. When writing new code, update the file headers to add your (or your employers) copyright line and contributor line. If adding new files @@ -174,9 +173,8 @@ Utilities --------- -There are a few useful utilities we have developed that are either -useful when writing code using cairo, or writing cairo, or useful in -general. These tools can be found under the util/ directory. +We have developed several utilities useful for writing cairo or code +that uses cairo. These tools can be found under the util/ directory. See util/README for more information. diff -Nru cairo-1.13.0~20140204/KNOWN_ISSUES cairo-1.14.2/KNOWN_ISSUES --- cairo-1.13.0~20140204/KNOWN_ISSUES 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/KNOWN_ISSUES 2015-03-10 23:24:30.000000000 +0000 @@ -1,10 +1,3 @@ -There are a few known bugs in 1.10 that have been fixed in master, but -appear to be non-trivial to backport without fear of causing other -regressions. The impact of these bugs is considered to be less than of a -risk than rewriting the code. - -Zero Path Extents ------------------ -A closed degenerate path is reported as having extents (0, 0) x (0, 0), -whereas the expected value is (x, y) x (0, 0). This regression has existed -since at least 1.2. +Known Issues +------------ +None diff -Nru cairo-1.13.0~20140204/Makefile.in cairo-1.14.2/Makefile.in --- cairo-1.13.0~20140204/Makefile.in 2014-02-04 09:52:24.000000000 +0000 +++ cairo-1.14.2/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -102,9 +102,10 @@ $(top_srcdir)/src/cairo-uninstalled.pc.in \ $(top_srcdir)/src/cairo-features-uninstalled.pc.in \ $(top_srcdir)/build/test-driver AUTHORS COPYING ChangeLog \ - INSTALL NEWS README build/compile build/config.guess \ - build/config.sub build/depcomp build/install-sh build/missing \ - build/ltmain.sh $(top_srcdir)/build/compile \ + INSTALL NEWS README build/ar-lib build/compile \ + build/config.guess build/config.sub build/depcomp \ + build/install-sh build/missing build/ltmain.sh \ + $(top_srcdir)/build/ar-lib $(top_srcdir)/build/compile \ $(top_srcdir)/build/config.guess \ $(top_srcdir)/build/config.sub $(top_srcdir)/build/install-sh \ $(top_srcdir)/build/ltmain.sh $(top_srcdir)/build/missing @@ -517,6 +518,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/NEWS cairo-1.14.2/NEWS --- cairo-1.13.0~20140204/NEWS 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/NEWS 2015-03-10 22:21:07.000000000 +0000 @@ -1,3 +1,284 @@ +Release 1.14.2 (2014-03-09 Bryce Harrington ) +==================================================================== +This release provides collected bug fixes, along with one feature +enhancement for the xcb backend, and a small performance improvement for +fonts. + +The running theme of the bug fixes is platform-specific issues, both +build and run-time. Platforms with fixes include Sparc, AIX, Windows +(mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF +issues round out our list. + +It's come to light that changes in cairo 1.14 resulted in breakage on +MacOS X 10.4. We've not yet determined whether to fix up the support, +or excise the 10.4-specific code and support only OS X 10.5 or newer. +Meantime, we'll only advertise cairo as working on OS X 10.5. + +Features +-------- + * Improve xcb's handling of per-screen subpixel ordering. If no + Xft.rgba property is specified, default to the screen's subpixel + order. + +API Changes +----------- +None + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- + * Improve performance of cpu_to_be32 and be32_to_cpu, making truetype + subsetting of large fonts run about 15% faster. + +Bug Fixes +--------- + * Fix unaligned access on sparc with the compact font format (CFF). + Unlike truetype, all data in CFF is not aligned. + (Debian bug #712836) + * Fix unaligned access on sparc with tor-scan-converter's memory pool. + * Fix crash when loading a PDF with a transformed image. + (fdo bug #85151) + * Fix regression on mingw for bigendian test due to removal of file + extension for executables. + (fdo bug #85120) + * Fix handling of backslash in PDF interpreter + (fdo bug #85662) + * Fix crash in xlib and xcb renderers when swapping a 0-sized glyph + * Fix bug with RTL text in PDF operators + (fdo bug #86461) + * Fix compilation 'cairo-path-stroke-traps.c' with MSVC8 + (fdo bug #84908) + * Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is + negative. + * Fix valgrind error by releasing pattern created by + cairo_pattern_create_rgb(). + * Fix valgrind errors when running cairo-test-suite. + * Fix memory leak in recording surface replays + (fdo bug #87898) + * Fix destruction of fonts in api-special-cases test. + (fdo bug #87567) + * Fix duplicated surface push on similar-image, preventing trivial GTK3 + program traces from being replayable, with an error message about + invalid values for the size of the input. + (fdo bug #73580) + * Fix crash when win32 surface's image size does not cover the entire + surface. + (fdo bug #53121) + * Fix crash due to obsolete CGFontGetGlyphPath call + (fdo bug #84324) + * Fix several build issues on AIX + (fdo bugs #89338, #89340, #89356, #89354) + * Fix various documentation warnings and errors + +Release 1.14.0 (2014-10-13 Bryce Harrington ) +==================================================================== +Hard to believe it's been over a year since our last release, but it's +not for lack of activity. This release includes contributions of a wide +assortment of bug fixes, build system improvements, warnings cleanups, +codebase refactoring, test suite repairs, and static analysis work. + +This release is lighter on features (compared with 1.12.10) but includes +a highly demanded rehaul of our image downscaling functionality, which +solves a serious problem experienced by Inkscape users when shrinking +embedded bitmaps in SVG files. The new scaling algorithms are used by +the image backend and by other backends as needed for fallbacks. + + +Features +-------- + + Filtering improvements for the image backend, in particular + down-scaling of images produces filtered images that depend on all the + pixels of the source. When using the image backend you get the + following settings: + + CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in + either direction. For scales larger than this, the same filter as + CAIRO_FILTER_BILINEAR is used. + + CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling + more than 2x this will produce anti-aliased square pixels, similar + to OS/X. + + CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current + pixman is the same as BILINEAR. (This is subject to change in the + future). + + xlib and xcb also use the image fallback for GOOD/BEST filters, but + note that other backends do not implement these filtering fixes yet, + however other actions may cause them to use an image fallback which + will cause these filters to be used. + + Improve handling of device transformation and scaling, allowing Cairo + to now support scaling at a device level, permitting easier, more + transparent HiDPI support. + + Support JBIG2 mime data in PDF. This allows embedding of more + compressed JPEG formats within PDF, rather than including the full + uncompressed image. Also, reduce the number of transparency groups + used by PDF to keep the file size small and viewing/printing of the + PDF fast. + + Expand the embedding section to include stencil mask support. + + Reorder font declarations to be in natural order. + + Update the Skia backend to build against current Skia (as of June + 2014). + + Drop Link-Time Optimization (LTO) support from build system. This + seems to have caused much trouble for unclear benefit, and most + distros are reverting or disabling it anyway. + + Optimize VBO size on GL to 1M and to 16k for EGL. This improves + (theoretical) performance for desktop GLX use cases while avoiding + hitting VBO memory size limitations on embedded devices. + +API Changes +----------- + + cairo_surface_set_device_scale, cairo_surface_get_device_scale: + + Sets a scale that is multiplied to the device coordinates + determined by the CTM when drawing to @surface. One common use for + this is to render to very high resolution display devices at a scale + factor, so that code that assumes 1 pixel will be a certain size + will still work. + + cairo_egl_device_get_display, cairo_egl_device_get_context: + + Support get/set of EGLContext and EGLDisplay for egl-based cairo + devices, similar to GLX. + +Dependency Changes +------------------ + + Cairo now requires glib 2.14 for its gobject helper functions, + and pixman 0.30 for downscaling. + + +Bug fixes +--------- + + Don't embed CMYK Jpeg images in svg. + + Fix tests to place output in proper location. + + Fix determination of alpha for all surfaces when recording. + + Extend oversize check to cairo_gl_surface_create_for_texture, so an + error surface is returned if the texture is too large to render to. + + Fix embedding of mime data in PDF and PS files. + + Remove useless error handling in *_reply() functions in XCB. + + Fix a double-free exposed by multithreaded apps creating and + destroying the same font concurrently. + https://bugs.freedesktop.org/show_bug.cgi?id=69470 + + Fix corrupt stacks produced by bugs in operand emission for trace. + + Fix out of bounds array access in format cache for xlib + + Don't rename glyphs used by seac operator. This can cause certain + combined characters to use their decorations (e.g. umlauts on ö) to be + lost during printing of PDFs using evince. + https://bugs.freedesktop.org/show_bug.cgi?id=70364 + + Fix crash on calling cairo_create with a finished surface + + Fix SSIZE_T definition problem when making with MSYS on Windows7 + + Fix one off issue in gl context cleanup + + Fix usage of CAIRO_STACK_ARRAY_LENGTH + + Fix rectangle stroke with non rectilinear pen + + Fix imagemask with pattern source failure on some printers. This bug + could cause files converted using pdftops to fail for example on Ricoh + printers, or opening in Adobe Distiller on Windows. + https://bugs.freedesktop.org/show_bug.cgi?id=69485 + + Fix whitespace in font names + + Fix page size in generated PDFs. When printing using pdftocairo on + larger page sizes, such as 11x17, the image would be cropped to letter + size. + https://bugs.freedesktop.org/show_bug.cgi?id=73452 + + Fix path-currentpoint test by preserving current-point in + copy_path()/append_path() sequence + + Fix generation of HTML in code docs for + cairo-format-stride-for-width. Raw HTML code was being passed + to the browser, instead of displaying normally. + https://bugs.freedesktop.org/show_bug.cgi?id=63257 + + Fix spelling of "tessellator" throughout code. We're using the + American rather than British spelling of this word. + https://bugs.freedesktop.org/show_bug.cgi?id=50411 + + Fix crash in pixman_image_composite32 + + Fix crash when trying to modify a (const) all-clipped cairo_clip_t + https://bugs.freedesktop.org/show_bug.cgi?id=75819 + + Add check_composite method to all compositors, to fix crashes in the + test suite. + + Fix crash in Firefox when scrolling on certain pages. + + Fix memory leaks found by static analysis. + + Fix build of any2ppm if fork is not available. + + Fix broken build for Qt backend, due to missing libstdc++. + + Fix typo in two cairo_uint128 functions. Fixes potential build issues + on systems without a uint128 type. + + Fix build when --enable-pdf=no + + Fix cache_frozen assertions for Win32 print. + + Correctly check for xcb image surface for inplace upload + + Fix webkit-based web browser crashes due to empty boxes by skipping + over them when tesselating. + + Make pixman, libpng, and zlib paths commandline configurable for win32 + builds. + + Fix image scale on Win32 when GDI scale is not identity. + + Fix float endian configure test when using clang -O4 + + Fix compilation with Android bionic libc + + Don't try to build util/sphinx on Windows + + Fix loss of precision when emitting joins. This was caused by + discrepancies in line gradients when passing trapezoids around. + + Fix loss of precision and associated rendering issues in + cairo-tor-scan-converter from projection onto sample grid. + + Fix pixman oversampling of neighbouring edges within a cell by + eliminating self-intersections for the pixman traps compositor. + + Fix multi-line string splitting in PDFs + + Various cleanups and fixes to warnings, documentation, tests, and + build system. Improve error handling and return value checks. + Cleanup XFAIL tests and reference images. Cover recently added + functionality. + + Release 1.12.16 (2013-08-21 Chris Wilson ) =================================================================== Thanks to everybody who reported a bug and helped us develop a fix, @@ -405,8 +686,8 @@ of edges generated by the general stroker. As part of the focus on performance, Cairo 1.12 introduces some -antialias hints (NONE,FAST, GOOD, BEST) that are interpolated by the -raserisers to fine tune their performance versus quality. Cairo 1.12 +antialias hints (NONE, FAST, GOOD, BEST) that are interpolated by the +rasterisers to fine tune their performance versus quality. Cairo 1.12 also introduces a new observation architecture, cairo_surface_observer_t, which can be used to analyse the amount of time consumed by drawing commands and help identify inefficiencies in diff -Nru cairo-1.13.0~20140204/perf/cairo-perf-chart.c cairo-1.14.2/perf/cairo-perf-chart.c --- cairo-1.13.0~20140204/perf/cairo-perf-chart.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf-chart.c 2015-03-10 22:21:07.000000000 +0000 @@ -57,8 +57,6 @@ #define FONT_SIZE 12 #define PAD (4) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - static double to_factor (double x) { diff -Nru cairo-1.13.0~20140204/perf/cairo-perf-compare-backends.c cairo-1.14.2/perf/cairo-perf-compare-backends.c --- cairo-1.13.0~20140204/perf/cairo-perf-compare-backends.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf-compare-backends.c 2015-03-10 22:21:07.000000000 +0000 @@ -149,7 +149,6 @@ printf("\n"); } -#define MAX(a,b) ((a) > (b) ? (a) : (b)) static void cairo_perf_reports_compare (cairo_perf_report_t *reports, int num_reports, diff -Nru cairo-1.13.0~20140204/perf/cairo-perf-diff-files.c cairo-1.14.2/perf/cairo-perf-diff-files.c --- cairo-1.13.0~20140204/perf/cairo-perf-diff-files.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf-diff-files.c 2015-03-10 22:21:07.000000000 +0000 @@ -220,7 +220,6 @@ printf("\n"); } -#define MAX(a,b) ((a) > (b) ? (a) : (b)) static void cairo_perf_reports_compare (cairo_perf_report_t *reports, int num_reports, diff -Nru cairo-1.13.0~20140204/perf/cairo-perf.h cairo-1.14.2/perf/cairo-perf.h --- cairo-1.13.0~20140204/perf/cairo-perf.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf.h 2015-03-10 22:21:07.000000000 +0000 @@ -195,6 +195,14 @@ #define CAIRO_PERF_DECL(func) CAIRO_PERF_RUN_DECL(func); CAIRO_PERF_ENABLED_DECL(func) +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +#ifndef MAX +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + CAIRO_PERF_DECL (fill); CAIRO_PERF_DECL (paint); CAIRO_PERF_DECL (paint_with_alpha); diff -Nru cairo-1.13.0~20140204/perf/cairo-perf-report.c cairo-1.14.2/perf/cairo-perf-report.c --- cairo-1.13.0~20140204/perf/cairo-perf-report.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf-report.c 2015-03-10 22:21:07.000000000 +0000 @@ -25,8 +25,10 @@ * Authors: Carl Worth */ -#include "cairo-missing.h" +#define _GETDELIM 1/* for getline() on AIX */ + #include "cairo-perf.h" +#include "cairo-missing.h" #include "cairo-stats.h" /* We use _GNU_SOURCE for getline and strndup if available. */ diff -Nru cairo-1.13.0~20140204/perf/cairo-perf-trace.c cairo-1.14.2/perf/cairo-perf-trace.c --- cairo-1.13.0~20140204/perf/cairo-perf-trace.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/cairo-perf-trace.c 2015-03-10 22:21:07.000000000 +0000 @@ -199,7 +199,6 @@ return a->entry.hash == b->entry.hash; } -#define ARRAY_SIZE(A) (sizeof(A)/sizeof(A[0])) static void scache_mark_active (cairo_surface_t *surface) { @@ -210,7 +209,7 @@ return; t0 = cairo_surface_reference (surface); - for (n = 0; n < ARRAY_SIZE (surface_holdovers); n++) { + for (n = 0; n < ARRAY_LENGTH (surface_holdovers); n++) { if (surface_holdovers[n] == surface) { surface_holdovers[n] = t0; t0 = surface; @@ -232,7 +231,7 @@ if (surface_cache == NULL) return; - for (n = 0; n < ARRAY_SIZE (surface_holdovers); n++) { + for (n = 0; n < ARRAY_LENGTH (surface_holdovers); n++) { cairo_surface_destroy (surface_holdovers[n]); surface_holdovers[n] = NULL; } diff -Nru cairo-1.13.0~20140204/perf/Makefile.am cairo-1.14.2/perf/Makefile.am --- cairo-1.13.0~20140204/perf/Makefile.am 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/Makefile.am 2015-03-10 22:21:07.000000000 +0000 @@ -106,9 +106,10 @@ # and TARGETS make var on the command line. Same for the rest. TARGETS = $(CAIRO_TEST_TARGET) TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) +FORMAT = $(CAIRO_TEST_TARGET_FORMAT) ITERS = $(CAIRO_PERF_ITERATIONS) -CAIRO_PERF_ENVIRONMENT = CAIRO_PERF_ITERATIONS="$(ITERS)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" +CAIRO_PERF_ENVIRONMENT = CAIRO_PERF_ITERATIONS="$(ITERS)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" perf: cairo-perf-micro$(EXEEXT) cairo-perf-trace$(EXEEXT) -$(CAIRO_PERF_ENVIRONMENT) ./cairo-perf-micro$(EXEEXT) diff -Nru cairo-1.13.0~20140204/perf/Makefile.in cairo-1.14.2/perf/Makefile.in --- cairo-1.13.0~20140204/perf/Makefile.in 2014-02-04 09:46:57.000000000 +0000 +++ cairo-1.14.2/perf/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -553,6 +553,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -823,8 +824,9 @@ # and TARGETS make var on the command line. Same for the rest. TARGETS = $(CAIRO_TEST_TARGET) TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) +FORMAT = $(CAIRO_TEST_TARGET_FORMAT) ITERS = $(CAIRO_PERF_ITERATIONS) -CAIRO_PERF_ENVIRONMENT = CAIRO_PERF_ITERATIONS="$(ITERS)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" +CAIRO_PERF_ENVIRONMENT = CAIRO_PERF_ITERATIONS="$(ITERS)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS) VALGRIND_MEMCHECK_FLAGS = \ --tool=memcheck \ diff -Nru cairo-1.13.0~20140204/perf/micro/cairo-perf-cover.c cairo-1.14.2/perf/micro/cairo-perf-cover.c --- cairo-1.13.0~20140204/perf/micro/cairo-perf-cover.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/cairo-perf-cover.c 2015-03-10 22:21:07.000000000 +0000 @@ -290,7 +290,6 @@ } typedef void (*set_source_func_t) (cairo_t *cr, int width, int height); -#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0])) void cairo_perf_cover_sources_and_operators (cairo_perf_t *perf, @@ -325,10 +324,10 @@ { CAIRO_OPERATOR_SOURCE, "source" } }; - for (i = 0; i < ARRAY_SIZE (sources); i++) { + for (i = 0; i < ARRAY_LENGTH (sources); i++) { (sources[i].set_source) (perf->cr, perf->size, perf->size); - for (j = 0; j < ARRAY_SIZE (operators); j++) { + for (j = 0; j < ARRAY_LENGTH (operators); j++) { cairo_set_operator (perf->cr, operators[j].op); xasprintf (&expanded_name, "%s_%s_%s", diff -Nru cairo-1.13.0~20140204/perf/micro/disjoint.c cairo-1.14.2/perf/micro/disjoint.c --- cairo-1.13.0~20140204/perf/micro/disjoint.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/disjoint.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ -#include #include "cairo-perf.h" +#include #define STEP 5 diff -Nru cairo-1.13.0~20140204/perf/micro/dragon.c cairo-1.14.2/perf/micro/dragon.c --- cairo-1.13.0~20140204/perf/micro/dragon.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/dragon.c 2015-03-10 22:21:07.000000000 +0000 @@ -28,14 +28,6 @@ #include "cairo-perf.h" -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#ifndef MAX -#define MAX(a,b) (((a) > (b)) ? (a) : (b)) -#endif - static inline int next_pot (int v) { diff -Nru cairo-1.13.0~20140204/perf/micro/hatching.c cairo-1.14.2/perf/micro/hatching.c --- cairo-1.13.0~20140204/perf/micro/hatching.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/hatching.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,17 +24,17 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ -#include #include "cairo-perf.h" +#include #define STEP 5 #define WIDTH 100 #define HEIGHT 100 -static void path (cairo_t *cr, int width, int height) +static void path (cairo_t *cr, unsigned int width, unsigned int height) { - int i; + unsigned int i; for (i = 0; i < width+1; i += STEP) { cairo_rectangle (cr, i-1, -1, 2, height+2); diff -Nru cairo-1.13.0~20140204/perf/micro/Makefile.in cairo-1.14.2/perf/micro/Makefile.in --- cairo-1.13.0~20140204/perf/micro/Makefile.in 2014-02-04 09:46:58.000000000 +0000 +++ cairo-1.14.2/perf/micro/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -454,6 +454,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/perf/micro/pattern_create_radial.c cairo-1.14.2/perf/micro/pattern_create_radial.c --- cairo-1.13.0~20140204/perf/micro/pattern_create_radial.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/pattern_create_radial.c 2015-03-10 22:21:07.000000000 +0000 @@ -28,8 +28,8 @@ * presents a somewhat realistic use-case (although the RADIALS_COUNT * isn't very realistic). */ -#include #include "cairo-perf.h" +#include #define RADIALS_COUNT (10000) diff -Nru cairo-1.13.0~20140204/perf/micro/spiral.c cairo-1.14.2/perf/micro/spiral.c --- cairo-1.13.0~20140204/perf/micro/spiral.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/spiral.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ -#include #include "cairo-perf.h" +#include #define MAX_SEGMENTS 2560 diff -Nru cairo-1.13.0~20140204/perf/micro/zrusin.c cairo-1.14.2/perf/micro/zrusin.c --- cairo-1.13.0~20140204/perf/micro/zrusin.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/perf/micro/zrusin.c 2015-03-10 22:21:07.000000000 +0000 @@ -33,14 +33,12 @@ #include "zrusin-another.h" -#define ARRAY_SIZE(arr) sizeof(arr)/sizeof(arr[0]) - static void zrusin_another_path (cairo_t *cr) { unsigned int i; - for (i=0; i < ARRAY_SIZE (zrusin_another); i++) + for (i=0; i < ARRAY_LENGTH (zrusin_another); i++) cairo_line_to (cr, zrusin_another[i].x, zrusin_another[i].y); } diff -Nru cairo-1.13.0~20140204/README cairo-1.14.2/README --- cairo-1.13.0~20140204/README 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/README 2015-03-10 22:21:07.000000000 +0000 @@ -67,29 +67,31 @@ "platform" backends which depend on some underlying platform-specific system, (such as the X Window System or some other window system). -As an example, for a standard Linux build, (with image, png, pdf, -PostScript, svg, and xlib surface backends, and the freetype font -backend), the following sample commands will install necessary -dependencies: +As an example, for a standard Linux build similar to what's shipped by +your distro, (with image, png, pdf, PostScript, svg, and xlib surface +backends, and the freetype font backend), the following sample commands +will install necessary dependencies: Debian (and similar): - apt-get install libpng12-dev libz-dev libxrender-dev libfontconfig1-dev + apt-get build-dep cairo Fedora (and similar): yum install libpng-devel zlib-devel libXrender-devel fontconfig-devel -(Those commands intentionally don't install pixman from a distribution -package since if you're manually compiling cairo, then you likely want -to grab pixman from the same place at the same time and compile it as -well.) +Technically you probably don't need pixman from the distribution since +if you're manually compiling Cairo you probably want an updated pixman +as well. However, if you follow the default settings and install pixman +to /usr/local, your Cairo build should properly use it in preference to +the system pixman. + Supported, "standard" surface backends ------------------------------------ image backend (required) ------------------------ - pixman >= 0.20.2 http://cairographics.org/releases + pixman >= 0.30.0 http://cairographics.org/releases png support (can be left out if desired, but many ----------- applications expect it to be present) @@ -119,7 +121,7 @@ quartz backend -------------- - MacOS X >= 10.4 with Xcode >= 2.4 + MacOS X >= 10.5 with Xcode >= 3.0 win32 backend ------------- @@ -179,10 +181,18 @@ packages and developer dependencies are available at Netlabs: ftp://ftp.netlabs.org/pub/cairo + skia backend + ------------ + Requires the skia library as of June 2014. Since skia is not + API stable, building against newer (or older) versions of skia + will probably fail. + + Compiling ========= See the INSTALL document for build instructions. + History ======= Cairo was originally developed by Carl Worth and diff -Nru cairo-1.13.0~20140204/RELEASING cairo-1.14.2/RELEASING --- cairo-1.13.0~20140204/RELEASING 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/RELEASING 2015-03-10 22:21:07.000000000 +0000 @@ -2,7 +2,9 @@ 1) Ensure that there are no local, uncommitted/unpushed modifications. You're probably in a good state if both "git diff - HEAD" and "git log master..origin/master" give no output. + HEAD" and "git log master..origin/master" give no output. Also make + sure you have libglib2.0-doc installed (else you'll get excessive + gtk-doc cross reference warnings in the next step). 2) Verify that the code passes "make distcheck" @@ -111,7 +113,7 @@ 8) Push the newly created tag out to the central tree with a command something like: - git push cairo X.Y.Z + git push upstream master X.Y.Z 9) Edit the cairo bugzilla product and add the new version numbers. Note that you need to add two versions. One for the release/snapshot (with diff -Nru cairo-1.13.0~20140204/src/cairo-arc.c cairo-1.14.2/src/cairo-arc.c --- cairo-1.13.0~20140204/src/cairo-arc.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-arc.c 2015-03-10 22:21:07.000000000 +0000 @@ -236,6 +236,10 @@ step = -step; } + cairo_line_to (cr, + xc + radius * cos (angle_min), + yc + radius * sin (angle_min)); + for (i = 0; i < segments; i++, angle_min += step) { _cairo_arc_segment (cr, xc, yc, radius, angle_min, angle_min + step); diff -Nru cairo-1.13.0~20140204/src/cairo-bentley-ottmann.c cairo-1.14.2/src/cairo-bentley-ottmann.c --- cairo-1.13.0~20140204/src/cairo-bentley-ottmann.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-bentley-ottmann.c 2015-03-10 22:21:07.000000000 +0000 @@ -38,9 +38,10 @@ /* Provide definitions for standalone compilation */ #include "cairoint.h" +#include "cairo-combsort-inline.h" #include "cairo-error-private.h" #include "cairo-freelist-private.h" -#include "cairo-combsort-inline.h" +#include "cairo-line-inline.h" #include "cairo-traps-private.h" #define DEBUG_PRINT_STATE 0 @@ -307,156 +308,6 @@ } } -/* - * We need to compare the x-coordinates of a pair of lines 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. For certain, but common, - * input we can reduce this down to a single 32 bit compare by inspecting the - * deltas. - * - * (And put the burden of the work on developing fast 128 bit ops, which are - * required throughout the tessellator.) - * - * See the similar discussion for _slope_compare(). - */ -static int -edges_compare_x_for_y_general (const cairo_bo_edge_t *a, - const cairo_bo_edge_t *b, - int32_t y) -{ - /* XXX: We're assuming here that dx and dy will still fit in 32 - * bits. That's not true in general as there could be overflow. We - * should prevent that before the tessellation algorithm - * begins. - */ - int32_t dx; - int32_t adx, ady; - int32_t bdx, bdy; - enum { - HAVE_NONE = 0x0, - HAVE_DX = 0x1, - HAVE_ADX = 0x2, - HAVE_DX_ADX = HAVE_DX | HAVE_ADX, - HAVE_BDX = 0x4, - HAVE_DX_BDX = HAVE_DX | HAVE_BDX, - HAVE_ADX_BDX = HAVE_ADX | HAVE_BDX, - HAVE_ALL = HAVE_DX | HAVE_ADX | HAVE_BDX - } have_dx_adx_bdx = HAVE_ALL; - - /* don't bother solving for abscissa if the edges' bounding boxes - * can be used to order them. */ - { - int32_t amin, amax; - int32_t bmin, bmax; - if (a->edge.line.p1.x < a->edge.line.p2.x) { - amin = a->edge.line.p1.x; - amax = a->edge.line.p2.x; - } else { - amin = a->edge.line.p2.x; - amax = a->edge.line.p1.x; - } - if (b->edge.line.p1.x < b->edge.line.p2.x) { - bmin = b->edge.line.p1.x; - bmax = b->edge.line.p2.x; - } else { - bmin = b->edge.line.p2.x; - bmax = b->edge.line.p1.x; - } - if (amax < bmin) return -1; - if (amin > bmax) return +1; - } - - ady = a->edge.line.p2.y - a->edge.line.p1.y; - adx = a->edge.line.p2.x - a->edge.line.p1.x; - if (adx == 0) - have_dx_adx_bdx &= ~HAVE_ADX; - - bdy = b->edge.line.p2.y - b->edge.line.p1.y; - bdx = b->edge.line.p2.x - b->edge.line.p1.x; - if (bdx == 0) - have_dx_adx_bdx &= ~HAVE_BDX; - - dx = a->edge.line.p1.x - b->edge.line.p1.x; - if (dx == 0) - have_dx_adx_bdx &= ~HAVE_DX; - -#define L _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (ady, bdy), dx) -#define A _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (adx, bdy), y - a->edge.line.p1.y) -#define B _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (bdx, ady), y - b->edge.line.p1.y) - switch (have_dx_adx_bdx) { - default: - case HAVE_NONE: - return 0; - case HAVE_DX: - /* A_dy * B_dy * (A_x - B_x) ∘ 0 */ - return dx; /* ady * bdy is positive definite */ - case HAVE_ADX: - /* 0 ∘ - (Y - A_y) * A_dx * B_dy */ - return adx; /* bdy * (y - a->top.y) is positive definite */ - case HAVE_BDX: - /* 0 ∘ (Y - B_y) * B_dx * A_dy */ - return -bdx; /* ady * (y - b->top.y) is positive definite */ - case HAVE_ADX_BDX: - /* 0 ∘ (Y - B_y) * B_dx * A_dy - (Y - A_y) * A_dx * B_dy */ - if ((adx ^ bdx) < 0) { - return adx; - } else if (a->edge.line.p1.y == b->edge.line.p1.y) { /* common origin */ - cairo_int64_t adx_bdy, bdx_ady; - - /* ∴ A_dx * B_dy ∘ B_dx * A_dy */ - - adx_bdy = _cairo_int32x32_64_mul (adx, bdy); - bdx_ady = _cairo_int32x32_64_mul (bdx, ady); - - return _cairo_int64_cmp (adx_bdy, bdx_ady); - } else - return _cairo_int128_cmp (A, B); - case HAVE_DX_ADX: - /* A_dy * (A_x - B_x) ∘ - (Y - A_y) * A_dx */ - if ((-adx ^ dx) < 0) { - return dx; - } else { - cairo_int64_t ady_dx, dy_adx; - - ady_dx = _cairo_int32x32_64_mul (ady, dx); - dy_adx = _cairo_int32x32_64_mul (a->edge.line.p1.y - y, adx); - - return _cairo_int64_cmp (ady_dx, dy_adx); - } - case HAVE_DX_BDX: - /* B_dy * (A_x - B_x) ∘ (Y - B_y) * B_dx */ - if ((bdx ^ dx) < 0) { - return dx; - } else { - cairo_int64_t bdy_dx, dy_bdx; - - bdy_dx = _cairo_int32x32_64_mul (bdy, dx); - dy_bdx = _cairo_int32x32_64_mul (y - b->edge.line.p1.y, bdx); - - return _cairo_int64_cmp (bdy_dx, dy_bdx); - } - case HAVE_ALL: - /* XXX try comparing (a->edge.line.p2.x - b->edge.line.p2.x) et al */ - return _cairo_int128_cmp (L, _cairo_int128_sub (B, A)); - } -#undef B -#undef A -#undef L -} /* * We need to compare the x-coordinate of a line for a particular y wrt to a @@ -510,58 +361,6 @@ return _cairo_int64_cmp (L, R); } -static int -edges_compare_x_for_y (const cairo_bo_edge_t *a, - const cairo_bo_edge_t *b, - int32_t y) -{ - /* If the sweep-line is currently on an end-point of a line, - * then we know its precise x value (and considering that we often need to - * compare events at end-points, this happens frequently enough to warrant - * special casing). - */ - enum { - HAVE_NEITHER = 0x0, - HAVE_AX = 0x1, - HAVE_BX = 0x2, - HAVE_BOTH = HAVE_AX | HAVE_BX - } have_ax_bx = HAVE_BOTH; - int32_t ax, bx; - - if (y == a->edge.line.p1.y) - ax = a->edge.line.p1.x; - else if (y == a->edge.line.p2.y) - ax = a->edge.line.p2.x; - else - have_ax_bx &= ~HAVE_AX; - - if (y == b->edge.line.p1.y) - bx = b->edge.line.p1.x; - else if (y == b->edge.line.p2.y) - bx = b->edge.line.p2.x; - else - have_ax_bx &= ~HAVE_BX; - - switch (have_ax_bx) { - default: - case HAVE_NEITHER: - return edges_compare_x_for_y_general (a, b, y); - case HAVE_AX: - return -edge_compare_for_y_against_x (b, y, ax); - case HAVE_BX: - return edge_compare_for_y_against_x (a, y, bx); - case HAVE_BOTH: - return ax - bx; - } -} - -static inline int -_line_equal (const cairo_line_t *a, const cairo_line_t *b) -{ - return a->p1.x == b->p1.x && a->p1.y == b->p1.y && - a->p2.x == b->p2.x && a->p2.y == b->p2.y; -} - static inline int _cairo_bo_sweep_line_compare_edges (const cairo_bo_sweep_line_t *sweep_line, const cairo_bo_edge_t *a, @@ -569,28 +368,11 @@ { int cmp; - /* compare the edges if not identical */ - if (! _line_equal (&a->edge.line, &b->edge.line)) { - if (MAX (a->edge.line.p1.x, a->edge.line.p2.x) < - MIN (b->edge.line.p1.x, b->edge.line.p2.x)) - return -1; - else if (MIN (a->edge.line.p1.x, a->edge.line.p2.x) > - MAX (b->edge.line.p1.x, b->edge.line.p2.x)) - return 1; - - cmp = edges_compare_x_for_y (a, b, sweep_line->current_y); - if (cmp) - return cmp; - - /* The two edges intersect exactly at y, so fall back on slope - * comparison. We know that this compare_edges function will be - * called only when starting a new edge, (not when stopping an - * edge), so we don't have to worry about conditionally inverting - * the sense of _slope_compare. */ - cmp = _slope_compare (a, b); - if (cmp) + cmp = cairo_lines_compare_at_y (&a->edge.line, + &b->edge.line, + sweep_line->current_y); + if (cmp) return cmp; - } /* We've got two collinear edges now. */ return b->edge.bottom - a->edge.bottom; @@ -1090,7 +872,7 @@ MIN (right->edge.line.p1.x, right->edge.line.p2.x)) return CAIRO_STATUS_SUCCESS; - if (_line_equal (&left->edge.line, &right->edge.line)) + if (cairo_lines_equal (&left->edge.line, &right->edge.line)) return CAIRO_STATUS_SUCCESS; /* The names "left" and "right" here are correct descriptions of diff -Nru cairo-1.13.0~20140204/src/cairo-cache-private.h cairo-1.14.2/src/cairo-cache-private.h --- cairo-1.13.0~20140204/src/cairo-cache-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-cache-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -43,7 +43,7 @@ #include "cairo-types-private.h" /** - * cairo_cache_entry_t: + * _cairo_cache_entry: * * A #cairo_cache_entry_t contains both a key and a value for * #cairo_cache_t. User-derived types for #cairo_cache_entry_t must diff -Nru cairo-1.13.0~20140204/src/cairo-cff-subset.c cairo-1.14.2/src/cairo-cff-subset.c --- cairo-1.13.0~20140204/src/cairo-cff-subset.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-cff-subset.c 2015-03-10 22:21:07.000000000 +0000 @@ -295,7 +295,6 @@ static unsigned char * decode_real (unsigned char *p, double *real) { - struct lconv *locale_data; const char *decimal_point; int decimal_point_len; int n; @@ -305,8 +304,7 @@ char *buf = buffer; char *buf_end = buffer + sizeof (buffer); - locale_data = localeconv (); - decimal_point = locale_data->decimal_point; + decimal_point = cairo_get_locale_decimal_point (); decimal_point_len = strlen (decimal_point); assert (decimal_point_len != 0); @@ -435,7 +433,7 @@ p = *ptr; if (p + 2 > end_ptr) return CAIRO_INT_STATUS_UNSUPPORTED; - count = be16_to_cpu( *((uint16_t *)p) ); + count = get_unaligned_be16 (p); p += 2; if (count > 0) { offset_size = *p++; @@ -986,14 +984,14 @@ for (i = 0; i < font->num_glyphs; i++) font->fdselect[i] = *p++; } else if (type == 3) { - num_ranges = be16_to_cpu( *((uint16_t *)p) ); + num_ranges = get_unaligned_be16 (p); p += 2; for (i = 0; i < num_ranges; i++) { - first = be16_to_cpu( *((uint16_t *)p) ); + first = get_unaligned_be16 (p); p += 2; fd = *p++; - last = be16_to_cpu( *((uint16_t *)p) ); + last = get_unaligned_be16 (p); for (j = first; j < last; j++) font->fdselect[j] = fd; } @@ -1724,7 +1722,7 @@ p = font->charset + 1; g = 1; while (g <= (unsigned)font->num_glyphs && p < font->data_end) { - c = be16_to_cpu( *((uint16_t *)p) ); + c = get_unaligned_be16 (p); if (c == cid) { *gid = g; return CAIRO_STATUS_SUCCESS; @@ -1739,7 +1737,7 @@ first_gid = 1; p = font->charset + 1; while (first_gid <= (unsigned)font->num_glyphs && p + 2 < font->data_end) { - first_cid = be16_to_cpu( *((uint16_t *)p) ); + first_cid = get_unaligned_be16 (p); num_left = p[2]; if (cid >= first_cid && cid <= first_cid + num_left) { *gid = first_gid + cid - first_cid; @@ -1755,8 +1753,8 @@ first_gid = 1; p = font->charset + 1; while (first_gid <= (unsigned)font->num_glyphs && p + 3 < font->data_end) { - first_cid = be16_to_cpu( *((uint16_t *)p) ); - num_left = be16_to_cpu( *((uint16_t *)(p+2)) ); + first_cid = get_unaligned_be16 (p); + num_left = get_unaligned_be16 (p+2); if (cid >= first_cid && cid <= first_cid + num_left) { *gid = first_gid + cid - first_cid; return CAIRO_STATUS_SUCCESS; @@ -1851,8 +1849,10 @@ for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { cid = font->scaled_font_subset->glyphs[i]; status = cairo_cff_font_get_gid_for_cid (font, cid, &gid); - if (unlikely (status)) + if (unlikely (status)) { + free (reverse_map); return status; + } fd = font->fdselect[gid]; if (reverse_map[fd] < 0) { @@ -2328,7 +2328,7 @@ unsigned int i; cairo_int_status_t status; unsigned int offset_array; - uint32_t *offset_array_ptr; + unsigned char *offset_array_ptr; int offset_base; uint16_t count; uint8_t offset_size = 4; @@ -2349,7 +2349,7 @@ if (unlikely (status)) return status; offset_base = _cairo_array_num_elements (&font->output) - 1; - *offset_array_ptr = cpu_to_be32(1); + put_unaligned_be32(1, offset_array_ptr); offset_array += sizeof(uint32_t); for (i = 0; i < font->num_subset_fontdicts; i++) { status = cff_dict_write (font->fd_dict[font->fd_subset_map[i]], @@ -2357,8 +2357,9 @@ if (unlikely (status)) return status; - offset_array_ptr = (uint32_t *) _cairo_array_index (&font->output, offset_array); - *offset_array_ptr = cpu_to_be32(_cairo_array_num_elements (&font->output) - offset_base); + offset_array_ptr = _cairo_array_index (&font->output, offset_array); + put_unaligned_be32 (_cairo_array_num_elements (&font->output) - offset_base, + offset_array_ptr); offset_array += sizeof(uint32_t); } @@ -2609,7 +2610,7 @@ unsigned int i; tt_hhea_t hhea; int num_hmetrics; - unsigned char buf[10]; + uint16_t short_entry; int glyph_index; cairo_int_status_t status; @@ -2629,7 +2630,8 @@ status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, TT_TAG_hmtx, glyph_index * long_entry_size, - buf, &short_entry_size); + (unsigned char *) &short_entry, + &short_entry_size); if (unlikely (status)) return status; } @@ -2638,11 +2640,12 @@ status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, TT_TAG_hmtx, (num_hmetrics - 1) * long_entry_size, - buf, &short_entry_size); + (unsigned char *) &short_entry, + &short_entry_size); if (unlikely (status)) return status; } - font->widths[i] = be16_to_cpu (*((int16_t*)buf)); + font->widths[i] = be16_to_cpu (short_entry); } return CAIRO_STATUS_SUCCESS; diff -Nru cairo-1.13.0~20140204/src/cairo-clip-boxes.c cairo-1.14.2/src/cairo-clip-boxes.c --- cairo-1.13.0~20140204/src/cairo-clip-boxes.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-clip-boxes.c 2015-03-10 22:21:07.000000000 +0000 @@ -173,7 +173,7 @@ clip->extents = *r; } else { if (! _cairo_rectangle_intersect (&clip->extents, r)) - clip = _cairo_clip_set_all_clipped (clip); + return _cairo_clip_set_all_clipped (clip); } if (clip->path == NULL) clip->is_region = _cairo_box_is_pixel_aligned (box); @@ -258,6 +258,9 @@ { cairo_rectangle_int_t r; + if (_cairo_clip_is_all_clipped (clip)) + return clip; + _cairo_box_round_to_rectangle (box, &r); if (r.width == 0 || r.height == 0) return _cairo_clip_set_all_clipped (clip); @@ -312,10 +315,12 @@ _cairo_boxes_extents (boxes, &limits); _cairo_box_round_to_rectangle (&limits, &extents); - if (clip->path == NULL) + if (clip->path == NULL) { clip->extents = extents; - else if (! _cairo_rectangle_intersect (&clip->extents, &extents)) + } else if (! _cairo_rectangle_intersect (&clip->extents, &extents)) { clip = _cairo_clip_set_all_clipped (clip); + goto out; + } if (clip->region) { cairo_region_destroy (clip->region); diff -Nru cairo-1.13.0~20140204/src/cairo-cogl-surface.c cairo-1.14.2/src/cairo-cogl-surface.c --- cairo-1.13.0~20140204/src/cairo-cogl-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-cogl-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -143,7 +143,7 @@ * and translations but not for different scales. * * one idea is to track the diagonal lenghts of a unit rectangle - * transformed through the original ctm use to tesselate the geometry + * transformed through the original ctm use to tessellate the geometry * so we can check what the lengths are for any new ctm to know if * this geometry is compatible. */ @@ -167,7 +167,7 @@ * and translations but not for different scales. * * one idea is to track the diagonal lenghts of a unit rectangle - * transformed through the original ctm use to tesselate the geometry + * transformed through the original ctm use to tessellate the geometry * so we can check what the lengths are for any new ctm to know if * this geometry is compatible. */ @@ -805,7 +805,7 @@ _cairo_path_fixed_approximate_clip_extents (&path->path, &extents); /* TODO - maintain a fifo of the last 10 used clips with cached - * primitives to see if we can avoid tesselating the path and + * primitives to see if we can avoid tessellating the path and * uploading the vertices... */ #if 0 @@ -2789,7 +2789,7 @@ ERROR: g_free (dev); - return NULL; + return _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR); } slim_hidden_def (cairo_cogl_device_create); diff -Nru cairo-1.13.0~20140204/src/cairo-compiler-private.h cairo-1.14.2/src/cairo-compiler-private.h --- cairo-1.13.0~20140204/src/cairo-compiler-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-compiler-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -221,16 +221,14 @@ be needed for GCC but it seems fine for now. */ #define CAIRO_ENSURE_UNIQUE \ do { \ - char func[] = __FUNCTION__; \ char file[] = __FILE__; \ __asm { \ __asm jmp __internal_skip_line_no \ - __asm _emit (__LINE__ & 0xff) \ - __asm _emit ((__LINE__>>8) & 0xff) \ - __asm _emit ((__LINE__>>16) & 0xff) \ - __asm _emit ((__LINE__>>24) & 0xff) \ - __asm lea eax, func \ - __asm lea eax, file \ + __asm _emit (__COUNTER__ & 0xff) \ + __asm _emit ((__COUNTER__>>8) & 0xff) \ + __asm _emit ((__COUNTER__>>16) & 0xff)\ + __asm _emit ((__COUNTER__>>24) & 0xff)\ + __asm lea eax, dword ptr file \ __asm __internal_skip_line_no: \ }; \ } while (0) diff -Nru cairo-1.13.0~20140204/src/cairo-composite-rectangles.c cairo-1.14.2/src/cairo-composite-rectangles.c --- cairo-1.13.0~20140204/src/cairo-composite-rectangles.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-composite-rectangles.c 2015-03-10 22:21:07.000000000 +0000 @@ -57,7 +57,7 @@ if (dst->base.type == CAIRO_PATTERN_TYPE_SOLID) return; - dst->base.filter = _cairo_pattern_analyze_filter (&dst->base, NULL), + dst->base.filter = _cairo_pattern_analyze_filter (&dst->base); tx = ty = 0; if (_cairo_matrix_is_pixman_translation (&dst->base.matrix, diff -Nru cairo-1.13.0~20140204/src/cairo-contour.c cairo-1.14.2/src/cairo-contour.c --- cairo-1.13.0~20140204/src/cairo-contour.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-contour.c 2015-03-10 22:21:07.000000000 +0000 @@ -332,7 +332,6 @@ } /* stage2: polygon simplification using Douglas-Peucker */ - simplified = FALSE; do { last = &contour->chain.points[0]; iter_init (&furthest, contour); diff -Nru cairo-1.13.0~20140204/src/cairo-egl-context.c cairo-1.14.2/src/cairo-egl-context.c --- cairo-1.13.0~20140204/src/cairo-egl-context.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-egl-context.c 2015-03-10 22:21:07.000000000 +0000 @@ -244,6 +244,12 @@ return _cairo_gl_context_create_in_error (status); } + /* Tune the default VBO size to reduce overhead on embedded devices. + * This smaller size means that flushing needs to be done more often, + * but it is less demanding of scarce memory on embedded devices. + */ + ctx->base.vbo_size = 16*1024; + eglMakeCurrent (dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); return &ctx->base.base; diff -Nru cairo-1.13.0~20140204/src/cairo-error-private.h cairo-1.14.2/src/cairo-error-private.h --- cairo-1.13.0~20140204/src/cairo-error-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-error-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -46,10 +46,13 @@ CAIRO_BEGIN_DECLS -/* Sure wish C had a real enum type so that this would be distinct +/* _cairo_int_status: internal status + * + * Sure wish C had a real enum type so that this would be distinct * from #cairo_status_t. Oh well, without that, I'll use this bogus 100 * offset. We want to keep it fit in int8_t as the compiler may choose - * that for #cairo_status_t */ + * that for #cairo_status_t + */ enum _cairo_int_status { CAIRO_INT_STATUS_SUCCESS = 0, diff -Nru cairo-1.13.0~20140204/src/cairo-fixed-private.h cairo-1.14.2/src/cairo-fixed-private.h --- cairo-1.13.0~20140204/src/cairo-fixed-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-fixed-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -46,7 +46,7 @@ #if (CAIRO_FIXED_BITS != 32) # error CAIRO_FIXED_BITS must be 32, and the type must be a 32-bit type. -# error To remove this limitation, you will have to fix the tesselator. +# error To remove this limitation, you will have to fix the tessellator. #endif #define CAIRO_FIXED_ONE ((cairo_fixed_t)(1 << CAIRO_FIXED_FRAC_BITS)) @@ -312,7 +312,7 @@ return _cairo_int64_32_div (_cairo_int32x32_64_mul (a, b), c); } - +/* compute y from x so that (x,y), p1, and p2 are collinear */ static inline cairo_fixed_t _cairo_edge_compute_intersection_y_for_x (const cairo_point_t *p1, const cairo_point_t *p2, @@ -333,6 +333,7 @@ return y; } +/* compute x from y so that (x,y), p1, and p2 are collinear */ static inline cairo_fixed_t _cairo_edge_compute_intersection_x_for_y (const cairo_point_t *p1, const cairo_point_t *p2, diff -Nru cairo-1.13.0~20140204/src/cairo-fixed-type-private.h cairo-1.14.2/src/cairo-fixed-type-private.h --- cairo-1.13.0~20140204/src/cairo-fixed-type-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-fixed-type-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -50,7 +50,7 @@ typedef cairo_int128_t cairo_fixed_96_32_t; /* Eventually, we should allow changing this, but I think - * there are some assumptions in the tesselator about the + * there are some assumptions in the tessellator about the * size of a fixed type. For now, it must be 32. */ #define CAIRO_FIXED_BITS 32 diff -Nru cairo-1.13.0~20140204/src/cairo-font-face.c cairo-1.14.2/src/cairo-font-face.c --- cairo-1.13.0~20140204/src/cairo-font-face.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-font-face.c 2015-03-10 22:21:07.000000000 +0000 @@ -128,7 +128,8 @@ } slim_hidden_def (cairo_font_face_reference); -static inline int __put(cairo_reference_count_t *v) +static inline cairo_bool_t +__put(cairo_reference_count_t *v) { int c, old; @@ -136,7 +137,7 @@ while (c != 1 && (old = _cairo_atomic_int_cmpxchg_return_old(&v->ref_count, c, c - 1)) != c) c = old; - return c; + return c != 1; } cairo_bool_t diff -Nru cairo-1.13.0~20140204/src/cairo-ft-font.c cairo-1.14.2/src/cairo-ft-font.c --- cairo-1.13.0~20140204/src/cairo-ft-font.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-ft-font.c 2015-03-10 22:21:07.000000000 +0000 @@ -741,12 +741,11 @@ double min_distance = DBL_MAX; cairo_bool_t magnify = TRUE; int i; - int best_i = 0; double best_x_size = 0; double best_y_size = 0; for (i = 0; i < unscaled->face->num_fixed_sizes; i++) { - double x_size = unscaled->face->available_sizes[i].y_ppem / 64.; + double x_size = unscaled->face->available_sizes[i].x_ppem / 64.; double y_size = unscaled->face->available_sizes[i].y_ppem / 64.; double distance = y_size - y_scale; @@ -760,7 +759,6 @@ if ((magnify && distance >= 0) || fabs (distance) <= min_distance) { magnify = distance < 0; min_distance = fabs (distance); - best_i = i; best_x_size = x_size; best_y_size = y_size; } @@ -1161,7 +1159,9 @@ source = bitmap->buffer; dest = data; for (i = height; i; i--) { - memcpy (dest, source, stride); + memcpy (dest, source, bitmap->pitch); + memset (dest + bitmap->pitch, '\0', stride - bitmap->pitch); + source += bitmap->pitch; dest += stride; } diff -Nru cairo-1.13.0~20140204/src/cairo-ft-private.h cairo-1.14.2/src/cairo-ft-private.h --- cairo-1.13.0~20140204/src/cairo-ft-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-ft-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -37,8 +37,8 @@ #ifndef CAIRO_FT_PRIVATE_H #define CAIRO_FT_PRIVATE_H -#include "cairo-ft.h" #include "cairoint.h" +#include "cairo-ft.h" #if CAIRO_HAS_FT_FONT diff -Nru cairo-1.13.0~20140204/src/cairo-gl-composite.c cairo-1.14.2/src/cairo-gl-composite.c --- cairo-1.13.0~20140204/src/cairo-gl-composite.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-gl-composite.c 2015-03-10 22:21:07.000000000 +0000 @@ -875,7 +875,8 @@ ctx->primitive_type = primitive_type; } - if (ctx->vb_offset + n_vertices * ctx->vertex_size > CAIRO_GL_VBO_SIZE) + assert(ctx->vbo_size > 0); + if (ctx->vb_offset + n_vertices * ctx->vertex_size > ctx->vbo_size) _cairo_gl_composite_flush (ctx); } diff -Nru cairo-1.13.0~20140204/src/cairo-gl-device.c cairo-1.14.2/src/cairo-gl-device.c --- cairo-1.13.0~20140204/src/cairo-gl-device.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-gl-device.c 2015-03-10 22:21:07.000000000 +0000 @@ -297,7 +297,9 @@ if (unlikely (status)) return status; - ctx->vb = malloc (CAIRO_GL_VBO_SIZE); + ctx->vbo_size = _cairo_gl_get_vbo_size(); + + ctx->vb = malloc (ctx->vbo_size); if (unlikely (ctx->vb == NULL)) { _cairo_cache_fini (&ctx->gradients); return _cairo_error (CAIRO_STATUS_NO_MEMORY); diff -Nru cairo-1.13.0~20140204/src/cairo-gl-info.c cairo-1.14.2/src/cairo-gl-info.c --- cairo-1.13.0~20140204/src/cairo-gl-info.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-gl-info.c 2015-03-10 22:21:07.000000000 +0000 @@ -32,6 +32,8 @@ #include "cairoint.h" #include "cairo-gl-private.h" +#include + int _cairo_gl_get_version (void) { @@ -71,6 +73,24 @@ return flavor; } +unsigned long +_cairo_gl_get_vbo_size (void) +{ + unsigned long vbo_size; + + const char *env = getenv ("CAIRO_GL_VBO_SIZE"); + if (env == NULL) { + vbo_size = CAIRO_GL_VBO_SIZE_DEFAULT; + } else { + errno = 0; + vbo_size = strtol (env, NULL, 10); + assert (errno == 0); + assert (vbo_size > 0); + } + + return vbo_size; +} + cairo_bool_t _cairo_gl_has_extension (const char *ext) { diff -Nru cairo-1.13.0~20140204/src/cairo-gl-private.h cairo-1.14.2/src/cairo-gl-private.h --- cairo-1.13.0~20140204/src/cairo-gl-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-gl-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -93,8 +93,9 @@ /* VBO size that we allocate, smaller size means we gotta flush more often, * but larger means hogging more memory and can cause trouble for drivers - * (especially on embedded devices). */ -#define CAIRO_GL_VBO_SIZE (16*1024) + * (especially on embedded devices). Use the CAIRO_GL_VBO_SIZE environment + * variable to set this to a different size. */ +#define CAIRO_GL_VBO_SIZE_DEFAULT (1024*1024) typedef struct _cairo_gl_surface cairo_gl_surface_t; @@ -361,6 +362,7 @@ cairo_gl_operand_t operands[2]; cairo_bool_t spans; + unsigned int vbo_size; unsigned int vb_offset; unsigned int vertex_size; cairo_region_t *clip_region; @@ -702,6 +704,9 @@ cairo_private cairo_gl_flavor_t _cairo_gl_get_flavor (void); +cairo_private unsigned long +_cairo_gl_get_vbo_size (void); + cairo_private cairo_bool_t _cairo_gl_has_extension (const char *ext); diff -Nru cairo-1.13.0~20140204/src/cairo-gl-surface.c cairo-1.14.2/src/cairo-gl-surface.c --- cairo-1.13.0~20140204/src/cairo-gl-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-gl-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -261,6 +261,9 @@ *type = GL_UNSIGNED_BYTE; return TRUE; +#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0,27,2) + case PIXMAN_a8r8g8b8_sRGB: +#endif case PIXMAN_a2b10g10r10: case PIXMAN_x2b10g10r10: case PIXMAN_a4r4g4b4: diff -Nru cairo-1.13.0~20140204/src/cairo.h cairo-1.14.2/src/cairo.h --- cairo-1.13.0~20140204/src/cairo.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo.h 2015-03-10 22:21:07.000000000 +0000 @@ -2211,6 +2211,15 @@ double width, double height); +/** + * cairo_surface_observer_mode_t: + * @CAIRO_SURFACE_OBSERVER_NORMAL: no recording is done + * @CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS: operations are recorded + * + * Whether operations should be recorded. + * + * Since: 1.12 + **/ typedef enum { CAIRO_SURFACE_OBSERVER_NORMAL = 0, CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS = 0x1 @@ -3039,6 +3048,17 @@ **/ typedef struct _cairo_region cairo_region_t; +/** + * cairo_region_overlap_t: + * @CAIRO_REGION_OVERLAP_IN: The contents are entirely inside the region. (Since 1.10) + * @CAIRO_REGION_OVERLAP_OUT: The contents are entirely outside the region. (Since 1.10) + * @CAIRO_REGION_OVERLAP_PART: The contents are partially inside and + * partially outside the region. (Since 1.10) + * + * Used as the return value for cairo_region_contains_rectangle(). + * + * Since: 1.10 + **/ typedef enum _cairo_region_overlap { CAIRO_REGION_OVERLAP_IN, /* completely inside region */ CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ diff -Nru cairo-1.13.0~20140204/src/cairo-image-compositor.c cairo-1.14.2/src/cairo-image-compositor.c --- cairo-1.13.0~20140204/src/cairo-image-compositor.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-image-compositor.c 2015-03-10 22:21:07.000000000 +0000 @@ -308,6 +308,8 @@ } } else { pixman_image_t *src = _pixman_image_for_color (color); + if (unlikely (src == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); op = _pixman_operator (op); for (i = 0; i < num_rects; i++) { @@ -355,6 +357,8 @@ else { pixman_image_t *src = _pixman_image_for_color (color); + if (unlikely (src == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); op = _pixman_operator (op); for (chunk = &boxes->chunks; chunk; chunk = chunk->next) { @@ -507,6 +511,8 @@ op = PIXMAN_OP_LERP_CLEAR; #else free_src = src = _pixman_image_for_color (CAIRO_COLOR_WHITE); + if (unlikely (src == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); op = PIXMAN_OP_OUT_REVERSE; #endif } else if (op == CAIRO_OPERATOR_SOURCE) { @@ -643,11 +649,18 @@ { cairo_image_surface_t *dst = (cairo_image_surface_t *) _dst; cairo_image_source_t *src = (cairo_image_source_t *) abstract_src; + cairo_int_status_t status; pixman_image_t *mask; pixman_format_code_t format; TRACE ((stderr, "%s\n", __FUNCTION__)); + /* pixman doesn't eliminate self-intersecting trapezoids/edges */ + status = _cairo_bentley_ottmann_tessellate_traps (traps, + CAIRO_FILL_RULE_WINDING); + if (status != CAIRO_INT_STATUS_SUCCESS) + return status; + /* Special case adding trapezoids onto a mask surface; we want to avoid * creating an intermediate temporary mask unnecessarily. * @@ -732,6 +745,31 @@ if (strip->num_points < 3) return CAIRO_STATUS_SUCCESS; + if (1) { /* pixman doesn't eliminate self-intersecting triangles/edges */ + cairo_int_status_t status; + cairo_traps_t traps; + int n; + + _cairo_traps_init (&traps); + for (n = 0; n < strip->num_points; n++) { + cairo_point_t p[4]; + + p[0] = strip->points[0]; + p[1] = strip->points[1]; + p[2] = strip->points[2]; + p[3] = strip->points[0]; + + _cairo_traps_tessellate_convex_quad (&traps, p); + } + status = composite_traps (_dst, op, abstract_src, + src_x, src_y, + dst_x, dst_y, + extents, antialias, &traps); + _cairo_traps_fini (&traps); + + return status; + } + format = antialias == CAIRO_ANTIALIAS_NONE ? PIXMAN_a1 : PIXMAN_a8; if (dst->pixman_format == format && (abstract_src == NULL || @@ -1251,7 +1289,7 @@ compositor.draw_image_boxes = draw_image_boxes; compositor.fill_rectangles = fill_rectangles; compositor.fill_boxes = fill_boxes; - //compositor.check_composite = check_composite; + compositor.check_composite = check_composite; compositor.composite = composite; //compositor.lerp = lerp; //compositor.check_composite_boxes = check_composite_boxes; @@ -2204,10 +2242,10 @@ spans[0].x, y, len, 1, r->u.fill.pixel); } else { uint32_t *d = (uint32_t*)(r->u.fill.data + r->u.fill.stride*y + spans[0].x*4); - while (len--) + while (len-- > 0) *d++ = r->u.fill.pixel; } - } else while (len--) { + } else while (len-- > 0) { *d = lerp8x4 (r->u.fill.pixel, a, *d); d++; } diff -Nru cairo-1.13.0~20140204/src/cairo-image-info.c cairo-1.14.2/src/cairo-image-info.c --- cairo-1.13.0~20140204/src/cairo-image-info.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-image-info.c 2015-03-10 22:21:07.000000000 +0000 @@ -39,12 +39,6 @@ #include "cairo-error-private.h" #include "cairo-image-info-private.h" -static uint32_t -_get_be32 (const unsigned char *p) -{ - return p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; -} - /* JPEG (image/jpeg) * * http://www.w3.org/Graphics/JPEG/itu-t81.pdf @@ -170,7 +164,7 @@ static const unsigned char * _jpx_next_box (const unsigned char *p) { - return p + _get_be32 (p); + return p + get_unaligned_be32 (p); } static const unsigned char * @@ -185,8 +179,8 @@ uint32_t length; if (p + 8 < end) { - length = _get_be32 (p); - if (_get_be32 (p + 4) == type && p + length < end) + length = get_unaligned_be32 (p); + if (get_unaligned_be32 (p + 4) == type && p + length < end) return TRUE; } @@ -208,8 +202,8 @@ static void _jpx_extract_info (const unsigned char *p, cairo_image_info_t *info) { - info->height = _get_be32 (p); - info->width = _get_be32 (p + 4); + info->height = get_unaligned_be32 (p); + info->width = get_unaligned_be32 (p + 4); info->num_components = (p[8] << 8) + p[9]; info->bits_per_component = p[10]; } @@ -281,13 +275,13 @@ return CAIRO_INT_STATUS_UNSUPPORTED; p += 4; - if (_get_be32 (p) != PNG_IHDR) + if (get_unaligned_be32 (p) != PNG_IHDR) return CAIRO_INT_STATUS_UNSUPPORTED; p += 4; - info->width = _get_be32 (p); + info->width = get_unaligned_be32 (p); p += 4; - info->height = _get_be32 (p); + info->height = get_unaligned_be32 (p); return CAIRO_STATUS_SUCCESS; } @@ -347,14 +341,14 @@ if (p + 6 >= end) return NULL; - seg_num = _get_be32 (p); + seg_num = get_unaligned_be32 (p); *type = p[4] & 0x3f; big_page_size = (p[4] & 0x40) != 0; p += 5; num_segs = p[0] >> 5; if (num_segs == 7) { - num_segs = _get_be32 (p) & 0x1fffffff; + num_segs = get_unaligned_be32 (p) & 0x1fffffff; ref_seg_bytes = 4 + ((num_segs + 1)/8); } else { ref_seg_bytes = 1; @@ -373,7 +367,7 @@ if (p + 4 >= end) return NULL; - *data_len = _get_be32 (p); + *data_len = get_unaligned_be32 (p); p += 4; *data = p; @@ -397,8 +391,8 @@ static void _jbig2_extract_info (cairo_image_info_t *info, const unsigned char *p) { - info->width = _get_be32 (p); - info->height = _get_be32 (p + 4); + info->width = get_unaligned_be32 (p); + info->height = get_unaligned_be32 (p + 4); info->num_components = 1; info->bits_per_component = 1; } diff -Nru cairo-1.13.0~20140204/src/cairo-image-source.c cairo-1.14.2/src/cairo-image-source.c --- cairo-1.13.0~20140204/src/cairo-image-source.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-image-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -526,6 +526,368 @@ } } +/* ========================================================================== */ + +/* Index into filter table */ +typedef enum +{ + KERNEL_IMPULSE, + KERNEL_BOX, + KERNEL_LINEAR, + KERNEL_MITCHELL, + KERNEL_NOTCH, + KERNEL_CATMULL_ROM, + KERNEL_LANCZOS3, + KERNEL_LANCZOS3_STRETCHED, + KERNEL_TENT +} kernel_t; + +/* Produce contribution of a filter of size r for pixel centered on x. + For a typical low-pass function this evaluates the function at x/r. + If the frequency is higher than 1/2, such as when r is less than 1, + this may need to integrate several samples, see cubic for examples. +*/ +typedef double (* kernel_func_t) (double x, double r); + +/* Return maximum number of pixels that will be non-zero. Except for + impluse this is the maximum of 2 and the width of the non-zero part + of the filter rounded up to the next integer. +*/ +typedef int (* kernel_width_func_t) (double r); + +/* Table of filters */ +typedef struct +{ + kernel_t kernel; + kernel_func_t func; + kernel_width_func_t width; +} filter_info_t; + +/* PIXMAN_KERNEL_IMPULSE: Returns pixel nearest the center. This + matches PIXMAN_FILTER_NEAREST. This is useful if you wish to + combine the result of nearest in one direction with another filter + in the other. +*/ + +static double +impulse_kernel (double x, double r) +{ + return 1; +} + +static int +impulse_width (double r) +{ + return 1; +} + +/* PIXMAN_KERNEL_BOX: Intersection of a box of width r with square + pixels. This is the smallest possible filter such that the output + image contains an equal contribution from all the input + pixels. Lots of software uses this. The function is a trapazoid of + width r+1, not a box. + + When r == 1.0, PIXMAN_KERNEL_BOX, PIXMAN_KERNEL_LINEAR, and + PIXMAN_KERNEL_TENT all produce the same filter, allowing + them to be exchanged at this point. +*/ + +static double +box_kernel (double x, double r) +{ + return MAX (0.0, MIN (MIN (r, 1.0), + MIN ((r + 1) / 2 - x, (r + 1) / 2 + x))); +} + +static int +box_width (double r) +{ + return r < 1.0 ? 2 : ceil(r + 1); +} + +/* PIXMAN_KERNEL_LINEAR: Weighted sum of the two pixels nearest the + center, or a triangle of width 2. This matches + PIXMAN_FILTER_BILINEAR. This is useful if you wish to combine the + result of bilinear in one direction with another filter in the + other. This is not a good filter if r > 1. You may actually want + PIXMAN_FILTER_TENT. + + When r == 1.0, PIXMAN_KERNEL_BOX, PIXMAN_KERNEL_LINEAR, and + PIXMAN_KERNEL_TENT all produce the same filter, allowing + them to be exchanged at this point. +*/ + +static double +linear_kernel (double x, double r) +{ + return MAX (1.0 - fabs(x), 0.0); +} + +static int +linear_width (double r) +{ + return 2; +} + +/* Cubic functions described in the Mitchell-Netravali paper. + http://mentallandscape.com/Papers_siggraph88.pdf. This describes + all possible cubic functions that can be used for sampling. +*/ + +static double +general_cubic (double x, double r, double B, double C) +{ + double ax; + if (r < 1.0) + return + general_cubic(x * 2 - .5, r * 2, B, C) + + general_cubic(x * 2 + .5, r * 2, B, C); + + ax = fabs (x / r); + + if (ax < 1) + { + return (((12 - 9 * B - 6 * C) * ax + + (-18 + 12 * B + 6 * C)) * ax * ax + + (6 - 2 * B)) / 6; + } + else if (ax < 2) + { + return ((((-B - 6 * C) * ax + + (6 * B + 30 * C)) * ax + + (-12 * B - 48 * C)) * ax + + (8 * B + 24 * C)) / 6; + } + else + { + return 0.0; + } +} + +static int +cubic_width (double r) +{ + return MAX (2, ceil (r * 4)); +} + +/* PIXMAN_KERNEL_CATMULL_ROM: Catmull-Rom interpolation. Often called + "cubic interpolation", "b-spline", or just "cubic" by other + software. This filter has negative values so it can produce ringing + and output pixels outside the range of input pixels. This is very + close to lanczos2 so there is no reason to supply that as well. +*/ + +static double +cubic_kernel (double x, double r) +{ + return general_cubic (x, r, 0.0, 0.5); +} + +/* PIXMAN_KERNEL_MITCHELL: Cubic recommended by the Mitchell-Netravali + paper. This has negative values and because the values at +/-1 are + not zero it does not interpolate the pixels, meaning it will change + an image even if there is no translation. +*/ + +static double +mitchell_kernel (double x, double r) +{ + return general_cubic (x, r, 1/3.0, 1/3.0); +} + +/* PIXMAN_KERNEL_NOTCH: Cubic recommended by the Mitchell-Netravali + paper to remove postaliasing artifacts. This does not remove + aliasing already present in the source image, though it may appear + to due to it's excessive blurriness. In any case this is more + useful than gaussian for image reconstruction. +*/ + +static double +notch_kernel (double x, double r) +{ + return general_cubic (x, r, 1.5, -0.25); +} + +/* PIXMAN_KERNEL_LANCZOS3: lanczos windowed sinc function from -3 to + +3. Very popular with high-end software though I think any + advantage over cubics is hidden by quantization and programming + mistakes. You will see LANCZOS5 or even 7 sometimes. +*/ + +static double +sinc (double x) +{ + return x ? sin (M_PI * x) / (M_PI * x) : 1.0; +} + +static double +lanczos (double x, double n) +{ + return fabs (x) < n ? sinc (x) * sinc (x * (1.0 / n)) : 0.0; +} + +static double +lanczos3_kernel (double x, double r) +{ + if (r < 1.0) + return + lanczos3_kernel (x * 2 - .5, r * 2) + + lanczos3_kernel (x * 2 + .5, r * 2); + else + return lanczos (x / r, 3.0); +} + +static int +lanczos3_width (double r) +{ + return MAX (2, ceil (r * 6)); +} + +/* PIXMAN_KERNEL_LANCZOS3_STRETCHED - The LANCZOS3 kernel widened by + 4/3. Recommended by Jim Blinn + http://graphics.cs.cmu.edu/nsp/course/15-462/Fall07/462/papers/jaggy.pdf +*/ + +static double +nice_kernel (double x, double r) +{ + return lanczos3_kernel (x, r * (4.0/3)); +} + +static int +nice_width (double r) +{ + return MAX (2.0, ceil (r * 8)); +} + +/* PIXMAN_KERNEL_TENT: Triangle of width 2r. Lots of software uses + this as a "better" filter, twice the size of a box but smaller than + a cubic. + + When r == 1.0, PIXMAN_KERNEL_BOX, PIXMAN_KERNEL_LINEAR, and + PIXMAN_KERNEL_TENT all produce the same filter, allowing + them to be exchanged at this point. +*/ + +static double +tent_kernel (double x, double r) +{ + if (r < 1.0) + return box_kernel(x, r); + else + return MAX (1.0 - fabs(x / r), 0.0); +} + +static int +tent_width (double r) +{ + return r < 1.0 ? 2 : ceil(2 * r); +} + + +static const filter_info_t filters[] = +{ + { KERNEL_IMPULSE, impulse_kernel, impulse_width }, + { KERNEL_BOX, box_kernel, box_width }, + { KERNEL_LINEAR, linear_kernel, linear_width }, + { KERNEL_MITCHELL, mitchell_kernel, cubic_width }, + { KERNEL_NOTCH, notch_kernel, cubic_width }, + { KERNEL_CATMULL_ROM, cubic_kernel, cubic_width }, + { KERNEL_LANCZOS3, lanczos3_kernel, lanczos3_width }, + { KERNEL_LANCZOS3_STRETCHED,nice_kernel, nice_width }, + { KERNEL_TENT, tent_kernel, tent_width } +}; + +/* Fills in one dimension of the filter array */ +static void get_filter(kernel_t filter, double r, + int width, int subsample, + pixman_fixed_t* out) +{ + int i; + pixman_fixed_t *p = out; + int n_phases = 1 << subsample; + double step = 1.0 / n_phases; + kernel_func_t func = filters[filter].func; + + /* special-case the impulse filter: */ + if (width <= 1) + { + for (i = 0; i < n_phases; ++i) + *p++ = pixman_fixed_1; + return; + } + + for (i = 0; i < n_phases; ++i) + { + double frac = (i + .5) * step; + /* Center of left-most pixel: */ + double x1 = ceil (frac - width / 2.0 - 0.5) - frac + 0.5; + double total = 0; + pixman_fixed_t new_total = 0; + int j; + + for (j = 0; j < width; ++j) + { + double v = func(x1 + j, r); + total += v; + p[j] = pixman_double_to_fixed (v); + } + + /* Normalize */ + total = 1 / total; + for (j = 0; j < width; ++j) + new_total += (p[j] *= total); + + /* Put any error on center pixel */ + p[width / 2] += (pixman_fixed_1 - new_total); + + p += width; + } +} + + +/* Create the parameter list for a SEPARABLE_CONVOLUTION filter + * with the given kernels and scale parameters. + */ +static pixman_fixed_t * +create_separable_convolution (int *n_values, + kernel_t xfilter, + double sx, + kernel_t yfilter, + double sy) +{ + int xwidth, xsubsample, ywidth, ysubsample, size_x, size_y; + pixman_fixed_t *params; + + xwidth = filters[xfilter].width(sx); + xsubsample = 0; + if (xwidth > 1) + while (sx * (1 << xsubsample) <= 128.0) xsubsample++; + size_x = (1 << xsubsample) * xwidth; + + ywidth = filters[yfilter].width(sy); + ysubsample = 0; + if (ywidth > 1) + while (sy * (1 << ysubsample) <= 128.0) ysubsample++; + size_y = (1 << ysubsample) * ywidth; + + *n_values = 4 + size_x + size_y; + params = malloc (*n_values * sizeof (pixman_fixed_t)); + if (!params) return 0; + + params[0] = pixman_int_to_fixed (xwidth); + params[1] = pixman_int_to_fixed (ywidth); + params[2] = pixman_int_to_fixed (xsubsample); + params[3] = pixman_int_to_fixed (ysubsample); + + get_filter(xfilter, sx, xwidth, xsubsample, params + 4); + get_filter(yfilter, sy, ywidth, ysubsample, params + 4 + size_x); + + return params; +} + +/* ========================================================================== */ + static cairo_bool_t _pixman_image_set_properties (pixman_image_t *pixman_image, const cairo_pattern_t *pattern, @@ -554,42 +916,66 @@ } else { - double scale_x, scale_y; - int shrink_x, shrink_y; pixman_filter_t pixman_filter; - pixman_kernel_t pixman_kernel_sample, pixman_kernel_reconstruct; + kernel_t kernel; + double dx, dy; + + /* Compute scale factors from the pattern matrix. These scale + * factors are from user to pattern space, and as such they + * are greater than 1.0 for downscaling and less than 1.0 for + * upscaling. The factors are the size of an axis-aligned + * rectangle with the same area as the parallelgram a 1x1 + * square transforms to. + */ + dx = hypot (pattern->matrix.xx, pattern->matrix.xy); + dy = hypot (pattern->matrix.yx, pattern->matrix.yy); - /* Compute scale factors as the length of basis vectors transformed by - * the pattern matrix. These scale factors are from user to pattern space, - * and as such they are greater than 1.0 for downscaling and less than 1.0 - * for upscaling. - * TODO: this approach may not be completely correct if the matrix - * contains a skew component. */ - scale_x = hypot (pattern->matrix.xx, pattern->matrix.yx); - scale_y = hypot (pattern->matrix.yx, pattern->matrix.yy); - - /* Use convolution filtering if the transformation shrinks the image - * by more than half a pixel */ - shrink_x = (extents->width / scale_x - extents->width) < -0.5; - shrink_y = (extents->height / scale_y - extents->height) < -0.5; + /* Clip at maximum pixman_fixed number. Besides making it + * passable to pixman, this avoids errors from inf and nan. + */ + if (! (dx < 0x7FFF)) dx = 0x7FFF; + if (! (dy < 0x7FFF)) dy = 0x7FFF; switch (pattern->filter) { case CAIRO_FILTER_FAST: + pixman_filter = PIXMAN_FILTER_FAST; + break; + case CAIRO_FILTER_GOOD: + pixman_filter = PIXMAN_FILTER_SEPARABLE_CONVOLUTION; + kernel = KERNEL_BOX; + /* Clip the filter size to prevent extreme slowness. This + value could be raised if 2-pass filtering is done */ + if (dx > 16.0) dx = 16.0; + if (dy > 16.0) dy = 16.0; + /* Match the bilinear filter for scales > .75: */ + if (dx < 1.0/0.75) dx = 1.0; + if (dy < 1.0/0.75) dy = 1.0; + break; + case CAIRO_FILTER_BEST: + pixman_filter = PIXMAN_FILTER_SEPARABLE_CONVOLUTION; + kernel = KERNEL_CATMULL_ROM; /* LANCZOS3 is better but not much */ + /* Clip the filter size to prevent extreme slowness. This + value could be raised if 2-pass filtering is done */ + if (dx > 16.0) { dx = 16.0; kernel = KERNEL_BOX; } + /* blur up to 2x scale, then blend to square pixels for larger: */ + else if (dx < 1.0) { + if (dx < 1.0/128) dx = 1.0/127; + else if (dx < 0.5) dx = 1.0 / (1.0 / dx - 1.0); + else dx = 1.0; + } + if (dy > 16.0) { dy = 16.0; kernel = KERNEL_BOX; } + else if (dy < 1.0) { + if (dy < 1.0/128) dy = 1.0/127; + else if (dy < 0.5) dy = 1.0 / (1.0 / dy - 1.0); + else dy = 1.0; + } + break; case CAIRO_FILTER_NEAREST: pixman_filter = PIXMAN_FILTER_NEAREST; - pixman_kernel_sample = PIXMAN_KERNEL_IMPULSE; - pixman_kernel_reconstruct = PIXMAN_KERNEL_BOX; break; - case CAIRO_FILTER_GOOD: case CAIRO_FILTER_BILINEAR: pixman_filter = PIXMAN_FILTER_BILINEAR; - pixman_kernel_sample = PIXMAN_KERNEL_BOX; - pixman_kernel_reconstruct = PIXMAN_KERNEL_LINEAR; break; - case CAIRO_FILTER_BEST: - pixman_filter = PIXMAN_FILTER_BEST; - pixman_kernel_sample = PIXMAN_KERNEL_LANCZOS3; - pixman_kernel_reconstruct = PIXMAN_KERNEL_LANCZOS3; case CAIRO_FILTER_GAUSSIAN: /* XXX: The GAUSSIAN value has no implementation in cairo * whatsoever, so it was really a mistake to have it in the @@ -597,33 +983,16 @@ * else inventing semantics and providing an actual * implementation for it. */ default: - pixman_filter = PIXMAN_FILTER_BILINEAR; - pixman_kernel_sample = PIXMAN_KERNEL_BOX; - pixman_kernel_reconstruct = PIXMAN_KERNEL_LINEAR; + pixman_filter = PIXMAN_FILTER_BEST; } - if (pixman_filter != PIXMAN_FILTER_NEAREST && (shrink_x || shrink_y)) { - pixman_kernel_t sampling_kernel_x, sampling_kernel_y; + if (pixman_filter == PIXMAN_FILTER_SEPARABLE_CONVOLUTION) { int n_params; pixman_fixed_t *params; - - sampling_kernel_x = shrink_x ? pixman_kernel_sample : PIXMAN_KERNEL_IMPULSE; - sampling_kernel_y = shrink_y ? pixman_kernel_sample : PIXMAN_KERNEL_IMPULSE; - - n_params = 0; - params = pixman_filter_create_separable_convolution (&n_params, - scale_x * 65536.0 + 0.5, - scale_y * 65536.0 + 0.5, - pixman_kernel_reconstruct, - pixman_kernel_reconstruct, - sampling_kernel_x, - sampling_kernel_y, - 1, 1); - - pixman_image_set_filter (pixman_image, - PIXMAN_FILTER_SEPARABLE_CONVOLUTION, + params = create_separable_convolution + (&n_params, kernel, dx, kernel, dy); + pixman_image_set_filter (pixman_image, pixman_filter, params, n_params); - free (params); } else { pixman_image_set_filter (pixman_image, pixman_filter, NULL, 0); diff -Nru cairo-1.13.0~20140204/src/cairo-image-surface.c cairo-1.14.2/src/cairo-image-surface.c --- cairo-1.13.0~20140204/src/cairo-image-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-image-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -422,7 +422,7 @@ * * int stride; * unsigned char *data; - * #cairo_surface_t *surface; + * cairo_surface_t *surface; * * stride = cairo_format_stride_for_width (format, width); * data = malloc (stride * height); diff -Nru cairo-1.13.0~20140204/src/cairoint.h cairo-1.14.2/src/cairoint.h --- cairo-1.13.0~20140204/src/cairoint.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairoint.h 2015-03-10 22:21:07.000000000 +0000 @@ -229,7 +229,7 @@ static inline uint32_t cairo_const cpu_to_be32(uint32_t v) { - return (cpu_to_be16 (v) << 16) | cpu_to_be16 (v >> 16); + return (v >> 24) | ((v >> 8) & 0xff00) | ((v << 8) & 0xff0000) | (v << 24); } static inline uint32_t cairo_const @@ -240,6 +240,32 @@ #endif +/* Unaligned big endian access + */ + +static inline uint16_t get_unaligned_be16 (const unsigned char *p) +{ + return p[0] << 8 | p[1]; +} + +static inline uint32_t get_unaligned_be32 (const unsigned char *p) +{ + return p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; +} + +static inline void put_unaligned_be16 (uint16_t v, unsigned char *p) +{ + p[0] = (v >> 8) & 0xff; + p[1] = v & 0xff; +} + +static inline void put_unaligned_be32 (uint32_t v, unsigned char *p) +{ + p[0] = (v >> 24) & 0xff; + p[1] = (v >> 16) & 0xff; + p[2] = (v >> 8) & 0xff; + p[3] = v & 0xff; +} /* The glibc versions of ispace() and isdigit() are slow in UTF-8 locales. */ @@ -871,6 +897,9 @@ cairo_private void _cairo_intern_string_reset_static_data (void); +cairo_private const char * +cairo_get_locale_decimal_point (void); + /* cairo-path-fixed.c */ cairo_private cairo_path_fixed_t * _cairo_path_fixed_create (void); @@ -1321,7 +1350,7 @@ _cairo_surface_map_to_image (cairo_surface_t *surface, const cairo_rectangle_int_t *extents); -cairo_private cairo_int_status_t +cairo_private_no_warn cairo_int_status_t _cairo_surface_unmap_image (cairo_surface_t *surface, cairo_image_surface_t *image); @@ -1609,18 +1638,18 @@ cairo_private void _cairo_polygon_fini (cairo_polygon_t *polygon); -cairo_private cairo_status_t +cairo_private_no_warn cairo_status_t _cairo_polygon_add_line (cairo_polygon_t *polygon, const cairo_line_t *line, int top, int bottom, int dir); -cairo_private cairo_status_t +cairo_private_no_warn cairo_status_t _cairo_polygon_add_external_edge (void *polygon, const cairo_point_t *p1, const cairo_point_t *p2); -cairo_private cairo_status_t +cairo_private_no_warn cairo_status_t _cairo_polygon_add_contour (cairo_polygon_t *polygon, const cairo_contour_t *contour); @@ -2006,10 +2035,6 @@ #endif -cairo_private_no_warn cairo_filter_t -_cairo_pattern_analyze_filter (const cairo_pattern_t *pattern, - double *pad_out); - CAIRO_END_DECLS #include "cairo-mutex-private.h" diff -Nru cairo-1.13.0~20140204/src/cairo-line.c cairo-1.14.2/src/cairo-line.c --- cairo-1.13.0~20140204/src/cairo-line.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/src/cairo-line.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,306 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* + * Copyright © 2004 Carl Worth + * Copyright © 2006 Red Hat, Inc. + * Copyright © 2008 Chris Wilson + * Copyright © 2014 Intel Corporation + * + * 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 Keith Packard + * + * Contributor(s): + * Carl D. Worth + * Chris Wilson + * + */ + +#include "cairoint.h" + +#include "cairo-line-inline.h" +#include "cairo-slope-private.h" + +static int +line_compare_for_y_against_x (const cairo_line_t *a, + int32_t y, + int32_t x) +{ + int32_t adx, ady; + int32_t dx, dy; + cairo_int64_t L, R; + + if (x < a->p1.x && x < a->p2.x) + return 1; + if (x > a->p1.x && x > a->p2.x) + return -1; + + adx = a->p2.x - a->p1.x; + dx = x - a->p1.x; + + if (adx == 0) + return -dx; + if (dx == 0 || (adx ^ dx) < 0) + return adx; + + dy = y - a->p1.y; + ady = a->p2.y - a->p1.y; + + L = _cairo_int32x32_64_mul (dy, adx); + R = _cairo_int32x32_64_mul (dx, ady); + + return _cairo_int64_cmp (L, R); +} + +/* + * We need to compare the x-coordinates of a pair of lines 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. For certain, but common, + * input we can reduce this down to a single 32 bit compare by inspecting the + * deltas. + * + * (And put the burden of the work on developing fast 128 bit ops, which are + * required throughout the tessellator.) + * + * See the similar discussion for _slope_compare(). + */ +static int +lines_compare_x_for_y_general (const cairo_line_t *a, + const cairo_line_t *b, + int32_t y) +{ + /* XXX: We're assuming here that dx and dy will still fit in 32 + * bits. That's not true in general as there could be overflow. We + * should prevent that before the tessellation algorithm + * begins. + */ + int32_t dx; + int32_t adx, ady; + int32_t bdx, bdy; + enum { + HAVE_NONE = 0x0, + HAVE_DX = 0x1, + HAVE_ADX = 0x2, + HAVE_DX_ADX = HAVE_DX | HAVE_ADX, + HAVE_BDX = 0x4, + HAVE_DX_BDX = HAVE_DX | HAVE_BDX, + HAVE_ADX_BDX = HAVE_ADX | HAVE_BDX, + HAVE_ALL = HAVE_DX | HAVE_ADX | HAVE_BDX + } have_dx_adx_bdx = HAVE_ALL; + + ady = a->p2.y - a->p1.y; + adx = a->p2.x - a->p1.x; + if (adx == 0) + have_dx_adx_bdx &= ~HAVE_ADX; + + bdy = b->p2.y - b->p1.y; + bdx = b->p2.x - b->p1.x; + if (bdx == 0) + have_dx_adx_bdx &= ~HAVE_BDX; + + dx = a->p1.x - b->p1.x; + if (dx == 0) + have_dx_adx_bdx &= ~HAVE_DX; + +#define L _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (ady, bdy), dx) +#define A _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (adx, bdy), y - a->p1.y) +#define B _cairo_int64x32_128_mul (_cairo_int32x32_64_mul (bdx, ady), y - b->p1.y) + switch (have_dx_adx_bdx) { + default: + case HAVE_NONE: + return 0; + case HAVE_DX: + /* A_dy * B_dy * (A_x - B_x) ∘ 0 */ + return dx; /* ady * bdy is positive definite */ + case HAVE_ADX: + /* 0 ∘ - (Y - A_y) * A_dx * B_dy */ + return adx; /* bdy * (y - a->top.y) is positive definite */ + case HAVE_BDX: + /* 0 ∘ (Y - B_y) * B_dx * A_dy */ + return -bdx; /* ady * (y - b->top.y) is positive definite */ + case HAVE_ADX_BDX: + /* 0 ∘ (Y - B_y) * B_dx * A_dy - (Y - A_y) * A_dx * B_dy */ + if ((adx ^ bdx) < 0) { + return adx; + } else if (a->p1.y == b->p1.y) { /* common origin */ + cairo_int64_t adx_bdy, bdx_ady; + + /* ∴ A_dx * B_dy ∘ B_dx * A_dy */ + + adx_bdy = _cairo_int32x32_64_mul (adx, bdy); + bdx_ady = _cairo_int32x32_64_mul (bdx, ady); + + return _cairo_int64_cmp (adx_bdy, bdx_ady); + } else + return _cairo_int128_cmp (A, B); + case HAVE_DX_ADX: + /* A_dy * (A_x - B_x) ∘ - (Y - A_y) * A_dx */ + if ((-adx ^ dx) < 0) { + return dx; + } else { + cairo_int64_t ady_dx, dy_adx; + + ady_dx = _cairo_int32x32_64_mul (ady, dx); + dy_adx = _cairo_int32x32_64_mul (a->p1.y - y, adx); + + return _cairo_int64_cmp (ady_dx, dy_adx); + } + case HAVE_DX_BDX: + /* B_dy * (A_x - B_x) ∘ (Y - B_y) * B_dx */ + if ((bdx ^ dx) < 0) { + return dx; + } else { + cairo_int64_t bdy_dx, dy_bdx; + + bdy_dx = _cairo_int32x32_64_mul (bdy, dx); + dy_bdx = _cairo_int32x32_64_mul (y - b->p1.y, bdx); + + return _cairo_int64_cmp (bdy_dx, dy_bdx); + } + case HAVE_ALL: + /* XXX try comparing (a->p2.x - b->p2.x) et al */ + return _cairo_int128_cmp (L, _cairo_int128_sub (B, A)); + } +#undef B +#undef A +#undef L +} + +static int +lines_compare_x_for_y (const cairo_line_t *a, + const cairo_line_t *b, + int32_t y) +{ + /* If the sweep-line is currently on an end-point of a line, + * then we know its precise x value (and considering that we often need to + * compare events at end-points, this happens frequently enough to warrant + * special casing). + */ + enum { + HAVE_NEITHER = 0x0, + HAVE_AX = 0x1, + HAVE_BX = 0x2, + HAVE_BOTH = HAVE_AX | HAVE_BX + } have_ax_bx = HAVE_BOTH; + int32_t ax, bx; + + if (y == a->p1.y) + ax = a->p1.x; + else if (y == a->p2.y) + ax = a->p2.x; + else + have_ax_bx &= ~HAVE_AX; + + if (y == b->p1.y) + bx = b->p1.x; + else if (y == b->p2.y) + bx = b->p2.x; + else + have_ax_bx &= ~HAVE_BX; + + switch (have_ax_bx) { + default: + case HAVE_NEITHER: + return lines_compare_x_for_y_general (a, b, y); + case HAVE_AX: + return -line_compare_for_y_against_x (b, y, ax); + case HAVE_BX: + return line_compare_for_y_against_x (a, y, bx); + case HAVE_BOTH: + return ax - bx; + } +} + +static int bbox_compare (const cairo_line_t *a, + const cairo_line_t *b) +{ + int32_t amin, amax; + int32_t bmin, bmax; + + if (a->p1.x < a->p2.x) { + amin = a->p1.x; + amax = a->p2.x; + } else { + amin = a->p2.x; + amax = a->p1.x; + } + + if (b->p1.x < b->p2.x) { + bmin = b->p1.x; + bmax = b->p2.x; + } else { + bmin = b->p2.x; + bmax = b->p1.x; + } + + if (amax < bmin) + return -1; + + if (amin > bmax) + return +1; + + return 0; +} + +int cairo_lines_compare_at_y (const cairo_line_t *a, + const cairo_line_t *b, + int y) +{ + cairo_slope_t sa, sb; + int ret; + + if (cairo_lines_equal (a, b)) + return 0; + + /* Don't bother solving for abscissa if the edges' bounding boxes + * can be used to order them. + */ + ret = bbox_compare (a, b); + if (ret) + return ret; + + ret = lines_compare_x_for_y (a, b, y); + if (ret) + return ret; + + _cairo_slope_init (&sa, &a->p1, &a->p2); + _cairo_slope_init (&sb, &b->p1, &b->p2); + + return _cairo_slope_compare (&sb, &sa); +} diff -Nru cairo-1.13.0~20140204/src/cairo-line-inline.h cairo-1.14.2/src/cairo-line-inline.h --- cairo-1.13.0~20140204/src/cairo-line-inline.h 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/src/cairo-line-inline.h 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,48 @@ +/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2014 Intel Corporation + * + * 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. + * + */ + +#ifndef CAIRO_LINE_INLINE_H +#define CAIRO_LINE_INLINE_H + +#include "cairo-types-private.h" +#include "cairo-compiler-private.h" +#include "cairo-fixed-private.h" +#include "cairo-line-private.h" + +static inline int +cairo_lines_equal (const cairo_line_t *a, const cairo_line_t *b) +{ + return (a->p1.x == b->p1.x && a->p1.y == b->p1.y && + a->p2.x == b->p2.x && a->p2.y == b->p2.y); +} + +#endif /* CAIRO_LINE_INLINE_H */ diff -Nru cairo-1.13.0~20140204/src/cairo-line-private.h cairo-1.14.2/src/cairo-line-private.h --- cairo-1.13.0~20140204/src/cairo-line-private.h 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/src/cairo-line-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,51 @@ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2014 Intel Corporation, 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 University of Southern + * California. + * + */ + +#ifndef CAIRO_LINE_PRIVATE_H +#define CAIRO_LINE_PRIVATE_H + +#include "cairo-types-private.h" +#include "cairo-error-private.h" +#include "cairo-compiler-private.h" + +CAIRO_BEGIN_DECLS + +cairo_private int +cairo_lines_compare_at_y(const cairo_line_t *a, + const cairo_line_t *b, + int y); + +CAIRO_END_DECLS + +#endif /* CAIRO_LINE_PRIVATE_H */ diff -Nru cairo-1.13.0~20140204/src/cairo-matrix.c cairo-1.14.2/src/cairo-matrix.c --- cairo-1.13.0~20140204/src/cairo-matrix.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-matrix.c 2015-03-10 22:21:07.000000000 +0000 @@ -748,23 +748,32 @@ return FALSE; } +#define SCALING_EPSILON _cairo_fixed_to_double(1) + +/* This only returns true if the matrix is 90 degree rotations or + * flips. It appears calling code is relying on this. It will return + * false for other rotations even if the scale is one. Approximations + * are allowed to handle matricies filled in using trig functions + * such as sin(M_PI_2). + */ cairo_bool_t _cairo_matrix_has_unity_scale (const cairo_matrix_t *matrix) { - if (matrix->xy == 0.0 && matrix->yx == 0.0) { - if (! (matrix->xx == 1.0 || matrix->xx == -1.0)) - return FALSE; - if (! (matrix->yy == 1.0 || matrix->yy == -1.0)) - return FALSE; - } else if (matrix->xx == 0.0 && matrix->yy == 0.0) { - if (! (matrix->xy == 1.0 || matrix->xy == -1.0)) - return FALSE; - if (! (matrix->yx == 1.0 || matrix->yx == -1.0)) - return FALSE; - } else - return FALSE; - - return TRUE; + /* check that the determinant is near +/-1 */ + double det = _cairo_matrix_compute_determinant (matrix); + if (fabs (det * det - 1.0) < SCALING_EPSILON) { + /* check that one axis is close to zero */ + if (fabs (matrix->xy) < SCALING_EPSILON && + fabs (matrix->yx) < SCALING_EPSILON) + return TRUE; + if (fabs (matrix->xx) < SCALING_EPSILON && + fabs (matrix->yy) < SCALING_EPSILON) + return TRUE; + /* If rotations are allowed then it must instead test for + * orthogonality. This is xx*xy+yx*yy ~= 0. + */ + } + return FALSE; } /* By pixel exact here, we mean a matrix that is composed only of diff -Nru cairo-1.13.0~20140204/src/cairo-mesh-pattern-rasterizer.c cairo-1.14.2/src/cairo-mesh-pattern-rasterizer.c --- cairo-1.13.0~20140204/src/cairo-mesh-pattern-rasterizer.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-mesh-pattern-rasterizer.c 2015-03-10 22:21:07.000000000 +0000 @@ -697,9 +697,9 @@ 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; + int v, i, k; - vsteps = 1 << vshift; + v = 1 << vshift; /* * pv[i][0] is the function (represented using forward @@ -724,11 +724,12 @@ 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; + dcstart[i] = (col[2][i] - col[0][i]) / v; + dcend[i] = (col[3][i] - col[1][i]) / v; } - for (v = 0; v <= vsteps; ++v) { + v++; + while (v--) { cairo_point_double_t nodes[4]; for (i = 0; i < 4; ++i) { nodes[i].x = pv[i][0][0]; diff -Nru cairo-1.13.0~20140204/src/cairo-misc.c cairo-1.14.2/src/cairo-misc.c --- cairo-1.13.0~20140204/src/cairo-misc.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-misc.c 2015-03-10 22:21:07.000000000 +0000 @@ -759,6 +759,24 @@ } } +#ifndef __BIONIC__ +# include + +const char * +cairo_get_locale_decimal_point (void) +{ + struct lconv *locale_data = localeconv (); + return locale_data->decimal_point; +} + +#else +/* Android's Bionic libc doesn't provide decimal_point */ +const char * +cairo_get_locale_decimal_point (void) +{ + return '.'; +} +#endif #ifdef _WIN32 diff -Nru cairo-1.13.0~20140204/src/cairo-output-stream.c cairo-1.14.2/src/cairo-output-stream.c --- cairo-1.13.0~20140204/src/cairo-output-stream.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-output-stream.c 2015-03-10 22:21:07.000000000 +0000 @@ -43,7 +43,6 @@ #include "cairo-compiler-private.h" #include -#include #include /* Numbers printed with %f are printed with this number of significant @@ -303,7 +302,6 @@ static void _cairo_dtostr (char *buffer, size_t size, double d, cairo_bool_t limited_precision) { - struct lconv *locale_data; const char *decimal_point; int decimal_point_len; char *p; @@ -314,8 +312,7 @@ if (d == 0.0) d = 0.0; - locale_data = localeconv (); - decimal_point = locale_data->decimal_point; + decimal_point = cairo_get_locale_decimal_point (); decimal_point_len = strlen (decimal_point); assert (decimal_point_len != 0); diff -Nru cairo-1.13.0~20140204/src/cairo-output-stream-private.h cairo-1.14.2/src/cairo-output-stream-private.h --- cairo-1.13.0~20140204/src/cairo-output-stream-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-output-stream-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -136,7 +136,7 @@ ...) CAIRO_PRINTF_FORMAT (2, 3); /* Print matrix element values with rounding of insignificant digits. */ -void +cairo_private void _cairo_output_stream_print_matrix (cairo_output_stream_t *stream, const cairo_matrix_t *matrix); diff -Nru cairo-1.13.0~20140204/src/cairo-path-stroke-polygon.c cairo-1.14.2/src/cairo-path-stroke-polygon.c --- cairo-1.13.0~20140204/src/cairo-path-stroke-polygon.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-path-stroke-polygon.c 2015-03-10 22:21:07.000000000 +0000 @@ -1083,7 +1083,6 @@ _cairo_contour_add_point (&stroker->path, point); #endif if ((tangent->dx | tangent->dy) == 0) { - const cairo_point_t *inpt, *outpt; struct stroke_contour *outer; cairo_point_t t; int clockwise; @@ -1101,12 +1100,8 @@ clockwise = join_is_clockwise (&stroker->current_face, &face); if (clockwise) { - inpt = &stroker->current_face.cw; - outpt = &face.cw; outer = &stroker->cw; } else { - inpt = &stroker->current_face.ccw; - outpt = &face.ccw; outer = &stroker->ccw; } @@ -1121,7 +1116,6 @@ if ((face.dev_slope.x * stroker->current_face.dev_slope.x + face.dev_slope.y * stroker->current_face.dev_slope.y) < stroker->spline_cusp_tolerance) { - const cairo_point_t *inpt, *outpt; struct stroke_contour *outer; int clockwise = join_is_clockwise (&stroker->current_face, &face); @@ -1134,12 +1128,8 @@ contour_add_point (stroker, &stroker->ccw, &stroker->current_face.ccw); if (clockwise) { - inpt = &stroker->current_face.cw; - outpt = &face.cw; outer = &stroker->cw; } else { - inpt = &stroker->current_face.ccw; - outpt = &face.ccw; outer = &stroker->ccw; } add_fan (stroker, diff -Nru cairo-1.13.0~20140204/src/cairo-path-stroke-traps.c cairo-1.14.2/src/cairo-path-stroke-traps.c --- cairo-1.13.0~20140204/src/cairo-path-stroke-traps.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-path-stroke-traps.c 2015-03-10 22:21:07.000000000 +0000 @@ -249,9 +249,11 @@ in->dev_slope.y * out->dev_slope.y) < stroker->spline_cusp_tolerance) { int start, stop; - cairo_point_t tri[3]; + cairo_point_t tri[3], edges[4]; cairo_pen_t *pen = &stroker->pen; + edges[0] = in->cw; + edges[1] = in->ccw; tri[0] = in->point; tri[1] = *inpt; if (clockwise) { @@ -261,8 +263,13 @@ while (start != stop) { tri[2] = in->point; translate_point (&tri[2], &pen->vertices[start].point); - _cairo_traps_tessellate_triangle (stroker->traps, tri); + edges[2] = in->point; + edges[3] = tri[2]; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, + tri, edges); tri[1] = tri[2]; + edges[0] = edges[2]; + edges[1] = edges[3]; if (start-- == 0) start += pen->num_vertices; @@ -274,17 +281,30 @@ while (start != stop) { tri[2] = in->point; translate_point (&tri[2], &pen->vertices[start].point); - _cairo_traps_tessellate_triangle (stroker->traps, tri); + edges[2] = in->point; + edges[3] = tri[2]; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, + tri, edges); tri[1] = tri[2]; + edges[0] = edges[2]; + edges[1] = edges[3]; if (++start == pen->num_vertices) start = 0; } } tri[2] = *outpt; - _cairo_traps_tessellate_triangle (stroker->traps, tri); - break; + edges[2] = out->cw; + edges[3] = out->ccw; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, + tri, edges); + } else { + cairo_point_t t[] = { { in->point.x, in->point.y}, { inpt->x, inpt->y }, { outpt->x, outpt->y } }; + cairo_point_t e[] = { { in->cw.x, in->cw.y}, { in->ccw.x, in->ccw.y }, + { out->cw.x, out->cw.y}, { out->ccw.x, out->ccw.y } }; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, t, e); } + break; case CAIRO_LINE_JOIN_MITER: default: { @@ -442,12 +462,10 @@ } case CAIRO_LINE_JOIN_BEVEL: { - cairo_point_t tri[3]; - tri[0] = in->point; - tri[1] = *inpt; - tri[2] = *outpt; - - _cairo_traps_tessellate_triangle (stroker->traps, tri); + cairo_point_t t[] = { { in->point.x, in->point.y }, { inpt->x, inpt->y }, { outpt->x, outpt->y } }; + cairo_point_t e[] = { { in->cw.x, in->cw.y }, { in->ccw.x, in->ccw.y }, + { out->cw.x, out->cw.y }, { out->ccw.x, out->ccw.y } }; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, t, e); break; } } @@ -460,7 +478,7 @@ case CAIRO_LINE_CAP_ROUND: { int start, stop; cairo_slope_t in_slope, out_slope; - cairo_point_t tri[3]; + cairo_point_t tri[3], edges[4]; cairo_pen_t *pen = &stroker->pen; in_slope = f->dev_vector; @@ -468,19 +486,29 @@ out_slope.dy = -in_slope.dy; _cairo_pen_find_active_cw_vertices (pen, &in_slope, &out_slope, &start, &stop); + edges[0] = f->cw; + edges[1] = f->ccw; tri[0] = f->point; tri[1] = f->cw; while (start != stop) { tri[2] = f->point; translate_point (&tri[2], &pen->vertices[start].point); - _cairo_traps_tessellate_triangle (stroker->traps, tri); + edges[2] = f->point; + edges[3] = tri[2]; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, + tri, edges); tri[1] = tri[2]; + edges[0] = edges[2]; + edges[1] = edges[3]; if (++start == pen->num_vertices) start = 0; } tri[2] = f->ccw; - _cairo_traps_tessellate_triangle (stroker->traps, tri); + edges[2] = f->cw; + edges[3] = f->ccw; + _cairo_traps_tessellate_triangle_with_edges (stroker->traps, + tri, edges); break; } @@ -932,7 +960,6 @@ cairo_point_t rectangle[4]; compute_face (&stroker->current_face.point, tangent, stroker, &face); - join (stroker, &stroker->current_face, &face); rectangle[0] = face.cw; diff -Nru cairo-1.13.0~20140204/src/cairo-pattern.c cairo-1.14.2/src/cairo-pattern.c --- cairo-1.13.0~20140204/src/cairo-pattern.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-pattern.c 2015-03-10 22:21:07.000000000 +0000 @@ -51,8 +51,8 @@ * @See_Also: #cairo_t, #cairo_surface_t * * #cairo_pattern_t is the paint with which cairo draws. - * The primary use of patterns is as the source for all cairo drawing - * operations, although they can also be used as masks, that is, as the + * The primary use of patterns is as the source for all cairo drawing + * operations, although they can also be used as masks, that is, as the * brush too. * * A cairo pattern is created by using one of the many constructors, @@ -3338,111 +3338,180 @@ return FALSE; } +/* + * Will given row of back-translation matrix work with bilinear scale? + * This is true for scales larger than 1. Also it was judged acceptable + * for scales larger than .75. And if there is integer translation + * then a scale of exactly .5 works. + */ +static int +use_bilinear(double x, double y, double t) +{ + /* This is the inverse matrix! */ + double h = x*x + y*y; + if (h < 1.0 / (0.75 * 0.75)) + return TRUE; /* scale > .75 */ + if ((h > 3.99 && h < 4.01) /* scale is 1/2 */ + && !_cairo_fixed_from_double(x*y) /* parallel to an axis */ + && _cairo_fixed_is_integer (_cairo_fixed_from_double (t))) + return TRUE; + return FALSE; +} + /** * _cairo_pattern_analyze_filter: * @pattern: surface pattern - * @pad_out: location to store necessary padding in the source image, or %NULL * Returns: the optimized #cairo_filter_t to use with @pattern. * - * Analyze the filter to determine how much extra needs to be sampled - * from the source image to account for the filter radius and whether - * we can optimize the filter to a simpler value. - * - * XXX: We don't actually have any way of querying the backend for - * the filter radius, so we just guess base on what we know that - * backends do currently (see bug #10508) + * Possibly optimize the filter to a simpler value depending on transformation **/ cairo_filter_t -_cairo_pattern_analyze_filter (const cairo_pattern_t *pattern, - double *pad_out) +_cairo_pattern_analyze_filter (const cairo_pattern_t *pattern) { - double pad; - cairo_filter_t optimized_filter; - switch (pattern->filter) { case CAIRO_FILTER_GOOD: case CAIRO_FILTER_BEST: case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_FAST: /* If source pixels map 1:1 onto destination pixels, we do * not need to filter (and do not want to filter, since it * will cause blurriness) */ if (_cairo_matrix_is_pixel_exact (&pattern->matrix)) { - pad = 0.; - optimized_filter = CAIRO_FILTER_NEAREST; + return CAIRO_FILTER_NEAREST; } else { - /* 0.5 is enough for a bilinear filter. It's possible we - * should defensively use more for CAIRO_FILTER_BEST, but - * without a single example, it's hard to know how much - * more would be defensive... + /* Use BILINEAR for any scale greater than .75 instead + * of GOOD. For scales of 1 and larger this is identical, + * for the smaller sizes it was judged that the artifacts + * were not worse than the artifacts from a box filer. + * BILINEAR can also be used if the scale is exactly .5 + * and the translation in that direction is an integer. */ - pad = 0.5; - optimized_filter = pattern->filter; + if (pattern->filter == CAIRO_FILTER_GOOD && + use_bilinear (pattern->matrix.xx, pattern->matrix.xy, + pattern->matrix.x0) && + use_bilinear (pattern->matrix.yx, pattern->matrix.yy, + pattern->matrix.y0)) + return CAIRO_FILTER_BILINEAR; } break; - case CAIRO_FILTER_FAST: case CAIRO_FILTER_NEAREST: case CAIRO_FILTER_GAUSSIAN: default: - pad = 0.; - optimized_filter = pattern->filter; break; } - if (pad_out) - *pad_out = pad; + return pattern->filter; +} - return optimized_filter; +/** + * _cairo_hypot: + * Returns: value similar to hypot(@x,@y) + * + * May want to replace this with Manhattan distance (abs(x)+abs(y)) if + * hypot is too slow, as there is no need for accuracy here. + **/ +static inline double +_cairo_hypot(double x, double y) +{ + return hypot(x, y); } -cairo_filter_t +/** + * _cairo_pattern_sampled_area: + * + * Return region of @pattern that will be sampled to fill @extents, + * based on the transformation and filter. + * + * This does not include pixels that are mulitiplied by values very + * close to zero by the ends of filters. This is so that transforms + * that should be the identity or 90 degree rotations do not expand + * the source unexpectedly. + * + * XXX: We don't actually have any way of querying the backend for + * the filter radius, so we just guess base on what we know that + * backends do currently (see bug #10508) + **/ +void _cairo_pattern_sampled_area (const cairo_pattern_t *pattern, const cairo_rectangle_int_t *extents, cairo_rectangle_int_t *sample) { - cairo_filter_t filter; double x1, x2, y1, y2; - double pad; + double padx, pady; - filter = _cairo_pattern_analyze_filter (pattern, &pad); - if (pad == 0.0 && _cairo_matrix_is_identity (&pattern->matrix)) { + /* Assume filters are interpolating, which means identity + cannot change the image */ + if (_cairo_matrix_is_identity (&pattern->matrix)) { *sample = *extents; - return filter; + return; } - x1 = extents->x; - y1 = extents->y; - x2 = extents->x + (int) extents->width; - y2 = extents->y + (int) extents->height; - + /* Transform the centers of the corner pixels */ + x1 = extents->x + 0.5; + y1 = extents->y + 0.5; + x2 = x1 + (extents->width - 1); + y2 = y1 + (extents->height - 1); _cairo_matrix_transform_bounding_box (&pattern->matrix, &x1, &y1, &x2, &y2, NULL); - if (x1 > CAIRO_RECT_INT_MIN) - sample->x = floor (x1 - pad); - else - sample->x = CAIRO_RECT_INT_MIN; - - if (y1 > CAIRO_RECT_INT_MIN) - sample->y = floor (y1 - pad); - else - sample->y = CAIRO_RECT_INT_MIN; - - if (x2 < CAIRO_RECT_INT_MAX) - sample->width = ceil (x2 + pad); - else - sample->width = CAIRO_RECT_INT_MAX; - - if (y2 < CAIRO_RECT_INT_MAX) - sample->height = ceil (y2 + pad); - else - sample->height = CAIRO_RECT_INT_MAX; - sample->width -= sample->x; - sample->height -= sample->y; + /* How far away from center will it actually sample? + * This is the distance from a transformed pixel center to the + * furthest sample of reasonable size. + */ + switch (pattern->filter) { + case CAIRO_FILTER_NEAREST: + case CAIRO_FILTER_FAST: + /* Correct value is zero, but when the sample is on an integer + * it is unknown if the backend will sample the pixel to the + * left or right. This value makes it include both possible pixels. + */ + padx = pady = 0.004; + break; + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + default: + /* Correct value is .5 */ + padx = pady = 0.495; + break; + case CAIRO_FILTER_GOOD: + /* Correct value is max(width,1)*.5 */ + padx = _cairo_hypot (pattern->matrix.xx, pattern->matrix.xy); + if (padx <= 1.0) padx = 0.495; + else if (padx >= 16.0) padx = 7.92; + else padx *= 0.495; + pady = _cairo_hypot (pattern->matrix.yx, pattern->matrix.yy); + if (pady <= 1.0) pady = 0.495; + else if (pady >= 16.0) pady = 7.92; + else pady *= 0.495; + break; + case CAIRO_FILTER_BEST: + /* Correct value is width*2 */ + padx = _cairo_hypot (pattern->matrix.xx, pattern->matrix.xy) * 1.98; + if (padx > 7.92) padx = 7.92; + pady = _cairo_hypot (pattern->matrix.yx, pattern->matrix.yy) * 1.98; + if (pady > 7.92) pady = 7.92; + break; + } - return filter; + /* round furthest samples to edge of pixels */ + x1 = floor (x1 - padx); + if (x1 < CAIRO_RECT_INT_MIN) x1 = CAIRO_RECT_INT_MIN; + sample->x = x1; + + y1 = floor (y1 - pady); + if (y1 < CAIRO_RECT_INT_MIN) y1 = CAIRO_RECT_INT_MIN; + sample->y = y1; + + x2 = floor (x2 + padx) + 1.0; + if (x2 > CAIRO_RECT_INT_MAX) x2 = CAIRO_RECT_INT_MAX; + sample->width = x2 - x1; + + y2 = floor (y2 + pady) + 1.0; + if (y2 > CAIRO_RECT_INT_MAX) y2 = CAIRO_RECT_INT_MAX; + sample->height = y2 - y1; } /** @@ -3462,7 +3531,9 @@ cairo_rectangle_int_t *extents) { double x1, y1, x2, y2; - cairo_status_t status; + int ix1, ix2, iy1, iy2; + cairo_bool_t round_x = FALSE; + cairo_bool_t round_y = FALSE; switch (pattern->type) { case CAIRO_PATTERN_TYPE_SOLID: @@ -3474,7 +3545,6 @@ const cairo_surface_pattern_t *surface_pattern = (const cairo_surface_pattern_t *) pattern; cairo_surface_t *surface = surface_pattern->surface; - double pad; if (! _cairo_surface_get_extents (surface, &surface_extents)) goto UNBOUNDED; @@ -3485,14 +3555,12 @@ if (pattern->extend != CAIRO_EXTEND_NONE) goto UNBOUNDED; - /* The filter can effectively enlarge the extents of the - * pattern, so extend as necessary. - */ - _cairo_pattern_analyze_filter (&surface_pattern->base, &pad); - x1 = surface_extents.x - pad; - y1 = surface_extents.y - pad; - x2 = surface_extents.x + (int) surface_extents.width + pad; - y2 = surface_extents.y + (int) surface_extents.height + pad; + x1 = surface_extents.x; + y1 = surface_extents.y; + x2 = surface_extents.x + (int) surface_extents.width; + y2 = surface_extents.y + (int) surface_extents.height; + + goto HANDLE_FILTER; } break; @@ -3500,7 +3568,6 @@ { const cairo_raster_source_pattern_t *raster = (const cairo_raster_source_pattern_t *) pattern; - double pad; if (raster->extents.width == 0 || raster->extents.height == 0) goto EMPTY; @@ -3508,14 +3575,41 @@ if (pattern->extend != CAIRO_EXTEND_NONE) goto UNBOUNDED; - /* The filter can effectively enlarge the extents of the - * pattern, so extend as necessary. - */ - _cairo_pattern_analyze_filter (pattern, &pad); - x1 = raster->extents.x - pad; - y1 = raster->extents.y - pad; - x2 = raster->extents.x + (int) raster->extents.width + pad; - y2 = raster->extents.y + (int) raster->extents.height + pad; + x1 = raster->extents.x; + y1 = raster->extents.y; + x2 = raster->extents.x + (int) raster->extents.width; + y2 = raster->extents.y + (int) raster->extents.height; + } + HANDLE_FILTER: + switch (pattern->filter) { + case CAIRO_FILTER_NEAREST: + case CAIRO_FILTER_FAST: + round_x = round_y = TRUE; + /* We don't know which way .5 will go, so fudge it slightly. */ + x1 -= 0.004; + y1 -= 0.004; + x2 += 0.004; + y2 += 0.004; + break; + case CAIRO_FILTER_BEST: + /* Assume best filter will produce nice antialiased edges */ + break; + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + case CAIRO_FILTER_GOOD: + default: + /* These filters can blur the edge out 1/2 pixel when scaling up */ + if (_cairo_hypot (pattern->matrix.xx, pattern->matrix.yx) < 1.0) { + x1 -= 0.5; + x2 += 0.5; + round_x = TRUE; + } + if (_cairo_hypot (pattern->matrix.xy, pattern->matrix.yy) < 1.0) { + y1 -= 0.5; + y2 += 0.5; + round_y = TRUE; + } + break; } break; @@ -3587,6 +3681,10 @@ } else { goto UNBOUNDED; } + + /* The current linear renderer just point-samples in the middle + of the pixels, similar to the NEAREST filter: */ + round_x = round_y = TRUE; } break; @@ -3594,22 +3692,8 @@ { 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) + if (! _cairo_mesh_pattern_coord_box (mesh, &x1, &y1, &x2, &y2)) 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; @@ -3622,6 +3706,7 @@ y1 -= pattern->matrix.y0; y2 -= pattern->matrix.y0; } else { cairo_matrix_t imatrix; + cairo_status_t status; imatrix = pattern->matrix; status = cairo_matrix_invert (&imatrix); @@ -3633,22 +3718,34 @@ NULL); } - x1 = floor (x1); + if (!round_x) { + x1 -= 0.5; + x2 += 0.5; + } if (x1 < CAIRO_RECT_INT_MIN) - x1 = CAIRO_RECT_INT_MIN; - y1 = floor (y1); - if (y1 < CAIRO_RECT_INT_MIN) - y1 = CAIRO_RECT_INT_MIN; - - x2 = ceil (x2); + ix1 = CAIRO_RECT_INT_MIN; + else + ix1 = _cairo_lround (x1); if (x2 > CAIRO_RECT_INT_MAX) - x2 = CAIRO_RECT_INT_MAX; - y2 = ceil (y2); + ix2 = CAIRO_RECT_INT_MAX; + else + ix2 = _cairo_lround (x2); + extents->x = ix1; extents->width = ix2 - ix1; + + if (!round_y) { + y1 -= 0.5; + y2 += 0.5; + } + if (y1 < CAIRO_RECT_INT_MIN) + iy1 = CAIRO_RECT_INT_MIN; + else + iy1 = _cairo_lround (y1); if (y2 > CAIRO_RECT_INT_MAX) - y2 = CAIRO_RECT_INT_MAX; + iy2 = CAIRO_RECT_INT_MAX; + else + iy2 = _cairo_lround (y2); + extents->y = iy1; extents->height = iy2 - iy1; - extents->x = x1; extents->width = x2 - x1; - extents->y = y1; extents->height = y2 - y1; return; UNBOUNDED: @@ -3911,7 +4008,7 @@ 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); + patch_b = _cairo_array_index_const (&b->patches, i); if (memcmp (patch_a, patch_b, sizeof(cairo_mesh_patch_t)) != 0) return FALSE; } @@ -4032,7 +4129,7 @@ * cairo_pattern_get_surface: * @pattern: a #cairo_pattern_t * @surface: return value for surface of pattern, or %NULL - * + * * Gets the surface of a surface pattern. The reference returned in * @surface is owned by the pattern; the caller should call * cairo_surface_reference() if the surface is to be retained. @@ -4072,8 +4169,9 @@ * @alpha: return value for alpha component of color, or %NULL * * Gets the color and offset information at the given @index for a - * gradient pattern. Values of @index are 0 to 1 less than the number - * returned by cairo_pattern_get_color_stop_count(). + * gradient pattern. Values of @index range from 0 to n-1 + * where n is the number returned + * by cairo_pattern_get_color_stop_count(). * * Return value: %CAIRO_STATUS_SUCCESS, or %CAIRO_STATUS_INVALID_INDEX * if @index is not valid for the given pattern. If the pattern is @@ -4283,7 +4381,7 @@ * Gets path defining the patch @patch_num for a mesh * pattern. * - * @patch_num can range 0 to 1 less than the number returned by + * @patch_num can range from 0 to n-1 where n is the number returned by * cairo_mesh_pattern_get_patch_count(). * * Return value: the path defining the patch, or a path with status @@ -4376,7 +4474,7 @@ * 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 + * @patch_num can range from 0 to n-1 where n is the number returned by * cairo_mesh_pattern_get_patch_count(). * * Valid values for @corner_num are from 0 to 3 and identify the @@ -4442,7 +4540,7 @@ * 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 + * @patch_num can range from 0 to n-1 where n is the number returned by * cairo_mesh_pattern_get_patch_count(). * * Valid values for @point_num are from 0 to 3 and identify the diff -Nru cairo-1.13.0~20140204/src/cairo-pattern-private.h cairo-1.14.2/src/cairo-pattern-private.h --- cairo-1.13.0~20140204/src/cairo-pattern-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-pattern-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -289,7 +289,7 @@ double *out_xmax, double *out_ymax); -cairo_private_no_warn cairo_filter_t +cairo_private void _cairo_pattern_sampled_area (const cairo_pattern_t *pattern, const cairo_rectangle_int_t *extents, cairo_rectangle_int_t *sample); @@ -328,6 +328,9 @@ _cairo_pattern_equal (const cairo_pattern_t *a, const cairo_pattern_t *b); +cairo_private cairo_filter_t +_cairo_pattern_analyze_filter (const cairo_pattern_t *pattern); + /* cairo-mesh-pattern-rasterizer.c */ cairo_private void diff -Nru cairo-1.13.0~20140204/src/cairo-pdf-operators.c cairo-1.14.2/src/cairo-pdf-operators.c --- cairo-1.13.0~20140204/src/cairo-pdf-operators.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-pdf-operators.c 2015-03-10 22:21:07.000000000 +0000 @@ -57,11 +57,13 @@ _cairo_pdf_operators_init (cairo_pdf_operators_t *pdf_operators, cairo_output_stream_t *stream, cairo_matrix_t *cairo_to_pdf, - cairo_scaled_font_subsets_t *font_subsets) + cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t ps) { pdf_operators->stream = stream; pdf_operators->cairo_to_pdf = *cairo_to_pdf; pdf_operators->font_subsets = font_subsets; + pdf_operators->ps_output = ps; pdf_operators->use_font_subset = NULL; pdf_operators->use_font_subset_closure = NULL; pdf_operators->in_text_object = FALSE; @@ -176,6 +178,7 @@ cairo_output_stream_t base; cairo_output_stream_t *output; int max_column; + cairo_bool_t ps_output; int column; cairo_word_wrap_state_t state; cairo_bool_t in_escape; @@ -269,7 +272,7 @@ if (*s == '\\') { stream->in_escape = TRUE; stream->escape_digits = 0; - } else if (stream->column > stream->max_column) { + } else if (stream->ps_output && stream->column > stream->max_column) { newline = TRUE; break; } @@ -348,7 +351,7 @@ } static cairo_output_stream_t * -_word_wrap_stream_create (cairo_output_stream_t *output, int max_column) +_word_wrap_stream_create (cairo_output_stream_t *output, cairo_bool_t ps, int max_column) { word_wrap_stream_t *stream; @@ -367,6 +370,7 @@ _word_wrap_stream_close); stream->output = output; stream->max_column = max_column; + stream->ps_output = ps; stream->column = 0; stream->state = WRAP_STATE_DELIMITER; stream->in_escape = FALSE; @@ -502,7 +506,7 @@ pdf_path_info_t info; cairo_box_t box; - word_wrap = _word_wrap_stream_create (pdf_operators->stream, 72); + word_wrap = _word_wrap_stream_create (pdf_operators->stream, pdf_operators->ps_output, 72); status = _cairo_output_stream_get_status (word_wrap); if (unlikely (status)) return _cairo_output_stream_destroy (word_wrap); @@ -1051,7 +1055,7 @@ if (pdf_operators->num_glyphs == 0) return CAIRO_STATUS_SUCCESS; - word_wrap_stream = _word_wrap_stream_create (pdf_operators->stream, 72); + word_wrap_stream = _word_wrap_stream_create (pdf_operators->stream, pdf_operators->ps_output, 72); status = _cairo_output_stream_get_status (word_wrap_stream); if (unlikely (status)) return _cairo_output_stream_destroy (word_wrap_stream); @@ -1411,7 +1415,11 @@ return status; } - cur_glyph = glyphs; + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + cur_glyph = glyphs + num_glyphs - 1; + else + cur_glyph = glyphs; + /* XXX * If no glyphs, we should put *something* here for the text to be selectable. */ for (i = 0; i < num_glyphs; i++) { diff -Nru cairo-1.13.0~20140204/src/cairo-pdf-operators-private.h cairo-1.14.2/src/cairo-pdf-operators-private.h --- cairo-1.13.0~20140204/src/cairo-pdf-operators-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-pdf-operators-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -70,6 +70,7 @@ cairo_scaled_font_subsets_t *font_subsets; cairo_pdf_operators_use_font_subset_t use_font_subset; void *use_font_subset_closure; + cairo_bool_t ps_output; /* output is for PostScript */ cairo_bool_t use_actual_text; cairo_bool_t in_text_object; /* inside BT/ET pair */ @@ -101,7 +102,8 @@ _cairo_pdf_operators_init (cairo_pdf_operators_t *pdf_operators, cairo_output_stream_t *stream, cairo_matrix_t *cairo_to_pdf, - cairo_scaled_font_subsets_t *font_subsets); + cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t ps); cairo_private cairo_status_t _cairo_pdf_operators_fini (cairo_pdf_operators_t *pdf_operators); diff -Nru cairo-1.13.0~20140204/src/cairo-pdf-surface.c cairo-1.14.2/src/cairo-pdf-surface.c --- cairo-1.13.0~20140204/src/cairo-pdf-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-pdf-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -430,7 +430,8 @@ _cairo_pdf_operators_init (&surface->pdf_operators, surface->output, &surface->cairo_to_pdf, - surface->font_subsets); + surface->font_subsets, + FALSE); _cairo_pdf_operators_set_font_subsets_callback (&surface->pdf_operators, _cairo_pdf_surface_add_font, surface); @@ -2642,11 +2643,17 @@ } global.id = malloc(global_id_length); + if (unlikely (global.id == NULL)) { + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } + memcpy (global.id, global_id, global_id_length); global.id_length = global_id_length; global.res = _cairo_pdf_surface_new_object (surface); - if (global.res.id == 0) + if (global.res.id == 0) { + free(global.id); return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } global.emitted = FALSE; status = _cairo_array_append (&surface->jbig2_global, &global); @@ -2671,7 +2678,7 @@ unsigned long global_id_length; const unsigned char *global_data; unsigned long global_data_length; - cairo_pdf_jbig2_global_t *global_entry; + cairo_pdf_jbig2_global_t *global_entry = NULL; /* hide compiler warning */ char smask_buf[30]; char decode_parms_buf[100]; @@ -5671,7 +5678,8 @@ type3_surface = _cairo_type3_glyph_surface_create (font_subset->scaled_font, null_stream, _cairo_pdf_emit_imagemask, - surface->font_subsets); + surface->font_subsets, + FALSE); if (unlikely (type3_surface->status)) { status2 = _cairo_output_stream_destroy (null_stream); return type3_surface->status; @@ -5732,7 +5740,8 @@ type3_surface = _cairo_type3_glyph_surface_create (font_subset->scaled_font, NULL, _cairo_pdf_emit_imagemask, - surface->font_subsets); + surface->font_subsets, + FALSE); if (unlikely (type3_surface->status)) { free (glyphs); free (widths); diff -Nru cairo-1.13.0~20140204/src/cairo-ps-surface.c cairo-1.14.2/src/cairo-ps-surface.c --- cairo-1.13.0~20140204/src/cairo-ps-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-ps-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -628,7 +628,8 @@ type3_surface = _cairo_type3_glyph_surface_create (font_subset->scaled_font, NULL, _cairo_ps_emit_imagemask, - surface->font_subsets); + surface->font_subsets, + TRUE); for (i = 0; i < font_subset->num_glyphs; i++) { status = _cairo_type3_glyph_surface_analyze_glyph (type3_surface, @@ -676,7 +677,8 @@ type3_surface = _cairo_type3_glyph_surface_create (font_subset->scaled_font, NULL, _cairo_ps_emit_imagemask, - surface->font_subsets); + surface->font_subsets, + TRUE); status = type3_surface->status; if (unlikely (status)) return status; @@ -1068,7 +1070,8 @@ _cairo_pdf_operators_init (&surface->pdf_operators, surface->stream, &surface->cairo_to_ps, - surface->font_subsets); + surface->font_subsets, + TRUE); surface->num_pages = 0; cairo_list_init (&surface->document_media); diff -Nru cairo-1.13.0~20140204/src/cairo-qt-surface.cpp cairo-1.14.2/src/cairo-qt-surface.cpp --- cairo-1.13.0~20140204/src/cairo-qt-surface.cpp 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-qt-surface.cpp 2015-03-10 22:21:07.000000000 +0000 @@ -306,6 +306,8 @@ #else return QImage::Format_MonoLSB; #endif + case CAIRO_FORMAT_RGB30: + return QImage::Format_Mono; } return QImage::Format_Mono; @@ -386,7 +388,7 @@ return CAIRO_STATUS_SUCCESS; } -static inline QPainterPath +static QPainterPath path_to_qt (const cairo_path_fixed_t *path, const cairo_matrix_t *ctm_inverse = NULL) { @@ -849,7 +851,8 @@ */ struct PatternToBrushConverter { - PatternToBrushConverter (const cairo_pattern_t *pattern) : + PatternToBrushConverter (const cairo_pattern_t *pattern) + __attribute__ ((noinline)) : mAcquiredImageParent(0), mAcquiredImage(0), mAcquiredImageExtra(0) @@ -1048,7 +1051,7 @@ } } - ~PatternToBrushConverter () { + ~PatternToBrushConverter () __attribute__ ((noinline)){ if (mAcquiredImageParent) _cairo_surface_release_source_image (mAcquiredImageParent, mAcquiredImage, mAcquiredImageExtra); } @@ -1657,13 +1660,30 @@ return &qs->base; } +/** + * _cairo_surface_is_qt: + * @surface: a #cairo_surface_t + * + * Checks if a surface is a #cairo_qt_surface_t + * + * Return value: True if the surface is an qt surface + **/ +static inline cairo_bool_t +_cairo_surface_is_qt (cairo_surface_t *surface) +{ + return surface->backend == &cairo_qt_surface_backend; +} + QPainter * cairo_qt_surface_get_qpainter (cairo_surface_t *surface) { cairo_qt_surface_t *qs = (cairo_qt_surface_t*) surface; - if (surface->type != CAIRO_SURFACE_TYPE_QT) + /* Throw an error for a non-qt surface */ + if (! _cairo_surface_is_qt (surface)) { + _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); return NULL; + } return qs->p; } @@ -1673,8 +1693,11 @@ { cairo_qt_surface_t *qs = (cairo_qt_surface_t*) surface; - if (surface->type != CAIRO_SURFACE_TYPE_QT) + /* Throw an error for a non-qt surface */ + if (! _cairo_surface_is_qt (surface)) { + _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); return NULL; + } return qs->image; } @@ -1684,8 +1707,10 @@ { cairo_qt_surface_t *qs = (cairo_qt_surface_t*) surface; - if (surface->type != CAIRO_SURFACE_TYPE_QT) - return NULL; + /* Throw an error for a non-qt surface */ + if (! _cairo_surface_is_qt (surface)) { + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + } return qs->image_equiv; } diff -Nru cairo-1.13.0~20140204/src/cairo-quartz-font.c cairo-1.14.2/src/cairo-quartz-font.c --- cairo-1.13.0~20140204/src/cairo-quartz-font.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-quartz-font.c 2015-03-10 22:21:07.000000000 +0000 @@ -81,9 +81,6 @@ static void (*CGContextSetAllowsFontSmoothingPtr) (CGContextRef, bool) = NULL; static bool (*CGContextGetAllowsFontSmoothingPtr) (CGContextRef) = NULL; -/* Not public in the least bit */ -static CGPathRef (*CGFontGetGlyphPathPtr) (CGFontRef fontRef, CGAffineTransform *textTransform, int unknown, CGGlyph glyph) = NULL; - /* CGFontGetHMetrics isn't public, but the other functions are public/present in 10.5 */ typedef struct { int ascent; @@ -127,7 +124,6 @@ /* These have the same name in 10.4 and 10.5 */ CGFontGetUnitsPerEmPtr = dlsym(RTLD_DEFAULT, "CGFontGetUnitsPerEm"); CGFontGetGlyphAdvancesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphAdvances"); - CGFontGetGlyphPathPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphPath"); CGFontGetHMetricsPtr = dlsym(RTLD_DEFAULT, "CGFontGetHMetrics"); CGFontGetAscentPtr = dlsym(RTLD_DEFAULT, "CGFontGetAscent"); @@ -144,7 +140,6 @@ CGFontGetGlyphsForUnicharsPtr && CGFontGetUnitsPerEmPtr && CGFontGetGlyphAdvancesPtr && - CGFontGetGlyphPathPtr && (CGFontGetHMetricsPtr || (CGFontGetAscentPtr && CGFontGetDescentPtr && CGFontGetLeadingPtr))) _cairo_quartz_font_symbols_present = TRUE; @@ -550,6 +545,7 @@ CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); CGAffineTransform textMatrix; CGPathRef glyphPath; + CTFontRef ctFont; cairo_path_fixed_t *path; if (glyph == INVALID_GLYPH) { @@ -564,7 +560,9 @@ -font->base.scale.yy, 0, 0); - glyphPath = CGFontGetGlyphPathPtr (font_face->cgFont, &textMatrix, 0, glyph); + ctFont = CTFontCreateWithGraphicsFont (font_face->cgFont, 0.0, NULL, NULL); + glyphPath = CTFontCreatePathForGlyph (ctFont, glyph, &textMatrix); + CFRelease (ctFont); if (!glyphPath) return CAIRO_INT_STATUS_UNSUPPORTED; diff -Nru cairo-1.13.0~20140204/src/cairo-quartz-image-surface.c cairo-1.14.2/src/cairo-quartz-image-surface.c --- cairo-1.13.0~20140204/src/cairo-quartz-image-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-quartz-image-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -378,8 +378,10 @@ { cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t*) asurface; - if (asurface->type != CAIRO_SURFACE_TYPE_QUARTZ_IMAGE) - return NULL; + /* Throw an error for a non-quartz surface */ + if (! _cairo_surface_is_quartz (asurface)) { + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + } return (cairo_surface_t*) surface->imageSurface; } diff -Nru cairo-1.13.0~20140204/src/cairo-quartz-private.h cairo-1.14.2/src/cairo-quartz-private.h --- cairo-1.13.0~20140204/src/cairo-quartz-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-quartz-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -83,6 +83,9 @@ cairo_private cairo_bool_t _cairo_quartz_verify_surface_size(int width, int height); +cairo_private cairo_bool_t +_cairo_surface_is_quartz (const cairo_surface_t *surface); + cairo_private CGImageRef CairoQuartzCreateCGImage (cairo_format_t format, unsigned int width, diff -Nru cairo-1.13.0~20140204/src/cairo-quartz-surface.c cairo-1.14.2/src/cairo-quartz-surface.c --- cairo-1.13.0~20140204/src/cairo-quartz-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-quartz-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -140,9 +140,6 @@ unsigned int width, unsigned int height); -static cairo_bool_t -_cairo_surface_is_quartz (const cairo_surface_t *surface); - /* Load all extra symbols */ static void quartz_ensure_symbols (void) { @@ -2465,7 +2462,15 @@ return NULL; } -static cairo_bool_t +/** + * _cairo_surface_is_quartz: + * @surface: a #cairo_surface_t + * + * Checks if a surface is a #cairo_quartz_surface_t + * + * Return value: True if the surface is an quartz surface + **/ +cairo_bool_t _cairo_surface_is_quartz (const cairo_surface_t *surface) { return surface->backend == &cairo_quartz_surface_backend; diff -Nru cairo-1.13.0~20140204/src/cairo-raster-source-pattern.c cairo-1.14.2/src/cairo-raster-source-pattern.c --- cairo-1.13.0~20140204/src/cairo-raster-source-pattern.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-raster-source-pattern.c 2015-03-10 22:21:07.000000000 +0000 @@ -57,8 +57,6 @@ * Other callbacks are provided for when the pattern is copied temporarily * during rasterisation, or more permanently as a snapshot in order to keep * the pixel data available for printing. - * - * Since: 1.12 **/ cairo_surface_t * diff -Nru cairo-1.13.0~20140204/src/cairo-region.c cairo-1.14.2/src/cairo-region.c --- cairo-1.13.0~20140204/src/cairo-region.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-region.c 2015-03-10 22:21:07.000000000 +0000 @@ -842,18 +842,6 @@ slim_hidden_def (cairo_region_translate); /** - * cairo_region_overlap_t: - * @CAIRO_REGION_OVERLAP_IN: The contents are entirely inside the region. (Since 1.10) - * @CAIRO_REGION_OVERLAP_OUT: The contents are entirely outside the region. (Since 1.10) - * @CAIRO_REGION_OVERLAP_PART: The contents are partially inside and - * partially outside the region. (Since 1.10) - * - * Used as the return value for cairo_region_contains_rectangle(). - * - * Since: 1.10 - **/ - -/** * cairo_region_contains_rectangle: * @region: a #cairo_region_t * @rectangle: a #cairo_rectangle_int_t diff -Nru cairo-1.13.0~20140204/src/cairo-spans-private.h cairo-1.14.2/src/cairo-spans-private.h --- cairo-1.13.0~20140204/src/cairo-spans-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-spans-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -53,7 +53,7 @@ /* Render the spans on row y of the destination by whatever compositing * method is required. */ - cairo_warn cairo_status_t + cairo_status_t (*render_rows) (void *abstract_renderer, int y, int height, const cairo_half_open_span_t *coverages, diff -Nru cairo-1.13.0~20140204/src/cairo-surface.c cairo-1.14.2/src/cairo-surface.c --- cairo-1.13.0~20140204/src/cairo-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -1223,6 +1223,31 @@ } /** + * CAIRO_MIME_TYPE_JBIG2: + * + * Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544). + * + * Since: 1.14 + **/ + +/** + * CAIRO_MIME_TYPE_JBIG2_GLOBAL: + * + * Joint Bi-level Image Experts Group image coding standard (ISO/IEC 11544) global segment. + * + * Since: 1.14 + **/ + +/** + * CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID: + * + * An unique identifier shared by a JBIG2 global segment and all JBIG2 images + * that depend on the global segment. + * + * Since: 1.14 + **/ + +/** * CAIRO_MIME_TYPE_JP2: * * The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1). @@ -1257,7 +1282,8 @@ /** * CAIRO_MIME_TYPE_UNIQUE_ID: * - * Unique identifier for a surface (cairo specific MIME type). + * Unique identifier for a surface (cairo specific MIME type). All surfaces with + * the same unique identifier will only be embedded once. * * Since: 1.12 **/ @@ -1293,6 +1319,16 @@ * discarded if you draw on the surface afterwards. Use this function * with care. * + * Even if a backend supports a MIME type, that does not mean cairo + * will always be able to use the attached MIME data. For example, if + * the backend does not natively support the compositing operation used + * to apply the MIME data to the backend. In that case, the MIME data + * will be ignored. Therefore, to apply an image in all cases, it is best + * to create an image surface which contains the decoded image data and + * then attach the MIME data to that. This ensures the image will always + * be used while still allowing the MIME data to be used whenever + * possible. + * * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a * slot could not be allocated for the user data. * @@ -1650,10 +1686,10 @@ /** * cairo_surface_set_device_scale: * @surface: a #cairo_surface_t - * @sx: a scale factor in the X direction - * @sy: a scale factor in the Y direction + * @x_scale: a scale factor in the X direction + * @y_scale: a scale factor in the Y direction * - * Sets an scale that is multiplied to the device coordinates determined + * Sets a scale that is multiplied to the device coordinates determined * by the CTM when drawing to @surface. One common use for this is to * render to very high resolution display devices at a scale factor, so * that code that assumes 1 pixel will be a certain size will still work. @@ -1668,8 +1704,8 @@ **/ void cairo_surface_set_device_scale (cairo_surface_t *surface, - double sx, - double sy) + double x_scale, + double y_scale) { cairo_status_t status; @@ -1689,8 +1725,8 @@ return; } - surface->device_transform.xx = sx; - surface->device_transform.yy = sy; + surface->device_transform.xx = x_scale; + surface->device_transform.yy = y_scale; surface->device_transform.xy = 0.0; surface->device_transform.yx = 0.0; @@ -2615,6 +2651,16 @@ surface->y_resolution = y_res; } +/** + * _cairo_surface_create_in_error: + * @status: the error status + * + * Return an appropriate static error surface for the error status. + * 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. + **/ cairo_surface_t * _cairo_surface_create_in_error (cairo_status_t status) { diff -Nru cairo-1.13.0~20140204/src/cairo-surface-observer.c cairo-1.14.2/src/cairo-surface-observer.c --- cairo-1.13.0~20140204/src/cairo-surface-observer.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-surface-observer.c 2015-03-10 22:21:07.000000000 +0000 @@ -653,7 +653,7 @@ } static void -sync (cairo_surface_t *target, int x, int y) +_cairo_surface_sync (cairo_surface_t *target, int x, int y) { cairo_rectangle_int_t extents; @@ -751,7 +751,7 @@ if (unlikely (status)) return status; - sync (surface->target, x, y); + _cairo_surface_sync (surface->target, x, y); t = _cairo_time_get_delta (t); add_record_paint (&surface->log, surface->target, op, source, clip, t); @@ -837,7 +837,7 @@ if (unlikely (status)) return status; - sync (surface->target, x, y); + _cairo_surface_sync (surface->target, x, y); t = _cairo_time_get_delta (t); add_record_mask (&surface->log, @@ -944,7 +944,7 @@ if (unlikely (status)) return status; - sync (surface->target, x, y); + _cairo_surface_sync (surface->target, x, y); t = _cairo_time_get_delta (t); add_record_fill (&surface->log, @@ -1063,7 +1063,7 @@ if (unlikely (status)) return status; - sync (surface->target, x, y); + _cairo_surface_sync (surface->target, x, y); t = _cairo_time_get_delta (t); add_record_stroke (&surface->log, @@ -1183,7 +1183,7 @@ if (unlikely (status)) return status; - sync (surface->target, x, y); + _cairo_surface_sync (surface->target, x, y); t = _cairo_time_get_delta (t); add_record_glyphs (&surface->log, @@ -1368,11 +1368,16 @@ /** * cairo_surface_create_observer: * @target: an existing surface for which the observer will watch + * @mode: sets the mode of operation (normal vs. record) * * Create a new surface that exists solely to watch another is doing. In * the process it will log operations and times, which are fast, which are * slow, which are frequent, etc. * + * The @mode parameter can be set to either CAIRO_SURFACE_OBSERVER_NORMAL + * or CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS, to control whether or not + * the internal observer should record operations. + * * Return value: a pointer to the newly allocated surface. The caller * owns the surface and should call cairo_surface_destroy() when done * with it. diff -Nru cairo-1.13.0~20140204/src/cairo-tor-scan-converter.c cairo-1.14.2/src/cairo-tor-scan-converter.c --- cairo-1.13.0~20140204/src/cairo-tor-scan-converter.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-tor-scan-converter.c 2015-03-10 22:21:07.000000000 +0000 @@ -262,7 +262,7 @@ struct quorem { int32_t quo; - int32_t rem; + int64_t rem; }; /* Header for a chunk of memory in a memory pool. */ @@ -277,9 +277,14 @@ * chunk in the pool header. */ struct _pool_chunk *prev_chunk; - /* Actual data starts here. Well aligned for pointers. */ + /* Actual data starts here. Well aligned even for 64 bit types. */ + int64_t data; }; +/* The int64_t data member of _pool_chunk just exists to enforce alignment, + * it shouldn't be included in the allocated size for the struct. */ +#define SIZEOF_POOL_CHUNK (sizeof(struct _pool_chunk) - sizeof(int64_t)) + /* A memory pool. This is supposed to be embedded on the stack or * within some other structure. It may optionally be followed by an * embedded array from which requests are fulfilled until @@ -299,8 +304,11 @@ /* Header for the sentinel chunk. Directly following the pool * struct should be some space for embedded elements from which - * the sentinel chunk allocates from. */ - struct _pool_chunk sentinel[1]; + * the sentinel chunk allocates from. This is expressed as a char + * array so that the 'int64_t data' member of _pool_chunk isn't + * included. This way embedding struct pool in other structs works + * without wasting space. */ + char sentinel[SIZEOF_POOL_CHUNK]; }; /* A polygon edge. */ @@ -308,6 +316,9 @@ /* Next in y-bucket or active list. */ struct edge *next, *prev; + /* The clipped y of the top of the edge. */ + grid_scaled_y_t ytop; + /* Number of subsample rows remaining to scan convert of this * edge. */ grid_scaled_y_t height_left; @@ -315,7 +326,7 @@ /* Original sign of the edge: +1 for downwards, -1 for upwards * edges. */ int dir; - int vertical; + int cell; /* Current x coordinate while the edge is on the active * list. Initialised to the x coordinate of the top of the @@ -332,11 +343,8 @@ * full row's worth of subsample rows at a time. */ struct quorem dxdy_full; - /* The clipped y of the top of the edge. */ - grid_scaled_y_t ytop; - /* y2-y1 after orienting the edge downwards. */ - grid_scaled_y_t dy; + int64_t dy; }; #define EDGE_Y_BUCKET_INDEX(y, ymin) (((y) - (ymin))/GRID_Y) @@ -458,37 +466,6 @@ grid_scaled_y_t ymin, ymax; }; -/* Compute the floored division a/b. Assumes / and % perform symmetric - * division. */ -inline static struct quorem -floored_divrem(int a, int b) -{ - struct quorem qr; - qr.quo = a/b; - qr.rem = a%b; - if ((a^b)<0 && qr.rem) { - qr.quo -= 1; - qr.rem += b; - } - return qr; -} - -/* Compute the floored division (x*a)/b. Assumes / and % perform symmetric - * division. */ -static struct quorem -floored_muldivrem(int x, int a, int b) -{ - struct quorem qr; - long long xa = (long long)x*a; - qr.quo = xa/b; - qr.rem = xa%b; - if ((xa>=0) != (b>=0) && qr.rem) { - qr.quo -= 1; - qr.rem += b; - } - return qr; -} - static struct _pool_chunk * _pool_chunk_init( struct _pool_chunk *p, @@ -506,7 +483,7 @@ { struct _pool_chunk *p; - p = malloc(size + sizeof(struct _pool_chunk)); + p = malloc(SIZEOF_POOL_CHUNK + size); if (unlikely (NULL == p)) longjmp (*pool->jmp, _cairo_error (CAIRO_STATUS_NO_MEMORY)); @@ -520,10 +497,10 @@ size_t embedded_capacity) { pool->jmp = jmp; - pool->current = pool->sentinel; + pool->current = (void*) pool->sentinel; pool->first_free = NULL; pool->default_capacity = default_capacity; - _pool_chunk_init(pool->sentinel, NULL, embedded_capacity); + _pool_chunk_init(pool->current, NULL, embedded_capacity); } static void @@ -533,7 +510,7 @@ do { while (NULL != p) { struct _pool_chunk *prev = p->prev_chunk; - if (p != pool->sentinel) + if (p != (void *) pool->sentinel) free(p); p = prev; } @@ -573,14 +550,14 @@ chunk = _pool_chunk_create (pool, capacity); pool->current = chunk; - obj = ((unsigned char*)chunk + sizeof(*chunk) + chunk->size); + obj = ((unsigned char*)&chunk->data + chunk->size); chunk->size += size; return obj; } /* Allocate size bytes from the pool. The first allocated address - * returned from a pool is aligned to sizeof(void*). Subsequent - * addresses will maintain alignment as long as multiples of void* are + * returned from a pool is aligned to 8 bytes. Subsequent + * addresses will maintain alignment as long as multiples of 8 are * allocated. Returns the address of a new memory area or %NULL on * allocation failures. The pool retains ownership of the returned * memory. */ @@ -590,7 +567,7 @@ struct _pool_chunk *chunk = pool->current; if (size <= chunk->capacity - chunk->size) { - void *obj = ((unsigned char*)chunk + sizeof(*chunk) + chunk->size); + void *obj = ((unsigned char*)&chunk->data + chunk->size); chunk->size += size; return obj; } else { @@ -604,16 +581,16 @@ { /* Transfer all used chunks to the chunk free list. */ struct _pool_chunk *chunk = pool->current; - if (chunk != pool->sentinel) { - while (chunk->prev_chunk != pool->sentinel) { + if (chunk != (void *) pool->sentinel) { + while (chunk->prev_chunk != (void *) pool->sentinel) { chunk = chunk->prev_chunk; } chunk->prev_chunk = pool->first_free; pool->first_free = pool->current; } /* Reset the sentinel as the current chunk. */ - pool->current = pool->sentinel; - pool->sentinel->size = 0; + pool->current = (void *) pool->sentinel; + pool->current->size = 0; } /* Rewinds the cell list's cursor to the beginning. After rewinding @@ -778,6 +755,25 @@ } } +inline static void full_step (struct edge *e) +{ + if (e->dy == 0) + return; + + e->x.quo += e->dxdy_full.quo; + e->x.rem += e->dxdy_full.rem; + if (e->x.rem < 0) { + e->x.quo--; + e->x.rem += e->dy; + } else if (e->x.rem >= e->dy) { + ++e->x.quo; + e->x.rem -= e->dy; + } + + e->cell = e->x.quo + (e->x.rem >= e->dy/2); +} + + /* Adds the analytical coverage of an edge crossing the current pixel * row to the coverage cells and advances the edge's x position to the * following row. @@ -800,28 +796,42 @@ struct edge *edge, int sign) { - grid_scaled_y_t y1, y2, dy; - grid_scaled_x_t dx; - int ix1, ix2; + struct quorem x1, x2; grid_scaled_x_t fx1, fx2; + int ix1, ix2; - struct quorem x1 = edge->x; - struct quorem x2 = x1; + x1 = edge->x; + full_step (edge); + x2 = edge->x; + + /* Step back from the sample location (half-subrow) to the pixel origin */ + if (edge->dy) { + x1.quo -= edge->dxdy.quo / 2; + x1.rem -= edge->dxdy.rem / 2; + if (x1.rem < 0) { + --x1.quo; + x1.rem += edge->dy; + } else if (x1.rem >= edge->dy) { + ++x1.quo; + x1.rem -= edge->dy; + } - if (! edge->vertical) { - x2.quo += edge->dxdy_full.quo; - x2.rem += edge->dxdy_full.rem; - if (x2.rem >= 0) { + x2.quo -= edge->dxdy.quo / 2; + x2.rem -= edge->dxdy.rem / 2; + if (x2.rem < 0) { + --x2.quo; + x2.rem += edge->dy; + } else if (x2.rem >= edge->dy) { ++x2.quo; x2.rem -= edge->dy; } - - edge->x = x2; } GRID_X_TO_INT_FRAC(x1.quo, ix1, fx1); GRID_X_TO_INT_FRAC(x2.quo, ix2, fx2); + cell_list_maybe_rewind(cells, MIN(ix1, ix2)); + /* Edge is entirely within a column? */ if (ix1 == ix2) { /* We always know that ix1 is >= the cell list cursor in this @@ -833,26 +843,39 @@ } /* Orient the edge left-to-right. */ - dx = x2.quo - x1.quo; - if (dx >= 0) { - y1 = 0; - y2 = GRID_Y; - } else { - int tmp; - tmp = ix1; ix1 = ix2; ix2 = tmp; - tmp = fx1; fx1 = fx2; fx2 = tmp; - dx = -dx; - sign = -sign; - y1 = GRID_Y; - y2 = 0; + if (ix2 < ix1) { + struct quorem tx; + int t; + + t = ix1; + ix1 = ix2; + ix2 = t; + + t = fx1; + fx1 = fx2; + fx2 = t; + + tx = x1; + x1 = x2; + x2 = tx; } - dy = y2 - y1; /* Add coverage for all pixels [ix1,ix2] on this row crossed * by the edge. */ { struct cell_pair pair; - struct quorem y = floored_divrem((GRID_X - fx1)*dy, dx); + struct quorem y; + int64_t tmp, dx; + int y_last; + + dx = (x2.quo - x1.quo) * edge->dy + (x2.rem - x1.rem); + + tmp = (ix1 + 1) * GRID_X * edge->dy; + tmp -= x1.quo * edge->dy + x1.rem; + tmp *= GRID_Y; + + y.quo = tmp / dx; + y.rem = tmp % dx; /* When rendering a previous edge on the active list we may * advance the cell list cursor past the leftmost pixel of the @@ -868,35 +891,32 @@ * * The left edge touches cells past the starting cell of the * right edge. Fortunately such cases are rare. - * - * The rewinding is never necessary if the current edge stays - * within a single column because we've checked before calling - * this function that the active list order won't change. */ - cell_list_maybe_rewind(cells, ix1); + */ pair = cell_list_find_pair(cells, ix1, ix1+1); pair.cell1->uncovered_area += sign*y.quo*(GRID_X + fx1); pair.cell1->covered_height += sign*y.quo; - y.quo += y1; + y_last = y.quo; if (ix1+1 < ix2) { - struct quorem dydx_full = floored_divrem(GRID_X*dy, dx); struct cell *cell = pair.cell2; + struct quorem dydx_full; + + dydx_full.quo = GRID_Y * GRID_X * edge->dy / dx; + dydx_full.rem = GRID_Y * GRID_X * edge->dy % dx; ++ix1; do { - grid_scaled_y_t y_skip = dydx_full.quo; + y.quo += dydx_full.quo; y.rem += dydx_full.rem; if (y.rem >= dx) { - ++y_skip; + y.quo++; y.rem -= dx; } - y.quo += y_skip; - - y_skip *= sign; - cell->uncovered_area += y_skip*GRID_X; - cell->covered_height += y_skip; + cell->uncovered_area += sign*(y.quo - y_last)*GRID_X; + cell->covered_height += sign*(y.quo - y_last); + y_last = y.quo; ++ix1; cell = cell_list_find(cells, ix1); @@ -904,8 +924,8 @@ pair.cell2 = cell; } - pair.cell2->uncovered_area += sign*(y2 - y.quo)*fx2; - pair.cell2->covered_height += sign*(y2 - y.quo); + pair.cell2->uncovered_area += sign*(GRID_Y - y_last)*fx2; + pair.cell2->covered_height += sign*(GRID_Y - y_last); } } @@ -976,78 +996,19 @@ *ptail = e; } -inline static void -polygon_add_edge (struct polygon *polygon, - const cairo_edge_t *edge) -{ - struct edge *e; - grid_scaled_x_t dx; - grid_scaled_y_t dy; - grid_scaled_y_t ytop, ybot; - grid_scaled_y_t ymin = polygon->ymin; - grid_scaled_y_t ymax = polygon->ymax; - - if (unlikely (edge->top >= ymax || edge->bottom <= ymin)) - return; - - e = pool_alloc (polygon->edge_pool.base, sizeof (struct edge)); - - dx = edge->line.p2.x - edge->line.p1.x; - dy = edge->line.p2.y - edge->line.p1.y; - e->dy = dy; - e->dir = edge->dir; - - ytop = edge->top >= ymin ? edge->top : ymin; - ybot = edge->bottom <= ymax ? edge->bottom : ymax; - e->ytop = ytop; - e->height_left = ybot - ytop; - - if (dx == 0) { - e->vertical = TRUE; - e->x.quo = edge->line.p1.x; - e->x.rem = 0; - e->dxdy.quo = 0; - e->dxdy.rem = 0; - e->dxdy_full.quo = 0; - e->dxdy_full.rem = 0; - } else { - e->vertical = FALSE; - e->dxdy = floored_divrem (dx, dy); - if (ytop == edge->line.p1.y) { - e->x.quo = edge->line.p1.x; - e->x.rem = 0; - } else { - e->x = floored_muldivrem (ytop - edge->line.p1.y, dx, dy); - e->x.quo += edge->line.p1.x; - } - - if (e->height_left >= GRID_Y) { - e->dxdy_full = floored_muldivrem (GRID_Y, dx, dy); - } else { - e->dxdy_full.quo = 0; - e->dxdy_full.rem = 0; - } - } - - _polygon_insert_edge_into_its_y_bucket (polygon, e); - - e->x.rem -= dy; /* Bias the remainder for faster - * edge advancement. */ -} - static void active_list_reset (struct active_list *active) { - active->head.vertical = 1; active->head.height_left = INT_MAX; - active->head.x.quo = INT_MIN; + active->head.dy = 0; + active->head.cell = INT_MIN; active->head.prev = NULL; active->head.next = &active->tail; active->tail.prev = &active->head; active->tail.next = NULL; - active->tail.x.quo = INT_MAX; + active->tail.cell = INT_MAX; active->tail.height_left = INT_MAX; - active->tail.vertical = 1; + active->tail.dy = 0; active->min_height = 0; active->is_vertical = 1; } @@ -1084,7 +1045,7 @@ prev = head_a->prev; next = &head; - if (head_a->x.quo <= head_b->x.quo) { + if (head_a->cell <= head_b->cell) { head = head_a; } else { head = head_b; @@ -1093,8 +1054,8 @@ } do { - x = head_b->x.quo; - while (head_a != NULL && head_a->x.quo <= x) { + x = head_b->cell; + while (head_a != NULL && head_a->cell <= x) { prev = head_a; next = &head_a->next; head_a = head_a->next; @@ -1106,8 +1067,8 @@ return head; start_with_b: - x = head_a->x.quo; - while (head_b != NULL && head_b->x.quo <= x) { + x = head_a->cell; + while (head_b != NULL && head_b->cell <= x) { prev = head_b; next = &head_b->next; head_b = head_b->next; @@ -1153,7 +1114,7 @@ } remaining = head_other->next; - if (list->x.quo <= head_other->x.quo) { + if (list->cell <= head_other->cell) { *head_out = list; head_other->next = NULL; } else { @@ -1197,7 +1158,7 @@ while (NULL != e) { if (e->height_left < min_height) min_height = e->height_left; - is_vertical &= e->vertical; + is_vertical &= e->dy == 0; e = e->next; } @@ -1210,19 +1171,27 @@ /* Check for intersections as no edges end during the next row. */ for (e = active->head.next; e != &active->tail; e = e->next) { - struct quorem x = e->x; + int cell; - if (! e->vertical) { + if (e->dy) { + struct quorem x = e->x; x.quo += e->dxdy_full.quo; x.rem += e->dxdy_full.rem; - if (x.rem >= 0) - ++x.quo; - } + if (x.rem < 0) { + x.quo--; + x.rem += e->dy; + } else if (x.rem >= e->dy) { + x.quo++; + x.rem -= e->dy; + } + cell = x.quo + (x.rem >= e->dy/2); + } else + cell = e->cell; - if (x.quo < prev_x) + if (cell < prev_x) return 0; - prev_x = x.quo; + prev_x = cell; } return 1; @@ -1237,7 +1206,7 @@ active->head.next = merge_unsorted_edges (active->head.next, edges); } -inline static void +inline static int polygon_fill_buckets (struct active_list *active, struct edge *edge, int y, @@ -1245,6 +1214,7 @@ { grid_scaled_y_t min_height = active->min_height; int is_vertical = active->is_vertical; + int max_suby = 0; while (edge) { struct edge *next = edge->next; @@ -1256,12 +1226,34 @@ buckets[suby] = edge; if (edge->height_left < min_height) min_height = edge->height_left; - is_vertical &= edge->vertical; + is_vertical &= edge->dy == 0; edge = next; + if (suby > max_suby) + max_suby = suby; } active->is_vertical = is_vertical; active->min_height = min_height; + + return max_suby; +} + +static void step (struct edge *edge) +{ + if (edge->dy == 0) + return; + + edge->x.quo += edge->dxdy.quo; + edge->x.rem += edge->dxdy.rem; + if (edge->x.rem < 0) { + --edge->x.quo; + edge->x.rem += edge->dy; + } else if (edge->x.rem >= edge->dy) { + ++edge->x.quo; + edge->x.rem -= edge->dy; + } + + edge->cell = edge->x.quo + (edge->x.rem >= edge->dy/2); } inline static void @@ -1277,29 +1269,24 @@ while (&active->tail != edge) { struct edge *next = edge->next; - int xend = edge->x.quo; + int xend = edge->cell; if (--edge->height_left) { - edge->x.quo += edge->dxdy.quo; - edge->x.rem += edge->dxdy.rem; - if (edge->x.rem >= 0) { - ++edge->x.quo; - edge->x.rem -= edge->dy; - } + step (edge); - if (edge->x.quo < prev_x) { + if (edge->cell < prev_x) { struct edge *pos = edge->prev; pos->next = next; next->prev = pos; do { pos = pos->prev; - } while (edge->x.quo < pos->x.quo); + } while (edge->cell < pos->cell); pos->next->prev = edge; edge->next = pos->next; edge->prev = pos; pos->next = edge; } else - prev_x = edge->x.quo; + prev_x = edge->cell; active->min_height = -1; } else { edge->prev->next = next; @@ -1308,7 +1295,7 @@ winding += edge->dir; if ((winding & mask) == 0) { - if (next->x.quo != xend) { + if (next->cell != xend) { cell_list_add_subspan (coverages, xstart, xend); xstart = INT_MIN; } @@ -1329,18 +1316,6 @@ } } -inline static void full_step (struct edge *e) -{ - if (! e->vertical) { - e->x.quo += e->dxdy_full.quo; - e->x.rem += e->dxdy_full.rem; - if (e->x.rem >= 0) { - ++e->x.quo; - e->x.rem -= e->dy; - } - } -} - static void full_row (struct active_list *active, struct cell_list *coverages, @@ -1360,7 +1335,7 @@ dec (active, right, GRID_Y); winding += right->dir; - if ((winding & mask) == 0 && right->next->x.quo != right->x.quo) + if ((winding & mask) == 0 && right->next->cell != right->cell) break; full_step (right); @@ -1482,10 +1457,96 @@ #define INPUT_TO_GRID_general(in, out, grid_scale) do { \ long long tmp__ = (long long)(grid_scale) * (in); \ + tmp__ += 1 << (GLITTER_INPUT_BITS-1); \ tmp__ >>= GLITTER_INPUT_BITS; \ (out) = tmp__; \ } while (0) +inline static void +polygon_add_edge (struct polygon *polygon, + const cairo_edge_t *edge) +{ + struct edge *e; + grid_scaled_y_t ytop, ybot; + const cairo_point_t *p1, *p2; + + INPUT_TO_GRID_Y (edge->top, ytop); + if (ytop < polygon->ymin) + ytop = polygon->ymin; + + INPUT_TO_GRID_Y (edge->bottom, ybot); + if (ybot > polygon->ymax) + ybot = polygon->ymax; + + if (ybot <= ytop) + return; + + e = pool_alloc (polygon->edge_pool.base, sizeof (struct edge)); + + e->ytop = ytop; + e->height_left = ybot - ytop; + if (edge->line.p2.y > edge->line.p1.y) { + e->dir = edge->dir; + p1 = &edge->line.p1; + p2 = &edge->line.p2; + } else { + e->dir = -edge->dir; + p1 = &edge->line.p2; + p2 = &edge->line.p1; + } + + if (p2->x == p1->x) { + e->cell = p1->x; + e->x.quo = p1->x; + e->x.rem = 0; + e->dxdy.quo = e->dxdy.rem = 0; + e->dxdy_full.quo = e->dxdy_full.rem = 0; + e->dy = 0; + } else { + int64_t Ex, Ey, tmp; + + Ex = (int64_t)(p2->x - p1->x) * GRID_X; + Ey = (int64_t)(p2->y - p1->y) * GRID_Y * (2 << GLITTER_INPUT_BITS); + + e->dxdy.quo = Ex * (2 << GLITTER_INPUT_BITS) / Ey; + e->dxdy.rem = Ex * (2 << GLITTER_INPUT_BITS) % Ey; + + tmp = (int64_t)(2*ytop + 1) << GLITTER_INPUT_BITS; + tmp -= (int64_t)p1->y * GRID_Y * 2; + tmp *= Ex; + e->x.quo = tmp / Ey; + e->x.rem = tmp % Ey; + +#if GRID_X_BITS == GLITTER_INPUT_BITS + e->x.quo += p1->x; +#else + tmp = (int64_t)p1->x * GRID_X; + e->x.quo += tmp >> GLITTER_INPUT_BITS; + e->x.rem += ((tmp & ((1 << GLITTER_INPUT_BITS) - 1)) * Ey) / (1 << GLITTER_INPUT_BITS); +#endif + + if (e->x.rem < 0) { + e->x.quo--; + e->x.rem += Ey; + } else if (e->x.rem >= Ey) { + e->x.quo++; + e->x.rem -= Ey; + } + + if (e->height_left >= GRID_Y) { + tmp = Ex * (2 * GRID_Y << GLITTER_INPUT_BITS); + e->dxdy_full.quo = tmp / Ey; + e->dxdy_full.rem = tmp % Ey; + } else + e->dxdy_full.quo = e->dxdy_full.rem = 0; + + e->cell = e->x.quo + (e->x.rem >= Ey/2); + e->dy = Ey; + } + + _polygon_insert_edge_into_its_y_bucket (polygon, e); +} + /* Add a new polygon edge from pixel (x1,y1) to (x2,y2) to the scan * converter. The coordinates represent pixel positions scaled by * 2**GLITTER_PIXEL_BITS. If this function fails then the scan @@ -1495,25 +1556,7 @@ glitter_scan_converter_add_edge (glitter_scan_converter_t *converter, const cairo_edge_t *edge) { - cairo_edge_t e; - - INPUT_TO_GRID_Y (edge->top, e.top); - INPUT_TO_GRID_Y (edge->bottom, e.bottom); - if (e.top >= e.bottom) - return; - - /* XXX: possible overflows if GRID_X/Y > 2**GLITTER_INPUT_BITS */ - INPUT_TO_GRID_Y (edge->line.p1.y, e.line.p1.y); - INPUT_TO_GRID_Y (edge->line.p2.y, e.line.p2.y); - if (e.line.p1.y == e.line.p2.y) - e.line.p2.y++; /* little fudge to prevent a div-by-zero */ - - INPUT_TO_GRID_X (edge->line.p1.x, e.line.p1.x); - INPUT_TO_GRID_X (edge->line.p2.x, e.line.p2.x); - - e.dir = edge->dir; - - polygon_add_edge (converter->polygon, &e); + polygon_add_edge (converter->polygon, edge); } static void @@ -1699,7 +1742,15 @@ /* Determine if we can ignore this row or use the full pixel * stepper. */ - if (! polygon->y_buckets[i]) { + if (polygon_fill_buckets (active, + polygon->y_buckets[i], + (i+ymin_i)*GRID_Y, + buckets) == 0) { + if (buckets[0]) { + active_list_merge_edges_from_bucket (active, buckets[0]); + buckets[0] = NULL; + } + if (active->head.next == &active->tail) { active->min_height = INT_MAX; active->is_vertical = 1; @@ -1729,18 +1780,12 @@ } else { int sub; - polygon_fill_buckets (active, - polygon->y_buckets[i], - (i+ymin_i)*GRID_Y, - buckets); - /* Subsample this row. */ for (sub = 0; sub < GRID_Y; sub++) { if (buckets[sub]) { active_list_merge_edges_from_bucket (active, buckets[sub]); buckets[sub] = NULL; } - sub_row (active, coverages, winding_mask); } } diff -Nru cairo-1.13.0~20140204/src/cairo-traps.c cairo-1.14.2/src/cairo-traps.c --- cairo-1.13.0~20140204/src/cairo-traps.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-traps.c 2015-03-10 22:21:07.000000000 +0000 @@ -42,6 +42,7 @@ #include "cairo-box-inline.h" #include "cairo-boxes-private.h" #include "cairo-error-private.h" +#include "cairo-line-private.h" #include "cairo-region-private.h" #include "cairo-slope-private.h" #include "cairo-traps-private.h" @@ -149,10 +150,15 @@ void _cairo_traps_add_trap (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_line_t *left, cairo_line_t *right) + const cairo_line_t *left, + const cairo_line_t *right) { cairo_trapezoid_t *trap; + assert (left->p1.y != left->p2.y); + assert (right->p1.y != right->p2.y); + assert (bottom > top); + if (unlikely (traps->num_traps == traps->traps_size)) { if (unlikely (! _cairo_traps_grow (traps))) return; @@ -168,7 +174,8 @@ static void _cairo_traps_add_clipped_trap (cairo_traps_t *traps, cairo_fixed_t _top, cairo_fixed_t _bottom, - cairo_line_t *_left, cairo_line_t *_right) + const cairo_line_t *_left, + const cairo_line_t *_right) { /* Note: With the goofy trapezoid specification, (where an * arbitrary two points on the lines can specified for the left @@ -386,23 +393,73 @@ } } -/* A triangle is simply a degenerate case of a convex - * quadrilateral. We would not benefit from having any distinct - * implementation of triangle vs. quadrilateral tessellation here. */ -void -_cairo_traps_tessellate_triangle (cairo_traps_t *traps, - const cairo_point_t t[3]) -{ - cairo_point_t quad[4]; +static void add_tri (cairo_traps_t *traps, + int y1, int y2, + const cairo_line_t *left, + const cairo_line_t *right) +{ + if (y2 < y1) { + int tmp = y1; + y1 = y2; + y2 = tmp; + } - quad[0] = t[0]; - quad[1] = t[0]; - quad[2] = t[1]; - quad[3] = t[2]; + if (cairo_lines_compare_at_y (left, right, y1) > 0) { + const cairo_line_t *tmp = left; + left = right; + right = tmp; + } - _cairo_traps_tessellate_convex_quad (traps, quad); + _cairo_traps_add_clipped_trap (traps, y1, y2, left, right); } +void +_cairo_traps_tessellate_triangle_with_edges (cairo_traps_t *traps, + const cairo_point_t t[3], + const cairo_point_t edges[4]) +{ + cairo_line_t lines[3]; + + if (edges[0].y <= edges[1].y) { + lines[0].p1 = edges[0]; + lines[0].p2 = edges[1]; + } else { + lines[0].p1 = edges[1]; + lines[0].p2 = edges[0]; + } + + if (edges[2].y <= edges[3].y) { + lines[1].p1 = edges[2]; + lines[1].p2 = edges[3]; + } else { + lines[1].p1 = edges[3]; + lines[1].p2 = edges[2]; + } + + if (t[1].y == t[2].y) { + add_tri (traps, t[0].y, t[1].y, &lines[0], &lines[1]); + return; + } + + if (t[1].y <= t[2].y) { + lines[2].p1 = t[1]; + lines[2].p2 = t[2]; + } else { + lines[2].p1 = t[2]; + lines[2].p2 = t[1]; + } + + if (((t[1].y - t[0].y) < 0) ^ ((t[2].y - t[0].y) < 0)) { + add_tri (traps, t[0].y, t[1].y, &lines[0], &lines[2]); + add_tri (traps, t[0].y, t[2].y, &lines[1], &lines[2]); + } else if (abs(t[1].y - t[0].y) < abs(t[2].y - t[0].y)) { + add_tri (traps, t[0].y, t[1].y, &lines[0], &lines[1]); + add_tri (traps, t[1].y, t[2].y, &lines[2], &lines[1]); + } else { + add_tri (traps, t[0].y, t[2].y, &lines[1], &lines[0]); + add_tri (traps, t[1].y, t[2].y, &lines[2], &lines[0]); + } +} /** * _cairo_traps_init_boxes: diff -Nru cairo-1.13.0~20140204/src/cairo-traps-compositor.c cairo-1.14.2/src/cairo-traps-compositor.c --- cairo-1.13.0~20140204/src/cairo-traps-compositor.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-traps-compositor.c 2015-03-10 22:21:07.000000000 +0000 @@ -1393,7 +1393,7 @@ cairo_traps_t *traps, cairo_antialias_t antialias) { - int i; + int i, j; /* first check that the traps are rectilinear */ if (antialias == CAIRO_ANTIALIAS_NONE) { @@ -1417,23 +1417,25 @@ _cairo_boxes_init (boxes); - boxes->num_boxes = traps->num_traps; boxes->chunks.base = (cairo_box_t *) traps->traps; - boxes->chunks.count = traps->num_traps; boxes->chunks.size = traps->num_traps; if (antialias != CAIRO_ANTIALIAS_NONE) { - for (i = 0; i < traps->num_traps; i++) { + for (i = j = 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 (x1 == x2 || y1 == y2) + continue; + + boxes->chunks.base[j].p1.x = x1; + boxes->chunks.base[j].p1.y = y1; + boxes->chunks.base[j].p2.x = x2; + boxes->chunks.base[j].p2.y = y2; + j++; if (boxes->is_pixel_aligned) { boxes->is_pixel_aligned = @@ -1444,7 +1446,7 @@ } else { boxes->is_pixel_aligned = TRUE; - for (i = 0; i < traps->num_traps; i++) { + for (i = j = 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; @@ -1452,12 +1454,16 @@ 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); + boxes->chunks.base[j].p1.x = _cairo_fixed_round_down (x1); + boxes->chunks.base[j].p1.y = _cairo_fixed_round_down (y1); + boxes->chunks.base[j].p2.x = _cairo_fixed_round_down (x2); + boxes->chunks.base[j].p2.y = _cairo_fixed_round_down (y2); + j += (boxes->chunks.base[j].p1.x != boxes->chunks.base[j].p2.x && + boxes->chunks.base[j].p1.y != boxes->chunks.base[j].p2.y); } } + boxes->chunks.count = j; + boxes->num_boxes = j; return CAIRO_INT_STATUS_SUCCESS; } diff -Nru cairo-1.13.0~20140204/src/cairo-traps-private.h cairo-1.14.2/src/cairo-traps-private.h --- cairo-1.13.0~20140204/src/cairo-traps-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-traps-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -91,8 +91,9 @@ _cairo_traps_translate (cairo_traps_t *traps, int x, int y); cairo_private void -_cairo_traps_tessellate_triangle (cairo_traps_t *traps, - const cairo_point_t t[3]); +_cairo_traps_tessellate_triangle_with_edges (cairo_traps_t *traps, + const cairo_point_t t[3], + const cairo_point_t edges[4]); cairo_private void _cairo_traps_tessellate_convex_quad (cairo_traps_t *traps, @@ -106,7 +107,8 @@ cairo_private void _cairo_traps_add_trap (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_line_t *left, cairo_line_t *right); + const cairo_line_t *left, + const cairo_line_t *right); cairo_private int _cairo_traps_contain (const cairo_traps_t *traps, diff -Nru cairo-1.13.0~20140204/src/cairo-truetype-subset.c cairo-1.14.2/src/cairo-truetype-subset.c --- cairo-1.13.0~20140204/src/cairo-truetype-subset.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-truetype-subset.c 2015-03-10 22:21:07.000000000 +0000 @@ -1564,12 +1564,12 @@ goto fail; } - free (name); - status = _cairo_escape_ps_name (&ps_name); if (unlikely(status)) goto fail; + free (name); + *ps_name_out = ps_name; *font_name_out = family_name; diff -Nru cairo-1.13.0~20140204/src/cairo-type1-subset.c cairo-1.14.2/src/cairo-type1-subset.c --- cairo-1.13.0~20140204/src/cairo-type1-subset.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-type1-subset.c 2015-03-10 22:21:07.000000000 +0000 @@ -53,7 +53,6 @@ #include "cairo-output-stream-private.h" #include -#include #define TYPE1_STACKSIZE 24 /* Defined in Type 1 Font Format */ @@ -309,12 +308,10 @@ const char *start, *end, *segment_end; int ret, s_max, i, j; char *s; - struct lconv *locale_data; const char *decimal_point; int decimal_point_len; - locale_data = localeconv (); - decimal_point = locale_data->decimal_point; + decimal_point = cairo_get_locale_decimal_point (); decimal_point_len = strlen (decimal_point); assert (decimal_point_len != 0); diff -Nru cairo-1.13.0~20140204/src/cairo-type3-glyph-surface.c cairo-1.14.2/src/cairo-type3-glyph-surface.c --- cairo-1.13.0~20140204/src/cairo-type3-glyph-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-type3-glyph-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -74,7 +74,8 @@ _cairo_type3_glyph_surface_create (cairo_scaled_font_t *scaled_font, cairo_output_stream_t *stream, cairo_type3_glyph_surface_emit_image_t emit_image, - cairo_scaled_font_subsets_t *font_subsets) + cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t ps) { cairo_type3_glyph_surface_t *surface; cairo_matrix_t invert_y_axis; @@ -106,7 +107,8 @@ _cairo_pdf_operators_init (&surface->pdf_operators, surface->stream, &surface->cairo_to_pdf, - font_subsets); + font_subsets, + ps); _cairo_surface_clipper_init (&surface->clipper, _cairo_type3_glyph_surface_clipper_intersect_clip_path); diff -Nru cairo-1.13.0~20140204/src/cairo-type3-glyph-surface-private.h cairo-1.14.2/src/cairo-type3-glyph-surface-private.h --- cairo-1.13.0~20140204/src/cairo-type3-glyph-surface-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-type3-glyph-surface-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -65,7 +65,8 @@ _cairo_type3_glyph_surface_create (cairo_scaled_font_t *scaled_font, cairo_output_stream_t *stream, cairo_type3_glyph_surface_emit_image_t emit_image, - cairo_scaled_font_subsets_t *font_subsets); + cairo_scaled_font_subsets_t *font_subsets, + cairo_bool_t ps_output); cairo_private void _cairo_type3_glyph_surface_set_font_subsets_callback (void *abstract_surface, diff -Nru cairo-1.13.0~20140204/src/cairo-types-private.h cairo-1.14.2/src/cairo-types-private.h --- cairo-1.13.0~20140204/src/cairo-types-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-types-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -113,7 +113,7 @@ }; /** - * cairo_hash_entry_t: + * _cairo_hash_entry: * * A #cairo_hash_entry_t contains both a key and a value for * #cairo_hash_table_t. User-derived types for #cairo_hash_entry_t must @@ -158,7 +158,7 @@ }; /** - * cairo_lcd_filter_t: + * _cairo_lcd_filter: * @CAIRO_LCD_FILTER_DEFAULT: Use the default LCD filter for * font backend and target device * @CAIRO_LCD_FILTER_NONE: Do not perform LCD filtering diff -Nru cairo-1.13.0~20140204/src/cairo-version.c cairo-1.14.2/src/cairo-version.c --- cairo-1.13.0~20140204/src/cairo-version.c 2014-02-04 10:43:17.000000000 +0000 +++ cairo-1.14.2/src/cairo-version.c 2015-03-10 22:21:07.000000000 +0000 @@ -79,10 +79,10 @@ * 1.0.1 - Development on a maintenance branch (toward 1.0.2 release) * 1.1.1 - Development on head (toward 1.1.2 snapshot and 1.2.0 release) * - * + * * * Compatibility - * + * * The API/ABI compatibility guarantees for various versions are as * follows. First, let's assume some cairo-using application code that is * successfully using the API/ABI "from" one version of cairo. Then let's @@ -102,11 +102,11 @@ * with the same in-development version number. This is because these * numbers don't correspond to any fixed state of the software, but * rather the many states between snapshots and releases. - * + * * * * Examining the version - * + * * 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 * an encoded form suitable for direct comparison. Cairo also provides the @@ -135,9 +135,9 @@ * if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 0, 0)) * printf ("Running with suitable cairo version: %s\n", cairo_version_string ()); * - * + * * - * + * **/ /** diff -Nru cairo-1.13.0~20140204/src/cairo-wideint.c cairo-1.14.2/src/cairo-wideint.c --- cairo-1.13.0~20140204/src/cairo-wideint.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-wideint.c 2015-03-10 22:21:07.000000000 +0000 @@ -654,16 +654,16 @@ return qr; } -cairo_int128_t -_cairo_int128_negate (cairo_int128_t a) +cairo_uint128_t +_cairo_uint128_negate (cairo_uint128_t a) { a.lo = _cairo_uint64_not (a.lo); a.hi = _cairo_uint64_not (a.hi); return _cairo_uint128_add (a, _cairo_uint32_to_uint128 (1)); } -cairo_int128_t -_cairo_int128_not (cairo_int128_t a) +cairo_uint128_t +_cairo_uint128_not (cairo_uint128_t a) { a.lo = _cairo_uint64_not (a.lo); a.hi = _cairo_uint64_not (a.hi); diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-connection.c cairo-1.14.2/src/cairo-xcb-connection.c --- cairo-1.13.0~20140204/src/cairo-xcb-connection.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-connection.c 2015-03-10 22:21:07.000000000 +0000 @@ -77,6 +77,9 @@ #define XCB_RENDER_HAS_PICTURE_TRANSFORM(surface) XCB_RENDER_AT_LEAST((surface), 0, 6) #define XCB_RENDER_HAS_FILTERS(surface) XCB_RENDER_AT_LEAST((surface), 0, 6) +#define XCB_RENDER_HAS_FILTER_GOOD(surface) FALSE +#define XCB_RENDER_HAS_FILTER_BEST(surface) FALSE +#define XCB_RENDER_HAS_SUBPIXEL_ORDER(surface) XCB_RENDER_AT_LEAST((surface), 0, 6) #define XCB_RENDER_HAS_EXTENDED_REPEAT(surface) XCB_RENDER_AT_LEAST((surface), 0, 10) #define XCB_RENDER_HAS_GRADIENTS(surface) XCB_RENDER_AT_LEAST((surface), 0, 10) @@ -390,6 +393,12 @@ if (XCB_RENDER_HAS_FILTERS (version)) connection->flags |= CAIRO_XCB_RENDER_HAS_FILTERS; + if (XCB_RENDER_HAS_FILTER_GOOD (version)) + connection->flags |= CAIRO_XCB_RENDER_HAS_FILTER_GOOD; + + if (XCB_RENDER_HAS_FILTER_BEST (version)) + connection->flags |= CAIRO_XCB_RENDER_HAS_FILTER_BEST; + if (XCB_RENDER_HAS_PDF_OPERATORS (version)) connection->flags |= CAIRO_XCB_RENDER_HAS_PDF_OPERATORS; @@ -399,6 +408,15 @@ if (XCB_RENDER_HAS_GRADIENTS (version)) connection->flags |= CAIRO_XCB_RENDER_HAS_GRADIENTS; + if (XCB_RENDER_HAS_SUBPIXEL_ORDER (version)) { + uint32_t screen; + uint32_t *subpixel = xcb_render_query_pict_formats_subpixels(formats); + + /* The spec explicitly allows to have too few entries in the reply... */ + for (screen = 0; screen < formats->num_subpixel && screen < connection->root->roots_len; screen++) + connection->subpixel_orders[screen] = subpixel[screen]; + } + free (version); status = _cairo_xcb_connection_parse_xrender_formats (connection, formats); @@ -573,6 +591,7 @@ CAIRO_MUTEX_FINI (connection->shm_mutex); CAIRO_MUTEX_FINI (connection->screens_mutex); + free (connection->subpixel_orders); free (connection); } @@ -676,6 +695,14 @@ connection->root = xcb_get_setup (xcb_connection); connection->render = NULL; + connection->subpixel_orders = calloc (connection->root->roots_len, sizeof(*connection->subpixel_orders)); + if (unlikely (connection->subpixel_orders == NULL)) { + CAIRO_MUTEX_UNLOCK (connection->device.mutex); + _cairo_xcb_connection_destroy (connection); + connection = NULL; + goto unlock; + } + ext = xcb_get_extension_data (xcb_connection, &xcb_render_id); if (ext != NULL && ext->present) { status = _cairo_xcb_connection_query_render (connection); @@ -882,6 +909,8 @@ CAIRO_XCB_RENDER_HAS_COMPOSITE_TRAPEZOIDS | CAIRO_XCB_RENDER_HAS_PICTURE_TRANSFORM | CAIRO_XCB_RENDER_HAS_FILTERS | + CAIRO_XCB_RENDER_HAS_FILTER_GOOD | + CAIRO_XCB_RENDER_HAS_FILTER_BEST | CAIRO_XCB_RENDER_HAS_PDF_OPERATORS | CAIRO_XCB_RENDER_HAS_EXTENDED_REPEAT | CAIRO_XCB_RENDER_HAS_GRADIENTS); diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-connection-core.c cairo-1.14.2/src/cairo-xcb-connection-core.c --- cairo-1.13.0~20140204/src/cairo-xcb-connection-core.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-connection-core.c 2015-03-10 22:21:07.000000000 +0000 @@ -268,8 +268,6 @@ if (rows > height) rows = height; - length = rows * cpp * width; - _cairo_xcb_connection_do_put_subimage (connection, dst, gc, src_x, src_y, width, rows, cpp, stride, dst_x, dst_y, depth, _data); diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-private.h cairo-1.14.2/src/cairo-xcb-private.h --- cairo-1.13.0~20140204/src/cairo-xcb-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -37,10 +37,10 @@ #ifndef CAIRO_XCB_PRIVATE_H #define CAIRO_XCB_PRIVATE_H -#include "cairo-xcb.h" - #include "cairoint.h" +#include "cairo-xcb.h" + #include "cairo-cache-private.h" #include "cairo-compiler-private.h" #include "cairo-device-private.h" @@ -75,6 +75,7 @@ typedef struct _cairo_xcb_picture cairo_xcb_picture_t; typedef struct _cairo_xcb_shm_mem_pool cairo_xcb_shm_mem_pool_t; typedef struct _cairo_xcb_shm_info cairo_xcb_shm_info_t; +typedef struct _cairo_xcb_resources cairo_xcb_resources_t; struct _cairo_xcb_shm_info { cairo_xcb_connection_t *connection; @@ -180,7 +181,8 @@ struct _cairo_xcb_screen { cairo_xcb_connection_t *connection; - xcb_screen_t *xcb_screen; + xcb_screen_t *xcb_screen; + xcb_render_sub_pixel_t subpixel_order; xcb_gcontext_t gc[GC_CACHE_SIZE]; uint8_t gc_depths[GC_CACHE_SIZE]; @@ -199,6 +201,9 @@ cairo_list_t link; cairo_list_t surfaces; cairo_list_t pictures; + + cairo_bool_t has_font_options; + cairo_font_options_t font_options; }; struct _cairo_xcb_connection { @@ -219,6 +224,7 @@ const xcb_setup_t *root; const xcb_query_extension_reply_t *render; const xcb_query_extension_reply_t *shm; + xcb_render_sub_pixel_t *subpixel_orders; cairo_list_t free_xids; cairo_freepool_t xid_pool; @@ -236,6 +242,14 @@ cairo_list_t link; }; +struct _cairo_xcb_resources { + cairo_bool_t xft_antialias; + int xft_lcdfilter; + cairo_bool_t xft_hinting; + int xft_hintstyle; + int xft_rgba; +}; + enum { CAIRO_XCB_HAS_RENDER = 0x0001, CAIRO_XCB_RENDER_HAS_FILL_RECTANGLES = 0x0002, @@ -247,6 +261,8 @@ CAIRO_XCB_RENDER_HAS_PDF_OPERATORS = 0x0080, CAIRO_XCB_RENDER_HAS_EXTENDED_REPEAT = 0x0100, CAIRO_XCB_RENDER_HAS_GRADIENTS = 0x0200, + CAIRO_XCB_RENDER_HAS_FILTER_GOOD = 0x0400, + CAIRO_XCB_RENDER_HAS_FILTER_BEST = 0x0800, CAIRO_XCB_HAS_SHM = 0x80000000, @@ -259,7 +275,9 @@ CAIRO_XCB_RENDER_HAS_FILTERS | CAIRO_XCB_RENDER_HAS_PDF_OPERATORS | CAIRO_XCB_RENDER_HAS_EXTENDED_REPEAT | - CAIRO_XCB_RENDER_HAS_GRADIENTS, + CAIRO_XCB_RENDER_HAS_GRADIENTS | + CAIRO_XCB_RENDER_HAS_FILTER_GOOD | + CAIRO_XCB_RENDER_HAS_FILTER_BEST, CAIRO_XCB_SHM_MASK = CAIRO_XCB_HAS_SHM }; @@ -267,6 +285,21 @@ cairo_private extern const cairo_surface_backend_t _cairo_xcb_surface_backend; +/** + * _cairo_surface_is_xcb: + * @surface: a #cairo_surface_t + * + * Checks if a surface is an #cairo_xcb_surface_t + * + * Return value: %TRUE if the surface is an xcb surface + **/ +static inline cairo_bool_t +_cairo_surface_is_xcb (const cairo_surface_t *surface) +{ + /* _cairo_surface_nil sets a NULL backend so be safe */ + return surface->backend && surface->backend->type == CAIRO_SURFACE_TYPE_XCB; +} + cairo_private cairo_xcb_connection_t * _cairo_xcb_connection_get (xcb_connection_t *connection); @@ -342,6 +375,9 @@ cairo_private void _cairo_xcb_screen_put_gc (cairo_xcb_screen_t *screen, int depth, xcb_gcontext_t gc); +cairo_private cairo_font_options_t * +_cairo_xcb_screen_get_font_options (cairo_xcb_screen_t *screen); + cairo_private cairo_status_t _cairo_xcb_screen_store_linear_picture (cairo_xcb_screen_t *screen, const cairo_linear_pattern_t *linear, @@ -758,4 +794,8 @@ slim_hidden_proto_no_warn (cairo_xcb_device_debug_cap_xrender_version); #endif +cairo_private void +_cairo_xcb_resources_get (cairo_xcb_screen_t *screen, + cairo_xcb_resources_t *resources); + #endif /* CAIRO_XCB_PRIVATE_H */ diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-resources.c cairo-1.14.2/src/cairo-xcb-resources.c --- cairo-1.13.0~20140204/src/cairo-xcb-resources.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-resources.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,281 @@ +/* Cairo - a vector graphics library with display and print output + * + * Copyright © 2014 Lukas Lalinsky + * Copyright © 2005 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. + * + * Authors: + * Lukas Lalinsky + * + * Partially on code from xftdpy.c + * + * Copyright © 2000 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * 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 Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD 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. + */ + +#include "cairoint.h" + +#include "cairo-xcb-private.h" + +#include "cairo-fontconfig-private.h" + +static void +parse_boolean (const char *v, cairo_bool_t *out) +{ + char c0, c1; + + c0 = *v; + if (c0 == 't' || c0 == 'T' || c0 == 'y' || c0 == 'Y' || c0 == '1') + *out = TRUE; + if (c0 == 'f' || c0 == 'F' || c0 == 'n' || c0 == 'N' || c0 == '0') + *out = FALSE; + if (c0 == 'o') { + c1 = v[1]; + if (c1 == 'n' || c1 == 'N') + *out = TRUE; + if (c1 == 'f' || c1 == 'F') + *out = FALSE; + } +} + +static void +parse_integer (const char *v, int *out) +{ + char *e; + int value; + +#if CAIRO_HAS_FC_FONT + if (FcNameConstant ((FcChar8 *) v, out)) + return; +#endif + + value = strtol (v, &e, 0); + if (e != v) + *out = value; +} + +static char * +skip_spaces(char *str) +{ + while (*str == ' ' || *str == '\t' || *str == '\n') + str++; + return str; +} + +struct resource_parser { + int buffer_size; + int bytes_in_buffer; + char* buffer; + cairo_xcb_resources_t *resources; +}; + +static cairo_bool_t +resource_parse_line (char *name, cairo_xcb_resources_t *resources) +{ + char *value; + + value = strchr (name, ':'); + if (value == NULL) + return FALSE; + + *value++ = 0; + + name = skip_spaces (name); + value = skip_spaces (value); + + if (strcmp (name, "Xft.antialias") == 0) + parse_boolean (value, &(resources->xft_antialias)); + else if (strcmp (name, "Xft.lcdfilter") == 0) + parse_integer (value, &(resources->xft_lcdfilter)); + else if (strcmp (name, "Xft.rgba") == 0) + parse_integer (value, &(resources->xft_rgba)); + else if (strcmp (name, "Xft.hinting") == 0) + parse_boolean (value, &(resources->xft_hinting)); + else if (strcmp (name, "Xft.hintstyle") == 0) + parse_integer (value, &(resources->xft_hintstyle)); + + return TRUE; +} + +static int +resource_parse_lines (struct resource_parser *parser) +{ + char *line, *newline; + + line = parser->buffer; + while (1) { + newline = strchr (line, '\n'); + if (newline == NULL) + break; + + *newline++ = 0; + + if (! resource_parse_line (line, parser->resources)) + break; + + line = newline; + } + + return line - parser->buffer; +} + +static void +resource_parser_init (struct resource_parser *parser, cairo_xcb_resources_t *resources) +{ + parser->buffer_size = 0; + parser->bytes_in_buffer = 0; + parser->buffer = NULL; + parser->resources = resources; +} + +static cairo_bool_t +resource_parser_update (struct resource_parser *parser, const char *data, int length) +{ + int bytes_parsed; + + if (parser->bytes_in_buffer + length + 1 > parser->buffer_size) { + parser->buffer_size = parser->bytes_in_buffer + length + 1; + parser->buffer = realloc(parser->buffer, parser->buffer_size); + if (! parser->buffer) { + parser->buffer_size = 0; + parser->bytes_in_buffer = 0; + return FALSE; + } + } + + memmove (parser->buffer + parser->bytes_in_buffer, data, length); + parser->bytes_in_buffer += length; + parser->buffer[parser->bytes_in_buffer] = 0; + + bytes_parsed = resource_parse_lines (parser); + + if (parser->bytes_in_buffer > bytes_parsed) { + memmove (parser->buffer, parser->buffer + bytes_parsed, parser->bytes_in_buffer - bytes_parsed); + parser->bytes_in_buffer -= bytes_parsed; + } else { + parser->bytes_in_buffer = 0; + } + + return TRUE; +} + +static void +resource_parser_done (struct resource_parser *parser) +{ + if (parser->bytes_in_buffer > 0) { + parser->buffer[parser->bytes_in_buffer] = 0; + resource_parse_line (parser->buffer, parser->resources); + } + + free (parser->buffer); +} + +static void +get_resources(xcb_connection_t *connection, xcb_screen_t *screen, cairo_xcb_resources_t *resources) +{ + xcb_get_property_cookie_t cookie; + xcb_get_property_reply_t *reply; + struct resource_parser parser; + int offset; + cairo_bool_t has_more_data; + + resources->xft_antialias = TRUE; + resources->xft_lcdfilter = -1; + resources->xft_hinting = TRUE; + resources->xft_hintstyle = FC_HINT_FULL; + resources->xft_rgba = FC_RGBA_UNKNOWN; + + resource_parser_init (&parser, resources); + + offset = 0; + has_more_data = FALSE; + do { + cookie = xcb_get_property (connection, 0, screen->root, XCB_ATOM_RESOURCE_MANAGER, XCB_ATOM_STRING, offset, 1024); + reply = xcb_get_property_reply (connection, cookie, NULL); + + if (reply) { + if (reply->format == 8 && reply->type == XCB_ATOM_STRING) { + char *value = (char *) xcb_get_property_value (reply); + int length = xcb_get_property_value_length (reply); + + offset += length / 4; /* X needs the offset in 'long' units */ + has_more_data = reply->bytes_after > 0; + + if (! resource_parser_update (&parser, value, length)) + has_more_data = FALSE; /* early exit on error */ + } + + free (reply); + } + } while (has_more_data); + + resource_parser_done (&parser); +} + +void +_cairo_xcb_resources_get (cairo_xcb_screen_t *screen, cairo_xcb_resources_t *resources) +{ + get_resources (screen->connection->xcb_connection, screen->xcb_screen, resources); + + if (resources->xft_rgba == FC_RGBA_UNKNOWN) { + switch (screen->subpixel_order) { + case XCB_RENDER_SUB_PIXEL_UNKNOWN: + resources->xft_rgba = FC_RGBA_UNKNOWN; + break; + case XCB_RENDER_SUB_PIXEL_HORIZONTAL_RGB: + resources->xft_rgba = FC_RGBA_RGB; + break; + case XCB_RENDER_SUB_PIXEL_HORIZONTAL_BGR: + resources->xft_rgba = FC_RGBA_BGR; + break; + case XCB_RENDER_SUB_PIXEL_VERTICAL_RGB: + resources->xft_rgba = FC_RGBA_VRGB; + break; + case XCB_RENDER_SUB_PIXEL_VERTICAL_BGR: + resources->xft_rgba = FC_RGBA_VBGR; + break; + case XCB_RENDER_SUB_PIXEL_NONE: + resources->xft_rgba = FC_RGBA_NONE; + break; + } + } +} diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-screen.c cairo-1.14.2/src/cairo-xcb-screen.c --- cairo-1.13.0~20140204/src/cairo-xcb-screen.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-screen.c 2015-03-10 22:21:07.000000000 +0000 @@ -35,6 +35,96 @@ #include "cairo-xcb-private.h" #include "cairo-list-inline.h" +#include "cairo-fontconfig-private.h" + +static void +_cairo_xcb_init_screen_font_options (cairo_xcb_screen_t *screen) +{ + cairo_xcb_resources_t res; + cairo_antialias_t antialias; + cairo_subpixel_order_t subpixel_order; + cairo_lcd_filter_t lcd_filter; + cairo_hint_style_t hint_style; + + _cairo_xcb_resources_get (screen, &res); + + /* the rest of the code in this function is copied from + _cairo_xlib_init_screen_font_options in cairo-xlib-screen.c */ + + if (res.xft_hinting) { + switch (res.xft_hintstyle) { + case FC_HINT_NONE: + hint_style = CAIRO_HINT_STYLE_NONE; + break; + case FC_HINT_SLIGHT: + hint_style = CAIRO_HINT_STYLE_SLIGHT; + break; + case FC_HINT_MEDIUM: + hint_style = CAIRO_HINT_STYLE_MEDIUM; + break; + case FC_HINT_FULL: + hint_style = CAIRO_HINT_STYLE_FULL; + break; + default: + hint_style = CAIRO_HINT_STYLE_DEFAULT; + } + } else { + hint_style = CAIRO_HINT_STYLE_NONE; + } + + switch (res.xft_rgba) { + case FC_RGBA_RGB: + subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB; + break; + case FC_RGBA_BGR: + subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR; + break; + case FC_RGBA_VRGB: + subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB; + break; + case FC_RGBA_VBGR: + subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR; + break; + case FC_RGBA_UNKNOWN: + case FC_RGBA_NONE: + default: + subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; + } + + switch (res.xft_lcdfilter) { + case FC_LCD_NONE: + lcd_filter = CAIRO_LCD_FILTER_NONE; + break; + case FC_LCD_DEFAULT: + lcd_filter = CAIRO_LCD_FILTER_FIR5; + break; + case FC_LCD_LIGHT: + lcd_filter = CAIRO_LCD_FILTER_FIR3; + break; + case FC_LCD_LEGACY: + lcd_filter = CAIRO_LCD_FILTER_INTRA_PIXEL; + break; + default: + lcd_filter = CAIRO_LCD_FILTER_DEFAULT; + break; + } + + if (res.xft_antialias) { + if (subpixel_order == CAIRO_SUBPIXEL_ORDER_DEFAULT) + antialias = CAIRO_ANTIALIAS_GRAY; + else + antialias = CAIRO_ANTIALIAS_SUBPIXEL; + } else { + antialias = CAIRO_ANTIALIAS_NONE; + } + + cairo_font_options_set_hint_style (&screen->font_options, hint_style); + cairo_font_options_set_antialias (&screen->font_options, antialias); + cairo_font_options_set_subpixel_order (&screen->font_options, subpixel_order); + _cairo_font_options_set_lcd_filter (&screen->font_options, lcd_filter); + cairo_font_options_set_hint_metrics (&screen->font_options, CAIRO_HINT_METRICS_ON); +} + struct pattern_cache_entry { cairo_cache_entry_t key; cairo_xcb_screen_t *screen; @@ -117,6 +207,18 @@ _cairo_freelist_free (&entry->screen->pattern_cache_entry_freelist, entry); } +static int _get_screen_index(cairo_xcb_connection_t *xcb_connection, + xcb_screen_t *xcb_screen) +{ + int idx = 0; + xcb_screen_iterator_t iter = xcb_setup_roots_iterator(xcb_connection->root); + for (; iter.rem; xcb_screen_next(&iter), idx++) + if (iter.data->root == xcb_screen->root) + return idx; + + ASSERT_NOT_REACHED; +} + cairo_xcb_screen_t * _cairo_xcb_screen_get (xcb_connection_t *xcb_connection, xcb_screen_t *xcb_screen) @@ -124,6 +226,7 @@ cairo_xcb_connection_t *connection; cairo_xcb_screen_t *screen; cairo_status_t status; + int screen_idx; int i; connection = _cairo_xcb_connection_get (xcb_connection); @@ -150,8 +253,12 @@ if (unlikely (screen == NULL)) goto unlock; + screen_idx = _get_screen_index(connection, xcb_screen); + screen->connection = connection; screen->xcb_screen = xcb_screen; + screen->has_font_options = FALSE; + screen->subpixel_order = connection->subpixel_orders[screen_idx]; _cairo_freelist_init (&screen->pattern_cache_entry_freelist, sizeof (struct pattern_cache_entry)); @@ -362,3 +469,26 @@ return picture; } + +cairo_font_options_t * +_cairo_xcb_screen_get_font_options (cairo_xcb_screen_t *screen) +{ + if (! screen->has_font_options) { + _cairo_font_options_init_default (&screen->font_options); + _cairo_font_options_set_round_glyph_positions (&screen->font_options, CAIRO_ROUND_GLYPH_POS_ON); + + /* XXX: This is disabled because something seems to be merging + font options incorrectly for xcb. This effectively reverts + the changes brought in git e691d242, and restores ~150 tests + to resume passing. See mailing list archives for Sep 17, + 2014 for more discussion. */ + if (0 && ! _cairo_xcb_connection_acquire (screen->connection)) { + _cairo_xcb_init_screen_font_options (screen); + _cairo_xcb_connection_release (screen->connection); + } + + screen->has_font_options = TRUE; + } + + return &screen->font_options; +} diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-surface.c cairo-1.14.2/src/cairo-xcb-surface.c --- cairo-1.13.0~20140204/src/cairo-xcb-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -530,9 +530,9 @@ _cairo_xcb_surface_get_font_options (void *abstract_surface, cairo_font_options_t *options) { - /* XXX copy from xlib */ - _cairo_font_options_init_default (options); - _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_ON); + cairo_xcb_surface_t *surface = abstract_surface; + + *options = *_cairo_xcb_screen_get_font_options (surface->screen); } static cairo_status_t @@ -1432,7 +1432,7 @@ } - if (abstract_surface->type != CAIRO_SURFACE_TYPE_XCB) { + if ( !_cairo_surface_is_xcb(abstract_surface)) { _cairo_surface_set_error (abstract_surface, _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); return; @@ -1486,7 +1486,7 @@ } - if (abstract_surface->type != CAIRO_SURFACE_TYPE_XCB) { + if ( !_cairo_surface_is_xcb(abstract_surface)) { _cairo_surface_set_error (abstract_surface, _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); return; diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-surface-core.c cairo-1.14.2/src/cairo-xcb-surface-core.c --- cairo-1.13.0~20140204/src/cairo-xcb-surface-core.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-surface-core.c 2015-03-10 22:21:07.000000000 +0000 @@ -406,7 +406,7 @@ if (pixmap != NULL && pixmap->screen == target->screen) return (cairo_xcb_pixmap_t *) cairo_surface_reference (&pixmap->base); - if (source->type == CAIRO_SURFACE_TYPE_XCB && + if (_cairo_surface_is_xcb(source) && ((cairo_xcb_surface_t *) source)->screen == target->screen) { cairo_xcb_surface_t *xcb_source = (cairo_xcb_surface_t *) source; @@ -573,7 +573,7 @@ src->x0 + x1, src->y0 + y1, x1, y1, - x2 - x2, y2 - x2); + x2 - x1, y2 - y1); } } } diff -Nru cairo-1.13.0~20140204/src/cairo-xcb-surface-render.c cairo-1.14.2/src/cairo-xcb-surface-render.c --- cairo-1.13.0~20140204/src/cairo-xcb-surface-render.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xcb-surface-render.c 2015-03-10 22:21:07.000000000 +0000 @@ -37,6 +37,7 @@ #include "cairo-clip-inline.h" #include "cairo-clip-private.h" #include "cairo-composite-rectangles-private.h" +#include "cairo-image-surface-inline.h" #include "cairo-image-surface-private.h" #include "cairo-list-inline.h" #include "cairo-region-private.h" @@ -393,11 +394,6 @@ if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) return TRUE; - if (! _cairo_matrix_is_integer_translation (&pattern->matrix, NULL, NULL)) { - if ((flags & CAIRO_XCB_RENDER_HAS_PICTURE_TRANSFORM) == 0) - return FALSE; - } - switch (pattern->extend) { default: ASSERT_NOT_REACHED; @@ -411,19 +407,22 @@ } if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_filter_t filter; - - filter = pattern->filter; - if (_cairo_matrix_has_unity_scale (&pattern->matrix) && - _cairo_matrix_is_integer_translation (&pattern->matrix, NULL, NULL)) - { - filter = CAIRO_FILTER_NEAREST; - } - - if (! (filter == CAIRO_FILTER_NEAREST || filter == CAIRO_FILTER_FAST)) { - if ((flags & CAIRO_XCB_RENDER_HAS_FILTERS) == 0) - return FALSE; + switch (pattern->filter) { + case CAIRO_FILTER_FAST: + case CAIRO_FILTER_NEAREST: + return (flags & CAIRO_XCB_RENDER_HAS_PICTURE_TRANSFORM) || + _cairo_matrix_is_integer_translation (&pattern->matrix, NULL, NULL); + case CAIRO_FILTER_GOOD: + return flags & CAIRO_XCB_RENDER_HAS_FILTER_GOOD; + case CAIRO_FILTER_BEST: + return flags & CAIRO_XCB_RENDER_HAS_FILTER_BEST; + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + default: + return flags & CAIRO_XCB_RENDER_HAS_FILTERS; } + } else if (pattern->type == CAIRO_PATTERN_TYPE_MESH) { + return FALSE; } else { /* gradient */ if ((flags & CAIRO_XCB_RENDER_HAS_GRADIENTS) == 0) return FALSE; @@ -435,9 +434,8 @@ { return FALSE; } + return TRUE; } - - return pattern->type != CAIRO_PATTERN_TYPE_MESH; } static void @@ -1033,9 +1031,7 @@ filter = pattern->base.filter; if (filter != CAIRO_FILTER_NEAREST && - _cairo_matrix_has_unity_scale (&pattern->base.matrix) && - _cairo_fixed_is_integer (_cairo_fixed_from_double (pattern->base.matrix.x0)) && - _cairo_fixed_is_integer (_cairo_fixed_from_double (pattern->base.matrix.y0))) + _cairo_matrix_is_pixel_exact (&pattern->base.matrix)) { filter = CAIRO_FILTER_NEAREST; } @@ -1154,7 +1150,7 @@ if (source->type == CAIRO_SURFACE_TYPE_XCB) { - if (source->backend->type == CAIRO_SURFACE_TYPE_XCB) { + if (_cairo_surface_is_xcb(source)) { cairo_xcb_surface_t *xcb = (cairo_xcb_surface_t *) source; if (xcb->screen == target->screen && xcb->fallback == NULL) { picture = _copy_to_picture ((cairo_xcb_surface_t *) source); @@ -2789,7 +2785,7 @@ return CAIRO_INT_STATUS_UNSUPPORTED; pattern = (const cairo_surface_pattern_t *) source; - if (pattern->surface->type != CAIRO_SURFACE_TYPE_IMAGE) + if (! _cairo_surface_is_image (pattern->surface)) return CAIRO_INT_STATUS_UNSUPPORTED; /* Have we already upload this image to a pixmap? */ @@ -2904,27 +2900,29 @@ cairo_traps_t *traps, cairo_antialias_t antialias) { - int i; + int i, j; _cairo_boxes_init (boxes); - boxes->num_boxes = traps->num_traps; boxes->chunks.base = (cairo_box_t *) traps->traps; - boxes->chunks.count = traps->num_traps; boxes->chunks.size = traps->num_traps; if (antialias != CAIRO_ANTIALIAS_NONE) { - for (i = 0; i < traps->num_traps; i++) { + for (i = j = 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 (x1 == x2 || y1 == y2) + continue; + + boxes->chunks.base[j].p1.x = x1; + boxes->chunks.base[j].p1.y = y1; + boxes->chunks.base[j].p2.x = x2; + boxes->chunks.base[j].p2.y = y2; + j++; if (boxes->is_pixel_aligned) { boxes->is_pixel_aligned = @@ -2935,7 +2933,7 @@ } else { boxes->is_pixel_aligned = TRUE; - for (i = 0; i < traps->num_traps; i++) { + for (i = j = 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; @@ -2943,12 +2941,18 @@ 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); + boxes->chunks.base[j].p1.x = _cairo_fixed_round_down (x1); + boxes->chunks.base[j].p1.y = _cairo_fixed_round_down (y1); + boxes->chunks.base[j].p2.x = _cairo_fixed_round_down (x2); + boxes->chunks.base[j].p2.y = _cairo_fixed_round_down (y2); + + j += (boxes->chunks.base[j].p1.x != boxes->chunks.base[j].p2.x && + boxes->chunks.base[j].p1.y != boxes->chunks.base[j].p2.y); } } + + boxes->num_boxes = j; + boxes->chunks.count = j; } static cairo_status_t @@ -3121,6 +3125,9 @@ clip = _cairo_clip_copy (extents->clip); clip = _cairo_clip_intersect_boxes (clip, boxes); + if (_cairo_clip_is_all_clipped (clip)) + return CAIRO_INT_STATUS_NOTHING_TO_DO; + status = _cairo_clip_get_polygon (clip, &polygon, &fill_rule, &antialias); _cairo_clip_path_destroy (clip->path); @@ -4460,6 +4467,9 @@ const uint8_t *d; uint8_t *new, *n; + if (c == 0) + break; + new = malloc (c); if (unlikely (new == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -4488,6 +4498,9 @@ const uint32_t *d; uint32_t *new, *n; + if (c == 0) + break; + new = malloc (4 * c); if (unlikely (new == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-core-compositor.c cairo-1.14.2/src/cairo-xlib-core-compositor.c --- cairo-1.13.0~20140204/src/cairo-xlib-core-compositor.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-core-compositor.c 2015-03-10 22:21:07.000000000 +0000 @@ -292,9 +292,7 @@ const cairo_pattern_t *pattern, cairo_boxes_t *boxes) { - double pad; - - if (_cairo_pattern_analyze_filter (pattern, &pad) != CAIRO_FILTER_NEAREST) + if (pattern->filter != CAIRO_FILTER_NEAREST) return fallback_boxes (dst, pattern, boxes); switch (pattern->extend) { diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-display.c cairo-1.14.2/src/cairo-xlib-display.c --- cairo-1.13.0~20140204/src/cairo-xlib-display.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-display.c 2015-03-10 22:21:07.000000000 +0000 @@ -291,7 +291,7 @@ * * 1. The original bug that led to the buggy_repeat * workaround. This was a bug that Owen Taylor investigated, - * understood well, and characterized against carious X + * understood well, and characterized against various X * servers. Confirmed X servers with this bug include: * * "XFree86" <= 40500000 @@ -568,7 +568,7 @@ * * Restricts all future Xlib surfaces for this devices to the specified version * of the RENDER extension. This function exists solely for debugging purpose. - * It let's you find out how cairo would behave with an older version of + * It lets you find out how cairo would behave with an older version of * the RENDER extension. * * Use the special values -1 and -1 for disabling the RENDER extension. diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-private.h cairo-1.14.2/src/cairo-xlib-private.h --- cairo-1.13.0~20140204/src/cairo-xlib-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -37,8 +37,8 @@ #ifndef CAIRO_XLIB_PRIVATE_H #define CAIRO_XLIB_PRIVATE_H -#include "cairo-xlib.h" #include "cairo-xlib-xrender-private.h" +#include "cairo-xlib.h" #include "cairo-compiler-private.h" #include "cairo-device-private.h" @@ -373,6 +373,8 @@ #define CAIRO_RENDER_HAS_PICTURE_TRANSFORM(surface) CAIRO_RENDER_AT_LEAST((surface), 0, 6) #define CAIRO_RENDER_HAS_FILTERS(surface) CAIRO_RENDER_AT_LEAST((surface), 0, 6) +#define CAIRO_RENDER_HAS_FILTER_GOOD(surface) FALSE +#define CAIRO_RENDER_HAS_FILTER_BEST(surface) FALSE #define CAIRO_RENDER_HAS_EXTENDED_REPEAT(surface) CAIRO_RENDER_AT_LEAST((surface), 0, 10) #define CAIRO_RENDER_HAS_GRADIENTS(surface) CAIRO_RENDER_AT_LEAST((surface), 0, 10) diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-render-compositor.c cairo-1.14.2/src/cairo-xlib-render-compositor.c --- cairo-1.13.0~20140204/src/cairo-xlib-render-compositor.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-render-compositor.c 2015-03-10 22:21:07.000000000 +0000 @@ -1287,6 +1287,9 @@ unsigned char *d; unsigned char *new, *n; + if (c == 0) + break; + new = malloc (c); if (!new) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -1312,6 +1315,9 @@ const uint32_t *d; uint32_t *new, *n; + if (c == 0) + break; + new = malloc (4 * c); if (unlikely (new == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-source.c cairo-1.14.2/src/cairo-xlib-source.c --- cairo-1.13.0~20140204/src/cairo-xlib-source.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -869,11 +869,14 @@ cairo_surface_t *surface; surface = ((const cairo_surface_pattern_t *) pattern)->surface; + if (_cairo_surface_is_paginated (surface)) - surface = _cairo_paginated_surface_get_recording (surface); + return cairo_surface_reference (_cairo_paginated_surface_get_recording (surface)); + if (_cairo_surface_is_snapshot (surface)) - surface = _cairo_surface_snapshot_get_target (surface); - return surface; + return _cairo_surface_snapshot_get_target (surface); + + return cairo_surface_reference (surface); } static cairo_surface_t * @@ -885,6 +888,7 @@ int *src_x, int *src_y) { cairo_xlib_surface_t *src; + cairo_surface_t *recording; cairo_matrix_t matrix, m; cairo_status_t status; cairo_rectangle_int_t upload, limit; @@ -911,9 +915,11 @@ } cairo_matrix_init_translate (&matrix, upload.x, upload.y); - status = _cairo_recording_surface_replay_with_clip (recording_pattern_get_surface (&pattern->base), + recording = recording_pattern_get_surface (&pattern->base), + status = _cairo_recording_surface_replay_with_clip (recording, &matrix, &src->base, NULL); + cairo_surface_destroy (recording); if (unlikely (status)) { cairo_surface_destroy (&src->base); return _cairo_surface_create_in_error (status); @@ -1093,17 +1099,22 @@ return FALSE; } - if (! CAIRO_RENDER_HAS_PICTURE_TRANSFORM (display)) { - if (!_cairo_matrix_is_integer_translation (&pattern->matrix, NULL, NULL)) - return FALSE; - } - - if (! CAIRO_RENDER_HAS_FILTERS (display)) { - /* No filters implies no transforms, so we optimise away BILINEAR */ + switch (pattern->filter) { + case CAIRO_FILTER_FAST: + case CAIRO_FILTER_NEAREST: + return CAIRO_RENDER_HAS_PICTURE_TRANSFORM (display) || + _cairo_matrix_is_integer_translation (&pattern->matrix, NULL, NULL); + case CAIRO_FILTER_GOOD: + return CAIRO_RENDER_HAS_FILTER_GOOD (display); + case CAIRO_FILTER_BEST: + return CAIRO_RENDER_HAS_FILTER_BEST (display); + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + default: + return CAIRO_RENDER_HAS_FILTERS (display); } - - return TRUE; } + cairo_surface_t * _cairo_xlib_source_create_for_pattern (cairo_surface_t *_dst, const cairo_pattern_t *pattern, diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-surface-private.h cairo-1.14.2/src/cairo-xlib-surface-private.h --- cairo-1.13.0~20140204/src/cairo-xlib-surface-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-surface-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -33,9 +33,9 @@ #ifndef CAIRO_XLIB_SURFACE_PRIVATE_H #define CAIRO_XLIB_SURFACE_PRIVATE_H +#include "cairo-xlib-xrender-private.h" #include "cairo-xlib.h" #include "cairo-xlib-private.h" -#include "cairo-xlib-xrender-private.h" #include "cairo-surface-private.h" #include "cairo-surface-backend-private.h" diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-surface-shm.c cairo-1.14.2/src/cairo-xlib-surface-shm.c --- cairo-1.13.0~20140204/src/cairo-xlib-surface-shm.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-surface-shm.c 2015-03-10 22:21:07.000000000 +0000 @@ -453,7 +453,7 @@ display->shm->last_event = ev.serial; } -static void sync (cairo_xlib_display_t *display) +static void _cairo_xlib_display_sync (cairo_xlib_display_t *display) { cairo_xlib_shm_info_t *info; struct pqueue *pq = &display->shm->info; @@ -949,7 +949,7 @@ XChangeGC (display->display, gc, GCSubwindowMode, &gcv); } - sync (display); + _cairo_xlib_display_sync (display); shm->active = 0; shm->idle--; diff -Nru cairo-1.13.0~20140204/src/cairo-xlib-xcb-surface.c cairo-1.14.2/src/cairo-xlib-xcb-surface.c --- cairo-1.13.0~20140204/src/cairo-xlib-xcb-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xlib-xcb-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -519,21 +519,6 @@ width, height)); } -cairo_surface_t * -cairo_xlib_surface_create_for_bitmap (Display *dpy, - Pixmap bitmap, - Screen *scr, - int width, - int height) -{ - return _cairo_xlib_xcb_surface_create (dpy, scr, NULL, NULL, - cairo_xcb_surface_create_for_bitmap (XGetXCBConnection (dpy), - (xcb_screen_t *) scr, - bitmap, - width, height)); -} - -#if CAIRO_HAS_XLIB_XRENDER_SURFACE static xcb_screen_t * _cairo_xcb_screen_from_root (xcb_connection_t *connection, xcb_window_t id) @@ -548,6 +533,24 @@ return NULL; } + +cairo_surface_t * +cairo_xlib_surface_create_for_bitmap (Display *dpy, + Pixmap bitmap, + Screen *scr, + int width, + int height) +{ + xcb_connection_t *connection = XGetXCBConnection (dpy); + xcb_screen_t *screen = _cairo_xcb_screen_from_root (connection, (xcb_window_t) scr->root); + return _cairo_xlib_xcb_surface_create (dpy, scr, NULL, NULL, + cairo_xcb_surface_create_for_bitmap (connection, + screen, + bitmap, + width, height)); +} + +#if CAIRO_HAS_XLIB_XRENDER_SURFACE cairo_surface_t * cairo_xlib_surface_create_with_xrender_format (Display *dpy, Drawable drawable, diff -Nru cairo-1.13.0~20140204/src/cairo-xml-surface.c cairo-1.14.2/src/cairo-xml-surface.c --- cairo-1.13.0~20140204/src/cairo-xml-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/cairo-xml-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -460,10 +460,9 @@ static cairo_status_t _cairo_xml_surface_emit_clip_boxes (cairo_xml_surface_t *surface, - cairo_clip_t *clip) + const cairo_clip_t *clip) { cairo_box_t *box; - cairo_status_t status; cairo_xml_t *xml; int n; @@ -521,7 +520,7 @@ static cairo_status_t _cairo_xml_surface_emit_clip_path (cairo_xml_surface_t *surface, - cairo_clip_path_t *clip_path) + const cairo_clip_path_t *clip_path) { cairo_box_t box; cairo_status_t status; diff -Nru cairo-1.13.0~20140204/src/check-preprocessor-syntax.sh cairo-1.14.2/src/check-preprocessor-syntax.sh --- cairo-1.13.0~20140204/src/check-preprocessor-syntax.sh 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/check-preprocessor-syntax.sh 2015-03-10 22:21:07.000000000 +0000 @@ -9,10 +9,10 @@ HEADERS=$all_cairo_headers -test "x$HEADERS" = x && HEADERS=`find . -name 'cairo*.h' ! -name 'cairo*-private.h' ! -name 'cairoint.h'` +test "x$HEADERS" = x && HEADERS=`find . -name 'cairo*.h' ! -name 'cairo*-private.h' ! -name 'cairo*-inline.h' ! -name 'cairoint.h'` PRIVATE=$all_cairo_private -test "x$PRIVATE" = x && PRIVATE=`find . -name 'cairo*-private.h' -or -name 'cairoint.h'` +test "x$PRIVATE" = x && PRIVATE=`find . -name 'cairo*-private.h' -or -name 'cairo*-inline.h' -or -name 'cairoint.h'` SOURCES=$all_cairo_sources test "x$SOURCES" = x && SOURCES=`find . -name 'cairo*.c' -or -name 'cairo*.cpp'` diff -Nru cairo-1.13.0~20140204/src/drm/cairo-drm.c cairo-1.14.2/src/drm/cairo-drm.c --- cairo-1.13.0~20140204/src/drm/cairo-drm.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/drm/cairo-drm.c 2015-03-10 22:21:07.000000000 +0000 @@ -202,8 +202,7 @@ parent = udev_device_get_parent (device); pci_id = get_udev_property (parent, "PCI_ID"); if (pci_id == NULL || sscanf (pci_id, "%x:%x", &vendor_id, &chip_id) != 2) { - dev = (cairo_drm_device_t *) - _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR); + dev = NULL; goto DONE; } @@ -239,6 +238,7 @@ if (fd == -1) { /* XXX more likely to be a permissions issue... */ _cairo_error_throw (CAIRO_STATUS_FILE_NOT_FOUND); + dev = NULL; goto DONE; } @@ -249,7 +249,10 @@ DONE: CAIRO_MUTEX_UNLOCK (_cairo_drm_device_mutex); - return &dev->base; + if (dev == NULL) + return _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR); + else + return &dev->base; } slim_hidden_def (cairo_drm_device_get); diff -Nru cairo-1.13.0~20140204/src/drm/cairo-drm-i915-shader.c cairo-1.14.2/src/drm/cairo-drm-i915-shader.c --- cairo-1.13.0~20140204/src/drm/cairo-drm-i915-shader.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/drm/cairo-drm-i915-shader.c 2015-03-10 22:21:07.000000000 +0000 @@ -1467,42 +1467,6 @@ return CAIRO_STATUS_SUCCESS; } -static cairo_filter_t -sampled_area (const cairo_surface_pattern_t *pattern, - const cairo_rectangle_int_t *extents, - cairo_rectangle_int_t *sample) -{ - cairo_rectangle_int_t surface_extents; - cairo_filter_t filter; - double x1, x2, y1, y2; - double pad; - - x1 = extents->x; - y1 = extents->y; - x2 = extents->x + (int) extents->width; - y2 = extents->y + (int) extents->height; - - if (_cairo_matrix_is_translation (&pattern->base.matrix)) { - x1 += pattern->base.matrix.x0; x2 += pattern->base.matrix.x0; - y1 += pattern->base.matrix.y0; y2 += pattern->base.matrix.y0; - } else { - _cairo_matrix_transform_bounding_box (&pattern->base.matrix, - &x1, &y1, &x2, &y2, - NULL); - } - - filter = _cairo_pattern_analyze_filter (&pattern->base, &pad); - sample->x = floor (x1 - pad); - sample->y = floor (y1 - pad); - sample->width = ceil (x2 + pad) - sample->x; - sample->height = ceil (y2 + pad) - sample->y; - - if (_cairo_surface_get_extents (pattern->surface, &surface_extents)) - _cairo_rectangle_intersect (sample, &surface_extents); - - return filter; -} - static cairo_status_t i915_shader_acquire_surface (i915_shader_t *shader, union i915_shader_channel *src, @@ -1524,7 +1488,8 @@ extend = pattern->base.extend; src->base.matrix = pattern->base.matrix; - filter = sampled_area (pattern, extents, &sample); + filter = pattern->base.filter; + _cairo_pattern_sampled_area(&pattern->base, extents, sample); if (surface->type == CAIRO_SURFACE_TYPE_DRM) { if (surface->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { diff -Nru cairo-1.13.0~20140204/src/Makefile.in cairo-1.14.2/src/Makefile.in --- cairo-1.13.0~20140204/src/Makefile.in 2014-02-04 10:44:34.000000000 +0000 +++ cairo-1.14.2/src/Makefile.in 2015-03-11 01:43:12.000000000 +0000 @@ -424,14 +424,15 @@ cairo-fontconfig-private.h cairo-gstate-private.h \ cairo-hash-private.h cairo-image-info-private.h \ cairo-image-surface-inline.h cairo-image-surface-private.h \ - cairo-list-inline.h cairo-list-private.h \ - cairo-malloc-private.h cairo-mempool-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-pattern-inline.h \ - cairo-pattern-private.h cairo-pixman-private.h cairo-private.h \ + cairo-line-inline.h cairo-line-private.h cairo-list-inline.h \ + cairo-list-private.h cairo-malloc-private.h \ + cairo-mempool-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-pattern-inline.h cairo-pattern-private.h \ + cairo-pixman-private.h cairo-private.h \ cairo-recording-surface-inline.h \ cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ @@ -494,8 +495,8 @@ cairo-font-options.c cairo-freelist.c cairo-freed-pool.c \ cairo-gstate.c cairo-hash.c cairo-hull.c \ cairo-image-compositor.c cairo-image-info.c \ - cairo-image-source.c cairo-image-surface.c cairo-lzw.c \ - cairo-matrix.c cairo-mask-compositor.c \ + cairo-image-source.c cairo-image-surface.c cairo-line.c \ + cairo-lzw.c cairo-matrix.c cairo-mask-compositor.c \ cairo-mesh-pattern-rasterizer.c cairo-mempool.c cairo-misc.c \ cairo-mono-scan-converter.c cairo-mutex.c \ cairo-no-compositor.c cairo-observer.c cairo-output-stream.c \ @@ -533,11 +534,11 @@ cairo-xcb-connection-core.c cairo-xcb-connection-render.c \ cairo-xcb-connection-shm.c cairo-xcb-screen.c cairo-xcb-shm.c \ cairo-xcb-surface.c cairo-xcb-surface-core.c \ - cairo-xcb-surface-render.c cairo-quartz-surface.c \ - cairo-quartz-font.c cairo-quartz-image-surface.c \ - win32/cairo-win32-debug.c win32/cairo-win32-device.c \ - win32/cairo-win32-gdi-compositor.c win32/cairo-win32-system.c \ - win32/cairo-win32-surface.c \ + cairo-xcb-surface-render.c cairo-xcb-resources.c \ + cairo-quartz-surface.c cairo-quartz-font.c \ + cairo-quartz-image-surface.c win32/cairo-win32-debug.c \ + win32/cairo-win32-device.c win32/cairo-win32-gdi-compositor.c \ + win32/cairo-win32-system.c win32/cairo-win32-surface.c \ win32/cairo-win32-display-surface.c \ win32/cairo-win32-printing-surface.c win32/cairo-win32-font.c \ cairo-os2-surface.c drm/cairo-drm.c drm/cairo-drm-bo.c \ @@ -639,8 +640,8 @@ cairo-font-options.lo cairo-freelist.lo cairo-freed-pool.lo \ cairo-gstate.lo cairo-hash.lo cairo-hull.lo \ cairo-image-compositor.lo cairo-image-info.lo \ - cairo-image-source.lo cairo-image-surface.lo cairo-lzw.lo \ - cairo-matrix.lo cairo-mask-compositor.lo \ + cairo-image-source.lo cairo-image-surface.lo cairo-line.lo \ + cairo-lzw.lo cairo-matrix.lo cairo-mask-compositor.lo \ cairo-mesh-pattern-rasterizer.lo cairo-mempool.lo \ cairo-misc.lo cairo-mono-scan-converter.lo cairo-mutex.lo \ cairo-no-compositor.lo cairo-observer.lo \ @@ -677,7 +678,8 @@ am__objects_36 = cairo-xcb-connection.lo cairo-xcb-connection-core.lo \ cairo-xcb-connection-render.lo cairo-xcb-connection-shm.lo \ cairo-xcb-screen.lo cairo-xcb-shm.lo cairo-xcb-surface.lo \ - cairo-xcb-surface-core.lo cairo-xcb-surface-render.lo + cairo-xcb-surface-core.lo cairo-xcb-surface-render.lo \ + cairo-xcb-resources.lo @CAIRO_HAS_XCB_SURFACE_TRUE@am__objects_37 = $(am__objects_36) am__objects_38 = cairo-quartz-surface.lo @CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__objects_39 = $(am__objects_38) @@ -797,14 +799,15 @@ cairo-fontconfig-private.h cairo-gstate-private.h \ cairo-hash-private.h cairo-image-info-private.h \ cairo-image-surface-inline.h cairo-image-surface-private.h \ - cairo-list-inline.h cairo-list-private.h \ - cairo-malloc-private.h cairo-mempool-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-pattern-inline.h \ - cairo-pattern-private.h cairo-pixman-private.h cairo-private.h \ + cairo-line-inline.h cairo-line-private.h cairo-list-inline.h \ + cairo-list-private.h cairo-malloc-private.h \ + cairo-mempool-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-pattern-inline.h cairo-pattern-private.h \ + cairo-pixman-private.h cairo-private.h \ cairo-recording-surface-inline.h \ cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ @@ -1209,6 +1212,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -1393,14 +1397,15 @@ cairo-fontconfig-private.h cairo-gstate-private.h \ cairo-hash-private.h cairo-image-info-private.h \ cairo-image-surface-inline.h cairo-image-surface-private.h \ - cairo-list-inline.h cairo-list-private.h \ - cairo-malloc-private.h cairo-mempool-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-pattern-inline.h \ - cairo-pattern-private.h cairo-pixman-private.h cairo-private.h \ + cairo-line-inline.h cairo-line-private.h cairo-list-inline.h \ + cairo-list-private.h cairo-malloc-private.h \ + cairo-mempool-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-pattern-inline.h cairo-pattern-private.h \ + cairo-pixman-private.h cairo-private.h \ cairo-recording-surface-inline.h \ cairo-recording-surface-private.h \ cairo-reference-count-private.h cairo-region-private.h \ @@ -1439,8 +1444,8 @@ cairo-font-options.c cairo-freelist.c cairo-freed-pool.c \ cairo-gstate.c cairo-hash.c cairo-hull.c \ cairo-image-compositor.c cairo-image-info.c \ - cairo-image-source.c cairo-image-surface.c cairo-lzw.c \ - cairo-matrix.c cairo-mask-compositor.c \ + cairo-image-source.c cairo-image-surface.c cairo-line.c \ + cairo-lzw.c cairo-matrix.c cairo-mask-compositor.c \ cairo-mesh-pattern-rasterizer.c cairo-mempool.c cairo-misc.c \ cairo-mono-scan-converter.c cairo-mutex.c \ cairo-no-compositor.c cairo-observer.c cairo-output-stream.c \ @@ -1552,6 +1557,7 @@ cairo-xcb-surface.c \ cairo-xcb-surface-core.c \ cairo-xcb-surface-render.c \ + cairo-xcb-resources.c \ $(NULL) cairo_qt_headers = cairo-qt.h @@ -2194,6 +2200,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-image-info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-image-source.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-image-surface.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-line.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-lzw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-mask-compositor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-matrix.Plo@am__quote@ @@ -2289,6 +2296,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-connection-render.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-connection-shm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-connection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-resources.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-screen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-shm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-xcb-surface-core.Plo@am__quote@ diff -Nru cairo-1.13.0~20140204/src/Makefile.sources cairo-1.14.2/src/Makefile.sources --- cairo-1.13.0~20140204/src/Makefile.sources 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/Makefile.sources 2015-03-10 22:21:07.000000000 +0000 @@ -84,6 +84,8 @@ cairo-image-info-private.h \ cairo-image-surface-inline.h \ cairo-image-surface-private.h \ + cairo-line-inline.h \ + cairo-line-private.h \ cairo-list-inline.h \ cairo-list-private.h \ cairo-malloc-private.h \ @@ -176,6 +178,7 @@ cairo-image-info.c \ cairo-image-source.c \ cairo-image-surface.c \ + cairo-line.c \ cairo-lzw.c \ cairo-matrix.c \ cairo-mask-compositor.c \ @@ -334,6 +337,7 @@ cairo-xcb-surface.c \ cairo-xcb-surface-core.c \ cairo-xcb-surface-render.c \ + cairo-xcb-resources.c \ $(NULL) cairo_qt_headers = cairo-qt.h diff -Nru cairo-1.13.0~20140204/src/skia/cairo-skia-context.cpp cairo-1.14.2/src/skia/cairo-skia-context.cpp --- cairo-1.13.0~20140204/src/skia/cairo-skia-context.cpp 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/skia/cairo-skia-context.cpp 2015-03-10 22:21:07.000000000 +0000 @@ -53,6 +53,7 @@ #include "cairo-skia-private.h" #include "cairo-surface-backend-private.h" +#include #include #include #include @@ -236,16 +237,19 @@ { cairo_image_surface_t *img = (cairo_image_surface_t *) surface; SkBitmap::Config config; + SkColorType colorType; bool opaque; if (unlikely (! format_to_sk_config (img->format, config, opaque))) return false; bitmap.reset (); - bitmap.setConfig (config, img->width, img->height, img->stride); - bitmap.setIsOpaque (opaque); + bitmap.setAlphaType (opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); + colorType = SkBitmapConfigToColorType(config); + bitmap.setInfo (SkImageInfo::Make(img->width, img->height, colorType, kPremul_SkAlphaType), img->stride); bitmap.setPixels (img->data); + return true; } @@ -330,9 +334,18 @@ if (surface->type == CAIRO_SURFACE_TYPE_SKIA) { cairo_skia_surface_t *esurf = (cairo_skia_surface_t *) surface; - shader = SkShader::CreateBitmapShader (*esurf->bitmap, - extend_to_sk (pattern->extend), - extend_to_sk (pattern->extend)); + if (! _cairo_matrix_is_identity (&pattern->matrix)) + { + SkMatrix localMatrix = matrix_inverse_to_sk (pattern->matrix); + shader = SkShader::CreateBitmapShader (*esurf->bitmap, + extend_to_sk (pattern->extend), + extend_to_sk (pattern->extend), + &localMatrix); + } else { + shader = SkShader::CreateBitmapShader (*esurf->bitmap, + extend_to_sk (pattern->extend), + extend_to_sk (pattern->extend)); + } } else { SkBitmap bitmap; @@ -351,9 +364,18 @@ if (unlikely (! surface_to_sk_bitmap (surface, bitmap))) return NULL; - shader = SkShader::CreateBitmapShader (bitmap, - extend_to_sk (pattern->extend), - extend_to_sk (pattern->extend)); + if (! _cairo_matrix_is_identity (&pattern->matrix)) + { + SkMatrix localMatrix = matrix_inverse_to_sk (pattern->matrix); + shader = SkShader::CreateBitmapShader (bitmap, + extend_to_sk (pattern->extend), + extend_to_sk (pattern->extend), + &localMatrix); + } else { + shader = SkShader::CreateBitmapShader (bitmap, + extend_to_sk (pattern->extend), + extend_to_sk (pattern->extend)); + } } } else if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR /* || pattern->type == CAIRO_PATTERN_TYPE_RADIAL */) @@ -382,8 +404,17 @@ 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)); + + if(! _cairo_matrix_is_identity (&pattern->matrix)) + { + SkMatrix localMatrix = matrix_inverse_to_sk (pattern->matrix); + shader = SkGradientShader::CreateLinear (points, colors, pos, gradient->n_stops, + extend_to_sk (pattern->extend), + 0, &localMatrix); + } else { + shader = SkGradientShader::CreateLinear (points, colors, pos, gradient->n_stops, + extend_to_sk (pattern->extend)); + } } else { // XXX todo -- implement real radial shaders in Skia } @@ -394,9 +425,6 @@ } } - if (shader && ! _cairo_matrix_is_identity (&pattern->matrix)) - shader->setLocalMatrix (matrix_inverse_to_sk (pattern->matrix)); - return shader; } @@ -446,6 +474,7 @@ cr->paint->setColor (color); } else { SkShader *shader = source_to_sk_shader (cr, source); + bool fLevel = pattern_filter_to_sk (source); if (shader == NULL) { UNSUPPORTED; return CAIRO_STATUS_SUCCESS; @@ -454,7 +483,8 @@ cr->paint->setShader (shader); shader->unref (); - cr->paint->setFilterBitmap (pattern_filter_to_sk (source)); + cr->paint->setFilterLevel (fLevel ? + (SkPaint::kLow_FilterLevel) : (SkPaint::kNone_FilterLevel)); } /* XXX change notification */ @@ -496,7 +526,8 @@ cr->paint->setShader (shader); shader->unref (); - cr->paint->setFilterBitmap (true); + cr->paint->setFilterLevel (true ? + (SkPaint::kLow_FilterLevel) : (SkPaint::kNone_FilterLevel)); return CAIRO_STATUS_SUCCESS; } @@ -682,7 +713,7 @@ intervals[i++] = SkFloatToScalar (dashes[j]); } while (loop--); - SkDashPathEffect *dash = new SkDashPathEffect (intervals, num_dashes, SkFloatToScalar (offset)); + SkDashPathEffect *dash = SkDashPathEffect::Create (intervals, num_dashes, SkFloatToScalar (offset)); cr->paint->setPathEffect (dash); dash->unref (); @@ -1264,7 +1295,7 @@ if (CAIRO_ALPHA_IS_OPAQUE (alpha)) return _cairo_skia_context_paint (cr); - cr->paint->setAlpha(SkScalarRound(255*alpha)); + cr->paint->setAlpha(SkScalarRoundToInt(255*alpha)); status = _cairo_skia_context_paint (cr); cr->paint->setAlpha(255); diff -Nru cairo-1.13.0~20140204/src/skia/cairo-skia-private.h cairo-1.14.2/src/skia/cairo-skia-private.h --- cairo-1.13.0~20140204/src/skia/cairo-skia-private.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/skia/cairo-skia-private.h 2015-03-10 22:21:07.000000000 +0000 @@ -44,7 +44,26 @@ #include #include +/** + * cairo_skia_context_t: + * + * A #cairo_skia_context_t includes handles to Skia's canvas, + * paint, and path objects along with the Cairo source surfaces + * and matrix, and the original and target #cairo_skia_surface_t + * objects. + * + * Since: 1.10 + **/ typedef struct _cairo_skia_context cairo_skia_context_t; + +/** + * cairo_skia_surface_t: + * + * A #cairo_skia_surface_t is a container for the underlying + * #SkBitmap and the corresponding Cairo image surface. + * + * Since: 1.10 + **/ typedef struct _cairo_skia_surface cairo_skia_surface_t; struct _cairo_skia_context { @@ -92,11 +111,9 @@ case CAIRO_FORMAT_A8: config = SkBitmap::kA8_Config; break; - case CAIRO_FORMAT_A1: - config = SkBitmap::kA1_Config; - break; case CAIRO_FORMAT_RGB30: case CAIRO_FORMAT_INVALID: + case CAIRO_FORMAT_A1: default: return false; } diff -Nru cairo-1.13.0~20140204/src/skia/cairo-skia-surface.cpp cairo-1.14.2/src/skia/cairo-skia-surface.cpp --- cairo-1.13.0~20140204/src/skia/cairo-skia-surface.cpp 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/skia/cairo-skia-surface.cpp 2015-03-10 22:21:07.000000000 +0000 @@ -64,7 +64,7 @@ if (content == surface->image.base.content) { - config = surface->bitmap->getConfig (); + config = surface->bitmap->config (); opaque = surface->bitmap->isOpaque (); } else if (! format_to_sk_config (_cairo_format_from_content (content), @@ -207,9 +207,6 @@ case SkBitmap::kA8_Config: return PIXMAN_a8; - - case SkBitmap::kA1_Config: - return PIXMAN_a1; case SkBitmap::kRGB_565_Config: return PIXMAN_r5g6b5; case SkBitmap::kARGB_4444_Config: @@ -217,8 +214,6 @@ case SkBitmap::kNo_Config: case SkBitmap::kIndex8_Config: - case SkBitmap::kRLE_Index8_Config: - case SkBitmap::kConfigCount: default: ASSERT_NOT_REACHED; return (pixman_format_code_t) -1; @@ -236,6 +231,7 @@ cairo_skia_surface_t *surface; pixman_image_t *pixman_image; pixman_format_code_t pixman_format; + SkColorType colorType; surface = (cairo_skia_surface_t *) malloc (sizeof (cairo_skia_surface_t)); if (unlikely (surface == NULL)) @@ -245,8 +241,10 @@ pixman_image = pixman_image_create_bits (pixman_format, width, height, (uint32_t *) data, stride); - if (unlikely (pixman_image == NULL)) + if (unlikely (pixman_image == NULL)) { + free (surface); return (cairo_skia_surface_t *) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); + } _cairo_surface_init (&surface->image.base, &cairo_skia_surface_backend, @@ -256,8 +254,9 @@ _cairo_image_surface_init (&surface->image, pixman_image, pixman_format); surface->bitmap = new SkBitmap; - surface->bitmap->setConfig (config, width, height, surface->image.stride); - surface->bitmap->setIsOpaque (opaque); + colorType = SkBitmapConfigToColorType(config); + surface->bitmap->setAlphaType (opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType); + surface->bitmap->setInfo (SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType), surface->image.stride); surface->bitmap->setPixels (surface->image.data); surface->image.base.is_clear = data == NULL; diff -Nru cairo-1.13.0~20140204/src/win32/cairo-win32-display-surface.c cairo-1.14.2/src/win32/cairo-win32-display-surface.c --- cairo-1.13.0~20140204/src/win32/cairo-win32-display-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/win32/cairo-win32-display-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -455,17 +455,17 @@ surface->fallback = _cairo_win32_display_surface_create_for_dc (surface->win32.dc, surface->win32.format, - surface->win32.extents.width, - surface->win32.extents.height); + surface->win32.extents.x + surface->win32.extents.width, + surface->win32.extents.y + surface->win32.extents.height); if (unlikely (status = surface->fallback->status)) goto err; if (!BitBlt (to_win32_surface(surface->fallback)->dc, - 0, 0, + surface->win32.extents.x, surface->win32.extents.y, surface->win32.extents.width, surface->win32.extents.height, surface->win32.dc, - 0, 0, + surface->win32.extents.x, surface->win32.extents.y, SRCCOPY)) { status = _cairo_error (CAIRO_STATUS_DEVICE_ERROR); goto err; diff -Nru cairo-1.13.0~20140204/src/win32/cairo-win32-printing-surface.c cairo-1.14.2/src/win32/cairo-win32-printing-surface.c --- cairo-1.13.0~20140204/src/win32/cairo-win32-printing-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/win32/cairo-win32-printing-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -726,6 +726,7 @@ /* _cairo_pattern_set_matrix guarantees invertibility */ assert (status == CAIRO_STATUS_SUCCESS); + cairo_matrix_multiply (&m, &m, &surface->ctm); cairo_matrix_multiply (&m, &m, &surface->gdi_ctm); SaveDC (surface->win32.dc); _cairo_matrix_to_win32_xform (&m, &xform); @@ -1578,14 +1579,18 @@ * CAIRO_INT_STATUS_UNSUPPORTED and a fallback image will be * used. */ + _cairo_scaled_font_freeze_cache (scaled_font); for (i = 0; i < num_glyphs; i++) { status = _cairo_scaled_glyph_lookup (scaled_font, glyphs[i].index, CAIRO_SCALED_GLYPH_INFO_PATH, &scaled_glyph); if (status) - return status; + break; } + _cairo_scaled_font_thaw_cache (scaled_font); + if (status) + return status; return _cairo_win32_printing_surface_analyze_operation (surface, op, source); } @@ -1623,6 +1628,7 @@ old_has_ctm = surface->has_ctm; surface->has_ctm = TRUE; surface->path_empty = TRUE; + _cairo_scaled_font_freeze_cache (scaled_font); BeginPath (surface->win32.dc); for (i = 0; i < num_glyphs; i++) { status = _cairo_scaled_glyph_lookup (scaled_font, @@ -1636,6 +1642,7 @@ status = _cairo_win32_printing_surface_emit_path (surface, scaled_glyph->path); } EndPath (surface->win32.dc); + _cairo_scaled_font_thaw_cache (scaled_font); surface->ctm = old_ctm; surface->has_ctm = old_has_ctm; if (status == CAIRO_STATUS_SUCCESS && surface->path_empty == FALSE) { diff -Nru cairo-1.13.0~20140204/src/win32/cairo-win32-surface.c cairo-1.14.2/src/win32/cairo-win32-surface.c --- cairo-1.13.0~20140204/src/win32/cairo-win32-surface.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/src/win32/cairo-win32-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -172,6 +172,21 @@ } /** + * _cairo_surface_is_win32: + * @surface: a #cairo_surface_t + * + * Checks if a surface is an #cairo_win32_surface_t + * + * Return value: %TRUE if the surface is an win32 surface + **/ +static inline cairo_bool_t +_cairo_surface_is_win32 (const cairo_surface_t *surface) +{ + /* _cairo_surface_nil sets a NULL backend so be safe */ + return surface->backend && surface->backend->type == CAIRO_SURFACE_TYPE_WIN32; +} + +/** * cairo_win32_surface_get_image: * @surface: a #cairo_surface_t * @@ -187,8 +202,10 @@ cairo_surface_t * cairo_win32_surface_get_image (cairo_surface_t *surface) { - if (surface->backend->type != CAIRO_SURFACE_TYPE_WIN32) - return NULL; + + if (! _cairo_surface_is_win32 (surface)) { + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); + } GdiFlush(); return to_win32_display_surface(surface)->image; diff -Nru cairo-1.13.0~20140204/test/any2ppm.c cairo-1.14.2/test/any2ppm.c --- cairo-1.13.0~20140204/test/any2ppm.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/any2ppm.c 2015-03-10 22:21:07.000000000 +0000 @@ -70,8 +70,10 @@ #if CAIRO_CAN_TEST_SVG_SURFACE #include +#ifndef RSVG_CAIRO_H #include #endif +#endif #if CAIRO_HAS_SPECTRE #include @@ -79,8 +81,11 @@ #include -#if HAVE_UNISTD_H && HAVE_FCNTL_H && HAVE_SIGNAL_H && HAVE_SYS_STAT_H && HAVE_SYS_SOCKET_H && HAVE_SYS_POLL_H && HAVE_SYS_UN_H +#if HAVE_FCNTL_H #include +#endif + +#if HAVE_UNISTD_H && HAVE_SIGNAL_H && HAVE_SYS_STAT_H && HAVE_SYS_SOCKET_H && HAVE_SYS_POLL_H && HAVE_SYS_UN_H #include #include #include @@ -90,10 +95,12 @@ #define SOCKET_PATH "./.any2ppm" #define TIMEOUT 60000 /* 60 seconds */ +#if HAVE_FORK #define CAN_RUN_AS_DAEMON 1 #endif +#endif -#define ARRAY_LENGTH(A) (sizeof (A) / sizeof (A[0])) +#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) static int _cairo_writen (int fd, char *buf, int len) @@ -861,13 +868,19 @@ const char *err; #if CAIRO_CAN_TEST_PDF_SURFACE || CAIRO_CAN_TEST_SVG_SURFACE +#if GLIB_MAJOR_VERSION <= 2 && GLIB_MINOR_VERSION <= 34 g_type_init (); #endif +#endif #if CAIRO_CAN_TEST_SVG_SURFACE rsvg_set_default_dpi (72.0); #endif +#if defined(_WIN32) && !defined (__CYGWIN__) + _setmode (1, _O_BINARY); +#endif + if (argc == 1) err = any2ppm_daemon (); else diff -Nru cairo-1.13.0~20140204/test/api-special-cases.c cairo-1.14.2/test/api-special-cases.c --- cairo-1.13.0~20140204/test/api-special-cases.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/api-special-cases.c 2015-03-10 22:21:07.000000000 +0000 @@ -181,7 +181,9 @@ static cairo_test_status_t test_cairo_set_source (cairo_t *cr) { - cairo_set_source (cr, cairo_pattern_create_rgb (0, 0, 0)); + cairo_pattern_t *source = cairo_pattern_create_rgb (0, 0, 0); + cairo_set_source (cr, source); + cairo_pattern_destroy (source); return CAIRO_TEST_SUCCESS; } diff -Nru cairo-1.13.0~20140204/test/bug-84115.c cairo-1.14.2/test/bug-84115.c --- cairo-1.13.0~20140204/test/bug-84115.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/test/bug-84115.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * Copyright © 2011 Krzysztof Kosiński + * + * 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: Krzysztof Kosiński + */ + +#include "cairo-test.h" + +#define WIDTH 800 +#define HEIGHT 800 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + double lw = 800; + int n = 0; + + cairo_set_source_rgb (cr, 1,1,1); + cairo_paint (cr); + + cairo_set_source_rgba (cr, 0, 0, 0, .4); + cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT); + do { + cairo_set_line_width(cr, lw); + cairo_arc(cr, WIDTH/2, HEIGHT/2, lw/2, + 2*M_PI*(13*n + 1) / 130, 2*M_PI*(13*n + 12) / 130); + cairo_stroke(cr); + + n++; + lw /= 1.1; + } while (lw > 0.5); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (bug_84115, + "Exercises a bug found in stroke generation using trapezoids", + "stroke", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff -Nru cairo-1.13.0~20140204/test/bug-spline.c cairo-1.14.2/test/bug-spline.c --- cairo-1.13.0~20140204/test/bug-spline.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/bug-spline.c 2015-03-10 22:21:07.000000000 +0000 @@ -56,7 +56,6 @@ { 1, 0, 0, 1 }, } }; -#define NUM_SPLINES (sizeof(splines)/sizeof(splines[0])) static cairo_test_status_t draw (cairo_t *cr, int width, int height) @@ -68,7 +67,7 @@ cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE); - for (n = 0; n < NUM_SPLINES; n++) { + for (n = 0; n < ARRAY_LENGTH(splines); n++) { cairo_set_line_width (cr, splines[n].line_width); cairo_set_source_rgba (cr, splines[n].rgba[0], diff -Nru cairo-1.13.0~20140204/test/cairo-test.c cairo-1.14.2/test/cairo-test.c --- cairo-1.13.0~20140204/test/cairo-test.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/cairo-test.c 2015-03-10 22:21:07.000000000 +0000 @@ -83,10 +83,6 @@ #define TRUE !FALSE #endif -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(A) (sizeof(A) / sizeof (A[0])) -#endif - #if ! HAVE_ALARM || ! defined(SIGALRM) #define alarm(X); #endif @@ -1088,13 +1084,13 @@ if (cairo_test_file_is_older (pass_filename, filenames, - ARRAY_SIZE (filenames))) + ARRAY_LENGTH (filenames))) { _xunlink (ctx, pass_filename); } if (cairo_test_file_is_older (fail_filename, filenames, - ARRAY_SIZE (filenames))) + ARRAY_LENGTH (filenames))) { _xunlink (ctx, fail_filename); } @@ -1180,13 +1176,13 @@ if (cairo_test_file_is_older (pass_filename, filenames, - ARRAY_SIZE (filenames))) + ARRAY_LENGTH (filenames))) { _xunlink (ctx, pass_filename); } if (cairo_test_file_is_older (fail_filename, filenames, - ARRAY_SIZE (filenames))) + ARRAY_LENGTH (filenames))) { _xunlink (ctx, fail_filename); } diff -Nru cairo-1.13.0~20140204/test/cairo-test-constructors.c cairo-1.14.2/test/cairo-test-constructors.c --- cairo-1.13.0~20140204/test/cairo-test-constructors.c 2014-02-04 10:44:44.000000000 +0000 +++ cairo-1.14.2/test/cairo-test-constructors.c 2015-03-11 01:43:32.000000000 +0000 @@ -35,6 +35,7 @@ extern void _register_bilevel_image (void); extern void _register_bug_40410 (void); extern void _register_bug_51910 (void); +extern void _register_bug_84115 (void); extern void _register_bug_bo_rectangular (void); extern void _register_bug_bo_collins (void); extern void _register_bug_bo_ricotz (void); @@ -106,11 +107,13 @@ extern void _register_copy_disjoint (void); extern void _register_copy_path (void); extern void _register_coverage_rectangles (void); +extern void _register_coverage_rhombus (void); extern void _register_coverage_intersecting_quads (void); extern void _register_coverage_intersecting_triangles (void); extern void _register_coverage_row_triangles (void); extern void _register_coverage_column_triangles (void); extern void _register_coverage_triangles (void); +extern void _register_coverage_abutting (void); extern void _register_create_for_stream (void); extern void _register_create_from_png (void); extern void _register_create_from_png_stream (void); @@ -383,6 +386,15 @@ extern void _register_record90_select_font_face (void); extern void _register_record90_self_intersecting (void); extern void _register_record90_text_transform (void); +extern void _register_recordflip_whole_paint (void); +extern void _register_recordflip_whole_paint_alpha (void); +extern void _register_recordflip_whole_paint_alpha_solid_clip (void); +extern void _register_recordflip_whole_paint_alpha_clip (void); +extern void _register_recordflip_whole_paint_alpha_clip_mask (void); +extern void _register_recordflip_whole_fill_alpha (void); +extern void _register_recordflip_whole_select_font_face (void); +extern void _register_recordflip_whole_self_intersecting (void); +extern void _register_recordflip_whole_text_transform (void); extern void _register_recordflip_paint (void); extern void _register_recordflip_paint_alpha (void); extern void _register_recordflip_paint_alpha_solid_clip (void); @@ -449,6 +461,7 @@ extern void _register_show_text_current_point (void); extern void _register_shape_general_convex (void); extern void _register_shape_sierpinski (void); +extern void _register_simple_edge (void); extern void _register_skew_extreme (void); extern void _register_smask (void); extern void _register_smask_fill (void); @@ -590,6 +603,7 @@ _register_bilevel_image (); _register_bug_40410 (); _register_bug_51910 (); + _register_bug_84115 (); _register_bug_bo_rectangular (); _register_bug_bo_collins (); _register_bug_bo_ricotz (); @@ -661,11 +675,13 @@ _register_copy_disjoint (); _register_copy_path (); _register_coverage_rectangles (); + _register_coverage_rhombus (); _register_coverage_intersecting_quads (); _register_coverage_intersecting_triangles (); _register_coverage_row_triangles (); _register_coverage_column_triangles (); _register_coverage_triangles (); + _register_coverage_abutting (); _register_create_for_stream (); _register_create_from_png (); _register_create_from_png_stream (); @@ -938,6 +954,15 @@ _register_record90_select_font_face (); _register_record90_self_intersecting (); _register_record90_text_transform (); + _register_recordflip_whole_paint (); + _register_recordflip_whole_paint_alpha (); + _register_recordflip_whole_paint_alpha_solid_clip (); + _register_recordflip_whole_paint_alpha_clip (); + _register_recordflip_whole_paint_alpha_clip_mask (); + _register_recordflip_whole_fill_alpha (); + _register_recordflip_whole_select_font_face (); + _register_recordflip_whole_self_intersecting (); + _register_recordflip_whole_text_transform (); _register_recordflip_paint (); _register_recordflip_paint_alpha (); _register_recordflip_paint_alpha_solid_clip (); @@ -1004,6 +1029,7 @@ _register_show_text_current_point (); _register_shape_general_convex (); _register_shape_sierpinski (); + _register_simple_edge (); _register_skew_extreme (); _register_smask (); _register_smask_fill (); diff -Nru cairo-1.13.0~20140204/test/cairo-test.h cairo-1.14.2/test/cairo-test.h --- cairo-1.13.0~20140204/test/cairo-test.h 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/cairo-test.h 2015-03-10 22:21:07.000000000 +0000 @@ -107,10 +107,6 @@ #define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif -#ifndef ARRAY_LENGTH -#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) -#endif - #define CAIRO_TEST_OUTPUT_DIR "output" #define CAIRO_TEST_LOG_SUFFIX ".log" diff -Nru cairo-1.13.0~20140204/test/cairo-test-runner.c cairo-1.14.2/test/cairo-test-runner.c --- cairo-1.13.0~20140204/test/cairo-test-runner.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/cairo-test-runner.c 2015-03-10 22:21:07.000000000 +0000 @@ -1096,6 +1096,7 @@ _runner_print_results (&runner); + _list_free (tests); free (target_status); return _runner_fini (&runner); } diff -Nru cairo-1.13.0~20140204/test/cairo-test-trace.c cairo-1.14.2/test/cairo-test-trace.c --- cairo-1.13.0~20140204/test/cairo-test-trace.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/cairo-test-trace.c 2015-03-10 22:21:07.000000000 +0000 @@ -91,6 +91,10 @@ #include #endif +#ifndef MAP_NORESERVE +#define MAP_NORESERVE 0 +#endif + #define DEBUG 0 #define ignore_image_differences 0 /* XXX make me a cmdline option! */ diff -Nru cairo-1.13.0~20140204/test/caps-tails-curve.c cairo-1.14.2/test/caps-tails-curve.c --- cairo-1.13.0~20140204/test/caps-tails-curve.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/caps-tails-curve.c 2015-03-10 22:21:07.000000000 +0000 @@ -100,7 +100,7 @@ cairo_set_line_width (cr, LINE_WIDTH); - for (t = 0; t < sizeof(theta)/sizeof (theta[0]); t++) { + for (t = 0; t < ARRAY_LENGTH(theta); t++) { cairo_save (cr); cairo_translate (cr, 0, t * (SIZE + PAD) + PAD); draw_caps_joins (cr, theta[t]); diff -Nru cairo-1.13.0~20140204/test/check-refs.sh cairo-1.14.2/test/check-refs.sh --- cairo-1.13.0~20140204/test/check-refs.sh 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/check-refs.sh 2015-03-10 22:21:07.000000000 +0000 @@ -5,7 +5,7 @@ pdiff=$1 [ -n "$pdiff" ] || pdiff=../pdiff/perceptualdiff if [ ! -e "${pdiff}" ]; then - echo "Error: requires ${pdiff} executable" + echo "Error: requires pdiff executable" exit 128 fi diff -Nru cairo-1.13.0~20140204/test/clip-nesting.c cairo-1.14.2/test/clip-nesting.c --- cairo-1.13.0~20140204/test/clip-nesting.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/clip-nesting.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Owen Taylor */ -#include #include "cairo-test.h" +#include #include #define SIZE 100 diff -Nru cairo-1.13.0~20140204/test/clip-operator.c cairo-1.14.2/test/clip-operator.c --- cairo-1.13.0~20140204/test/clip-operator.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/clip-operator.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Kristian Høgsberg */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/close-path.c cairo-1.14.2/test/close-path.c --- cairo-1.13.0~20140204/test/close-path.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/close-path.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Carl D. Worth */ -#include #include "cairo-test.h" +#include static cairo_test_draw_function_t draw; diff -Nru cairo-1.13.0~20140204/test/composite-integer-translate-over.c cairo-1.14.2/test/composite-integer-translate-over.c --- cairo-1.13.0~20140204/test/composite-integer-translate-over.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/composite-integer-translate-over.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2006 Mozilla Corporation + * Copyright © 2006 Mozilla Corporation * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without @@ -22,8 +22,8 @@ * * Author: Vladimir Vukicevic */ -#include #include "cairo-test.h" +#include #include #define SIZE 100 diff -Nru cairo-1.13.0~20140204/test/composite-integer-translate-over-repeat.c cairo-1.14.2/test/composite-integer-translate-over-repeat.c --- cairo-1.13.0~20140204/test/composite-integer-translate-over-repeat.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/composite-integer-translate-over-repeat.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Vladimir Vukicevic */ -#include #include "cairo-test.h" +#include #include #define SIZE 100 diff -Nru cairo-1.13.0~20140204/test/composite-integer-translate-source.c cairo-1.14.2/test/composite-integer-translate-source.c --- cairo-1.13.0~20140204/test/composite-integer-translate-source.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/composite-integer-translate-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Vladimir Vukicevic */ -#include #include "cairo-test.h" +#include #include #define SIZE 100 diff -Nru cairo-1.13.0~20140204/test/copy-path.c cairo-1.14.2/test/copy-path.c --- cairo-1.13.0~20140204/test/copy-path.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/copy-path.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Carl D. Worth */ -#include #include "cairo-test.h" +#include static void scale_by_two (double *x, double *y) diff -Nru cairo-1.13.0~20140204/test/coverage.c cairo-1.14.2/test/coverage.c --- cairo-1.13.0~20140204/test/coverage.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/coverage.c 2015-03-10 22:21:07.000000000 +0000 @@ -99,6 +99,54 @@ } static cairo_test_status_t +rhombus (cairo_t *cr, int width, int height) +{ + int x, y; + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + cairo_paint (cr); + +#if GENERATE_REFERENCE + for (y = 0; y < WIDTH; y++) { + for (x = 0; x < WIDTH; x++) { + cairo_set_source_rgba (cr, 1, 1, 1, + x * y / (2. * WIDTH * WIDTH)); + cairo_rectangle (cr, 2*x, 2*y, 2, 2); + cairo_fill (cr); + } + } +#else + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); + cairo_set_source_rgb (cr, 1, 1, 1); + + for (y = 0; y < WIDTH; y++) { + double yf = y / (double) WIDTH; + for (x = 0; x < WIDTH; x++) { + double xf = x / (double) WIDTH; + + cairo_move_to (cr, + 2*x + 1 - xf, + 2*y + 1); + cairo_line_to (cr, + 2*x + 1, + 2*y + 1 - yf); + cairo_line_to (cr, + 2*x + 1 + xf, + 2*y + 1); + cairo_line_to (cr, + 2*x + 1, + 2*y + 1 + yf); + cairo_close_path (cr); + } + } + + cairo_fill (cr); +#endif + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t intersecting_quads (cairo_t *cr, int width, int height) { int x, y, channel; @@ -239,6 +287,53 @@ } static cairo_test_status_t +abutting (cairo_t *cr, int width, int height) +{ + int x, y; + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + cairo_paint (cr); + + cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.75); + +#if GENERATE_REFERENCE + cairo_paint (cr); +#else + cairo_set_operator (cr, CAIRO_OPERATOR_ADD); + + for (y = 0; y < 16; y++) { + for (x = 0; x < 16; x++) { + double theta = (y * 16 + x) * M_PI / 512; + double cx = 16 * cos (theta) + x * 16; + double cy = 16 * sin (theta) + y * 16; + + cairo_move_to (cr, x * 16, y * 16); + cairo_line_to (cr, cx, cy); + cairo_line_to (cr, (x + 1) * 16, y * 16); + cairo_fill (cr); + + cairo_move_to (cr, (x + 1) * 16, y * 16); + cairo_line_to (cr, cx, cy); + cairo_line_to (cr, (x + 1) * 16, (y + 1) * 16); + cairo_fill (cr); + + cairo_move_to (cr, (x + 1) * 16, (y + 1) * 16); + cairo_line_to (cr, cx, cy); + cairo_line_to (cr, x * 16, (y + 1) * 16); + cairo_fill (cr); + + cairo_move_to (cr, x * 16, (y + 1) * 16); + cairo_line_to (cr, cx, cy); + cairo_line_to (cr, x * 16, y * 16); + cairo_fill (cr); + } + } +#endif + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t column_triangles (cairo_t *cr, int width, int height) { int x, y, i, channel; @@ -361,38 +456,51 @@ CAIRO_TEST (coverage_rectangles, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, rectangles) +CAIRO_TEST (coverage_rhombus, + "Check the fidelity of the rasterisation.", + NULL, /* keywords */ + "target=raster", /* requirements */ + 2*WIDTH, 2*WIDTH, + NULL, rhombus) + CAIRO_TEST (coverage_intersecting_quads, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, intersecting_quads) CAIRO_TEST (coverage_intersecting_triangles, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, intersecting_triangles) CAIRO_TEST (coverage_row_triangles, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, row_triangles) CAIRO_TEST (coverage_column_triangles, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, column_triangles) CAIRO_TEST (coverage_triangles, "Check the fidelity of the rasterisation.", NULL, /* keywords */ - "target=raster slow", /* requirements */ + "target=raster", /* requirements */ WIDTH, HEIGHT, NULL, triangles) +CAIRO_TEST (coverage_abutting, + "Check the fidelity of the rasterisation.", + NULL, /* keywords */ + "target=raster", /* requirements */ + 16*16, 16*16, + NULL, abutting) diff -Nru cairo-1.13.0~20140204/test/degenerate-dash.c cairo-1.14.2/test/degenerate-dash.c --- cairo-1.13.0~20140204/test/degenerate-dash.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/degenerate-dash.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2008 Chris Wilson + * Copyright © 2008 Chris Wilson * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without diff -Nru cairo-1.13.0~20140204/test/degenerate-path.c cairo-1.14.2/test/degenerate-path.c --- cairo-1.13.0~20140204/test/degenerate-path.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/degenerate-path.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2006 Jeff Muizelaar + * Copyright © 2006 Jeff Muizelaar * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without diff -Nru cairo-1.13.0~20140204/test/egl-oversized-surface.c cairo-1.14.2/test/egl-oversized-surface.c --- cairo-1.13.0~20140204/test/egl-oversized-surface.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/test/egl-oversized-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * Copyright © 2014 Samsung Electronics + * + * 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: Ravi Nanjundappa + */ + +/* + * This test exercises error scenario for over sized egl surface + * + */ + +#include "cairo-test.h" +#include +#include +#include + +static cairo_test_status_t +preamble (cairo_test_context_t *test_ctx) +{ + EGLint rgba_attribs[] = { + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, +#if CAIRO_HAS_GL_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, +#elif CAIRO_HAS_GLESV2_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, +#endif + EGL_NONE + }; + const EGLint ctx_attribs[] = { +#if CAIRO_HAS_GLESV2_SURFACE + EGL_CONTEXT_CLIENT_VERSION, 2, +#endif + EGL_NONE + }; + + EGLDisplay dpy; + EGLContext ctx; + EGLConfig config; + EGLint numConfigs; + int major, minor; + cairo_device_t *device; + cairo_surface_t *oversized_surface; + cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; + + dpy = eglGetDisplay (EGL_DEFAULT_DISPLAY); + if (! eglInitialize (dpy, &major, &minor)) { + test_status = CAIRO_TEST_UNTESTED; + goto CLEANUP_1; + } + + eglChooseConfig (dpy, rgba_attribs, &config, 1, &numConfigs); + if (numConfigs == 0) { + test_status = CAIRO_TEST_UNTESTED; + goto CLEANUP_1; + } + +#if CAIRO_HAS_GL_SURFACE + eglBindAPI (EGL_OPENGL_API); +#elif CAIRO_HAS_GLESV2_SURFACE + eglBindAPI (EGL_OPENGL_ES_API); +#endif + + ctx = eglCreateContext (dpy, config, EGL_NO_CONTEXT, + ctx_attribs); + if (ctx == EGL_NO_CONTEXT) { + test_status = CAIRO_TEST_UNTESTED; + goto CLEANUP_2; + } + + device = cairo_egl_device_create (dpy, ctx); + + oversized_surface = cairo_gl_surface_create (device, CAIRO_CONTENT_COLOR_ALPHA, INT_MAX, INT_MAX); + if (cairo_surface_status (oversized_surface) != CAIRO_STATUS_INVALID_SIZE) + test_status = CAIRO_TEST_FAILURE; + + cairo_device_destroy (device); + eglDestroyContext (dpy, ctx); + eglMakeCurrent (dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + ctx = EGL_NO_CONTEXT; + +CLEANUP_2: + eglTerminate (dpy); + +CLEANUP_1: + return test_status; +} + +CAIRO_TEST (egl_oversized_surface, + "Test that creating a surface beyond texture limits results in an error surface", + "egl", /* keywords */ + NULL, /* requirements */ + 0, 0, + preamble, NULL) diff -Nru cairo-1.13.0~20140204/test/egl-surface-source.c cairo-1.14.2/test/egl-surface-source.c --- cairo-1.13.0~20140204/test/egl-surface-source.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/test/egl-surface-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,135 @@ +/* + * Copyright © 2014 Samsung Electronics + * + * 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: Ravi Nanjundappa + */ + +/* + * This case tests using a EGL surface as the source + * + */ + +#include "cairo-test.h" +#include + +#include "surface-source.c" + +struct closure { + EGLDisplay dpy; + EGLContext ctx; +}; + +static void +cleanup (void *data) +{ + struct closure *arg = data; + + eglDestroyContext (arg->dpy, arg->ctx); + eglMakeCurrent (arg->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglTerminate (arg->dpy); + + free (arg); +} + +static cairo_surface_t * +create_source_surface (int size) +{ + EGLint config_attribs[] = { + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, +#if CAIRO_HAS_GL_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, +#elif CAIRO_HAS_GLESV2_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, +#endif + EGL_NONE + }; + const EGLint ctx_attribs[] = { +#if CAIRO_HAS_GLESV2_SURFACE + EGL_CONTEXT_CLIENT_VERSION, 2, +#endif + EGL_NONE + }; + + struct closure *arg; + cairo_device_t *device; + cairo_surface_t *surface; + EGLConfig config; + EGLint numConfigs; + EGLDisplay dpy; + EGLContext ctx; + int major, minor; + + dpy = eglGetDisplay (EGL_DEFAULT_DISPLAY); + if (! eglInitialize (dpy, &major, &minor)) { + return NULL; + } + + eglChooseConfig (dpy, config_attribs, &config, 1, &numConfigs); + if (numConfigs == 0) { + return NULL; + } + +#if CAIRO_HAS_GL_SURFACE + eglBindAPI (EGL_OPENGL_API); +#elif CAIRO_HAS_GLESV2_SURFACE + eglBindAPI (EGL_OPENGL_ES_API); +#endif + + ctx = eglCreateContext (dpy, config, EGL_NO_CONTEXT, + ctx_attribs); + if (ctx == EGL_NO_CONTEXT) { + eglTerminate (dpy); + return NULL; + } + + arg = xmalloc (sizeof (struct closure)); + arg->dpy = dpy; + arg->ctx = ctx; + device = cairo_egl_device_create (dpy, ctx); + if (cairo_device_set_user_data (device, + (cairo_user_data_key_t *) cleanup, + arg, + cleanup)) + { + cleanup (arg); + return NULL; + } + + surface = cairo_gl_surface_create (device, + CAIRO_CONTENT_COLOR_ALPHA, + size, size); + cairo_device_destroy (device); + + return surface; +} + +CAIRO_TEST (egl_surface_source, + "Test using a EGL surface as the source", + "source", /* keywords */ + NULL, /* requirements */ + SIZE, SIZE, + preamble, draw) diff -Nru cairo-1.13.0~20140204/test/extended-blend.c cairo-1.14.2/test/extended-blend.c --- cairo-1.13.0~20140204/test/extended-blend.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/extended-blend.c 2015-03-10 22:21:07.000000000 +0000 @@ -27,8 +27,8 @@ * Emmanuel Pacaud */ -#include #include "cairo-test.h" +#include #include #define STEPS 16 diff -Nru cairo-1.13.0~20140204/test/extend-pad-border.c cairo-1.14.2/test/extend-pad-border.c --- cairo-1.13.0~20140204/test/extend-pad-border.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/extend-pad-border.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Behdad Esfahbod */ -#include #include "cairo-test.h" +#include #include #define SIZE 90 diff -Nru cairo-1.13.0~20140204/test/extend-pad.c cairo-1.14.2/test/extend-pad.c --- cairo-1.13.0~20140204/test/extend-pad.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/extend-pad.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Behdad Esfahbod */ -#include #include "cairo-test.h" +#include #include #define SIZE 90 diff -Nru cairo-1.13.0~20140204/test/extend-pad-similar.c cairo-1.14.2/test/extend-pad-similar.c --- cairo-1.13.0~20140204/test/extend-pad-similar.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/extend-pad-similar.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Behdad Esfahbod */ -#include #include "cairo-test.h" +#include #include #define SIZE 90 diff -Nru cairo-1.13.0~20140204/test/extend-reflect.c cairo-1.14.2/test/extend-reflect.c --- cairo-1.13.0~20140204/test/extend-reflect.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/extend-reflect.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ -#include #include "cairo-test.h" +#include #include static const char *png_filename = "romedalen.png"; diff -Nru cairo-1.13.0~20140204/test/fallback-resolution.c cairo-1.14.2/test/fallback-resolution.c --- cairo-1.13.0~20140204/test/fallback-resolution.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/fallback-resolution.c 2015-03-10 22:21:07.000000000 +0000 @@ -32,7 +32,10 @@ #include #include #include + +#if CAIRO_HAS_PDF_SURFACE #include +#endif #ifdef HAVE_UNISTD_H #include @@ -280,9 +283,11 @@ options = cairo_font_options_create (); +#if CAIRO_HAS_PDF_SURFACE pdf = cairo_pdf_surface_create ("tmp.pdf", 1, 1); cairo_surface_get_font_options (pdf, options); cairo_surface_destroy (pdf); +#endif cairo_set_font_options (cr, options); cairo_font_options_destroy (options); diff -Nru cairo-1.13.0~20140204/test/long-dashed-lines.c cairo-1.14.2/test/long-dashed-lines.c --- cairo-1.13.0~20140204/test/long-dashed-lines.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/long-dashed-lines.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2008 Chris Wilson + * Copyright © 2008 Chris Wilson * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without diff -Nru cairo-1.13.0~20140204/test/Makefile.am cairo-1.14.2/test/Makefile.am --- cairo-1.13.0~20140204/test/Makefile.am 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/Makefile.am 2015-03-10 22:21:07.000000000 +0000 @@ -20,6 +20,10 @@ test_sources += $(gl_surface_test_sources) endif +if CAIRO_HAS_EGL_FUNCTIONS +test_sources += $(egl_surface_test_sources) +endif + # Need to add quartz-surface-source if CAIRO_HAS_QUARTZ_SURFACE test_sources += $(quartz_surface_test_sources) @@ -289,13 +293,14 @@ # and TARGETS make var on the command line. Same for the rest. TARGETS = $(CAIRO_TEST_TARGET) TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) +FORMAT = $(CAIRO_TEST_TARGET_FORMAT) NUM_THREADS = $(CAIRO_TEST_NUM_THREADS) MODE = $(CAIRO_TEST_MODE) # Same about ENV vs CAIRO_TEST_ENV. ENV is used with "make run" only ENV = $(CAIRO_TEST_ENV) -TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" CAIRO_TEST_NUM_THREADS="$(NUM_THREADS)" $(ENV) +TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" CAIRO_TEST_NUM_THREADS="$(NUM_THREADS)" $(ENV) EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS) VALGRIND_FLAGS = \ diff -Nru cairo-1.13.0~20140204/test/Makefile.in cairo-1.14.2/test/Makefile.in --- cairo-1.13.0~20140204/test/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/test/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -93,25 +93,26 @@ @HAVE_REAL_PTHREAD_TRUE@am__append_1 = $(pthread_test_sources) @CAIRO_HAS_FC_FONT_TRUE@@CAIRO_HAS_FT_FONT_TRUE@am__append_2 = $(ft_font_test_sources) @CAIRO_HAS_GL_SURFACE_TRUE@am__append_3 = $(gl_surface_test_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_4 = $(egl_surface_test_sources) # Need to add quartz-surface-source -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_4 = $(quartz_surface_test_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_5 = $(pdf_surface_test_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_6 = $(ps_surface_test_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_7 = $(svg_surface_test_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_8 = $(test_fallback16_surface_test_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_9 = $(xcb_surface_test_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_10 = $(xlib_surface_test_sources) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_11 = $(xlib_xrender_surface_test_sources) -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__append_12 = $(multi_page_surface_test_sources) -@BUILD_ANY2PPM_TRUE@am__append_13 = \ +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_5 = $(quartz_surface_test_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_6 = $(pdf_surface_test_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_7 = $(ps_surface_test_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_8 = $(svg_surface_test_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_9 = $(test_fallback16_surface_test_sources) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_10 = $(xcb_surface_test_sources) +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_11 = $(xlib_surface_test_sources) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_12 = $(xlib_xrender_surface_test_sources) +@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__append_13 = $(multi_page_surface_test_sources) +@BUILD_ANY2PPM_TRUE@am__append_14 = \ @BUILD_ANY2PPM_TRUE@ any2ppm$(EXEEXT) -@HAVE_SHM_TRUE@am__append_14 = cairo-test-trace -@BUILD_ANY2PPM_TRUE@am__append_15 = any2ppm -@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__append_16 = pdf2png -@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__append_17 = svg2png -@CAIRO_HAS_SPECTRE_TRUE@am__append_18 = ps2png +@HAVE_SHM_TRUE@am__append_15 = cairo-test-trace +@BUILD_ANY2PPM_TRUE@am__append_16 = any2ppm +@CAIRO_CAN_TEST_PDF_SURFACE_TRUE@am__append_17 = pdf2png +@CAIRO_CAN_TEST_SVG_SURFACE_TRUE@am__append_18 = svg2png +@CAIRO_HAS_SPECTRE_TRUE@am__append_19 = ps2png subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -172,13 +173,13 @@ arc-looping-dash.c api-special-cases.c big-line.c \ big-empty-box.c big-empty-triangle.c big-little-box.c \ big-little-triangle.c bug-spline.c big-trap.c bilevel-image.c \ - bug-40410.c bug-51910.c bug-bo-rectangular.c bug-bo-collins.c \ - bug-bo-ricotz.c bug-source-cu.c bug-extents.c bug-seams.c \ - caps.c checkerboard.c caps-joins.c caps-joins-alpha.c \ - caps-joins-curve.c caps-tails-curve.c caps-sub-paths.c clear.c \ - clear-source.c clip-all.c clip-complex-bug61592.c \ - clip-complex-shape.c clip-contexts.c clip-disjoint.c \ - clip-disjoint-hatching.c clip-disjoint-quad.c \ + bug-40410.c bug-51910.c bug-84115.c bug-bo-rectangular.c \ + bug-bo-collins.c bug-bo-ricotz.c bug-source-cu.c bug-extents.c \ + bug-seams.c caps.c checkerboard.c caps-joins.c \ + caps-joins-alpha.c caps-joins-curve.c caps-tails-curve.c \ + caps-sub-paths.c clear.c clear-source.c clip-all.c \ + clip-complex-bug61592.c clip-complex-shape.c clip-contexts.c \ + clip-disjoint.c clip-disjoint-hatching.c clip-disjoint-quad.c \ clip-device-offset.c clip-double-free.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 \ @@ -274,9 +275,9 @@ select-font-no-show-text.c self-copy.c self-copy-overlap.c \ self-intersecting.c set-source.c show-glyphs-advance.c \ show-glyphs-many.c show-text-current-point.c \ - shape-general-convex.c shape-sierpinski.c skew-extreme.c \ - smask.c smask-fill.c smask-image-mask.c smask-mask.c \ - smask-paint.c smask-stroke.c smask-text.c \ + shape-general-convex.c shape-sierpinski.c simple.c \ + skew-extreme.c smask.c smask-fill.c smask-image-mask.c \ + smask-mask.c smask-paint.c smask-stroke.c smask-text.c \ solid-pattern-cache-stress.c source-clip.c source-clip-scale.c \ source-surface-scale-paint.c spline-decomposition.c \ stride-12-image.c stroke-pattern.c subsurface.c \ @@ -307,6 +308,7 @@ ft-text-vertical-layout-type1.c \ ft-text-vertical-layout-type3.c ft-text-antialias-none.c \ gl-device-release.c gl-oversized-surface.c gl-surface-source.c \ + egl-oversized-surface.c egl-surface-source.c \ quartz-surface-source.c pdf-features.c pdf-mime-data.c \ pdf-surface-source.c ps-eps.c ps-features.c \ ps-surface-source.c svg-surface.c svg-clip.c \ @@ -333,36 +335,39 @@ cairo_test_suite-gl-oversized-surface.$(OBJEXT) \ cairo_test_suite-gl-surface-source.$(OBJEXT) @CAIRO_HAS_GL_SURFACE_TRUE@am__objects_8 = $(am__objects_7) -am__objects_9 = cairo_test_suite-quartz-surface-source.$(OBJEXT) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__objects_10 = $(am__objects_9) -am__objects_11 = cairo_test_suite-pdf-features.$(OBJEXT) \ +am__objects_9 = cairo_test_suite-egl-oversized-surface.$(OBJEXT) \ + cairo_test_suite-egl-surface-source.$(OBJEXT) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__objects_10 = $(am__objects_9) +am__objects_11 = cairo_test_suite-quartz-surface-source.$(OBJEXT) +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__objects_12 = $(am__objects_11) +am__objects_13 = cairo_test_suite-pdf-features.$(OBJEXT) \ cairo_test_suite-pdf-mime-data.$(OBJEXT) \ cairo_test_suite-pdf-surface-source.$(OBJEXT) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_12 = $(am__objects_11) -am__objects_13 = cairo_test_suite-ps-eps.$(OBJEXT) \ +@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_14 = $(am__objects_13) +am__objects_15 = cairo_test_suite-ps-eps.$(OBJEXT) \ cairo_test_suite-ps-features.$(OBJEXT) \ cairo_test_suite-ps-surface-source.$(OBJEXT) -@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_14 = $(am__objects_13) -am__objects_15 = cairo_test_suite-svg-surface.$(OBJEXT) \ +@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_16 = $(am__objects_15) +am__objects_17 = cairo_test_suite-svg-surface.$(OBJEXT) \ cairo_test_suite-svg-clip.$(OBJEXT) \ cairo_test_suite-svg-surface-source.$(OBJEXT) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_16 = $(am__objects_15) -am__objects_17 = cairo_test_suite-xcb-surface-source.$(OBJEXT) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__objects_18 = $(am__objects_17) -am__objects_19 = cairo_test_suite-xlib-surface.$(OBJEXT) \ +@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_18 = $(am__objects_17) +am__objects_19 = cairo_test_suite-xcb-surface-source.$(OBJEXT) +@CAIRO_HAS_XCB_SURFACE_TRUE@am__objects_20 = $(am__objects_19) +am__objects_21 = cairo_test_suite-xlib-surface.$(OBJEXT) \ cairo_test_suite-xlib-surface-source.$(OBJEXT) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_20 = $(am__objects_19) -am__objects_21 = cairo_test_suite-get-xrender-format.$(OBJEXT) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__objects_22 = \ -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@ $(am__objects_21) -am__objects_23 = cairo_test_suite-multi-page.$(OBJEXT) -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__objects_24 = \ -@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@ $(am__objects_23) -am__objects_25 = cairo_test_suite-fallback-resolution.$(OBJEXT) -@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_FALSE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_26 = $(am__objects_25) -@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_26 = $(am__objects_25) -@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_26 = $(am__objects_25) -am__objects_27 = cairo_test_suite-a1-bug.$(OBJEXT) \ +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_22 = $(am__objects_21) +am__objects_23 = cairo_test_suite-get-xrender-format.$(OBJEXT) +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__objects_24 = \ +@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@ $(am__objects_23) +am__objects_25 = cairo_test_suite-multi-page.$(OBJEXT) +@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@am__objects_26 = \ +@CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE@ $(am__objects_25) +am__objects_27 = cairo_test_suite-fallback-resolution.$(OBJEXT) +@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_FALSE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_28 = $(am__objects_27) +@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_28 = $(am__objects_27) +@BUILD_ANY2PPM_TRUE@@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_28 = $(am__objects_27) +am__objects_29 = cairo_test_suite-a1-bug.$(OBJEXT) \ cairo_test_suite-a1-clip.$(OBJEXT) \ cairo_test_suite-a1-fill.$(OBJEXT) \ cairo_test_suite-a1-image-sample.$(OBJEXT) \ @@ -389,6 +394,7 @@ cairo_test_suite-bilevel-image.$(OBJEXT) \ cairo_test_suite-bug-40410.$(OBJEXT) \ cairo_test_suite-bug-51910.$(OBJEXT) \ + cairo_test_suite-bug-84115.$(OBJEXT) \ cairo_test_suite-bug-bo-rectangular.$(OBJEXT) \ cairo_test_suite-bug-bo-collins.$(OBJEXT) \ cairo_test_suite-bug-bo-ricotz.$(OBJEXT) \ @@ -673,6 +679,7 @@ cairo_test_suite-show-text-current-point.$(OBJEXT) \ cairo_test_suite-shape-general-convex.$(OBJEXT) \ cairo_test_suite-shape-sierpinski.$(OBJEXT) \ + cairo_test_suite-simple.$(OBJEXT) \ cairo_test_suite-skew-extreme.$(OBJEXT) \ cairo_test_suite-smask.$(OBJEXT) \ cairo_test_suite-smask-fill.$(OBJEXT) \ @@ -745,10 +752,11 @@ cairo_test_suite-zero-mask.$(OBJEXT) $(am__objects_4) \ $(am__objects_6) $(am__objects_8) $(am__objects_10) \ $(am__objects_12) $(am__objects_14) $(am__objects_16) \ - $(am__objects_2) $(am__objects_18) $(am__objects_20) \ - $(am__objects_22) $(am__objects_24) $(am__objects_26) + $(am__objects_18) $(am__objects_2) $(am__objects_20) \ + $(am__objects_22) $(am__objects_24) $(am__objects_26) \ + $(am__objects_28) am_cairo_test_suite_OBJECTS = $(am__objects_1) $(am__objects_2) \ - $(am__objects_27) \ + $(am__objects_29) \ cairo_test_suite-cairo-test-constructors.$(OBJEXT) cairo_test_suite_OBJECTS = $(am_cairo_test_suite_OBJECTS) cairo_test_suite_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -1162,6 +1170,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -1345,13 +1354,13 @@ arc-looping-dash.c api-special-cases.c big-line.c \ big-empty-box.c big-empty-triangle.c big-little-box.c \ big-little-triangle.c bug-spline.c big-trap.c bilevel-image.c \ - bug-40410.c bug-51910.c bug-bo-rectangular.c bug-bo-collins.c \ - bug-bo-ricotz.c bug-source-cu.c bug-extents.c bug-seams.c \ - caps.c checkerboard.c caps-joins.c caps-joins-alpha.c \ - caps-joins-curve.c caps-tails-curve.c caps-sub-paths.c clear.c \ - clear-source.c clip-all.c clip-complex-bug61592.c \ - clip-complex-shape.c clip-contexts.c clip-disjoint.c \ - clip-disjoint-hatching.c clip-disjoint-quad.c \ + bug-40410.c bug-51910.c bug-84115.c bug-bo-rectangular.c \ + bug-bo-collins.c bug-bo-ricotz.c bug-source-cu.c bug-extents.c \ + bug-seams.c caps.c checkerboard.c caps-joins.c \ + caps-joins-alpha.c caps-joins-curve.c caps-tails-curve.c \ + caps-sub-paths.c clear.c clear-source.c clip-all.c \ + clip-complex-bug61592.c clip-complex-shape.c clip-contexts.c \ + clip-disjoint.c clip-disjoint-hatching.c clip-disjoint-quad.c \ clip-device-offset.c clip-double-free.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 \ @@ -1447,9 +1456,9 @@ select-font-no-show-text.c self-copy.c self-copy-overlap.c \ self-intersecting.c set-source.c show-glyphs-advance.c \ show-glyphs-many.c show-text-current-point.c \ - shape-general-convex.c shape-sierpinski.c skew-extreme.c \ - smask.c smask-fill.c smask-image-mask.c smask-mask.c \ - smask-paint.c smask-stroke.c smask-text.c \ + shape-general-convex.c shape-sierpinski.c simple.c \ + skew-extreme.c smask.c smask-fill.c smask-image-mask.c \ + smask-mask.c smask-paint.c smask-stroke.c smask-text.c \ solid-pattern-cache-stress.c source-clip.c source-clip-scale.c \ source-surface-scale-paint.c spline-decomposition.c \ stride-12-image.c stroke-pattern.c subsurface.c \ @@ -1477,7 +1486,7 @@ $(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) + $(am__append_11) $(am__append_12) $(am__append_13) $(test) pthread_test_sources = \ pthread-same-source.c \ pthread-show-text.c \ @@ -1498,6 +1507,10 @@ gl-oversized-surface.c \ gl-surface-source.c +egl_surface_test_sources = \ + egl-oversized-surface.c \ + egl-surface-source.c + quartz_surface_test_sources = quartz-surface-source.c pdf_surface_test_sources = \ pdf-features.c \ @@ -1561,7 +1574,7 @@ cairo_test_suite_DEPENDENCIES = \ $(top_builddir)/test/pdiff/libpdiff.la \ $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la $(am__append_13) + $(top_builddir)/src/libcairo.la $(am__append_14) @HAVE_SHM_TRUE@cairo_test_trace_SOURCES = \ @HAVE_SHM_TRUE@ cairo-test-trace.c \ @HAVE_SHM_TRUE@ buffer-diff.c \ @@ -1664,12 +1677,13 @@ # and TARGETS make var on the command line. Same for the rest. TARGETS = $(CAIRO_TEST_TARGET) TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) +FORMAT = $(CAIRO_TEST_TARGET_FORMAT) NUM_THREADS = $(CAIRO_TEST_NUM_THREADS) MODE = $(CAIRO_TEST_MODE) # Same about ENV vs CAIRO_TEST_ENV. ENV is used with "make run" only ENV = $(CAIRO_TEST_ENV) -TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" CAIRO_TEST_NUM_THREADS="$(NUM_THREADS)" $(ENV) +TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" CAIRO_TEST_NUM_THREADS="$(NUM_THREADS)" $(ENV) EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS) VALGRIND_FLAGS = \ --tool=memcheck --suppressions=$(srcdir)/.valgrind-suppressions \ @@ -1809,6 +1823,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-buffer-diff.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-40410.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-51910.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-84115.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-bo-collins.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-bo-rectangular.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-bug-bo-ricotz.Po@am__quote@ @@ -1901,6 +1916,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-device-offset-scale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-device-offset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-drunkard-tails.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-egl-oversized-surface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-egl-surface-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-error-setters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-extend-pad-border.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-extend-pad-similar.Po@am__quote@ @@ -2115,6 +2132,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-show-glyphs-advance.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-show-glyphs-many.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-show-text-current-point.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-skew-extreme.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smask-fill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smask-image-mask.Po@am__quote@ @@ -2658,6 +2676,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-bug-51910.obj `if test -f 'bug-51910.c'; then $(CYGPATH_W) 'bug-51910.c'; else $(CYGPATH_W) '$(srcdir)/bug-51910.c'; fi` +cairo_test_suite-bug-84115.o: bug-84115.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-bug-84115.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-bug-84115.Tpo -c -o cairo_test_suite-bug-84115.o `test -f 'bug-84115.c' || echo '$(srcdir)/'`bug-84115.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-bug-84115.Tpo $(DEPDIR)/cairo_test_suite-bug-84115.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bug-84115.c' object='cairo_test_suite-bug-84115.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-bug-84115.o `test -f 'bug-84115.c' || echo '$(srcdir)/'`bug-84115.c + +cairo_test_suite-bug-84115.obj: bug-84115.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-bug-84115.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-bug-84115.Tpo -c -o cairo_test_suite-bug-84115.obj `if test -f 'bug-84115.c'; then $(CYGPATH_W) 'bug-84115.c'; else $(CYGPATH_W) '$(srcdir)/bug-84115.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-bug-84115.Tpo $(DEPDIR)/cairo_test_suite-bug-84115.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bug-84115.c' object='cairo_test_suite-bug-84115.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-bug-84115.obj `if test -f 'bug-84115.c'; then $(CYGPATH_W) 'bug-84115.c'; else $(CYGPATH_W) '$(srcdir)/bug-84115.c'; fi` + cairo_test_suite-bug-bo-rectangular.o: bug-bo-rectangular.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-bug-bo-rectangular.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-bug-bo-rectangular.Tpo -c -o cairo_test_suite-bug-bo-rectangular.o `test -f 'bug-bo-rectangular.c' || echo '$(srcdir)/'`bug-bo-rectangular.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-bug-bo-rectangular.Tpo $(DEPDIR)/cairo_test_suite-bug-bo-rectangular.Po @@ -6634,6 +6666,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-shape-sierpinski.obj `if test -f 'shape-sierpinski.c'; then $(CYGPATH_W) 'shape-sierpinski.c'; else $(CYGPATH_W) '$(srcdir)/shape-sierpinski.c'; fi` +cairo_test_suite-simple.o: simple.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-simple.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-simple.Tpo -c -o cairo_test_suite-simple.o `test -f 'simple.c' || echo '$(srcdir)/'`simple.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-simple.Tpo $(DEPDIR)/cairo_test_suite-simple.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='simple.c' object='cairo_test_suite-simple.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-simple.o `test -f 'simple.c' || echo '$(srcdir)/'`simple.c + +cairo_test_suite-simple.obj: simple.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-simple.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-simple.Tpo -c -o cairo_test_suite-simple.obj `if test -f 'simple.c'; then $(CYGPATH_W) 'simple.c'; else $(CYGPATH_W) '$(srcdir)/simple.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-simple.Tpo $(DEPDIR)/cairo_test_suite-simple.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='simple.c' object='cairo_test_suite-simple.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-simple.obj `if test -f 'simple.c'; then $(CYGPATH_W) 'simple.c'; else $(CYGPATH_W) '$(srcdir)/simple.c'; fi` + cairo_test_suite-skew-extreme.o: skew-extreme.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-skew-extreme.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-skew-extreme.Tpo -c -o cairo_test_suite-skew-extreme.o `test -f 'skew-extreme.c' || echo '$(srcdir)/'`skew-extreme.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-skew-extreme.Tpo $(DEPDIR)/cairo_test_suite-skew-extreme.Po @@ -7796,6 +7842,34 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-gl-surface-source.obj `if test -f 'gl-surface-source.c'; then $(CYGPATH_W) 'gl-surface-source.c'; else $(CYGPATH_W) '$(srcdir)/gl-surface-source.c'; fi` +cairo_test_suite-egl-oversized-surface.o: egl-oversized-surface.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-egl-oversized-surface.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Tpo -c -o cairo_test_suite-egl-oversized-surface.o `test -f 'egl-oversized-surface.c' || echo '$(srcdir)/'`egl-oversized-surface.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Tpo $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='egl-oversized-surface.c' object='cairo_test_suite-egl-oversized-surface.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-egl-oversized-surface.o `test -f 'egl-oversized-surface.c' || echo '$(srcdir)/'`egl-oversized-surface.c + +cairo_test_suite-egl-oversized-surface.obj: egl-oversized-surface.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-egl-oversized-surface.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Tpo -c -o cairo_test_suite-egl-oversized-surface.obj `if test -f 'egl-oversized-surface.c'; then $(CYGPATH_W) 'egl-oversized-surface.c'; else $(CYGPATH_W) '$(srcdir)/egl-oversized-surface.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Tpo $(DEPDIR)/cairo_test_suite-egl-oversized-surface.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='egl-oversized-surface.c' object='cairo_test_suite-egl-oversized-surface.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-egl-oversized-surface.obj `if test -f 'egl-oversized-surface.c'; then $(CYGPATH_W) 'egl-oversized-surface.c'; else $(CYGPATH_W) '$(srcdir)/egl-oversized-surface.c'; fi` + +cairo_test_suite-egl-surface-source.o: egl-surface-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-egl-surface-source.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-egl-surface-source.Tpo -c -o cairo_test_suite-egl-surface-source.o `test -f 'egl-surface-source.c' || echo '$(srcdir)/'`egl-surface-source.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-egl-surface-source.Tpo $(DEPDIR)/cairo_test_suite-egl-surface-source.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='egl-surface-source.c' object='cairo_test_suite-egl-surface-source.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-egl-surface-source.o `test -f 'egl-surface-source.c' || echo '$(srcdir)/'`egl-surface-source.c + +cairo_test_suite-egl-surface-source.obj: egl-surface-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-egl-surface-source.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-egl-surface-source.Tpo -c -o cairo_test_suite-egl-surface-source.obj `if test -f 'egl-surface-source.c'; then $(CYGPATH_W) 'egl-surface-source.c'; else $(CYGPATH_W) '$(srcdir)/egl-surface-source.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-egl-surface-source.Tpo $(DEPDIR)/cairo_test_suite-egl-surface-source.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='egl-surface-source.c' object='cairo_test_suite-egl-surface-source.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -c -o cairo_test_suite-egl-surface-source.obj `if test -f 'egl-surface-source.c'; then $(CYGPATH_W) 'egl-surface-source.c'; else $(CYGPATH_W) '$(srcdir)/egl-surface-source.c'; fi` + cairo_test_suite-quartz-surface-source.o: quartz-surface-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-quartz-surface-source.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-quartz-surface-source.Tpo -c -o cairo_test_suite-quartz-surface-source.o `test -f 'quartz-surface-source.c' || echo '$(srcdir)/'`quartz-surface-source.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-quartz-surface-source.Tpo $(DEPDIR)/cairo_test_suite-quartz-surface-source.Po diff -Nru cairo-1.13.0~20140204/test/Makefile.sources cairo-1.14.2/test/Makefile.sources --- cairo-1.13.0~20140204/test/Makefile.sources 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/Makefile.sources 2015-03-10 22:21:07.000000000 +0000 @@ -26,6 +26,7 @@ bilevel-image.c \ bug-40410.c \ bug-51910.c \ + bug-84115.c \ bug-bo-rectangular.c \ bug-bo-collins.c \ bug-bo-ricotz.c \ @@ -310,6 +311,7 @@ show-text-current-point.c \ shape-general-convex.c \ shape-sierpinski.c \ + simple.c \ skew-extreme.c \ smask.c \ smask-fill.c \ @@ -401,6 +403,10 @@ gl-oversized-surface.c \ gl-surface-source.c +egl_surface_test_sources = \ + egl-oversized-surface.c \ + egl-surface-source.c + quartz_surface_test_sources = quartz-surface-source.c pdf_surface_test_sources = \ diff -Nru cairo-1.13.0~20140204/test/mask.c cairo-1.14.2/test/mask.c --- cairo-1.13.0~20140204/test/mask.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/mask.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Kristian Høgsberg */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/multi-page.c cairo-1.14.2/test/multi-page.c --- cairo-1.13.0~20140204/test/multi-page.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/multi-page.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,6 +23,8 @@ * Author: Carl D. Worth */ +#include "cairo-test.h" + #include #include @@ -35,8 +37,6 @@ #include #endif -#include "cairo-test.h" - /* The PostScript and PDF backends are now integrated into the main * test suite, so we are getting good verification of most things * there. diff -Nru cairo-1.13.0~20140204/test/negative-stride-image.c cairo-1.14.2/test/negative-stride-image.c --- cairo-1.13.0~20140204/test/negative-stride-image.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/negative-stride-image.c 2015-03-10 22:21:07.000000000 +0000 @@ -41,7 +41,7 @@ png = cairo_test_create_surface_from_png (ctx, png_filename); stride = cairo_format_stride_for_width (format, width); - data = calloc (stride, height); + data = xcalloc (stride, height); inv = cairo_image_surface_create_for_data (data + stride * (height - 1), format, width, height, -stride); diff -Nru cairo-1.13.0~20140204/test/operator-clear.c cairo-1.14.2/test/operator-clear.c --- cairo-1.13.0~20140204/test/operator-clear.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/operator-clear.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Owen Taylor */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/operator-source.c cairo-1.14.2/test/operator-source.c --- cairo-1.13.0~20140204/test/operator-source.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/operator-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -25,8 +25,8 @@ * Uli Schlachter */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/path-append.c cairo-1.14.2/test/path-append.c --- cairo-1.13.0~20140204/test/path-append.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/path-append.c 2015-03-10 22:21:07.000000000 +0000 @@ -21,8 +21,8 @@ * OF THIS SOFTWARE. */ -#include #include "cairo-test.h" +#include static cairo_test_status_t draw (cairo_t *cr, int width, int height) diff -Nru cairo-1.13.0~20140204/test/pattern-getters.c cairo-1.14.2/test/pattern-getters.c --- cairo-1.13.0~20140204/test/pattern-getters.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pattern-getters.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Vladimir Vukicevic */ -#include #include "cairo-test.h" +#include #define CHECK_SUCCESS do { \ if (status) { \ diff -Nru cairo-1.13.0~20140204/test/pdf-features.c cairo-1.14.2/test/pdf-features.c --- cairo-1.13.0~20140204/test/pdf-features.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pdf-features.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,12 +23,12 @@ * Author: Carl D. Worth */ +#include "cairo-test.h" + #include #include #include -#include "cairo-test.h" - /* This test exists to test the various features of cairo-pdf.h. * * Currently, this test exercises the following function calls: diff -Nru cairo-1.13.0~20140204/test/pdf-mime-data.c cairo-1.14.2/test/pdf-mime-data.c --- cairo-1.13.0~20140204/test/pdf-mime-data.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pdf-mime-data.c 2015-03-10 22:21:07.000000000 +0000 @@ -50,7 +50,7 @@ FILE *fp; fp = fopen (file, "rb"); - if (file == NULL) { + if (fp == NULL) { char filename[4096]; /* try again with srcdir */ @@ -61,8 +61,11 @@ if (fp == NULL) { switch (errno) { case ENOMEM: + cairo_test_log (ctx, "Could not create file handle for %s due to \ + lack of memory\n", file); return CAIRO_TEST_NO_MEMORY; default: + cairo_test_log (ctx, "Could not get the file handle for %s\n", file); return CAIRO_TEST_FAILURE; } } @@ -71,11 +74,19 @@ *len = ftell(fp); fseek (fp, 0, SEEK_SET); *data = malloc (*len); - if (*data == NULL) + if (*data == NULL) { + fclose(fp); + cairo_test_log (ctx, "Could not allocate memory for buffer to read \ + from file %s\n", file); return CAIRO_TEST_NO_MEMORY; + } - if (fread(*data, *len, 1, fp) != 1) + if (fread(*data, *len, 1, fp) != 1) { + free (data); + fclose(fp); + cairo_test_log (ctx, "Could not read data from file %s\n", file); return CAIRO_TEST_FAILURE; + } fclose(fp); return CAIRO_TEST_SUCCESS; @@ -104,7 +115,6 @@ image = cairo_image_surface_create_from_png (IMAGE_FILE ".png"); test_status = read_file (ctx, IMAGE_FILE ".jpg", &data, &len); if (test_status) { - cairo_test_log (ctx, "Could not read input jpeg file %s\n", IMAGE_FILE ".jpg"); return test_status; } @@ -148,16 +158,11 @@ test_status = read_file (ctx, IMAGE_FILE ".jpg", &data, &len); if (test_status) { - cairo_test_log (ctx, "Could not read input jpeg file %s\n", IMAGE_FILE ".jpg"); return test_status; } test_status = read_file (ctx, CAIRO_TEST_OUTPUT_DIR "/" BASENAME "-000.jpg", &out_data, &out_len); if (test_status) { - free (data); - cairo_test_log (ctx, - "Could not read input jpeg file %s\n", - CAIRO_TEST_OUTPUT_DIR "/" BASENAME "-000.jpg"); return test_status; } diff -Nru cairo-1.13.0~20140204/test/pdiff/lpyramid.c cairo-1.14.2/test/pdiff/lpyramid.c --- cairo-1.13.0~20140204/test/pdiff/lpyramid.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pdiff/lpyramid.c 2015-03-10 22:21:07.000000000 +0000 @@ -111,6 +111,6 @@ int index = x + y * pyramid->width; int l = level; if (l > MAX_PYR_LEVELS) - l = MAX_PYR_LEVELS; - return pyramid->levels[level][index]; + l = MAX_PYR_LEVELS; + return pyramid->levels[l][index]; } diff -Nru cairo-1.13.0~20140204/test/pdiff/Makefile.in cairo-1.14.2/test/pdiff/Makefile.in --- cairo-1.13.0~20140204/test/pdiff/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/test/pdiff/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -446,6 +446,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/test/pixman-downscale.c cairo-1.14.2/test/pixman-downscale.c --- cairo-1.13.0~20140204/test/pixman-downscale.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pixman-downscale.c 2015-03-10 22:21:07.000000000 +0000 @@ -29,13 +29,13 @@ * Currently, this exercises several of pixman's scaling filters. */ +#include "cairo-test.h" + #include #include #include -#include "cairo-test.h" - static const char png_filename[] = "quad-color.png"; /* Draw an image scaled down, with antialiasing disabled */ diff -Nru cairo-1.13.0~20140204/test/pixman-rotate.c cairo-1.14.2/test/pixman-rotate.c --- cairo-1.13.0~20140204/test/pixman-rotate.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pixman-rotate.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,6 +24,8 @@ * Author: Kristian Høgsberg */ +#include "cairo-test.h" + #include #include #include @@ -31,8 +33,6 @@ #include -#include "cairo-test.h" - #define WIDTH 32 #define HEIGHT WIDTH diff -Nru cairo-1.13.0~20140204/test/ps-features.c cairo-1.14.2/test/ps-features.c --- cairo-1.13.0~20140204/test/ps-features.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/ps-features.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,12 +23,12 @@ * Author: Carl D. Worth */ +#include "cairo-test.h" + #include #include #include -#include "cairo-test.h" - /* This test exists to test the various features of cairo-ps.h. * * Currently, this test exercises the following function calls: diff -Nru cairo-1.13.0~20140204/test/pthread-same-source.c cairo-1.14.2/test/pthread-same-source.c --- cairo-1.13.0~20140204/test/pthread-same-source.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/pthread-same-source.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,12 @@ * Author: Benjamin Otte */ +#define GENERATE_REFERENCE 0 + #include "cairo-test.h" +#if !GENERATE_REFERENCE #include +#endif #define N_THREADS 8 @@ -110,7 +114,9 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { +#if !GENERATE_REFERENCE pthread_t threads[N_THREADS]; +#endif thread_data_t thread_data[N_THREADS]; cairo_test_status_t test_status = CAIRO_TEST_SUCCESS; cairo_surface_t *source; @@ -125,12 +131,16 @@ status); } + cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); + cairo_paint (cr); + for (i = 0; i < N_THREADS; i++) { thread_data[i].target = cairo_surface_create_similar (cairo_get_target (cr), CAIRO_CONTENT_COLOR_ALPHA, 4 * WIDTH, 4 * HEIGHT); thread_data[i].source = cairo_surface_reference (source); thread_data[i].id = i; +#if !GENERATE_REFERENCE if (pthread_create (&threads[i], NULL, draw_thread, &thread_data[i]) != 0) { threads[i] = pthread_self (); /* to indicate error */ cairo_surface_destroy (thread_data[i].target); @@ -138,13 +148,21 @@ test_status = CAIRO_TEST_FAILURE; break; } +#else + { + cairo_surface_t *surface = draw_thread(&thread_data[i]); + cairo_set_source_surface (cr, surface, 0, 0); + cairo_surface_destroy (surface); + cairo_paint (cr); + + cairo_translate (cr, 0, 4 * HEIGHT); + } +#endif } cairo_surface_destroy (source); - cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); - cairo_paint (cr); - +#if !GENERATE_REFERENCE for (i = 0; i < N_THREADS; i++) { void *surface; @@ -161,6 +179,7 @@ test_status = CAIRO_TEST_FAILURE; } } +#endif return test_status; } diff -Nru cairo-1.13.0~20140204/test/README cairo-1.14.2/test/README --- cairo-1.13.0~20140204/test/README 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/README 2015-03-10 22:21:07.000000000 +0000 @@ -41,14 +41,21 @@ These come very handy when doing development, but should not be used to circumvent the "pass" requirements listed below. -To limit the backends that the tests are run against, use the -TARGETS make variable, that can also be passed to make. -It should contain a (space-, comma-, etc-separated) list of backends to test. -To limit the tests run, use the CAIRO_TESTS environment variable, which -should be a space-separated list of tests to run. For example: +make's TARGETS environment variable can be used to limit the backends when +running the tests. It should contain a (space-, comma-separated) list of +backends. CAIRO_TESTS environment variable, which is a comma-, space-seperated +lists, can be used to limit the tests run. +For example: CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps +make's FORMAT variable can also be used to limit the content formats when +running the tests. It should contain a (space-, comma-separated) list of +content formats to test. +For example: + + CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps FORMAT="rgb,rgba" + Another very handy mechanism when trying to fix bugs is: make retest diff -Nru cairo-1.13.0~20140204/test/record-extend.c cairo-1.14.2/test/record-extend.c --- cairo-1.13.0~20140204/test/record-extend.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/record-extend.c 2015-03-10 22:21:07.000000000 +0000 @@ -27,8 +27,8 @@ * Chris Wilson */ -#include #include "cairo-test.h" +#include #include #define SIZE 90 diff -Nru cairo-1.13.0~20140204/test/recordflip.c cairo-1.14.2/test/recordflip.c --- cairo-1.13.0~20140204/test/recordflip.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/recordflip.c 2015-03-10 22:21:07.000000000 +0000 @@ -357,9 +357,61 @@ int x, y; #if GENERATE_REF - cairo_scale (cr, -1, -1); - cairo_translate (cr, -width, -height); - func(cr); + { + cairo_surface_t *image; + uint8_t *data, *tmp; + int stride, bpp; + + surface = cairo_get_target (cr); + + func(cr); + + image = cairo_surface_map_to_image (surface, NULL); + + switch (cairo_image_surface_get_format (image)) { + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + case CAIRO_FORMAT_RGB30: + bpp=4; + break; + case CAIRO_FORMAT_RGB16_565: + bpp=2; + break; + case CAIRO_FORMAT_A8: + bpp=1; + break; + case CAIRO_FORMAT_A1: + case CAIRO_FORMAT_INVALID: + default: + return CAIRO_TEST_FAILURE; + } + + data = cairo_image_surface_get_data (image); + stride = cairo_image_surface_get_stride (image); + + tmp = malloc (stride); + if (tmp == NULL) + return CAIRO_TEST_FAILURE; + + for (y = 0; y < height; y++) { + uint8_t *row = data + y * stride; + for (x = 0; x < width/2; x++) { + memcpy (tmp, row + bpp * x, bpp); + memcpy (row + bpp * x, row + bpp * (width - x - 1), bpp); + memcpy (row + bpp * (width - x - 1), tmp, bpp); + } + } + + for (y = 0; y < height/2; y++) { + memcpy (tmp, data + y * stride, stride); + memcpy (data + y * stride, data + (height - y - 1) * stride, stride); + memcpy (data + (height - y - 1) * stride, tmp, stride); + } + + free (tmp); + + cairo_surface_unmap_image (surface, image); + } #else surface = record_get (func (record_create (cr))); @@ -384,6 +436,84 @@ } static cairo_test_status_t +record_whole_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) +{ + cairo_surface_t *surface; + +#if GENERATE_REF + { + cairo_surface_t *image; + uint8_t *data, *tmp; + int stride, bpp; + int x, y; + + surface = cairo_get_target (cr); + + func(cr); + + image = cairo_surface_map_to_image (surface, NULL); + + switch (cairo_image_surface_get_format (image)) { + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + case CAIRO_FORMAT_RGB30: + bpp=4; + break; + case CAIRO_FORMAT_RGB16_565: + bpp=2; + break; + case CAIRO_FORMAT_A8: + bpp=1; + break; + case CAIRO_FORMAT_A1: + case CAIRO_FORMAT_INVALID: + default: + return CAIRO_TEST_FAILURE; + } + + data = cairo_image_surface_get_data (image); + stride = cairo_image_surface_get_stride (image); + + tmp = malloc (stride); + if (tmp == NULL) + return CAIRO_TEST_FAILURE; + + for (y = 0; y < height; y++) { + uint8_t *row = data + y * stride; + for (x = 0; x < width/2; x++) { + memcpy (tmp, row + bpp * x, bpp); + memcpy (row + bpp * x, row + bpp * (width - x - 1), bpp); + memcpy (row + bpp * (width - x - 1), tmp, bpp); + } + } + + for (y = 0; y < height/2; y++) { + memcpy (tmp, data + y * stride, stride); + memcpy (data + y * stride, data + (height - y - 1) * stride, stride); + memcpy (data + (height - y - 1) * stride, tmp, stride); + } + + free (tmp); + + cairo_surface_unmap_image (surface, image); + } +#else + surface = record_get (func (record_create (cr))); + + cairo_scale (cr, -1, -1); + cairo_translate (cr, -width, -height); + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + cairo_set_source_surface (cr, surface, 0, 0); + cairo_surface_destroy (surface); + cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_NONE); + + cairo_paint (cr); +#endif + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t record_paint (cairo_t *cr, int width, int height) { return record_replay (cr, paint, width, height); @@ -437,6 +567,116 @@ return record_replay (cr, text_transform, width, height); } +static cairo_test_status_t +record_whole_paint (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, paint, width, height); +} + +static cairo_test_status_t +record_whole_paint_alpha (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, paint_alpha, width, height); +} + +static cairo_test_status_t +record_whole_paint_alpha_solid_clip (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, paint_alpha_solid_clip, width, height); +} + +static cairo_test_status_t +record_whole_paint_alpha_clip (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, paint_alpha_clip, width, height); +} + +static cairo_test_status_t +record_whole_paint_alpha_clip_mask (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, paint_alpha_clip_mask, width, height); +} + +static cairo_test_status_t +record_whole_fill_alpha (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, fill_alpha, width, height); +} + +static cairo_test_status_t +record_whole_self_intersecting (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, self_intersecting, width, height); +} + +static cairo_test_status_t +record_whole_select_font_face (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, select_font_face, width, height); +} + +static cairo_test_status_t +record_whole_text_transform (cairo_t *cr, int width, int height) +{ + return record_whole_replay (cr, text_transform, width, height); +} + +CAIRO_TEST (recordflip_whole_paint, + "Test replayed calls to cairo_paint", + "paint,record", /* keywords */ + NULL, /* requirements */ + 8, 8, + NULL, record_whole_paint) +CAIRO_TEST (recordflip_whole_paint_alpha, + "Simple test of cairo_paint_with_alpha", + "record, paint, alpha", /* keywords */ + NULL, /* requirements */ + 32, 32, + NULL, record_whole_paint_alpha) +CAIRO_TEST (recordflip_whole_paint_alpha_solid_clip, + "Simple test of cairo_paint_with_alpha+unaligned clip", + "record, paint, alpha, clip", /* keywords */ + NULL, /* requirements */ + 32, 32, + NULL, record_whole_paint_alpha_solid_clip) +CAIRO_TEST (recordflip_whole_paint_alpha_clip, + "Simple test of cairo_paint_with_alpha+unaligned clip", + "record, paint, alpha, clip", /* keywords */ + NULL, /* requirements */ + 32, 32, + NULL, record_whole_paint_alpha_clip) +CAIRO_TEST (recordflip_whole_paint_alpha_clip_mask, + "Simple test of cairo_paint_with_alpha+triangular clip", + "record, paint, alpha, clip", /* keywords */ + NULL, /* requirements */ + 32, 32, + NULL, record_whole_paint_alpha_clip_mask) +CAIRO_TEST (recordflip_whole_fill_alpha, + "Tests using set_rgba();fill()", + "record,fill, alpha", /* keywords */ + NULL, /* requirements */ + (2*SIZE + 4*PAD), (2*SIZE + 4*PAD), + NULL, record_whole_fill_alpha) +CAIRO_TEST (recordflip_whole_select_font_face, + "Tests using cairo_select_font_face to draw text in different faces", + "record, font", /* keywords */ + NULL, /* requirements */ + 192, (TEXT_SIZE + 4), + NULL, record_whole_select_font_face) +CAIRO_TEST (recordflip_whole_self_intersecting, + "Test strokes of self-intersecting paths", + "record, stroke, trap", /* keywords */ + NULL, /* requirements */ + 10, 20, + NULL, record_whole_self_intersecting) +CAIRO_TEST (recordflip_whole_text_transform, + "Test various applications of the font matrix", + "record, text, transform", /* keywords */ + NULL, /* requirements */ + TT_SIZE, TT_SIZE, + NULL, record_whole_text_transform) + + CAIRO_TEST (recordflip_paint, "Test replayed calls to cairo_paint", "paint,record", /* keywords */ diff -Nru cairo-1.13.0~20140204/test/record-mesh.c cairo-1.14.2/test/record-mesh.c --- cairo-1.13.0~20140204/test/record-mesh.c 2014-02-03 17:44:25.000000000 +0000 +++ cairo-1.14.2/test/record-mesh.c 2015-03-10 22:21:07.000000000 +0000 @@ -29,8 +29,8 @@ * Chris Wilson */ -#include #include "cairo-test.h" +#include #include #define PAT_WIDTH 170 Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a1-clip-fill-rule.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a1-clip-fill-rule.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a1-clip-fill-rule.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a1-clip-fill-rule.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a1-clip-fill-rule.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a1-clip-fill-rule.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a8-clear.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a8-clear.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a8-clear.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a8-clear.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/a8-clear.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/a8-clear.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/aliasing.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/aliasing.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/aliasing.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/aliasing.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/aliasing.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/aliasing.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/alpha-similar.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/alpha-similar.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/alpha-similar.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/alpha-similar.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/alpha-similar.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/alpha-similar.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/arc-direction.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/arc-direction.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/arc-direction.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/arc-direction.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/arc-direction.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/arc-direction.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-box.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-box.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-box.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-box.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-box.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-box.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-triangle.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-triangle.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-triangle.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-triangle.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-empty-triangle.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-empty-triangle.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-line.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-line.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-line.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-line.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-line.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-line.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-little-box.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-little-box.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-little-box.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-little-box.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-little-box.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-little-box.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-little-triangle.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-little-triangle.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/big-little-triangle.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/big-little-triangle.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bilevel-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bilevel-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bilevel-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bilevel-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bilevel-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bilevel-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bitmap-font.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bitmap-font.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bitmap-font.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bitmap-font.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bitmap-font.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bitmap-font.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-40410.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-40410.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-40410.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-40410.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-40410.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-40410.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-84115.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-84115.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-84115.xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-84115.xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-bo-ricotz.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-bo-ricotz.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-bo-ricotz.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-bo-ricotz.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-bo-ricotz.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-bo-ricotz.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-extents.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-extents.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-extents.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-extents.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-extents.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-extents.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-seams.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-seams.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-source-cu.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-source-cu.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-source-cu.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-source-cu.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-source-cu.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-source-cu.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/bug-spline.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/bug-spline.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-joins-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-joins-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-joins.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-joins.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-joins-curve.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-joins-curve.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-joins.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-joins.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-joins.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-joins.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-sub-paths.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-sub-paths.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-sub-paths.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-sub-paths.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-sub-paths.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-sub-paths.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/caps-tails-curve.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/caps-tails-curve.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clear.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clear.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clear.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clear.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clear-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clear-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clear-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clear-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clear-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clear-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-device-offset.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-device-offset.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-device-offset.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-device-offset.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-device-offset.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-device-offset.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-disjoint-hatching.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-disjoint-hatching.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-disjoint-hatching.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-disjoint-hatching.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-disjoint-hatching.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-disjoint-hatching.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-disjoint-quad.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-disjoint-quad.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-disjoint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-disjoint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-eo-unbounded.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-eo-unbounded.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-eo-unbounded.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-eo-unbounded.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-nz-unbounded.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-nz-unbounded.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-nz-unbounded.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-nz-unbounded.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-rule.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-rule.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-rule-pixel-aligned.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-rule-pixel-aligned.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-fill-rule.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-fill-rule.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-group-shapes-circles.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-group-shapes-circles.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-group-shapes-circles.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-group-shapes-circles.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-group-shapes-circles.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-group-shapes-circles.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-image.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-image.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-intersect.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-intersect.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-intersect.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-intersect.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-intersect.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-intersect.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-mixed-antialias.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-mixed-antialias.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-mixed-antialias.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-mixed-antialias.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-mixed-antialias.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-mixed-antialias.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-nesting.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-nesting.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-nesting.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-nesting.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-operator.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-operator.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-operator.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-operator.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clipped-group.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clipped-group.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clipped-group.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clipped-group.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clipped-group.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clipped-group.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-polygons.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-polygons.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-polygons.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-polygons.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-polygons.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-polygons.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-push-group.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-push-group.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-push-group.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-push-group.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-push-group.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-push-group.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-shape.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-shape.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-shape.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-shape.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-shape.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-shape.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-stroke-unbounded.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-stroke-unbounded.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-stroke-unbounded.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-stroke-unbounded.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-text.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-text.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-text.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-text.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-text.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-text.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-twice.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-twice.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-twice.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-twice.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-unbounded.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-unbounded.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-unbounded.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-unbounded.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-unbounded.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-unbounded.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/clip-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/clip-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/close-path.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/close-path.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/close-path.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/close-path.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/close-path.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/close-path.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/copy-path.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/copy-path.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/copy-path.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/copy-path.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/copy-path.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/copy-path.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-abutting.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-abutting.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-column-triangles.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-column-triangles.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-intersecting-triangles.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-intersecting-triangles.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-rhombus.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-rhombus.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-rhombus.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-rhombus.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-row-triangles.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-row-triangles.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/coverage-triangles.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/coverage-triangles.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/create-from-png.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/create-from-png.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/create-from-png.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/create-from-png.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/create-from-png.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/create-from-png.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/culled-glyphs.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/culled-glyphs.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/culled-glyphs.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/culled-glyphs.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/culled-glyphs.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/culled-glyphs.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-caps-joins.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-caps-joins.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-curve.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-curve.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-infinite-loop.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-infinite-loop.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-infinite-loop.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-infinite-loop.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-infinite-loop.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-infinite-loop.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-offset-negative.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-offset-negative.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-offset-negative.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-offset-negative.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-offset-negative.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-offset-negative.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-scale.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-scale.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-state.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-state.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-state.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-state.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-state.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-state.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-zero-length.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-zero-length.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-zero-length.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-zero-length.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/dash-zero-length.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/dash-zero-length.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-arc.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-arc.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-dash.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-dash.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-linear-gradient.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-linear-gradient.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-linear-gradient.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-linear-gradient.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-linear-gradient.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-linear-gradient.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-path.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-path.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-path.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-path.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-path.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-path.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-pen.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-pen.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-pen.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-pen.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/degenerate-pen.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/degenerate-pen.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset-positive.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset-positive.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset-positive.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset-positive.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset-positive.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset-positive.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/device-offset.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/device-offset.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/drunkard-tails.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/drunkard-tails.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/egl-surface-source.base.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/egl-surface-source.base.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/egl-surface-source.base.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/egl-surface-source.base.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/egl-surface-source.image16.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/egl-surface-source.image16.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/egl-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/egl-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend-solid.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend-solid.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extended-blend-solid.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extended-blend-solid.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extend-pad-border.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extend-pad-border.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extend-pad-border.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extend-pad-border.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/extend-pad-border.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/extend-pad-border.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fallback.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fallback.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fallback.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fallback.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha-pattern.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha-pattern.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha-pattern.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha-pattern.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha-pattern.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha-pattern.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha-add.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha-add.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha-add.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha-add.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-and-stroke.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-and-stroke.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-degenerate-sort-order.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-degenerate-sort-order.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-degenerate-sort-order.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-degenerate-sort-order.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-empty.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-empty.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-empty.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-empty.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-empty.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-empty.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill.image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill.image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-image.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-image.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill.image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill.image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-missed-stop.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-missed-stop.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-missed-stop.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-missed-stop.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-missed-stop.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-missed-stop.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-rule.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-rule.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-rule.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-rule.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/fill-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/fill-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/filter-bilinear-extents.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/filter-bilinear-extents.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/filter-bilinear-extents.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/filter-bilinear-extents.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/filter-bilinear-extents.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/filter-bilinear-extents.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/finer-grained-fallbacks.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/finer-grained-fallbacks.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/finer-grained-fallbacks.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/finer-grained-fallbacks.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/finer-grained-fallbacks.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/finer-grained-fallbacks.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/font-matrix-translation.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/font-matrix-translation.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/font-matrix-translation.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/font-matrix-translation.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/font-matrix-translation.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/font-matrix-translation.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-positioning.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-positioning.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-positioning.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-positioning.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-positioning.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-positioning.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-table.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-table.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-table.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-table.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-show-glyphs-table.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-show-glyphs-table.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-text-vertical-layout-type1.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-text-vertical-layout-type1.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-text-vertical-layout-type1.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-text-vertical-layout-type1.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ft-text-vertical-layout-type3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ft-text-vertical-layout-type3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gl-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gl-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gl-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gl-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gl-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gl-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/glyph-cache-pressure.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/glyph-cache-pressure.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/glyph-cache-pressure.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/glyph-cache-pressure.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/glyph-cache-pressure.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/glyph-cache-pressure.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-constant-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-constant-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-constant-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-constant-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-constant-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-constant-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/gradient-zero-stops.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/gradient-zero-stops.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/group-unaligned.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/group-unaligned.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/group-unaligned.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/group-unaligned.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/group-unaligned.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/group-unaligned.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/halo.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/halo.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/halo-transform.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/halo-transform.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/halo-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/halo-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/halo-transform.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/halo-transform.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/hatchings.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/hatchings.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/horizontal-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/horizontal-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/horizontal-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/horizontal-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/horizontal-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/horizontal-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/huge-linear.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/huge-linear.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/huge-linear.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/huge-linear.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/huge-linear.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/huge-linear.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/huge-radial.pdf.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/huge-radial.pdf.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/huge-radial.pdf.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/huge-radial.pdf.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/image-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/image-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/image-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/image-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/image-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/image-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/infinite-join.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/infinite-join.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/infinite-join.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/infinite-join.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/infinite-join.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/infinite-join.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/inverse-text.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/inverse-text.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/inverted-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/inverted-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/inverted-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/inverted-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-loop.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-loop.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-loop.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-loop.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-loop.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-loop.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-retrace.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-retrace.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-star.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-star.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-star.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-star.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/joins-star.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/joins-star.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/large-twin-antialias-mixed.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/large-twin-antialias-mixed.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/large-twin-antialias-mixed.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/large-twin-antialias-mixed.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/large-twin-antialias-mixed.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/large-twin-antialias-mixed.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-dashed-stroke.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-dashed-stroke.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-dashed-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-dashed-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-dashed-stroke.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-dashed-stroke.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-polygon.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-polygon.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-polygon.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-polygon.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/leaky-polygon.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/leaky-polygon.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-one-stop.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-one-stop.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-one-stop.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-one-stop.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-one-stop.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-one-stop.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-reflect.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-reflect.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-reflect.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-reflect.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-reflect.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-reflect.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-subset.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-subset.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-subset.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-subset.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/linear-gradient-subset.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/linear-gradient-subset.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-large-overlap-rotated.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-large-overlap-rotated.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-large-overlap-rotated.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-large-overlap-rotated.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-large-overlap-rotated.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-large-overlap-rotated.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-overlap-rotated.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-overlap-rotated.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-overlap-rotated.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-overlap-rotated.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-overlap-rotated.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-overlap-rotated.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-scale.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-scale.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-scale.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-scale.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-scale.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-scale.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-tolerance.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-tolerance.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-tolerance.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-tolerance.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/line-width-tolerance.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/line-width-tolerance.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/long-dashed-lines.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/long-dashed-lines.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/long-dashed-lines.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/long-dashed-lines.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/long-dashed-lines.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/long-dashed-lines.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-all-to-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-all-to-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-all-to-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-all-to-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-all-to-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-all-to-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-bit-to-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-bit-to-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-bit-to-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-bit-to-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/map-bit-to-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/map-bit-to-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-ctm.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-ctm.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-ctm.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-ctm.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-ctm.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-ctm.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-surface-ctm.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-surface-ctm.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-surface-ctm.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-surface-ctm.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-surface-ctm.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-surface-ctm.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-image.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-image.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-similar.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-similar.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-similar.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-similar.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-similar.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-similar.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/mask-transformed-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/mask-transformed-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/miter-precision.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/miter-precision.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/miter-precision.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/miter-precision.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/miter-precision.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/miter-precision.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/new-sub-path.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/new-sub-path.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/new-sub-path.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/new-sub-path.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/new-sub-path.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/new-sub-path.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/nil-surface.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/nil-surface.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/nil-surface.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/nil-surface.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/nil-surface.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/nil-surface.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/operator-clear.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/operator-clear.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/operator-clear.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/operator-clear.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/operator-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/operator-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/operator-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/operator-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-above-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-above-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-above-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-above-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-around-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-around-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-around-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-around-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-below-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-below-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-below-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-below-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-between-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-between-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/over-between-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/over-between-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-boxes.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-boxes.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-boxes.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-boxes.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-boxes.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-boxes.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-dash-caps.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-dash-caps.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-glyphs.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-glyphs.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-glyphs.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-glyphs.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/overlapping-glyphs.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/overlapping-glyphs.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/paint-with-alpha-clip-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/paint-with-alpha-clip-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/paint-with-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/paint-with-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-bottom.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-bottom.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-bottom.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-bottom.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-bottom.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-bottom.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-left.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-left.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-left.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-left.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-left.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-left.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-right.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-right.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-right.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-right.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-right.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-right.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-top.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-top.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-top.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-top.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/partial-clip-text-top.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/partial-clip-text-top.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pass-through.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pass-through.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pass-through.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pass-through.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pass-through.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pass-through.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-append.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-append.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-append.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-append.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-append.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-append.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-stroke-twice.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-stroke-twice.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-stroke-twice.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-stroke-twice.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/path-stroke-twice.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/path-stroke-twice.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pdf-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pdf-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pdf-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pdf-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pdf-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pdf-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.image16.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.image16.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.pdf.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.pdf.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.ps2.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.ps2.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.ps3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.ps3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.recording.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.recording.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.script.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.script.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.svg11.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.svg11.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.svg12.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.svg12.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-base.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-base.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-fallback.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-fallback.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-paginated.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-paginated.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-spans.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-spans.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.test-traps.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.test-traps.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xcb-fallback.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xcb-fallback.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xcb.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xcb.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xcb-render-0_0.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xcb-window.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xcb-window.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xcb-window&.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xcb-window&.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xlib-fallback.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xlib-fallback.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xlib-render-0_0.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xlib-render-0_0.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-best-95.xlib-window.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-best-95.xlib-window.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.image16.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.image16.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.pdf.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.pdf.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.ps2.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.ps2.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.ps3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.ps3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-bilinear-95.script.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-bilinear-95.script.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.image16.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.image16.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.pdf.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.pdf.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.ps2.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.ps2.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.ps3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.ps3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.svg11.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.svg11.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-fast-95.svg12.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-fast-95.svg12.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.image16.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.image16.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.pdf.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.pdf.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.ps2.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.ps2.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.ps3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.ps3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-good-95.script.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-good-95.script.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.image16.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.image16.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.pdf.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.pdf.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.ps2.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.ps2.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.ps3.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.ps3.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.svg11.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.svg11.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-downscale-nearest-95.svg12.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-downscale-nearest-95.svg12.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-rotate.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-rotate.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-rotate.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-rotate.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pixman-rotate.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pixman-rotate.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ps-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ps-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ps-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ps-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/ps-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/ps-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-same-source.base.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-same-source.base.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-same-source.base.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-same-source.base.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-same-source.image16.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-same-source.image16.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-same-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-same-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-show-text.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-show-text.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-show-text.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-show-text.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/pthread-show-text.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/pthread-show-text.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/push-group.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/push-group.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/push-group-color.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/push-group-color.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/push-group-color.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/push-group-color.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/push-group-color.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/push-group-color.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/push-group.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/push-group.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/quartz-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/quartz-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/quartz-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/quartz-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/quartz-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/quartz-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/radial-gradient-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/radial-gradient-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/radial-gradient-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/radial-gradient-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/radial-gradient-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/radial-gradient-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-eo.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-eo.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-eo.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-eo.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-eo.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-eo.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-nz.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-nz.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-nz.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-nz.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-curves-nz.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-curves-nz.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-eo.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-eo.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-eo.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-eo.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-eo.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-eo.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-nonzero.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-nonzero.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-nonzero.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-nonzero.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/random-intersections-nonzero.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/random-intersections-nonzero.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-solid-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-solid-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-select-font-face.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-select-font-face.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-select-font-face.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-select-font-face.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-self-intersecting.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-self-intersecting.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-self-intersecting.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-self-intersecting.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-self-intersecting.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-self-intersecting.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record1414x-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record1414x-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-solid-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-solid-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-select-font-face.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-select-font-face.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-select-font-face.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-select-font-face.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-self-intersecting.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-self-intersecting.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-self-intersecting.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-self-intersecting.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-self-intersecting.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-self-intersecting.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record2x-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record2x-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha-solid-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha-solid-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-select-font-face.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-select-font-face.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-select-font-face.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-select-font-face.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-self-intersecting.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-self-intersecting.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record90-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record90-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-paint-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-paint-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-paint-alpha-solid-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-paint-alpha-solid-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-fill-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-fill-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-paint-alpha.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-paint-alpha.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-paint-alpha-solid-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-paint-alpha-solid-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-self-intersecting.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-self-intersecting.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recordflip-whole-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recordflip-whole-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-none.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-none.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-none.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-none.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-pad.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-pad.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-pad.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-pad.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-reflect.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-reflect.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-reflect.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-reflect.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-repeat.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-repeat.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-extend-repeat.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-extend-repeat.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-over.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-over.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-over.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-over.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/recording-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/recording-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-paint-alpha-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-paint-alpha-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-paint-alpha-clip-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-paint-alpha-clip-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-paint-alpha-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-paint-alpha-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-paint-alpha-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-paint-alpha-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-select-font-face.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-select-font-face.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-select-font-face.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-select-font-face.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/record-text-transform.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/record-text-transform.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rectilinear-miter-limit.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rectilinear-miter-limit.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rectilinear-miter-limit.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rectilinear-miter-limit.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rectilinear-miter-limit.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rectilinear-miter-limit.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rel-path.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rel-path.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rel-path.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rel-path.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rel-path.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rel-path.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotate-clip-image-surface-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotate-clip-image-surface-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotate-clip-image-surface-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotate-clip-image-surface-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotate-clip.surface-paint.image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotate-clip.surface-paint.image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotate-clip.surface-paint.image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotate-clip.surface-paint.image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotated-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotated-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotated-clip.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotated-clip.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rotated-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rotated-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rounded-rectangle-fill.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rounded-rectangle-fill.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rounded-rectangle-fill.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rounded-rectangle-fill.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rounded-rectangle-fill.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rounded-rectangle-fill.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/rounded-rectangle-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/rounded-rectangle-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset.image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset.image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-image.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-image.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset.image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset.image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-similar.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-similar.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-similar.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-similar.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-similar.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-similar.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-offset-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-offset-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-source-surface-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-source-surface-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-source-surface-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-source-surface-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/scale-source-surface-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/scale-source-surface-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/select-font-face.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/select-font-face.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/select-font-face.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/select-font-face.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/select-font-face.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/select-font-face.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/self-copy.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/self-copy.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/self-copy.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/self-copy.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/self-copy.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/self-copy.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/set-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/set-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/set-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/set-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/set-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/set-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-general-convex.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-general-convex.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-general-convex.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-general-convex.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-general-convex.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-general-convex.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-sierpinski.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-sierpinski.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-sierpinski.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-sierpinski.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/shape-sierpinski.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/shape-sierpinski.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-glyphs-advance.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-glyphs-advance.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-glyphs-advance.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-glyphs-advance.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-glyphs-advance.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-glyphs-advance.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-text-current-point.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-text-current-point.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-text-current-point.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-text-current-point.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/show-text-current-point.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/show-text-current-point.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/simple-edge.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/simple-edge.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/simple-edge.xfail.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/simple-edge.xfail.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/skew-extreme.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/skew-extreme.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/skew-extreme.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/skew-extreme.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/skew-extreme.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/skew-extreme.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-fill.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-fill.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-fill.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-fill.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-fill.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-fill.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-image-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-image-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-image-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-image-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-image-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-image-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-mask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-stroke.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-stroke.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-stroke.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-stroke.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-text.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-text.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-text.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-text.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/smask-text.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/smask-text.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/source-surface-scale-paint.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/source-surface-scale-paint.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/source-surface-scale-paint.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/source-surface-scale-paint.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/source-surface-scale-paint.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/source-surface-scale-paint.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/spline-decomposition.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/spline-decomposition.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/spline-decomposition.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/spline-decomposition.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/spline-decomposition.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/spline-decomposition.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stride-12-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stride-12-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stride-12-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stride-12-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stride-12-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stride-12-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-clipped.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-clipped.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke.image.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke.image.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-image.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-image.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke.image.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke.image.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-pattern.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-pattern.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-pattern.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-pattern.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-pattern.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-pattern.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-xlib.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-xlib.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-xlib.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-xlib.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/stroke-xlib.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/stroke-xlib.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-outside-target.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-outside-target.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-outside-target.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-outside-target.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-outside-target.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-outside-target.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-scale.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-scale.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-scale.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-scale.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/subsurface-scale.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/subsurface-scale.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-operator.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-operator.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-operator.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-operator.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-down.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-down.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-down.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-down.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-down.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-down.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-up.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-up.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-up.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-up.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/surface-pattern-scale-up.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/surface-pattern-scale-up.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/svg-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/svg-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/svg-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/svg-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/svg-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/svg-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-gray.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-gray.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-gray.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-gray.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-gray.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-gray.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-bgr.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-bgr.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-bgr.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-bgr.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-rgb.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-rgb.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-rgb.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-rgb.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vbgr.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vbgr.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vrgb.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vrgb.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-glyph-range.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-glyph-range.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-glyph-range.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-glyph-range.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-glyph-range.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-glyph-range.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-pattern.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-pattern.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-pattern.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-pattern.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-pattern.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-pattern.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/text-rotate.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/text-rotate.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/tiger.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/tiger.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/tiger.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/tiger.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/tiger.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/tiger.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/tighten-bounds.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/tighten-bounds.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/tighten-bounds.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/tighten-bounds.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/transforms.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/transforms.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/transforms.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/transforms.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/transforms.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/transforms.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/trap-clip.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/trap-clip.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/trap-clip.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/trap-clip.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-gray.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-gray.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-mixed.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-mixed.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-mixed.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-mixed.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-mixed.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-mixed.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-none.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-none.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-none.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-none.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-none.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-none.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin-antialias-subpixel.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin-antialias-subpixel.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/twin.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/twin.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/unbounded-operator.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/unbounded-operator.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/unbounded-operator.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/unbounded-operator.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/unclosed-strokes.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/unclosed-strokes.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/unclosed-strokes.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/unclosed-strokes.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/unclosed-strokes.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/unclosed-strokes.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-proxy.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-proxy.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-proxy.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-proxy.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-proxy.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-proxy.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-rescale.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-rescale.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-rescale.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-rescale.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/user-font-rescale.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/user-font-rescale.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-fill.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-fill.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-fill.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-fill.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-fill.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-fill.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-stroke.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-stroke.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-stroke.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-stroke.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/world-map-stroke.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/world-map-stroke.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xcb-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xcb-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xcb-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xcb-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xcb-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xcb-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xlib-surface-source.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xlib-surface-source.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xlib-surface-source.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xlib-surface-source.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/xlib-surface-source.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/xlib-surface-source.rgb24.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/zero-mask.argb32.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/zero-mask.argb32.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/zero-mask.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/zero-mask.ref.png differ Binary files /tmp/aiD4eDFeMl/cairo-1.13.0~20140204/test/reference/zero-mask.rgb24.ref.png and /tmp/SKBLvw0RFA/cairo-1.14.2/test/reference/zero-mask.rgb24.ref.png differ diff -Nru cairo-1.13.0~20140204/test/reflected-stroke.c cairo-1.14.2/test/reflected-stroke.c --- cairo-1.13.0~20140204/test/reflected-stroke.c 2014-02-03 17:44:27.000000000 +0000 +++ cairo-1.14.2/test/reflected-stroke.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2008 Chris Wilson + * Copyright © 2008 Chris Wilson * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without diff -Nru cairo-1.13.0~20140204/test/select-font-no-show-text.c cairo-1.14.2/test/select-font-no-show-text.c --- cairo-1.13.0~20140204/test/select-font-no-show-text.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/select-font-no-show-text.c 2015-03-10 22:21:07.000000000 +0000 @@ -38,8 +38,8 @@ * Fixed... just a stray free(). */ -#include #include "cairo-test.h" +#include static cairo_test_status_t draw (cairo_t *cr, int width, int height) diff -Nru cairo-1.13.0~20140204/test/self-copy.c cairo-1.14.2/test/self-copy.c --- cairo-1.13.0~20140204/test/self-copy.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/self-copy.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Owen Taylor */ -#include #include "cairo-test.h" +#include #include #define SIZE 40 diff -Nru cairo-1.13.0~20140204/test/simple.c cairo-1.14.2/test/simple.c --- cairo-1.13.0~20140204/test/simple.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.14.2/test/simple.c 2015-03-10 22:21:07.000000000 +0000 @@ -0,0 +1,347 @@ +/* + * Copyright 2014 Intel Corporation + * + * 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: Chris Wilson + */ + +#include "cairo-test.h" + +/* Test the fidelity of the rasterisation, because Cairo is my favourite + * driver test suite. + */ + +#define GENERATE_REFERENCE 0 + +#include "../src/cairo-fixed-type-private.h" + +#if GENERATE_REFERENCE +#include +struct coverage { + int width, height; + struct { + int uncovered_area; + int covered_height; + } cells[0]; +}; + +static int pfloor (int v) +{ + return v >> CAIRO_FIXED_FRAC_BITS; +} + +static int pfrac (int v) +{ + return v & ((1 << CAIRO_FIXED_FRAC_BITS) - 1); +} + +static void add_edge (struct coverage *coverage, + int x1, int y1, int x2, int y2, + int sign) +{ + int dx, dy; + int dxdy_quo, dxdy_rem; + int xq, xr; + int y, t; + + if (y2 < y1) { + t = y1; + y1 = y2; + y2 = t; + + t = x1; + x1 = x2; + x2 = t; + + sign = -sign; + } + + dx = x2 - x1; + dy = y2 - y1; + if (dy == 0) + return; + + dy *= 2; + + dxdy_quo = 2*dx / dy; + dxdy_rem = 2*dx % dy; + + xq = x1 + dxdy_quo / 2; + xr = dxdy_rem / 2; + if (xr < 0) { + xq--; + xr += dy; + } + + for (y = MAX(0, y1); y < MIN(y2, 256*coverage->height); y++) { + int x = xq + (xr >= dy/2); + + if (x < 256*coverage->width) { + int i = pfloor (y) * coverage->width; + if (x > 0) { + i += pfloor (x); + coverage->cells[i].uncovered_area += sign * pfrac(x); + } + coverage->cells[i].covered_height += sign; + } + + xq += dxdy_quo; + xr += dxdy_rem; + if (xr < 0) { + xq--; + xr += dy; + } else if (xr >= dy) { + xq++; + xr -= dy; + } + } +} + +static struct coverage * +coverage_create (int width, int height) +{ + int size; + struct coverage *c; + + size = sizeof (struct coverage); + size += width * height * sizeof (int) * 2; + + c = malloc (size); + if (c == NULL) + return c; + + memset(c, 0, size); + c->width = width; + c->height = height; + + return c; +} + +static cairo_surface_t * +coverage_to_alpha (struct coverage *c) +{ + cairo_surface_t *image; + uint8_t *data; + int x, y, stride; + + image = cairo_image_surface_create (CAIRO_FORMAT_A8, c->width, c->height); + + data = cairo_image_surface_get_data (image); + stride = cairo_image_surface_get_stride (image); + + cairo_surface_flush (image); + for (y = 0; y < c->height; y++) { + uint8_t *row = data + y *stride; + int cover = 0; + for (x = 0; x < c->width; x++) { + int v = y*c->width + x; + + cover += c->cells[v].covered_height * 256; + v = cover - c->cells[v].uncovered_area; + + v /= 256; + if (v < 0) + v = -v; + row[x] = v - (v >> 8); + } + } + cairo_surface_mark_dirty (image); + + free (c); + return image; +} +#endif + +static cairo_test_status_t +edge (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + cairo_paint (cr); + + cairo_set_operator (cr, CAIRO_OPERATOR_ADD); + +#if GENERATE_REFERENCE + { + struct coverage *c; + cairo_surface_t *mask; + + cairo_set_source_rgb (cr, 1, 0, 0); + + c = coverage_create (width, height); + add_edge (c, 128*256, 129*256, 129*256, 1*256, 1); + add_edge (c, 128*256, 129*256, 128*256, 131*256, -1); + add_edge (c, 128*256, 131*256, 129*256, 259*256, -1); + add_edge (c, 130*256, 129*256, 129*256, 1*256, -1); + add_edge (c, 130*256, 129*256, 130*256, 131*256, 1); + add_edge (c, 130*256, 131*256, 129*256, 259*256, 1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, 128*256/2, 129*256/2, 129*256/2, 1*256/2, 1); + add_edge (c, 128*256/2, 129*256/2, 128*256/2, 131*256/2, -1); + add_edge (c, 128*256/2, 131*256/2, 129*256/2, 259*256/2, -1); + add_edge (c, 130*256/2, 129*256/2, 129*256/2, 1*256/2, -1); + add_edge (c, 130*256/2, 129*256/2, 130*256/2, 131*256/2, 1); + add_edge (c, 130*256/2, 131*256/2, 129*256/2, 259*256/2, 1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, (192-2)*256, 129*256, 192*256, 1*256, 1); + add_edge (c, (192-2)*256, 129*256, (192-2)*256, 131*256, -1); + add_edge (c, (192-2)*256, 131*256, 192*256, 259*256, -1); + add_edge (c, (192+2)*256, 129*256, 192*256, 1*256, -1); + add_edge (c, (192+2)*256, 129*256, (192+2)*256, 131*256, 1); + add_edge (c, (192+2)*256, 131*256, 192*256, 259*256, 1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, (256-4)*256, 129*256, 256*256, 1*256, 1); + add_edge (c, (256-4)*256, 129*256, (256-4)*256, 131*256, -1); + add_edge (c, (256-4)*256, 131*256, 256*256, 259*256, -1); + add_edge (c, (256+4)*256, 129*256, 256*256, 1*256, -1); + add_edge (c, (256+4)*256, 129*256, (256+4)*256, 131*256, 1); + add_edge (c, (256+4)*256, 131*256, 256*256, 259*256, 1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + cairo_set_source_rgb (cr, 0, 1, 0); + + c = coverage_create (width, height); + add_edge (c, 1*256, 129*256, 129*256, 128*256, 1); + add_edge (c, 131*256, 128*256, 259*256, 129*256, 1); + add_edge (c, 1*256, 129*256, 129*256, 130*256, -1); + add_edge (c, 131*256, 130*256, 259*256, 129*256, -1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, 1*256/2, 129*256/2, 129*256/2, 128*256/2, 1); + add_edge (c, 131*256/2, 128*256/2, 259*256/2, 129*256/2, 1); + add_edge (c, 1*256/2, 129*256/2, 129*256/2, 130*256/2, -1); + add_edge (c, 131*256/2, 130*256/2, 259*256/2, 129*256/2, -1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, 1*256, (192-0)*256, 129*256, (192-2)*256, 1); + add_edge (c, 131*256, (192-2)*256, 259*256, (192-0)*256, 1); + add_edge (c, 1*256, (192+0)*256, 129*256, (192+2)*256, -1); + add_edge (c, 131*256, (192+2)*256, 259*256, (192+0)*256, -1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + + c = coverage_create (width, height); + add_edge (c, 1*256, (256-0)*256, 129*256, (256-4)*256, 1); + add_edge (c, 131*256, (256-4)*256, 259*256, (256-0)*256, 1); + add_edge (c, 1*256, (256+0)*256, 129*256, (256+4)*256, -1); + add_edge (c, 131*256, (256+4)*256, 259*256, (256+0)*256, -1); + mask = coverage_to_alpha (c); + cairo_mask_surface (cr, mask, 0, 0); + cairo_surface_destroy (mask); + } +#else + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_move_to (cr, 129, 1); + cairo_line_to (cr, 128, 129); + cairo_line_to (cr, 128, 131); + cairo_line_to (cr, 129, 259); + cairo_line_to (cr, 130, 131); + cairo_line_to (cr, 130, 129); + cairo_fill (cr); + + cairo_move_to (cr, 129/2., 1/2.); + cairo_line_to (cr, 128/2., 129/2.); + cairo_line_to (cr, 128/2., 131/2.); + cairo_line_to (cr, 129/2., 259/2.); + cairo_line_to (cr, 130/2., 131/2.); + cairo_line_to (cr, 130/2., 129/2.); + cairo_fill (cr); + + cairo_move_to (cr, 192, 1); + cairo_line_to (cr, 192-2, 129); + cairo_line_to (cr, 192-2, 131); + cairo_line_to (cr, 192, 259); + cairo_line_to (cr, 192+2, 131); + cairo_line_to (cr, 192+2, 129); + cairo_fill (cr); + + cairo_move_to (cr, 256, 1); + cairo_line_to (cr, 256-4, 129); + cairo_line_to (cr, 256-4, 131); + cairo_line_to (cr, 256, 259); + cairo_line_to (cr, 256+4, 131); + cairo_line_to (cr, 256+4, 129); + cairo_fill (cr); + + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_move_to (cr, 1, 129); + cairo_line_to (cr, 129, 128); + cairo_line_to (cr, 131, 128); + cairo_line_to (cr, 259, 129); + cairo_line_to (cr, 131, 130); + cairo_line_to (cr, 129, 130); + cairo_fill (cr); + + cairo_move_to (cr, 1/2., 129/2.); + cairo_line_to (cr, 129/2., 128/2.); + cairo_line_to (cr, 131/2., 128/2.); + cairo_line_to (cr, 259/2., 129/2.); + cairo_line_to (cr, 131/2., 130/2.); + cairo_line_to (cr, 129/2., 130/2.); + cairo_fill (cr); + + cairo_move_to (cr, 1, 192); + cairo_line_to (cr, 129, 192-2); + cairo_line_to (cr, 131, 192-2); + cairo_line_to (cr, 259, 192); + cairo_line_to (cr, 131, 192+2); + cairo_line_to (cr, 129, 192+2); + cairo_fill (cr); + + cairo_move_to (cr, 1, 256); + cairo_line_to (cr, 129, 256-4); + cairo_line_to (cr, 131, 256-4); + cairo_line_to (cr, 259, 256); + cairo_line_to (cr, 131, 256+4); + cairo_line_to (cr, 129, 256+4); + cairo_fill (cr); +#endif + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (simple_edge, + "Check the fidelity of the rasterisation.", + NULL, /* keywords */ + "target=raster", /* requirements */ + 260, 260, + NULL, edge) diff -Nru cairo-1.13.0~20140204/test/source-clip.c cairo-1.14.2/test/source-clip.c --- cairo-1.13.0~20140204/test/source-clip.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/source-clip.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Owen Taylor */ -#include #include "cairo-test.h" +#include #include #define SIZE 12 diff -Nru cairo-1.13.0~20140204/test/source-clip-scale.c cairo-1.14.2/test/source-clip-scale.c --- cairo-1.13.0~20140204/test/source-clip-scale.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/source-clip-scale.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Vladimir Vukicevic */ -#include #include "cairo-test.h" +#include #include #define SIZE 12 diff -Nru cairo-1.13.0~20140204/test/stride-12-image.c cairo-1.14.2/test/stride-12-image.c --- cairo-1.13.0~20140204/test/stride-12-image.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/stride-12-image.c 2015-03-10 22:21:07.000000000 +0000 @@ -41,7 +41,7 @@ png = cairo_test_create_surface_from_png (ctx, png_filename); stride = cairo_format_stride_for_width (format, width) + 12; - data = calloc (stride, height); + data = xcalloc (stride, height); src = cairo_image_surface_create_for_data (data, format, width, height, stride); diff -Nru cairo-1.13.0~20140204/test/surface-pattern.c cairo-1.14.2/test/surface-pattern.c --- cairo-1.13.0~20140204/test/surface-pattern.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/surface-pattern.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Behdad Esfahbod */ -#include #include "cairo-test.h" +#include #include #define SIZE 140 diff -Nru cairo-1.13.0~20140204/test/surface-pattern-scale-down.c cairo-1.14.2/test/surface-pattern-scale-down.c --- cairo-1.13.0~20140204/test/surface-pattern-scale-down.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/surface-pattern-scale-down.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Behdad Esfahbod */ -#include #include "cairo-test.h" +#include #include #define SIZE 200 diff -Nru cairo-1.13.0~20140204/test/surface-pattern-scale-up.c cairo-1.14.2/test/surface-pattern-scale-up.c --- cairo-1.13.0~20140204/test/surface-pattern-scale-up.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/surface-pattern-scale-up.c 2015-03-10 22:21:07.000000000 +0000 @@ -27,8 +27,8 @@ /* Exhibits nasty behaviour with GS due as their /Interpolate implementation * does not function for rotated images. */ -#include #include "cairo-test.h" +#include #include #define SIZE 100 diff -Nru cairo-1.13.0~20140204/test/svg-clip.c cairo-1.14.2/test/svg-clip.c --- cairo-1.13.0~20140204/test/svg-clip.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/svg-clip.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,10 +23,11 @@ * Author: Kristian Høgsberg */ +#include "cairo-test.h" + #include #include -#include "cairo-test.h" /* Test SVG clipping */ diff -Nru cairo-1.13.0~20140204/test/svg-surface.c cairo-1.14.2/test/svg-surface.c --- cairo-1.13.0~20140204/test/svg-surface.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/svg-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,10 +23,11 @@ * Author: Carl D. Worth */ +#include "cairo-test.h" + #include #include -#include "cairo-test.h" /* Pretty boring test just to make sure things aren't crashing --- * no verification that we're getting good results yet. diff -Nru cairo-1.13.0~20140204/test/testtable.js cairo-1.14.2/test/testtable.js --- cairo-1.13.0~20140204/test/testtable.js 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/testtable.js 2015-03-10 22:21:07.000000000 +0000 @@ -21,7 +21,7 @@ }; resultField = "result"; -rowFields = [ "test", "offset", "similar" ]; +rowFields = [ "test", "offset", "scale", "similar" ]; colFields = [ "target", "format" ]; allFields = [ resultField ].concat (rowFields, colFields); diff -Nru cairo-1.13.0~20140204/test/tiger.c cairo-1.14.2/test/tiger.c --- cairo-1.13.0~20140204/test/tiger.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/tiger.c 2015-03-10 22:21:07.000000000 +0000 @@ -37,7 +37,7 @@ cairo_translate (cr, width/2, height/2); cairo_scale (cr, .85, .85); - for (i = 0; i < sizeof (tiger_commands)/sizeof(tiger_commands[0]);i++) { + for (i = 0; i < ARRAY_LENGTH(tiger_commands); i++) { const struct command *cmd = &tiger_commands[i]; switch (cmd->type) { case 'm': diff -Nru cairo-1.13.0~20140204/test/tighten-bounds.c cairo-1.14.2/test/tighten-bounds.c --- cairo-1.13.0~20140204/test/tighten-bounds.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/tighten-bounds.c 2015-03-10 22:21:07.000000000 +0000 @@ -72,7 +72,7 @@ static void draw_idx (cairo_t *cr, int i, int j, int type) { - cairo_bool_t little_path = type & (1 << 0); + cairo_bool_t little_path; cairo_bool_t empty_clip; cairo_bool_t little_clip; diff -Nru cairo-1.13.0~20140204/test/trap-clip.c cairo-1.14.2/test/trap-clip.c --- cairo-1.13.0~20140204/test/trap-clip.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/trap-clip.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,8 +23,8 @@ * Author: Kristian Høgsberg */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/unbounded-operator.c cairo-1.14.2/test/unbounded-operator.c --- cairo-1.13.0~20140204/test/unbounded-operator.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/unbounded-operator.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Owen Taylor */ -#include #include "cairo-test.h" +#include #include #define WIDTH 16 diff -Nru cairo-1.13.0~20140204/test/user-font.c cairo-1.14.2/test/user-font.c --- cairo-1.13.0~20140204/test/user-font.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/user-font.c 2015-03-10 22:21:07.000000000 +0000 @@ -25,11 +25,11 @@ * Behdad Esfahbod */ +#include "cairo-test.h" + #include #include -#include "cairo-test.h" - /*#define ROTATED 1*/ #define BORDER 10 diff -Nru cairo-1.13.0~20140204/test/user-font-mask.c cairo-1.14.2/test/user-font-mask.c --- cairo-1.13.0~20140204/test/user-font-mask.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/user-font-mask.c 2015-03-10 22:21:07.000000000 +0000 @@ -26,11 +26,11 @@ * Adrian Johnson */ +#include "cairo-test.h" + #include #include -#include "cairo-test.h" - /*#define ROTATED 1*/ #define BORDER 10 diff -Nru cairo-1.13.0~20140204/test/user-font-proxy.c cairo-1.14.2/test/user-font-proxy.c --- cairo-1.13.0~20140204/test/user-font-proxy.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/user-font-proxy.c 2015-03-10 22:21:07.000000000 +0000 @@ -25,11 +25,11 @@ * Behdad Esfahbod */ +#include "cairo-test.h" + #include #include -#include "cairo-test.h" - /*#define ROTATED 1*/ #define BORDER 10 diff -Nru cairo-1.13.0~20140204/test/user-font-rescale.c cairo-1.14.2/test/user-font-rescale.c --- cairo-1.13.0~20140204/test/user-font-rescale.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/user-font-rescale.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright 2008 Jeff Muizelaar + * Copyright © 2008 Jeff Muizelaar * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without @@ -22,7 +22,7 @@ * * Contributor(s): * Jeff Muizelaar - * Kristian Hgsberg + * Kristian Høgsberg * Behdad Esfahbod */ diff -Nru cairo-1.13.0~20140204/test/xcb-snapshot-assert.c cairo-1.14.2/test/xcb-snapshot-assert.c --- cairo-1.13.0~20140204/test/xcb-snapshot-assert.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/xcb-snapshot-assert.c 2015-03-10 22:21:07.000000000 +0000 @@ -24,8 +24,8 @@ * Author: Uli Schlachter */ -#include "cairo.h" #include "cairo-test.h" +#include "cairo.h" static cairo_surface_t * create_image (int width, int height) diff -Nru cairo-1.13.0~20140204/test/xlib-expose-event.c cairo-1.14.2/test/xlib-expose-event.c --- cairo-1.13.0~20140204/test/xlib-expose-event.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/xlib-expose-event.c 2015-03-10 22:21:07.000000000 +0000 @@ -31,12 +31,12 @@ * made the same mistake again, it is worth adding a regression test... */ +#include "cairo-test.h" #include #include #include "cairo.h" -#include "cairo-test.h" #include "buffer-diff.h" diff -Nru cairo-1.13.0~20140204/test/xlib-surface.c cairo-1.14.2/test/xlib-surface.c --- cairo-1.13.0~20140204/test/xlib-surface.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/test/xlib-surface.c 2015-03-10 22:21:07.000000000 +0000 @@ -23,12 +23,13 @@ * Author: Carl D. Worth */ +#include "cairo-test.h" + #include #include #include "cairo.h" #include "cairo-xlib.h" -#include "cairo-test.h" #include "cairo-boilerplate-xlib.h" diff -Nru cairo-1.13.0~20140204/util/cairo-fdr/Makefile.in cairo-1.14.2/util/cairo-fdr/Makefile.in --- cairo-1.13.0~20140204/util/cairo-fdr/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/util/cairo-fdr/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -266,6 +266,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-gobject/Makefile.in cairo-1.14.2/util/cairo-gobject/Makefile.in --- cairo-1.13.0~20140204/util/cairo-gobject/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/util/cairo-gobject/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -273,6 +273,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-missing/Makefile.in cairo-1.14.2/util/cairo-missing/Makefile.in --- cairo-1.13.0~20140204/util/cairo-missing/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/util/cairo-missing/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -238,6 +238,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-script/cairo-script-file.c cairo-1.14.2/util/cairo-script/cairo-script-file.c --- cairo-1.13.0~20140204/util/cairo-script/cairo-script-file.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/cairo-script/cairo-script-file.c 2015-03-10 22:21:07.000000000 +0000 @@ -1063,7 +1063,6 @@ unsigned int allocated; csi_status_t status; - len = 0; allocated = 16384; bytes = _csi_alloc (ctx, allocated); if (bytes == NULL) diff -Nru cairo-1.13.0~20140204/util/cairo-script/cairo-script-operators.c cairo-1.14.2/util/cairo-script/cairo-script-operators.c --- cairo-1.13.0~20140204/util/cairo-script/cairo-script-operators.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/cairo-script/cairo-script-operators.c 2015-03-10 22:21:07.000000000 +0000 @@ -1946,6 +1946,18 @@ } pattern = FcNameParse (bytes); + if (!pattern) + { + /* Fontconfig's representation of charset changed mid 2014; + * We used to record charset before that. Remove everything + * after charset if that's present, and try again. */ + char *s = strstr ((char *) bytes, ":charset="); + if (s) + { + *s = '\0'; + pattern = FcNameParse (bytes); + } + } if (bytes != tmpl.bytes) _csi_free (ctx, bytes); diff -Nru cairo-1.13.0~20140204/util/cairo-script/csi-trace.c cairo-1.14.2/util/cairo-script/csi-trace.c --- cairo-1.13.0~20140204/util/cairo-script/csi-trace.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/cairo-script/csi-trace.c 2015-03-10 22:21:07.000000000 +0000 @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -22,11 +23,18 @@ .surface_create = _script_surface_create, }; int i; + char buf[4096]; csi = cairo_script_interpreter_create (); for (i = 1; i < argc; i++) { - char buf[4096]; + if (strcmp (argv[i], "--version")) { + printf ("%s: version %s\n", argv[0], __DATE__); + exit (0); + } else if (strcmp (argv[i], "--help")) { + printf ("usage: %s < in > out\n", argv[0]); + exit (0); + } snprintf (buf, sizeof (buf), "%s.trace", basename (argv[i])); cairo_device_destroy (hooks.closure); diff -Nru cairo-1.13.0~20140204/util/cairo-script/examples/Makefile.in cairo-1.14.2/util/cairo-script/examples/Makefile.in --- cairo-1.13.0~20140204/util/cairo-script/examples/Makefile.in 2014-02-04 09:47:00.000000000 +0000 +++ cairo-1.14.2/util/cairo-script/examples/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -185,6 +185,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-script/Makefile.in cairo-1.14.2/util/cairo-script/Makefile.in --- cairo-1.13.0~20140204/util/cairo-script/Makefile.in 2014-02-04 09:47:00.000000000 +0000 +++ cairo-1.14.2/util/cairo-script/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -354,6 +354,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-sphinx/Makefile.in cairo-1.14.2/util/cairo-sphinx/Makefile.in --- cairo-1.13.0~20140204/util/cairo-sphinx/Makefile.in 2014-02-04 09:47:00.000000000 +0000 +++ cairo-1.14.2/util/cairo-sphinx/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -276,6 +276,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-sphinx/sphinx.c cairo-1.14.2/util/cairo-sphinx/sphinx.c --- cairo-1.13.0~20140204/util/cairo-sphinx/sphinx.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/cairo-sphinx/sphinx.c 2015-03-10 22:21:07.000000000 +0000 @@ -1,3 +1,11 @@ +/* + * The intention for sphinx is for detection of rendering errors inside + * applications by simultaneously rendering on to the target device and on + * an image surface and comparing the two. If it found a discrepancy, it + * would then dump the trace that reproduces the error. (Then apply + * delta-debugging to reduce that down to a minimal trace.) + */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -27,6 +35,10 @@ # error "cairo-sphinx needs real pthreads" #endif +#ifndef MAP_NORESERVE +#define MAP_NORESERVE 0 +#endif + #define DATA_SIZE (256 << 20) #define SHM_PATH_XXX "/shmem-cairo-sphinx" diff -Nru cairo-1.13.0~20140204/util/cairo-trace/Makefile.in cairo-1.14.2/util/cairo-trace/Makefile.in --- cairo-1.13.0~20140204/util/cairo-trace/Makefile.in 2014-02-04 09:47:00.000000000 +0000 +++ cairo-1.14.2/util/cairo-trace/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -283,6 +283,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/cairo-trace/trace.c cairo-1.14.2/util/cairo-trace/trace.c --- cairo-1.13.0~20140204/util/cairo-trace/trace.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/cairo-trace/trace.c 2015-03-10 22:21:07.000000000 +0000 @@ -127,8 +127,9 @@ (*name##_real) (args); \ }) -#define ARRAY_SIZE(a) (sizeof (a) / sizeof (a[0])) -#define ARRAY_LENGTH(a) ((int) ARRAY_SIZE(a)) +#ifndef ARRAY_LENGTH +#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) +#endif #if SIZEOF_VOID_P == 4 #define PTR_SHIFT 2 @@ -280,7 +281,7 @@ if (b->count < sizeof (b->map) * CHAR_BIT) { unsigned int n, m, bit; - for (n = 0; n < ARRAY_SIZE (b->map); n++) { + for (n = 0; n < ARRAY_LENGTH (b->map); n++) { if (b->map[n] == (unsigned int) -1) continue; @@ -3737,8 +3738,7 @@ else _trace_printf ("%d index ", current_stack_depth - other_obj->operand - 1); - _trace_printf ("s%ld //%s %d %d similar-image %% s%ld\n", - _get_surface_id (other), + _trace_printf ("//%s %d %d similar-image %% s%ld\n", _format_to_string (format), width, height, new_obj->token); @@ -4330,13 +4330,24 @@ obj = _get_object (FONT_FACE, ret); if (obj->unknown) { - FcChar8 *parsed; + FcPattern *copy; + FcChar8 *unparsed; + + copy = DLCALL (FcPatternDuplicate, pattern); + if (copy) + { + DLCALL (FcPatternDel, copy, FC_LANG); + DLCALL (FcPatternDel, copy, FC_CHARSET); + DLCALL (FcPatternDel, copy, FC_CAPABILITY); + } + else + copy = pattern; - parsed = DLCALL (FcNameUnparse, pattern); + unparsed = DLCALL (FcNameUnparse, copy); _trace_printf ("dict\n" " /type 42 set\n" " /pattern "); - _emit_string_literal ((char *) parsed, -1); + _emit_string_literal ((char *) unparsed, -1); _trace_printf (" set\n" " font %% f%ld\n", font_face_id); @@ -4344,7 +4355,9 @@ _push_operand (FONT_FACE, ret); dump_stack(__func__); - free (parsed); + if (copy != pattern) + DLCALL (FcPatternDestroy, copy); + free (unparsed); } _write_unlock (); } diff -Nru cairo-1.13.0~20140204/util/Makefile.in cairo-1.14.2/util/Makefile.in --- cairo-1.13.0~20140204/util/Makefile.in 2014-02-04 09:46:59.000000000 +0000 +++ cairo-1.14.2/util/Makefile.in 2015-03-11 01:43:13.000000000 +0000 @@ -551,6 +551,7 @@ GREP = @GREP@ GS = @GS@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ diff -Nru cairo-1.13.0~20140204/util/malloc-stats.c cairo-1.14.2/util/malloc-stats.c --- cairo-1.13.0~20140204/util/malloc-stats.c 2014-02-03 17:44:28.000000000 +0000 +++ cairo-1.14.2/util/malloc-stats.c 2015-03-10 22:21:07.000000000 +0000 @@ -60,8 +60,9 @@ static struct func_stat_t *func_stats[31627]; static int func_stats_num; -#define ARRAY_SIZE(A) (sizeof (A)/sizeof (A[0])) - +#ifndef ARRAY_LENGTH +#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) +#endif static void alloc_stats_add (struct alloc_stats_t *stats, int is_realloc, size_t size) { @@ -147,7 +148,7 @@ alloc_stats_add (&total_allocations, is_realloc, size); - i = ((uintptr_t) caller ^ 1215497) % ARRAY_SIZE (func_stats); + i = ((uintptr_t) caller ^ 1215497) % ARRAY_LENGTH (func_stats); for (elt = func_stats[i]; elt != NULL; elt = elt->next) { if (elt->addr == caller) break; @@ -328,7 +329,7 @@ return; j = 0; - for (i = 0; i < ARRAY_SIZE (func_stats); i++) { + for (i = 0; i < ARRAY_LENGTH (func_stats); i++) { struct func_stat_t *elt; for (elt = func_stats[i]; elt != NULL; elt = elt->next) sorted_func_stats[j++] = *elt;